@mohasinac/appkit 2.3.2 → 2.4.1

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 (677) hide show
  1. package/dist/client.d.ts +48 -12
  2. package/dist/client.js +25 -6
  3. package/dist/constants/api-endpoints.d.ts +380 -22
  4. package/dist/constants/api-endpoints.js +66 -13
  5. package/dist/constants/index.d.ts +1 -1
  6. package/dist/constants/index.js +1 -1
  7. package/dist/core/hooks/useSyncManager.d.ts +1 -0
  8. package/dist/core/hooks/useSyncManager.js +83 -0
  9. package/dist/core/integration-keys.d.ts +4 -0
  10. package/dist/core/integration-keys.js +8 -0
  11. package/dist/features/about/components/FAQPageView.js +9 -11
  12. package/dist/features/about/components/PolicyPageView.js +32 -11
  13. package/dist/features/about/components/PublicProfileView.js +77 -11
  14. package/dist/features/account/components/AddressesIndexListing.js +63 -38
  15. package/dist/features/account/components/UserOffersPanel.d.ts +8 -0
  16. package/dist/features/account/components/UserOffersPanel.js +81 -0
  17. package/dist/features/account/components/UserSettingsView.d.ts +2 -1
  18. package/dist/features/account/components/UserSettingsView.js +2 -1
  19. package/dist/features/account/components/UserSidebar.d.ts +6 -1
  20. package/dist/features/account/components/UserSidebar.js +48 -42
  21. package/dist/features/account/components/index.d.ts +2 -0
  22. package/dist/features/account/components/index.js +1 -0
  23. package/dist/features/admin/actions/admin-actions.d.ts +1 -1
  24. package/dist/features/admin/actions/admin-actions.js +13 -3
  25. package/dist/features/admin/components/AdminAdEditorView.js +6 -7
  26. package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +4 -0
  27. package/dist/features/admin/components/AdminAllEventEntriesView.js +102 -0
  28. package/dist/features/admin/components/AdminBidsView.js +94 -8
  29. package/dist/features/admin/components/AdminBlogEditorView.d.ts +7 -0
  30. package/dist/features/admin/components/AdminBlogEditorView.js +162 -0
  31. package/dist/features/admin/components/AdminBlogView.d.ts +4 -1
  32. package/dist/features/admin/components/AdminBlogView.js +61 -31
  33. package/dist/features/admin/components/AdminBrandEditorView.d.ts +7 -0
  34. package/dist/features/admin/components/AdminBrandEditorView.js +104 -0
  35. package/dist/features/admin/components/AdminBrandsView.d.ts +4 -0
  36. package/dist/features/admin/components/AdminBrandsView.js +76 -0
  37. package/dist/features/admin/components/AdminCarouselEditorView.d.ts +8 -0
  38. package/dist/features/admin/components/AdminCarouselEditorView.js +204 -0
  39. package/dist/features/admin/components/AdminCarouselView.js +153 -34
  40. package/dist/features/admin/components/AdminCartsView.d.ts +4 -0
  41. package/dist/features/admin/components/AdminCartsView.js +82 -0
  42. package/dist/features/admin/components/AdminCategoriesView.d.ts +4 -1
  43. package/dist/features/admin/components/AdminCategoriesView.js +66 -48
  44. package/dist/features/admin/components/AdminCategoryEditorView.d.ts +7 -0
  45. package/dist/features/admin/components/AdminCategoryEditorView.js +115 -0
  46. package/dist/features/admin/components/AdminContactEditorView.d.ts +11 -0
  47. package/dist/features/admin/components/AdminContactEditorView.js +32 -0
  48. package/dist/features/admin/components/AdminContactView.js +111 -20
  49. package/dist/features/admin/components/AdminCouponEditorView.d.ts +7 -0
  50. package/dist/features/admin/components/AdminCouponEditorView.js +179 -0
  51. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -1
  52. package/dist/features/admin/components/AdminCouponsView.js +57 -9
  53. package/dist/features/admin/components/AdminDashboardView.js +3 -0
  54. package/dist/features/admin/components/AdminFaqEditorView.d.ts +7 -0
  55. package/dist/features/admin/components/AdminFaqEditorView.js +128 -0
  56. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -1
  57. package/dist/features/admin/components/AdminFaqsView.js +55 -23
  58. package/dist/features/admin/components/AdminFeatureFlagsView.js +33 -24
  59. package/dist/features/admin/components/AdminListingScaffold.d.ts +7 -1
  60. package/dist/features/admin/components/AdminListingScaffold.js +2 -2
  61. package/dist/features/admin/components/AdminMediaView.js +18 -8
  62. package/dist/features/admin/components/AdminNavEditorView.d.ts +20 -0
  63. package/dist/features/admin/components/AdminNavEditorView.js +84 -0
  64. package/dist/features/admin/components/AdminNavigationView.d.ts +1 -7
  65. package/dist/features/admin/components/AdminNavigationView.js +84 -72
  66. package/dist/features/admin/components/AdminNewsletterView.js +102 -20
  67. package/dist/features/admin/components/AdminNotificationsView.d.ts +4 -0
  68. package/dist/features/admin/components/AdminNotificationsView.js +119 -0
  69. package/dist/features/admin/components/AdminOrderEditorView.d.ts +8 -0
  70. package/dist/features/admin/components/AdminOrderEditorView.js +74 -0
  71. package/dist/features/admin/components/AdminOrdersView.js +64 -8
  72. package/dist/features/admin/components/AdminPayoutsView.js +122 -13
  73. package/dist/features/admin/components/AdminProductEditorView.d.ts +7 -0
  74. package/dist/features/admin/components/AdminProductEditorView.js +143 -0
  75. package/dist/features/admin/components/AdminProductsView.d.ts +4 -1
  76. package/dist/features/admin/components/AdminProductsView.js +119 -30
  77. package/dist/features/admin/components/AdminReturnRequestsView.d.ts +5 -0
  78. package/dist/features/admin/components/AdminReturnRequestsView.js +101 -0
  79. package/dist/features/admin/components/AdminReviewsView.js +138 -28
  80. package/dist/features/admin/components/AdminSectionsView.js +361 -472
  81. package/dist/features/admin/components/AdminSessionsView.d.ts +4 -0
  82. package/dist/features/admin/components/AdminSessionsView.js +119 -0
  83. package/dist/features/admin/components/AdminSidebar.d.ts +18 -3
  84. package/dist/features/admin/components/AdminSidebar.js +51 -4
  85. package/dist/features/admin/components/AdminSiteSettingsView.d.ts +7 -0
  86. package/dist/features/admin/components/AdminSiteSettingsView.js +319 -0
  87. package/dist/features/admin/components/AdminStoreAddressesView.d.ts +5 -0
  88. package/dist/features/admin/components/AdminStoreAddressesView.js +52 -0
  89. package/dist/features/admin/components/AdminStoreEditorView.d.ts +9 -0
  90. package/dist/features/admin/components/AdminStoreEditorView.js +55 -0
  91. package/dist/features/admin/components/AdminStoresView.js +62 -20
  92. package/dist/features/admin/components/AdminUserEditorView.d.ts +10 -0
  93. package/dist/features/admin/components/AdminUserEditorView.js +72 -0
  94. package/dist/features/admin/components/AdminUsersView.js +70 -36
  95. package/dist/features/admin/components/AdminWishlistsView.d.ts +4 -0
  96. package/dist/features/admin/components/AdminWishlistsView.js +53 -0
  97. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +5 -0
  98. package/dist/features/admin/components/BrandQuickCreateForm.js +36 -0
  99. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +5 -0
  100. package/dist/features/admin/components/CategoryQuickCreateForm.js +35 -0
  101. package/dist/features/admin/components/DataTable.d.ts +4 -2
  102. package/dist/features/admin/components/DataTable.js +26 -6
  103. package/dist/features/admin/components/index.d.ts +47 -1
  104. package/dist/features/admin/components/index.js +23 -0
  105. package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +48 -0
  106. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +653 -0
  107. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +298 -0
  108. package/dist/features/admin/components/sections/adminSectionsTypes.js +278 -0
  109. package/dist/features/admin/schemas/firestore.d.ts +26 -0
  110. package/dist/features/admin/schemas/firestore.js +1 -0
  111. package/dist/features/admin/types/product.types.d.ts +2 -3
  112. package/dist/features/auctions/actions/bid-actions.js +6 -2
  113. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +3 -1
  114. package/dist/features/auctions/components/AuctionDetailPageView.js +38 -12
  115. package/dist/features/auctions/components/AuctionFilters.d.ts +3 -1
  116. package/dist/features/auctions/components/AuctionFilters.js +6 -2
  117. package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +7 -0
  118. package/dist/features/auctions/components/CollapsibleBidHistory.js +8 -0
  119. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +4 -0
  120. package/dist/features/auctions/components/MarketplaceAuctionCard.js +43 -9
  121. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -0
  122. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +18 -0
  123. package/dist/features/auctions/components/PlaceBidFormClient.js +33 -0
  124. package/dist/features/auctions/hooks/useAuctions.d.ts +1 -0
  125. package/dist/features/auctions/hooks/useAuctions.js +1 -0
  126. package/dist/features/auctions/schemas/index.d.ts +22 -12
  127. package/dist/features/auth/actions/profile-actions.d.ts +5 -3
  128. package/dist/features/auth/actions/profile-actions.js +30 -11
  129. package/dist/features/auth/auth-helpers.js +1 -0
  130. package/dist/features/auth/components/LoginForm.js +2 -1
  131. package/dist/features/auth/hooks/useAuth.js +16 -4
  132. package/dist/features/auth/permissions/constants.d.ts +63 -0
  133. package/dist/features/auth/permissions/constants.js +323 -0
  134. package/dist/features/auth/schemas/firestore.d.ts +20 -0
  135. package/dist/features/auth/schemas/index.d.ts +4 -4
  136. package/dist/features/auth/schemas/index.js +3 -2
  137. package/dist/features/auth/types/index.d.ts +1 -1
  138. package/dist/features/before-after/schemas/index.d.ts +2 -2
  139. package/dist/features/blog/actions/blog-actions.d.ts +15 -15
  140. package/dist/features/blog/components/BlogFilters.js +1 -1
  141. package/dist/features/blog/components/BlogIndexListing.js +57 -5
  142. package/dist/features/blog/components/BlogIndexPageView.js +14 -2
  143. package/dist/features/blog/components/BlogPostForm.js +6 -2
  144. package/dist/features/blog/components/BlogPostView.js +2 -1
  145. package/dist/features/blog/hooks/useBlog.d.ts +2 -0
  146. package/dist/features/blog/hooks/useBlog.js +2 -0
  147. package/dist/features/blog/schemas/index.d.ts +46 -12
  148. package/dist/features/brands/actions/brand-actions.d.ts +2 -0
  149. package/dist/features/brands/actions/brand-actions.js +5 -0
  150. package/dist/features/brands/index.d.ts +3 -0
  151. package/dist/features/brands/index.js +3 -0
  152. package/dist/features/brands/repository/brands.repository.d.ts +13 -0
  153. package/dist/features/brands/repository/brands.repository.js +60 -0
  154. package/dist/features/brands/schemas/index.d.ts +33 -0
  155. package/dist/features/brands/schemas/index.js +15 -0
  156. package/dist/features/brands/server.d.ts +7 -0
  157. package/dist/features/brands/server.js +7 -0
  158. package/dist/features/cart/actions/cart-actions.js +2 -2
  159. package/dist/features/cart/components/CartDrawer.d.ts +5 -1
  160. package/dist/features/cart/components/CartDrawer.js +3 -3
  161. package/dist/features/cart/hooks/useCartCount.d.ts +3 -2
  162. package/dist/features/cart/hooks/useCartCount.js +4 -2
  163. package/dist/features/cart/hooks/useGuestCartMerge.js +1 -1
  164. package/dist/features/cart/index.d.ts +1 -0
  165. package/dist/features/cart/index.js +1 -0
  166. package/dist/features/cart/repository/cart.repository.d.ts +5 -1
  167. package/dist/features/cart/repository/cart.repository.js +36 -5
  168. package/dist/features/cart/schemas/firestore.d.ts +25 -6
  169. package/dist/features/cart/schemas/firestore.js +2 -2
  170. package/dist/features/cart/schemas/index.d.ts +9 -9
  171. package/dist/features/cart/schemas/index.js +1 -1
  172. package/dist/features/cart/types/index.d.ts +1 -1
  173. package/dist/features/cart/utils/pending-ops.d.ts +33 -0
  174. package/dist/features/cart/utils/pending-ops.js +102 -0
  175. package/dist/features/categories/components/BrandDetailPageView.d.ts +4 -0
  176. package/dist/features/categories/components/BrandDetailPageView.js +54 -0
  177. package/dist/features/categories/components/BrandDetailTabs.d.ts +10 -0
  178. package/dist/features/categories/components/BrandDetailTabs.js +22 -0
  179. package/dist/features/categories/components/CategoriesIndexListing.d.ts +3 -1
  180. package/dist/features/categories/components/CategoriesIndexListing.js +83 -7
  181. package/dist/features/categories/components/CategoryDetailPageView.js +42 -21
  182. package/dist/features/categories/components/CategoryDetailTabs.d.ts +7 -1
  183. package/dist/features/categories/components/CategoryDetailTabs.js +12 -7
  184. package/dist/features/categories/components/CategoryFilters.js +1 -1
  185. package/dist/features/categories/components/CategoryForm.js +10 -4
  186. package/dist/features/categories/components/CategoryProductsListing.d.ts +4 -1
  187. package/dist/features/categories/components/CategoryProductsListing.js +34 -5
  188. package/dist/features/categories/components/ConcernCard.js +1 -1
  189. package/dist/features/categories/hooks/useCategories.js +2 -0
  190. package/dist/features/categories/repository/categories.repository.js +2 -3
  191. package/dist/features/categories/schemas/firestore.d.ts +23 -2
  192. package/dist/features/categories/schemas/firestore.js +8 -0
  193. package/dist/features/categories/schemas/index.d.ts +8 -8
  194. package/dist/features/categories/types/index.d.ts +1 -0
  195. package/dist/features/collections/schemas/index.d.ts +2 -2
  196. package/dist/features/events/components/AdminEventEditorView.js +2 -2
  197. package/dist/features/events/components/AdminEventsView.d.ts +4 -1
  198. package/dist/features/events/components/AdminEventsView.js +64 -38
  199. package/dist/features/events/components/EventCard.js +1 -1
  200. package/dist/features/events/components/EventFilters.js +1 -1
  201. package/dist/features/events/components/EventPollWidget.d.ts +12 -0
  202. package/dist/features/events/components/EventPollWidget.js +62 -0
  203. package/dist/features/events/components/EventsIndexListing.js +57 -5
  204. package/dist/features/events/components/EventsListPageView.js +1 -1
  205. package/dist/features/events/components/index.d.ts +2 -0
  206. package/dist/features/events/components/index.js +1 -0
  207. package/dist/features/events/hooks/useEvents.d.ts +1 -0
  208. package/dist/features/events/hooks/useEvents.js +1 -0
  209. package/dist/features/events/repository/events.repository.js +3 -0
  210. package/dist/features/events/schemas/firestore.d.ts +1 -0
  211. package/dist/features/events/schemas/index.d.ts +44 -0
  212. package/dist/features/events/types/index.d.ts +2 -0
  213. package/dist/features/faq/actions/faq-actions.d.ts +16 -16
  214. package/dist/features/faq/hooks/useFaqList.js +1 -1
  215. package/dist/features/faq/schemas/firestore.d.ts +2 -2
  216. package/dist/features/faq/schemas/firestore.js +2 -1
  217. package/dist/features/faq/schemas/index.d.ts +4 -4
  218. package/dist/features/filters/FilterFacetSection.d.ts +1 -0
  219. package/dist/features/filters/FilterFacetSection.js +13 -1
  220. package/dist/features/filters/SwitchFilter.js +1 -1
  221. package/dist/features/grouped/schemas/firestore.d.ts +32 -0
  222. package/dist/features/grouped/schemas/firestore.js +19 -0
  223. package/dist/features/homepage/components/AdSlot.d.ts +1 -3
  224. package/dist/features/homepage/components/AdSlot.js +15 -14
  225. package/dist/features/homepage/components/BlogArticlesSection.d.ts +3 -1
  226. package/dist/features/homepage/components/BlogArticlesSection.js +2 -2
  227. package/dist/features/homepage/components/BrandsSection.d.ts +3 -1
  228. package/dist/features/homepage/components/BrandsSection.js +4 -3
  229. package/dist/features/homepage/components/CustomCardsSection.d.ts +3 -0
  230. package/dist/features/homepage/components/CustomCardsSection.js +76 -0
  231. package/dist/features/homepage/components/EventsSection.d.ts +3 -1
  232. package/dist/features/homepage/components/EventsSection.js +2 -2
  233. package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +4 -1
  234. package/dist/features/homepage/components/FeaturedAuctionsSection.js +2 -2
  235. package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +4 -1
  236. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +2 -2
  237. package/dist/features/homepage/components/FeaturedProductsSection.d.ts +4 -1
  238. package/dist/features/homepage/components/FeaturedProductsSection.js +8 -3
  239. package/dist/features/homepage/components/FeaturedStoresSection.d.ts +3 -1
  240. package/dist/features/homepage/components/FeaturedStoresSection.js +2 -2
  241. package/dist/features/homepage/components/GoogleReviewsSection.d.ts +3 -0
  242. package/dist/features/homepage/components/GoogleReviewsSection.js +65 -0
  243. package/dist/features/homepage/components/HeroCarousel.js +128 -84
  244. package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +2 -20
  245. package/dist/features/homepage/components/MarketplaceHomepageView.js +73 -230
  246. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
  247. package/dist/features/homepage/components/SectionCarousel.js +2 -0
  248. package/dist/features/homepage/components/ShopByCategorySection.d.ts +3 -1
  249. package/dist/features/homepage/components/ShopByCategorySection.js +8 -4
  250. package/dist/features/homepage/components/SocialFeedSection.d.ts +3 -0
  251. package/dist/features/homepage/components/SocialFeedSection.js +86 -0
  252. package/dist/features/homepage/components/SocialPostCard.d.ts +7 -0
  253. package/dist/features/homepage/components/SocialPostCard.js +39 -0
  254. package/dist/features/homepage/components/StatsCounterSection.js +1 -1
  255. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  256. package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
  257. package/dist/features/homepage/hooks/useActiveAd.d.ts +23 -0
  258. package/dist/features/homepage/hooks/useActiveAd.js +20 -0
  259. package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -0
  260. package/dist/features/homepage/hooks/useBlogArticles.js +10 -0
  261. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +4 -1
  262. package/dist/features/homepage/hooks/useFeaturedAuctions.js +8 -4
  263. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +4 -1
  264. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +8 -4
  265. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -0
  266. package/dist/features/homepage/hooks/useFeaturedProducts.js +6 -3
  267. package/dist/features/homepage/hooks/useFeaturedStores.d.ts +3 -1
  268. package/dist/features/homepage/hooks/useFeaturedStores.js +2 -1
  269. package/dist/features/homepage/hooks/useHomepageEvents.d.ts +3 -1
  270. package/dist/features/homepage/hooks/useHomepageEvents.js +2 -1
  271. package/dist/features/homepage/hooks/useTopBrands.d.ts +3 -1
  272. package/dist/features/homepage/hooks/useTopBrands.js +2 -1
  273. package/dist/features/homepage/index.d.ts +2 -0
  274. package/dist/features/homepage/index.js +1 -0
  275. package/dist/features/homepage/lib/google-reviews-fetcher.d.ts +14 -0
  276. package/dist/features/homepage/lib/google-reviews-fetcher.js +27 -0
  277. package/dist/features/homepage/lib/live-stats.d.ts +14 -0
  278. package/dist/features/homepage/lib/live-stats.js +62 -0
  279. package/dist/features/homepage/lib/section-defaults.d.ts +11 -0
  280. package/dist/features/homepage/lib/section-defaults.js +45 -0
  281. package/dist/features/homepage/lib/section-helpers.d.ts +5 -0
  282. package/dist/features/homepage/lib/section-helpers.js +25 -0
  283. package/dist/features/homepage/lib/section-renderer.d.ts +33 -0
  284. package/dist/features/homepage/lib/section-renderer.js +164 -0
  285. package/dist/features/homepage/lib/social-feed-fetcher.d.ts +5 -0
  286. package/dist/features/homepage/lib/social-feed-fetcher.js +193 -0
  287. package/dist/features/homepage/schemas/firestore.d.ts +180 -29
  288. package/dist/features/homepage/schemas/firestore.js +5 -0
  289. package/dist/features/homepage/types/index.d.ts +48 -19
  290. package/dist/features/layout/AppLayoutShell.d.ts +6 -1
  291. package/dist/features/layout/AppLayoutShell.js +25 -9
  292. package/dist/features/layout/BottomActions.js +1 -1
  293. package/dist/features/layout/BottomNavbar.d.ts +15 -1
  294. package/dist/features/layout/BottomNavbar.js +8 -2
  295. package/dist/features/layout/FooterLayout.d.ts +7 -1
  296. package/dist/features/layout/FooterLayout.js +3 -3
  297. package/dist/features/layout/ListingLayout.js +2 -2
  298. package/dist/features/layout/MainNavbar.d.ts +6 -14
  299. package/dist/features/layout/MainNavbar.js +4 -16
  300. package/dist/features/layout/NavItem.js +1 -1
  301. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  302. package/dist/features/layout/NavbarLayout.js +5 -5
  303. package/dist/features/layout/TitleBar.d.ts +4 -2
  304. package/dist/features/layout/TitleBar.js +5 -3
  305. package/dist/features/layout/TitleBarLayout.d.ts +3 -1
  306. package/dist/features/layout/TitleBarLayout.js +2 -2
  307. package/dist/features/layout/index.d.ts +1 -1
  308. package/dist/features/media/MediaPickerModal.d.ts +30 -0
  309. package/dist/features/media/MediaPickerModal.js +72 -0
  310. package/dist/features/media/index.d.ts +3 -1
  311. package/dist/features/media/index.js +1 -0
  312. package/dist/features/media/types/index.d.ts +12 -0
  313. package/dist/features/media/types/index.js +4 -2
  314. package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
  315. package/dist/features/media/upload/MediaUploadField.js +56 -3
  316. package/dist/features/messages/schemas/firestore.d.ts +36 -0
  317. package/dist/features/messages/schemas/firestore.js +16 -0
  318. package/dist/features/orders/repository/orders.repository.d.ts +2 -2
  319. package/dist/features/orders/repository/orders.repository.js +2 -2
  320. package/dist/features/orders/schemas/firestore.d.ts +17 -4
  321. package/dist/features/orders/schemas/firestore.js +2 -2
  322. package/dist/features/orders/schemas/index.d.ts +18 -18
  323. package/dist/features/orders/schemas/index.js +3 -3
  324. package/dist/features/orders/types/index.d.ts +1 -1
  325. package/dist/features/orders/utils/order-splitter.d.ts +1 -1
  326. package/dist/features/orders/utils/order-splitter.js +2 -2
  327. package/dist/features/payments/repository/payout.repository.d.ts +4 -4
  328. package/dist/features/payments/repository/payout.repository.js +7 -7
  329. package/dist/features/payments/schemas/firestore.d.ts +6 -6
  330. package/dist/features/payments/schemas/firestore.js +6 -6
  331. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +11 -10
  332. package/dist/features/pre-orders/components/PreOrderActionsClient.d.ts +11 -0
  333. package/dist/features/pre-orders/components/PreOrderActionsClient.js +28 -0
  334. package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +2 -1
  335. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +27 -9
  336. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +3 -1
  337. package/dist/features/pre-orders/components/PreOrderFilters.js +9 -6
  338. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +3 -1
  339. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +132 -36
  340. package/dist/features/pre-orders/components/PreOrdersListView.js +3 -3
  341. package/dist/features/pre-orders/components/PreorderCard.js +1 -1
  342. package/dist/features/pre-orders/schemas/index.d.ts +10 -0
  343. package/dist/features/products/actions/product-actions.d.ts +2 -2
  344. package/dist/features/products/actions/product-actions.js +5 -5
  345. package/dist/features/products/api/[id]/route.js +5 -2
  346. package/dist/features/products/api/route.js +10 -14
  347. package/dist/features/products/columns/productTableColumns.js +2 -2
  348. package/dist/features/products/components/AuctionDetailView.d.ts +2 -1
  349. package/dist/features/products/components/AuctionDetailView.js +2 -2
  350. package/dist/features/products/components/AuctionsIndexListing.d.ts +3 -1
  351. package/dist/features/products/components/AuctionsIndexListing.js +93 -31
  352. package/dist/features/products/components/BidHistory.d.ts +2 -1
  353. package/dist/features/products/components/BidHistory.js +18 -2
  354. package/dist/features/products/components/MakeOfferButton.d.ts +10 -0
  355. package/dist/features/products/components/MakeOfferButton.js +68 -0
  356. package/dist/features/products/components/ProductDetailPageView.d.ts +11 -1
  357. package/dist/features/products/components/ProductDetailPageView.js +27 -8
  358. package/dist/features/products/components/ProductFilters.d.ts +7 -1
  359. package/dist/features/products/components/ProductFilters.js +4 -2
  360. package/dist/features/products/components/ProductForm.d.ts +19 -1
  361. package/dist/features/products/components/ProductForm.js +24 -6
  362. package/dist/features/products/components/ProductGrid.d.ts +10 -2
  363. package/dist/features/products/components/ProductGrid.js +76 -29
  364. package/dist/features/products/components/ProductsIndexListing.js +131 -45
  365. package/dist/features/products/components/RelatedProductsCarousel.js +1 -1
  366. package/dist/features/products/components/ShareButton.d.ts +7 -0
  367. package/dist/features/products/components/ShareButton.js +22 -0
  368. package/dist/features/products/components/index.d.ts +2 -0
  369. package/dist/features/products/components/index.js +1 -0
  370. package/dist/features/products/hooks/useProducts.d.ts +7 -0
  371. package/dist/features/products/hooks/useProducts.js +6 -4
  372. package/dist/features/products/repository/products.repository.d.ts +4 -8
  373. package/dist/features/products/repository/products.repository.js +17 -50
  374. package/dist/features/products/schemas/firestore.d.ts +11 -9
  375. package/dist/features/products/schemas/firestore.js +11 -3
  376. package/dist/features/products/schemas/index.d.ts +51 -50
  377. package/dist/features/products/schemas/index.js +2 -5
  378. package/dist/features/products/types/index.d.ts +13 -5
  379. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  380. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  381. package/dist/features/promotions/actions/seller-coupon-actions.js +11 -6
  382. package/dist/features/promotions/api/route.js +3 -3
  383. package/dist/features/promotions/components/CouponCard.js +16 -7
  384. package/dist/features/promotions/components/CouponsIndexListing.js +3 -9
  385. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  386. package/dist/features/promotions/hooks/usePromotions.js +2 -2
  387. package/dist/features/promotions/repository/coupons.repository.d.ts +21 -15
  388. package/dist/features/promotions/repository/coupons.repository.js +97 -125
  389. package/dist/features/promotions/schemas/firestore.d.ts +31 -2
  390. package/dist/features/promotions/schemas/firestore.js +29 -0
  391. package/dist/features/promotions/schemas/index.d.ts +9 -12
  392. package/dist/features/promotions/schemas/index.js +1 -2
  393. package/dist/features/promotions/types/index.d.ts +1 -2
  394. package/dist/features/reviews/actions/review-actions.js +3 -2
  395. package/dist/features/reviews/components/ReviewDetailPageView.js +5 -9
  396. package/dist/features/reviews/components/ReviewFilters.js +1 -1
  397. package/dist/features/reviews/components/ReviewsIndexListing.js +58 -7
  398. package/dist/features/reviews/components/ReviewsList.js +2 -2
  399. package/dist/features/reviews/hooks/useReviews.d.ts +1 -0
  400. package/dist/features/reviews/hooks/useReviews.js +2 -1
  401. package/dist/features/reviews/repository/reviews.repository.d.ts +9 -4
  402. package/dist/features/reviews/repository/reviews.repository.js +18 -7
  403. package/dist/features/reviews/schemas/firestore.d.ts +5 -2
  404. package/dist/features/reviews/schemas/firestore.js +1 -0
  405. package/dist/features/reviews/schemas/index.d.ts +19 -16
  406. package/dist/features/reviews/schemas/index.js +3 -2
  407. package/dist/features/reviews/types/index.d.ts +3 -2
  408. package/dist/features/scams/actions/scam-actions.d.ts +29 -0
  409. package/dist/features/scams/actions/scam-actions.js +62 -0
  410. package/dist/features/scams/components/ScamProfileView.d.ts +10 -0
  411. package/dist/features/scams/components/ScamProfileView.js +51 -0
  412. package/dist/features/scams/components/ScamRegistryView.d.ts +6 -0
  413. package/dist/features/scams/components/ScamRegistryView.js +41 -0
  414. package/dist/features/scams/components/index.d.ts +4 -0
  415. package/dist/features/scams/components/index.js +2 -0
  416. package/dist/features/scams/constants/scam-types.d.ts +38 -0
  417. package/dist/features/scams/constants/scam-types.js +443 -0
  418. package/dist/features/scams/repository/scammer.repository.d.ts +67 -0
  419. package/dist/features/scams/repository/scammer.repository.js +160 -0
  420. package/dist/features/scams/schemas/firestore.d.ts +362 -0
  421. package/dist/features/scams/schemas/firestore.js +233 -0
  422. package/dist/features/search/components/Search.d.ts +12 -2
  423. package/dist/features/search/components/Search.js +26 -7
  424. package/dist/features/search/components/index.d.ts +1 -1
  425. package/dist/features/search/hooks/useNavSuggestions.d.ts +1 -1
  426. package/dist/features/search/hooks/useNavSuggestions.js +2 -2
  427. package/dist/features/search/schemas/index.d.ts +7 -7
  428. package/dist/features/seller/actions/offer-actions.js +52 -36
  429. package/dist/features/seller/actions/seller-actions.js +19 -13
  430. package/dist/features/seller/api/products/route.js +9 -4
  431. package/dist/features/seller/components/SellerAddressesView.d.ts +3 -12
  432. package/dist/features/seller/components/SellerAddressesView.js +144 -4
  433. package/dist/features/seller/components/SellerAuctionsView.js +58 -5
  434. package/dist/features/seller/components/SellerBidsView.d.ts +4 -0
  435. package/dist/features/seller/components/SellerBidsView.js +131 -0
  436. package/dist/features/seller/components/SellerCouponEditorView.d.ts +19 -0
  437. package/dist/features/seller/components/SellerCouponEditorView.js +67 -0
  438. package/dist/features/seller/components/SellerCouponsView.d.ts +5 -3
  439. package/dist/features/seller/components/SellerCouponsView.js +135 -13
  440. package/dist/features/seller/components/SellerCreateProductView.d.ts +4 -10
  441. package/dist/features/seller/components/SellerCreateProductView.js +4 -3
  442. package/dist/features/seller/components/SellerEditProductView.d.ts +4 -10
  443. package/dist/features/seller/components/SellerEditProductView.js +4 -3
  444. package/dist/features/seller/components/SellerOffersPanel.d.ts +20 -0
  445. package/dist/features/seller/components/SellerOffersPanel.js +138 -0
  446. package/dist/features/seller/components/SellerOffersView.js +56 -5
  447. package/dist/features/seller/components/SellerOrdersView.d.ts +2 -1
  448. package/dist/features/seller/components/SellerOrdersView.js +185 -16
  449. package/dist/features/seller/components/SellerPayoutRequestView.d.ts +7 -0
  450. package/dist/features/seller/components/SellerPayoutRequestView.js +63 -0
  451. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +3 -10
  452. package/dist/features/seller/components/SellerPayoutSettingsView.js +89 -3
  453. package/dist/features/seller/components/SellerPayoutsView.js +56 -5
  454. package/dist/features/seller/components/SellerProductShell.d.ts +68 -0
  455. package/dist/features/seller/components/SellerProductShell.js +179 -0
  456. package/dist/features/seller/components/SellerProductsView.d.ts +2 -3
  457. package/dist/features/seller/components/SellerProductsView.js +194 -18
  458. package/dist/features/seller/components/SellerReviewsView.d.ts +5 -0
  459. package/dist/features/seller/components/SellerReviewsView.js +100 -0
  460. package/dist/features/seller/components/SellerShippingView.d.ts +3 -11
  461. package/dist/features/seller/components/SellerShippingView.js +87 -3
  462. package/dist/features/seller/components/SellerSidebar.d.ts +11 -3
  463. package/dist/features/seller/components/SellerSidebar.js +52 -8
  464. package/dist/features/seller/components/SellerStorefrontView.d.ts +26 -11
  465. package/dist/features/seller/components/SellerStorefrontView.js +45 -7
  466. package/dist/features/seller/components/index.d.ts +16 -2
  467. package/dist/features/seller/components/index.js +7 -0
  468. package/dist/features/seller/hooks/useSellerListingData.d.ts +3 -1
  469. package/dist/features/seller/hooks/useSellerListingData.js +6 -4
  470. package/dist/features/seller/repository/offer.repository.d.ts +3 -3
  471. package/dist/features/seller/repository/offer.repository.js +6 -6
  472. package/dist/features/seller/schemas/firestore.d.ts +7 -7
  473. package/dist/features/seller/schemas/firestore.js +4 -4
  474. package/dist/features/seller/schemas/index.d.ts +16 -16
  475. package/dist/features/shell/FormShell.d.ts +29 -0
  476. package/dist/features/shell/FormShell.js +103 -0
  477. package/dist/features/shell/QuickFormDrawer.d.ts +29 -0
  478. package/dist/features/shell/QuickFormDrawer.js +117 -0
  479. package/dist/features/shell/StepForm.d.ts +44 -0
  480. package/dist/features/shell/StepForm.js +81 -0
  481. package/dist/features/shell/index.d.ts +6 -0
  482. package/dist/features/shell/index.js +3 -0
  483. package/dist/features/stores/actions/store-query-actions.js +3 -3
  484. package/dist/features/stores/api/[storeSlug]/auctions/route.js +1 -1
  485. package/dist/features/stores/api/[storeSlug]/products/route.js +1 -1
  486. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  487. package/dist/features/stores/components/InteractiveStoreCard.d.ts +2 -2
  488. package/dist/features/stores/components/InteractiveStoreCard.js +21 -7
  489. package/dist/features/stores/components/StoreAboutView.js +1 -1
  490. package/dist/features/stores/components/StoreAuctionsListing.d.ts +5 -2
  491. package/dist/features/stores/components/StoreAuctionsListing.js +81 -8
  492. package/dist/features/stores/components/StoreAuctionsPageView.js +8 -7
  493. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -0
  494. package/dist/features/stores/components/StoreDetailLayoutView.js +29 -5
  495. package/dist/features/stores/components/StoreHeader.js +2 -1
  496. package/dist/features/stores/components/StorePreOrdersListing.d.ts +4 -2
  497. package/dist/features/stores/components/StorePreOrdersListing.js +59 -7
  498. package/dist/features/stores/components/StorePreOrdersPageView.js +8 -7
  499. package/dist/features/stores/components/StoreProductsListing.d.ts +5 -2
  500. package/dist/features/stores/components/StoreProductsListing.js +97 -8
  501. package/dist/features/stores/components/StoreProductsPageView.js +8 -7
  502. package/dist/features/stores/components/StoreReviewsListing.js +2 -2
  503. package/dist/features/stores/components/StoresIndexListing.js +74 -11
  504. package/dist/features/stores/components/StoresListView.js +1 -1
  505. package/dist/features/stores/hooks/useStores.d.ts +1 -0
  506. package/dist/features/stores/hooks/useStores.js +1 -0
  507. package/dist/features/stores/schemas/firestore.d.ts +34 -0
  508. package/dist/features/stores/schemas/index.d.ts +8 -8
  509. package/dist/features/sublisting/schemas/firestore.d.ts +30 -0
  510. package/dist/features/sublisting/schemas/firestore.js +19 -0
  511. package/dist/features/support/schemas/firestore.d.ts +113 -0
  512. package/dist/features/support/schemas/firestore.js +95 -0
  513. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +5 -0
  514. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +143 -0
  515. package/dist/features/whatsapp-bot/components/index.d.ts +2 -0
  516. package/dist/features/whatsapp-bot/components/index.js +1 -0
  517. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +23 -1
  518. package/dist/features/whatsapp-bot/helpers/whatsapp.js +104 -0
  519. package/dist/features/whatsapp-bot/server.d.ts +1 -0
  520. package/dist/features/whatsapp-bot/server.js +1 -0
  521. package/dist/features/whatsapp-bot/types/index.d.ts +49 -0
  522. package/dist/features/wishlist/components/WishlistView.d.ts +0 -10
  523. package/dist/features/wishlist/components/WishlistView.js +13 -6
  524. package/dist/features/wishlist/hooks/useWishlist.js +2 -0
  525. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +11 -3
  526. package/dist/features/wishlist/hooks/useWishlistCount.js +89 -25
  527. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  528. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  529. package/dist/features/wishlist/types/index.d.ts +16 -0
  530. package/dist/http/api-handler.js +8 -1
  531. package/dist/index.d.ts +114 -16
  532. package/dist/index.js +136 -28
  533. package/dist/monitoring/server-logger.js +9 -3
  534. package/dist/next/routing/route-map.d.ts +120 -6
  535. package/dist/next/routing/route-map.js +53 -2
  536. package/dist/providers/db-firebase/realtime.d.ts +1 -1
  537. package/dist/react/contexts/SessionContext.js +17 -26
  538. package/dist/react/hooks/useBulkSelection.d.ts +7 -24
  539. package/dist/react/hooks/useBulkSelection.js +27 -34
  540. package/dist/react/hooks/useLongPress.d.ts +3 -16
  541. package/dist/react/hooks/useLongPress.js +6 -25
  542. package/dist/react/index.d.ts +1 -0
  543. package/dist/react/index.js +2 -0
  544. package/dist/repositories/index.d.ts +3 -0
  545. package/dist/repositories/index.js +2 -0
  546. package/dist/seed/actions/demo-seed-actions.d.ts +2 -2
  547. package/dist/seed/actions/demo-seed-actions.js +1 -1
  548. package/dist/seed/anime-figures-seed-data.d.ts +8 -0
  549. package/dist/seed/anime-figures-seed-data.js +1033 -0
  550. package/dist/seed/beyblade-seed-data.js +206 -24
  551. package/dist/seed/bids-seed-data.d.ts +4 -10
  552. package/dist/seed/bids-seed-data.js +365 -238
  553. package/dist/seed/blog-posts-seed-data.d.ts +3 -2
  554. package/dist/seed/blog-posts-seed-data.js +250 -511
  555. package/dist/seed/brands-seed-data.d.ts +7 -0
  556. package/dist/seed/brands-seed-data.js +410 -0
  557. package/dist/seed/carousel-slides-seed-data.d.ts +3 -2
  558. package/dist/seed/carousel-slides-seed-data.js +177 -216
  559. package/dist/seed/cart-seed-data.d.ts +9 -9
  560. package/dist/seed/cart-seed-data.js +73 -73
  561. package/dist/seed/categories-seed-data.d.ts +4 -2
  562. package/dist/seed/categories-seed-data.js +720 -879
  563. package/dist/seed/conversations-seed-data.d.ts +8 -0
  564. package/dist/seed/conversations-seed-data.js +388 -0
  565. package/dist/seed/cosplay-accessories-seed-data.d.ts +8 -0
  566. package/dist/seed/cosplay-accessories-seed-data.js +647 -0
  567. package/dist/seed/coupon-usage-seed-data.d.ts +25 -0
  568. package/dist/seed/coupon-usage-seed-data.js +69 -0
  569. package/dist/seed/coupons-seed-data.d.ts +6 -3
  570. package/dist/seed/coupons-seed-data.js +375 -3
  571. package/dist/seed/events-seed-data.d.ts +4 -2
  572. package/dist/seed/events-seed-data.js +128 -430
  573. package/dist/seed/factories/cart.factory.d.ts +0 -1
  574. package/dist/seed/factories/cart.factory.js +2 -2
  575. package/dist/seed/faq-seed-data.d.ts +11 -18
  576. package/dist/seed/faq-seed-data.js +786 -1817
  577. package/dist/seed/grouped-listings-seed-data.d.ts +8 -0
  578. package/dist/seed/grouped-listings-seed-data.js +201 -0
  579. package/dist/seed/homepage-sections-seed-data.d.ts +3 -13
  580. package/dist/seed/homepage-sections-seed-data.js +228 -252
  581. package/dist/seed/hot-wheels-seed-data.js +285 -38
  582. package/dist/seed/index.d.ts +12 -11
  583. package/dist/seed/index.js +10 -12
  584. package/dist/seed/letitrip-official-seed-data.d.ts +8 -0
  585. package/dist/seed/letitrip-official-seed-data.js +399 -0
  586. package/dist/seed/manifest.d.ts +15 -0
  587. package/dist/seed/manifest.js +140 -0
  588. package/dist/seed/notifications-seed-data.d.ts +4 -2
  589. package/dist/seed/notifications-seed-data.js +117 -440
  590. package/dist/seed/orders-seed-data.d.ts +4 -2
  591. package/dist/seed/orders-seed-data.js +1090 -521
  592. package/dist/seed/payouts-seed-data.d.ts +4 -2
  593. package/dist/seed/payouts-seed-data.js +522 -145
  594. package/dist/seed/pokemon-carousel-slides-seed-data.js +6 -1
  595. package/dist/seed/pokemon-categories-seed-data.js +81 -81
  596. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +1 -1
  597. package/dist/seed/pokemon-homepage-sections-seed-data.js +116 -23
  598. package/dist/seed/pokemon-products-seed-data.d.ts +1 -1
  599. package/dist/seed/pokemon-products-seed-data.js +83 -73
  600. package/dist/seed/pokemon-seed-bundle.d.ts +5 -1
  601. package/dist/seed/pokemon-seed-bundle.js +21 -2
  602. package/dist/seed/pokemon-stores-seed-data.js +85 -9
  603. package/dist/seed/pokemon-users-seed-data.js +107 -8
  604. package/dist/seed/products-auctions-seed-data.d.ts +10 -0
  605. package/dist/seed/products-auctions-seed-data.js +689 -0
  606. package/dist/seed/products-preorders-seed-data.d.ts +9 -0
  607. package/dist/seed/products-preorders-seed-data.js +483 -0
  608. package/dist/seed/products-seed-data.js +34 -13
  609. package/dist/seed/products-standard-seed-data.d.ts +8 -0
  610. package/dist/seed/products-standard-seed-data.js +4179 -0
  611. package/dist/seed/retro-gaming-seed-data.d.ts +8 -0
  612. package/dist/seed/retro-gaming-seed-data.js +801 -0
  613. package/dist/seed/reviews-seed-data.d.ts +4 -17
  614. package/dist/seed/reviews-seed-data.js +1043 -515
  615. package/dist/seed/scammers-seed-data.d.ts +17 -0
  616. package/dist/seed/scammers-seed-data.js +118 -0
  617. package/dist/seed/site-settings-seed-data.js +25 -2
  618. package/dist/seed/store-addresses-seed-data.js +188 -84
  619. package/dist/seed/stores-seed-data.d.ts +3 -9
  620. package/dist/seed/stores-seed-data.js +212 -102
  621. package/dist/seed/sublisting-categories-seed-data.d.ts +7 -0
  622. package/dist/seed/sublisting-categories-seed-data.js +315 -0
  623. package/dist/seed/transformers-seed-data.js +34 -14
  624. package/dist/seed/users-seed-data.d.ts +3 -2
  625. package/dist/seed/users-seed-data.js +531 -440
  626. package/dist/seed/wishlists-seed-data.js +13 -13
  627. package/dist/server.d.ts +9 -2
  628. package/dist/server.js +12 -4
  629. package/dist/tokens/tokens.css +76 -31
  630. package/dist/ui/components/Avatar.style.css +10 -12
  631. package/dist/ui/components/BaseListingCard.d.ts +8 -3
  632. package/dist/ui/components/BaseListingCard.js +17 -6
  633. package/dist/ui/components/BaseListingCard.style.css +3 -1
  634. package/dist/ui/components/BulkActionsBar.d.ts +16 -0
  635. package/dist/ui/components/BulkActionsBar.js +22 -0
  636. package/dist/ui/components/Button.style.css +23 -23
  637. package/dist/ui/components/Card.style.css +60 -62
  638. package/dist/ui/components/Checkbox.style.css +19 -21
  639. package/dist/ui/components/DashboardStatsCard.style.css +12 -14
  640. package/dist/ui/components/Drawer.style.css +18 -14
  641. package/dist/ui/components/Dropdown.style.css +25 -27
  642. package/dist/ui/components/EmptyState.style.css +2 -4
  643. package/dist/ui/components/HorizontalScroller.d.ts +3 -1
  644. package/dist/ui/components/HorizontalScroller.js +116 -21
  645. package/dist/ui/components/HorizontalScroller.style.css +2 -2
  646. package/dist/ui/components/ImageLightbox.d.ts +0 -9
  647. package/dist/ui/components/ImageLightbox.js +43 -9
  648. package/dist/ui/components/InlineCreateSelect.d.ts +38 -0
  649. package/dist/ui/components/InlineCreateSelect.js +70 -0
  650. package/dist/ui/components/ListingLayout.style.css +41 -77
  651. package/dist/ui/components/ListingToolbar.d.ts +54 -0
  652. package/dist/ui/components/ListingToolbar.js +34 -0
  653. package/dist/ui/components/Modal.style.css +14 -10
  654. package/dist/ui/components/PageLoader.d.ts +11 -0
  655. package/dist/ui/components/PageLoader.js +21 -0
  656. package/dist/ui/components/Radio.style.css +34 -36
  657. package/dist/ui/components/RichTextEditor.js +1 -1
  658. package/dist/ui/components/RowActionMenu.d.ts +1 -0
  659. package/dist/ui/components/RowActionMenu.js +4 -2
  660. package/dist/ui/components/SectionTabs.js +1 -1
  661. package/dist/ui/components/SectionTabs.style.css +1 -0
  662. package/dist/ui/components/SideModal.style.css +4 -8
  663. package/dist/ui/components/Slider.style.css +2 -4
  664. package/dist/ui/components/Tabs.style.css +8 -10
  665. package/dist/ui/components/Toast.style.css +22 -24
  666. package/dist/ui/components/Toggle.style.css +11 -13
  667. package/dist/ui/index.d.ts +9 -0
  668. package/dist/ui/index.js +5 -0
  669. package/dist/ui/rich-text/RichText.js +2 -1
  670. package/dist/ui/rich-text/RichText.style.css +292 -5
  671. package/dist/ui/rich-text/RichTextRenderer.d.ts +15 -0
  672. package/dist/ui/rich-text/RichTextRenderer.js +15 -0
  673. package/dist/utils/id-generators.d.ts +10 -0
  674. package/dist/utils/id-generators.js +12 -0
  675. package/dist/validation/schemas.d.ts +9 -9
  676. package/package.json +5 -1
  677. package/README.md +0 -116
@@ -1,657 +1,1185 @@
1
1
  /**
2
- * Reviews Seed Data — Pokémon Base Set 151 Theme
3
- *
4
- * 22 reviews written by Pokémon trainers (buyers) for Base Set TCG singles,
5
- * sealed products, and accessories sold by Misty, Lt. Surge, and Blaine.
6
- *
7
- * Seller IDs:
8
- * Misty → user-misty-water-gym-misty / store-mistys-water-cards
9
- * Surge → user-lt-surge-electric-surge / store-surges-electric-emporium
10
- * Blaine → user-blaine-fire-gym-blaine / store-blaines-fire-shoppe
11
- *
12
- * Buyer IDs:
13
- * ash → user-ash-ketchum-pallet-ash
14
- * gary → user-gary-oak-pallet-gary
15
- * brock → user-brock-pewter-brock
16
- * oak → user-prof-oak-pallet-oak
17
- * sabrina → user-sabrina-saffron-sabrina
18
- * erika → user-erika-celadon-erika
2
+ * Reviews Seed Data — LetItRip Collectibles Platform
3
+ * 15 reviews distributed across the 5 stores from P15.
4
+ * Uses buyer IDs from P15 and product IDs from P16/P17/P18.
5
+ * review- prefix, system-generated IDs (not slug-based per slug prefix table).
19
6
  */
20
7
  const NOW = new Date();
21
8
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
22
- // Card image helper (mirrors pokemon-products-seed-data.ts)
23
- const cardImg = (num) => `https://images.pokemontcg.io/base1/${num}_hires.png`;
24
- export const reviewsSeedData = [
25
- // ══════════════════════════════════════════════════════════════
26
- // APPROVED FEATURED (highest helpfulCount)
27
- // ══════════════════════════════════════════════════════════════
28
- // 1. Ash reviews the 1st-Ed Charizard auction win
29
- {
30
- id: "review-charizard-base1-4-ash-20260310",
31
- productId: "product-charizard-base1-4-holo-rare-fire-blaine-1",
32
- productTitle: "Charizard Base Set #4 Holo Rare (Near Mint)",
33
- sellerId: "user-blaine-fire-gym-blaine",
34
- userId: "user-ash-ketchum-pallet-ash",
35
- userName: "Ash Ketchum",
36
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png",
37
- rating: 5,
38
- title: "The crown jewel of my collection — absolutely perfect!",
39
- comment: "I've been searching for a Near Mint Charizard for years and Blaine's Fire Shoppe delivered beyond my expectations. " +
40
- "The card arrived in a rigid top-loader inside a bubble mailer with tracking — zero movement during transit. " +
41
- "Centering is near-perfect, holo surface is pristine with that iconic shimmer, and corners are sharp. " +
42
- "Blaine even included a thank-you note handwritten on a Pokémon postcard. " +
43
- "This is THE card that started it all and I finally have one worthy of my collection. Five stars without hesitation!",
44
- images: [cardImg(4)],
45
- status: "approved",
46
- helpfulCount: 87,
9
+ const SELLER_STORE = {
10
+ "user-aryan-kapoor": { storeId: "store-pokemon-palace", storeName: "Pokémon Palace" },
11
+ "user-nisha-reddy": { storeId: "store-cardgame-hub", storeName: "CardGame Hub" },
12
+ "user-vikram-mehta": { storeId: "store-diecast-depot", storeName: "Diecast Depot" },
13
+ "user-rohit-joshi": { storeId: "store-beyblade-arena", storeName: "Beyblade Arena" },
14
+ "user-admin-letitrip": { storeId: "store-letitrip-official", storeName: "LetItRip Official" },
15
+ "user-priya-singh": { storeId: "store-tokyo-toys-india", storeName: "Tokyo Toys India" },
16
+ "user-amit-sharma": { storeId: "store-gundam-galaxy", storeName: "Gundam Galaxy" },
17
+ };
18
+ const rawReviews = [
19
+ // ── store-pokemon-palace (4 reviews) ─────────────────────────────────────
20
+ {
21
+ id: "review-pokemon-151-box-rahul-001",
22
+ productId: "product-pokemon-151-booster-box",
23
+ productTitle: "Pokémon 151 Booster Box (Sealed)",
24
+ sellerId: "user-aryan-kapoor",
25
+ userId: "user-rahul-sharma",
26
+ userName: "Rahul Sharma",
27
+ rating: 5,
28
+ title: "Absolutely pristine sealed box perfect packaging",
29
+ comment: "Aryan packed this box like it was going to the moon. Double-boxed, foam corners, bubble wrap around the individual booster packs inside. The Pokémon 151 box arrived 100% sealed with no dents. Pulled a Mew ex SAR on my first pack — couldn't be happier. Will buy every new set from Pokémon Palace.",
30
+ status: "approved",
31
+ helpfulCount: 14,
47
32
  reportCount: 0,
48
33
  verified: true,
49
34
  featured: true,
50
- createdAt: daysAgo(52),
51
- updatedAt: daysAgo(52),
52
- approvedAt: daysAgo(52),
35
+ sellerReply: "Thank you so much, Rahul! Double-boxing is our standard for all sealed products — we know how precious these are. So glad the Mew ex SAR made your day! 🎉",
36
+ sellerRepliedAt: daysAgo(53),
37
+ createdAt: daysAgo(55),
38
+ updatedAt: daysAgo(53),
39
+ approvedAt: daysAgo(54),
53
40
  },
54
- // 2. Professor Oak reviews Mewtwo Holo — surge
55
41
  {
56
- id: "review-mewtwo-base1-10-oak-20260312",
57
- productId: "product-mewtwo-base1-10-holo-rare-psychic-surge-1",
58
- productTitle: "Mewtwo Base Set #10 Holo Rare (Near Mint)",
59
- sellerId: "user-lt-surge-electric-surge",
60
- userId: "user-prof-oak-pallet-oak",
61
- userName: "Professor Oak",
62
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/143.png",
42
+ id: "review-base-set-sealed-arjun-002",
43
+ productId: "product-pokemon-base-set-booster-sealed",
44
+ productTitle: "Pokémon Base Set Shadowless Booster Box (Sealed)",
45
+ sellerId: "user-aryan-kapoor",
46
+ userId: "user-arjun-singh",
47
+ userName: "Arjun Singh",
63
48
  rating: 5,
64
- title: "Scientifically the finest Mewtwo specimen I've catalogued",
65
- comment: "As a Pokémon researcher I have handled hundreds of Base Set cards. This Mewtwo Holo Rare from Surge's Emporium is " +
66
- "among the cleanest copies I have ever examined. Holo pattern is full and rich with no scratches, corners are NM+, " +
67
- "and the card was shipped in a penny sleeve, top-loader, and team bag — triple protection. " +
68
- "Surge responded to my pre-purchase grading questions within the hour. " +
69
- "For Psychic-type collectors: this is the one to own. The Genetic Pokémon belongs in every serious Pokédex binder.",
70
- images: [cardImg(10)],
49
+ title: "Genuine shadowless box, exactly as described",
50
+ comment: "This was a huge purchase for me — ₹89,999 is not nothing. I did video unboxing of the packaging for insurance purposes. The box is clearly genuine shadowless era (1999 print run visible on bottom), factory seal intact, no re-wrapping. Aryan provided provenance documentation (original purchase receipt from a US collector) without me even asking. Impeccable seller.",
71
51
  status: "approved",
72
- helpfulCount: 63,
52
+ helpfulCount: 32,
73
53
  reportCount: 0,
74
54
  verified: true,
75
55
  featured: true,
76
- createdAt: daysAgo(48),
77
- updatedAt: daysAgo(48),
78
- approvedAt: daysAgo(48),
56
+ sellerReply: "Arjun, this means the world to us. A Shadowless box is one of the rarest items we've ever handled and we treated it accordingly. Provenance documentation is always included for vintage lots — that's just our standard.",
57
+ sellerRepliedAt: daysAgo(40),
58
+ createdAt: daysAgo(42),
59
+ updatedAt: daysAgo(40),
60
+ approvedAt: daysAgo(41),
79
61
  },
80
- // 3. Gary Oak reviews Blastoise
81
62
  {
82
- id: "review-blastoise-base1-2-gary-20260315",
83
- productId: "product-blastoise-base1-2-holo-rare-water-misty-1",
84
- productTitle: "Blastoise Base Set #2 Holo Rare (Near Mint)",
85
- sellerId: "user-misty-water-gym-misty",
86
- userId: "user-gary-oak-pallet-gary",
87
- userName: "Gary Oak",
88
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/132.png",
89
- rating: 5,
90
- title: "Misty knows her Water cardsflawless Blastoise",
91
- comment: "Look, I don't give five stars easily, but Misty's Water Cards has earned it. " +
92
- "The Blastoise is everything described — near-mint centering, brilliant holo shimmer, and not a single whitened corner. " +
93
- "It shipped tracked in 24 hours and arrived two days later perfectly protected. " +
94
- "My collection is already better than Ash's and this card proves it. " +
95
- "Ordering the Gyarados next.",
96
- images: [cardImg(2)],
63
+ id: "review-pokemon-etb-priya-003",
64
+ productId: "product-pokemon-sv-etb",
65
+ productTitle: "Pokémon Scarlet & Violet Paldean Fates Elite Trainer Box",
66
+ sellerId: "user-aryan-kapoor",
67
+ userId: "user-priya-patel",
68
+ userName: "Priya Patel",
69
+ rating: 4,
70
+ title: "Great ETB, arrived safely — shipping was a bit slow",
71
+ comment: "The ETB was in perfect condition and sealed correctly. I pulled a Shiny Charizard ex which made my week! Shipping took 6 days which is on the longer end, but the packaging was excellent my only minor complaint. Pokémon Palace is definitely a go-to store.",
97
72
  status: "approved",
98
- helpfulCount: 54,
73
+ helpfulCount: 8,
99
74
  reportCount: 0,
100
75
  verified: true,
101
- featured: true,
102
- createdAt: daysAgo(44),
103
- updatedAt: daysAgo(44),
104
- approvedAt: daysAgo(44),
76
+ featured: false,
77
+ createdAt: daysAgo(28),
78
+ updatedAt: daysAgo(27),
79
+ approvedAt: daysAgo(27),
105
80
  },
106
- // 4. Sabrina reviews the sealed booster pack (Blaine)
107
81
  {
108
- id: "review-sealed-booster-sabrina-20260318",
109
- productId: "product-base-set-booster-pack-sealed-blaine-1",
110
- productTitle: "Pokémon Base Set Booster Pack (Sealed, Random Art)",
111
- sellerId: "user-blaine-fire-gym-blaine",
112
- userId: "user-sabrina-saffron-sabrina",
113
- userName: "Sabrina",
114
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/65.png",
82
+ id: "review-pikachu-plush-meera-004",
83
+ productId: "product-pokemon-pikachu-plush-8",
84
+ productTitle: "Pokémon Pikachu 8-inch Sitting Plush (Official Pokémon Center)",
85
+ sellerId: "user-aryan-kapoor",
86
+ userId: "user-meera-nair",
87
+ userName: "Meera Nair",
115
88
  rating: 5,
116
- title: "Authentic vintage sealed pack psychically verified genuine!",
117
- comment: "I can sense deception in sellers a mile away, and Blaine's aura is completely honest. " +
118
- "The sealed booster pack arrived in immaculate condition — factory seal intact, pack fresh and firm, " +
119
- "no signs of weighing or tampering. Blaine wrapped it in bubble wrap inside a rigid card box — " +
120
- "the pack couldn't shift even a millimetre. " +
121
- "I'm keeping it sealed as a long-term investment. Vintage sealed WOTC product at this quality is increasingly rare. " +
122
- "Highly recommend for serious collectors. Will be ordering more.",
123
- images: [],
89
+ title: "Adorable and authentictags intact, came with certificate",
90
+ comment: "Bought this as a birthday gift for my niece. The plush has the Pokémon Center tag and feels premium not the cheap knock-offs you see online. Aryan included a small thank-you note which was a lovely touch. Niece went crazy for it. Ordering the Gengar plush next.",
124
91
  status: "approved",
125
- helpfulCount: 41,
92
+ helpfulCount: 5,
126
93
  reportCount: 0,
127
94
  verified: true,
128
- featured: true,
129
- createdAt: daysAgo(40),
130
- updatedAt: daysAgo(40),
131
- approvedAt: daysAgo(40),
132
- },
133
- // 5. Ash reviews Pikachu common (Surge)
134
- {
135
- id: "review-pikachu-base1-58-ash-20260320",
136
- productId: "product-pikachu-base1-58-common-electric-surge-1",
137
- productTitle: "Pikachu Base Set #58 Common (Near Mint)",
138
- sellerId: "user-lt-surge-electric-surge",
139
- userId: "user-ash-ketchum-pallet-ash",
140
- userName: "Ash Ketchum",
141
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png",
142
- rating: 5,
143
- title: "My best friend in card formyellow cheeks and all!",
144
- comment: "Obviously I had to own the Base Set Pikachu. The yellow-cheeks variant is the correct one — " +
145
- "Surge knows this and stocks only the best copy available. " +
146
- "Near Mint condition, sharp corners, vivid yellow, and that iconic expression. " +
147
- "Shipped in a penny sleeve inside a top-loader. Fast delivery. " +
148
- "Pikachu, I choose you — and I choose Surge's Electric Emporium!",
149
- images: [cardImg(58)],
150
- video: {
151
- url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4",
152
- thumbnailUrl: cardImg(58),
153
- duration: 18,
154
- },
155
- status: "approved",
156
- helpfulCount: 38,
95
+ featured: false,
96
+ createdAt: daysAgo(18),
97
+ updatedAt: daysAgo(17),
98
+ approvedAt: daysAgo(17),
99
+ },
100
+ // ── store-cardgame-hub (3 reviews) ────────────────────────────────────────
101
+ {
102
+ id: "review-yugioh-25th-tin-rahul-005",
103
+ productId: "product-yugioh-25th-tin",
104
+ productTitle: "Yu-Gi-Oh! 25th Anniversary Tin: Dueling Heroes",
105
+ sellerId: "user-nisha-reddy",
106
+ userId: "user-rahul-sharma",
107
+ userName: "Rahul Sharma",
108
+ rating: 5,
109
+ title: "Nisha is the best YGO seller in India, period",
110
+ comment: "I've ordered from three different YGO sellers on LetItRip and CardGame Hub is on another level. The 25th Anniversary Tin arrived with each mega pack in its own sleeve inside the tin. Nisha also included a handwritten note about recommended first packs to open genuine community knowledge. Will only order YGO from here going forward.",
111
+ status: "approved",
112
+ helpfulCount: 22,
157
113
  reportCount: 0,
158
114
  verified: true,
159
115
  featured: true,
160
- createdAt: daysAgo(37),
116
+ createdAt: daysAgo(38),
161
117
  updatedAt: daysAgo(37),
162
118
  approvedAt: daysAgo(37),
163
119
  },
164
- // ══════════════════════════════════════════════════════════════
165
- // APPROVED — NON-FEATURED
166
- // ══════════════════════════════════════════════════════════════
167
- // 6. Brock reviews Zapdos (Surge)
168
- {
169
- id: "review-zapdos-base1-16-brock-20260322",
170
- productId: "product-zapdos-base1-16-holo-rare-electric-surge-1",
171
- productTitle: "Zapdos — Base Set #16 Holo Rare (Near Mint)",
172
- sellerId: "user-lt-surge-electric-surge",
173
- userId: "user-brock-pewter-brock",
174
- userName: "Brock",
175
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/74.png",
120
+ {
121
+ id: "review-yugioh-albaz-arjun-006",
122
+ productId: "product-yugioh-structure-albaz",
123
+ productTitle: "Yu-Gi-Oh! Structure Deck: Albaz Strike",
124
+ sellerId: "user-nisha-reddy",
125
+ userId: "user-arjun-singh",
126
+ userName: "Arjun Singh",
176
127
  rating: 4,
177
- title: "Rock-solid purchase legendary bird delivered safely",
178
- comment: "I'm a Rock-type guy at heart but every collector needs the legendary birds. " +
179
- "Zapdos arrived in excellent NM condition — great centering, clean holo, minimal border wear. " +
180
- "Surge shipped quickly with tracking. The only reason for 4 stars is I'd have liked a slightly heavier " +
181
- "top-loader for a card at this price point, but honestly it arrived perfectly fine. " +
182
- "Would buy from Surge's Emporium again — competitive prices and honest descriptions.",
183
- images: [],
128
+ title: "Solid structure deck, good beginner product",
129
+ comment: "Bought 3 copies to complete a playset as Nisha recommended. Cards came in the original sealed structure deck packaging with no damage. Shipping was 4 days which is perfectly fine for a standard order. Would rate 5 stars if shipping was 2 days but that's a minor point.",
184
130
  status: "approved",
185
- helpfulCount: 22,
131
+ helpfulCount: 6,
132
+ reportCount: 0,
133
+ verified: true,
134
+ featured: false,
135
+ createdAt: daysAgo(22),
136
+ updatedAt: daysAgo(21),
137
+ approvedAt: daysAgo(21),
138
+ },
139
+ {
140
+ id: "review-charizard-auction-priya-007",
141
+ productId: "auction-pokemon-charizard-base1-psa9",
142
+ productTitle: "Pokémon 1st Edition Charizard PSA 9 (AUCTION)",
143
+ sellerId: "user-nisha-reddy",
144
+ userId: "user-priya-patel",
145
+ userName: "Priya Patel",
146
+ rating: 3,
147
+ title: "Card is beautiful but auction process was stressful",
148
+ comment: "The card itself is perfect — genuine PSA 9, certificate verified on PSA website. Shipping was excellent (insured, signature required). My 3-star is about the bidding experience: I was outbid in the last 60 seconds three times before winning, which was nerve-wracking. That's a platform issue, not the seller's fault. Card arrived safely and I'm thrilled to own it.",
149
+ status: "approved",
150
+ helpfulCount: 4,
151
+ reportCount: 0,
152
+ verified: true,
153
+ featured: false,
154
+ createdAt: daysAgo(12),
155
+ updatedAt: daysAgo(11),
156
+ approvedAt: daysAgo(11),
157
+ },
158
+ // ── store-diecast-depot (3 reviews) ───────────────────────────────────────
159
+ {
160
+ id: "review-redline-camaro-meera-008",
161
+ productId: "product-hot-wheels-redline-1969-camaro",
162
+ productTitle: "Hot Wheels Redline 1969 Camaro SS — Custom Paint (Bluebird)",
163
+ sellerId: "user-vikram-mehta",
164
+ userId: "user-meera-nair",
165
+ userName: "Meera Nair",
166
+ rating: 5,
167
+ title: "A true Redline beauty — mint condition, authentic",
168
+ comment: "This was my first vintage Hot Wheels purchase and Vikram made it a great experience. The Redline arrived in a proper acrylic display case (not just a ziplock — a real display case!) with a card describing the car's production year and rarity. Vikram's description was honest — the car has minor paint wear on the roof which he mentioned in the listing. Very happy.",
169
+ status: "approved",
170
+ helpfulCount: 11,
186
171
  reportCount: 0,
187
172
  verified: true,
188
173
  featured: false,
174
+ createdAt: daysAgo(48),
175
+ updatedAt: daysAgo(47),
176
+ approvedAt: daysAgo(47),
177
+ },
178
+ {
179
+ id: "review-tomica-datsun-rahul-009",
180
+ productId: "product-tomica-limited-datsun",
181
+ productTitle: "Tomica Limited Vintage Datsun Bluebird 1600SSS (1969)",
182
+ sellerId: "user-vikram-mehta",
183
+ userId: "user-rahul-sharma",
184
+ userName: "Rahul Sharma",
185
+ rating: 5,
186
+ title: "TLV quality is unreal — every detail perfect",
187
+ comment: "I've been collecting Hot Wheels for years but Tomica Limited Vintage is something else entirely. The Datsun Bluebird has rubber tyres, a working bonnet, and tampo print so fine I need a magnifying glass to appreciate it. Vikram sourced this from his Japan trip — you can tell it's fresh stock. Arrived in the original TLV outer box in immaculate condition.",
188
+ status: "approved",
189
+ helpfulCount: 19,
190
+ reportCount: 0,
191
+ verified: true,
192
+ featured: true,
189
193
  createdAt: daysAgo(35),
190
- updatedAt: daysAgo(35),
191
- approvedAt: daysAgo(35),
192
- },
193
- // 7. Erika reviews Venusaur (Blaine — LP)
194
- {
195
- id: "review-venusaur-base1-15-erika-20260324",
196
- productId: "product-venusaur-base1-15-holo-rare-grass-blaine-1",
197
- productTitle: "Venusaur — Base Set #15 Holo Rare (Lightly Played)",
198
- sellerId: "user-blaine-fire-gym-blaine",
199
- userId: "user-erika-celadon-erika",
200
- userName: "Erika",
201
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/45.png",
194
+ updatedAt: daysAgo(34),
195
+ approvedAt: daysAgo(34),
196
+ },
197
+ {
198
+ id: "review-hw-rlc-boneshaker-arjun-010",
199
+ productId: "product-hot-wheels-rlc-bone-shaker",
200
+ productTitle: "Hot Wheels RLC Bone Shaker Special Edition",
201
+ sellerId: "user-vikram-mehta",
202
+ userId: "user-arjun-singh",
203
+ userName: "Arjun Singh",
202
204
  rating: 4,
203
- title: "Grass-type glory condition exactly as described",
204
- comment: "As a Grass-type Gym Leader, a Venusaur Holo is essential for my collection. " +
205
- "The card is Lightly Played as listed — minor corner wear, but the holo face is absolutely gorgeous with no scratches. " +
206
- "Blaine's description was accurate and honest, which I appreciate deeply. " +
207
- "Shipped well protected. A lovely card at a fair price for LP condition. " +
208
- "I'd give five stars if this were NM, but the LP grade is reflected in the price and the condition matches perfectly.",
209
- images: [cardImg(15)],
205
+ title: "Rare RLC exclusive, good price, slightly late dispatch",
206
+ comment: "The RLC Bone Shaker is exactly as described sealed in the original RLC mailer with the membership card insert. My only feedback: dispatch was on day 3 (not day 2 as listed in store policy). Vikram apologised proactively and offered a discount on my next order, which I appreciate. Car itself is perfect.",
210
207
  status: "approved",
211
- helpfulCount: 19,
208
+ helpfulCount: 7,
209
+ reportCount: 0,
210
+ verified: true,
211
+ featured: false,
212
+ createdAt: daysAgo(20),
213
+ updatedAt: daysAgo(19),
214
+ approvedAt: daysAgo(19),
215
+ },
216
+ // ── store-beyblade-arena (3 reviews) ─────────────────────────────────────
217
+ {
218
+ id: "review-bx01-dran-sword-priya-011",
219
+ productId: "product-beyblade-x-bx01-dran-sword",
220
+ productTitle: "Beyblade X BX-01 Dran Sword 4-60F Starter Set",
221
+ sellerId: "user-rohit-joshi",
222
+ userId: "user-priya-patel",
223
+ userName: "Priya Patel",
224
+ rating: 5,
225
+ title: "My son's first BX top — perfect gift, fast delivery",
226
+ comment: "Ordered for my 8-year-old who is obsessed with Beyblade X. Rohit shipped the same day I placed the order (I ordered at 10am, it was dispatched by 4pm). Arrived in 3 days. The BX-01 starter set comes with the top, rip cord launcher, and a stadium guide — everything a beginner needs. My son has launched it 200 times and it's still perfect.",
227
+ status: "approved",
228
+ helpfulCount: 28,
229
+ reportCount: 0,
230
+ verified: true,
231
+ featured: true,
232
+ createdAt: daysAgo(50),
233
+ updatedAt: daysAgo(49),
234
+ approvedAt: daysAgo(49),
235
+ },
236
+ {
237
+ id: "review-b200-valkyrie-meera-012",
238
+ productId: "product-beyblade-burst-b200-valkyrie",
239
+ productTitle: "Beyblade Burst B-200 Brave Valkyrie Evolution",
240
+ sellerId: "user-rohit-joshi",
241
+ userId: "user-meera-nair",
242
+ userName: "Meera Nair",
243
+ rating: 5,
244
+ title: "Authentic Takara Tomy import, not the bootleg version",
245
+ comment: "There are SO many bootleg Beyblades on other platforms. Rohit sells only genuine Takara Tomy product — you can tell by the QR code on the Beyblade passport card (scans correctly on the Beyblade app). Brave Valkyrie arrived fresh from its Japan import, unopened. The weight difference from bootlegs is immediately obvious.",
246
+ status: "approved",
247
+ helpfulCount: 15,
212
248
  reportCount: 0,
213
249
  verified: true,
214
250
  featured: false,
215
251
  createdAt: daysAgo(32),
216
- updatedAt: daysAgo(32),
217
- approvedAt: daysAgo(32),
252
+ updatedAt: daysAgo(31),
253
+ approvedAt: daysAgo(31),
254
+ },
255
+ {
256
+ id: "review-preorder-beyblade-bx10-rahul-013",
257
+ productId: "preorder-beyblade-x-bx10-booster",
258
+ productTitle: "Beyblade X BX-10 Booster Set Pre-Order",
259
+ sellerId: "user-rohit-joshi",
260
+ userId: "user-rahul-sharma",
261
+ userName: "Rahul Sharma",
262
+ rating: 4,
263
+ title: "Pre-order arrived on time — worth the wait",
264
+ comment: "Rohit's pre-order process was smooth. I paid the 30% deposit, received confirmation, and the balance was charged exactly when he said it would be (2 days before dispatch). Item arrived 42 days after ordering — right in the promised window. No complaints. Will pre-order the BX-12 when Rohit lists it.",
265
+ status: "approved",
266
+ helpfulCount: 9,
267
+ reportCount: 0,
268
+ verified: true,
269
+ featured: false,
270
+ createdAt: daysAgo(10),
271
+ updatedAt: daysAgo(9),
272
+ approvedAt: daysAgo(9),
218
273
  },
219
- // 8. Gary reviews Professor Oak Trainer (Surge)
274
+ // ── store-letitrip-official (2 reviews) ───────────────────────────────────
220
275
  {
221
- id: "review-professor-oak-trainer-gary-20260325",
222
- productId: "product-professor-oak-base1-88-uncommon-trainer-surge-1",
223
- productTitle: "Professor Oak Base Set #88 Trainer (Near Mint)",
224
- sellerId: "user-lt-surge-electric-surge",
225
- userId: "user-gary-oak-pallet-gary",
226
- userName: "Gary Oak",
227
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/132.png",
276
+ id: "review-shf-goku-arjun-014",
277
+ productId: "product-shf-goku-ultra-instinct",
278
+ productTitle: "S.H.Figuarts Goku Ultra Instinct -Sign- (Dragon Ball Super)",
279
+ sellerId: "user-admin-letitrip",
280
+ userId: "user-arjun-singh",
281
+ userName: "Arjun Singh",
228
282
  rating: 5,
229
- title: "Draw 7 the greatest trainer card, sold by a great seller",
230
- comment: "The irony of Gary Oak buying a Professor Oak card is not lost on me. " +
231
- "But sentiment aside, this NM copy from Surge is excellent — crisp edges, vibrant artwork, and " +
232
- "not a single bend or crease. For competitive players and collectors alike, Professor Oak is non-negotiable. " +
233
- "Surge had the lowest price I found for a properly graded NM copy. Shipped fast, tracked. " +
234
- "Staple card in every era — pick one up while they're available.",
235
- images: [],
283
+ title: "Official LetItRip store delivers SHF in perfect condition",
284
+ comment: "This is my 4th S.H.Figuarts from LetItRip Official and they're consistently excellent. The Goku UI comes with 5 face plates, effect parts, and all the swap hands. Every accessory was accounted for (I always check). LetItRip Official is the most reliable store on the platform — their QC before dispatch is clearly thorough.",
236
285
  status: "approved",
237
286
  helpfulCount: 17,
238
287
  reportCount: 0,
239
- verified: false,
288
+ verified: true,
240
289
  featured: false,
241
- createdAt: daysAgo(30),
242
- updatedAt: daysAgo(30),
243
- approvedAt: daysAgo(30),
244
- },
245
- // 9. Sabrina reviews Haunter Non-Holo (Surge)
246
- {
247
- id: "review-haunter-base1-24-sabrina-20260327",
248
- productId: "product-haunter-base1-24-non-holo-rare-psychic-surge-1",
249
- productTitle: "Haunter — Base Set #24 Non-Holo Rare (Near Mint)",
250
- sellerId: "user-lt-surge-electric-surge",
251
- userId: "user-sabrina-saffron-sabrina",
252
- userName: "Sabrina",
253
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/65.png",
254
- rating: 5,
255
- title: "Psychic perfection — Haunter's mischievous grin in NM condition",
256
- comment: "I adore Haunter. That tongue-out artwork from Ken Sugimori is timeless. " +
257
- "Surge's copy arrived in genuine Near Mint — the card feels fresh, no whitening on corners, " +
258
- "and the classic Lick attack text is perfectly legible with no print defects. " +
259
- "Penny sleeved and shipped in a tracked bubble mailer. Fast shipping from Vermilion City. " +
260
- "A must-have Psychic-type for any serious Base Set collection.",
261
- images: [],
290
+ createdAt: daysAgo(26),
291
+ updatedAt: daysAgo(25),
292
+ approvedAt: daysAgo(25),
293
+ },
294
+ {
295
+ id: "review-gundam-rx78-mg-arjun-015",
296
+ productId: "product-gundam-rx78-mg",
297
+ productTitle: "MG 1/100 RX-78-2 Gundam Ver. 3.0",
298
+ sellerId: "user-admin-letitrip",
299
+ userId: "user-arjun-singh",
300
+ userName: "Arjun Singh",
301
+ rating: 2,
302
+ title: "Kit was missing the beam rifle assembly — resolved via support",
303
+ comment: "The box arrived safely but when I inventoried the sprues, the G runner (beam rifle parts) was missing — looks like a factory packing error. I opened a dispute on LetItRip and LetItRip Official resolved it within 48 hours by shipping the missing runner separately at no cost. They clearly take after-sales seriously. Updating from 1 star to 2 stars because the issue was resolved, but losing a star for the missing part.",
262
304
  status: "approved",
263
- helpfulCount: 15,
305
+ helpfulCount: 6,
264
306
  reportCount: 0,
265
307
  verified: true,
266
308
  featured: false,
267
- createdAt: daysAgo(28),
309
+ createdAt: daysAgo(14),
310
+ updatedAt: daysAgo(12),
311
+ approvedAt: daysAgo(12),
312
+ },
313
+ // ── store-tokyo-toys-india (5 reviews) ────────────────────────────────────
314
+ {
315
+ id: "review-nendoroid-zero-two-sneha-016",
316
+ productId: "product-nendoroid-zero-two",
317
+ productTitle: "Nendoroid Zero Two (Darling in the FranXX) #942",
318
+ sellerId: "user-priya-singh",
319
+ userId: "user-sneha-kumar",
320
+ userName: "Sneha Kumar",
321
+ rating: 5,
322
+ title: "Zero Two is everything I dreamed of — authentic GSC, flawless",
323
+ comment: "I've been hunting this Nendoroid for 2 years and finally found it at Tokyo Toys India. Priya sourced the re-release directly from GSC. The serial number on the base matches the box — definitely authentic. Three faceplates, the horns are perfect, and the stand works smoothly. Packed in foam-padded box, arrived in 3 days. Priya is the real deal — she knows her anime figures.",
324
+ status: "approved",
325
+ helpfulCount: 24,
326
+ reportCount: 0,
327
+ verified: true,
328
+ featured: true,
329
+ createdAt: daysAgo(45),
330
+ updatedAt: daysAgo(44),
331
+ approvedAt: daysAgo(44),
332
+ },
333
+ {
334
+ id: "review-nendoroid-levi-tanvi-017",
335
+ productId: "product-nendoroid-levi-aot",
336
+ productTitle: "Nendoroid Levi Ackerman (Attack on Titan) #390",
337
+ sellerId: "user-priya-singh",
338
+ userId: "user-tanvi-desai",
339
+ userName: "Tanvi Desai",
340
+ rating: 5,
341
+ title: "Cleaning mode faceplate alone is worth it — perfect figure",
342
+ comment: "The cleaning mode Levi faceplate with the tiny mop is the most charming thing I own. Priya's packaging was impeccable — each faceplate in its own mini tray exactly as GSC intended. This is my 6th Nendoroid from Tokyo Toys India and Priya has never once let me down. Already eyeing the Ram Nendoroid on her store.",
343
+ status: "approved",
344
+ helpfulCount: 18,
345
+ reportCount: 0,
346
+ verified: true,
347
+ featured: false,
348
+ createdAt: daysAgo(38),
349
+ updatedAt: daysAgo(37),
350
+ approvedAt: daysAgo(37),
351
+ },
352
+ {
353
+ id: "review-shf-sailor-moon-sneha-018",
354
+ productId: "product-shf-sailor-moon-eternal",
355
+ productTitle: "S.H.Figuarts Sailor Moon Eternal (2021)",
356
+ sellerId: "user-priya-singh",
357
+ userId: "user-sneha-kumar",
358
+ userName: "Sneha Kumar",
359
+ rating: 5,
360
+ title: "Rainbow wings are breathtaking — showpiece figure",
361
+ comment: "The rainbow semi-translucent wings on this figure catch light in ways that my photos simply cannot capture. When sunlight hits them, the entire shelf lights up. Priya had this in stock while every other seller was out — she clearly has excellent supplier relationships. Arrived double-boxed, wings were in a separate padded compartment. No damage. 10/10.",
362
+ status: "approved",
363
+ helpfulCount: 31,
364
+ reportCount: 0,
365
+ verified: true,
366
+ featured: true,
367
+ createdAt: daysAgo(29),
268
368
  updatedAt: daysAgo(28),
269
369
  approvedAt: daysAgo(28),
270
370
  },
271
- // 10. Oak reviews Water Energy lot (Misty)
272
371
  {
273
- id: "review-water-energy-lot-oak-20260328",
274
- productId: "product-water-energy-base1-99-common-energy-misty-lot",
275
- productTitle: "Water Energy Base Set #99 x10 Lot (Near Mint)",
276
- sellerId: "user-misty-water-gym-misty",
277
- userId: "user-prof-oak-pallet-oak",
278
- userName: "Professor Oak",
279
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/143.png",
372
+ id: "review-funko-pop-tanjiro-tanvi-019",
373
+ productId: "product-funko-pop-tanjiro-demon-slayer",
374
+ productTitle: "Funko Pop! Tanjiro Kamado (Demon Slayer) #855",
375
+ sellerId: "user-priya-singh",
376
+ userId: "user-tanvi-desai",
377
+ userName: "Tanvi Desai",
378
+ rating: 4,
379
+ title: "Perfect mint on card — Priya's packaging keeps boxes pristine",
380
+ comment: "I collect Funko Pops for display out of box BUT I keep a carded mint copy for investment. Priya packs each Pop in a protector sleeve before shipping — the box arrived with zero corner wear. That level of care for a ₹1,699 Funko is impressive. Deducting one star only because dispatch was Day 2 instead of Day 1 (she mentioned a supply arrival delay in her dispatch message).",
381
+ status: "approved",
382
+ helpfulCount: 12,
383
+ reportCount: 0,
384
+ verified: true,
385
+ featured: false,
386
+ createdAt: daysAgo(20),
387
+ updatedAt: daysAgo(19),
388
+ approvedAt: daysAgo(19),
389
+ },
390
+ {
391
+ id: "review-racing-miku-priya-patel-020",
392
+ productId: "product-gsc-racing-miku-2023",
393
+ productTitle: "Good Smile Racing Miku 2023 Ver. 1/7 Scale",
394
+ sellerId: "user-priya-singh",
395
+ userId: "user-priya-patel",
396
+ userName: "Priya Patel",
280
397
  rating: 5,
281
- title: "Perfect lot for research-grade deck documentation",
282
- comment: "I ordered three sets of 10 for my Blastoise research deck. Every single card from Misty arrived in " +
283
- "Near Mint condition — consistent print quality, clean artwork, and no duplicates with bent corners. " +
284
- "They were shipped in a team bag inside a bubble mailer — the correct way to ship bulk energy lots. " +
285
- "At this price per card the value is outstanding. Misty clearly understands both Water-type Pokémon and proper card care.",
286
- images: [],
398
+ title: "Centrepiece of my collection absolutely stunning 1/7 scale",
399
+ comment: "Racing Miku 2023 Ver. is the most beautiful figure I own. The 1/7 scale means she stands tall on my shelf and catches everyone's eye. Priya sourced this from Akihabara directly — the box has the Japanese tax receipt inside. She packed the figure's base separately with foam and the wings were in bubble wrap. Nothing moved in transit. Worth every rupee.",
287
400
  status: "approved",
288
- helpfulCount: 14,
401
+ helpfulCount: 26,
402
+ reportCount: 0,
403
+ verified: true,
404
+ featured: true,
405
+ createdAt: daysAgo(12),
406
+ updatedAt: daysAgo(11),
407
+ approvedAt: daysAgo(11),
408
+ },
409
+ // ── store-gundam-galaxy (4 reviews) ──────────────────────────────────────
410
+ {
411
+ id: "review-hg-barbatos-kartik-021",
412
+ productId: "product-gundam-hg-barbatos-lupus-rex",
413
+ productTitle: "HG 1/144 Gundam Barbatos Lupus Rex (Iron-Blooded Orphans)",
414
+ sellerId: "user-amit-sharma",
415
+ userId: "user-kartik-nair",
416
+ userName: "Kartik Nair",
417
+ rating: 5,
418
+ title: "First Gunpla ever — Amit's advice helped me pick the right kit",
419
+ comment: "I messaged Amit before ordering asking which HG is best for a complete beginner. He replied within an hour with a detailed breakdown of the top 5 beginner HG kits and explained why Barbatos Lupus Rex is the best mix of posability and fun. Great advice — the build took me a weekend and the result is spectacular. Amit is clearly a passionate builder and that shows in how he sells.",
420
+ status: "approved",
421
+ helpfulCount: 34,
422
+ reportCount: 0,
423
+ verified: true,
424
+ featured: true,
425
+ createdAt: daysAgo(52),
426
+ updatedAt: daysAgo(51),
427
+ approvedAt: daysAgo(51),
428
+ },
429
+ {
430
+ id: "review-mg-sazabi-arjun-022",
431
+ productId: "product-gundam-mg-sazabi-verka",
432
+ productTitle: "MG 1/100 Sazabi Ver.Ka (Master Grade)",
433
+ sellerId: "user-amit-sharma",
434
+ userId: "user-arjun-singh",
435
+ userName: "Arjun Singh",
436
+ rating: 5,
437
+ title: "The pinnacle of Master Grade — Amit's packaging was museum-grade",
438
+ comment: "This is the most expensive kit I've ever bought (₹6,499) and Amit treated it accordingly. The Sazabi Ver.Ka arrived triple-boxed — outer cardboard, foam insert, and the kit box itself inside a second layer of rigid cardboard. Every runner individually wrapped. The kit itself is exactly as legendary as its reputation — 300+ parts, three-layer construction, and the most satisfying snap-fit engineering I've ever experienced. Amit is the best Gunpla seller in India.",
439
+ status: "approved",
440
+ helpfulCount: 42,
441
+ reportCount: 0,
442
+ verified: true,
443
+ featured: true,
444
+ createdAt: daysAgo(40),
445
+ updatedAt: daysAgo(39),
446
+ approvedAt: daysAgo(39),
447
+ },
448
+ {
449
+ id: "review-rg-evangelion-sneha-023",
450
+ productId: "product-gundam-rg-evangelion-unit01",
451
+ productTitle: "RG 1/144 Evangelion Unit-01 (Rebuild of Evangelion)",
452
+ sellerId: "user-amit-sharma",
453
+ userId: "user-sneha-kumar",
454
+ userName: "Sneha Kumar",
455
+ rating: 4,
456
+ title: "EVA-01 in RG is spectacular — pre-coloured runners are a revelation",
457
+ comment: "I'm not a regular Gunpla buyer but bought this for my EVA collection. Amit's store description mentioned that this is the first non-Gundam RG kit and the pre-coloured runners make it accessible for non-modellers. He was right — I built it with no paint and it looks exactly like the promo photos. Deducting one star because the umbilical cable tends to pop off at the connection point, but that's a Bandai design note, not Amit's fault.",
458
+ status: "approved",
459
+ helpfulCount: 16,
289
460
  reportCount: 0,
290
461
  verified: true,
291
462
  featured: false,
292
- createdAt: daysAgo(26),
463
+ createdAt: daysAgo(27),
293
464
  updatedAt: daysAgo(26),
294
465
  approvedAt: daysAgo(26),
295
466
  },
296
- // 11. Brock reviews Charizard 9-Pocket Binder (Misty)
297
467
  {
298
- id: "review-charizard-binder-brock-20260329",
299
- productId: "product-pokemon-9-pocket-binder-misty-1",
300
- productTitle: "Pokémon 9-Pocket Binder (360 cards, Charizard Cover)",
301
- sellerId: "user-misty-water-gym-misty",
302
- userId: "user-brock-pewter-brock",
303
- userName: "Brock",
304
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/74.png",
468
+ id: "review-rg-hi-nu-preorder-kartik-024",
469
+ productId: "preorder-gundam-rg-hi-nu-verka",
470
+ productTitle: "PRE-ORDER: RG 1/144 Hi-ν Gundam Ver.Ka",
471
+ sellerId: "user-amit-sharma",
472
+ userId: "user-kartik-nair",
473
+ userName: "Kartik Nair",
305
474
  rating: 5,
306
- title: "Rock-solid binderCharizard on the cover, perfection inside",
307
- comment: "Finally a binder worthy of my Base Set collection. 360-card capacity means my entire set fits comfortably " +
308
- "with room for extras. The side-loading pockets are excellent — cards slide in easily and stay secure. " +
309
- "The lay-flat design means I can view two pages simultaneously without straining the spine. " +
310
- "And the Charizard cover art? Chef's kiss. Shipped in a proper box so the binder arrived undamaged. " +
311
- "Misty ships card accessories as well as she ships Water singles. Highly recommended.",
312
- images: [],
475
+ title: "Pre-order process is smooth Amit updates you at every step",
476
+ comment: "Placed this pre-order and Amit messaged me the same day confirming receipt, then sent weekly updates on Japan warehouse status. He also warned me about a potential 2-week delay due to Bandai production schedules before I even knew about it publicly. That level of proactive communication is rare. Kit hasn't arrived yet but the deposit process was seamless.",
313
477
  status: "approved",
314
- helpfulCount: 12,
478
+ helpfulCount: 8,
315
479
  reportCount: 0,
316
480
  verified: false,
317
481
  featured: false,
318
- createdAt: daysAgo(24),
319
- updatedAt: daysAgo(24),
320
- approvedAt: daysAgo(24),
482
+ createdAt: daysAgo(5),
483
+ updatedAt: daysAgo(4),
484
+ approvedAt: daysAgo(4),
321
485
  },
322
- // 12. Erika reviews Fire Energy lot (Blaine)
486
+ // ── store-vintage-vault (4 reviews) ──────────────────────────────────────
323
487
  {
324
- id: "review-fire-energy-lot-erika-20260330",
325
- productId: "product-fire-energy-base1-100-common-energy-blaine-lot",
326
- productTitle: "Fire Energy — Base Set #100 x10 Lot (Near Mint)",
327
- sellerId: "user-blaine-fire-gym-blaine",
328
- userId: "user-erika-celadon-erika",
329
- userName: "Erika",
330
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/45.png",
331
- rating: 4,
332
- title: "Good value fire energy lotperfect for trading away",
333
- comment: "I bought these to trade with Blaine's buyers at local meetups — everyone needs Fire Energy for Charizard decks. " +
334
- "Cards are Near Mint as described, arrived in a team bag, no bent corners. " +
335
- "Took 3 days to arrive from Cinnabar Island which is fair given the distance. " +
336
- "One star off only because the bubble mailer had slight external scuffing though the cards inside were fine. " +
337
- "Blaine's descriptions are honest and the price is right for bulk lots.",
338
- images: [],
488
+ id: "review-pokemon-charizard-lp-divya-025",
489
+ productId: "product-vintage-pokemon-charizard-base-lp",
490
+ productTitle: "Pokémon Base Set Charizard #4/102 Holo Rare LP Raw",
491
+ sellerId: "user-kavya-iyer",
492
+ userId: "user-divya-menon",
493
+ userName: "Divya Menon",
494
+ rating: 5,
495
+ title: "Honest condition grading — exactly what she described",
496
+ comment: "I was nervous buying a ₹3,999 Charizard online but Kavya sent me 8 high-res photos in different lighting before I confirmed. The card matches her LP description exactly the corners and whitening are exactly as documented. She's been in this business 20 years and her grading vocabulary is precise. Most sellers say 'Near Mint' for LP cards — Kavya says LP for LP. Refreshing honesty.",
339
497
  status: "approved",
340
- helpfulCount: 10,
498
+ helpfulCount: 29,
499
+ reportCount: 0,
500
+ verified: true,
501
+ featured: true,
502
+ createdAt: daysAgo(35),
503
+ updatedAt: daysAgo(34),
504
+ approvedAt: daysAgo(34),
505
+ },
506
+ {
507
+ id: "review-hw-deora-vintage-siddharth-026",
508
+ productId: "product-vintage-hot-wheels-deora-1968",
509
+ productTitle: "Hot Wheels Redline 1968 Deora — Aqua (Vintage)",
510
+ sellerId: "user-kavya-iyer",
511
+ userId: "user-siddharth-rao",
512
+ userName: "Siddharth Rao",
513
+ rating: 5,
514
+ title: "A piece of toy history — Kavya's knowledge is unmatched",
515
+ comment: "I collect vintage Redlines and Kavya is the first Indian seller I've found who truly understands them. Her listing for the Deora was the most detailed I've seen anywhere — she identified it as an early production run based on the chassis stamp. The provenance documentation (original owner paperwork) is extraordinary. This car is now the centrepiece of my collection.",
516
+ status: "approved",
517
+ helpfulCount: 21,
341
518
  reportCount: 0,
342
519
  verified: true,
343
520
  featured: false,
344
- createdAt: daysAgo(22),
521
+ createdAt: daysAgo(23),
345
522
  updatedAt: daysAgo(22),
346
523
  approvedAt: daysAgo(22),
347
524
  },
348
- // 13. Gary reviews Chansey Holo (Misty)
349
525
  {
350
- id: "review-chansey-base1-3-gary-20260401",
351
- productId: "product-chansey-base1-3-holo-rare-colorless-misty-1",
352
- productTitle: "Chansey Base Set #3 Holo Rare (Near Mint)",
353
- sellerId: "user-misty-water-gym-misty",
354
- userId: "user-gary-oak-pallet-gary",
355
- userName: "Gary Oak",
356
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/132.png",
357
- rating: 4,
358
- title: "120 HP tank cardgreat condition, great price",
359
- comment: "Chansey is the tankiest card in Base Set and this NM copy does it justice. " +
360
- "Holo shimmer is vivid, centering is slightly left-heavy but well within NM range, " +
361
- "corners are sharp. Misty ships Water Gym quality even for Colorless cards — " +
362
- "tracked, top-loaded, fast. I'd prefer 5★ centering at this price but it's a solid purchase. " +
363
- "Recommended for completionists and healing-deck enthusiasts.",
364
- images: [],
526
+ id: "review-motu-he-man-rahul-027",
527
+ productId: "product-vintage-motu-he-man-1982",
528
+ productTitle: "Masters of the Universe He-Man (1982 Takara Japan)",
529
+ sellerId: "user-kavya-iyer",
530
+ userId: "user-rahul-sharma",
531
+ userName: "Rahul Sharma",
532
+ rating: 5,
533
+ title: "My childhood hero — and a genuine 1982 first-year original",
534
+ comment: "I grew up with He-Man but never had an original 1982 figure. When I saw Kavya's listing with the Takara sticker on the packaging, I knew it was legitimate that detail is how you identify the Japan distribution version. She included a certificate of authenticity from a vintage toy appraiser. The torso twist mechanism works perfectly after 40+ years. Remarkable condition for the age.",
365
535
  status: "approved",
366
- helpfulCount: 9,
536
+ helpfulCount: 15,
367
537
  reportCount: 0,
368
- verified: false,
538
+ verified: true,
369
539
  featured: false,
370
- createdAt: daysAgo(20),
371
- updatedAt: daysAgo(20),
372
- approvedAt: daysAgo(20),
373
- },
374
- // 14. Ash reviews Pikachu sleeves (Blaine)
375
- {
376
- id: "review-pikachu-sleeves-ash-20260402",
377
- productId: "product-pokemon-card-sleeves-standard-blaine-1",
378
- productTitle: "Pokémon-Art Card Sleeves (100-pack, Pikachu)",
379
- sellerId: "user-blaine-fire-gym-blaine",
380
- userId: "user-ash-ketchum-pallet-ash",
381
- userName: "Ash Ketchum",
382
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png",
383
- rating: 5,
384
- title: "Pikachu sleeves for my Pikachu card — perfect symmetry!",
385
- comment: "I sleeve all my cards in Pikachu sleeves. Obviously. These Ultra PRO standard-size sleeves fit " +
386
- "Base Set cards perfectly — snug, not tight, easy to insert and remove. " +
387
- "100 sleeves in the pack, all came intact with no tears or pre-bent edges. " +
388
- "Archival quality means I can trust them for long-term storage of my NM cards. " +
389
- "Blaine had the best price I found for genuine Ultra PRO. Quick shipping. 10/10.",
390
- images: [],
540
+ createdAt: daysAgo(14),
541
+ updatedAt: daysAgo(13),
542
+ approvedAt: daysAgo(13),
543
+ },
544
+ {
545
+ id: "review-jungle-vaporeon-tanvi-028",
546
+ productId: "product-vintage-pokemon-jungle-vaporeon-holo",
547
+ productTitle: "Pokémon WOTC Jungle Vaporeon #12/64 Holo Rare — NM Raw",
548
+ sellerId: "user-kavya-iyer",
549
+ userId: "user-tanvi-desai",
550
+ userName: "Tanvi Desai",
551
+ rating: 5,
552
+ title: "WOTC era quality is incomparable — Kavya preserves history",
553
+ comment: "I'm building a raw NM WOTC set and Kavya's Vintage Vault has the cleanest WOTC cards I've found in India. The Vaporeon has the original First Edition-era card stock texture that WOTC used before they cheapened the material in later sets. Holo is perfect. Kavya's estate-sale sourcing means these cards have been in private collections — not through dealer hands repeatedly.",
391
554
  status: "approved",
392
- helpfulCount: 7,
555
+ helpfulCount: 11,
393
556
  reportCount: 0,
394
557
  verified: true,
395
558
  featured: false,
396
- createdAt: daysAgo(18),
397
- updatedAt: daysAgo(18),
398
- approvedAt: daysAgo(18),
399
- },
400
- // 15. Brock reviews Magneton Holo LP (Surge)
401
- {
402
- id: "review-magneton-base1-9-brock-20260403",
403
- productId: "product-magneton-base1-9-holo-rare-electric-surge-1",
404
- productTitle: "Magneton Base Set #9 Holo Rare (Lightly Played)",
405
- sellerId: "user-lt-surge-electric-surge",
406
- userId: "user-brock-pewter-brock",
407
- userName: "Brock",
408
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/74.png",
409
- rating: 3,
410
- title: "Holo is clean but corners are more worn than I expected",
411
- comment: "I was hoping for a Lightly Played card closer to NM range. The holo face is genuinely clean — " +
412
- "no scratches and a nice pattern — but the corner whitening is more pronounced than the photos suggested, " +
413
- "putting this closer to Moderately Played in my assessment. " +
414
- "Surge's shipping was excellent and response time was fast. " +
415
- "The price reflects LP so it's fair, but I'd recommend asking for additional photos before ordering a Lightly Played holo at this price. " +
416
- "Not a bad purchase — just calibrate expectations on the LP condition grading.",
417
- images: [cardImg(9)],
559
+ createdAt: daysAgo(7),
560
+ updatedAt: daysAgo(6),
561
+ approvedAt: daysAgo(6),
562
+ },
563
+ // ── Additional reviews across existing stores (new buyers) ────────────────
564
+ {
565
+ id: "review-pokemon-151-box-sneha-029",
566
+ productId: "product-pokemon-151-booster-box",
567
+ productTitle: "Pokémon 151 Booster Box (Sealed)",
568
+ sellerId: "user-aryan-kapoor",
569
+ userId: "user-sneha-kumar",
570
+ userName: "Sneha Kumar",
571
+ rating: 5,
572
+ title: "Investment-grade sealed product — Aryan's sourcing is legit",
573
+ comment: "Bought the 151 booster box for long-term storage. The shrink wrap is tight with no air gaps (sign of authentic factory sealing). Aryan included a UK distributor invoice confirming the source — that level of documentation is exceptional. Box is now in my climate-controlled storage. When I eventually open it, I'll update this review with pull results.",
418
574
  status: "approved",
419
- helpfulCount: 8,
575
+ helpfulCount: 13,
420
576
  reportCount: 0,
421
577
  verified: true,
422
578
  featured: false,
423
- createdAt: daysAgo(16),
424
- updatedAt: daysAgo(16),
425
- approvedAt: daysAgo(16),
579
+ createdAt: daysAgo(30),
580
+ updatedAt: daysAgo(29),
581
+ approvedAt: daysAgo(29),
426
582
  },
427
- // 16. Erika reviews Clefairy uncommon (Misty)
428
583
  {
429
- id: "review-clefairy-base1-35-erika-20260405",
430
- productId: "product-clefairy-base1-35-uncommon-colorless-misty-1",
431
- productTitle: "Clefairy Base Set #35 Uncommon (Near Mint)",
432
- sellerId: "user-misty-water-gym-misty",
433
- userId: "user-erika-celadon-erika",
434
- userName: "Erika",
435
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/45.png",
584
+ id: "review-yugioh-phantom-nightmare-siddharth-030",
585
+ productId: "product-yugioh-phantom-nightmare-box",
586
+ productTitle: "Yu-Gi-Oh! Phantom Nightmare Booster Box (24 Packs)",
587
+ sellerId: "user-nisha-reddy",
588
+ userId: "user-siddharth-rao",
589
+ userName: "Siddharth Rao",
436
590
  rating: 5,
437
- title: "Metronome magic in Near Mintcute card, great seller",
438
- comment: "Clefairy's Metronome is one of the most charming moves in the entire Base Set. " +
439
- "Misty's copy is excellent — Near Mint with tight corners and clean text. " +
440
- "At this price for an uncommon, the quality is impressive. Shipped in a penny sleeve. " +
441
- "Delivery was fast. Misty's attention to card condition even on lower-value uncommons says a lot " +
442
- "about her shop's standards. Will buy my remaining Celadon Pokédex cards here.",
443
- images: [],
591
+ title: "Hit a Fiendsmith Engraver URbest opening of 2024",
592
+ comment: "Ordered the Phantom Nightmare box for the Fiendsmith engine cards. Nisha had it at ₹5,999 when other sellers were charging ₹6,499 for the same product — she's clearly competitive on pricing. Box arrived factory sealed, split into two lots of 12 packs each inside the cardboard insert. Opened all 24 packs, hit the Fiendsmith Engraver Ultra Rare, two Snake-Eye Ash Secret Rares, and a complete Rescue-Ace suite. Excellent pull rate.",
444
593
  status: "approved",
445
- helpfulCount: 5,
594
+ helpfulCount: 22,
446
595
  reportCount: 0,
447
- verified: false,
596
+ verified: true,
448
597
  featured: false,
449
- createdAt: daysAgo(14),
598
+ createdAt: daysAgo(18),
599
+ updatedAt: daysAgo(17),
600
+ approvedAt: daysAgo(17),
601
+ },
602
+ {
603
+ id: "review-beyblade-xstadium-ankit-031",
604
+ productId: "product-beyblade-x-xstadium-official",
605
+ productTitle: "Beyblade X BX-08 XStadium (Official Takara Tomy)",
606
+ sellerId: "user-rohit-joshi",
607
+ userId: "user-ankit-gupta",
608
+ userName: "Ankit Gupta",
609
+ rating: 5,
610
+ title: "Tournament quality — arrived well before my regional event",
611
+ comment: "I needed this stadium for our city's Beyblade X regional. Rohit had it in stock when every other platform was out. Ordered Monday morning, arrived Thursday — with 2 days to spare before the event. The XStadium is the real tournament-spec — the X-Line rail is perfectly calibrated and the floor has no warping. Won my bracket. 10/10 seller.",
612
+ status: "approved",
613
+ helpfulCount: 19,
614
+ reportCount: 0,
615
+ verified: true,
616
+ featured: false,
617
+ createdAt: daysAgo(15),
450
618
  updatedAt: daysAgo(14),
451
619
  approvedAt: daysAgo(14),
452
620
  },
453
- // 17. Oak reviews Gyarados Holo (Misty)
454
621
  {
455
- id: "review-gyarados-base1-6-oak-20260407",
456
- productId: "product-gyarados-base1-6-holo-rare-water-misty-1",
457
- productTitle: "Gyarados Base Set #6 Holo Rare (Near Mint)",
458
- sellerId: "user-misty-water-gym-misty",
459
- userId: "user-prof-oak-pallet-oak",
460
- userName: "Professor Oak",
461
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/143.png",
622
+ id: "review-sth-dodge-viper-siddharth-032",
623
+ productId: "product-hot-wheels-sth-dodge-viper",
624
+ productTitle: "Hot Wheels Super Treasure Hunt Dodge Viper SRT10 (STH)",
625
+ sellerId: "user-vikram-mehta",
626
+ userId: "user-siddharth-rao",
627
+ userName: "Siddharth Rao",
462
628
  rating: 5,
463
- title: "A fearsome sea-serpent in pristine scholarly condition",
464
- comment: "The Gyarados Holo Rare is a fascinating specimena Dragon-type Pokémon on a Water energy card, " +
465
- "reflecting the original design era before Dragon became its own type. " +
466
- "Misty's copy is genuinely Near Mint: deep holo shimmer, tight centering, not a blemish on it. " +
467
- "She shipped it tracked with a rigid top-loader and it arrived within two days. " +
468
- "I've now ordered Blastoise, Gyarados, Lapras, and Starmie from Misty — she is my go-to Water specialist.",
469
- images: [],
629
+ title: "Confirmed STH Spectraflame is glorious, card is mint",
630
+ comment: "Vikram's listing said 'immediately cased after retail pull' and that is exactly what arrivedyou can see the factory crimp on the blister is undisturbed. The Spectraflame Red on this Viper is one of the deepest metallic finishes I've seen on a recent STH. Card is flat, no corner wear, graphic is crisp. This is a ₹2,999 car that will be worth ₹8,000 in a decade. Vikram knows his product.",
470
631
  status: "approved",
471
- helpfulCount: 11,
632
+ helpfulCount: 17,
472
633
  reportCount: 0,
473
634
  verified: true,
474
635
  featured: false,
475
- createdAt: daysAgo(12),
476
- updatedAt: daysAgo(12),
477
- approvedAt: daysAgo(12),
636
+ createdAt: daysAgo(8),
637
+ updatedAt: daysAgo(7),
638
+ approvedAt: daysAgo(7),
478
639
  },
479
- // 18. Sabrina reviews Zap! Theme Deck (Surge)
480
640
  {
481
- id: "review-zap-theme-deck-sabrina-20260408",
482
- productId: "product-zap-theme-deck-sealed-surge-1",
483
- productTitle: "Pokémon Base Set 'Zap!' Theme Deck (Sealed)",
484
- sellerId: "user-lt-surge-electric-surge",
485
- userId: "user-sabrina-saffron-sabrina",
486
- userName: "Sabrina",
487
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/65.png",
641
+ id: "review-neca-tmnt-divya-033",
642
+ productId: "product-neca-tmnt-4figure-set",
643
+ productTitle: "NECA TMNT Classic 1990 Movie 4-Figure Set",
644
+ sellerId: "user-admin-letitrip",
645
+ userId: "user-divya-menon",
646
+ userName: "Divya Menon",
647
+ rating: 5,
648
+ title: "The childhood dream — all 4 Turtles in one box, museum quality",
649
+ comment: "I grew up watching the 1990 TMNT movie and this set made me feel like a kid again. The film-suit sculpts are extraordinary — you can see the texture of the foam rubber suits translated into articulated plastic. LetItRip Official packed the set in a rigid outer casing inside a foam-padded bag inside the shipping box. Three layers of protection for a ₹12,999 set. That's how it should be done.",
650
+ status: "approved",
651
+ helpfulCount: 27,
652
+ reportCount: 0,
653
+ verified: true,
654
+ featured: true,
655
+ createdAt: daysAgo(6),
656
+ updatedAt: daysAgo(5),
657
+ approvedAt: daysAgo(5),
658
+ },
659
+ {
660
+ id: "review-mg-sazabi-verka-kartik-034",
661
+ productId: "product-gundam-mg-sazabi-verka",
662
+ productTitle: "MG 1/100 Sazabi Ver.Ka",
663
+ sellerId: "user-amit-sharma",
664
+ userId: "user-kartik-nair",
665
+ userName: "Kartik Nair",
666
+ rating: 5,
667
+ title: "Graduation kit from HG to MG — Amit guided me through it",
668
+ comment: "After my Barbatos Lupus Rex HG build, I wanted to try Master Grade. I messaged Amit asking if Sazabi Ver.Ka is too advanced for a second build. He was honest — he said it's challenging but doable if you take your time, and he offered to share his build guide PDF. I took 3 weeks to build it and it's perfect. Amit genuinely cares about his customers having a great build experience.",
669
+ status: "approved",
670
+ helpfulCount: 9,
671
+ reportCount: 0,
672
+ verified: true,
673
+ featured: false,
674
+ createdAt: daysAgo(3),
675
+ updatedAt: daysAgo(2),
676
+ approvedAt: daysAgo(2),
677
+ },
678
+ {
679
+ id: "review-pokemon-etb-temporal-ankit-035",
680
+ productId: "product-pokemon-sv-temporal-forces-etb",
681
+ productTitle: "Pokémon TCG: Temporal Forces Elite Trainer Box",
682
+ sellerId: "user-aryan-kapoor",
683
+ userId: "user-ankit-gupta",
684
+ userName: "Ankit Gupta",
488
685
  rating: 4,
489
- title: "Genuine sealed WOTC deckElectric chaos in a box",
490
- comment: "I purchased this as a sealed collectible for display. The factory seal is original and uncompromised " +
491
- "I psychically verified no one has opened it. Surge packaged it excellently: rigid box, bubble wrap, " +
492
- "outer box for shipping. Arrived in perfect shape. " +
493
- "Four stars because the outer box had minor corner denting from transit, but the sealed deck inside is flawless. " +
494
- "For sealed vintage WOTC product this is excellent value. Surge is a trustworthy source.",
495
- images: [],
686
+ title: "Great ETB, good pullswould prefer faster dispatch",
687
+ comment: "Temporal Forces ETB arrived in great condition — sealed correctly, no box damage. Pulled an Iron Leaves ex SAR on pack 4 which more than covered the cost. My only note: dispatch was on Day 3 (I ordered Sunday and it was dispatched Wednesday). Aryan's shipping info says 24-hour dispatch which wasn't met. Dropping one star for that. Card quality and packaging: 5 stars.",
496
688
  status: "approved",
497
689
  helpfulCount: 6,
498
690
  reportCount: 0,
499
691
  verified: true,
500
692
  featured: false,
693
+ createdAt: daysAgo(1),
694
+ updatedAt: daysAgo(1),
695
+ approvedAt: daysAgo(1),
696
+ },
697
+ // ── New reviews 36–60 — expanded seed scale ──────────────────────────────
698
+ // store-pokemon-palace (5 more)
699
+ {
700
+ id: "review-surging-sparks-box-anjali-036",
701
+ productId: "product-pokemon-surging-sparks-booster",
702
+ productTitle: "Pokémon TCG: Surging Sparks Booster Box",
703
+ sellerId: "user-aryan-kapoor",
704
+ userId: "user-anjali-verma",
705
+ userName: "Anjali Verma",
706
+ rating: 5,
707
+ title: "Incredible box — pulled Pikachu ex SAR on the 4th pack",
708
+ comment: "Ordered Sunday afternoon, dispatched Monday morning. Box arrived double-wrapped in bubble pack inside a snug shipper box. Seal was 100% intact. I pulled a Pikachu ex SAR on pack 4 and lost my mind. Aryan texted to confirm delivery — that personal touch goes a long way. Highly recommended.",
709
+ status: "approved",
710
+ helpfulCount: 21,
711
+ reportCount: 0,
712
+ verified: true,
713
+ featured: true,
714
+ createdAt: daysAgo(33),
715
+ updatedAt: daysAgo(32),
716
+ approvedAt: daysAgo(32),
717
+ },
718
+ {
719
+ id: "review-151-etb-rohit-037",
720
+ productId: "product-pokemon-151-etb",
721
+ productTitle: "Pokémon TCG: Scarlet & Violet — 151 Elite Trainer Box",
722
+ sellerId: "user-aryan-kapoor",
723
+ userId: "user-rohit-verma",
724
+ userName: "Rohit Verma",
725
+ rating: 5,
726
+ title: "Best ETB I've bought — zero issues, great seal",
727
+ comment: "This was my third ETB from Pokémon Palace and the experience is consistently flawless. Box came in a heavy shipper with foam corners. The 151 ETB seal is known to be finicky (the flap can come loose in transit) but Aryan had taped the inner flap additionally — smart move. Pulled Charizard ex SIR on pack 7. 10/10.",
728
+ status: "approved",
729
+ helpfulCount: 17,
730
+ reportCount: 0,
731
+ verified: true,
732
+ featured: false,
733
+ createdAt: daysAgo(27),
734
+ updatedAt: daysAgo(26),
735
+ approvedAt: daysAgo(26),
736
+ },
737
+ {
738
+ id: "review-charizard-sar-naman-038",
739
+ productId: "product-pokemon-charizard-ex-sar-sv",
740
+ productTitle: "Pokémon TCG: Charizard ex — Special Illustration Rare",
741
+ sellerId: "user-aryan-kapoor",
742
+ userId: "user-naman-gupta",
743
+ userName: "Naman Gupta",
744
+ rating: 4,
745
+ title: "Genuine NM card, accurate description — arrived safely",
746
+ comment: "Card is exactly as described: NM/M with great centering. Came in penny sleeve + toploader + team bag inside a rigid mailer. I'm planning to get it PSA graded and believe it will grade PSA 9. Slight deduction as the listing photo was slightly different angle from the actual card, but the condition is accurately described. Would buy again.",
747
+ status: "approved",
748
+ helpfulCount: 9,
749
+ reportCount: 0,
750
+ verified: true,
751
+ featured: false,
752
+ createdAt: daysAgo(2),
753
+ updatedAt: daysAgo(2),
754
+ approvedAt: daysAgo(2),
755
+ },
756
+ {
757
+ id: "review-journey-together-etb-kavya-039",
758
+ productId: "product-pokemon-journey-together-etb",
759
+ productTitle: "Pokémon TCG: Journey Together Elite Trainer Box",
760
+ sellerId: "user-aryan-kapoor",
761
+ userId: "user-kavya-nair",
762
+ userName: "Kavya Nair",
763
+ rating: 5,
764
+ title: "Factory fresh — exactly as expected from Pokémon Palace",
765
+ comment: "Consistent five-star experience from Aryan. Journey Together ETB is genuinely one of the nicest ETB boxes in years — the sleeve design is gorgeous. Packs were fresh, no pack-weighed pulls removed. This is a store I trust completely.",
766
+ status: "approved",
767
+ helpfulCount: 8,
768
+ reportCount: 0,
769
+ verified: true,
770
+ featured: false,
771
+ createdAt: daysAgo(14),
772
+ updatedAt: daysAgo(13),
773
+ approvedAt: daysAgo(13),
774
+ },
775
+ {
776
+ id: "review-mewtwo-sar-siddharth-040",
777
+ productId: "product-pokemon-mewtwo-ex-sar-sv",
778
+ productTitle: "Pokémon TCG: Mewtwo ex — Special Illustration Rare",
779
+ sellerId: "user-aryan-kapoor",
780
+ userId: "user-siddharth-mehta",
781
+ userName: "Siddharth Mehta",
782
+ rating: 5,
783
+ title: "One of the best SIRs in the 151 set — perfect condition",
784
+ comment: "Mewtwo ex SIR is stunning in person. Photos on the listing don't do it justice. Card is NM, corners are sharp, no whitening visible. Protected extremely well in transit. Aryan included a personal note in the package — rare touch from a marketplace seller. Fantastic.",
785
+ status: "approved",
786
+ helpfulCount: 12,
787
+ reportCount: 0,
788
+ verified: true,
789
+ featured: false,
790
+ createdAt: daysAgo(6),
791
+ updatedAt: daysAgo(5),
792
+ approvedAt: daysAgo(5),
793
+ },
794
+ // store-cardgame-hub (5 more)
795
+ {
796
+ id: "review-op06-box-rohit-041",
797
+ productId: "product-onepiece-op06-booster-box",
798
+ productTitle: "One Piece Card Game: OP-06 Wings of the Captain Booster Box",
799
+ sellerId: "user-nisha-reddy",
800
+ userId: "user-rohit-verma",
801
+ userName: "Rohit Verma",
802
+ rating: 5,
803
+ title: "Sealed box, excellent pulls — Whitebeard SR in pack 3",
804
+ comment: "CardGame Hub dispatched within a day. Box was sealed beautifully in shrink wrap, original Bandai seal untouched. My first OP-06 box and I pulled the Whitebeard SR in pack 3. Nisha even messaged to check I received it safely. Exceptional seller and I'll be back for every new OP set.",
805
+ status: "approved",
806
+ helpfulCount: 18,
807
+ reportCount: 0,
808
+ verified: true,
809
+ featured: true,
810
+ createdAt: daysAgo(27),
811
+ updatedAt: daysAgo(26),
812
+ approvedAt: daysAgo(26),
813
+ },
814
+ {
815
+ id: "review-blue-eyes-lob-neha-042",
816
+ productId: "product-yugioh-blue-eyes-lob-nm",
817
+ productTitle: "Yu-Gi-Oh! Blue-Eyes White Dragon — LOB 1st Edition (NM)",
818
+ sellerId: "user-nisha-reddy",
819
+ userId: "user-neha-gupta",
820
+ userName: "Neha Gupta",
821
+ rating: 5,
822
+ title: "Incredible 1st Ed BEWD — better condition than the photos show",
823
+ comment: "I've been hunting for a high-grade 1st Edition LOB Blue-Eyes for two years. This one from CardGame Hub exceeded my expectations — corners are sharper than the photos suggest, surface gloss is perfect. Submitting to PSA this week. Nisha was responsive to all my questions before purchase. Couldn't be happier.",
824
+ status: "approved",
825
+ helpfulCount: 24,
826
+ reportCount: 0,
827
+ verified: true,
828
+ featured: true,
829
+ createdAt: daysAgo(22),
830
+ updatedAt: daysAgo(21),
831
+ approvedAt: daysAgo(21),
832
+ },
833
+ {
834
+ id: "review-25th-anniversary-tin-arjun-043",
835
+ productId: "product-yugioh-25th-anniversary-tin",
836
+ productTitle: "Yu-Gi-Oh! 25th Anniversary Tin: Dueling Heroes",
837
+ sellerId: "user-nisha-reddy",
838
+ userId: "user-arjun-singh",
839
+ userName: "Arjun Singh",
840
+ rating: 4,
841
+ title: "Great tin, solid pulls — packaging could have been better",
842
+ comment: "The 25th Anniversary Tin is gorgeous — the embossed design is premium. Got an Ultra Rare Dark Magician as the guaranteed card, which is ideal. My only note is that the outer box wasn't padded very well; the tin corners took a small dent from shipping. Card contents were fine. Four stars — would use more padding next time.",
843
+ status: "approved",
844
+ helpfulCount: 7,
845
+ reportCount: 0,
846
+ verified: true,
847
+ featured: false,
848
+ createdAt: daysAgo(18),
849
+ updatedAt: daysAgo(17),
850
+ approvedAt: daysAgo(17),
851
+ },
852
+ {
853
+ id: "review-op05-box-vikram-044",
854
+ productId: "product-onepiece-op05-booster-box",
855
+ productTitle: "One Piece Card Game: OP-05 Awakening of the New Era Booster Box",
856
+ sellerId: "user-nisha-reddy",
857
+ userId: "user-vikram-rao",
858
+ userName: "Vikram Rao",
859
+ rating: 5,
860
+ title: "Sealed correctly, great communication — would repeat",
861
+ comment: "I was skeptical buying a sealed box online but CardGame Hub's reputation and LetItRip's escrow gave me confidence. Box arrived with original Bandai shrink intact. Nisha sent dispatch notification with tracking within hours. Solid buying experience.",
862
+ status: "approved",
863
+ helpfulCount: 11,
864
+ reportCount: 0,
865
+ verified: true,
866
+ featured: false,
501
867
  createdAt: daysAgo(10),
502
- updatedAt: daysAgo(10),
503
- approvedAt: daysAgo(10),
504
- },
505
- // 19. Gary reviews Growlithe uncommon (Blaine)
506
- {
507
- id: "review-growlithe-base1-40-gary-20260409",
508
- productId: "product-growlithe-base1-40-uncommon-fire-blaine-1",
509
- productTitle: "Growlithe — Base Set #40 Uncommon (Near Mint)",
510
- sellerId: "user-blaine-fire-gym-blaine",
511
- userId: "user-gary-oak-pallet-gary",
512
- userName: "Gary Oak",
513
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/132.png",
868
+ updatedAt: daysAgo(9),
869
+ approvedAt: daysAgo(9),
870
+ },
871
+ {
872
+ id: "review-dark-magician-psa9-divya-045",
873
+ productId: "product-yugioh-dark-magician-lob-psa9",
874
+ productTitle: "Yu-Gi-Oh! Dark Magician — LOB 1st Edition PSA 9",
875
+ sellerId: "user-nisha-reddy",
876
+ userId: "user-divya-reddy",
877
+ userName: "Divya Reddy",
878
+ rating: 5,
879
+ title: "Dream card — PSA 9 slab arrived in perfect shape",
880
+ comment: "This was my biggest single purchase on LetItRip and I'm glad it was from CardGame Hub. The PSA slab came in a foam-fitted inner box with bubble wrap all round. The cert number verified on PSA's site immediately. Dark Magician in a 1st Ed PSA 9 is a piece of Yu-Gi-Oh history. Absolutely worth every rupee.",
881
+ status: "approved",
882
+ helpfulCount: 29,
883
+ reportCount: 0,
884
+ verified: true,
885
+ featured: true,
886
+ createdAt: daysAgo(12),
887
+ updatedAt: daysAgo(11),
888
+ approvedAt: daysAgo(11),
889
+ },
890
+ // store-diecast-depot (5 more)
891
+ {
892
+ id: "review-rlc-porsche-anjali-046",
893
+ productId: "product-hot-wheels-rlc-porsche-918",
894
+ productTitle: "Hot Wheels RLC Exclusive: Porsche 918 Spyder — Spectraflame White",
895
+ sellerId: "user-vikram-mehta",
896
+ userId: "user-anjali-verma",
897
+ userName: "Anjali Verma",
898
+ rating: 5,
899
+ title: "RLC Porsche in mint condition — great packaging",
900
+ comment: "I collect Hot Wheels RLC releases and they're notoriously hard to find in India. Diecast Depot had stock and shipped it in the original RLC mailer inside a padded outer box. Card is perfectly flat, Spectraflame finish is immaculate. Vikram answered all my questions about provenance. Five stars.",
901
+ status: "approved",
902
+ helpfulCount: 15,
903
+ reportCount: 0,
904
+ verified: true,
905
+ featured: false,
906
+ createdAt: daysAgo(15),
907
+ updatedAt: daysAgo(14),
908
+ approvedAt: daysAgo(14),
909
+ },
910
+ {
911
+ id: "review-tomica-lc300-pooja-047",
912
+ productId: "product-tomica-land-cruiser-300",
913
+ productTitle: "Tomica: Toyota Land Cruiser 300 (No. 107)",
914
+ sellerId: "user-vikram-mehta",
915
+ userId: "user-pooja-sharma",
916
+ userName: "Pooja Sharma",
917
+ rating: 5,
918
+ title: "Perfect Tomica — excellent gift packaging",
919
+ comment: "Bought 3 of these as gifts for my nephews. All three arrived in original Tomica boxes, no crushing or damage. The LC300 detail is fantastic for a 1:64. Each car was bubble-wrapped individually even though they were in one order. Really thoughtful packaging from Diecast Depot.",
920
+ status: "approved",
921
+ helpfulCount: 10,
922
+ reportCount: 0,
923
+ verified: true,
924
+ featured: false,
925
+ createdAt: daysAgo(17),
926
+ updatedAt: daysAgo(16),
927
+ approvedAt: daysAgo(16),
928
+ },
929
+ {
930
+ id: "review-car-culture-german-vikram-048",
931
+ productId: "product-hot-wheels-car-culture-german",
932
+ productTitle: "Hot Wheels Car Culture: German Cars & Coffee (5-Car Set)",
933
+ sellerId: "user-vikram-mehta",
934
+ userId: "user-vikram-rao",
935
+ userName: "Vikram Rao",
514
936
  rating: 4,
515
- title: "Cheap filler done rightNM condition, fast PWE delivery",
516
- comment: "I ordered 5 Growlithe for a casual Fire deck. All 5 arrived NMcrisp, clean, and no damage. " +
517
- "Blaine ships uncommons via PWE which is fine for low-value cards; I'd prefer tracking for higher-stakes cards " +
518
- "but for ₹699 uncommons the PWE is completely appropriate. " +
519
- "Good honest seller with accurate condition descriptions. Quick to answer questions. " +
520
- "Solid choice for deck-playable Fire-type singles.",
521
- images: [],
937
+ title: "Lovely Car Culture setone car slightly dusty in package",
938
+ comment: "The German Cars & Coffee set is one of the best Car Culture assortments Mattel has produced. Real Riders on all five cars and the BMW M3 E30 is the standout. My only complaint: the Audi RS5 in the set had visible dust inside the blister pack looks like a factory quality issue, not the seller's fault. Diecast Depot was responsive when I mentioned it.",
522
939
  status: "approved",
523
- helpfulCount: 4,
940
+ helpfulCount: 8,
524
941
  reportCount: 0,
525
942
  verified: true,
526
943
  featured: false,
527
944
  createdAt: daysAgo(8),
945
+ updatedAt: daysAgo(7),
946
+ approvedAt: daysAgo(7),
947
+ },
948
+ {
949
+ id: "review-corgi-db5-kiran-049",
950
+ productId: "product-corgi-aston-martin-db5",
951
+ productTitle: "Corgi: Aston Martin DB5 — James Bond 007 Edition",
952
+ sellerId: "user-vikram-mehta",
953
+ userId: "user-kiran-reddy",
954
+ userName: "Kiran Reddy",
955
+ rating: 5,
956
+ title: "Iconic Bond car — all gadgets work, display piece of the year",
957
+ comment: "Corgi's DB5 is the definitive toy for James Bond fans. The ejector seat mechanism works perfectly, the revolving plates click satisfyingly, and the Spectraflame silver finish is gorgeous. Diecast Depot packed it in the original presentation box inside a custom foam-padded shipper. This is now the centrepiece of my display shelf.",
958
+ status: "approved",
959
+ helpfulCount: 19,
960
+ reportCount: 0,
961
+ verified: true,
962
+ featured: true,
963
+ createdAt: daysAgo(3),
964
+ updatedAt: daysAgo(2),
965
+ approvedAt: daysAgo(2),
966
+ },
967
+ {
968
+ id: "review-civic-type-r-naman-050",
969
+ productId: "product-tomica-civic-type-r-fl5",
970
+ productTitle: "Tomica: Honda Civic Type R FL5 (No. 29)",
971
+ sellerId: "user-vikram-mehta",
972
+ userId: "user-naman-gupta",
973
+ userName: "Naman Gupta",
974
+ rating: 5,
975
+ title: "The FL5 in 1:64 — brilliant detail for the price",
976
+ comment: "Own the real FL5 and bought the Tomica to put on my desk. The proportions are spot on — Tomica's FL5 is significantly more accurate than the Hot Wheels version. Arrives in original box, mint. Diecast Depot's packaging is always reliable. Fast shipping too.",
977
+ status: "approved",
978
+ helpfulCount: 13,
979
+ reportCount: 0,
980
+ verified: true,
981
+ featured: false,
982
+ createdAt: daysAgo(9),
528
983
  updatedAt: daysAgo(8),
529
984
  approvedAt: daysAgo(8),
530
985
  },
531
- // ══════════════════════════════════════════════════════════════
532
- // PENDING (awaiting moderation)
533
- // ══════════════════════════════════════════════════════════════
534
- // 20. Ash — pending review of Lightning Energy lot (Surge)
535
- {
536
- id: "review-lightning-energy-ash-20260428",
537
- productId: "product-lightning-energy-base1-101-common-energy-surge-lot",
538
- productTitle: "Lightning Energy — Base Set #101 x10 Lot (Near Mint)",
539
- sellerId: "user-lt-surge-electric-surge",
540
- userId: "user-ash-ketchum-pallet-ash",
541
- userName: "Ash Ketchum",
542
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png",
543
- rating: 5,
544
- title: "Shocked by the quality — Surge delivers again!",
545
- comment: "Ordered two lots of 10 Lightning Energy for my Pikachu-themed deck build. All 20 cards arrived NM — " +
546
- "perfect for powering up Thunderbolt. Surge shipped them in a team bag in a bubble mailer. " +
547
- "Honestly these are the nicest Base Set commons I've received. " +
548
- "Fast delivery, great condition, fair price. Pika pika approved!",
549
- images: [],
550
- status: "pending",
551
- helpfulCount: 0,
986
+ // store-beyblade-arena (3 more)
987
+ {
988
+ id: "review-bx01-dran-sword-preeti-051",
989
+ productId: "product-beyblade-x-bx01-dran-sword",
990
+ productTitle: "Beyblade X: BX-01 Dran Sword 3-60F",
991
+ sellerId: "user-rohit-joshi",
992
+ userId: "user-preeti-joshi",
993
+ userName: "Preeti Joshi",
994
+ rating: 5,
995
+ title: "Perfect intro kit for Beyblade X — great for kids and adults",
996
+ comment: "Bought 2 of these as a birthday gift combo. Rohit packed each one individually in bubble wrap. My nephew's face when he opened these was priceless. The Xtreme Dash mechanic on the X-format is genuinely exciting. Beyblade Arena is the go-to store for X-format in India.",
997
+ status: "approved",
998
+ helpfulCount: 14,
552
999
  reportCount: 0,
553
1000
  verified: true,
554
- createdAt: daysAgo(5),
555
- updatedAt: daysAgo(5),
1001
+ featured: false,
1002
+ createdAt: daysAgo(3),
1003
+ updatedAt: daysAgo(2),
1004
+ approvedAt: daysAgo(2),
556
1005
  },
557
- // 21. Brock — pending review of Beedrill non-holo (Blaine)
558
1006
  {
559
- id: "review-beedrill-base1-17-brock-20260429",
560
- productId: "product-beedrill-base1-17-non-holo-rare-grass-blaine-1",
561
- productTitle: "Beedrill Base Set #17 Non-Holo Rare (Near Mint)",
562
- sellerId: "user-blaine-fire-gym-blaine",
563
- userId: "user-brock-pewter-brock",
564
- userName: "Brock",
565
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/74.png",
566
- rating: 3,
567
- title: "NM as listed, but Beedrill deserves a Grass-type seller",
568
- comment: "The card itself is fine — Near Mint, clean print, arrived safely in a penny sleeve. " +
569
- "My slight hesitation is philosophical: Beedrill is a Grass-type and Blaine runs a Fire-type shop. " +
570
- "Nothing wrong with the sale, just a curious choice. If you need a NM Beedrill quickly, " +
571
- "Blaine has it and ships fast. Three stars because the card is technically correct but I'm still thinking about it.",
572
- images: [],
573
- status: "pending",
574
- helpfulCount: 0,
1007
+ id: "review-bx07-hells-chain-ananya-052",
1008
+ productId: "product-beyblade-x-bx07-hells-chain",
1009
+ productTitle: "Beyblade X: BX-07 Hells Chain 5-60HT",
1010
+ sellerId: "user-rohit-joshi",
1011
+ userId: "user-ananya-krishna",
1012
+ userName: "Ananya Krishna",
1013
+ rating: 5,
1014
+ title: "Dominating stamina Bey — won my first local tournament with it",
1015
+ comment: "Hells Chain is the best stamina Bey in the current X format. Rohit shipped it fast and it arrived in original packaging. I won my first local LetItRip club tournament with this — the HT driver just refuses to stop spinning. Beyblade Arena is the best store for serious bladers.",
1016
+ status: "approved",
1017
+ helpfulCount: 22,
575
1018
  reportCount: 0,
576
- verified: false,
577
- createdAt: daysAgo(4),
578
- updatedAt: daysAgo(4),
1019
+ verified: true,
1020
+ featured: true,
1021
+ createdAt: daysAgo(55),
1022
+ updatedAt: daysAgo(54),
1023
+ approvedAt: daysAgo(54),
579
1024
  },
580
- // 22. Erika — pending review of Energy Retrieval trainer (Misty)
581
1025
  {
582
- id: "review-energy-retrieval-erika-20260430",
583
- productId: "product-energy-retrieval-base1-91-common-trainer-misty-1",
584
- productTitle: "Energy Retrieval Base Set #91 Trainer (Near Mint)",
585
- sellerId: "user-misty-water-gym-misty",
586
- userId: "user-erika-celadon-erika",
587
- userName: "Erika",
588
- userAvatar: "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/45.png",
1026
+ id: "review-bx16-launcher-siddharth-053",
1027
+ productId: "product-beyblade-x-bx16-sword-launcher",
1028
+ productTitle: "Beyblade X: BX-16 Sword Launcher",
1029
+ sellerId: "user-rohit-joshi",
1030
+ userId: "user-siddharth-mehta",
1031
+ userName: "Siddharth Mehta",
1032
+ rating: 4,
1033
+ title: "Great launcher, solid grip — small delay in dispatch",
1034
+ comment: "The BX-16 Sword Launcher is a significant upgrade over the included ripcord launchers. Grip angle control makes a real difference in competitive launches. Arrived intact. Dispatch was 3 days after order (listed as 2 days) — minor inconvenience. The launcher itself: full marks.",
1035
+ status: "approved",
1036
+ helpfulCount: 6,
1037
+ reportCount: 0,
1038
+ verified: true,
1039
+ featured: false,
1040
+ createdAt: daysAgo(7),
1041
+ updatedAt: daysAgo(6),
1042
+ approvedAt: daysAgo(6),
1043
+ },
1044
+ // store-letitrip-official (4 more)
1045
+ {
1046
+ id: "review-figma-link-totk-naman-054",
1047
+ productId: "product-figma-link-totk",
1048
+ productTitle: "figma: The Legend of Zelda: Tears of the Kingdom — Link",
1049
+ sellerId: "user-admin-letitrip",
1050
+ userId: "user-naman-gupta",
1051
+ userName: "Naman Gupta",
589
1052
  rating: 5,
590
- title: "Deck staple in mint condition Misty's Water selection impresses",
591
- comment: "I needed four Energy Retrieval for my Venusaur-Vileplume combo deck and Misty had them all in NM. " +
592
- "Cards are crisp and clean, no sleeve marks. Shipped together in a PWE which is totally fine for ₹599 cards. " +
593
- "Misty stocks trainer cards that synergise with her Water lineup — smart curation. " +
594
- "Will be ordering more trainer staples from here.",
595
- images: [],
596
- status: "pending",
597
- helpfulCount: 0,
1053
+ title: "Best figma I ownevery accessory accounted for, perfect box",
1054
+ comment: "LetItRip Official is where I buy all my premium figures. The figma Link TotK is Max Factory at their best — articulation is incredible and the Ultrahand accessories are a lovely touch for TotK fans. Box arrived in a shipper with foam on all six sides. Not a single accessory missing. The photoshoot I did with this figure after unboxing got 400 likes on Instagram.",
1055
+ status: "approved",
1056
+ helpfulCount: 26,
598
1057
  reportCount: 0,
599
1058
  verified: true,
600
- createdAt: daysAgo(3),
601
- updatedAt: daysAgo(3),
602
- },
603
- // ══════════════════════════════════════════════════════════════
604
- // REJECTED (spam / inappropriate)
605
- // ══════════════════════════════════════════════════════════════
606
- // 23. Fake review — spam link on Dugtrio (Misty)
607
- {
608
- id: "review-dugtrio-base1-19-spam-20260415",
609
- productId: "product-dugtrio-base1-19-non-holo-rare-fighting-misty-1",
610
- productTitle: "Dugtrio — Base Set #19 Non-Holo Rare (Near Mint)",
611
- sellerId: "user-misty-water-gym-misty",
612
- userId: "user-unverified-new-user",
613
- userName: "New Trainer",
614
- userAvatar: undefined,
615
- rating: 1,
616
- title: "Fake card!! Buy real cards at cheapcardz.biz",
617
- comment: "This card is counterfeit!!! I can prove it. Visit cheapcardz.biz for AUTHENTIC Base Set cards at 90% off. " +
618
- "Don't trust this seller — click my link for the real deal. Promo code PIKA50 saves 50%!!!",
619
- images: [],
620
- status: "rejected",
621
- moderatorId: "user-moderator-mod-user",
622
- moderatorNote: "Spam comment with external promotional link and promo code",
623
- rejectionReason: "Contains spam links and promotional content",
624
- helpfulCount: 0,
625
- reportCount: 5,
626
- verified: false,
627
- createdAt: daysAgo(15),
628
- updatedAt: daysAgo(14),
629
- rejectedAt: daysAgo(14),
1059
+ featured: true,
1060
+ createdAt: daysAgo(44),
1061
+ updatedAt: daysAgo(43),
1062
+ approvedAt: daysAgo(43),
630
1063
  },
631
- // 24. Hostile/off-topic review on Blastoise (Misty)
632
1064
  {
633
- id: "review-blastoise-base1-2-hostile-20260418",
634
- productId: "product-blastoise-base1-2-holo-rare-water-misty-1",
635
- productTitle: "Blastoise Base Set #2 Holo Rare (Near Mint)",
636
- sellerId: "user-misty-water-gym-misty",
637
- userId: "user-unverified-new-user",
638
- userName: "New Trainer",
639
- userAvatar: undefined,
640
- rating: 2,
641
- title: "Water types are WEAKwhy does anyone collect these",
642
- comment: "Fire types beat Water types. Charizard destroys Blastoise. " +
643
- "This shop is a waste of time. Misty is the worst Gym Leader. " +
644
- "Nobody should buy Water cards when Fire exists. Grow up collectors.",
645
- images: [],
646
- status: "rejected",
647
- moderatorId: "user-moderator-mod-user",
648
- moderatorNote: "Hostile, off-topic, and does not review the product",
649
- rejectionReason: "Abusive and off-topic content unrelated to the product",
650
- helpfulCount: 0,
651
- reportCount: 4,
652
- verified: false,
1065
+ id: "review-mafex-miles-rohan-055",
1066
+ productId: "product-mafex-miles-morales-spiderman",
1067
+ productTitle: "MAFEX No.240: Miles Morales Spider-Man",
1068
+ sellerId: "user-admin-letitrip",
1069
+ userId: "user-rohan-joshi",
1070
+ userName: "Rohan Joshi",
1071
+ rating: 5,
1072
+ title: "MAFEX quality is unmatched — Miles looks incredible on shelf",
1073
+ comment: "MAFEX figures are a premium buy and I needed to know LetItRip Official would handle the shipping correctly. They absolutely did foam-lined shipper, original Medicom box in perfect shape. The figure itself is phenomenal: fabric suit texture, 12 web effect parts, 3 faceplates. Miles Morales has never looked better. This is the definitive Miles figure.",
1074
+ status: "approved",
1075
+ helpfulCount: 33,
1076
+ reportCount: 0,
1077
+ verified: true,
1078
+ featured: true,
1079
+ createdAt: daysAgo(1),
1080
+ updatedAt: daysAgo(1),
1081
+ approvedAt: daysAgo(1),
1082
+ },
1083
+ {
1084
+ id: "review-nendo-miku-v4x-pooja-056",
1085
+ productId: "product-nendoroid-hatsune-miku-v4x",
1086
+ productTitle: "Nendoroid: Hatsune Miku V4X",
1087
+ sellerId: "user-admin-letitrip",
1088
+ userId: "user-pooja-sharma",
1089
+ userName: "Pooja Sharma",
1090
+ rating: 5,
1091
+ title: "My first Nendoroid — couldn't have chosen a better store",
1092
+ comment: "As a first-time Nendoroid buyer I was nervous about getting a genuine GSC product. LetItRip Official made it easy — the box has all the Japanese and English authentication marks, the figure quality is incredible. Miku V4X is the perfect starter Nendoroid. The leek accessory made me laugh. Excellent from start to finish.",
1093
+ status: "approved",
1094
+ helpfulCount: 16,
1095
+ reportCount: 0,
1096
+ verified: true,
1097
+ featured: false,
1098
+ createdAt: daysAgo(37),
1099
+ updatedAt: daysAgo(36),
1100
+ approvedAt: daysAgo(36),
1101
+ },
1102
+ {
1103
+ id: "review-funko-gojo-kavya-057",
1104
+ productId: "product-funko-pop-gojo-satoru",
1105
+ productTitle: "Funko Pop! Animation: Jujutsu Kaisen — Gojo Satoru #1373",
1106
+ sellerId: "user-admin-letitrip",
1107
+ userId: "user-kavya-nair",
1108
+ userName: "Kavya Nair",
1109
+ rating: 5,
1110
+ title: "Mint box, quick delivery — Gojo looks great in blindfold",
1111
+ comment: "Ordered on Friday, arrived Tuesday — that's excellent for Kerala. Funko box had a protector sleeve on it and was in a padded mailer. Zero dents or crushes. Gojo's blindfold design is so much better than some of the unmasked variants. Perfect gift for my JJK fan friend.",
1112
+ status: "approved",
1113
+ helpfulCount: 8,
1114
+ reportCount: 0,
1115
+ verified: true,
1116
+ featured: false,
653
1117
  createdAt: daysAgo(12),
654
1118
  updatedAt: daysAgo(11),
655
- rejectedAt: daysAgo(11),
1119
+ approvedAt: daysAgo(11),
1120
+ },
1121
+ // store-tokyo-toys-india (3 more)
1122
+ {
1123
+ id: "review-alter-rem-wedding-anjali-058",
1124
+ productId: "product-alter-rem-wedding-scale",
1125
+ productTitle: "ALTER: Re:ZERO — Rem (Wedding Ver.) 1/7 Scale Figure",
1126
+ sellerId: "user-priya-singh",
1127
+ userId: "user-anjali-verma",
1128
+ userName: "Anjali Verma",
1129
+ rating: 5,
1130
+ title: "ALTER quality is another level — this figure is breathtaking",
1131
+ comment: "My most expensive figure purchase to date and absolutely worth it. ALTER's Rem Wedding Ver. is spectacular — the lace on the dress has visible weave texture, the bouquet flowers are individually painted, and the expression sculpt is perfect. Tokyo Toys India shipped in a double-box with foam cut to the figure's exact shape. Pristine arrival. I cried a little.",
1132
+ status: "approved",
1133
+ helpfulCount: 35,
1134
+ reportCount: 0,
1135
+ verified: true,
1136
+ featured: true,
1137
+ createdAt: daysAgo(34),
1138
+ updatedAt: daysAgo(33),
1139
+ approvedAt: daysAgo(33),
1140
+ },
1141
+ {
1142
+ id: "review-gsc-aqua-ananya-059",
1143
+ productId: "product-gsc-aqua-konosuba-scale",
1144
+ productTitle: "Good Smile Company: KonoSuba — Aqua 1/7 Scale Figure",
1145
+ sellerId: "user-priya-singh",
1146
+ userId: "user-ananya-krishna",
1147
+ userName: "Ananya Krishna",
1148
+ rating: 5,
1149
+ title: "Aqua deserves all the praise — this figure is stunning",
1150
+ comment: "The Aqua 1/7 scale from GSC captures her personality perfectly. The water effect base is translucent blue with shimmer built into the plastic — it looks magical in direct light. Tokyo Toys India's packaging was impeccable: foam form-fitting inserts, zero movement in the box. Figure arrived in showroom condition. Priya also included a polishing cloth — thoughtful.",
1151
+ status: "approved",
1152
+ helpfulCount: 28,
1153
+ reportCount: 0,
1154
+ verified: true,
1155
+ featured: true,
1156
+ createdAt: daysAgo(59),
1157
+ updatedAt: daysAgo(58),
1158
+ approvedAt: daysAgo(58),
1159
+ },
1160
+ {
1161
+ id: "review-nendo-zero-two-siddharth-060",
1162
+ productId: "product-nendoroid-zero-two-darling",
1163
+ productTitle: "Nendoroid: DARLING in the FRANXX — Zero Two #952",
1164
+ sellerId: "user-priya-singh",
1165
+ userId: "user-siddharth-mehta",
1166
+ userName: "Siddharth Mehta",
1167
+ rating: 3,
1168
+ title: "Great figure but one faceplate had a paint defect — resolved",
1169
+ comment: "The Zero Two Nendoroid is beautiful but one of the three faceplates (the sad expression) had a small paint smear near the right eye. I contacted Tokyo Toys India and Priya responded within 2 hours offering a replacement faceplate at no charge — which arrived 5 days later. The resolution was outstanding. Dropping two stars for the initial defect, adding one back for the excellent after-sale service. Net 3/5 but I would buy here again.",
1170
+ status: "approved",
1171
+ helpfulCount: 12,
1172
+ reportCount: 0,
1173
+ verified: true,
1174
+ featured: false,
1175
+ sellerReply: "Siddharth, we're genuinely sorry about the paint defect on the sad faceplate — QC missed that one. We're glad the replacement arrived quickly and we appreciate you updating your review. Your feedback helps us improve our inspection process.",
1176
+ sellerRepliedAt: daysAgo(2),
1177
+ createdAt: daysAgo(8),
1178
+ updatedAt: daysAgo(2),
1179
+ approvedAt: daysAgo(3),
656
1180
  },
657
1181
  ];
1182
+ export const reviewsSeedData = rawReviews.map(({ sellerId, ...r }) => ({
1183
+ ...r,
1184
+ ...(sellerId ? (SELLER_STORE[sellerId] ?? {}) : {}),
1185
+ }));