@mohasinac/appkit 2.6.3 → 2.6.4

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 (606) 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/orders/refund-copy.d.ts +36 -0
  190. package/dist/_internal/shared/features/orders/refund-copy.js +40 -0
  191. package/dist/_internal/shared/features/orders/schema.d.ts +4 -4
  192. package/dist/_internal/shared/features/products/schema.d.ts +8 -8
  193. package/dist/_internal/shared/listing-types/_registry.d.ts +27 -0
  194. package/dist/_internal/shared/listing-types/_registry.js +8 -0
  195. package/dist/_internal/shared/listing-types/action-tracker.d.ts +41 -0
  196. package/dist/_internal/shared/listing-types/action-tracker.js +70 -0
  197. package/dist/_internal/shared/listing-types/capabilities.js +25 -0
  198. package/dist/_internal/shared/listing-types/cart-shipping.d.ts +37 -0
  199. package/dist/_internal/shared/listing-types/cart-shipping.js +46 -0
  200. package/dist/_internal/shared/listing-types/classified/config.d.ts +7 -0
  201. package/dist/_internal/shared/listing-types/classified/config.js +8 -0
  202. package/dist/_internal/shared/listing-types/classified/ctas.d.ts +1 -0
  203. package/dist/_internal/shared/listing-types/classified/ctas.js +3 -0
  204. package/dist/_internal/shared/listing-types/classified/og.d.ts +1 -0
  205. package/dist/_internal/shared/listing-types/classified/og.js +1 -0
  206. package/dist/_internal/shared/listing-types/classified/schema.d.ts +1 -0
  207. package/dist/_internal/shared/listing-types/classified/schema.js +1 -0
  208. package/dist/_internal/shared/listing-types/classified/seed-factory.d.ts +1 -0
  209. package/dist/_internal/shared/listing-types/classified/seed-factory.js +1 -0
  210. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +7 -0
  211. package/dist/_internal/shared/listing-types/digital-code/config.js +8 -0
  212. package/dist/_internal/shared/listing-types/digital-code/ctas.d.ts +1 -0
  213. package/dist/_internal/shared/listing-types/digital-code/ctas.js +3 -0
  214. package/dist/_internal/shared/listing-types/digital-code/og.d.ts +1 -0
  215. package/dist/_internal/shared/listing-types/digital-code/og.js +1 -0
  216. package/dist/_internal/shared/listing-types/digital-code/schema.d.ts +1 -0
  217. package/dist/_internal/shared/listing-types/digital-code/schema.js +1 -0
  218. package/dist/_internal/shared/listing-types/digital-code/seed-factory.d.ts +1 -0
  219. package/dist/_internal/shared/listing-types/digital-code/seed-factory.js +1 -0
  220. package/dist/_internal/shared/listing-types/feature-flags.d.ts +34 -0
  221. package/dist/_internal/shared/listing-types/feature-flags.js +45 -0
  222. package/dist/_internal/shared/listing-types/live/config.d.ts +7 -0
  223. package/dist/_internal/shared/listing-types/live/config.js +8 -0
  224. package/dist/_internal/shared/listing-types/live/ctas.d.ts +1 -0
  225. package/dist/_internal/shared/listing-types/live/ctas.js +3 -0
  226. package/dist/_internal/shared/listing-types/live/og.d.ts +1 -0
  227. package/dist/_internal/shared/listing-types/live/og.js +1 -0
  228. package/dist/_internal/shared/listing-types/live/schema.d.ts +1 -0
  229. package/dist/_internal/shared/listing-types/live/schema.js +1 -0
  230. package/dist/_internal/shared/listing-types/live/seed-factory.d.ts +1 -0
  231. package/dist/_internal/shared/listing-types/live/seed-factory.js +1 -0
  232. package/dist/_internal/shared/media/limits.js +8 -0
  233. package/dist/client.d.ts +6 -1
  234. package/dist/client.js +14 -1
  235. package/dist/configs/next.js +7 -0
  236. package/dist/constants/api-endpoints.d.ts +6 -0
  237. package/dist/constants/api-endpoints.js +4 -0
  238. package/dist/core/hooks/useSyncManager.js +13 -1
  239. package/dist/core/unit-of-work.d.ts +1 -1
  240. package/dist/core/unit-of-work.js +2 -2
  241. package/dist/features/account/actions/address-actions.d.ts +1 -1
  242. package/dist/features/account/actions/address-actions.js +15 -7
  243. package/dist/features/account/schemas/firestore.d.ts +8 -43
  244. package/dist/features/account/schemas/firestore.js +8 -54
  245. package/dist/features/account/schemas/index.d.ts +6 -6
  246. package/dist/features/account/server.d.ts +1 -1
  247. package/dist/features/account/server.js +3 -1
  248. package/dist/features/addresses/index.d.ts +2 -0
  249. package/dist/features/addresses/index.js +2 -0
  250. package/dist/features/addresses/repository/addresses.repository.d.ts +29 -0
  251. package/dist/features/addresses/repository/addresses.repository.js +157 -0
  252. package/dist/features/addresses/schemas/firestore.d.ts +53 -0
  253. package/dist/features/addresses/schemas/firestore.js +68 -0
  254. package/dist/features/{bundles → addresses}/schemas/index.d.ts +0 -1
  255. package/dist/features/{bundles → addresses}/schemas/index.js +0 -1
  256. package/dist/features/addresses/server.d.ts +2 -0
  257. package/dist/features/addresses/server.js +2 -0
  258. package/dist/features/admin/components/AdminAllEventEntriesView.js +4 -3
  259. package/dist/features/admin/components/AdminBidsView.js +4 -3
  260. package/dist/features/admin/components/AdminBlogView.js +8 -3
  261. package/dist/features/admin/components/AdminBundleEditorView.d.ts +9 -0
  262. package/dist/features/admin/components/AdminBundleEditorView.js +209 -0
  263. package/dist/features/admin/components/AdminBundlesView.d.ts +9 -0
  264. package/dist/features/admin/components/AdminBundlesView.js +59 -0
  265. package/dist/features/admin/components/AdminCartsView.js +13 -3
  266. package/dist/features/admin/components/AdminContactView.js +4 -3
  267. package/dist/features/admin/components/AdminCouponsView.js +32 -13
  268. package/dist/features/admin/components/AdminNewsletterView.js +4 -3
  269. package/dist/features/admin/components/AdminOrdersView.js +15 -7
  270. package/dist/features/admin/components/AdminPayoutsView.js +4 -3
  271. package/dist/features/admin/components/AdminProductsView.js +6 -5
  272. package/dist/features/admin/components/AdminReviewsView.js +5 -4
  273. package/dist/features/admin/components/AdminStoresView.js +4 -3
  274. package/dist/features/admin/components/AdminUsersView.js +15 -5
  275. package/dist/features/admin/components/AdminWishlistsView.js +10 -1
  276. package/dist/features/admin/components/DataTable.d.ts +5 -1
  277. package/dist/features/admin/components/DataTable.js +24 -20
  278. package/dist/features/admin/components/index.d.ts +4 -0
  279. package/dist/features/admin/components/index.js +3 -0
  280. package/dist/features/admin/constants/filter-tabs.d.ts +401 -0
  281. package/dist/features/admin/constants/filter-tabs.js +200 -0
  282. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -0
  283. package/dist/features/admin/hooks/useAdminListingData.js +1 -0
  284. package/dist/features/admin/schemas/firestore.d.ts +15 -0
  285. package/dist/features/admin/schemas/firestore.js +18 -0
  286. package/dist/features/admin/types/product.types.d.ts +2 -2
  287. package/dist/features/auctions/components/AuctionCard.d.ts +4 -1
  288. package/dist/features/auctions/components/AuctionCard.js +5 -3
  289. package/dist/features/auctions/components/AuctionDetailPageView.js +1 -1
  290. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +2 -2
  291. package/dist/features/auctions/components/PlaceBidFormClient.js +12 -2
  292. package/dist/features/auctions/schemas/index.d.ts +2 -2
  293. package/dist/features/auth/index.d.ts +1 -0
  294. package/dist/features/auth/index.js +1 -0
  295. package/dist/features/auth/role-predicates.d.ts +16 -0
  296. package/dist/features/auth/role-predicates.js +15 -0
  297. package/dist/features/blog/components/BlogFeaturedCard.d.ts +4 -1
  298. package/dist/features/blog/components/BlogFeaturedCard.js +5 -3
  299. package/dist/features/cart/actions/cart-actions.d.ts +1 -0
  300. package/dist/features/cart/actions/cart-actions.js +16 -0
  301. package/dist/features/cart/components/CartView.d.ts +19 -1
  302. package/dist/features/cart/components/CartView.js +2 -2
  303. package/dist/features/cart/components/ShippingPicker.d.ts +13 -0
  304. package/dist/features/cart/components/ShippingPicker.js +48 -0
  305. package/dist/features/cart/components/index.d.ts +3 -1
  306. package/dist/features/cart/components/index.js +1 -0
  307. package/dist/features/cart/hooks/useCartCount.js +7 -1
  308. package/dist/features/cart/repository/cart.repository.d.ts +1 -0
  309. package/dist/features/cart/repository/cart.repository.js +35 -0
  310. package/dist/features/cart/schemas/firestore.d.ts +27 -2
  311. package/dist/features/categories/components/BundleAddToCartCta.d.ts +16 -0
  312. package/dist/features/categories/components/BundleAddToCartCta.js +54 -0
  313. package/dist/features/categories/components/BundleBuyNowCta.d.ts +8 -0
  314. package/dist/features/categories/components/BundleBuyNowCta.js +37 -0
  315. package/dist/features/categories/components/BundleDetailView.d.ts +22 -0
  316. package/dist/features/categories/components/BundleDetailView.js +31 -0
  317. package/dist/features/categories/components/BundleDynamicRuleEditor.d.ts +18 -0
  318. package/dist/features/categories/components/BundleDynamicRuleEditor.js +60 -0
  319. package/dist/features/categories/components/BundleItemsPicker.d.ts +26 -0
  320. package/dist/features/categories/components/BundleItemsPicker.js +135 -0
  321. package/dist/features/categories/components/BundlesListView.d.ts +13 -0
  322. package/dist/features/categories/components/BundlesListView.js +27 -0
  323. package/dist/features/categories/components/index.d.ts +12 -0
  324. package/dist/features/categories/components/index.js +9 -0
  325. package/dist/features/checkout/actions/checkout-actions.js +10 -3
  326. package/dist/features/events/components/AdminEventEditorView.js +108 -2
  327. package/dist/features/events/components/AdminEventsView.js +16 -4
  328. package/dist/features/events/components/EventCard.d.ts +4 -1
  329. package/dist/features/events/components/EventCard.js +7 -3
  330. package/dist/features/events/components/EventRaffleWinnerView.d.ts +21 -0
  331. package/dist/features/events/components/EventRaffleWinnerView.js +18 -0
  332. package/dist/features/events/components/SpinWheelView.d.ts +27 -0
  333. package/dist/features/events/components/SpinWheelView.js +64 -0
  334. package/dist/features/events/components/index.d.ts +4 -0
  335. package/dist/features/events/components/index.js +2 -0
  336. package/dist/features/events/schemas/firestore.d.ts +27 -1
  337. package/dist/features/events/schemas/firestore.js +7 -0
  338. package/dist/features/events/types/index.d.ts +27 -1
  339. package/dist/features/homepage/components/FeaturedBundlesSection.d.ts +16 -0
  340. package/dist/features/homepage/components/FeaturedBundlesSection.js +24 -0
  341. package/dist/features/homepage/components/MarketplaceHomepageView.js +4 -1
  342. package/dist/features/homepage/components/WhatsAppCommunitySection.js +2 -2
  343. package/dist/features/homepage/lib/section-renderer.d.ts +2 -0
  344. package/dist/features/homepage/lib/section-renderer.js +5 -5
  345. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  346. package/dist/features/layout/NavbarLayout.js +32 -3
  347. package/dist/features/layout/TitleBarLayout.d.ts +6 -3
  348. package/dist/features/layout/TitleBarLayout.js +22 -7
  349. package/dist/features/media/upload/MediaUploadField.d.ts +15 -1
  350. package/dist/features/media/upload/MediaUploadField.js +22 -1
  351. package/dist/features/orders/components/MarketplaceOrderCard.js +4 -2
  352. package/dist/features/orders/components/OrderSiblingPayments.d.ts +8 -0
  353. package/dist/features/orders/components/OrderSiblingPayments.js +16 -0
  354. package/dist/features/orders/components/RefundHistoryTable.d.ts +6 -0
  355. package/dist/features/orders/components/RefundHistoryTable.js +23 -0
  356. package/dist/features/orders/components/RefundRequestView.d.ts +8 -0
  357. package/dist/features/orders/components/RefundRequestView.js +42 -0
  358. package/dist/features/orders/components/index.d.ts +6 -0
  359. package/dist/features/orders/components/index.js +3 -0
  360. package/dist/features/orders/index.d.ts +1 -0
  361. package/dist/features/orders/index.js +2 -0
  362. package/dist/features/orders/repository/orders.repository.d.ts +20 -1
  363. package/dist/features/orders/repository/orders.repository.js +30 -1
  364. package/dist/features/orders/schemas/firestore.d.ts +63 -13
  365. package/dist/features/orders/schemas/firestore.js +5 -5
  366. package/dist/features/orders/schemas/index.d.ts +4 -4
  367. package/dist/features/orders/types/index.d.ts +12 -2
  368. package/dist/features/orders/utils/bundle-grouping.d.ts +48 -0
  369. package/dist/features/orders/utils/bundle-grouping.js +54 -0
  370. package/dist/features/orders/utils/order-splitter.d.ts +9 -10
  371. package/dist/features/orders/utils/order-splitter.js +24 -30
  372. package/dist/features/payments/repository/payout.repository.d.ts +17 -1
  373. package/dist/features/payments/repository/payout.repository.js +47 -0
  374. package/dist/features/payments/schemas/firestore.d.ts +26 -0
  375. package/dist/features/pre-orders/components/PreorderCard.d.ts +4 -1
  376. package/dist/features/pre-orders/components/PreorderCard.js +8 -6
  377. package/dist/features/products/actions/product-actions.d.ts +1 -1
  378. package/dist/features/products/actions/product-actions.js +1 -1
  379. package/dist/features/products/components/CompareOverlay.d.ts +2 -2
  380. package/dist/features/products/components/CompareOverlay.js +4 -4
  381. package/dist/features/products/components/InteractiveProductCard.js +7 -12
  382. package/dist/features/products/components/NonRefundableConsentModal.d.ts +1 -1
  383. package/dist/features/products/components/NonRefundableConsentModal.js +0 -10
  384. package/dist/features/products/components/ProductGrid.js +28 -12
  385. package/dist/features/products/components/ShowGroupSection.js +3 -3
  386. package/dist/features/products/components/SublistingCarouselSection.js +2 -2
  387. package/dist/features/products/components/index.d.ts +0 -4
  388. package/dist/features/products/components/index.js +5 -2
  389. package/dist/features/products/index.d.ts +1 -1
  390. package/dist/features/products/index.js +3 -1
  391. package/dist/features/products/repository/products.repository.js +4 -0
  392. package/dist/features/products/schemas/catalog-product.d.ts +70 -0
  393. package/dist/features/products/schemas/catalog-product.js +50 -0
  394. package/dist/features/products/schemas/firestore.d.ts +110 -2
  395. package/dist/features/products/schemas/firestore.js +30 -0
  396. package/dist/features/products/schemas/index.d.ts +8 -8
  397. package/dist/features/products/types/index.d.ts +1 -1
  398. package/dist/features/products/utils/listing-type.d.ts +9 -0
  399. package/dist/features/products/utils/listing-type.js +4 -0
  400. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  401. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  402. package/dist/features/promotions/components/CouponCard.d.ts +28 -10
  403. package/dist/features/promotions/components/CouponCard.js +116 -14
  404. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  405. package/dist/features/promotions/repository/coupons.repository.d.ts +1 -1
  406. package/dist/features/reviews/schemas/index.d.ts +2 -2
  407. package/dist/features/search/schemas/index.d.ts +2 -2
  408. package/dist/features/search/types/index.d.ts +2 -2
  409. package/dist/features/seller/components/SellerAuctionsView.js +4 -5
  410. package/dist/features/seller/components/SellerBidsView.js +5 -13
  411. package/dist/features/seller/components/SellerCouponsView.js +31 -67
  412. package/dist/features/seller/components/SellerOffersView.js +4 -5
  413. package/dist/features/seller/components/SellerOrdersView.js +4 -5
  414. package/dist/features/seller/components/SellerPayoutsView.js +4 -5
  415. package/dist/features/seller/components/SellerProductsView.js +4 -8
  416. package/dist/features/seller/schemas/index.d.ts +2 -2
  417. package/dist/features/stores/actions/store-address-actions.d.ts +10 -6
  418. package/dist/features/stores/actions/store-address-actions.js +8 -7
  419. package/dist/features/stores/components/InteractiveStoreCard.js +3 -10
  420. package/dist/features/stores/components/StoreDetailLayoutView.js +20 -5
  421. package/dist/features/stores/schemas/firestore.d.ts +45 -38
  422. package/dist/features/stores/schemas/firestore.js +2 -49
  423. package/dist/features/stores/server.d.ts +0 -1
  424. package/dist/features/stores/server.js +2 -1
  425. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -9
  426. package/dist/features/wishlist/hooks/useWishlistCount.js +67 -86
  427. package/dist/features/wishlist/types/index.d.ts +1 -1
  428. package/dist/index.d.ts +50 -9
  429. package/dist/index.js +57 -11
  430. package/dist/next/routing/route-map.d.ts +6 -0
  431. package/dist/next/routing/route-map.js +4 -0
  432. package/dist/providers/db-firebase/admin.d.ts +6 -2
  433. package/dist/providers/db-firebase/admin.js +23 -0
  434. package/dist/repositories/index.d.ts +1 -2
  435. package/dist/repositories/index.js +5 -2
  436. package/dist/security/authorization.d.ts +2 -1
  437. package/dist/security/authorization.js +3 -2
  438. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  439. package/dist/seed/bids-seed-data.d.ts +2 -2
  440. package/dist/seed/bids-seed-data.js +77 -2
  441. package/dist/seed/cart-seed-data.d.ts +10 -10
  442. package/dist/seed/cart-seed-data.js +15 -15
  443. package/dist/seed/events-seed-data.js +77 -0
  444. package/dist/seed/manifest.js +16 -8
  445. package/dist/seed/orders-seed-data.js +41 -2
  446. package/dist/seed/payouts-seed-data.js +18 -2
  447. package/dist/seed/stores-seed-data.js +55 -0
  448. package/dist/server-entry.d.ts +1 -0
  449. package/dist/server-entry.js +2 -0
  450. package/dist/server.d.ts +4 -0
  451. package/dist/server.js +8 -0
  452. package/dist/tailwind-utilities.css +1 -1
  453. package/dist/ui/components/FilterChipGroup.d.ts +39 -0
  454. package/dist/ui/components/FilterChipGroup.js +15 -0
  455. package/dist/ui/components/HorizontalScroller.js +32 -7
  456. package/dist/ui/components/HorizontalScroller.style.css +6 -0
  457. package/dist/ui/components/SiteLogo.js +1 -1
  458. package/dist/ui/index.d.ts +2 -0
  459. package/dist/ui/index.js +2 -0
  460. package/dist/utils/id-generators.d.ts +11 -0
  461. package/dist/utils/id-generators.js +16 -0
  462. package/package.json +1 -1
  463. package/dist/_internal/shared/features/bundles/config.d.ts +0 -6
  464. package/dist/_internal/shared/features/bundles/config.js +0 -6
  465. package/dist/_internal/shared/schema-versions.d.ts +0 -76
  466. package/dist/_internal/shared/schema-versions.js +0 -82
  467. package/dist/features/account/migrations.d.ts +0 -2
  468. package/dist/features/account/migrations.js +0 -10
  469. package/dist/features/admin/migrations.d.ts +0 -2
  470. package/dist/features/admin/migrations.js +0 -10
  471. package/dist/features/auctions/migrations.d.ts +0 -2
  472. package/dist/features/auctions/migrations.js +0 -10
  473. package/dist/features/auth/migrations.d.ts +0 -2
  474. package/dist/features/auth/migrations.js +0 -10
  475. package/dist/features/blog/migrations.d.ts +0 -2
  476. package/dist/features/blog/migrations.js +0 -10
  477. package/dist/features/brands/actions/brand-actions.d.ts +0 -2
  478. package/dist/features/brands/actions/brand-actions.js +0 -5
  479. package/dist/features/brands/index.d.ts +0 -3
  480. package/dist/features/brands/index.js +0 -3
  481. package/dist/features/brands/migrations.d.ts +0 -2
  482. package/dist/features/brands/migrations.js +0 -10
  483. package/dist/features/brands/repository/brands.repository.d.ts +0 -13
  484. package/dist/features/brands/repository/brands.repository.js +0 -60
  485. package/dist/features/brands/schemas/index.d.ts +0 -33
  486. package/dist/features/brands/schemas/index.js +0 -15
  487. package/dist/features/brands/server.d.ts +0 -7
  488. package/dist/features/brands/server.js +0 -7
  489. package/dist/features/bundles/components/AdminBundleEditorView.d.ts +0 -8
  490. package/dist/features/bundles/components/AdminBundleEditorView.js +0 -7
  491. package/dist/features/bundles/components/BundleDetailPageView.d.ts +0 -9
  492. package/dist/features/bundles/components/BundleDetailPageView.js +0 -45
  493. package/dist/features/bundles/components/BundleForm.d.ts +0 -12
  494. package/dist/features/bundles/components/BundleForm.js +0 -126
  495. package/dist/features/bundles/components/BundleItemsPicker.d.ts +0 -9
  496. package/dist/features/bundles/components/BundleItemsPicker.js +0 -77
  497. package/dist/features/bundles/components/BundlesByCategoryListing.d.ts +0 -6
  498. package/dist/features/bundles/components/BundlesByCategoryListing.js +0 -50
  499. package/dist/features/bundles/components/BundlesListingView.d.ts +0 -17
  500. package/dist/features/bundles/components/BundlesListingView.js +0 -50
  501. package/dist/features/bundles/components/FeaturedBundlesSection.d.ts +0 -5
  502. package/dist/features/bundles/components/FeaturedBundlesSection.js +0 -55
  503. package/dist/features/bundles/components/SellerBundleCreateView.d.ts +0 -8
  504. package/dist/features/bundles/components/SellerBundleCreateView.js +0 -7
  505. package/dist/features/bundles/components/SellerBundleEditView.d.ts +0 -9
  506. package/dist/features/bundles/components/SellerBundleEditView.js +0 -7
  507. package/dist/features/bundles/components/index.d.ts +0 -18
  508. package/dist/features/bundles/components/index.js +0 -9
  509. package/dist/features/bundles/constants/index.d.ts +0 -32
  510. package/dist/features/bundles/constants/index.js +0 -35
  511. package/dist/features/bundles/index.d.ts +0 -2
  512. package/dist/features/bundles/index.js +0 -2
  513. package/dist/features/bundles/migrations.d.ts +0 -2
  514. package/dist/features/bundles/migrations.js +0 -10
  515. package/dist/features/bundles/repository/bundles.repository.d.ts +0 -36
  516. package/dist/features/bundles/repository/bundles.repository.js +0 -148
  517. package/dist/features/bundles/repository/index.d.ts +0 -1
  518. package/dist/features/bundles/repository/index.js +0 -1
  519. package/dist/features/bundles/schemas/firestore.d.ts +0 -88
  520. package/dist/features/bundles/schemas/firestore.js +0 -29
  521. package/dist/features/bundles/schemas/zod.d.ts +0 -377
  522. package/dist/features/bundles/schemas/zod.js +0 -71
  523. package/dist/features/cart/migrations.d.ts +0 -2
  524. package/dist/features/cart/migrations.js +0 -10
  525. package/dist/features/categories/migrations.d.ts +0 -2
  526. package/dist/features/categories/migrations.js +0 -10
  527. package/dist/features/events/migrations.d.ts +0 -2
  528. package/dist/features/events/migrations.js +0 -10
  529. package/dist/features/faq/migrations.d.ts +0 -2
  530. package/dist/features/faq/migrations.js +0 -10
  531. package/dist/features/grouped/migrations.d.ts +0 -2
  532. package/dist/features/grouped/migrations.js +0 -10
  533. package/dist/features/history/migrations.d.ts +0 -2
  534. package/dist/features/history/migrations.js +0 -10
  535. package/dist/features/messages/migrations.d.ts +0 -2
  536. package/dist/features/messages/migrations.js +0 -10
  537. package/dist/features/orders/migrations.d.ts +0 -2
  538. package/dist/features/orders/migrations.js +0 -10
  539. package/dist/features/payments/migrations.d.ts +0 -2
  540. package/dist/features/payments/migrations.js +0 -10
  541. package/dist/features/products/migrations.d.ts +0 -2
  542. package/dist/features/products/migrations.js +0 -10
  543. package/dist/features/products/repository/sublisting-categories.repository.d.ts +0 -16
  544. package/dist/features/products/repository/sublisting-categories.repository.js +0 -126
  545. package/dist/features/products/schemas/sublisting-categories.d.ts +0 -45
  546. package/dist/features/products/schemas/sublisting-categories.js +0 -16
  547. package/dist/features/promotions/migrations.d.ts +0 -2
  548. package/dist/features/promotions/migrations.js +0 -10
  549. package/dist/features/reviews/migrations.d.ts +0 -2
  550. package/dist/features/reviews/migrations.js +0 -10
  551. package/dist/features/scams/migrations.d.ts +0 -2
  552. package/dist/features/scams/migrations.js +0 -10
  553. package/dist/features/seller/migrations.d.ts +0 -2
  554. package/dist/features/seller/migrations.js +0 -10
  555. package/dist/features/stores/migrations.d.ts +0 -2
  556. package/dist/features/stores/migrations.js +0 -10
  557. package/dist/features/sublisting/migrations.d.ts +0 -2
  558. package/dist/features/sublisting/migrations.js +0 -10
  559. package/dist/features/sublisting/schemas/firestore.d.ts +0 -32
  560. package/dist/features/sublisting/schemas/firestore.js +0 -19
  561. package/dist/features/support/migrations.d.ts +0 -2
  562. package/dist/features/support/migrations.js +0 -10
  563. package/dist/features/wishlist/migrations.d.ts +0 -2
  564. package/dist/features/wishlist/migrations.js +0 -10
  565. package/dist/seed/_bundle-constants.d.ts +0 -14
  566. package/dist/seed/_bundle-constants.js +0 -14
  567. package/dist/seed/anime-figures-seed-data.d.ts +0 -8
  568. package/dist/seed/anime-figures-seed-data.js +0 -1033
  569. package/dist/seed/beyblade-seed-data.d.ts +0 -7
  570. package/dist/seed/beyblade-seed-data.js +0 -1129
  571. package/dist/seed/brands-seed-data.d.ts +0 -7
  572. package/dist/seed/brands-seed-data.js +0 -410
  573. package/dist/seed/bundles-seed-data.d.ts +0 -13
  574. package/dist/seed/bundles-seed-data.js +0 -229
  575. package/dist/seed/cosplay-accessories-seed-data.d.ts +0 -8
  576. package/dist/seed/cosplay-accessories-seed-data.js +0 -647
  577. package/dist/seed/hot-wheels-seed-data.d.ts +0 -7
  578. package/dist/seed/hot-wheels-seed-data.js +0 -1612
  579. package/dist/seed/letitrip-official-seed-data.d.ts +0 -8
  580. package/dist/seed/letitrip-official-seed-data.js +0 -399
  581. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +0 -8
  582. package/dist/seed/pokemon-carousel-slides-seed-data.js +0 -322
  583. package/dist/seed/pokemon-categories-seed-data.d.ts +0 -24
  584. package/dist/seed/pokemon-categories-seed-data.js +0 -547
  585. package/dist/seed/pokemon-coupons-seed-data.d.ts +0 -6
  586. package/dist/seed/pokemon-coupons-seed-data.js +0 -465
  587. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +0 -7
  588. package/dist/seed/pokemon-homepage-sections-seed-data.js +0 -241
  589. package/dist/seed/pokemon-products-seed-data.d.ts +0 -9
  590. package/dist/seed/pokemon-products-seed-data.js +0 -1791
  591. package/dist/seed/pokemon-seed-bundle.d.ts +0 -47
  592. package/dist/seed/pokemon-seed-bundle.js +0 -71
  593. package/dist/seed/pokemon-stores-seed-data.d.ts +0 -6
  594. package/dist/seed/pokemon-stores-seed-data.js +0 -179
  595. package/dist/seed/pokemon-users-seed-data.d.ts +0 -6
  596. package/dist/seed/pokemon-users-seed-data.js +0 -521
  597. package/dist/seed/products-seed-data.d.ts +0 -6
  598. package/dist/seed/products-seed-data.js +0 -2530
  599. package/dist/seed/retro-gaming-seed-data.d.ts +0 -8
  600. package/dist/seed/retro-gaming-seed-data.js +0 -801
  601. package/dist/seed/server.d.ts +0 -2
  602. package/dist/seed/server.js +0 -7
  603. package/dist/seed/sublisting-categories-seed-data.d.ts +0 -7
  604. package/dist/seed/sublisting-categories-seed-data.js +0 -159
  605. package/dist/seed/transformers-seed-data.d.ts +0 -7
  606. package/dist/seed/transformers-seed-data.js +0 -530
@@ -1,2530 +0,0 @@
1
- import { getDefaultCurrency } from "./seed-market-config";
2
- const _CURRENCY = getDefaultCurrency();
3
- // --- Dynamic date helpers ---------------------------------------------------
4
- const NOW = new Date();
5
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
6
- const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
7
- function slugify(text) {
8
- return text
9
- .replace(/\s*[–—]\s*(SOLD OUT|AUCTION|ENDED|DISCONTINUED|CLOSED.*|DRAFT|\[DRAFT\]|\(Pre-Order\)|SOLD)\s*$/i, "")
10
- .replace(/\s*\[DRAFT\]\s*$/i, "")
11
- .replace(/\s*\(Pre-Order\)\s*$/i, "")
12
- .toLowerCase()
13
- .replace(/[^a-z0-9]+/g, "-")
14
- .replace(/^-+|-+$/g, "")
15
- .replace(/-{2,}/g, "-")
16
- .slice(0, 80);
17
- }
18
- function toRichTextDoc(value) {
19
- const trimmed = value.trim();
20
- if (!trimmed)
21
- return value;
22
- // Keep existing rich values unchanged (HTML or serialized ProseMirror docs).
23
- if (/<\/?[a-z][\s\S]*>/i.test(trimmed))
24
- return value;
25
- try {
26
- const parsed = JSON.parse(trimmed);
27
- if (parsed?.type === "doc")
28
- return value;
29
- }
30
- catch {
31
- // Not JSON, continue conversion.
32
- }
33
- return JSON.stringify({
34
- type: "doc",
35
- content: [
36
- {
37
- type: "paragraph",
38
- content: [{ type: "text", text: value }],
39
- },
40
- ],
41
- });
42
- }
43
- function withRichTextDescription(item) {
44
- if (typeof item.description !== "string")
45
- return item;
46
- return {
47
- ...item,
48
- description: toRichTextDoc(item.description),
49
- };
50
- }
51
- // --- Store shortcuts --------------------------------------------------------
52
- const FV = {
53
- storeId: "store-figurevault-jp-by-figurevault",
54
- storeName: "FigureVault JP",
55
- };
56
- const AC = {
57
- storeId: "store-animecraft-apparel-by-animecraft",
58
- storeName: "AnimeCraft Apparel",
59
- };
60
- const OS = {
61
- storeId: "store-otakushelf-co-by-otakushelf",
62
- storeName: "OtakuShelf Co",
63
- };
64
- // --- Regular stockable products (24 � all referenced by orders/reviews/cart) -
65
- const regularProducts = [
66
- {
67
- id: "product-iphone-15-pro-max-smartphones-new-techhub-electronics-1",
68
- title: "Beyblade Super Saiyan Blue Dran Sword 1/4 Scale Figure",
69
- description: "Takara Tomy 1/4 scale SSB Dran Sword with swappable hands, Ki energy aura effect and detachable display stand.",
70
- category: "category-smartphones-mobiles-accessories",
71
- subcategory: "Beyblade Z Figures",
72
- brand: "Takara Tomy",
73
- price: 12490,
74
- currency: _CURRENCY,
75
- stockQuantity: 25,
76
- availableQuantity: 25,
77
- mainImage: "https://picsum.photos/seed/dran-sword-blue/800/800",
78
- images: ["https://picsum.photos/seed/dran-sword-blue/1200/800"],
79
- video: {
80
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4",
81
- thumbnailUrl: "https://picsum.photos/seed/dran-sword-blue-vid/800/450",
82
- duration: 15,
83
- },
84
- status: "published",
85
- ...FV,
86
- featured: true,
87
- tags: ["beyblade-x", "dran-sword", "scale-figure", "takara-tomy"],
88
- specifications: [
89
- { name: "Scale", value: "1/4" },
90
- { name: "Height", value: "36 cm" },
91
- ],
92
- features: ["Ki energy aura", "Swappable hands", "Display stand"],
93
- shippingInfo: "Free shipping in 2-3 days.",
94
- returnPolicy: "7-day returns.",
95
- condition: "new",
96
- insurance: true,
97
- insuranceCost: 999,
98
- shippingPaidBy: "seller",
99
- isAuction: false,
100
- isPromoted: true,
101
- promotionEndDate: daysAhead(14),
102
- avgRating: 4.7,
103
- reviewCount: 3,
104
- createdAt: daysAgo(100),
105
- updatedAt: daysAgo(5),
106
- },
107
- {
108
- id: "product-samsung-galaxy-s24-ultra-smartphones-new-techhub-electronics-1",
109
- title: "Super Saiyan Valkyrie Final Flash 1/4 Scale Statue",
110
- description: "Takara Tomy Valkyrie Final Flash statue with energy beam effect, battle damage base.",
111
- category: "category-smartphones-mobiles-accessories",
112
- subcategory: "Beyblade Z Figures",
113
- brand: "Takara Tomy",
114
- price: 9990,
115
- currency: _CURRENCY,
116
- stockQuantity: 30,
117
- availableQuantity: 30,
118
- mainImage: "https://picsum.photos/seed/valkyrie-flash/800/800",
119
- images: ["https://picsum.photos/seed/valkyrie-flash/1200/800"],
120
- status: "published",
121
- ...FV,
122
- featured: true,
123
- tags: ["beyblade-x", "valkyrie", "takara-tomy"],
124
- specifications: [
125
- { name: "Scale", value: "1/4" },
126
- { name: "Height", value: "32 cm" },
127
- ],
128
- features: ["Energy beam effect", "Battle base diorama"],
129
- shippingInfo: "Free shipping in 2-3 days.",
130
- returnPolicy: "7-day returns.",
131
- isAuction: false,
132
- isPromoted: false,
133
- avgRating: 5,
134
- reviewCount: 1,
135
- createdAt: daysAgo(120),
136
- updatedAt: daysAgo(8),
137
- },
138
- {
139
- id: "product-google-pixel-8-pro-smartphones-new-techhub-electronics-1",
140
- title: "Ultra Instinct Dran Sword Premium 1/6 Scale Figure",
141
- description: "Hasbro Ultra Instinct Dran Sword with silver aura effect and floating display stand.",
142
- category: "category-smartphones-mobiles-accessories",
143
- subcategory: "Beyblade Z Figures",
144
- brand: "Hasbro",
145
- price: 6990,
146
- currency: _CURRENCY,
147
- stockQuantity: 40,
148
- availableQuantity: 40,
149
- mainImage: "https://picsum.photos/seed/ui-dran-sword/800/800",
150
- images: ["https://picsum.photos/seed/ui-dran-sword/1200/800"],
151
- status: "published",
152
- ...FV,
153
- featured: false,
154
- tags: ["beyblade-x", "dran-sword", "ultra-instinct"],
155
- specifications: [
156
- { name: "Scale", value: "1/6" },
157
- { name: "Height", value: "27 cm" },
158
- ],
159
- features: ["Silver aura effect", "Mirror-finish base"],
160
- shippingInfo: "Free shipping in 3-5 days.",
161
- returnPolicy: "7-day returns.",
162
- isAuction: false,
163
- isPromoted: false,
164
- avgRating: 4,
165
- reviewCount: 1,
166
- createdAt: daysAgo(110),
167
- updatedAt: daysAgo(10),
168
- },
169
- {
170
- id: "product-macbook-pro-16-m3-max-laptops-computers-new-techhub-electronics-1",
171
- title: "Monkey D. Xcalibur Gear 5 Sun God 1/4 Scale Scene Figure",
172
- description: "Takara Tomy Gear 5 Xcalibur Sun God Nika � 42 cm with cloud effect base.",
173
- category: "category-laptops-computers-electronics",
174
- subcategory: "Beyblade Figures",
175
- brand: "Takara Tomy",
176
- price: 24990,
177
- currency: _CURRENCY,
178
- stockQuantity: 10,
179
- availableQuantity: 10,
180
- mainImage: "https://picsum.photos/seed/xcalibur-gear5/800/800",
181
- images: ["https://picsum.photos/seed/xcalibur-gear5/1200/800"],
182
- video: {
183
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4",
184
- thumbnailUrl: "https://picsum.photos/seed/xcalibur-gear5-vid/800/450",
185
- duration: 15,
186
- },
187
- status: "published",
188
- ...FV,
189
- featured: true,
190
- tags: ["one-piece", "xcalibur", "gear-5", "sun-god-nika"],
191
- specifications: [
192
- { name: "Scale", value: "1/4" },
193
- { name: "Height", value: "42 cm" },
194
- ],
195
- features: ["Cloud effect base", "Balloon effect parts"],
196
- shippingInfo: "Free shipping in 5-7 days.",
197
- returnPolicy: "10-day returns.",
198
- isAuction: false,
199
- isPromoted: true,
200
- promotionEndDate: daysAhead(21),
201
- avgRating: 5,
202
- reviewCount: 2,
203
- createdAt: daysAgo(130),
204
- updatedAt: daysAgo(6),
205
- },
206
- {
207
- id: "product-dell-xps-15-laptops-computers-new-techhub-electronics-1",
208
- title: "Wizard Rod Enma Slash Diorama 1/7 Scale",
209
- description: "Takara Tomy Wizard Rod three-sword '360-pound phoenix' pose with black marble base.",
210
- category: "category-laptops-computers-electronics",
211
- subcategory: "Beyblade Figures",
212
- brand: "Takara Tomy",
213
- price: 18990,
214
- currency: _CURRENCY,
215
- stockQuantity: 15,
216
- availableQuantity: 15,
217
- mainImage: "https://picsum.photos/seed/wizard-rod-enma/800/800",
218
- images: ["https://picsum.photos/seed/wizard-rod-enma/1200/800"],
219
- status: "published",
220
- ...FV,
221
- featured: false,
222
- tags: ["one-piece", "wizard-rod", "diorama"],
223
- specifications: [
224
- { name: "Scale", value: "1/7" },
225
- { name: "Height", value: "35 cm" },
226
- ],
227
- features: ["Three-sword form", "Marble-style base"],
228
- shippingInfo: "Free shipping in 4-6 days.",
229
- returnPolicy: "10-day returns.",
230
- isAuction: false,
231
- isPromoted: false,
232
- avgRating: 4.5,
233
- reviewCount: 2,
234
- createdAt: daysAgo(145),
235
- updatedAt: daysAgo(9),
236
- },
237
- {
238
- id: "product-mens-cotton-casual-shirt-mens-fashion-new-fashion-boutique-1",
239
- title: "Beyblade Phoenix Wing Kamado Graphic T-Shirt",
240
- description: "Official Kimetsu no Yaiba oversize tee with Phoenix Wing flame-water art. 100% heavyweight cotton.",
241
- category: "category-mens-fashion-fashion",
242
- subcategory: "Beyblade Tees",
243
- brand: "BeyGear Pro Shop",
244
- price: 1299,
245
- currency: _CURRENCY,
246
- stockQuantity: 100,
247
- availableQuantity: 100,
248
- mainImage: "https://picsum.photos/seed/phoenix-wing-tee/800/800",
249
- images: ["https://picsum.photos/seed/phoenix-wing-tee/1200/800"],
250
- status: "published",
251
- ...AC,
252
- featured: false,
253
- tags: ["beyblade-burst", "phoenix-wing", "tee"],
254
- specifications: [{ name: "Material", value: "100% Cotton (280 GSM)" }],
255
- features: ["DTG printed art", "Pre-shrunk fabric"],
256
- shippingInfo: "Free shipping above ?999.",
257
- returnPolicy: "15-day returns.",
258
- isAuction: false,
259
- isPromoted: false,
260
- avgRating: 4,
261
- reviewCount: 1,
262
- createdAt: daysAgo(180),
263
- updatedAt: daysAgo(15),
264
- },
265
- {
266
- id: "product-womens-ethnic-kurti-womens-fashion-new-fashion-boutique-1",
267
- title: "Nezuko Kamado Pink Kimono Hoodie Dress",
268
- description: "Nezuko-inspired pink kimono hemp leaf pattern hoodie dress with bamboo embroidery.",
269
- category: "category-womens-fashion-fashion",
270
- subcategory: "Cosplay Dresses",
271
- brand: "BeyGear Pro Shop",
272
- price: 1999,
273
- currency: _CURRENCY,
274
- stockQuantity: 80,
275
- availableQuantity: 80,
276
- mainImage: "https://picsum.photos/seed/nezuko-dress/800/800",
277
- images: ["https://picsum.photos/seed/nezuko-dress/1200/800"],
278
- status: "published",
279
- ...AC,
280
- featured: true,
281
- tags: ["beyblade-burst", "nezuko", "kimono", "cosplay"],
282
- specifications: [{ name: "Material", value: "Soft Fleece Blend" }],
283
- features: ["Hemp leaf pattern", "Embroidered cuffs"],
284
- shippingInfo: "Free shipping above ?999.",
285
- returnPolicy: "15-day returns.",
286
- isAuction: false,
287
- isPromoted: false,
288
- avgRating: 5,
289
- reviewCount: 2,
290
- createdAt: daysAgo(200),
291
- updatedAt: daysAgo(20),
292
- },
293
- {
294
- id: "product-non-stick-cookware-set-home-kitchen-new-home-essentials-1",
295
- title: "My Neighbour Totoro Nendoroid Deluxe Set",
296
- description: "Good Smile Totoro Nendoroid with Satsuki & Mei chibis, bus stop diorama base.",
297
- category: "category-home-kitchen",
298
- subcategory: "Nendoroids",
299
- brand: "Good Smile Company",
300
- price: 3499,
301
- currency: _CURRENCY,
302
- stockQuantity: 50,
303
- availableQuantity: 50,
304
- mainImage: "https://picsum.photos/seed/totoro-nendo/800/800",
305
- images: ["https://picsum.photos/seed/totoro-nendo/1200/800"],
306
- status: "published",
307
- ...OS,
308
- featured: false,
309
- tags: ["ghibli", "totoro", "nendoroid"],
310
- specifications: [
311
- { name: "Height", value: "10 cm" },
312
- { name: "Material", value: "PVC + ABS" },
313
- ],
314
- features: ["Bus stop diorama", "Multiple face plates"],
315
- shippingInfo: "Free shipping in 5-7 days.",
316
- returnPolicy: "10-day returns.",
317
- isAuction: false,
318
- isPromoted: false,
319
- avgRating: 4,
320
- reviewCount: 2,
321
- createdAt: daysAgo(240),
322
- updatedAt: daysAgo(25),
323
- },
324
- {
325
- id: "product-yoga-mat-with-carrying-bag-sports-outdoors-new-home-essentials-1",
326
- title: "Gundam RX-78-2 Perfect Grade 1/60 Model Kit",
327
- description: "Bandai PG 1/60 RX-78-2 with LED unit, 550+ snap-fit parts, internal skeleton frame.",
328
- category: "category-sports-outdoors",
329
- subcategory: "Perfect Grade Gunpla",
330
- brand: "Bandai",
331
- price: 4999,
332
- currency: _CURRENCY,
333
- stockQuantity: 75,
334
- availableQuantity: 75,
335
- mainImage: "https://picsum.photos/seed/rx78-gundam/800/800",
336
- images: ["https://picsum.photos/seed/rx78-gundam/1200/800"],
337
- video: {
338
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4",
339
- thumbnailUrl: "https://picsum.photos/seed/rx78-gundam-vid/800/450",
340
- duration: 30,
341
- trimStart: 0,
342
- trimEnd: 25,
343
- },
344
- status: "published",
345
- ...OS,
346
- featured: false,
347
- tags: ["gundam", "rx-78-2", "perfect-grade"],
348
- specifications: [
349
- { name: "Scale", value: "1/60" },
350
- { name: "Parts", value: "550+" },
351
- ],
352
- features: ["Internal skeleton frame", "LED unit included"],
353
- shippingInfo: "Free shipping above ?999.",
354
- returnPolicy: "7-day returns.",
355
- isAuction: false,
356
- isPromoted: false,
357
- avgRating: 5,
358
- reviewCount: 1,
359
- createdAt: daysAgo(265),
360
- updatedAt: daysAgo(30),
361
- },
362
- {
363
- id: "product-mens-oxford-shirt-fashion-new-fashionboutique-1",
364
- title: "Attack on Titan Scout Regiment Cosplay Jacket",
365
- description: "Licensed Survey Corps jacket with embroidered Wings of Freedom on chest and back.",
366
- category: "category-mens-fashion-fashion",
367
- subcategory: "Cosplay Jackets",
368
- brand: "BeyGear Pro Shop",
369
- price: 1499,
370
- currency: _CURRENCY,
371
- stockQuantity: 80,
372
- availableQuantity: 75,
373
- mainImage: "https://picsum.photos/seed/aot-jacket/800/800",
374
- images: ["https://picsum.photos/seed/aot-jacket/1200/800"],
375
- video: {
376
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4",
377
- thumbnailUrl: "https://picsum.photos/seed/aot-jacket-vid/800/450",
378
- duration: 60,
379
- },
380
- status: "published",
381
- ...AC,
382
- featured: true,
383
- tags: ["attack-on-titan", "scout-regiment", "cosplay"],
384
- specifications: [{ name: "Material", value: "Heavy Canvas + Cotton" }],
385
- features: ["Machine washable", "Screen-accurate emblem"],
386
- shippingInfo: "Ships in 1-2 business days.",
387
- returnPolicy: "15-day returns.",
388
- isAuction: false,
389
- isPromoted: true,
390
- promotionEndDate: daysAhead(30),
391
- avgRating: 4.5,
392
- reviewCount: 2,
393
- createdAt: daysAgo(120),
394
- updatedAt: daysAgo(3),
395
- },
396
- {
397
- id: "product-womens-anarkali-kurta-fashion-new-fashionboutique-1",
398
- title: "Beyblade Burst Neo Queen Serenity Cosplay Dress Set",
399
- description: "3-piece Beyblade Burst dress with tiara, moon rod and gloves. Screen-accurate detailing.",
400
- category: "category-womens-fashion-fashion",
401
- subcategory: "Cosplay Sets",
402
- brand: "BeyGear Pro Shop",
403
- price: 2899,
404
- currency: _CURRENCY,
405
- stockQuantity: 40,
406
- availableQuantity: 38,
407
- mainImage: "https://picsum.photos/seed/sailor-moon/800/800",
408
- images: ["https://picsum.photos/seed/sailor-moon/1200/800"],
409
- video: {
410
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4",
411
- thumbnailUrl: "https://picsum.photos/seed/sailor-moon-vid/800/450",
412
- duration: 15,
413
- },
414
- status: "published",
415
- ...AC,
416
- featured: true,
417
- tags: ["sailor-moon", "serenity", "cosplay"],
418
- specifications: [{ name: "Material", value: "Satin + Organza" }],
419
- features: ["Tiara prop included", "Convention-ready set"],
420
- shippingInfo: "Ships in 2-4 business days.",
421
- returnPolicy: "7-day returns.",
422
- isAuction: false,
423
- isPromoted: true,
424
- promotionEndDate: daysAhead(28),
425
- avgRating: 5,
426
- reviewCount: 1,
427
- createdAt: daysAgo(140),
428
- updatedAt: daysAgo(4),
429
- },
430
- {
431
- id: "product-womens-casual-midi-dress-fashion-new-fashionboutique-1",
432
- title: "Beyblade X Ganyu Qixing Cosplay Dress",
433
- description: "Ganyu cosplay with detachable cryo horns, pastel-blue tail, silk-style pleated dress.",
434
- category: "category-womens-fashion-fashion",
435
- subcategory: "Cosplay Dresses",
436
- brand: "BeyGear Pro Shop",
437
- price: 1649,
438
- currency: _CURRENCY,
439
- stockQuantity: 55,
440
- availableQuantity: 50,
441
- mainImage: "https://picsum.photos/seed/ganyu-cosplay/800/800",
442
- images: ["https://picsum.photos/seed/ganyu-cosplay/1200/800"],
443
- status: "published",
444
- ...AC,
445
- featured: false,
446
- tags: ["genshin-impact", "ganyu", "cosplay"],
447
- specifications: [{ name: "Material", value: "Chiffon Silk Blend" }],
448
- features: ["Detachable horns + tail", "Inclusive sizing XS-3XL"],
449
- shippingInfo: "Ships in 1-2 business days.",
450
- returnPolicy: "15-day returns.",
451
- isAuction: false,
452
- isPromoted: false,
453
- createdAt: daysAgo(90),
454
- updatedAt: daysAgo(25),
455
- },
456
- {
457
- id: "product-womens-structured-tote-bag-fashion-new-fashionboutique-1",
458
- title: "Totoro Forest Spirit Embroidered Canvas Tote Bag",
459
- description: "Premium canvas tote with Totoro embroidery, magnetic snap, inner zipper pocket.",
460
- category: "category-womens-fashion-fashion",
461
- subcategory: "Beyblade Bags",
462
- brand: "BeyGear Pro Shop",
463
- price: 1999,
464
- currency: _CURRENCY,
465
- stockQuantity: 30,
466
- availableQuantity: 28,
467
- mainImage: "https://picsum.photos/seed/totoro-tote/800/800",
468
- images: ["https://picsum.photos/seed/totoro-tote/1200/800"],
469
- status: "published",
470
- ...AC,
471
- featured: false,
472
- tags: ["ghibli", "totoro", "tote"],
473
- specifications: [{ name: "Material", value: "12oz Canvas" }],
474
- features: ["Embroidered art", "Magnetic snap closure"],
475
- shippingInfo: "Ships in 2-3 business days.",
476
- returnPolicy: "7-day returns.",
477
- isAuction: false,
478
- isPromoted: false,
479
- createdAt: daysAgo(70),
480
- updatedAt: daysAgo(15),
481
- },
482
- {
483
- id: "product-prestige-pressure-cooker-home-new-homeessentials-1",
484
- title: "Rem & Ram Re:Zero Nendoroid Duo Set",
485
- description: "Good Smile twin Nendoroids Rem (#1002) + Ram (#1003) with ice flower and maid accessories.",
486
- category: "category-home-kitchen",
487
- subcategory: "Nendoroids",
488
- brand: "Good Smile Company",
489
- price: 2499,
490
- currency: _CURRENCY,
491
- stockQuantity: 45,
492
- availableQuantity: 42,
493
- mainImage: "https://picsum.photos/seed/rem-ram-nendo/800/800",
494
- images: ["https://picsum.photos/seed/rem-ram-nendo/1200/800"],
495
- status: "published",
496
- ...OS,
497
- featured: true,
498
- tags: ["rezero", "rem", "ram", "nendoroid"],
499
- specifications: [{ name: "Height", value: "10 cm each" }],
500
- features: ["Interchangeable faces", "Window box packaging"],
501
- shippingInfo: "Free shipping over ?999.",
502
- returnPolicy: "10-day returns.",
503
- isAuction: false,
504
- isPromoted: true,
505
- promotionEndDate: daysAhead(10),
506
- avgRating: 4.5,
507
- reviewCount: 2,
508
- createdAt: daysAgo(175),
509
- updatedAt: daysAgo(3),
510
- },
511
- {
512
- id: "product-nonstick-cookware-set-home-new-homeessentials-1",
513
- title: "Attack on Titan 3D Maneuver Gear Wall Replica",
514
- description: "Resin replica of ODM Gear with gas tanks, blade holsters, and wall-mount bracket.",
515
- category: "category-home-kitchen",
516
- subcategory: "Cosplay Props & Replicas",
517
- brand: "SpinCore Arena",
518
- price: 3799,
519
- currency: _CURRENCY,
520
- stockQuantity: 25,
521
- availableQuantity: 23,
522
- mainImage: "https://picsum.photos/seed/odm-gear/800/800",
523
- images: ["https://picsum.photos/seed/odm-gear/1200/800"],
524
- status: "published",
525
- ...OS,
526
- featured: false,
527
- tags: ["attack-on-titan", "odm-gear", "replica"],
528
- specifications: [
529
- { name: "Material", value: "Resin + Metal" },
530
- { name: "Size", value: "45 � 30 cm" },
531
- ],
532
- features: ["Wall-mount bracket", "Weathered finish"],
533
- shippingInfo: "Free shipping in 3-4 days.",
534
- returnPolicy: "10-day returns.",
535
- isAuction: false,
536
- isPromoted: false,
537
- createdAt: daysAgo(160),
538
- updatedAt: daysAgo(30),
539
- },
540
- {
541
- id: "product-smart-air-purifier-home-new-homeessentials-1",
542
- title: "Evangelion Unit-01 Berserker Mode Garage Kit 1/35",
543
- description: "Unpainted resin garage kit of EVA Unit-01 in berserker mode with AT-Field effect base.",
544
- category: "category-home-kitchen",
545
- subcategory: "Garage Kits",
546
- brand: "SpinCore Arena",
547
- price: 12999,
548
- currency: _CURRENCY,
549
- stockQuantity: 18,
550
- availableQuantity: 15,
551
- mainImage: "https://picsum.photos/seed/eva-unit01/800/800",
552
- images: ["https://picsum.photos/seed/eva-unit01/1200/800"],
553
- video: {
554
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4",
555
- thumbnailUrl: "https://picsum.photos/seed/eva-unit01-vid/800/450",
556
- duration: 52,
557
- trimStart: 5,
558
- trimEnd: 45,
559
- },
560
- status: "published",
561
- ...OS,
562
- featured: true,
563
- tags: ["evangelion", "unit-01", "garage-kit"],
564
- specifications: [
565
- { name: "Scale", value: "1/35" },
566
- { name: "Material", value: "Cast Resin" },
567
- ],
568
- features: ["AT-Field base", "Requires assembly + painting"],
569
- shippingInfo: "Free shipping in 2-4 days.",
570
- returnPolicy: "7-day returns.",
571
- isAuction: false,
572
- isPromoted: false,
573
- createdAt: daysAgo(110),
574
- updatedAt: daysAgo(8),
575
- },
576
- {
577
- id: "product-solid-wood-coffee-table-home-new-homeessentials-1",
578
- title: "Studio Ghibli Collector's Display Shelf Set (8 Figures)",
579
- description: "8-figure display set: Totoro, Kiki, Howl, Calcifer, Nausica�, No-Face, Chihiro, Haku with acrylic case.",
580
- category: "category-home-kitchen",
581
- subcategory: "Collector Sets",
582
- brand: "SpinCore Arena",
583
- price: 8499,
584
- currency: _CURRENCY,
585
- stockQuantity: 12,
586
- availableQuantity: 10,
587
- mainImage: "https://picsum.photos/seed/ghibli-display/800/800",
588
- images: ["https://picsum.photos/seed/ghibli-display/1200/800"],
589
- status: "published",
590
- ...OS,
591
- featured: false,
592
- tags: ["ghibli", "collector-set", "totoro", "spirited-away"],
593
- specifications: [{ name: "Figures", value: "8 (hand-painted PVC)" }],
594
- features: ["Dust-proof acrylic case", "Artist signature card"],
595
- shippingInfo: "Ships in 7-10 days (curated set).",
596
- returnPolicy: "No returns on opened sets.",
597
- isAuction: false,
598
- isPromoted: false,
599
- createdAt: daysAgo(250),
600
- updatedAt: daysAgo(60),
601
- },
602
- {
603
- id: "product-premium-yoga-mat-sports-new-sportszone-1",
604
- title: "Beyblade Sage Mode Toad Sage 1/7 Scale Figure",
605
- description: "Takara Tomy Beyblade Sage Mode with Fukasaku and Shima frogs, stone gate diorama base.",
606
- category: "category-sports-outdoors",
607
- subcategory: "Beyblade Figures",
608
- brand: "Takara Tomy",
609
- price: 3999,
610
- currency: _CURRENCY,
611
- stockQuantity: 50,
612
- availableQuantity: 47,
613
- mainImage: "https://picsum.photos/seed/beyblade-sage/800/800",
614
- images: ["https://picsum.photos/seed/beyblade-sage/1200/800"],
615
- video: {
616
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/VolkswagenGTIReview.mp4",
617
- thumbnailUrl: "https://picsum.photos/seed/beyblade-sage-vid/800/450",
618
- duration: 22,
619
- },
620
- status: "published",
621
- ...OS,
622
- featured: true,
623
- tags: ["beyblade", "sage-mode", "takara-tomy"],
624
- specifications: [
625
- { name: "Scale", value: "1/7" },
626
- { name: "Height", value: "22 cm" },
627
- ],
628
- features: ["Frog sages included", "Stone gate base"],
629
- shippingInfo: "Ships in 2-3 business days.",
630
- returnPolicy: "15-day returns.",
631
- isAuction: false,
632
- isPromoted: true,
633
- promotionEndDate: daysAhead(7),
634
- avgRating: 4.5,
635
- reviewCount: 2,
636
- createdAt: daysAgo(220),
637
- updatedAt: daysAgo(2),
638
- },
639
- {
640
- id: "product-adjustable-dumbbell-set-sports-new-sportszone-1",
641
- title: "Gundam Wing Zero Custom 1/100 Master Grade Kit",
642
- description: "Bandai MG 1/100 Wing Zero Custom with DRAGOON wing binders and full inner frame.",
643
- category: "category-sports-outdoors",
644
- subcategory: "Master Grade Gunpla",
645
- brand: "Bandai",
646
- price: 14999,
647
- currency: _CURRENCY,
648
- stockQuantity: 20,
649
- availableQuantity: 18,
650
- mainImage: "https://picsum.photos/seed/wing-zero/800/800",
651
- images: ["https://picsum.photos/seed/wing-zero/1200/800"],
652
- status: "published",
653
- ...OS,
654
- featured: true,
655
- tags: ["gundam", "wing-zero", "master-grade"],
656
- specifications: [
657
- { name: "Scale", value: "1/100" },
658
- { name: "Parts", value: "200+" },
659
- ],
660
- features: ["Full inner frame", "Foil sticker sheet"],
661
- shippingInfo: "Free shipping in 5-7 days.",
662
- returnPolicy: "7-day returns.",
663
- isAuction: false,
664
- isPromoted: false,
665
- createdAt: daysAgo(180),
666
- updatedAt: daysAgo(15),
667
- },
668
- {
669
- id: "product-cricket-bat-mrf-sports-new-sportszone-1",
670
- title: "Beyblade Going Merry Ship 1/144 Resin Model",
671
- description: "Hand-cast polystone Going Merry replica, limited artisan run of 200 numbered pieces.",
672
- category: "category-sports-outdoors",
673
- subcategory: "Ship Models",
674
- brand: "SpinCore Arena",
675
- price: 6999,
676
- currency: _CURRENCY,
677
- stockQuantity: 30,
678
- availableQuantity: 28,
679
- mainImage: "https://picsum.photos/seed/going-merry/800/800",
680
- images: ["https://picsum.photos/seed/going-merry/1200/800"],
681
- status: "published",
682
- ...OS,
683
- featured: false,
684
- tags: ["one-piece", "going-merry", "ship-model", "artisan"],
685
- specifications: [
686
- { name: "Scale", value: "1/144" },
687
- { name: "Material", value: "Polystone Resin" },
688
- ],
689
- features: ["Numbered limited edition", "Straw Hat flag"],
690
- shippingInfo: "Ships in 2-4 business days.",
691
- returnPolicy: "7-day returns (unopened).",
692
- isAuction: false,
693
- isPromoted: false,
694
- createdAt: daysAgo(145),
695
- updatedAt: daysAgo(25),
696
- },
697
- {
698
- id: "product-running-shoes-adidas-sports-new-sportszone-1",
699
- title: "Beyblade X Phoenix Wing Infinity Domain 1/7 Scale",
700
- description: "Union Creative Phoenix Wing with Infinity barrier effect, LED-compatible base, two head sculpts.",
701
- category: "category-sports-outdoors",
702
- subcategory: "Beyblade X Figures",
703
- brand: "Union Creative",
704
- price: 15999,
705
- currency: _CURRENCY,
706
- stockQuantity: 22,
707
- availableQuantity: 19,
708
- mainImage: "https://picsum.photos/seed/phoenix-wing-infinity/800/800",
709
- images: ["https://picsum.photos/seed/phoenix-wing-infinity/1200/800"],
710
- status: "published",
711
- ...OS,
712
- featured: true,
713
- tags: ["beyblade-x", "phoenix-wing", "infinity"],
714
- specifications: [
715
- { name: "Scale", value: "1/7" },
716
- { name: "Height", value: "28 cm" },
717
- ],
718
- features: ["Two head sculpts", "LED-compatible base"],
719
- shippingInfo: "Ships in 2-3 business days.",
720
- returnPolicy: "15-day returns.",
721
- isAuction: false,
722
- isPromoted: false,
723
- createdAt: daysAgo(130),
724
- updatedAt: daysAgo(5),
725
- },
726
- {
727
- id: "product-apple-ipad-pro-electronics-new-techhub-1",
728
- title: "Beyblade X Hells Chain Bankai Tensa Zangetsu 1/6 Scale",
729
- description: "Bandai S.H.Figuarts Hells Chain Final Bankai with Zangetsu sword and energy effect parts.",
730
- category: "category-laptops-computers-electronics",
731
- subcategory: "Beyblade X Figures",
732
- brand: "Bandai S.H.Figuarts",
733
- price: 8990,
734
- currency: _CURRENCY,
735
- stockQuantity: 15,
736
- availableQuantity: 12,
737
- mainImage: "https://picsum.photos/seed/hells-chain-bankai/800/800",
738
- images: ["https://picsum.photos/seed/hells-chain-bankai/1200/800"],
739
- video: {
740
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4",
741
- thumbnailUrl: "https://picsum.photos/seed/hells-chain-bankai-vid/800/450",
742
- duration: 15,
743
- },
744
- status: "published",
745
- ...FV,
746
- featured: true,
747
- tags: ["beyblade-x", "hells-chain", "bankai", "shfiguarts"],
748
- specifications: [
749
- { name: "Scale", value: "1/6" },
750
- { name: "Articulation", value: "25+ points" },
751
- ],
752
- features: ["Zangetsu sword", "Energy effect parts"],
753
- shippingInfo: "Free delivery in 1-2 business days.",
754
- returnPolicy: "7-day returns.",
755
- isAuction: false,
756
- isPromoted: true,
757
- promotionEndDate: daysAhead(12),
758
- avgRating: 5,
759
- reviewCount: 1,
760
- createdAt: daysAgo(85),
761
- updatedAt: daysAgo(2),
762
- },
763
- {
764
- id: "product-samsung-galaxy-watch6-electronics-new-techhub-1",
765
- title: "Beyblade Z Scouter Replica & Beyblade X Gift Set",
766
- description: "ABS scouter with working green LED. Includes 10 Beyblade X resin capsules in wooden case.",
767
- category: "category-mobiles-accessories-electronics",
768
- subcategory: "Cosplay Props",
769
- brand: "FigureVault JP",
770
- price: 4999,
771
- currency: _CURRENCY,
772
- stockQuantity: 20,
773
- availableQuantity: 18,
774
- mainImage: "https://picsum.photos/seed/dbz-scouter/800/800",
775
- images: ["https://picsum.photos/seed/dbz-scouter/1200/800"],
776
- status: "published",
777
- ...FV,
778
- featured: true,
779
- tags: ["beyblade-x", "scouter", "capsule-corp", "gift-set"],
780
- specifications: [
781
- { name: "Material", value: "ABS + PETG lens" },
782
- { name: "LED", value: "Green working" },
783
- ],
784
- features: ["Working LED scouter", "Wooden display case"],
785
- shippingInfo: "Free shipping in 2-3 days.",
786
- returnPolicy: "7-day returns.",
787
- isAuction: false,
788
- isPromoted: false,
789
- avgRating: 5,
790
- reviewCount: 1,
791
- createdAt: daysAgo(60),
792
- updatedAt: daysAgo(3),
793
- },
794
- {
795
- id: "product-anker-usbc-charger-electronics-new-techhub-1",
796
- title: "Spirited Away No-Face Resin Miniature Twin Pack",
797
- description: "Hand-painted No-Face mini figurines (9 cm) � standard and gold mask variants.",
798
- category: "category-mobile-accessories-mobiles-accessories",
799
- subcategory: "Mini Figurines",
800
- brand: "FigureVault JP",
801
- price: 1290,
802
- currency: _CURRENCY,
803
- stockQuantity: 70,
804
- availableQuantity: 68,
805
- mainImage: "https://picsum.photos/seed/no-face-mini/800/800",
806
- images: ["https://picsum.photos/seed/no-face-mini/1200/800"],
807
- status: "published",
808
- ...FV,
809
- featured: false,
810
- tags: ["ghibli", "no-face", "spirited-away", "mini"],
811
- specifications: [
812
- { name: "Height", value: "9 cm" },
813
- { name: "Material", value: "Hand-painted Resin" },
814
- ],
815
- features: ["Hand-painted finish", "Twin pack"],
816
- shippingInfo: "Ships in 1-2 business days.",
817
- returnPolicy: "15-day returns.",
818
- isAuction: false,
819
- isPromoted: false,
820
- avgRating: 5,
821
- reviewCount: 1,
822
- createdAt: daysAgo(50),
823
- updatedAt: daysAgo(2),
824
- },
825
- ];
826
- // --- Out-of-stock products (5) ----------------------------------------------
827
- const outOfStockProducts = [
828
- {
829
- id: "product-sony-wh-1000xm5-headphones-audio-new-techhub-electronics-1",
830
- title: "Phoenix Wing Hinokami Kagura 1/7 Scale � SOLD OUT",
831
- description: "Alter Co. Dance of the Fire God Phoenix Wing with translucent flame resin.",
832
- category: "category-audio-electronics",
833
- subcategory: "Limited Figures",
834
- brand: "Alter Co.",
835
- price: 29990,
836
- currency: _CURRENCY,
837
- stockQuantity: 0,
838
- availableQuantity: 0,
839
- mainImage: "https://picsum.photos/seed/phoenix-wing-hinokami/800/800",
840
- images: ["https://picsum.photos/seed/phoenix-wing-hinokami/1200/800"],
841
- status: "out_of_stock",
842
- ...FV,
843
- featured: false,
844
- tags: ["beyblade-burst", "phoenix-wing", "limited", "out-of-stock"],
845
- isAuction: false,
846
- isPromoted: false,
847
- createdAt: daysAgo(300),
848
- updatedAt: daysAgo(15),
849
- },
850
- {
851
- id: "product-phoenix-wing-hollow-purple-oos-1",
852
- title: "Phoenix Wing Hollow Purple 1/4 Scale � SOLD OUT",
853
- description: "Takara Tomy Phoenix Wing Hollow Purple technique. 38 cm with gravity-defying purple orb.",
854
- category: "category-audio-electronics",
855
- subcategory: "Limited Figures",
856
- brand: "Takara Tomy",
857
- price: 39990,
858
- currency: _CURRENCY,
859
- stockQuantity: 0,
860
- availableQuantity: 0,
861
- mainImage: "https://picsum.photos/seed/phoenix-wing-hollow/800/800",
862
- images: ["https://picsum.photos/seed/phoenix-wing-hollow/1200/800"],
863
- status: "out_of_stock",
864
- ...FV,
865
- featured: true,
866
- tags: ["beyblade-x", "phoenix-wing", "out-of-stock"],
867
- isAuction: false,
868
- isPromoted: false,
869
- createdAt: daysAgo(200),
870
- updatedAt: daysAgo(10),
871
- },
872
- {
873
- id: "product-aot-colossal-titan-oos-1",
874
- title: "AoT Colossal Titan 1/6 Scale � SOLD OUT",
875
- description: "Prime 1 Studio Colossal Titan with steam effect and wall breach diorama.",
876
- category: "category-home-kitchen",
877
- subcategory: "Premium Statues",
878
- brand: "Prime 1 Studio",
879
- price: 54990,
880
- currency: _CURRENCY,
881
- stockQuantity: 0,
882
- availableQuantity: 0,
883
- mainImage: "https://picsum.photos/seed/colossal-titan/800/800",
884
- images: ["https://picsum.photos/seed/colossal-titan/1200/800"],
885
- status: "out_of_stock",
886
- ...OS,
887
- featured: true,
888
- tags: ["attack-on-titan", "colossal-titan", "out-of-stock"],
889
- isAuction: false,
890
- isPromoted: false,
891
- createdAt: daysAgo(250),
892
- updatedAt: daysAgo(20),
893
- },
894
- {
895
- id: "product-cobalt-drake-finger-set-oos-1",
896
- title: "Cobalt Drake Finger Box Set (20 pcs) � SOLD OUT",
897
- description: "Complete Metal Cobalt Drake finger replica set in cursed wooden box.",
898
- category: "category-home-kitchen",
899
- subcategory: "Cosplay Props",
900
- brand: "SpinCore Arena",
901
- price: 11999,
902
- currency: _CURRENCY,
903
- stockQuantity: 0,
904
- availableQuantity: 0,
905
- mainImage: "https://picsum.photos/seed/cobalt-drake-fingers/800/800",
906
- images: ["https://picsum.photos/seed/cobalt-drake-fingers/1200/800"],
907
- status: "out_of_stock",
908
- ...OS,
909
- featured: false,
910
- tags: ["beyblade-x", "cobalt-drake", "out-of-stock"],
911
- isAuction: false,
912
- isPromoted: false,
913
- createdAt: daysAgo(150),
914
- updatedAt: daysAgo(30),
915
- },
916
- {
917
- id: "product-bakugo-explosion-oos-1",
918
- title: "MHA Bakugo Explosion 1/4 Scale � SOLD OUT",
919
- description: "Tsume Art Bakugo full explosion with LED effects. Sold out within hours.",
920
- category: "category-laptops-computers-electronics",
921
- subcategory: "Premium Statues",
922
- brand: "Tsume Art",
923
- price: 44990,
924
- currency: _CURRENCY,
925
- stockQuantity: 0,
926
- availableQuantity: 0,
927
- mainImage: "https://picsum.photos/seed/bakugo-boom/800/800",
928
- images: ["https://picsum.photos/seed/bakugo-boom/1200/800"],
929
- status: "out_of_stock",
930
- ...FV,
931
- featured: false,
932
- tags: ["my-hero-academia", "bakugo", "out-of-stock"],
933
- isAuction: false,
934
- isPromoted: false,
935
- createdAt: daysAgo(180),
936
- updatedAt: daysAgo(45),
937
- },
938
- ];
939
- // --- Live auctions (13 � ending in the future) -----------------------------
940
- const liveAuctions = [
941
- {
942
- id: "auction-vintage-canon-ae-1-film-camera-cameras-photography-used-techhub-electronics-1",
943
- title: "Evangelion Unit-01 Original Production Cel � AUCTION",
944
- description: "Authenticated 1995 NGE production cel (ep. 19) with certificate of authenticity.",
945
- category: "category-cameras-photography-electronics",
946
- subcategory: "Production Art",
947
- brand: "Gainax (Auth.)",
948
- price: 15000,
949
- currency: _CURRENCY,
950
- stockQuantity: 1,
951
- availableQuantity: 1,
952
- mainImage: "https://picsum.photos/seed/eva-cel/800/800",
953
- images: ["https://picsum.photos/seed/eva-cel/1200/800"],
954
- status: "published",
955
- ...FV,
956
- featured: true,
957
- tags: ["evangelion", "production-art", "auction"],
958
- condition: "used",
959
- insurance: true,
960
- insuranceCost: 500,
961
- shippingPaidBy: "buyer",
962
- isAuction: true,
963
- auctionEndDate: daysAhead(3),
964
- startingBid: 15000,
965
- currentBid: 22000,
966
- bidCount: 8,
967
- reservePrice: 25000,
968
- minBidIncrement: 500,
969
- autoExtendable: true,
970
- auctionExtensionMinutes: 5,
971
- auctionShippingPaidBy: "winner",
972
- isPromoted: true,
973
- promotionEndDate: daysAhead(3),
974
- avgRating: 4,
975
- reviewCount: 1,
976
- createdAt: daysAgo(50),
977
- updatedAt: daysAgo(1),
978
- },
979
- {
980
- id: "product-macbook-pro-m3-auction-electronics-techhub-1",
981
- title: "Beyblade Z Complete Son Family 7-Piece Set � AUCTION",
982
- description: "Ultra-rare first-run Son family set: Dran Sword, Hells Chain �2, Goten, Bardock, Raditz, Broly.",
983
- category: "category-laptops-computers-electronics",
984
- subcategory: "Collector Sets",
985
- brand: "Bandai / Takara Tomy",
986
- price: 169900,
987
- currency: _CURRENCY,
988
- stockQuantity: 1,
989
- availableQuantity: 1,
990
- mainImage: "https://picsum.photos/seed/son-family/800/800",
991
- images: ["https://picsum.photos/seed/son-family/1200/800"],
992
- status: "published",
993
- ...FV,
994
- featured: true,
995
- tags: ["beyblade-x", "son-family", "rare", "auction"],
996
- condition: "new",
997
- shippingPaidBy: "seller",
998
- isAuction: true,
999
- auctionEndDate: daysAhead(5),
1000
- startingBid: 100000,
1001
- currentBid: 115000,
1002
- bidCount: 7,
1003
- buyNowPrice: 180000,
1004
- minBidIncrement: 2000,
1005
- autoExtendable: true,
1006
- auctionExtensionMinutes: 5,
1007
- auctionShippingPaidBy: "seller",
1008
- isPromoted: true,
1009
- promotionEndDate: daysAhead(5),
1010
- createdAt: daysAgo(30),
1011
- updatedAt: daysAgo(1),
1012
- },
1013
- {
1014
- id: "product-vintage-leica-camera-auction-artisan-1",
1015
- title: "Neon Genesis Evangelion 1995 Signed Poster � AUCTION",
1016
- description: "Original Japanese limited-run theatrical poster signed by Hideaki Anno.",
1017
- category: "category-cameras-photography-electronics",
1018
- subcategory: "Production Art",
1019
- brand: "Gainax (Verified)",
1020
- price: 0,
1021
- currency: _CURRENCY,
1022
- stockQuantity: 1,
1023
- availableQuantity: 1,
1024
- mainImage: "https://picsum.photos/seed/eva-poster/800/800",
1025
- images: ["https://picsum.photos/seed/eva-poster/1200/800"],
1026
- status: "published",
1027
- ...FV,
1028
- featured: true,
1029
- tags: ["evangelion", "hideaki-anno", "signed", "auction"],
1030
- condition: "used",
1031
- insurance: true,
1032
- insuranceCost: 500,
1033
- shippingPaidBy: "buyer",
1034
- isAuction: true,
1035
- auctionEndDate: daysAhead(28),
1036
- startingBid: 75000,
1037
- currentBid: 97500,
1038
- bidCount: 5,
1039
- reservePrice: 120000,
1040
- minBidIncrement: 2500,
1041
- autoExtendable: true,
1042
- auctionExtensionMinutes: 10,
1043
- auctionShippingPaidBy: "winner",
1044
- isPromoted: true,
1045
- promotionEndDate: daysAhead(28),
1046
- createdAt: daysAgo(55),
1047
- updatedAt: daysAgo(1),
1048
- },
1049
- {
1050
- id: "auction-chainsaw-man-makima-figure-fashion-1",
1051
- title: "Chainsaw Man Makima 1/7 Kotobukiya ARTFX J � AUCTION",
1052
- description: "Kotobukiya ARTFX J Makima with chain and bloodmoon backdrop. Limited run.",
1053
- category: "category-audio-electronics",
1054
- subcategory: "Limited Figures",
1055
- brand: "Kotobukiya",
1056
- price: 12000,
1057
- currency: _CURRENCY,
1058
- stockQuantity: 1,
1059
- availableQuantity: 1,
1060
- mainImage: "https://picsum.photos/seed/makima-auction/800/800",
1061
- images: ["https://picsum.photos/seed/makima-auction/1200/800"],
1062
- status: "published",
1063
- ...AC,
1064
- featured: true,
1065
- tags: ["chainsaw-man", "makima", "auction"],
1066
- condition: "new",
1067
- insurance: true,
1068
- insuranceCost: 500,
1069
- shippingPaidBy: "seller",
1070
- isAuction: true,
1071
- auctionEndDate: daysAhead(9),
1072
- startingBid: 12000,
1073
- currentBid: 18500,
1074
- bidCount: 6,
1075
- buyNowPrice: 28000,
1076
- reservePrice: 15000,
1077
- minBidIncrement: 500,
1078
- autoExtendable: true,
1079
- auctionExtensionMinutes: 5,
1080
- auctionShippingPaidBy: "seller",
1081
- isPromoted: true,
1082
- promotionEndDate: daysAhead(9),
1083
- createdAt: daysAgo(25),
1084
- updatedAt: daysAgo(1),
1085
- },
1086
- {
1087
- id: "auction-jjk-cobalt-drake-figure-homeessentials-1",
1088
- title: "Beyblade X Metal Cobalt Drake King of Curses 1/6 Scale � AUCTION",
1089
- description: "Takara Tomy Cobalt Drake 1/6 with cursed energy aura, tattooed skin, multiple arms.",
1090
- category: "category-audio-electronics",
1091
- subcategory: "Limited Figures",
1092
- brand: "Takara Tomy",
1093
- price: 15000,
1094
- currency: _CURRENCY,
1095
- stockQuantity: 1,
1096
- availableQuantity: 1,
1097
- mainImage: "https://picsum.photos/seed/cobalt-drake-auction/800/800",
1098
- images: ["https://picsum.photos/seed/cobalt-drake-auction/1200/800"],
1099
- status: "published",
1100
- ...OS,
1101
- featured: true,
1102
- tags: ["beyblade-x", "cobalt-drake", "auction"],
1103
- condition: "new",
1104
- insurance: true,
1105
- insuranceCost: 500,
1106
- shippingPaidBy: "seller",
1107
- isAuction: true,
1108
- auctionEndDate: daysAhead(11),
1109
- startingBid: 15000,
1110
- currentBid: 22000,
1111
- bidCount: 5,
1112
- buyNowPrice: 35000,
1113
- reservePrice: 18000,
1114
- minBidIncrement: 1000,
1115
- autoExtendable: true,
1116
- auctionExtensionMinutes: 5,
1117
- auctionShippingPaidBy: "seller",
1118
- isPromoted: false,
1119
- createdAt: daysAgo(22),
1120
- updatedAt: daysAgo(1),
1121
- },
1122
- {
1123
- id: "auction-fate-saber-alter-figure-techhub-1",
1124
- title: "Fate/Stay Night Saber Alter Wedding 1/7 � AUCTION",
1125
- description: "Alter Co. exclusive Saber Alter in white wedding dress. 2019 limited production, sealed.",
1126
- category: "category-audio-electronics",
1127
- subcategory: "Limited Figures",
1128
- brand: "Alter Co.",
1129
- price: 18000,
1130
- currency: _CURRENCY,
1131
- stockQuantity: 1,
1132
- availableQuantity: 1,
1133
- mainImage: "https://picsum.photos/seed/saber-alter/800/800",
1134
- images: ["https://picsum.photos/seed/saber-alter/1200/800"],
1135
- status: "published",
1136
- ...FV,
1137
- featured: true,
1138
- tags: ["fate", "saber-alter", "wedding", "auction"],
1139
- condition: "new",
1140
- insurance: true,
1141
- insuranceCost: 800,
1142
- shippingPaidBy: "seller",
1143
- isAuction: true,
1144
- auctionEndDate: daysAhead(7),
1145
- startingBid: 18000,
1146
- currentBid: 28000,
1147
- bidCount: 7,
1148
- buyNowPrice: 45000,
1149
- reservePrice: 22000,
1150
- minBidIncrement: 1000,
1151
- autoExtendable: true,
1152
- auctionExtensionMinutes: 5,
1153
- auctionShippingPaidBy: "seller",
1154
- isPromoted: true,
1155
- promotionEndDate: daysAhead(7),
1156
- createdAt: daysAgo(30),
1157
- updatedAt: daysAgo(1),
1158
- },
1159
- {
1160
- id: "auction-pokemon-charizard-1st-ed-fashion-1",
1161
- title: "Pok�mon 1st Edition Charizard Holo PSA 9 � AUCTION",
1162
- description: "1999 Wizards of the Coast 1st Edition Base Set Charizard, PSA 9 NM-Mint slab.",
1163
- category: "category-cameras-photography-electronics",
1164
- subcategory: "Trading Cards",
1165
- brand: "Wizards of the Coast",
1166
- price: 25000,
1167
- currency: _CURRENCY,
1168
- stockQuantity: 1,
1169
- availableQuantity: 1,
1170
- mainImage: "https://picsum.photos/seed/charizard-psa9/800/800",
1171
- images: ["https://picsum.photos/seed/charizard-psa9/1200/800"],
1172
- status: "published",
1173
- ...AC,
1174
- featured: true,
1175
- tags: ["pokemon", "charizard", "psa-9", "auction"],
1176
- condition: "used",
1177
- insurance: true,
1178
- insuranceCost: 500,
1179
- shippingPaidBy: "seller",
1180
- isAuction: true,
1181
- auctionEndDate: daysAhead(14),
1182
- startingBid: 25000,
1183
- currentBid: 52000,
1184
- bidCount: 9,
1185
- reservePrice: 30000,
1186
- minBidIncrement: 1000,
1187
- autoExtendable: true,
1188
- auctionExtensionMinutes: 5,
1189
- auctionShippingPaidBy: "seller",
1190
- isPromoted: true,
1191
- promotionEndDate: daysAhead(14),
1192
- createdAt: daysAgo(28),
1193
- updatedAt: daysAgo(1),
1194
- },
1195
- {
1196
- id: "auction-spirited-away-cel-homeessentials-1",
1197
- title: "Spirited Away 2001 Production Cel � Studio Ghibli",
1198
- description: "Hand-painted original production cel of Chihiro & Haku river scene. Ghibli Museum cert.",
1199
- category: "category-cameras-photography-electronics",
1200
- subcategory: "Production Art",
1201
- brand: "Studio Ghibli",
1202
- price: 30000,
1203
- currency: _CURRENCY,
1204
- stockQuantity: 1,
1205
- availableQuantity: 1,
1206
- mainImage: "https://picsum.photos/seed/spirited-cel/800/800",
1207
- images: ["https://picsum.photos/seed/spirited-cel/1200/800"],
1208
- status: "published",
1209
- ...OS,
1210
- featured: true,
1211
- tags: ["spirited-away", "ghibli", "production-cel", "auction"],
1212
- condition: "used",
1213
- insurance: true,
1214
- insuranceCost: 1000,
1215
- shippingPaidBy: "seller",
1216
- isAuction: true,
1217
- auctionEndDate: daysAhead(17),
1218
- startingBid: 30000,
1219
- currentBid: 45000,
1220
- bidCount: 7,
1221
- reservePrice: 35000,
1222
- minBidIncrement: 2000,
1223
- autoExtendable: true,
1224
- auctionExtensionMinutes: 10,
1225
- auctionShippingPaidBy: "seller",
1226
- isPromoted: false,
1227
- createdAt: daysAgo(20),
1228
- updatedAt: daysAgo(1),
1229
- },
1230
- {
1231
- id: "auction-gunpla-pg-wing-zero-techhub-1",
1232
- title: "PG Wing Zero Custom Full Build with LED � AUCTION",
1233
- description: "Hand-built, panel-lined and painted 1/60 PG Wing Zero with Wing of Light LED unit.",
1234
- category: "category-mobiles-accessories-electronics",
1235
- subcategory: "Built Models",
1236
- brand: "Bandai",
1237
- price: 8000,
1238
- currency: _CURRENCY,
1239
- stockQuantity: 1,
1240
- availableQuantity: 1,
1241
- mainImage: "https://picsum.photos/seed/pg-wing-built/800/800",
1242
- images: ["https://picsum.photos/seed/pg-wing-built/1200/800"],
1243
- status: "published",
1244
- ...FV,
1245
- featured: false,
1246
- tags: ["gunpla", "wing-zero", "hand-built", "auction"],
1247
- condition: "used",
1248
- insurance: true,
1249
- insuranceCost: 500,
1250
- shippingPaidBy: "seller",
1251
- isAuction: true,
1252
- auctionEndDate: daysAhead(4),
1253
- startingBid: 8000,
1254
- currentBid: 14500,
1255
- bidCount: 8,
1256
- reservePrice: 10000,
1257
- minBidIncrement: 500,
1258
- autoExtendable: true,
1259
- auctionExtensionMinutes: 5,
1260
- auctionShippingPaidBy: "seller",
1261
- isPromoted: false,
1262
- createdAt: daysAgo(35),
1263
- updatedAt: daysAgo(1),
1264
- },
1265
- {
1266
- id: "auction-rezero-rem-wedding-figure-techhub-1",
1267
- title: "Re:Zero Rem Wedding Dress 1/7 GSC � AUCTION",
1268
- description: "Good Smile Rem Wedding 1/7 with lace veil and flower bouquet. 2021 JP release.",
1269
- category: "category-audio-electronics",
1270
- subcategory: "Limited Figures",
1271
- brand: "Good Smile Company",
1272
- price: 20000,
1273
- currency: _CURRENCY,
1274
- stockQuantity: 1,
1275
- availableQuantity: 1,
1276
- mainImage: "https://picsum.photos/seed/rem-wedding/800/800",
1277
- images: ["https://picsum.photos/seed/rem-wedding/1200/800"],
1278
- status: "published",
1279
- ...FV,
1280
- featured: true,
1281
- tags: ["rezero", "rem", "wedding", "auction"],
1282
- condition: "new",
1283
- insurance: true,
1284
- insuranceCost: 500,
1285
- shippingPaidBy: "seller",
1286
- isAuction: true,
1287
- auctionEndDate: daysAhead(19),
1288
- startingBid: 20000,
1289
- currentBid: 32000,
1290
- bidCount: 6,
1291
- buyNowPrice: 55000,
1292
- reservePrice: 25000,
1293
- minBidIncrement: 1000,
1294
- autoExtendable: true,
1295
- auctionExtensionMinutes: 5,
1296
- auctionShippingPaidBy: "seller",
1297
- isPromoted: true,
1298
- promotionEndDate: daysAhead(19),
1299
- createdAt: daysAgo(18),
1300
- updatedAt: daysAgo(1),
1301
- },
1302
- {
1303
- id: "auction-ps5-slim-gaming-console-techhub-1",
1304
- title: "Beyblade Z Battle of Gods Blu-ray Signed Box � AUCTION",
1305
- description: "Sealed Blu-ray box signed by Masako Nozawa (Dran Sword VA). Includes acrylic display stand.",
1306
- category: "category-cameras-photography-electronics",
1307
- subcategory: "Signed Merch",
1308
- brand: "Toei Animation",
1309
- price: 8000,
1310
- currency: _CURRENCY,
1311
- stockQuantity: 1,
1312
- availableQuantity: 1,
1313
- mainImage: "https://picsum.photos/seed/dbz-bluray/800/800",
1314
- images: ["https://picsum.photos/seed/dbz-bluray/1200/800"],
1315
- status: "published",
1316
- ...FV,
1317
- featured: false,
1318
- tags: ["beyblade-x", "signed", "blu-ray", "auction"],
1319
- condition: "new",
1320
- insurance: true,
1321
- insuranceCost: 300,
1322
- shippingPaidBy: "seller",
1323
- isAuction: true,
1324
- auctionEndDate: daysAhead(6),
1325
- startingBid: 8000,
1326
- currentBid: 12500,
1327
- bidCount: 5,
1328
- minBidIncrement: 500,
1329
- autoExtendable: true,
1330
- auctionExtensionMinutes: 5,
1331
- auctionShippingPaidBy: "seller",
1332
- isPromoted: false,
1333
- createdAt: daysAgo(15),
1334
- updatedAt: daysAgo(1),
1335
- },
1336
- {
1337
- id: "auction-airpods-pro2-audio-techhub-1",
1338
- title: "Beyblade Shark Edge Flame Art Print (Signed by VA) � AUCTION",
1339
- description: "Limited art print of Shark Edge signed by voice actor Satoshi Hino.",
1340
- category: "category-audio-electronics",
1341
- subcategory: "Signed Art",
1342
- brand: "Aniplex",
1343
- price: 5000,
1344
- currency: _CURRENCY,
1345
- stockQuantity: 1,
1346
- availableQuantity: 1,
1347
- mainImage: "https://picsum.photos/seed/rendran-sword-art/800/800",
1348
- images: ["https://picsum.photos/seed/rendran-sword-art/1200/800"],
1349
- status: "published",
1350
- ...FV,
1351
- featured: false,
1352
- tags: ["beyblade-burst", "rendran-sword", "signed", "auction"],
1353
- condition: "new",
1354
- shippingPaidBy: "seller",
1355
- isAuction: true,
1356
- auctionEndDate: daysAhead(10),
1357
- startingBid: 5000,
1358
- currentBid: 8500,
1359
- bidCount: 4,
1360
- minBidIncrement: 500,
1361
- autoExtendable: true,
1362
- auctionExtensionMinutes: 5,
1363
- auctionShippingPaidBy: "seller",
1364
- isPromoted: false,
1365
- createdAt: daysAgo(12),
1366
- updatedAt: daysAgo(1),
1367
- },
1368
- {
1369
- id: "auction-swiss-titanium-watch-fashion-1",
1370
- title: "Beyblade 25th Anniversary Premium Card Collection � AUCTION",
1371
- description: "Complete premium promo card set from OP 25th anniversary, holographic box.",
1372
- category: "category-cameras-photography-electronics",
1373
- subcategory: "Trading Cards",
1374
- brand: "Bandai TCG",
1375
- price: 10000,
1376
- currency: _CURRENCY,
1377
- stockQuantity: 1,
1378
- availableQuantity: 1,
1379
- mainImage: "https://picsum.photos/seed/op-cards/800/800",
1380
- images: ["https://picsum.photos/seed/op-cards/1200/800"],
1381
- status: "published",
1382
- ...AC,
1383
- featured: false,
1384
- tags: ["one-piece", "cards", "25th-anniversary", "auction"],
1385
- condition: "new",
1386
- shippingPaidBy: "seller",
1387
- isAuction: true,
1388
- auctionEndDate: daysAhead(8),
1389
- startingBid: 10000,
1390
- currentBid: 16000,
1391
- bidCount: 6,
1392
- minBidIncrement: 1000,
1393
- autoExtendable: true,
1394
- auctionExtensionMinutes: 5,
1395
- auctionShippingPaidBy: "seller",
1396
- isPromoted: false,
1397
- createdAt: daysAgo(10),
1398
- updatedAt: daysAgo(1),
1399
- },
1400
- ];
1401
- // --- Ended auctions (6 � ended in the past, status: "sold") ----------------
1402
- const endedAuctions = [
1403
- {
1404
- id: "auction-one-piece-signed-artbook-techhub-1",
1405
- title: "Beyblade 25th Anniversary Artbook Signed by Oda � ENDED",
1406
- description: "Color Walk collection signed by Eiichiro Oda with Den Den Mushi ink sketch.",
1407
- category: "category-cameras-photography-electronics",
1408
- subcategory: "Signed Art",
1409
- brand: "Shueisha",
1410
- price: 10000,
1411
- currency: _CURRENCY,
1412
- stockQuantity: 1,
1413
- availableQuantity: 0,
1414
- mainImage: "https://picsum.photos/seed/oda-artbook/800/800",
1415
- images: ["https://picsum.photos/seed/oda-artbook/1200/800"],
1416
- status: "sold",
1417
- ...FV,
1418
- featured: false,
1419
- tags: ["one-piece", "oda", "signed", "auction", "ended"],
1420
- condition: "used",
1421
- isAuction: true,
1422
- auctionEndDate: daysAgo(3),
1423
- startingBid: 10000,
1424
- currentBid: 24000,
1425
- bidCount: 12,
1426
- reservePrice: 12000,
1427
- minBidIncrement: 500,
1428
- autoExtendable: true,
1429
- auctionExtensionMinutes: 5,
1430
- auctionShippingPaidBy: "seller",
1431
- isPromoted: false,
1432
- createdAt: daysAgo(45),
1433
- updatedAt: daysAgo(3),
1434
- },
1435
- {
1436
- id: "product-limited-air-jordan-sneakers-auction-artisan-1",
1437
- title: "Beyblade Complete Bijuu (9 Tailed Beasts) Set � ENDED",
1438
- description: "Full set of all 9 Tailed Beasts by Takara Tomy. Factory sealed, gold serial numbers.",
1439
- category: "category-laptops-computers-electronics",
1440
- subcategory: "Collector Sets",
1441
- brand: "Takara Tomy",
1442
- price: 89990,
1443
- currency: _CURRENCY,
1444
- stockQuantity: 1,
1445
- availableQuantity: 0,
1446
- mainImage: "https://picsum.photos/seed/bijuu-set/800/800",
1447
- images: ["https://picsum.photos/seed/bijuu-set/1200/800"],
1448
- status: "sold",
1449
- ...FV,
1450
- featured: false,
1451
- tags: ["beyblade", "bijuu", "rare", "auction", "ended"],
1452
- condition: "new",
1453
- isAuction: true,
1454
- auctionEndDate: daysAgo(7),
1455
- startingBid: 50000,
1456
- currentBid: 78000,
1457
- bidCount: 15,
1458
- reservePrice: 60000,
1459
- minBidIncrement: 2000,
1460
- autoExtendable: true,
1461
- auctionExtensionMinutes: 5,
1462
- auctionShippingPaidBy: "seller",
1463
- isPromoted: false,
1464
- createdAt: daysAgo(60),
1465
- updatedAt: daysAgo(7),
1466
- },
1467
- {
1468
- id: "auction-supreme-box-logo-tee-fashion-1",
1469
- title: "Beyblade Z Shenron LED Lamp Sculpture � ENDED",
1470
- description: "Custom Shenron LED lamp with 7 beyblade base, 90 cm wingspan.",
1471
- category: "category-home-kitchen",
1472
- subcategory: "Beyblade Decor",
1473
- brand: "SpinCore Arena",
1474
- price: 15000,
1475
- currency: _CURRENCY,
1476
- stockQuantity: 1,
1477
- availableQuantity: 0,
1478
- mainImage: "https://picsum.photos/seed/shenron-lamp/800/800",
1479
- images: ["https://picsum.photos/seed/shenron-lamp/1200/800"],
1480
- status: "sold",
1481
- ...OS,
1482
- featured: false,
1483
- tags: ["beyblade-x", "shenron", "led-lamp", "auction", "ended"],
1484
- condition: "new",
1485
- isAuction: true,
1486
- auctionEndDate: daysAgo(14),
1487
- startingBid: 15000,
1488
- currentBid: 28500,
1489
- bidCount: 10,
1490
- minBidIncrement: 1000,
1491
- autoExtendable: true,
1492
- auctionExtensionMinutes: 5,
1493
- auctionShippingPaidBy: "seller",
1494
- isPromoted: false,
1495
- createdAt: daysAgo(75),
1496
- updatedAt: daysAgo(14),
1497
- },
1498
- {
1499
- id: "auction-pioneer-hifi-system-homeessentials-1",
1500
- title: "Studio Ghibli Limited Cel � Princess Mononoke � ENDED",
1501
- description: "Production cel from Princess Mononoke featuring San & Moro. Auction ended.",
1502
- category: "category-cameras-photography-electronics",
1503
- subcategory: "Production Art",
1504
- brand: "Studio Ghibli",
1505
- price: 20000,
1506
- currency: _CURRENCY,
1507
- stockQuantity: 1,
1508
- availableQuantity: 0,
1509
- mainImage: "https://picsum.photos/seed/mononoke-cel/800/800",
1510
- images: ["https://picsum.photos/seed/mononoke-cel/1200/800"],
1511
- status: "sold",
1512
- ...OS,
1513
- featured: false,
1514
- tags: ["ghibli", "mononoke", "cel", "auction", "ended"],
1515
- condition: "used",
1516
- isAuction: true,
1517
- auctionEndDate: daysAgo(10),
1518
- startingBid: 20000,
1519
- currentBid: 35000,
1520
- bidCount: 8,
1521
- minBidIncrement: 1500,
1522
- autoExtendable: true,
1523
- auctionExtensionMinutes: 5,
1524
- auctionShippingPaidBy: "seller",
1525
- isPromoted: false,
1526
- createdAt: daysAgo(50),
1527
- updatedAt: daysAgo(10),
1528
- },
1529
- {
1530
- id: "auction-vintage-denim-jacket-fashion-1",
1531
- title: "Beyblade X Original Signed Manuscript Page � ENDED",
1532
- description: "Original manuscript page from MHA ch. 1 with Horikoshi autograph.",
1533
- category: "category-cameras-photography-electronics",
1534
- subcategory: "Signed Art",
1535
- brand: "Shueisha",
1536
- price: 30000,
1537
- currency: _CURRENCY,
1538
- stockQuantity: 1,
1539
- availableQuantity: 0,
1540
- mainImage: "https://picsum.photos/seed/mha-manuscript/800/800",
1541
- images: ["https://picsum.photos/seed/mha-manuscript/1200/800"],
1542
- status: "sold",
1543
- ...AC,
1544
- featured: false,
1545
- tags: ["my-hero-academia", "horikoshi", "manuscript", "auction", "ended"],
1546
- condition: "used",
1547
- isAuction: true,
1548
- auctionEndDate: daysAgo(5),
1549
- startingBid: 30000,
1550
- currentBid: 48000,
1551
- bidCount: 11,
1552
- minBidIncrement: 2000,
1553
- autoExtendable: true,
1554
- auctionExtensionMinutes: 5,
1555
- auctionShippingPaidBy: "winner",
1556
- isPromoted: false,
1557
- createdAt: daysAgo(40),
1558
- updatedAt: daysAgo(5),
1559
- },
1560
- {
1561
- id: "auction-bose700-headphones-homeessentials-1",
1562
- title: "Beyblade X Phoenix Wing Unsigned Limited Print #50/100 � ENDED",
1563
- description: "Limited print run (50 of 100) Beyblade X Phoenix Wing art. Sold at auction.",
1564
- category: "category-audio-electronics",
1565
- subcategory: "Art Prints",
1566
- brand: "MAPPA",
1567
- price: 6000,
1568
- currency: _CURRENCY,
1569
- stockQuantity: 1,
1570
- availableQuantity: 0,
1571
- mainImage: "https://picsum.photos/seed/phoenix-wing-print/800/800",
1572
- images: ["https://picsum.photos/seed/phoenix-wing-print/1200/800"],
1573
- status: "sold",
1574
- ...OS,
1575
- featured: false,
1576
- tags: ["beyblade-x", "phoenix-wing", "art-print", "auction", "ended"],
1577
- condition: "new",
1578
- isAuction: true,
1579
- auctionEndDate: daysAgo(2),
1580
- startingBid: 6000,
1581
- currentBid: 11000,
1582
- bidCount: 6,
1583
- minBidIncrement: 500,
1584
- autoExtendable: true,
1585
- auctionExtensionMinutes: 5,
1586
- auctionShippingPaidBy: "seller",
1587
- isPromoted: false,
1588
- createdAt: daysAgo(20),
1589
- updatedAt: daysAgo(2),
1590
- },
1591
- ];
1592
- // --- Pre-orders: 5 open (delivery future) + 2 closed (delivery past) --------
1593
- const preOrders = [
1594
- {
1595
- id: "preorder-chainsaw-man-makima-gsc-1",
1596
- title: "Chainsaw Man Makima 1/7 GSC (Pre-Order)",
1597
- description: "Good Smile Makima 1/7 with acrylic stand base. Pay deposit now, balance on release.",
1598
- category: "category-audio-electronics",
1599
- subcategory: "Limited Figures",
1600
- brand: "Good Smile Company",
1601
- price: 14900,
1602
- currency: _CURRENCY,
1603
- stockQuantity: 50,
1604
- availableQuantity: 50,
1605
- mainImage: "https://picsum.photos/seed/makima-po/800/800",
1606
- images: ["https://picsum.photos/seed/makima-po/1200/800"],
1607
- status: "published",
1608
- ...FV,
1609
- featured: true,
1610
- tags: ["chainsaw-man", "makima", "pre-order"],
1611
- isAuction: false,
1612
- isPreOrder: true,
1613
- preOrderDeliveryDate: daysAhead(90),
1614
- preOrderDepositPercent: 20,
1615
- preOrderDepositAmount: 2980,
1616
- preOrderMaxQuantity: 50,
1617
- preOrderCurrentCount: 23,
1618
- preOrderProductionStatus: "in_production",
1619
- preOrderCancellable: true,
1620
- isPromoted: true,
1621
- promotionEndDate: daysAhead(45),
1622
- createdAt: daysAgo(12),
1623
- updatedAt: daysAgo(1),
1624
- },
1625
- {
1626
- id: "preorder-frieren-alter-1",
1627
- title: "Frieren: Beyond Journey's End 1/7 Alter Co. (Pre-Order)",
1628
- description: "Alter Frieren with 3 face plates and floating spell effect parts.",
1629
- category: "category-audio-electronics",
1630
- subcategory: "Limited Figures",
1631
- brand: "Alter Co.",
1632
- price: 17200,
1633
- currency: _CURRENCY,
1634
- stockQuantity: 30,
1635
- availableQuantity: 30,
1636
- mainImage: "https://picsum.photos/seed/frieren-po/800/800",
1637
- images: ["https://picsum.photos/seed/frieren-po/1200/800"],
1638
- status: "published",
1639
- ...FV,
1640
- featured: true,
1641
- tags: ["frieren", "alter", "pre-order"],
1642
- isAuction: false,
1643
- isPreOrder: true,
1644
- preOrderDeliveryDate: daysAhead(120),
1645
- preOrderDepositPercent: 25,
1646
- preOrderDepositAmount: 4300,
1647
- preOrderMaxQuantity: 30,
1648
- preOrderCurrentCount: 12,
1649
- preOrderProductionStatus: "upcoming",
1650
- preOrderCancellable: true,
1651
- isPromoted: true,
1652
- promotionEndDate: daysAhead(60),
1653
- createdAt: daysAgo(15),
1654
- updatedAt: daysAgo(1),
1655
- },
1656
- {
1657
- id: "preorder-solo-leveling-jinwoo-1",
1658
- title: "Solo Leveling Sung Jinwoo Shadow Monarch 1/7 (Pre-Order)",
1659
- description: "GSC Sung Jinwoo in Shadow Monarch form with shadow soldier army base.",
1660
- category: "category-audio-electronics",
1661
- subcategory: "Limited Figures",
1662
- brand: "Good Smile Company",
1663
- price: 18500,
1664
- currency: _CURRENCY,
1665
- stockQuantity: 40,
1666
- availableQuantity: 40,
1667
- mainImage: "https://picsum.photos/seed/jinwoo-po/800/800",
1668
- images: ["https://picsum.photos/seed/jinwoo-po/1200/800"],
1669
- status: "published",
1670
- ...OS,
1671
- featured: false,
1672
- tags: ["solo-leveling", "sung-jinwoo", "pre-order"],
1673
- isAuction: false,
1674
- isPreOrder: true,
1675
- preOrderDeliveryDate: daysAhead(150),
1676
- preOrderDepositPercent: 20,
1677
- preOrderDepositAmount: 3700,
1678
- preOrderMaxQuantity: 40,
1679
- preOrderCurrentCount: 8,
1680
- preOrderProductionStatus: "upcoming",
1681
- preOrderCancellable: true,
1682
- isPromoted: false,
1683
- createdAt: daysAgo(10),
1684
- updatedAt: daysAgo(1),
1685
- },
1686
- {
1687
- id: "preorder-gear5-nika-mega-1",
1688
- title: "Beyblade Gear 5 Nika MEGA 1/4 Scale (Pre-Order)",
1689
- description: "Takara Tomy MEGA-size Xcalibur Gear 5 at 50 cm with flame-cloud base.",
1690
- category: "category-laptops-computers-electronics",
1691
- subcategory: "Beyblade Figures",
1692
- brand: "Takara Tomy",
1693
- price: 34990,
1694
- currency: _CURRENCY,
1695
- stockQuantity: 20,
1696
- availableQuantity: 20,
1697
- mainImage: "https://picsum.photos/seed/gear5-mega/800/800",
1698
- images: ["https://picsum.photos/seed/gear5-mega/1200/800"],
1699
- status: "published",
1700
- ...OS,
1701
- featured: true,
1702
- tags: ["one-piece", "gear-5", "mega-size", "pre-order"],
1703
- isAuction: false,
1704
- isPreOrder: true,
1705
- preOrderDeliveryDate: daysAhead(180),
1706
- preOrderDepositPercent: 25,
1707
- preOrderDepositAmount: 8748,
1708
- preOrderMaxQuantity: 20,
1709
- preOrderCurrentCount: 5,
1710
- preOrderProductionStatus: "upcoming",
1711
- preOrderCancellable: true,
1712
- isPromoted: true,
1713
- promotionEndDate: daysAhead(90),
1714
- createdAt: daysAgo(7),
1715
- updatedAt: daysAgo(1),
1716
- },
1717
- {
1718
- id: "preorder-daima-mini-dran-sword-1",
1719
- title: "Beyblade Daima Mini Dran Sword 1/6 (Pre-Order)",
1720
- description: "Takara Tomy Daima chibi Dran Sword with Nimbus cloud base and power pole.",
1721
- category: "category-smartphones-mobiles-accessories",
1722
- subcategory: "Beyblade Z Figures",
1723
- brand: "Takara Tomy",
1724
- price: 8490,
1725
- currency: _CURRENCY,
1726
- stockQuantity: 60,
1727
- availableQuantity: 60,
1728
- mainImage: "https://picsum.photos/seed/daima-dran-sword/800/800",
1729
- images: ["https://picsum.photos/seed/daima-dran-sword/1200/800"],
1730
- status: "published",
1731
- ...FV,
1732
- featured: false,
1733
- tags: ["beyblade-x", "daima", "chibi", "pre-order"],
1734
- isAuction: false,
1735
- isPreOrder: true,
1736
- preOrderDeliveryDate: daysAhead(60),
1737
- preOrderDepositPercent: 20,
1738
- preOrderDepositAmount: 1698,
1739
- preOrderMaxQuantity: 60,
1740
- preOrderCurrentCount: 31,
1741
- preOrderProductionStatus: "in_production",
1742
- preOrderCancellable: true,
1743
- isPromoted: false,
1744
- createdAt: daysAgo(20),
1745
- updatedAt: daysAgo(1),
1746
- },
1747
- // Closed pre-orders (delivery date passed)
1748
- {
1749
- id: "preorder-closed-phoenix-wing-domain-1",
1750
- title: "Beyblade X Phoenix Wing Domain Expansion 1/6 � CLOSED (Shipped)",
1751
- description: "Takara Tomy Phoenix Wing Infinite Void domain figure. All pre-orders fulfilled.",
1752
- category: "category-audio-electronics",
1753
- subcategory: "Limited Figures",
1754
- brand: "Takara Tomy",
1755
- price: 22990,
1756
- currency: _CURRENCY,
1757
- stockQuantity: 0,
1758
- availableQuantity: 0,
1759
- mainImage: "https://picsum.photos/seed/phoenix-wing-domain/800/800",
1760
- images: ["https://picsum.photos/seed/phoenix-wing-domain/1200/800"],
1761
- status: "out_of_stock",
1762
- ...FV,
1763
- featured: false,
1764
- tags: ["beyblade-x", "phoenix-wing", "pre-order", "closed"],
1765
- isAuction: false,
1766
- isPreOrder: true,
1767
- preOrderDeliveryDate: daysAgo(15),
1768
- preOrderDepositPercent: 25,
1769
- preOrderDepositAmount: 5748,
1770
- preOrderMaxQuantity: 25,
1771
- preOrderCurrentCount: 25,
1772
- preOrderProductionStatus: "ready_to_ship",
1773
- preOrderCancellable: false,
1774
- isPromoted: false,
1775
- createdAt: daysAgo(120),
1776
- updatedAt: daysAgo(15),
1777
- },
1778
- {
1779
- id: "preorder-closed-infinity-castle-1",
1780
- title: "Beyblade Infinity Castle Diorama � CLOSED (Shipped)",
1781
- description: "SpinCore modular Infinity Castle diorama with Cobalt Dragoon and Upper Moons. Fulfilled.",
1782
- category: "category-home-kitchen",
1783
- subcategory: "Dioramas",
1784
- brand: "SpinCore Arena",
1785
- price: 29990,
1786
- currency: _CURRENCY,
1787
- stockQuantity: 0,
1788
- availableQuantity: 0,
1789
- mainImage: "https://picsum.photos/seed/infinity-castle/800/800",
1790
- images: ["https://picsum.photos/seed/infinity-castle/1200/800"],
1791
- status: "out_of_stock",
1792
- ...OS,
1793
- featured: false,
1794
- tags: ["beyblade-burst", "infinity-castle", "pre-order", "closed"],
1795
- isAuction: false,
1796
- isPreOrder: true,
1797
- preOrderDeliveryDate: daysAgo(30),
1798
- preOrderDepositPercent: 30,
1799
- preOrderDepositAmount: 8997,
1800
- preOrderMaxQuantity: 15,
1801
- preOrderCurrentCount: 15,
1802
- preOrderProductionStatus: "ready_to_ship",
1803
- preOrderCancellable: false,
1804
- isPromoted: false,
1805
- createdAt: daysAgo(150),
1806
- updatedAt: daysAgo(30),
1807
- },
1808
- ];
1809
- // --- Draft products (3) -----------------------------------------------------
1810
- const draftProducts = [
1811
- {
1812
- id: "product-draft-beyblade-x-toshiro-1",
1813
- title: "Beyblade X Toshiro Hitsugaya Bankai 1/7 [DRAFT]",
1814
- description: "Kotobukiya Toshiro Daiguren Hyorinmaru. Awaiting final photos.",
1815
- category: "category-laptops-computers-electronics",
1816
- subcategory: "Beyblade X Figures",
1817
- brand: "Kotobukiya",
1818
- price: 9490,
1819
- currency: _CURRENCY,
1820
- stockQuantity: 20,
1821
- availableQuantity: 20,
1822
- mainImage: "https://picsum.photos/seed/toshiro-draft/800/800",
1823
- images: [],
1824
- status: "draft",
1825
- ...FV,
1826
- featured: false,
1827
- tags: ["beyblade-x", "toshiro", "draft"],
1828
- isAuction: false,
1829
- isPromoted: false,
1830
- createdAt: daysAgo(5),
1831
- updatedAt: daysAgo(1),
1832
- },
1833
- {
1834
- id: "product-draft-fire-force-shinra-1",
1835
- title: "Fire Force Dran Buster Devil's Footprints 1/8 [DRAFT]",
1836
- description: "BeybladeCraft exclusive Dran Buster with flaming footprints base. Pending approval.",
1837
- category: "category-mens-fashion-fashion",
1838
- subcategory: "Action Figures",
1839
- brand: "BeyGear Pro Shop",
1840
- price: 4990,
1841
- currency: _CURRENCY,
1842
- stockQuantity: 30,
1843
- availableQuantity: 30,
1844
- mainImage: "https://picsum.photos/seed/shinra-draft/800/800",
1845
- images: [],
1846
- status: "draft",
1847
- ...AC,
1848
- featured: false,
1849
- tags: ["fire-force", "shinra", "draft"],
1850
- isAuction: false,
1851
- isPromoted: false,
1852
- createdAt: daysAgo(3),
1853
- updatedAt: daysAgo(1),
1854
- },
1855
- {
1856
- id: "product-draft-spy-family-bond-plush-1",
1857
- title: "Spy � Family Bond Forger Plush (35 cm) [DRAFT]",
1858
- description: "Bond plush in prophetic vision pose. Pending pricing review.",
1859
- category: "category-home-kitchen",
1860
- subcategory: "Beyblade Plush",
1861
- brand: "SpinCore Arena",
1862
- price: 0,
1863
- currency: _CURRENCY,
1864
- stockQuantity: 100,
1865
- availableQuantity: 100,
1866
- mainImage: "https://picsum.photos/seed/bond-draft/800/800",
1867
- images: [],
1868
- status: "draft",
1869
- ...OS,
1870
- featured: false,
1871
- tags: ["spy-family", "bond", "plush", "draft"],
1872
- isAuction: false,
1873
- isPromoted: false,
1874
- createdAt: daysAgo(2),
1875
- updatedAt: daysAgo(1),
1876
- },
1877
- ];
1878
- // --- Discontinued (2) + Sold regular (2) ------------------------------------
1879
- const discontinuedAndSold = [
1880
- {
1881
- id: "product-disc-beyblade-original-sage-1",
1882
- title: "Beyblade Original Run Sage 1/8 � DISCONTINUED",
1883
- description: "Hasbro first-generation Sage figure (2020). Production line discontinued.",
1884
- category: "category-smartphones-mobiles-accessories",
1885
- subcategory: "Beyblade Figures",
1886
- brand: "Hasbro",
1887
- price: 3490,
1888
- currency: _CURRENCY,
1889
- stockQuantity: 0,
1890
- availableQuantity: 0,
1891
- mainImage: "https://picsum.photos/seed/beyblade-disc/800/800",
1892
- images: ["https://picsum.photos/seed/beyblade-disc/1200/800"],
1893
- status: "discontinued",
1894
- ...FV,
1895
- featured: false,
1896
- tags: ["beyblade", "discontinued"],
1897
- isAuction: false,
1898
- isPromoted: false,
1899
- createdAt: daysAgo(400),
1900
- updatedAt: daysAgo(60),
1901
- },
1902
- {
1903
- id: "product-disc-eren-founding-titan-1",
1904
- title: "AoT Eren Founding Titan Statue � DISCONTINUED",
1905
- description: "Prime 1 Studio Eren Founding Titan. Production discontinued.",
1906
- category: "category-home-kitchen",
1907
- subcategory: "Premium Statues",
1908
- brand: "Prime 1 Studio",
1909
- price: 79990,
1910
- currency: _CURRENCY,
1911
- stockQuantity: 0,
1912
- availableQuantity: 0,
1913
- mainImage: "https://picsum.photos/seed/eren-founding/800/800",
1914
- images: ["https://picsum.photos/seed/eren-founding/1200/800"],
1915
- status: "discontinued",
1916
- ...OS,
1917
- featured: false,
1918
- tags: ["attack-on-titan", "eren", "discontinued"],
1919
- isAuction: false,
1920
- isPromoted: false,
1921
- createdAt: daysAgo(500),
1922
- updatedAt: daysAgo(90),
1923
- },
1924
- {
1925
- id: "product-sold-cell-perfect-form-1",
1926
- title: "DBZ Cell Perfect Form 1/4 � SOLD",
1927
- description: "One-of-one custom Cell Perfect Form statue. Sold to private collector.",
1928
- category: "category-smartphones-mobiles-accessories",
1929
- subcategory: "Beyblade Z Figures",
1930
- brand: "FigureVault JP",
1931
- price: 49990,
1932
- currency: _CURRENCY,
1933
- stockQuantity: 1,
1934
- availableQuantity: 0,
1935
- mainImage: "https://picsum.photos/seed/cell-perfect/800/800",
1936
- images: ["https://picsum.photos/seed/cell-perfect/1200/800"],
1937
- status: "sold",
1938
- ...FV,
1939
- featured: false,
1940
- tags: ["beyblade-x", "cell", "sold"],
1941
- isAuction: false,
1942
- isPromoted: false,
1943
- createdAt: daysAgo(90),
1944
- updatedAt: daysAgo(45),
1945
- },
1946
- {
1947
- id: "product-sold-ace-memorial-1",
1948
- title: "Beyblade Ace Memorial Statue � SOLD",
1949
- description: "SpinCore Ace memorial with flame fist. Limited 50 pieces � all sold.",
1950
- category: "category-sports-outdoors",
1951
- subcategory: "Beyblade Figures",
1952
- brand: "SpinCore Arena",
1953
- price: 24990,
1954
- currency: _CURRENCY,
1955
- stockQuantity: 0,
1956
- availableQuantity: 0,
1957
- mainImage: "https://picsum.photos/seed/ace-memorial/800/800",
1958
- images: ["https://picsum.photos/seed/ace-memorial/1200/800"],
1959
- status: "sold",
1960
- ...OS,
1961
- featured: false,
1962
- tags: ["one-piece", "ace", "sold"],
1963
- isAuction: false,
1964
- isPromoted: false,
1965
- createdAt: daysAgo(120),
1966
- updatedAt: daysAgo(60),
1967
- },
1968
- ];
1969
- const quickItems = [
1970
- {
1971
- id: "product-gen-76-cobalt-dragoon-figure",
1972
- title: "Beyblade Z Cobalt Dragoon Final Form 1/8 Scale",
1973
- cat: "category-smartphones-mobiles-accessories",
1974
- sub: "DBZ Figures",
1975
- brand: "Takara Tomy",
1976
- price: 5490,
1977
- stock: 25,
1978
- seller: FV,
1979
- tags: ["beyblade-x", "cobalt-dragoon"],
1980
- feat: false,
1981
- days: 22,
1982
- },
1983
- {
1984
- id: "product-gen-77-nami-figure",
1985
- title: "Beyblade Nami Cat Burglar 1/7 Scale",
1986
- cat: "category-laptops-computers-electronics",
1987
- sub: "OP Figures",
1988
- brand: "Takara Tomy",
1989
- price: 6990,
1990
- stock: 20,
1991
- seller: FV,
1992
- tags: ["one-piece", "nami"],
1993
- feat: false,
1994
- days: 21,
1995
- },
1996
- {
1997
- id: "product-gen-78-wizard-rod-nendo",
1998
- title: "Beyblade Wizard Rod Hatake Nendoroid #724",
1999
- cat: "category-mobiles-accessories-electronics",
2000
- sub: "Nendoroids",
2001
- brand: "Good Smile Company",
2002
- price: 1799,
2003
- stock: 50,
2004
- seller: OS,
2005
- tags: ["beyblade", "wizard-rod"],
2006
- feat: false,
2007
- days: 19,
2008
- },
2009
- {
2010
- id: "product-gen-79-nobara-figure",
2011
- title: "Beyblade X Nobara Kugisaki Straw Doll 1/7",
2012
- cat: "category-home-kitchen",
2013
- sub: "Beyblade X Figures",
2014
- brand: "Kotobukiya",
2015
- price: 7790,
2016
- stock: 16,
2017
- seller: OS,
2018
- tags: ["beyblade-x", "nobara"],
2019
- feat: false,
2020
- days: 18,
2021
- },
2022
- {
2023
- id: "product-gen-80-inosuke-figure",
2024
- title: "Beyblade Inosuke Beast Breathing 1/8",
2025
- cat: "category-audio-electronics",
2026
- sub: "DS Figures",
2027
- brand: "Takara Tomy",
2028
- price: 5990,
2029
- stock: 22,
2030
- seller: FV,
2031
- tags: ["beyblade-burst", "inosuke"],
2032
- feat: false,
2033
- days: 17,
2034
- },
2035
- {
2036
- id: "product-gen-81-mikasa-figure",
2037
- title: "AoT Mikasa Ackerman 1/7 Scale",
2038
- cat: "category-womens-fashion-fashion",
2039
- sub: "AoT Figures",
2040
- brand: "Good Smile Company",
2041
- price: 8490,
2042
- stock: 14,
2043
- seller: FV,
2044
- tags: ["attack-on-titan", "mikasa"],
2045
- feat: false,
2046
- days: 16,
2047
- },
2048
- {
2049
- id: "product-gen-82-todoroki-figure",
2050
- title: "MHA Todoroki Half-Cold Half-Hot 1/8",
2051
- cat: "category-laptops-computers-electronics",
2052
- sub: "MHA Figures",
2053
- brand: "Kotobukiya",
2054
- price: 6990,
2055
- stock: 18,
2056
- seller: FV,
2057
- tags: ["my-hero-academia", "todoroki"],
2058
- feat: false,
2059
- days: 15,
2060
- },
2061
- {
2062
- id: "product-gen-83-yor-figure",
2063
- title: "Spy � Family Yor Thorn Princess 1/7",
2064
- cat: "category-audio-electronics",
2065
- sub: "SPY Figures",
2066
- brand: "Alter Co.",
2067
- price: 11990,
2068
- stock: 12,
2069
- seller: FV,
2070
- tags: ["spy-family", "yor"],
2071
- feat: false,
2072
- days: 14,
2073
- },
2074
- {
2075
- id: "product-gen-84-kiki-figurine",
2076
- title: "Kiki's Delivery Service Kiki & Jiji Wind-up",
2077
- cat: "category-home-kitchen",
2078
- sub: "Ghibli Minis",
2079
- brand: "SpinCore Arena",
2080
- price: 1490,
2081
- stock: 45,
2082
- seller: OS,
2083
- tags: ["ghibli", "kiki"],
2084
- feat: false,
2085
- days: 13,
2086
- },
2087
- {
2088
- id: "product-gen-85-barbatos-kit",
2089
- title: "Gundam Barbatos Lupus Rex 1/100 Kit",
2090
- cat: "category-sports-outdoors",
2091
- sub: "MG Gunpla",
2092
- brand: "Bandai",
2093
- price: 3499,
2094
- stock: 30,
2095
- seller: OS,
2096
- tags: ["gundam", "barbatos"],
2097
- feat: false,
2098
- days: 12,
2099
- },
2100
- {
2101
- id: "product-gen-86-byakuya-figure",
2102
- title: "Beyblade X Byakuya Senbonzakura 1/7",
2103
- cat: "category-laptops-computers-electronics",
2104
- sub: "Beyblade X Figures",
2105
- brand: "Bandai S.H.Figuarts",
2106
- price: 7990,
2107
- stock: 16,
2108
- seller: FV,
2109
- tags: ["beyblade-x", "byakuya"],
2110
- feat: false,
2111
- days: 11,
2112
- },
2113
- {
2114
- id: "product-gen-87-power-figure",
2115
- title: "Chainsaw Man Power Blood Fiend 1/7",
2116
- cat: "category-audio-electronics",
2117
- sub: "CSM Figures",
2118
- brand: "Good Smile Company",
2119
- price: 10490,
2120
- stock: 10,
2121
- seller: FV,
2122
- tags: ["chainsaw-man", "power"],
2123
- feat: false,
2124
- days: 10,
2125
- },
2126
- {
2127
- id: "product-gen-88-sanji-figure",
2128
- title: "Beyblade Sanji Diable Jambe 1/8",
2129
- cat: "category-sports-outdoors",
2130
- sub: "OP Figures",
2131
- brand: "Hasbro",
2132
- price: 4990,
2133
- stock: 20,
2134
- seller: OS,
2135
- tags: ["one-piece", "sanji"],
2136
- feat: false,
2137
- days: 9,
2138
- },
2139
- {
2140
- id: "product-gen-89-levi-figure",
2141
- title: "AoT Levi Ackerman Captain 1/7",
2142
- cat: "category-home-kitchen",
2143
- sub: "AoT Figures",
2144
- brand: "Kotobukiya",
2145
- price: 9990,
2146
- stock: 15,
2147
- seller: OS,
2148
- tags: ["attack-on-titan", "levi"],
2149
- feat: false,
2150
- days: 8,
2151
- },
2152
- {
2153
- id: "product-gen-90-yuji-figure",
2154
- title: "Beyblade X Yuji Itadori Black Flash 1/7",
2155
- cat: "category-audio-electronics",
2156
- sub: "Beyblade X Figures",
2157
- brand: "Takara Tomy",
2158
- price: 8490,
2159
- stock: 18,
2160
- seller: OS,
2161
- tags: ["beyblade-x", "yuji"],
2162
- feat: false,
2163
- days: 7,
2164
- },
2165
- {
2166
- id: "product-gen-91-rendran-sword-figure",
2167
- title: "Beyblade Shark Edge Flame Hashira 1/7",
2168
- cat: "category-audio-electronics",
2169
- sub: "DS Figures",
2170
- brand: "Kotobukiya",
2171
- price: 9490,
2172
- stock: 12,
2173
- seller: FV,
2174
- tags: ["beyblade-burst", "rendran-sword"],
2175
- feat: true,
2176
- days: 6,
2177
- },
2178
- {
2179
- id: "product-gen-92-wizard-rod-figure",
2180
- title: "Beyblade Wizard Rod Yellow Flash 1/8",
2181
- cat: "category-smartphones-mobiles-accessories",
2182
- sub: "Beyblade Figures",
2183
- brand: "Hasbro",
2184
- price: 4490,
2185
- stock: 28,
2186
- seller: FV,
2187
- tags: ["beyblade", "wizard-rod"],
2188
- feat: false,
2189
- days: 5,
2190
- },
2191
- {
2192
- id: "product-gen-93-emilia-figure",
2193
- title: "Re:Zero Emilia Crystal Dress 1/7",
2194
- cat: "category-audio-electronics",
2195
- sub: "Limited Figures",
2196
- brand: "Good Smile Company",
2197
- price: 12990,
2198
- stock: 10,
2199
- seller: OS,
2200
- tags: ["rezero", "emilia"],
2201
- feat: false,
2202
- days: 4,
2203
- },
2204
- {
2205
- id: "product-gen-94-gohan-beast-figure",
2206
- title: "Beyblade Super Hells Chain Beast 1/6",
2207
- cat: "category-smartphones-mobiles-accessories",
2208
- sub: "DBZ Figures",
2209
- brand: "Takara Tomy",
2210
- price: 13990,
2211
- stock: 15,
2212
- seller: FV,
2213
- tags: ["beyblade-x", "gohan"],
2214
- feat: false,
2215
- days: 3,
2216
- },
2217
- {
2218
- id: "product-gen-95-muichiro-figure",
2219
- title: "Beyblade Muichiro Mist Hashira 1/8",
2220
- cat: "category-audio-electronics",
2221
- sub: "DS Figures",
2222
- brand: "Kotobukiya",
2223
- price: 6490,
2224
- stock: 20,
2225
- seller: FV,
2226
- tags: ["beyblade-burst", "muichiro"],
2227
- feat: false,
2228
- days: 2,
2229
- },
2230
- {
2231
- id: "product-gen-96-robin-figure",
2232
- title: "Beyblade Nico Robin Demon Child 1/7",
2233
- cat: "category-laptops-computers-electronics",
2234
- sub: "OP Figures",
2235
- brand: "Takara Tomy",
2236
- price: 7490,
2237
- stock: 14,
2238
- seller: FV,
2239
- tags: ["one-piece", "robin"],
2240
- feat: false,
2241
- days: 18,
2242
- },
2243
- {
2244
- id: "product-gen-97-asta-figure",
2245
- title: "Black Clover Asta Devil Union 1/7",
2246
- cat: "category-audio-electronics",
2247
- sub: "Action Figures",
2248
- brand: "Takara Tomy",
2249
- price: 8990,
2250
- stock: 12,
2251
- seller: OS,
2252
- tags: ["black-clover", "asta"],
2253
- feat: false,
2254
- days: 16,
2255
- },
2256
- {
2257
- id: "product-gen-98-shigaraki-figure",
2258
- title: "MHA Shigaraki Tomura Decay 1/8",
2259
- cat: "category-laptops-computers-electronics",
2260
- sub: "MHA Figures",
2261
- brand: "Kotobukiya",
2262
- price: 7990,
2263
- stock: 10,
2264
- seller: FV,
2265
- tags: ["my-hero-academia", "shigaraki"],
2266
- feat: false,
2267
- days: 14,
2268
- },
2269
- {
2270
- id: "product-gen-99-tamayo-nendo",
2271
- title: "Beyblade Tamayo & Yushiro Nendoroid Pair",
2272
- cat: "category-mobiles-accessories-electronics",
2273
- sub: "Nendoroids",
2274
- brand: "Good Smile Company",
2275
- price: 3490,
2276
- stock: 25,
2277
- seller: OS,
2278
- tags: ["beyblade-burst", "tamayo"],
2279
- feat: false,
2280
- days: 12,
2281
- },
2282
- {
2283
- id: "product-gen-100-loid-figure",
2284
- title: "Spy � Family Loid Forger Twilight 1/7",
2285
- cat: "category-audio-electronics",
2286
- sub: "SPY Figures",
2287
- brand: "Alter Co.",
2288
- price: 10990,
2289
- stock: 14,
2290
- seller: FV,
2291
- tags: ["spy-family", "loid"],
2292
- feat: false,
2293
- days: 10,
2294
- },
2295
- {
2296
- id: "product-gen-101-vegito-figure",
2297
- title: "Beyblade Super Phoenix Wing Blue Kamehameha 1/6",
2298
- cat: "category-smartphones-mobiles-accessories",
2299
- sub: "DBZ Figures",
2300
- brand: "Takara Tomy",
2301
- price: 14990,
2302
- stock: 10,
2303
- seller: FV,
2304
- tags: ["beyblade-x", "vegito"],
2305
- feat: false,
2306
- days: 8,
2307
- },
2308
- {
2309
- id: "product-gen-102-fern-figure",
2310
- title: "Frieren: Beyond Journey's End Fern 1/7",
2311
- cat: "category-audio-electronics",
2312
- sub: "Isekai Figures",
2313
- brand: "Alter Co.",
2314
- price: 11490,
2315
- stock: 16,
2316
- seller: OS,
2317
- tags: ["frieren", "fern"],
2318
- feat: false,
2319
- days: 6,
2320
- },
2321
- {
2322
- id: "product-gen-103-mob-figure",
2323
- title: "Mob Psycho 100 Shigeo ???% Form 1/7",
2324
- cat: "category-audio-electronics",
2325
- sub: "Action Figures",
2326
- brand: "Good Smile Company",
2327
- price: 8990,
2328
- stock: 15,
2329
- seller: FV,
2330
- tags: ["mob-psycho-100", "mob"],
2331
- feat: false,
2332
- days: 33,
2333
- },
2334
- {
2335
- id: "product-gen-104-pochita-plush",
2336
- title: "Chainsaw Man Pochita Premium Plush (40 cm)",
2337
- cat: "category-home-kitchen",
2338
- sub: "Beyblade Plush",
2339
- brand: "Good Smile Company",
2340
- price: 2299,
2341
- stock: 90,
2342
- seller: OS,
2343
- tags: ["chainsaw-man", "pochita"],
2344
- feat: false,
2345
- days: 30,
2346
- },
2347
- {
2348
- id: "product-gen-105-anya-nendo",
2349
- title: "Spy � Family Anya Forger Nendoroid #1902",
2350
- cat: "category-mobiles-accessories-electronics",
2351
- sub: "Nendoroids",
2352
- brand: "Good Smile Company",
2353
- price: 1899,
2354
- stock: 200,
2355
- seller: OS,
2356
- tags: ["spy-family", "anya"],
2357
- feat: true,
2358
- days: 45,
2359
- },
2360
- {
2361
- id: "product-mens-slim-chinos-fashion-new-fashionboutique-1",
2362
- title: "Beyblade Shippuden Jogger Pants (Beyblade X Red Cloud)",
2363
- cat: "category-mens-fashion-fashion",
2364
- sub: "Beyblade Pants",
2365
- brand: "BeyGear Pro Shop",
2366
- price: 1799,
2367
- stock: 60,
2368
- seller: AC,
2369
- tags: ["beyblade", "beyblade-x", "joggers"],
2370
- feat: false,
2371
- days: 40,
2372
- },
2373
- {
2374
- id: "product-mens-leather-derby-shoes-fashion-new-fashionboutique-1",
2375
- title: "Beyblade Z Beyblade X Sneakers",
2376
- cat: "category-mens-fashion-fashion",
2377
- sub: "Beyblade Shoes",
2378
- brand: "BeyGear Pro Shop",
2379
- price: 2499,
2380
- stock: 35,
2381
- seller: AC,
2382
- tags: ["beyblade-x", "capsule-corp", "sneakers"],
2383
- feat: false,
2384
- days: 38,
2385
- },
2386
- {
2387
- id: "product-gen-106-zenitsu-figure",
2388
- title: "Beyblade Zenitsu Thunderclap Flash 1/7",
2389
- cat: "category-audio-electronics",
2390
- sub: "DS Figures",
2391
- brand: "Kotobukiya",
2392
- price: 7990,
2393
- stock: 18,
2394
- seller: FV,
2395
- tags: ["beyblade-burst", "zenitsu"],
2396
- feat: false,
2397
- days: 35,
2398
- },
2399
- {
2400
- id: "product-gen-107-deku-figure",
2401
- title: "MHA Deku Full Cowling 100% 1/7",
2402
- cat: "category-laptops-computers-electronics",
2403
- sub: "MHA Figures",
2404
- brand: "Kotobukiya",
2405
- price: 8990,
2406
- stock: 12,
2407
- seller: FV,
2408
- tags: ["my-hero-academia", "deku"],
2409
- feat: false,
2410
- days: 32,
2411
- },
2412
- {
2413
- id: "product-gen-108-law-figure",
2414
- title: "Beyblade Trafalgar Law Room 1/7",
2415
- cat: "category-sports-outdoors",
2416
- sub: "OP Figures",
2417
- brand: "Takara Tomy",
2418
- price: 9490,
2419
- stock: 14,
2420
- seller: OS,
2421
- tags: ["one-piece", "law"],
2422
- feat: false,
2423
- days: 28,
2424
- },
2425
- {
2426
- id: "product-gen-109-megumin-figure",
2427
- title: "KonoSuba Megumin Explosion 1/7",
2428
- cat: "category-audio-electronics",
2429
- sub: "Isekai Figures",
2430
- brand: "Good Smile Company",
2431
- price: 9990,
2432
- stock: 16,
2433
- seller: FV,
2434
- tags: ["konosuba", "megumin"],
2435
- feat: false,
2436
- days: 24,
2437
- },
2438
- {
2439
- id: "product-gen-110-erza-figure",
2440
- title: "Fairy Tail Erza Scarlet Requip 1/7",
2441
- cat: "category-womens-fashion-fashion",
2442
- sub: "FT Figures",
2443
- brand: "Takara Tomy",
2444
- price: 7490,
2445
- stock: 18,
2446
- seller: FV,
2447
- tags: ["fairy-tail", "erza"],
2448
- feat: false,
2449
- days: 20,
2450
- },
2451
- {
2452
- id: "product-gen-111-senku-figure",
2453
- title: "Dr. Stone Senku Ishigami 1/8",
2454
- cat: "category-home-kitchen",
2455
- sub: "Sci-Fi Figures",
2456
- brand: "Kotobukiya",
2457
- price: 6490,
2458
- stock: 20,
2459
- seller: OS,
2460
- tags: ["dr-stone", "senku"],
2461
- feat: false,
2462
- days: 17,
2463
- },
2464
- {
2465
- id: "product-gen-112-jotaro-figure",
2466
- title: "JoJo Part 3 Jotaro Kujo Star Platinum 1/6",
2467
- cat: "category-audio-electronics",
2468
- sub: "JoJo Figures",
2469
- brand: "Takara Tomy",
2470
- price: 13990,
2471
- stock: 10,
2472
- seller: FV,
2473
- tags: ["jojo", "jotaro", "star-platinum"],
2474
- feat: true,
2475
- days: 14,
2476
- },
2477
- ];
2478
- const generatedProducts = quickItems.map((item) => ({
2479
- id: item.id,
2480
- title: item.title,
2481
- description: `${item.title}. Premium collectible from ${item.brand}.`,
2482
- category: item.cat,
2483
- subcategory: item.sub,
2484
- brand: item.brand,
2485
- price: item.price,
2486
- currency: _CURRENCY,
2487
- stockQuantity: item.stock,
2488
- availableQuantity: Math.max(item.stock - 2, 0),
2489
- mainImage: `https://picsum.photos/seed/${item.id}/800/800`,
2490
- images: [`https://picsum.photos/seed/${item.id}/1200/800`],
2491
- status: "published",
2492
- ...item.seller,
2493
- featured: item.feat,
2494
- tags: item.tags,
2495
- specifications: [{ name: "Material", value: "PVC + ABS" }],
2496
- features: ["Detailed sculpt", "Display base included"],
2497
- shippingInfo: "Ships in 2-4 days.",
2498
- returnPolicy: "7-day returns.",
2499
- isAuction: false,
2500
- isPromoted: false,
2501
- createdAt: daysAgo(item.days),
2502
- updatedAt: daysAgo(1),
2503
- }));
2504
- // --- Final export (101 products) --------------------------------------------
2505
- export const productsSeedData = [
2506
- ...regularProducts,
2507
- ...outOfStockProducts,
2508
- ...liveAuctions,
2509
- ...endedAuctions,
2510
- ...preOrders,
2511
- ...draftProducts,
2512
- ...discontinuedAndSold,
2513
- ...generatedProducts,
2514
- ]
2515
- .map(withRichTextDescription)
2516
- .map((p) => {
2517
- const rawSlug = p.slug ?? slugify(p.title ?? p.id ?? "");
2518
- const typePrefix = p.isPreOrder ? "preorder" : p.isAuction ? "auction" : "product";
2519
- const slug = rawSlug.startsWith(`${typePrefix}-`) ? rawSlug : `${typePrefix}-${rawSlug}`;
2520
- const isSimplePublished = !p.isAuction &&
2521
- !p.isPreOrder &&
2522
- p.status === "published" &&
2523
- (p.availableQuantity ?? p.stockQuantity ?? 1) > 0;
2524
- return {
2525
- ...p,
2526
- id: slug,
2527
- slug,
2528
- allowOffers: isSimplePublished ? true : (p.allowOffers ?? false),
2529
- };
2530
- });