@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,556 +1,295 @@
1
1
  /**
2
- * Blog Posts Seed Data — Pokemon TCG Card Collecting
3
- * Sample blog posts covering Pokemon card collecting, grading, investing, and authentication.
2
+ * Blog Posts Seed Data — LetItRip Collectibles Platform
3
+ * 8 posts covering Pokémon TCG, Hot Wheels, Beyblade X, Yu-Gi-Oh!, Gundam,
4
+ * Funko Pop, Tomica, and authentication. blog- prefix, id === slug.
4
5
  */
5
6
  import { BLOG_POST_FIELDS } from "../features/blog/schemas";
6
- // Dynamic date helpers
7
7
  const NOW = new Date();
8
8
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
9
9
  export const blogPostsSeedData = [
10
- // -- Featured / Published -----------------------------------------------
10
+ // ── 1. Grading Guide (featured) ──────────────────────────────────────────
11
11
  {
12
- id: "blog-top-10-valuable-base-set-pokemon-cards-2026-guides",
13
- title: "Top 10 Most Valuable Base Set Pokemon Cards in 2026",
14
- slug: "top-10-valuable-base-set-pokemon-cards-2026",
15
- excerpt: "From the iconic 1st Edition Charizard to the sleeper hit Chansey we rank the 10 most valuable original Base Set cards and what they're fetching on the market in 2026.",
16
- content: `<h2>1. 1st Edition Charizard — Base Set #4 (PSA 10)</h2><p>The undisputed king of Pokemon TCG collecting. A PSA 10 1st Edition Charizard crossed ₹75 lakh at auction in 2025 and continues to appreciate. Even a raw Near Mint copy commands ₹80,000–₹1,20,000 depending on centering. This card alone defines the hobby for an entire generation.</p><h2>2. 1st Edition Blastoise — Base Set #2 (PSA 9)</h2><p>Blastoise is the sleeper pick of the set. PSA 9 copies have climbed to ₹18,000–₹30,000 as collectors who couldn't afford Charizard turned their attention here. The turtle shell holo pattern is stunning in high grade.</p><h2>3. 1st Edition Venusaur — Base Set #15 (PSA 8+)</h2><p>Venusaur has historically been the weakest of the three starter holos, but 2026 has seen renewed interest. A PSA 8 now trades around ₹8,000–₹14,000 — still highly accessible compared to its Fire rival.</p><h2>4. Mewtwo — Base Set #10 (PSA 9)</h2><p>The Genetic Pokemon. Mewtwo's holo is sharp, clean, and one of the most recognisable in all of TCG history. PSA 9 copies fetch ₹40,000–₹65,000 in 2026. Its Psychic-type exclusivity makes it a must for theme collectors.</p><h2>5. Gyarados — Base Set #6 (PSA 8)</h2><p>Gyarados has some of the most dramatic full-art holo artwork in the entire Base Set. PSA 8 copies are trading around ₹7,000–₹12,000, making this an excellent entry point for new collectors.</p><h2>6. Zapdos — Base Set #16 (PSA 9)</h2><p>The legendary Electric bird is the most undervalued of the three Birds trio. Near Mint raw copies are available for ₹5,000–₹9,000 — a relative bargain if you expect the gap to close versus Articuno and Moltres.</p><h2>7. Chansey — Base Set #3</h2><p>Chansey is the surprise entry. At 120 HP it had the highest HP in the original set, and its Colorless type kept it playable. Raw NM copies trade around ₹3,500–₹7,000 — a card with significant upside as awareness grows.</p><h2>8. Professor Oak — Base Set #88 (Trainer)</h2><p>The most powerful Trainer card ever printed in the original format. Draw 7 cards and restart your hand. NM copies are surprisingly affordable at ₹1,500–₹3,500, and PSA 9 graded copies regularly sell for ₹8,000+.</p><h2>9. Pikachu — Base Set #58 (Red Cheeks / Yellow Cheeks Variant)</h2><p>The mascot card exists in two variants — Red Cheeks (more common) and Yellow Cheeks (rarer, higher value). Yellow Cheeks PSA 9 copies fetch ₹6,000–₹12,000. Always check the variant before grading.</p><h2>10. 1st Edition Nidoking — Base Set #11</h2><p>Nidoking rounds out our list. Consistently overlooked, a PSA 9 1st Edition copy has been trading upward and represents excellent value for a complete Base Set holo rare collection.</p>`,
17
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
12
+ id: "blog-how-to-grade-pokemon-cards-psa-bgs-guide",
13
+ slug: "blog-how-to-grade-pokemon-cards-psa-bgs-guide",
14
+ title: "How to Grade Your Pokémon Cards — PSA vs. BGS Complete Guide",
15
+ excerpt: "Sending a card to PSA or BGS can turn a raw Near Mint copy into a certified slab worth 3–10× more. Here is everything you need to know before your first submission.",
16
+ content: `<h2>Why Grade?</h2>
17
+ <p>A PSA 10 Gem Mint 1st Edition Charizard can fetch ₹80 lakh at auction while a raw NM copy of the same card trades around ₹1.2 lakh. Grading is authentication, preservation, and valuation in one step.</p>
18
+ <h2>PSA vs. BGS — Which to Choose?</h2>
19
+ <p><strong>PSA (Professional Sports Authenticator)</strong> is the gold standard for vintage Pokémon. PSA 10s command the highest premiums on the secondary market. PSA grades on a 1–10 scale with a single composite grade. Turnaround: 45–90 days for economy tier.</p>
20
+ <p><strong>BGS (Beckett Grading Services)</strong> gives four sub-grades: Centering, Corners, Edges, and Surface. A BGS 9.5 Pristine or 10 Black Label is considered superior to a PSA 10 by many collectors. BGS grades are easier to dispute visually since sub-grades are listed.</p>
21
+ <h2>How to Prepare Your Cards</h2>
22
+ <ol>
23
+ <li>Handle only by edges — never touch the face or back.</li>
24
+ <li>Inspect under bright LED light at 45° angle for print lines, scratches, and whitening on corners.</li>
25
+ <li>Sleeve immediately in a penny sleeve, then a perfect-fit sleeve, then a toploader.</li>
26
+ <li>Pack cards in card saver I holders for submission (PSA requires these).</li>
27
+ </ol>
28
+ <h2>Grading Tiers and Costs</h2>
29
+ <p>PSA Economy (₹4,500/card, 45 days), PSA Regular (₹8,200/card, 20 days), BGS Regular (₹5,000/card, 20 days). Always insure high-value submissions. Cards valued over ₹50,000 should go Regular tier for faster return and better customer service if lost.</p>
30
+ <h2>What Grade Can I Expect?</h2>
31
+ <p>Modern cards printed after 2016 (Sun & Moon onwards) grade well — print quality improved significantly. Base Set and Jungle cards have machine crimps on edges that commonly result in PSA 8 or 9. A PSA 9 vintage card is excellent; a PSA 10 vintage is exceptional and rare.</p>
32
+ <h2>Submitting from India</h2>
33
+ <p>Use PSA's authorised Indian submitter or a collector group submission. Declare value accurately on customs forms. Expect 2–4 weeks additional transit time on top of grading turnaround. Returns are insured by the grader up to declared value.</p>`,
34
+ coverImage: "https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?w=1200&h=630&fit=crop",
18
35
  category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
19
- tags: [
20
- "base-set",
21
- "charizard",
22
- "valuable",
23
- "investment",
24
- "1st-edition",
25
- "top-10",
26
- ],
36
+ tags: ["grading", "psa", "bgs", "pokemon-cards", "how-to"],
27
37
  isFeatured: true,
28
38
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
29
- publishedAt: daysAgo(58),
30
- authorId: "user-admin-user-admin",
31
- authorName: "Admin User",
32
- readTimeMinutes: 9,
33
- views: 6241,
34
- metaTitle: "Top 10 Most Valuable Pokemon Base Set Cards in 2026 | LetItRip",
35
- metaDescription: "Discover the 10 most valuable original Base Set Pokemon cards in 2026 with prices, grading tips, and why Charizard still reigns supreme.",
36
- createdAt: daysAgo(60),
37
- updatedAt: daysAgo(58),
39
+ publishedAt: daysAgo(62),
40
+ authorId: "user-admin-letitrip",
41
+ authorName: "LetItRip Admin",
42
+ readTimeMinutes: 8,
43
+ views: 5420,
44
+ metaTitle: "How to Grade Pokémon Cards PSA vs BGS Guide | LetItRip",
45
+ metaDescription: "Complete guide to grading Pokémon cards with PSA and BGScosts, preparation, what grade to expect, and how to submit from India.",
46
+ createdAt: daysAgo(65),
47
+ updatedAt: daysAgo(62),
38
48
  },
49
+ // ── 2. Top 10 Hot Wheels Chase Cars ─────────────────────────────────────
39
50
  {
40
- id: "blog-how-to-grade-pokemon-cards-psa-vs-beckett-tips",
41
- title: "How to Grade Your Pokemon Cards — PSA vs. Beckett Guide",
42
- slug: "how-to-grade-pokemon-cards-psa-vs-beckett",
43
- excerpt: "Grading transforms a raw card into a certified, tradeable asset. This guide walks you through PSA and Beckett grading costs, timelines, what graders look for, and which scale suits your collection goals.",
44
- content: `<h2>Why Grade Your Pokemon Cards?</h2><p>A PSA 9 Charizard isn't just a beautiful card — it's a verified asset. Grading encases the card in a tamper-evident holder, assigns a standardised grade, and dramatically increases resale value and buyer confidence. A raw NM Charizard might fetch ₹40,000; the same card in a PSA 9 slab regularly sells for ₹90,000–₹1,50,000.</p><h2>PSA — Professional Sports Authenticator</h2><p>PSA is the world's most recognised grading authority for Pokemon TCG. Their 1–10 scale is widely understood by buyers and sellers globally, making PSA-graded cards the most liquid on the secondary market.</p><ul><li><strong>PSA 10 (Gem Mint):</strong> Perfect centering, four sharp corners, no scratches or print defects. The holy grail.</li><li><strong>PSA 9 (Mint):</strong> One minor imperfection allowed — often a tiny corner bevel or 55/45 centering. Excellent investment grade.</li><li><strong>PSA 8 (Near Mint-Mint):</strong> Light wear on 1–2 corners, or centering up to 65/35. Still highly collectible.</li><li><strong>PSA 7 (Near Mint):</strong> Light surface marks, slightly miscut. Good entry-level investment.</li></ul><h2>Beckett (BGS / BVG)</h2><p>Beckett grades on four sub-scores — Centering, Corners, Edges, and Surface — then averages them to a 1–10 scale. Their ultra-rare BGS 9.5 "Black Label" (all four sub-scores at 9.5) commands significant premiums. Beckett is preferred by high-end collectors who want detailed condition breakdowns.</p><h2>Preparation: What to Do Before Submitting</h2><ol><li>Clean the card with a microfibre cloth — no liquids.</li><li>Store in a penny sleeve then a top-loader for transit.</li><li>Photograph both sides under bright light to document condition pre-submission.</li><li>Use a submission service or send directly via the PSA/Beckett website.</li></ol><h2>Current Turnaround Times (2026)</h2><p>PSA Economy (slowest): 6–9 months. PSA Standard: 3–4 months. PSA Express: 4–6 weeks. Beckett Standard: 4–8 weeks. Budget for grading costs of ₹1,500–₹8,000 per card depending on declared value and tier.</p><h2>Which Should You Choose?</h2><p>For most Base Set singles, choose PSA — the liquidity premium and global recognition justify it. For modern cards or slabs where you want sub-scores, Beckett is the better choice.</p>`,
45
- coverImage: "https://images.pokemontcg.io/base1/10_hires.png",
46
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.TIPS,
47
- tags: ["grading", "psa", "beckett", "how-to", "guide", "authentication"],
51
+ id: "blog-top-10-hot-wheels-chase-cars-2025",
52
+ slug: "blog-top-10-hot-wheels-chase-cars-2025",
53
+ title: "Top 10 Hot Wheels Chase Cars of 2025 (Super Treasure Hunts)",
54
+ excerpt: "Super Treasure Hunts are the holy grail of Hot Wheels collecting. Here are the 10 most sought-after STHs of 2025 and what they're trading for in India.",
55
+ content: `<h2>What is a Super Treasure Hunt?</h2>
56
+ <p>Mattel seeds roughly 1 in every 10,000 Hot Wheels cards with a Super Treasure Hunt (STH) — identified by Spectraflame metallic paint, Real Rider rubber tyres, and a gold $$TH$$ logo on the blister. In India, a standard mainline car costs ₹100–130; an STH of the same casting can trade for ₹800–5,000 depending on the casting.</p>
57
+ <h2>2025's Most Valuable STHs</h2>
58
+ <ol>
59
+ <li><strong>Custom '69 Camaro STH</strong> — Spectraflame red, Real Riders, ₹3,200–4,800</li>
60
+ <li><strong>Bone Shaker STH</strong> — Spectraflame purple, ₹2,800–4,200</li>
61
+ <li><strong>Dodge Challenger Demon STH</strong> — Spectraflame orange, ₹2,200–3,500</li>
62
+ <li><strong>Twin Mill STH</strong> — Spectraflame blue, ₹2,000–3,200</li>
63
+ <li><strong>Corvette C8 STH</strong> — Spectraflame green, ₹1,800–2,800</li>
64
+ <li><strong>Ford GT Heritage STH</strong> — Spectraflame white, ₹1,600–2,500</li>
65
+ <li><strong>Nissan Skyline GT-R STH</strong> — Spectraflame silver, ₹1,400–2,200</li>
66
+ <li><strong>Hot Wheels Racing Circuit STH</strong> — Spectraflame yellow, ₹1,200–2,000</li>
67
+ <li><strong>Datsun 240Z STH</strong> — Spectraflame teal, ₹1,100–1,800</li>
68
+ <li><strong>McLaren Senna STH</strong> — Spectraflame copper, ₹1,000–1,600</li>
69
+ </ol>
70
+ <h2>How to Hunt for STHs in India</h2>
71
+ <p>Check the bottom of each card for the $$TH$$ symbol before purchasing. Most Indian retailers receive mixed cases — visit stores on restock day (usually Tuesday or Wednesday). Many collectors source directly from Japan via proxy services for Japanese-exclusive castings.</p>
72
+ <h2>Protecting Your STHs</h2>
73
+ <p>Store carded STHs in Premium Card Protectors (UV resistant, 6mm thick). Never remove from blister — a carded STH is worth 2–5× a loose one. Stack horizontally with acid-free foam separators.</p>`,
74
+ coverImage: "https://images.unsplash.com/photo-1581235720704-06d3acfcb36f?w=1200&h=630&fit=crop",
75
+ category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
76
+ tags: ["hot-wheels", "super-treasure-hunt", "sth", "diecast", "collecting"],
48
77
  isFeatured: true,
49
78
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
50
- publishedAt: daysAgo(50),
51
- authorId: "user-admin-user-admin",
52
- authorName: "Admin User",
53
- readTimeMinutes: 10,
54
- views: 7823,
55
- metaTitle: "How to Grade Pokemon Cards PSA vs Beckett 2026 Guide | LetItRip",
56
- metaDescription: "Complete guide to grading your Pokemon cards with PSA and Beckettcosts, timelines, what graders check, and which service to choose.",
57
- createdAt: daysAgo(52),
58
- updatedAt: daysAgo(50),
79
+ publishedAt: daysAgo(47),
80
+ authorId: "user-vikram-mehta",
81
+ authorName: "Vikram Mehta",
82
+ readTimeMinutes: 6,
83
+ views: 3180,
84
+ metaTitle: "Top 10 Hot Wheels Super Treasure Hunts 2025 | LetItRip",
85
+ metaDescription: "The 10 most valuable Hot Wheels Super Treasure Hunts of 2025Spectraflame paint, Real Riders, and prices in India.",
86
+ createdAt: daysAgo(50),
87
+ updatedAt: daysAgo(47),
59
88
  },
89
+ // ── 3. Beyblade X Beginner's Guide ───────────────────────────────────────
60
90
  {
61
- id: "blog-pokemon-card-investment-market-analysis-2026-news",
62
- title: "The Rise of Pokemon Card Investment — Market Analysis 2026",
63
- slug: "pokemon-card-investment-market-analysis-2026",
64
- excerpt: "Pokemon cards have outperformed many traditional asset classes over the past five years. We analyse the 2026 market, identify the strongest investment segments, and examine what's driving demand.",
65
- content: `<h2>The Numbers Don't Lie</h2><p>Between 2020 and 2026, PSA 10 Base Set Charizard has appreciated from approximately ₹5 lakh to over ₹75 lakh — a 1,400% return. Even common Base Set cards in top grade have seen 300–500% gains. The Pokemon TCG market is no longer a hobby curiosity; it is a genuine alternative asset class attracting institutional attention.</p><h2>Why Pokemon Cards?</h2><p>Three forces drive the market. First, nostalgia — millennials who grew up with these cards now have disposable income and want to reclaim childhood. Second, scarcity — Base Set print runs were not infinite, and high-grade copies become rarer each year as cards remain in play or degrade. Third, grading infrastructure — the existence of PSA and Beckett as trusted third parties has created a liquid, standardised market where price discovery is possible.</p><h2>The Strongest Investment Segments in 2026</h2><ul><li><strong>1st Edition Base Set Holos (PSA 8+):</strong> The blue-chip end of the market. Illiquid, expensive, but the most inflation-resistant.</li><li><strong>Shadowless Base Set Holos (PSA 9):</strong> Printed after 1st Edition but before the Unlimited print run, Shadowless cards are undersupplied relative to demand. Strong upside.</li><li><strong>Sealed Base Set Booster Packs:</strong> WOTC-era sealed product is mathematically finite. Each box opened reduces supply. Prices have tripled since 2022.</li><li><strong>Base Set Pikachu Variants (Red Cheeks / Yellow Cheeks):</strong> Mascot appeal plus genuine scarcity for Yellow Cheeks creates collector demand independent of competitive play.</li></ul><h2>Risks to Consider</h2><p>No investment is risk-free. The Pokemon card market is illiquid compared to stocks, has high transaction costs (grading fees, marketplace commissions of 8–15%), and is subject to trend cycles. New print runs of modern sets occasionally draw investment capital away from vintage. Always buy what you love — financial returns are a bonus, not a guarantee.</p><h2>LetItRip's Role</h2><p>Our marketplace connects serious sellers of authenticated Pokemon singles and sealed product with buyers who understand the market. Every auction listing goes through our verification process. <a href="/auctions">Browse active auctions</a> to see current market pricing in real time.</p>`,
66
- coverImage: "https://images.pokemontcg.io/base1/2_hires.png",
67
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.NEWS,
68
- tags: [
69
- "investment",
70
- "market",
71
- "2026",
72
- "base-set",
73
- "pokemon-tcg",
74
- "analysis",
75
- ],
76
- isFeatured: false,
91
+ id: "blog-beyblade-x-beginners-guide-2026",
92
+ slug: "blog-beyblade-x-beginners-guide-2026",
93
+ title: "Ultimate Beyblade X Beginner's Guide — Parts, Combos & Tournaments",
94
+ excerpt: "Beyblade X launched in 2023 and has taken India by storm. Here is everything you need to know: the new XStadium, gear system, best starter combos, and how to enter your first tournament.",
95
+ content: `<h2>What is Beyblade X?</h2>
96
+ <p>Beyblade X (BX) is the fourth generation of the Beyblade franchise from Takara Tomy. The signature feature is the <strong>Xtreme Dash</strong> — a gear inside the blade that creates a sudden burst of speed when the bit clicks into a groove on the XStadium wall. Battles are faster, more explosive, and more skill-dependent than Burst.</p>
97
+ <h2>Understanding BX Parts</h2>
98
+ <ul>
99
+ <li><strong>Blade</strong> — the main top. Determines attack pattern and weight distribution.</li>
100
+ <li><strong>Ratchet</strong> — connects blade to bit. Numbers (3-60, 4-60, 5-60) indicate teeth count and height in mm.</li>
101
+ <li><strong>Bit</strong> — the tip that touches the stadium floor. FP (Flat Point) for attack, GP (Gear Point) for Xtreme Dash activation, HN (High Needle) for stamina.</li>
102
+ </ul>
103
+ <h2>Best Starter Combos in 2026</h2>
104
+ <p><strong>Attack</strong>: Dran Sword 4-60F (BX-01) — aggressive launch, targets the stadium groove repeatedly.<br>
105
+ <strong>Stamina</strong>: Wizard Arrow 4-80B — wide blade, low tip maintains long spin.<br>
106
+ <strong>Balance</strong>: Knight Shield 3-80N — defensive blade with good burst resistance.</p>
107
+ <h2>How to Enter an Indian Tournament</h2>
108
+ <p>Official Beyblade X tournaments are organised by Takara Tomy's Indian distributor through LetItRip and local hobby shops. Tournaments use the Standard Stadium format — 3-minute battle, best of 3. Register through the Events section on LetItRip. Bring your official BX tops — bootlegs are disqualified on inspection.</p>`,
109
+ coverImage: "https://images.unsplash.com/photo-1551698618-1dfe5d97d256?w=1200&h=630&fit=crop",
110
+ category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
111
+ tags: ["beyblade-x", "beyblade", "beginner-guide", "takara-tomy", "bx"],
112
+ isFeatured: true,
77
113
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
78
- publishedAt: daysAgo(43),
79
- authorId: "user-admin-user-admin",
80
- authorName: "Admin User",
114
+ publishedAt: daysAgo(38),
115
+ authorId: "user-rohit-joshi",
116
+ authorName: "Rohit Joshi",
81
117
  readTimeMinutes: 7,
82
- views: 4318,
83
- metaTitle: "Pokemon Card Investment Market Analysis 2026 | LetItRip",
84
- metaDescription: "Comprehensive 2026 analysis of the Pokemon card investment market performance data, top segments, and risk factors for serious collectors.",
85
- createdAt: daysAgo(44),
86
- updatedAt: daysAgo(43),
118
+ views: 4210,
119
+ metaTitle: "Beyblade X Beginner's Guide 2026 — Parts, Combos & Tournaments | LetItRip",
120
+ metaDescription: "Complete beginner's guide to Beyblade X XStadium, blade parts, Xtreme Dash, best starter combos, and how to enter Indian tournaments.",
121
+ createdAt: daysAgo(40),
122
+ updatedAt: daysAgo(38),
87
123
  },
124
+ // ── 4. Yu-Gi-Oh! Deck Building 101 ──────────────────────────────────────
88
125
  {
89
- id: "blog-1st-edition-vs-unlimited-base-set-how-to-identify-guides",
90
- title: "Identifying First Edition vs. Unlimited Base Set Cards — The Complete Guide",
91
- slug: "identifying-first-edition-vs-unlimited-base-set-pokemon",
92
- excerpt: "The difference between a 1st Edition Charizard and an Unlimited copy can be worth lakhs of rupees. Learn exactly how to identify print runs 1st Edition, Shadowless, and Unlimited and never overpay again.",
93
- content: `<h2>The Three Print Runs of Base Set</h2><p>Base Set was printed in three distinct runs, each with observable differences. Understanding them is essential before buying or selling any Base Set card.</p><h2>1st Edition (Most Valuable)</h2><p>First Edition Base Set cards have two definitive identifiers:</p><ul><li><strong>1st Edition Stamp:</strong> A small black circular stamp reading "Edition 1" appears on the left side of the card, below the Pokemon's artwork and above the card description box.</li><li><strong>No Drop Shadow:</strong> On First Edition and Shadowless prints, there is no drop shadow behind the right side and bottom of the Pokemon's image box. The box appears to sit directly against the background.</li></ul><p>The First Edition stamp is impossible to fake convincingly under a loupe — look for crisp edges and correct font weight.</p><h2>Shadowless (Intermediate, Still Premium)</h2><p>Shadowless Base Set cards do not have the 1st Edition stamp but also lack the drop shadow. They were printed in very limited quantities after the First Edition run and before WOTC standardised the Unlimited printing. Shadowless cards trade at a significant premium over Unlimited but are typically 40–70% the value of the equivalent 1st Edition copy.</p><h2>Unlimited (Most Common)</h2><p>Unlimited Base Set cards have:</p><ul><li>No 1st Edition stamp</li><li>A visible drop shadow on the right side and bottom of the Pokemon artwork box</li><li>Slightly different colour saturation in some print runs (often more yellow-shifted)</li></ul><p>Unlimited cards are still collectible and beautiful — they simply don't command the same premium as First Edition or Shadowless.</p><h2>Quick Identification Checklist</h2><ol><li>Look for the 1st Edition stamp below the artwork → If present: 1st Edition</li><li>No stamp but no drop shadow → Shadowless</li><li>No stamp with drop shadow → Unlimited</li></ol><h2>Why This Matters When Buying</h2><p>Always request high-resolution photos of both the stamp area and the artwork box edge before purchasing any Base Set holo raw. On LetItRip, our seller guidelines require clear photos of these areas. <a href="/products">Browse verified Base Set listings</a> — all our featured sellers document print run in their specifications.</p>`,
94
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
126
+ id: "blog-yugioh-deck-building-101-beginners",
127
+ slug: "blog-yugioh-deck-building-101-beginners",
128
+ title: "Yu-Gi-Oh! Deck Building 101 — From Core Rules to Competitive Play",
129
+ excerpt: "Building your first Yu-Gi-Oh! deck can be overwhelming. Here's a structured guide from choosing an archetype to making your first tournament-legal 40-card deck.",
130
+ content: `<h2>The Golden Rule: 40 Cards</h2>
131
+ <p>Every competitive Yu-Gi-Oh! deck runs exactly 40 cards. More cards means lower consistency — you draw key pieces less often. Exceptions exist (60-card Pile formats) but start at 40.</p>
132
+ <h2>Deck Structure</h2>
133
+ <ul>
134
+ <li><strong>Main Deck</strong>: 40–60 cards (start at 40)</li>
135
+ <li><strong>Extra Deck</strong>: 0–15 Fusion/Synchro/XYZ/Link monsters</li>
136
+ <li><strong>Side Deck</strong>: 0–15 cards (for post-game 2 adjustments in tournament play)</li>
137
+ </ul>
138
+ <h2>Choosing Your First Archetype</h2>
139
+ <p><strong>Blue-Eyes White Dragon</strong>: Classic, powerful, tons of support. Relatively affordable.<br>
140
+ <strong>Dark Magician</strong>: Spell-heavy, good for learning card interactions.<br>
141
+ <strong>Sky Striker</strong>: Modern, Spell-based, single monster strategy. Teaches resource management.<br>
142
+ <strong>Branded Despia</strong>: 2024's most popular. High ceiling, deep combo potential.</p>
143
+ <h2>Card Rarity and Budget</h2>
144
+ <p>Structure Decks (₹799–999) are the best starting point — 3 copies of key cards for a single archetype. One structure deck often includes most of the main engine. Buy 3 copies of the same structure deck for a complete playset of all common cards.</p>
145
+ <h2>Building a Competitive Hand Trap Package</h2>
146
+ <p>Every competitive deck runs 6–9 hand traps. Ash Blossom & Joyous Spring (₹800–1,200), Nibiru the Primal Being (₹500–800), and Effect Veiler (₹200–400) are the three must-haves regardless of archetype.</p>`,
147
+ coverImage: "https://images.unsplash.com/photo-1612036782180-6f0b6cd846fe?w=1200&h=630&fit=crop",
95
148
  category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
96
- tags: [
97
- "1st-edition",
98
- "shadowless",
99
- "unlimited",
100
- "base-set",
101
- "identification",
102
- "authentication",
103
- ],
104
- isFeatured: false,
149
+ tags: ["yugioh", "deck-building", "tcg", "konami", "trading-cards"],
150
+ isFeatured: true,
105
151
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
106
- publishedAt: daysAgo(36),
107
- authorId: "user-admin-user-admin",
108
- authorName: "Admin User",
109
- readTimeMinutes: 8,
110
- views: 5102,
111
- metaTitle: "1st Edition vs Unlimited Base Set Pokemon Cards — How to Identify | LetItRip",
112
- metaDescription: "Learn to identify 1st Edition, Shadowless, and Unlimited Base Set Pokemon cards with our definitive visual guide avoid overpaying on the secondary market.",
113
- createdAt: daysAgo(38),
114
- updatedAt: daysAgo(36),
152
+ publishedAt: daysAgo(30),
153
+ authorId: "user-nisha-reddy",
154
+ authorName: "Nisha Reddy",
155
+ readTimeMinutes: 6,
156
+ views: 2870,
157
+ metaTitle: "Yu-Gi-Oh! Deck Building 101 for Beginners | LetItRip",
158
+ metaDescription: "Learn how to build your first Yu-Gi-Oh! deck from scratch 40-card rule, archetypes, budget tips, and hand trap essentials.",
159
+ createdAt: daysAgo(32),
160
+ updatedAt: daysAgo(30),
115
161
  },
162
+ // ── 5. Gundam MG vs RG Guide ─────────────────────────────────────────────
116
163
  {
117
- id: "blog-pokemon-card-conditions-guide-mint-nm-played-tips",
118
- title: "Guide to Pokemon Card Conditions: Mint, Near Mint, Lightly Played, and Beyond",
119
- slug: "pokemon-card-conditions-guide-mint-near-mint-played",
120
- excerpt: "Condition is everything in Pokemon card collecting. Understanding the difference between Near Mint and Lightly Played can mean a price difference of 30–50%. Here's how to assess and communicate condition accurately.",
121
- content: `<h2>Why Condition Matters So Much</h2><p>A PSA 9 Charizard is worth roughly twice a PSA 8 Charizard. That gap exists because of a fraction of a millimetre of corner wear or a subtle surface scratch. Understanding card condition before you buy — or grade — is the single most important skill a Pokemon collector can develop.</p><h2>The Standard Condition Scale</h2><p>The hobby uses a relatively standardised condition scale, though terminology varies slightly between sellers, graders, and regions. Here's the definitive guide:</p><h3>Gem Mint / Mint (PSA 10 / PSA 9.5)</h3><p>Perfect in every observable way. Four sharp, perfectly square corners. No whitening, no scratches on the holo surface, perfect or near-perfect centering (50/50 to 55/45). Surface is clean under bright light and a loupe. This condition is extremely rare for Base Set cards — most were well-played as children.</p><h3>Near Mint (PSA 8–9)</h3><p>The highest condition most collectors will realistically encounter in a raw Base Set card. Allows for one minor imperfection — light corner wear on one corner, centering up to 60/40, or a tiny surface mark invisible to the naked eye. This is the sweet spot for value and appearance.</p><h3>Lightly Played (LP) — (PSA 6–7)</h3><p>Visible but minor wear: light whitening on 2–3 corners, centering up to 65/35, light scratches on the holo surface that are only visible under direct light at an angle. Still a beautiful card in hand.</p><h3>Moderately Played (MP) — (PSA 4–5)</h3><p>Obvious wear: creasing on corners, visible holo scratching, potentially a very light bend. Cards in this range are generally collected for playability or as placeholders, not investment.</p><h3>Heavily Played (HP) / Poor (PSA 1–3)</h3><p>Significant damage: deep creases, heavy corner wear, water damage, major holo scratching, tears. These cards are valued for their artwork and sentimental significance only.</p><h2>Assessing Condition: Practical Steps</h2><ol><li>Examine corners under bright light — use a 10x loupe for accuracy.</li><li>Tilt the card under a lamp to check holo surface for scratches.</li><li>Hold the card face-down and check for creases by gently flexing (don't stress the card).</li><li>Check centering: measure the white borders on all four sides. Greater than 60/40 starts to affect grade.</li></ol><h2>Condition Descriptions on LetItRip</h2><p>All LetItRip sellers are required to use standardised condition terminology and provide photos that clearly show any wear. If a card arrives in worse condition than described, our buyer protection policy covers you. <a href="/products">Browse graded and raw listings</a> with verified condition reports.</p>`,
122
- coverImage: "https://images.pokemontcg.io/base1/15_hires.png",
123
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.TIPS,
124
- tags: [
125
- "condition",
126
- "grading",
127
- "mint",
128
- "near-mint",
129
- "played",
130
- "guide",
131
- "buying",
132
- ],
133
- isFeatured: false,
164
+ id: "blog-gundam-mg-vs-rg-which-grade-to-start",
165
+ slug: "blog-gundam-mg-vs-rg-which-grade-to-start",
166
+ title: "Gundam MG vs RG — Which Grade Should You Start With?",
167
+ excerpt: "Master Grade or Real Grade? Both look stunning on a shelf, but they build completely differently. Here's how to choose based on your skill level, budget, and how much time you want to invest.",
168
+ content: `<h2>Understanding Gunpla Grades</h2>
169
+ <p>Bandai's Gundam plastic model kits (Gunpla) come in grades: HG (High Grade, 1/144 scale), RG (Real Grade, 1/144 scale), MG (Master Grade, 1/100 scale), and PG (Perfect Grade, 1/60 scale). The grade indicates detail level, inner frame complexity, and build difficulty.</p>
170
+ <h2>Real Grade (RG) — 1/144 Scale</h2>
171
+ <p>RG kits pack MG-level detail into a small 1/144 frame. They feature an inner skeletal frame that pre-assembles before adding armour. The result is stunning — but the tiny parts are unforgiving. A misaligned snap can crack a piece that is 3mm wide. RG is recommended for builders who have completed 5+ HG kits and want to push skill limits. Price: ₹1,800–3,500.</p>
172
+ <h2>Master Grade (MG) — 1/100 Scale</h2>
173
+ <p>MG kits are larger, with parts that are easier to handle. The inner frame is built section-by-section (leg frame, arm frame, torso). MGs show off cockpit detail, hand articulation, and engineering that RGs can't match at their scale. MG is recommended for builders who have completed 2–3 HGs and want a flagship piece. Price: ₹2,800–6,500.</p>
174
+ <h2>Which to Buy First?</h2>
175
+ <p>If you're a beginner: start with HG RX-78-2 (₹800). If you've built a few HGs and want more detail at low cost: RG Unicorn Gundam (₹2,200). If you want a display piece and don't mind spending more time: MG Wing Zero EW (₹4,500). Both RG and MG benefit enormously from panel lining, top-coat spray, and decals — budget ₹500–800 for finishing supplies.</p>`,
176
+ coverImage: "https://images.unsplash.com/photo-1595241422400-04a3e1e2e0d5?w=1200&h=630&fit=crop",
177
+ category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
178
+ tags: ["gundam", "gunpla", "mg", "rg", "bandai", "model-kits"],
179
+ isFeatured: true,
134
180
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
135
- publishedAt: daysAgo(27),
136
- authorId: "user-admin-user-admin",
137
- authorName: "Admin User",
181
+ publishedAt: daysAgo(22),
182
+ authorId: "user-admin-letitrip",
183
+ authorName: "LetItRip Admin",
138
184
  readTimeMinutes: 7,
139
- views: 3847,
140
- metaTitle: "Pokemon Card Conditions ExplainedMint, NM, LP Guide | LetItRip",
141
- metaDescription: "Master Pokemon card condition gradingfrom Gem Mint to Heavily Played. Learn to assess, buy, and describe conditions accurately to avoid disputes.",
142
- createdAt: daysAgo(29),
143
- updatedAt: daysAgo(27),
185
+ views: 1950,
186
+ metaTitle: "Gundam MG vs RGWhich Grade to Start With? | LetItRip",
187
+ metaDescription: "Choosing between Gundam Master Grade and Real Grade kits difficulty, scale, price, and which to buy as your first or second Gunpla build.",
188
+ createdAt: daysAgo(24),
189
+ updatedAt: daysAgo(22),
144
190
  },
145
- // -- Published Auction Spotlight ----------------------------------------
191
+ // ── 6. How to Spot Fake Pokémon Cards ────────────────────────────────────
146
192
  {
147
- id: "blog-may-2026-pokemon-auction-spotlight-news",
148
- title: "May 2026 Auction Spotlight: 1st Edition Charizard, PSA 9 Mewtwo & Sealed Booster Packs",
149
- slug: "may-2026-pokemon-tcg-auction-spotlight",
150
- excerpt: "May brings our biggest Pokemon TCG auction lineup yet a 1st Edition Charizard PSA 7, a Mewtwo PSA 9, a sealed Booster Pack, and the iconic Zap! Theme Deck. All live now on LetItRip.",
151
- content: `<h2>Why May 2026 Is a Landmark Auction Month</h2><p>We have assembled the most significant collection of authenticated Base Set Pokemon cards and sealed product ever listed on LetItRip in a single month. Two active auctions, multiple buy-now listings, and three verified sellers — this is the month that defines our Pokemon TCG marketplace.</p><h2>The Crown Jewel: 1st Edition Charizard PSA 7</h2><p>Our flagship listing. Blaine's Fire Shoppe has consigned a 1st Edition Base Set Charizard in a PSA 7 slab — an authenticated, tamper-evident grade with clear provenance. Opening bid: ₹2,99,999. Reserve: ₹3,50,000. Buy-Now: ₹6,99,999. This card has already attracted 11 active bids — Professor Oak, Gary Oak, and Ash Ketchum are in a three-way battle with days remaining.</p><h2>Mewtwo PSA 9 Auction</h2><p>Surge's Electric Emporium presents a PSA 9 Mewtwo from the original Base Set — one of the finest Psychic-type collectibles in TCG history. Opening bid: ₹49,999. Currently at ₹64,999 with Gary Oak leading. The auction closes in 5 days.</p><h2>Sealed Product Available Now</h2><p>For collectors who prefer the anticipation of a pack opening, Blaine's Fire Shoppe has 10 factory-sealed Base Set Booster Packs (₹12,999 each) and 3 sealed Zap! Theme Decks (₹18,999 each) — both verified WOTC era sealed product.</p><h2>How to Participate</h2><p>Visit the <a href="/auctions">Auctions page</a>, sign in, and place your bid. You will receive an instant notification if you are outbid. All winning lots are shipped in insured courier with tracking within 3 business days of payment confirmation.</p>`,
152
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
153
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.NEWS,
154
- tags: [
155
- "auctions",
156
- "may-2026",
157
- "charizard",
158
- "mewtwo",
159
- "base-set",
160
- "spotlight",
161
- ],
193
+ id: "blog-how-to-spot-fake-pokemon-cards-authentication",
194
+ slug: "blog-how-to-spot-fake-pokemon-cards-authentication",
195
+ title: "How to Spot Fake Pokémon Cards — 7 Authentication Tests",
196
+ excerpt: "Counterfeit Pokémon cards have become increasingly convincing. Here are 7 tests you can do at home to verify a card is authentic before spending thousands of rupees.",
197
+ content: `<h2>Why Fakes Are a Problem Now</h2>
198
+ <p>Chinese counterfeit Pokémon cards have improved dramatically since 2022. Basic fakes are easy to spot, but high-quality "proxies" can fool casual collectors. A fake PSA slab was reported in 2024. Always buy from verified sellers like those on LetItRip with review histories.</p>
199
+ <h2>Test 1: The Light Test</h2>
200
+ <p>Hold the card up to a bright light. Real Pokémon cards have a black core layer between the front and back. This shows as an unbroken dark line around all edges. Fakes often show a solid colour or uneven core.</p>
201
+ <h2>Test 2: The Rip Test (last resort)</h2>
202
+ <p>If you're willing to destroy a cheap suspected fake, rip it. Real cards tear to reveal a black core layer. Never do this on a card you want to keep — it's destructive.</p>
203
+ <h2>Test 3: Print Dot Pattern</h2>
204
+ <p>Under 60× jeweller's loupe, real cards show a regular CMYK dot-rosette pattern. Fakes often show a blurry smear, irregular dots, or an inkjet pattern of random dots.</p>
205
+ <h2>Test 4: Colour and Saturation</h2>
206
+ <p>Real Pokémon cards have specific Pantone-matched colours. Fakes are often washed out (desaturated) or too vivid. Compare the yellow Pokémon card border to a known-authentic card of the same era.</p>
207
+ <h2>Test 5: Font and Text</h2>
208
+ <p>Gill Sans is the Pokémon TCG font. Fakes often use a visually similar but incorrect font — inspect the numbers on HP and attack damage. Real cards have crisp, sharp edges on all text.</p>
209
+ <h2>Test 6: Card Feel (Flex Test)</h2>
210
+ <p>Real Pokémon cards have a specific stiffness — they flex slightly and snap back. Fakes are often too stiff (printed on thicker card stock) or too flexible. Develop a feel by handling known-authentic cards first.</p>
211
+ <h2>Test 7: UV Light Test</h2>
212
+ <p>Under 365nm UV light, real Pokémon cards show the holographic pattern glowing distinctly. Fakes often show a uniform glow or wrong colour fluorescence. A UV torch costs ₹200–400 and is worth having in every collector's kit.</p>`,
213
+ coverImage: "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=1200&h=630&fit=crop",
214
+ category: BLOG_POST_FIELDS.CATEGORY_VALUES.TIPS,
215
+ tags: ["pokemon-cards", "authentication", "fake-cards", "collecting-tips"],
162
216
  isFeatured: true,
163
217
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
164
- publishedAt: daysAgo(8),
165
- authorId: "user-moderator-mod-user",
166
- authorName: "Moderator",
167
- readTimeMinutes: 5,
168
- views: 2891,
169
- metaTitle: "May 2026 Pokemon TCG Auction SpotlightCharizard & Mewtwo Live | LetItRip",
170
- metaDescription: "LetItRip's May 2026 Pokemon TCG auctions are live 1st Edition Charizard PSA 7, Mewtwo PSA 9, sealed packs and theme decks. Bid now.",
171
- createdAt: daysAgo(9),
172
- updatedAt: daysAgo(8),
173
- },
174
- // -- Updated policy post ---------------------------------------------------
175
- {
176
- id: "blog-pokemon-tcg-buyer-seller-protection-2026-updates",
177
- title: "Updated Buyer & Seller Protection Policies for Pokemon TCG Cards",
178
- slug: "updated-buyer-seller-protection-pokemon-tcg-2026",
179
- excerpt: "We have strengthened our protection policies for Pokemon card transactions — here is a clear breakdown of what changed for raw singles, graded slabs, and sealed products.",
180
- content: `<h2>Key Changes Effective 1 March 2026</h2><p><strong>Buyers:</strong> The return window for sealed product is extended from 7 to 14 days. For raw singles, the window remains 7 days with a condition-based partial refund option if items arrive in materially worse condition than described.</p><p><strong>Authentication Guarantee:</strong> All PSA/BGS-graded slabs auctioned on LetItRip are verified against official grading service databases before going live. If a certification number does not verify, the listing is removed immediately and any deposits refunded.</p><p><strong>Sellers:</strong> A dispute resolution SLA ensures all buyer claims are reviewed within 48 hours. Sellers maintaining a dispute rate below 0.5% automatically earn a 'Verified Pokemon Seller' badge on their store profile.</p><h2>Graded Card Shipping Policy</h2><p>All PSA/BGS-graded cards must ship in rigid team bags inside a padded mailer with at least 2 cm of bubble wrap around the slab. Damage in transit to a graded slab is covered by our ₹10,000 Shipping Protection at no extra cost on verified listings.</p><h2>Raw Card Condition Dispute Process</h2><p>If you receive a raw card in a condition materially below what was described and photographed, open a dispute within 7 days via your order page. Include close-up photos of the condition discrepancy. Resolution is typically within 24–48 hours.</p><h2>Why We Made These Changes</h2><p>Over 1,800 survey responses from the LetItRip Pokemon TCG community guided these updates. Faster dispute resolution and stronger graded card authentication topped the wishlist — and we delivered.</p>`,
181
- coverImage: "https://images.pokemontcg.io/base1/88_hires.png",
182
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.UPDATES,
183
- tags: [
184
- "policy",
185
- "protection",
186
- "returns",
187
- "authentication",
188
- "graded-cards",
189
- ],
190
- isFeatured: false,
191
- status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
192
- publishedAt: daysAgo(36),
193
- authorId: "user-admin-user-admin",
194
- authorName: "Admin User",
195
- readTimeMinutes: 5,
196
- views: 2103,
197
- metaTitle: "Updated Pokemon TCG Protection Policies Mar 2026 | LetItRip",
198
- metaDescription: "LetItRip updates buyer and seller protection for Pokemon TCG cards — authentication guarantees, extended returns, and a Verified Pokemon Seller programme.",
199
- createdAt: daysAgo(38),
200
- updatedAt: daysAgo(36),
201
- },
202
- // -- Community Spotlight --------------------------------------------------
203
- {
204
- id: "blog-community-spotlight-april-2026-community",
205
- title: "Community Spotlight: April 2026 Top Pokemon Collectors & Bidders",
206
- slug: "community-spotlight-april-2026-pokemon-collectors",
207
- excerpt: "Meet the outstanding community members who made April 2026 a record month — top-rated Pokemon card sellers, highest bidders, and our most reviewed listings.",
208
- content: `<h2>Top Sellers of April</h2><p><strong>Blaine's Fire Shoppe</strong> — 42 orders fulfilled at a 4.9-star average. Blaine's 1st Edition Charizard auction set a new LetItRip record for most bids on a single lot. His authentication photography standards are now used as a reference for all new sellers.</p><p><strong>Surge's Electric Emporium</strong> — Specialising in Electric-type Base Set singles and sealed Zap! decks, Surge earned the 'Verified Pokemon Seller' badge in April with zero disputes. Their Mewtwo PSA 9 auction attracted 6 bidders and strong community commentary.</p><p><strong>Misty's Water Cards</strong> — April's discovery store. Their Blastoise Holo Near Mint listing sold out within 48 hours and their Water Energy x10 lot became our best-selling energy card of the month.</p><h2>Top Bidders</h2><p><strong>Professor Oak</strong> — Currently leading the 1st Edition Charizard auction with an auto-bid of ₹5,00,000. Professor Oak has won 10 auctions this year and his condition review posts have helped hundreds of community members learn grading fundamentals.</p><p><strong>Gary Oak</strong> — Won the Mewtwo PSA 9 auction and is bidding competitively on the Charizard. Gary's detailed condition notes and punctual payment processing make him one of our highest-trust buyers.</p><h2>Growing Community</h2><p>380 new Pokemon card collectors joined LetItRip in April — a 28% month-on-month increase. The Base Set vintage segment is now the fastest-growing category on the platform. Welcome to every new trainer!</p>`,
209
- coverImage: "https://images.pokemontcg.io/base1/58_hires.png",
210
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.COMMUNITY,
211
- tags: [
212
- "community",
213
- "spotlight",
214
- "collectors",
215
- "bidders",
216
- "april-2026",
217
- ],
218
- isFeatured: false,
219
- status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
220
- publishedAt: daysAgo(3),
221
- authorId: "user-admin-user-admin",
222
- authorName: "Admin User",
223
- readTimeMinutes: 5,
224
- views: 1124,
225
- metaTitle: "Community Spotlight April 2026 — Top Pokemon Collectors | LetItRip",
226
- metaDescription: "Celebrating LetItRip's top Pokemon TCG sellers, bidders, and collectors from April 2026 and welcoming hundreds of new trainers to the platform.",
227
- createdAt: daysAgo(5),
228
- updatedAt: daysAgo(3),
229
- },
230
- // -- Draft ----------------------------------------------------------------
231
- {
232
- id: "blog-guide-spotting-fake-pokemon-cards-draft",
233
- title: "The Complete Guide to Spotting Counterfeit Pokemon Cards",
234
- slug: "complete-guide-spotting-fake-counterfeit-pokemon-cards-2026",
235
- excerpt: "With convincing bootleg Base Set cards flooding online marketplaces, authentication is a must-have skill for any serious Pokemon TCG collector. This guide covers the definitive physical tests for spotting fakes.",
236
- content: `<h2>Why Counterfeits Are a Growing Problem</h2><p>The explosion of Pokemon card values has made counterfeiting economically viable. Modern printing technology allows bootleggers to produce cards that look convincing at thumbnail resolution. This guide gives you the physical and optical tests to detect fakes before you pay.</p><h2>The Light Test</h2><p>Hold the card up to a bright light source. Authentic Base Set cards have a distinct layered construction — you should see a dark inner layer (the black core) sandwiched between the front and back printing layers. Counterfeit cards often show uniform light transmission without a black core, or the core is unevenly distributed.</p><h2>The Bend Test (Non-Destructive)</h2><p>[Draft — section in progress]</p><h2>Holo Pattern Examination</h2><p>Under a magnifying loupe, authentic Base Set holo foil has a specific starburst/diamond pattern. Counterfeit holo patterns are typically coarser — you'll see larger, less intricate grid or dot patterns when magnified.</p><h2>Weight and Feel</h2><p>Authentic WOTC-era cards have a specific tactile quality — a slight firmness and weight that counterfeit cards rarely replicate. A precision digital scale shows authentic Base Set cards weigh approximately 1.78 g. Most counterfeits are measurably lighter or heavier.</p><h2>Verifying Graded Slabs</h2><p>PSA certification numbers can be verified at psacard.com. BGS numbers verify at beckett.com/grading. Any slab whose number does not verify is counterfeit.</p>`,
237
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
238
- tags: [
239
- "authentication",
240
- "fake",
241
- "counterfeit",
242
- "base-set",
243
- "guide",
244
- "anti-counterfeit",
245
- ],
246
- isFeatured: false,
247
- status: BLOG_POST_FIELDS.STATUS_VALUES.DRAFT,
248
- authorId: "user-admin-user-admin",
249
- authorName: "Admin User",
250
- readTimeMinutes: 11,
251
- views: 0,
218
+ publishedAt: daysAgo(15),
219
+ authorId: "user-aryan-kapoor",
220
+ authorName: "Aryan Kapoor",
221
+ readTimeMinutes: 7,
222
+ views: 3640,
223
+ metaTitle: "How to Spot Fake Pokémon Cards7 Authentication Tests | LetItRip",
224
+ metaDescription: "7 at-home tests to authenticate Pokémon cards: light test, print dots, font check, UV test, and more. Protect yourself from counterfeits.",
252
225
  createdAt: daysAgo(17),
253
- updatedAt: daysAgo(17),
226
+ updatedAt: daysAgo(15),
254
227
  },
255
- // -- Archived -------------------------------------------------------------
228
+ // ── 7. Funko Pop Storage & Display Tips ──────────────────────────────────
256
229
  {
257
- id: "blog-pokemon-day-2026-recap-community-archived",
258
- title: "Pokemon Day 2026 — Community Picks and Best Deals",
259
- slug: "pokemon-day-2026-recap-community-picks",
260
- excerpt: "Pokemon Day 2026 was our biggest promotional event ever. Here's a look at the top deals, best-value lots, and the cards our community loved most.",
261
- content: `<p>This post has been archived. For current deals and updates, visit our <a href="/blog">blog</a>.</p>`,
262
- coverImage: "https://images.pokemontcg.io/base1/58_hires.png",
263
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.COMMUNITY,
264
- tags: ["pokemon-day", "february", "2026", "recap", "deals"],
265
- isFeatured: false,
266
- status: BLOG_POST_FIELDS.STATUS_VALUES.ARCHIVED,
267
- publishedAt: daysAgo(71),
268
- authorId: "user-admin-user-admin",
269
- authorName: "Admin User",
270
- readTimeMinutes: 3,
271
- views: 4821,
272
- createdAt: daysAgo(72),
273
- updatedAt: daysAgo(53),
274
- },
275
- // -- Developer / API post with code blocks ---------------------------------
276
- {
277
- id: "blog-how-to-query-pokemon-tcg-api-card-prices-tips",
278
- title: "How to Query the Pokemon TCG API for Real-Time Card Prices",
279
- slug: "how-to-query-pokemon-tcg-api-card-prices",
280
- excerpt: "The Pokemon TCG API is a free, open dataset of every card ever printed. This guide shows you how to query it with JavaScript, filter by set and rarity, and cross-reference prices with recent LetItRip auction results.",
281
- content: `<h2>Why Use the Pokemon TCG API?</h2>
282
- <p>The <a href="https://pokemontcg.io" rel="noopener noreferrer">Pokemon TCG API</a> provides structured data on every officially printed Pokemon card — set codes, rarity, artwork, legality, and market price snapshots from major resale platforms. Combined with live auction data from LetItRip, you can build surprisingly accurate price models for graded and raw singles.</p>
283
-
284
- <h2>Getting Started — Fetch a Card by Set and Number</h2>
285
- <p>You can query any card by its set ID and number. Here's how to fetch the Base Set Charizard (base1-4) using the <code>fetch</code> API:</p>
286
-
287
- <pre><code class="language-javascript">const response = await fetch(
288
- 'https://api.pokemontcg.io/v2/cards/base1-4',
289
- { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
290
- );
291
- const { data } = await response.json();
292
-
293
- console.log(data.name); // "Charizard"
294
- console.log(data.set.name); // "Base"
295
- console.log(data.rarity); // "Rare Holo"
296
- console.log(data.tcgplayer?.prices?.holofoil?.market); // e.g. 450.00 (USD)
297
- </code></pre>
298
-
299
- <h2>Search All Holos in Base Set</h2>
300
- <p>To list every holo rare in the original Base Set, use the <code>q</code> query parameter with <code>set.id:base1 rarity:"Rare Holo"</code>:</p>
301
-
302
- <pre><code class="language-javascript">const params = new URLSearchParams({
303
- q: 'set.id:base1 rarity:"Rare Holo"',
304
- orderBy: '-tcgplayer.prices.holofoil.market',
305
- pageSize: '20',
306
- });
307
-
308
- const res = await fetch(
309
- \`https://api.pokemontcg.io/v2/cards?\${params}\`,
310
- { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
311
- );
312
- const { data, totalCount } = await res.json();
313
-
314
- data.forEach(card => {
315
- const price = card.tcgplayer?.prices?.holofoil?.market ?? 'N/A';
316
- console.log(\`\${card.name} #\${card.number} — $\${price}\`);
317
- });
318
- // Charizard #4 — $450.00
319
- // Mewtwo #10 — $120.00
320
- // Blastoise #2 — $95.00
321
- // ...
322
- </code></pre>
323
-
324
- <h2>Cross-Referencing With LetItRip Auction History</h2>
325
- <p>Indian market prices differ from USD TCGPlayer values due to import costs, grading premiums, and local collector demand. To get a LetItRip-accurate estimate, compare the TCG API price with recent sold lots via our public auction feed:</p>
326
-
327
- <pre><code class="language-javascript">// Example: fetch last 10 sold auctions for Charizard on LetItRip
328
- const lirRes = await fetch('/api/auctions?q=charizard&status=ended&pageSize=10');
329
- const { data: auctionLots } = await lirRes.json();
330
-
331
- const avgINR = auctionLots.reduce((sum, lot) => sum + lot.currentBid, 0)
332
- / auctionLots.length;
333
-
334
- console.log(\`Average LetItRip sold price: ₹\${avgINR.toLocaleString('en-IN')}\`);
335
- </code></pre>
336
-
337
- <h2>Building a Price Alert</h2>
338
- <p>You can combine both APIs into a simple price-alert script. Run it on a cron job and notify yourself when a card crosses a target price:</p>
339
-
340
- <pre><code class="language-javascript">async function checkPriceAlert({ cardId, targetUSD }) {
341
- const res = await fetch(
342
- \`https://api.pokemontcg.io/v2/cards/\${cardId}\`,
343
- { headers: { 'X-Api-Key': process.env.POKEMON_API_KEY } }
344
- );
345
- const { data } = await res.json();
346
- const market = data.tcgplayer?.prices?.holofoil?.market;
347
-
348
- if (market && market >= targetUSD) {
349
- console.log(
350
- \`ALERT: \${data.name} is now $\${market} (target: $\${targetUSD})\`
351
- );
352
- // → send yourself a notification via email, Slack, etc.
353
- }
354
- }
355
-
356
- // Example usage
357
- checkPriceAlert({ cardId: 'base1-4', targetUSD: 500 });
358
- </code></pre>
359
-
360
- <h2>Rate Limits and Best Practices</h2>
361
- <ul>
362
- <li>The free Pokemon TCG API tier allows 1,000 requests/day. Register for a free API key to unlock 20,000 requests/day.</li>
363
- <li>Cache responses locally — card data changes infrequently; only price snapshots need frequent polling.</li>
364
- <li>Combine with Firestore or a local SQLite database to persist historical price data for trend analysis.</li>
365
- <li>Remember that TCGPlayer prices are USD-denominated; apply an exchange rate and import premium (typically 15–25%) for INR estimates.</li>
366
- </ul>
367
-
368
- <h2>Next Steps</h2>
369
- <p>The Pokemon TCG API documentation covers advanced queries including artist name search, legality filters, and set release date ordering. For live Indian market prices, LetItRip's own auction feed is the most accurate source — use both together for the most complete picture.</p>`,
370
- coverImage: "https://images.pokemontcg.io/base1/10_hires.png",
230
+ id: "blog-funko-pop-storage-display-tips",
231
+ slug: "blog-funko-pop-storage-display-tips",
232
+ title: "Funko Pop Storage & Display Tips — Keep Your Collection Box-Fresh",
233
+ excerpt: "A Mint-in-Box Funko Pop can be worth 5–20× a loose one. Here's how to store, display, and protect your collection from UV, dust, moisture, and box damage.",
234
+ content: `<h2>Why Condition Matters for Value</h2>
235
+ <p>Funko Pop resell value is almost entirely driven by box condition. A Mint-in-Box (MIB) exclusive can fetch ₹2,000–15,000; the same Pop with a creased window or torn flap drops to ₹400–800. Protect the box from day one.</p>
236
+ <h2>Pop Protectors</h2>
237
+ <p>Hard plastic Pop Protectors (₹80–120 each) are essential for any Pop worth over ₹500. They prevent box dents, moisture contact, and UV yellowing. Stack-safe protectors allow vertical stacking without pressure on the top Pop's box. Buy in packs of 25–50 to reduce per-unit cost.</p>
238
+ <h2>Display Shelving</h2>
239
+ <p>IKEA KALLAX cubes (each cube fits 6–9 standard Pops) are the community standard. For premium display, acrylic risers (₹150–400) create a stadium effect. Keep shelves away from south-facing windows — UV light yellows clear window boxes within 12 months.</p>
240
+ <h2>Temperature and Humidity</h2>
241
+ <p>Store at 18–25°C and 40–50% relative humidity. Above 60% humidity, cardboard softens and moulds. Below 30%, card stock becomes brittle. A ₹500 hygrometer inside your display cabinet ensures you know the conditions.</p>
242
+ <h2>Moving and Shipping Pops</h2>
243
+ <p>Double-box every Pop for shipping — outer box 5–7cm larger than inner box, filled with bubble wrap. Newspaper is not sufficient padding. Mark "FRAGILE — COLLECTIBLE" on all sides. A ₹150 insurance add-on covers replacement if carrier damages the item.</p>`,
244
+ coverImage: "https://images.unsplash.com/photo-1618842676088-c4d48a6a7571?w=1200&h=630&fit=crop",
371
245
  category: BLOG_POST_FIELDS.CATEGORY_VALUES.TIPS,
372
- tags: [
373
- "api",
374
- "developer",
375
- "price-guide",
376
- "javascript",
377
- "tutorial",
378
- "tools",
379
- ],
246
+ tags: ["funko-pop", "display", "storage", "collecting-tips", "protection"],
380
247
  isFeatured: false,
381
248
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
382
- publishedAt: daysAgo(12),
383
- authorId: "user-admin-user-admin",
384
- authorName: "Admin User",
385
- readTimeMinutes: 8,
386
- views: 1847,
387
- metaTitle: "How to Query the Pokemon TCG API for Real-Time Card Prices | LetItRip",
388
- metaDescription: "Step-by-step guide to using the Pokemon TCG API with JavaScript fetch cards by set, filter holos, and cross-reference prices with LetItRip auction data.",
389
- createdAt: daysAgo(14),
390
- updatedAt: daysAgo(12),
249
+ publishedAt: daysAgo(9),
250
+ authorId: "user-admin-letitrip",
251
+ authorName: "LetItRip Admin",
252
+ readTimeMinutes: 5,
253
+ views: 1230,
254
+ metaTitle: "Funko Pop Storage & Display Tips Keep Boxes Mint | LetItRip",
255
+ metaDescription: "How to store and display Funko Pops: Pop Protectors, KALLAX shelving, UV protection, humidity control, and safe shipping tips.",
256
+ createdAt: daysAgo(11),
257
+ updatedAt: daysAgo(9),
391
258
  },
392
- // -- Multi-franchise posts with YouTube embeds ----------------------------
259
+ // ── 8. Tomica Limited Vintage Collector's Guide ───────────────────────────
393
260
  {
394
- id: "blog-hot-wheels-treasure-hunt-hunting-guide-2026",
395
- title: "The Complete Guide to Hunting Hot Wheels Treasure Hunts in 2026",
396
- slug: "hot-wheels-treasure-hunt-hunting-guide-2026",
397
- excerpt: "Treasure Hunts (TH) and Super Treasure Hunts (STH) are the most sought-after Hot Wheels cars. This guide covers everything how to spot them, when to hunt, and how to build a collection without overspending.",
398
- content: `<h2>What Makes a Treasure Hunt Special?</h2>
399
- <p>A <strong>Treasure Hunt</strong> is a limited-edition Hot Wheels car hidden within standard mainline assortments. Two variants exist:</p>
261
+ id: "blog-tomica-limited-vintage-collectors-guide",
262
+ slug: "blog-tomica-limited-vintage-collectors-guide",
263
+ title: "Tomica Limited Vintage — The Complete Collector's Guide for India",
264
+ excerpt: "Tomica Limited Vintage (TLV) models are some of the finest 1:64 diecast cars ever madepainted in period-correct colours, on die-cast metal bodies with opening doors and accurate interior details.",
265
+ content: `<h2>What is Tomica Limited Vintage?</h2>
266
+ <p>Tomica Limited Vintage is a premium Takara Tomy sub-brand producing highly detailed 1:64 scale Japanese classic cars from the 1960s–1980s. Unlike standard Tomica (₹300–500), TLV models retail at ₹1,800–4,000 and include rubber tyres, opening parts, and period livery options like police cars and taxis.</p>
267
+ <h2>TLV vs TLV-N (Neo)</h2>
268
+ <p>The original TLV line covers pre-1975 Japanese cars. TLV-N (Neo) extends to 1980s and some 1990s models. TLV-N models often have more opening parts and softer plastics. Both share the same 1:64 scale and are cross-compatible for display.</p>
269
+ <h2>Most Sought-After TLV Models in India</h2>
400
270
  <ul>
401
- <li><strong>Regular TH (Treasure Hunt)</strong> — Features the flame TH logo on the card, metallic paint, and typically collector-grade details. Found in standard pegs.</li>
402
- <li><strong>Super Treasure Hunt (STH)</strong> — The ultimate find: spectraflame metallic finish, <em>real rider rubber tires</em>, and premium casting details. Extremely rare — roughly 1 per 2–3 cases.</li>
271
+ <li><strong>TLV Datsun Bluebird 1600SSS (1969)</strong> — rally heritage livery, ₹3,500–5,000</li>
272
+ <li><strong>TLV-N Toyota Corolla Levin AE86 Sprinter</strong> — Initial D connection, 2,8004,500</li>
273
+ <li><strong>TLV Nissan Skyline GT-R KPGC10</strong> — Hakosuka, ₹4,000–7,000</li>
274
+ <li><strong>TLV Honda N360 (1967)</strong> — kei car classic, ₹2,200–3,800</li>
403
275
  </ul>
404
- <h2>How to Identify a Treasure Hunt at Retail</h2>
405
- <p>To spot a TH on the peg:</p>
406
- <ol>
407
- <li>Look for the <strong>green flame logo</strong> printed on the card's upper left corner</li>
408
- <li>Check for a hidden 'TH' mark on the car body (often in the window, roof, or underside)</li>
409
- <li>For STHs — the real rubber tires are visually distinct from the plastic tires on standard cars</li>
410
- <li>Spectraflame paint catches light differently than standard factory paint</li>
411
- </ol>
412
- <blockquote><p>"The best time to hunt is Tuesday–Thursday when most stores receive weekly shipments. Be there when the cases are opened."</p></blockquote>
413
- <h2>Watch: Super Treasure Hunt Unboxing (Real Riders)</h2>
414
- <p>This video covers a live STH unboxing from a freshly opened case — showing exactly what separates a Super TH from a regular TH and what to look for on the card:</p>
415
- <div class="relative aspect-video w-full overflow-hidden rounded-lg my-4">
416
- <iframe class="absolute inset-0 h-full w-full" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="Hot Wheels Super Treasure Hunt Guide" loading="lazy"></iframe>
417
- </div>
418
- <h2>Where to Buy Treasure Hunts Online (If You Can't Hunt Retail)</h2>
419
- <p>If hunting retail isn't an option, LetItRip has a curated selection of Treasure Hunts from verified collectors including <strong>Speed King Diecast</strong> (Mumbai) who stocks premium STHs. Expect to pay a 3–5× premium over MRP for STHs and 1.5–2× for regular THs — this is standard market pricing.</p>
420
- <h2>Investment Perspective: Do TH Cars Appreciate?</h2>
421
- <p>Super Treasure Hunts have historically appreciated 15–25% year-over-year for popular castings (e.g., Supra, Golf GTI, Lamborghini Countach). Condition matters enormously — keep on card in an acrylic protector. Regular THs rarely exceed 3× MRP in value unless they feature a highly sought casting.</p>
422
- <h2>Tips for Building a TH Collection on a Budget</h2>
423
- <ul>
424
- <li>Focus on <strong>one or two theme series</strong> rather than collecting all THs</li>
425
- <li>Buy from trusted LetItRip sellers who include photos of all four sides</li>
426
- <li>Check for card creases — the card condition affects resale value as much as the car itself</li>
427
- <li>Join the LetItRip Hot Wheels community group for hunting reports and tips</li>
428
- </ul>`,
429
- coverImage: "https://picsum.photos/seed/hw-treasure-hunt-blog/1200/630",
276
+ <h2>Where to Buy in India</h2>
277
+ <p>TLV models are not available at regular toy retailers. Source from importers, dedicated collector shops, and LetItRip's Diecast Depot store. New releases ship from Japan 2–3 months after the Japanese release date. Pre-orders sell out fast — register your interest on the LetItRip pre-order section.</p>
278
+ <h2>Storage and Display</h2>
279
+ <p>TLV models come in individual plastic display cases inside a cardboard outer box. Keep in original cases — the plastic yellows if left in direct sunlight. IKEA DETOLF glass cabinet with LED lighting is the community favourite for premium display.</p>`,
280
+ coverImage: "https://images.unsplash.com/photo-1563642421748-5047b6585a4a?w=1200&h=630&fit=crop",
430
281
  category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
431
- tags: ["hot-wheels", "treasure-hunt", "sth", "hunting-guide", "collecting", "investment"],
432
- isFeatured: true,
433
- status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
434
- publishedAt: daysAgo(8),
435
- authorId: "user-admin-user-admin",
436
- authorName: "Admin User",
437
- readTimeMinutes: 8,
438
- views: 2340,
439
- metaTitle: "Hot Wheels Treasure Hunt Hunting Guide 2026 | LetItRip Blog",
440
- metaDescription: "How to find Hot Wheels Treasure Hunts and Super THs at retail — identification tips, best hunting times, and investment perspective.",
441
- createdAt: daysAgo(10),
442
- updatedAt: daysAgo(8),
443
- },
444
- {
445
- id: "blog-beyblade-burst-beginners-complete-guide-2026",
446
- title: "Beyblade Burst: The Complete Beginner's Guide (2026 Edition)",
447
- slug: "beyblade-burst-beginners-guide-2026",
448
- excerpt: "New to Beyblade Burst? This guide covers the four types, how to choose your first top, launcher basics, and the best beginner-friendly sets available on LetItRip.",
449
- content: `<h2>What Is Beyblade Burst?</h2>
450
- <p>Beyblade Burst is a spinning-top combat game published by Takara Tomy (Japan) and Hasbro (international). Two players launch customisable tops into a stadium — the winner is the top still spinning after its opponent is knocked out, rings out, or <em>bursts</em> (separates into pieces).</p>
451
- <p>The <strong>Burst mechanic</strong> is what sets this generation apart from classic Beyblade: a defeated top's energy layer can detach mid-battle, awarding 2 points to the attacker (vs. 1 for a standard knockdown).</p>
452
- <h2>The Four Types at a Glance</h2>
453
- <table>
454
- <thead><tr><th>Type</th><th>Goal</th><th>Best For</th></tr></thead>
455
- <tbody>
456
- <tr><td><strong>Attack</strong></td><td>Knock out opponent</td><td>Aggressive players</td></tr>
457
- <tr><td><strong>Defense</strong></td><td>Absorb hits, stay spinning</td><td>Patient players</td></tr>
458
- <tr><td><strong>Stamina</strong></td><td>Outlast opponent</td><td>Strategic players</td></tr>
459
- <tr><td><strong>Balance</strong></td><td>Mixed attributes</td><td>Versatile build</td></tr>
460
- </tbody>
461
- </table>
462
- <h2>Watch: Beyblade Burst Battle — Attack vs Stamina</h2>
463
- <p>See the dramatic difference between an Attack type and a Stamina type in a real match. Pay attention to how the Attack type's burst risk plays out:</p>
464
- <div class="relative aspect-video w-full overflow-hidden rounded-lg my-4">
465
- <iframe class="absolute inset-0 h-full w-full" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="Beyblade Burst Battle Demo" loading="lazy"></iframe>
466
- </div>
467
- <h2>Choosing Your First Beyblade</h2>
468
- <p>For beginners, we recommend starting with a <strong>Balance type</strong> (like Spriggan or Cho-Z Valkyrie) — they're forgiving, versatile, and competitive across different match-ups. Avoid pure Stamina types as your first top since they can feel passive for new players.</p>
469
- <h2>Launcher Guide for Beginners</h2>
470
- <p>The launcher is as important as the Beyblade itself. For beginners:</p>
471
- <ul>
472
- <li><strong>Grip String Launcher</strong> — pull cord mechanism, comfortable for kids and adults</li>
473
- <li><strong>Light Launcher</strong> — compact, good for beginners, included in most starter packs</li>
474
- <li>Always match <strong>spin direction</strong>: check if your top is R (right), L (left), or LR (both)</li>
475
- </ul>
476
- <h2>Recommended Starter Sets on LetItRip</h2>
477
- <p>Available from <strong>Bladers Paradise</strong> (Bangalore) on LetItRip:</p>
478
- <ul>
479
- <li>Beyblade Burst QuadDrive Starter Sets (₹1,499–₹2,499)</li>
480
- <li>Bladers Paradise Beginner Bundle: 2 tops + stadium + launcher (₹3,999)</li>
481
- <li>Random Booster (Level 6 or higher) for variety builds (₹599–₹899)</li>
482
- </ul>
483
- <blockquote><p>"The best part of Beyblade Burst is customisation. Once you've got two or three tops, start swapping parts to build your own custom combination."</p></blockquote>`,
484
- coverImage: "https://picsum.photos/seed/beyblade-beginners-blog/1200/630",
485
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.TIPS,
486
- tags: ["beyblade", "burst", "beginners-guide", "types", "launcher", "starter"],
282
+ tags: ["tomica", "tomica-limited-vintage", "tlv", "diecast", "japanese-cars"],
487
283
  isFeatured: false,
488
284
  status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
489
- publishedAt: daysAgo(5),
490
- authorId: "user-admin-user-admin",
491
- authorName: "Admin User",
492
- readTimeMinutes: 7,
493
- views: 1680,
494
- metaTitle: "Beyblade Burst Complete Beginner's Guide 2026 | LetItRip",
495
- metaDescription: "New to Beyblade Burst? Learn types, launcher basics, and which starter set to buy in this complete 2026 beginner's guide.",
496
- createdAt: daysAgo(7),
497
- updatedAt: daysAgo(5),
498
- },
499
- {
500
- id: "blog-transformers-g1-vs-modern-collecting-guide-2026",
501
- title: "Collecting Transformers: G1 Vintage vs Modern Lines — Which is Right for You?",
502
- slug: "transformers-g1-vs-modern-collecting-guide",
503
- excerpt: "Should you chase vintage G1 Transformers or focus on modern lines like Legacy, Studio Series, and Masterpiece? We break down the pros, cons, costs, and where to start.",
504
- content: `<h2>The Case for G1 Vintage Transformers</h2>
505
- <p>Generation 1 Transformers (1984–1990) are the original toys that started it all. Characters like Optimus Prime, Megatron, and Bumblebee in their original diecast and chrome-laden glory are irreplaceable artifacts of toy history.</p>
506
- <p><strong>Why collect G1:</strong></p>
507
- <ul>
508
- <li>Historical significance — these are the originals, not remakes</li>
509
- <li>Diecast metal construction on larger figures (Megatron, Soundwave)</li>
510
- <li>Chrome and rubber tires that modern figures replicate but can't match in feel</li>
511
- <li>MISB (Mint in Sealed Box) G1 figures have appreciated dramatically — 200–400% in the last decade</li>
512
- </ul>
513
- <p><strong>The challenges:</strong></p>
514
- <ul>
515
- <li>Rubber parts yellow and crack over time (known as 'yellowing')</li>
516
- <li>Joints loosen with age — transformation can be difficult on loose figures</li>
517
- <li>Authentic condition MISB figures command premium prices (₹30,000–₹3,00,000+ for iconic characters)</li>
518
- </ul>
519
- <h2>The Case for Modern Lines</h2>
520
- <p>Modern Transformers lines like <strong>Studio Series</strong>, <strong>Legacy</strong>, and <strong>Masterpiece</strong> offer engineering that would have been impossible in the '80s — ultra-accurate transformations, screen-accurate proportions, and premium materials.</p>
521
- <blockquote><p>"Studio Series Optimus Prime achieves film-accurate detail that would have taken 1,000 parts to replicate in the G1 era — all in a figure that fits on a standard shelf."</p></blockquote>
522
- <h2>Watch: G1 Optimus Prime vs Studio Series Comparison</h2>
523
- <p>This side-by-side video review compares the 1984 G1 Optimus Prime with the 2024 Studio Series Leader Class — transformation complexity, articulation, and display value:</p>
524
- <div class="relative aspect-video w-full overflow-hidden rounded-lg my-4">
525
- <iframe class="absolute inset-0 h-full w-full" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" title="G1 vs Studio Series Transformers Comparison" loading="lazy"></iframe>
526
- </div>
527
- <h2>Price Comparison: G1 vs Modern</h2>
528
- <table>
529
- <thead><tr><th>Figure</th><th>G1 Vintage (Loose)</th><th>G1 MISB</th><th>Modern Equivalent</th></tr></thead>
530
- <tbody>
531
- <tr><td>Optimus Prime</td><td>₹8,000–₹18,000</td><td>₹1,50,000+</td><td>₹4,999 (Studio Series)</td></tr>
532
- <tr><td>Megatron (P38)</td><td>₹12,000–₹25,000</td><td>₹2,50,000+</td><td>₹6,499 (Legacy)</td></tr>
533
- <tr><td>Soundwave + Cassettes</td><td>₹9,000–₹20,000</td><td>₹1,80,000+</td><td>₹4,999 (Kingdom)</td></tr>
534
- </tbody>
535
- </table>
536
- <h2>Our Recommendation</h2>
537
- <p>For new collectors on a budget: start with <strong>modern lines</strong>. Studio Series and Legacy deliver exceptional quality at accessible prices. Once you've built appreciation for the characters and lore, graduate to G1 hunting — starting with key characters in Complete-with-Instructions grade.</p>
538
- <p>For investment: MISB G1 continues to outperform modern figures in value appreciation. A limited budget is best allocated to sealed G1 Autobots or Decepticons with full cardback condition.</p>
539
- <h2>Shop on LetItRip</h2>
540
- <p>Both G1 vintage and modern Transformers are available from <strong>Speed King Diecast</strong> on LetItRip. Check their store for current stock including the live auction of a <a href="/auctions">G1 Optimus Prime MISB</a> — current bids open now.</p>`,
541
- coverImage: "https://picsum.photos/seed/transformers-g1-blog/1200/630",
542
- category: BLOG_POST_FIELDS.CATEGORY_VALUES.GUIDES,
543
- tags: ["transformers", "g1", "studio-series", "collecting", "investment", "masterpiece", "legacy"],
544
- isFeatured: true,
545
- status: BLOG_POST_FIELDS.STATUS_VALUES.PUBLISHED,
546
- publishedAt: daysAgo(3),
547
- authorId: "user-admin-user-admin",
548
- authorName: "Admin User",
549
- readTimeMinutes: 9,
550
- views: 1420,
551
- metaTitle: "Collecting Transformers: G1 vs Modern Lines Guide 2026 | LetItRip",
552
- metaDescription: "G1 vintage Transformers vs modern Studio Series, Legacy, and Masterpiece — which is right for your collection and budget?",
553
- createdAt: daysAgo(5),
554
- updatedAt: daysAgo(3),
285
+ publishedAt: daysAgo(4),
286
+ authorId: "user-vikram-mehta",
287
+ authorName: "Vikram Mehta",
288
+ readTimeMinutes: 6,
289
+ views: 890,
290
+ metaTitle: "Tomica Limited Vintage Collector's Guide for India | LetItRip",
291
+ metaDescription: "Complete guide to collecting Tomica Limited Vintage TLV vs TLV-N, top models, where to buy in India, and display tips.",
292
+ createdAt: daysAgo(6),
293
+ updatedAt: daysAgo(4),
555
294
  },
556
295
  ];