@mohasinac/appkit 2.3.1 → 2.3.2

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 (253) hide show
  1. package/dist/client.d.ts +12 -8
  2. package/dist/client.js +7 -4
  3. package/dist/constants/api-endpoints.d.ts +4 -0
  4. package/dist/constants/api-endpoints.js +2 -0
  5. package/dist/core/contact-submissions.repository.d.ts +32 -0
  6. package/dist/core/contact-submissions.repository.js +49 -0
  7. package/dist/core/index.d.ts +2 -0
  8. package/dist/core/index.js +1 -0
  9. package/dist/features/about/components/HowPayoutsWorkView.js +1 -1
  10. package/dist/features/account/components/AddressFilters.d.ts +5 -0
  11. package/dist/features/account/components/AddressFilters.js +20 -0
  12. package/dist/features/account/components/AddressesIndexListing.d.ts +6 -0
  13. package/dist/features/account/components/AddressesIndexListing.js +51 -0
  14. package/dist/features/account/components/UserSidebar.d.ts +7 -3
  15. package/dist/features/account/components/UserSidebar.js +55 -7
  16. package/dist/features/account/hooks/useAddresses.d.ts +7 -0
  17. package/dist/features/account/hooks/useAddresses.js +12 -1
  18. package/dist/features/admin/actions/admin-read-actions.d.ts +12 -0
  19. package/dist/features/admin/actions/admin-read-actions.js +18 -0
  20. package/dist/features/admin/components/AdminBlogView.js +26 -2
  21. package/dist/features/admin/components/AdminCarouselView.js +18 -2
  22. package/dist/features/admin/components/AdminCategoriesView.js +27 -2
  23. package/dist/features/admin/components/AdminContactView.d.ts +4 -0
  24. package/dist/features/admin/components/AdminContactView.js +50 -0
  25. package/dist/features/admin/components/AdminFaqsView.js +19 -2
  26. package/dist/features/admin/components/AdminListingScaffold.d.ts +11 -2
  27. package/dist/features/admin/components/AdminListingScaffold.js +14 -3
  28. package/dist/features/admin/components/AdminNewsletterView.d.ts +4 -0
  29. package/dist/features/admin/components/AdminNewsletterView.js +50 -0
  30. package/dist/features/admin/components/AdminProductsView.js +30 -2
  31. package/dist/features/admin/components/AdminReviewsView.js +26 -2
  32. package/dist/features/admin/components/AdminStoresView.js +17 -2
  33. package/dist/features/admin/components/AdminUsersView.js +27 -2
  34. package/dist/features/admin/components/DataTable.d.ts +2 -1
  35. package/dist/features/admin/components/DataTable.js +18 -4
  36. package/dist/features/admin/components/index.d.ts +6 -0
  37. package/dist/features/admin/components/index.js +3 -0
  38. package/dist/features/admin/hooks/useAdminListingData.d.ts +3 -1
  39. package/dist/features/admin/hooks/useAdminListingData.js +12 -7
  40. package/dist/features/admin/server.d.ts +3 -0
  41. package/dist/features/admin/server.js +2 -0
  42. package/dist/features/auctions/components/AuctionDetailPageView.js +93 -47
  43. package/dist/features/auctions/components/AuctionFilters.d.ts +8 -0
  44. package/dist/features/auctions/components/AuctionFilters.js +12 -0
  45. package/dist/features/auctions/components/AuctionsListView.d.ts +6 -1
  46. package/dist/features/auctions/components/AuctionsListView.js +37 -5
  47. package/dist/features/auctions/schemas/index.d.ts +4 -4
  48. package/dist/features/blog/components/BlogFeaturedCard.d.ts +1 -7
  49. package/dist/features/blog/components/BlogFeaturedCard.js +4 -5
  50. package/dist/features/blog/components/BlogFilters.js +2 -1
  51. package/dist/features/blog/components/BlogIndexListing.js +14 -9
  52. package/dist/features/blog/components/BlogIndexPageView.d.ts +6 -1
  53. package/dist/features/blog/components/BlogIndexPageView.js +10 -2
  54. package/dist/features/blog/components/BlogListView.d.ts +2 -1
  55. package/dist/features/blog/components/BlogListView.js +10 -3
  56. package/dist/features/categories/components/CategoriesIndexListing.d.ts +1 -1
  57. package/dist/features/categories/components/CategoriesIndexListing.js +41 -38
  58. package/dist/features/categories/components/CategoriesIndexPageView.d.ts +6 -1
  59. package/dist/features/categories/components/CategoriesIndexPageView.js +41 -2
  60. package/dist/features/categories/components/CategoryDetailPageView.js +13 -6
  61. package/dist/features/categories/components/CategoryDetailTabs.d.ts +5 -0
  62. package/dist/features/categories/components/CategoryDetailTabs.js +17 -0
  63. package/dist/features/categories/components/CategoryFilters.js +2 -1
  64. package/dist/features/categories/components/CategoryGrid.d.ts +2 -1
  65. package/dist/features/categories/components/CategoryGrid.js +8 -6
  66. package/dist/features/categories/components/CategoryProductsListing.js +22 -11
  67. package/dist/features/categories/components/index.d.ts +2 -0
  68. package/dist/features/categories/components/index.js +1 -0
  69. package/dist/features/categories/hooks/useCategories.d.ts +20 -0
  70. package/dist/features/categories/hooks/useCategories.js +50 -1
  71. package/dist/features/categories/hooks/useCategoryTree.d.ts +17 -0
  72. package/dist/features/categories/hooks/useCategoryTree.js +65 -0
  73. package/dist/features/events/components/AdminEventEditorView.d.ts +6 -0
  74. package/dist/features/events/components/AdminEventEditorView.js +203 -0
  75. package/dist/features/events/components/AdminEventsView.js +28 -2
  76. package/dist/features/events/components/EventCard.js +4 -2
  77. package/dist/features/events/components/EventFilters.js +2 -1
  78. package/dist/features/events/components/EventsIndexListing.js +40 -10
  79. package/dist/features/events/components/EventsListPageView.d.ts +6 -1
  80. package/dist/features/events/components/EventsListPageView.js +40 -7
  81. package/dist/features/events/components/index.d.ts +2 -0
  82. package/dist/features/events/components/index.js +1 -0
  83. package/dist/features/events/hooks/useEvents.js +2 -0
  84. package/dist/features/events/types/index.d.ts +1 -0
  85. package/dist/features/homepage/components/BlogArticlesSection.js +1 -1
  86. package/dist/features/homepage/components/EventsSection.js +1 -1
  87. package/dist/features/homepage/components/FeaturedAuctionsSection.js +1 -1
  88. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +1 -1
  89. package/dist/features/homepage/components/FeaturedProductsSection.js +1 -1
  90. package/dist/features/homepage/components/FeaturedStoresSection.js +1 -1
  91. package/dist/features/homepage/components/HeroCarousel.js +1 -1
  92. package/dist/features/homepage/components/MarketplaceHomepageView.js +27 -17
  93. package/dist/features/homepage/components/SectionCarousel.js +4 -4
  94. package/dist/features/homepage/components/ShopByCategorySection.js +2 -2
  95. package/dist/features/homepage/schemas/firestore.d.ts +1 -1
  96. package/dist/features/homepage/schemas/firestore.js +2 -1
  97. package/dist/features/layout/AppLayoutShell.d.ts +6 -2
  98. package/dist/features/layout/AppLayoutShell.js +7 -3
  99. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +3 -1
  100. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +6 -2
  101. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +80 -12
  102. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +8 -0
  103. package/dist/features/pre-orders/components/PreOrderFilters.js +21 -0
  104. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +2 -1
  105. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +69 -10
  106. package/dist/features/pre-orders/components/PreOrdersListView.d.ts +6 -1
  107. package/dist/features/pre-orders/components/PreOrdersListView.js +26 -7
  108. package/dist/features/pre-orders/components/index.d.ts +2 -0
  109. package/dist/features/pre-orders/components/index.js +1 -0
  110. package/dist/features/products/components/AuctionsIndexListing.d.ts +2 -1
  111. package/dist/features/products/components/AuctionsIndexListing.js +61 -9
  112. package/dist/features/products/components/InteractiveProductCard.d.ts +2 -4
  113. package/dist/features/products/components/InteractiveProductCard.js +2 -2
  114. package/dist/features/products/components/ProductDetailPageView.d.ts +1 -1
  115. package/dist/features/products/components/ProductDetailPageView.js +116 -25
  116. package/dist/features/products/components/ProductFilters.d.ts +6 -11
  117. package/dist/features/products/components/ProductFilters.js +5 -3
  118. package/dist/features/products/components/ProductGrid.d.ts +8 -2
  119. package/dist/features/products/components/ProductGrid.js +20 -5
  120. package/dist/features/products/components/ProductTabsShell.d.ts +3 -11
  121. package/dist/features/products/components/ProductTabsShell.js +14 -14
  122. package/dist/features/products/components/ProductsIndexListing.js +73 -9
  123. package/dist/features/products/components/ProductsIndexPageView.d.ts +6 -1
  124. package/dist/features/products/components/ProductsIndexPageView.js +39 -6
  125. package/dist/features/products/components/RelatedProductsCarousel.d.ts +7 -0
  126. package/dist/features/products/components/RelatedProductsCarousel.js +11 -0
  127. package/dist/features/products/components/index.d.ts +1 -0
  128. package/dist/features/products/components/index.js +1 -0
  129. package/dist/features/products/hooks/useProducts.js +16 -0
  130. package/dist/features/products/repository/products.repository.d.ts +8 -0
  131. package/dist/features/products/repository/products.repository.js +2 -0
  132. package/dist/features/products/schemas/index.d.ts +8 -8
  133. package/dist/features/products/types/index.d.ts +12 -0
  134. package/dist/features/promotions/components/CouponsIndexListing.d.ts +9 -0
  135. package/dist/features/promotions/components/CouponsIndexListing.js +86 -0
  136. package/dist/features/promotions/components/PromotionsView.d.ts +11 -5
  137. package/dist/features/promotions/components/PromotionsView.js +6 -1
  138. package/dist/features/promotions/components/index.d.ts +4 -2
  139. package/dist/features/promotions/components/index.js +2 -1
  140. package/dist/features/reviews/components/ReviewDetailPageView.d.ts +4 -0
  141. package/dist/features/reviews/components/ReviewDetailPageView.js +20 -0
  142. package/dist/features/reviews/components/ReviewDetailShell.d.ts +7 -0
  143. package/dist/features/reviews/components/ReviewDetailShell.js +80 -0
  144. package/dist/features/reviews/components/ReviewFilters.d.ts +3 -3
  145. package/dist/features/reviews/components/ReviewFilters.js +5 -4
  146. package/dist/features/reviews/components/ReviewsIndexListing.d.ts +4 -3
  147. package/dist/features/reviews/components/ReviewsIndexListing.js +35 -51
  148. package/dist/features/reviews/components/ReviewsIndexPageView.d.ts +6 -1
  149. package/dist/features/reviews/components/ReviewsIndexPageView.js +49 -3
  150. package/dist/features/reviews/components/ReviewsList.js +9 -1
  151. package/dist/features/reviews/components/index.d.ts +1 -0
  152. package/dist/features/reviews/hooks/useReviews.js +15 -1
  153. package/dist/features/reviews/types/index.d.ts +6 -1
  154. package/dist/features/seller/components/SellerSidebar.d.ts +8 -4
  155. package/dist/features/seller/components/SellerSidebar.js +6 -4
  156. package/dist/features/seller/components/index.d.ts +30 -0
  157. package/dist/features/seller/components/index.js +17 -0
  158. package/dist/features/seller/hooks/useSellerStore.d.ts +2 -0
  159. package/dist/features/seller/hooks/useSellerStore.js +2 -0
  160. package/dist/features/seller/permission-map.d.ts +4 -2
  161. package/dist/features/seller/permission-map.js +16 -14
  162. package/dist/features/seller/schemas/index.d.ts +2 -2
  163. package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +1 -1
  164. package/dist/features/stores/api/[storeSlug]/reviews/route.js +24 -19
  165. package/dist/features/stores/components/InteractiveStoreCard.d.ts +0 -5
  166. package/dist/features/stores/components/InteractiveStoreCard.js +9 -9
  167. package/dist/features/stores/components/StoreAuctionsListing.js +27 -9
  168. package/dist/features/stores/components/StoreDetailLayoutView.js +2 -0
  169. package/dist/features/stores/components/StoreFilters.d.ts +5 -0
  170. package/dist/features/stores/components/StoreFilters.js +20 -0
  171. package/dist/features/stores/components/StoreHeader.js +2 -2
  172. package/dist/features/stores/components/StorePreOrdersListing.d.ts +5 -0
  173. package/dist/features/stores/components/StorePreOrdersListing.js +40 -0
  174. package/dist/features/stores/components/StorePreOrdersPageView.d.ts +4 -0
  175. package/dist/features/stores/components/StorePreOrdersPageView.js +21 -0
  176. package/dist/features/stores/components/StoreProductsListing.js +21 -11
  177. package/dist/features/stores/components/StoreReviewsListing.js +2 -7
  178. package/dist/features/stores/components/StoresIndexListing.js +42 -8
  179. package/dist/features/stores/components/StoresIndexPageView.d.ts +6 -1
  180. package/dist/features/stores/components/StoresIndexPageView.js +9 -2
  181. package/dist/features/stores/components/index.d.ts +3 -0
  182. package/dist/features/stores/components/index.js +1 -0
  183. package/dist/features/stores/hooks/useStores.d.ts +7 -1
  184. package/dist/features/stores/hooks/useStores.js +16 -3
  185. package/dist/features/stores/schemas/index.d.ts +2 -2
  186. package/dist/features/stores/types/index.d.ts +3 -0
  187. package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +20 -0
  188. package/dist/features/wishlist/hooks/useGuestWishlist.js +49 -0
  189. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -0
  190. package/dist/features/wishlist/hooks/useWishlistCount.js +31 -0
  191. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +56 -0
  192. package/dist/features/wishlist/hooks/useWishlistWithGuest.js +57 -0
  193. package/dist/features/wishlist/index.d.ts +3 -0
  194. package/dist/features/wishlist/index.js +3 -0
  195. package/dist/features/wishlist/utils/guest-wishlist.d.ts +22 -0
  196. package/dist/features/wishlist/utils/guest-wishlist.js +70 -0
  197. package/dist/index.d.ts +50 -1
  198. package/dist/index.js +63 -1
  199. package/dist/next/routing/route-map.d.ts +70 -36
  200. package/dist/next/routing/route-map.js +30 -22
  201. package/dist/seed/addresses-seed-data.js +62 -261
  202. package/dist/seed/beyblade-seed-data.d.ts +7 -0
  203. package/dist/seed/beyblade-seed-data.js +947 -0
  204. package/dist/seed/bids-seed-data.d.ts +10 -2
  205. package/dist/seed/bids-seed-data.js +220 -1071
  206. package/dist/seed/blog-posts-seed-data.d.ts +2 -2
  207. package/dist/seed/blog-posts-seed-data.js +455 -117
  208. package/dist/seed/cart-seed-data.d.ts +9 -9
  209. package/dist/seed/cart-seed-data.js +73 -74
  210. package/dist/seed/coupons-seed-data.d.ts +3 -4
  211. package/dist/seed/coupons-seed-data.js +3 -509
  212. package/dist/seed/events-seed-data.d.ts +2 -2
  213. package/dist/seed/events-seed-data.js +315 -476
  214. package/dist/seed/faq-seed-data.d.ts +18 -41
  215. package/dist/seed/faq-seed-data.js +1059 -1172
  216. package/dist/seed/hot-wheels-seed-data.d.ts +7 -0
  217. package/dist/seed/hot-wheels-seed-data.js +1365 -0
  218. package/dist/seed/index.d.ts +6 -1
  219. package/dist/seed/index.js +6 -1
  220. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +4 -2
  221. package/dist/seed/pokemon-carousel-slides-seed-data.js +152 -268
  222. package/dist/seed/pokemon-categories-seed-data.d.ts +18 -21
  223. package/dist/seed/pokemon-categories-seed-data.js +424 -1004
  224. package/dist/seed/pokemon-coupons-seed-data.d.ts +6 -0
  225. package/dist/seed/pokemon-coupons-seed-data.js +465 -0
  226. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +3 -2
  227. package/dist/seed/pokemon-homepage-sections-seed-data.js +67 -289
  228. package/dist/seed/pokemon-products-seed-data.js +662 -0
  229. package/dist/seed/pokemon-seed-bundle.d.ts +32 -11
  230. package/dist/seed/pokemon-seed-bundle.js +41 -11
  231. package/dist/seed/pokemon-stores-seed-data.d.ts +2 -3
  232. package/dist/seed/pokemon-stores-seed-data.js +56 -31
  233. package/dist/seed/pokemon-users-seed-data.d.ts +2 -2
  234. package/dist/seed/pokemon-users-seed-data.js +245 -261
  235. package/dist/seed/reviews-seed-data.d.ts +17 -2
  236. package/dist/seed/reviews-seed-data.js +519 -483
  237. package/dist/seed/site-settings-seed-data.js +14 -14
  238. package/dist/seed/store-addresses-seed-data.js +68 -50
  239. package/dist/seed/transformers-seed-data.d.ts +7 -0
  240. package/dist/seed/transformers-seed-data.js +510 -0
  241. package/dist/seed/wishlists-seed-data.d.ts +5 -1
  242. package/dist/seed/wishlists-seed-data.js +82 -4
  243. package/dist/server.d.ts +1 -0
  244. package/dist/server.js +2 -0
  245. package/dist/tokens/index.d.ts +6 -0
  246. package/dist/tokens/index.js +2 -0
  247. package/dist/ui/components/BaseListingCard.js +24 -26
  248. package/dist/ui/components/BaseListingCard.style.css +5 -5
  249. package/dist/ui/components/HorizontalScroller.d.ts +1 -1
  250. package/dist/ui/components/HorizontalScroller.js +19 -5
  251. package/dist/ui/components/SideDrawer.style.css +3 -11
  252. package/dist/ui/rich-text/RichText.js +19 -1
  253. package/package.json +1 -1
@@ -1116,4 +1116,666 @@ export const pokemonProductsSeedData = [
1116
1116
  createdAt: daysAgo(2),
1117
1117
  updatedAt: daysAgo(0),
1118
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: "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: "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: "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: "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: "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: "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: "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: "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: "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: "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: "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: "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: "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
+ },
1119
1781
  ].map((item) => withRichTextDescription(item));