@mohasinac/appkit 2.3.1 → 2.4.0

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 (771) hide show
  1. package/dist/client.d.ts +54 -18
  2. package/dist/client.js +29 -10
  3. package/dist/constants/api-endpoints.d.ts +384 -22
  4. package/dist/constants/api-endpoints.js +68 -13
  5. package/dist/constants/index.d.ts +1 -1
  6. package/dist/constants/index.js +1 -1
  7. package/dist/core/contact-submissions.repository.d.ts +32 -0
  8. package/dist/core/contact-submissions.repository.js +49 -0
  9. package/dist/core/hooks/useSyncManager.d.ts +1 -0
  10. package/dist/core/hooks/useSyncManager.js +83 -0
  11. package/dist/core/index.d.ts +2 -0
  12. package/dist/core/index.js +1 -0
  13. package/dist/core/integration-keys.d.ts +4 -0
  14. package/dist/core/integration-keys.js +8 -0
  15. package/dist/features/about/components/FAQPageView.js +9 -11
  16. package/dist/features/about/components/HowPayoutsWorkView.js +1 -1
  17. package/dist/features/about/components/PolicyPageView.js +32 -11
  18. package/dist/features/about/components/PublicProfileView.js +77 -11
  19. package/dist/features/account/components/AddressFilters.d.ts +5 -0
  20. package/dist/features/account/components/AddressFilters.js +20 -0
  21. package/dist/features/account/components/AddressesIndexListing.d.ts +6 -0
  22. package/dist/features/account/components/AddressesIndexListing.js +76 -0
  23. package/dist/features/account/components/UserOffersPanel.d.ts +8 -0
  24. package/dist/features/account/components/UserOffersPanel.js +81 -0
  25. package/dist/features/account/components/UserSettingsView.d.ts +2 -1
  26. package/dist/features/account/components/UserSettingsView.js +2 -1
  27. package/dist/features/account/components/UserSidebar.d.ts +12 -3
  28. package/dist/features/account/components/UserSidebar.js +64 -10
  29. package/dist/features/account/components/index.d.ts +2 -0
  30. package/dist/features/account/components/index.js +1 -0
  31. package/dist/features/account/hooks/useAddresses.d.ts +7 -0
  32. package/dist/features/account/hooks/useAddresses.js +12 -1
  33. package/dist/features/admin/actions/admin-actions.d.ts +1 -1
  34. package/dist/features/admin/actions/admin-actions.js +13 -3
  35. package/dist/features/admin/actions/admin-read-actions.d.ts +12 -0
  36. package/dist/features/admin/actions/admin-read-actions.js +18 -0
  37. package/dist/features/admin/components/AdminAdEditorView.js +6 -7
  38. package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +4 -0
  39. package/dist/features/admin/components/AdminAllEventEntriesView.js +102 -0
  40. package/dist/features/admin/components/AdminBidsView.js +94 -8
  41. package/dist/features/admin/components/AdminBlogEditorView.d.ts +7 -0
  42. package/dist/features/admin/components/AdminBlogEditorView.js +162 -0
  43. package/dist/features/admin/components/AdminBlogView.d.ts +4 -1
  44. package/dist/features/admin/components/AdminBlogView.js +64 -10
  45. package/dist/features/admin/components/AdminBrandEditorView.d.ts +7 -0
  46. package/dist/features/admin/components/AdminBrandEditorView.js +104 -0
  47. package/dist/features/admin/components/AdminBrandsView.d.ts +4 -0
  48. package/dist/features/admin/components/AdminBrandsView.js +76 -0
  49. package/dist/features/admin/components/AdminCarouselEditorView.d.ts +8 -0
  50. package/dist/features/admin/components/AdminCarouselEditorView.js +204 -0
  51. package/dist/features/admin/components/AdminCarouselView.js +155 -20
  52. package/dist/features/admin/components/AdminCartsView.d.ts +4 -0
  53. package/dist/features/admin/components/AdminCartsView.js +82 -0
  54. package/dist/features/admin/components/AdminCategoriesView.d.ts +4 -1
  55. package/dist/features/admin/components/AdminCategoriesView.js +69 -26
  56. package/dist/features/admin/components/AdminCategoryEditorView.d.ts +7 -0
  57. package/dist/features/admin/components/AdminCategoryEditorView.js +115 -0
  58. package/dist/features/admin/components/AdminContactEditorView.d.ts +11 -0
  59. package/dist/features/admin/components/AdminContactEditorView.js +32 -0
  60. package/dist/features/admin/components/AdminContactView.d.ts +4 -0
  61. package/dist/features/admin/components/AdminContactView.js +141 -0
  62. package/dist/features/admin/components/AdminCouponEditorView.d.ts +7 -0
  63. package/dist/features/admin/components/AdminCouponEditorView.js +179 -0
  64. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -1
  65. package/dist/features/admin/components/AdminCouponsView.js +57 -9
  66. package/dist/features/admin/components/AdminDashboardView.js +3 -0
  67. package/dist/features/admin/components/AdminFaqEditorView.d.ts +7 -0
  68. package/dist/features/admin/components/AdminFaqEditorView.js +128 -0
  69. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -1
  70. package/dist/features/admin/components/AdminFaqsView.js +55 -6
  71. package/dist/features/admin/components/AdminFeatureFlagsView.js +33 -24
  72. package/dist/features/admin/components/AdminListingScaffold.d.ts +17 -2
  73. package/dist/features/admin/components/AdminListingScaffold.js +14 -3
  74. package/dist/features/admin/components/AdminMediaView.js +18 -8
  75. package/dist/features/admin/components/AdminNavEditorView.d.ts +20 -0
  76. package/dist/features/admin/components/AdminNavEditorView.js +84 -0
  77. package/dist/features/admin/components/AdminNavigationView.d.ts +1 -7
  78. package/dist/features/admin/components/AdminNavigationView.js +84 -72
  79. package/dist/features/admin/components/AdminNewsletterView.d.ts +4 -0
  80. package/dist/features/admin/components/AdminNewsletterView.js +132 -0
  81. package/dist/features/admin/components/AdminNotificationsView.d.ts +4 -0
  82. package/dist/features/admin/components/AdminNotificationsView.js +119 -0
  83. package/dist/features/admin/components/AdminOrderEditorView.d.ts +8 -0
  84. package/dist/features/admin/components/AdminOrderEditorView.js +74 -0
  85. package/dist/features/admin/components/AdminOrdersView.js +64 -8
  86. package/dist/features/admin/components/AdminPayoutsView.js +122 -13
  87. package/dist/features/admin/components/AdminProductEditorView.d.ts +7 -0
  88. package/dist/features/admin/components/AdminProductEditorView.js +143 -0
  89. package/dist/features/admin/components/AdminProductsView.d.ts +4 -1
  90. package/dist/features/admin/components/AdminProductsView.js +124 -7
  91. package/dist/features/admin/components/AdminReturnRequestsView.d.ts +5 -0
  92. package/dist/features/admin/components/AdminReturnRequestsView.js +101 -0
  93. package/dist/features/admin/components/AdminReviewsView.js +140 -6
  94. package/dist/features/admin/components/AdminSectionsView.js +361 -472
  95. package/dist/features/admin/components/AdminSessionsView.d.ts +4 -0
  96. package/dist/features/admin/components/AdminSessionsView.js +119 -0
  97. package/dist/features/admin/components/AdminSidebar.d.ts +18 -3
  98. package/dist/features/admin/components/AdminSidebar.js +51 -4
  99. package/dist/features/admin/components/AdminSiteSettingsView.d.ts +7 -0
  100. package/dist/features/admin/components/AdminSiteSettingsView.js +319 -0
  101. package/dist/features/admin/components/AdminStoreAddressesView.d.ts +5 -0
  102. package/dist/features/admin/components/AdminStoreAddressesView.js +52 -0
  103. package/dist/features/admin/components/AdminStoreEditorView.d.ts +9 -0
  104. package/dist/features/admin/components/AdminStoreEditorView.js +55 -0
  105. package/dist/features/admin/components/AdminStoresView.js +62 -5
  106. package/dist/features/admin/components/AdminUserEditorView.d.ts +10 -0
  107. package/dist/features/admin/components/AdminUserEditorView.js +72 -0
  108. package/dist/features/admin/components/AdminUsersView.js +73 -14
  109. package/dist/features/admin/components/AdminWishlistsView.d.ts +4 -0
  110. package/dist/features/admin/components/AdminWishlistsView.js +53 -0
  111. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +5 -0
  112. package/dist/features/admin/components/BrandQuickCreateForm.js +36 -0
  113. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +5 -0
  114. package/dist/features/admin/components/CategoryQuickCreateForm.js +35 -0
  115. package/dist/features/admin/components/DataTable.d.ts +5 -2
  116. package/dist/features/admin/components/DataTable.js +38 -4
  117. package/dist/features/admin/components/index.d.ts +53 -1
  118. package/dist/features/admin/components/index.js +26 -0
  119. package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +48 -0
  120. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +653 -0
  121. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +298 -0
  122. package/dist/features/admin/components/sections/adminSectionsTypes.js +278 -0
  123. package/dist/features/admin/hooks/useAdminListingData.d.ts +3 -1
  124. package/dist/features/admin/hooks/useAdminListingData.js +12 -7
  125. package/dist/features/admin/schemas/firestore.d.ts +26 -0
  126. package/dist/features/admin/schemas/firestore.js +1 -0
  127. package/dist/features/admin/server.d.ts +3 -0
  128. package/dist/features/admin/server.js +2 -0
  129. package/dist/features/admin/types/product.types.d.ts +2 -3
  130. package/dist/features/auctions/actions/bid-actions.js +6 -2
  131. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +3 -1
  132. package/dist/features/auctions/components/AuctionDetailPageView.js +125 -53
  133. package/dist/features/auctions/components/AuctionFilters.d.ts +10 -0
  134. package/dist/features/auctions/components/AuctionFilters.js +16 -0
  135. package/dist/features/auctions/components/AuctionsListView.d.ts +6 -1
  136. package/dist/features/auctions/components/AuctionsListView.js +37 -5
  137. package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +7 -0
  138. package/dist/features/auctions/components/CollapsibleBidHistory.js +8 -0
  139. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +4 -0
  140. package/dist/features/auctions/components/MarketplaceAuctionCard.js +43 -9
  141. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -0
  142. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +18 -0
  143. package/dist/features/auctions/components/PlaceBidFormClient.js +33 -0
  144. package/dist/features/auctions/hooks/useAuctions.d.ts +1 -0
  145. package/dist/features/auctions/hooks/useAuctions.js +1 -0
  146. package/dist/features/auctions/schemas/index.d.ts +18 -8
  147. package/dist/features/auth/actions/profile-actions.d.ts +5 -3
  148. package/dist/features/auth/actions/profile-actions.js +30 -11
  149. package/dist/features/auth/auth-helpers.js +1 -0
  150. package/dist/features/auth/components/LoginForm.js +2 -1
  151. package/dist/features/auth/hooks/useAuth.js +16 -4
  152. package/dist/features/auth/permissions/constants.d.ts +63 -0
  153. package/dist/features/auth/permissions/constants.js +323 -0
  154. package/dist/features/auth/schemas/firestore.d.ts +20 -0
  155. package/dist/features/auth/schemas/index.d.ts +4 -4
  156. package/dist/features/auth/schemas/index.js +3 -2
  157. package/dist/features/auth/types/index.d.ts +1 -1
  158. package/dist/features/before-after/schemas/index.d.ts +2 -2
  159. package/dist/features/blog/actions/blog-actions.d.ts +15 -15
  160. package/dist/features/blog/components/BlogFeaturedCard.d.ts +1 -7
  161. package/dist/features/blog/components/BlogFeaturedCard.js +4 -5
  162. package/dist/features/blog/components/BlogFilters.js +2 -1
  163. package/dist/features/blog/components/BlogIndexListing.js +66 -9
  164. package/dist/features/blog/components/BlogIndexPageView.d.ts +6 -1
  165. package/dist/features/blog/components/BlogIndexPageView.js +24 -4
  166. package/dist/features/blog/components/BlogListView.d.ts +2 -1
  167. package/dist/features/blog/components/BlogListView.js +10 -3
  168. package/dist/features/blog/components/BlogPostForm.js +6 -2
  169. package/dist/features/blog/components/BlogPostView.js +2 -1
  170. package/dist/features/blog/hooks/useBlog.d.ts +2 -0
  171. package/dist/features/blog/hooks/useBlog.js +2 -0
  172. package/dist/features/blog/schemas/index.d.ts +46 -12
  173. package/dist/features/brands/actions/brand-actions.d.ts +2 -0
  174. package/dist/features/brands/actions/brand-actions.js +5 -0
  175. package/dist/features/brands/index.d.ts +3 -0
  176. package/dist/features/brands/index.js +3 -0
  177. package/dist/features/brands/repository/brands.repository.d.ts +13 -0
  178. package/dist/features/brands/repository/brands.repository.js +60 -0
  179. package/dist/features/brands/schemas/index.d.ts +33 -0
  180. package/dist/features/brands/schemas/index.js +15 -0
  181. package/dist/features/brands/server.d.ts +7 -0
  182. package/dist/features/brands/server.js +7 -0
  183. package/dist/features/cart/actions/cart-actions.js +2 -2
  184. package/dist/features/cart/components/CartDrawer.d.ts +5 -1
  185. package/dist/features/cart/components/CartDrawer.js +3 -3
  186. package/dist/features/cart/hooks/useCartCount.d.ts +3 -2
  187. package/dist/features/cart/hooks/useCartCount.js +4 -2
  188. package/dist/features/cart/hooks/useGuestCartMerge.js +1 -1
  189. package/dist/features/cart/index.d.ts +1 -0
  190. package/dist/features/cart/index.js +1 -0
  191. package/dist/features/cart/repository/cart.repository.d.ts +5 -1
  192. package/dist/features/cart/repository/cart.repository.js +36 -5
  193. package/dist/features/cart/schemas/firestore.d.ts +25 -6
  194. package/dist/features/cart/schemas/firestore.js +2 -2
  195. package/dist/features/cart/schemas/index.d.ts +9 -9
  196. package/dist/features/cart/schemas/index.js +1 -1
  197. package/dist/features/cart/types/index.d.ts +1 -1
  198. package/dist/features/cart/utils/pending-ops.d.ts +33 -0
  199. package/dist/features/cart/utils/pending-ops.js +102 -0
  200. package/dist/features/categories/components/BrandDetailPageView.d.ts +4 -0
  201. package/dist/features/categories/components/BrandDetailPageView.js +54 -0
  202. package/dist/features/categories/components/BrandDetailTabs.d.ts +10 -0
  203. package/dist/features/categories/components/BrandDetailTabs.js +22 -0
  204. package/dist/features/categories/components/CategoriesIndexListing.d.ts +3 -1
  205. package/dist/features/categories/components/CategoriesIndexListing.js +117 -38
  206. package/dist/features/categories/components/CategoriesIndexPageView.d.ts +6 -1
  207. package/dist/features/categories/components/CategoriesIndexPageView.js +41 -2
  208. package/dist/features/categories/components/CategoryDetailPageView.js +47 -19
  209. package/dist/features/categories/components/CategoryDetailTabs.d.ts +11 -0
  210. package/dist/features/categories/components/CategoryDetailTabs.js +22 -0
  211. package/dist/features/categories/components/CategoryFilters.js +2 -1
  212. package/dist/features/categories/components/CategoryForm.js +10 -4
  213. package/dist/features/categories/components/CategoryGrid.d.ts +2 -1
  214. package/dist/features/categories/components/CategoryGrid.js +8 -6
  215. package/dist/features/categories/components/CategoryProductsListing.d.ts +4 -1
  216. package/dist/features/categories/components/CategoryProductsListing.js +53 -13
  217. package/dist/features/categories/components/ConcernCard.js +1 -1
  218. package/dist/features/categories/components/index.d.ts +2 -0
  219. package/dist/features/categories/components/index.js +1 -0
  220. package/dist/features/categories/hooks/useCategories.d.ts +20 -0
  221. package/dist/features/categories/hooks/useCategories.js +52 -1
  222. package/dist/features/categories/hooks/useCategoryTree.d.ts +17 -0
  223. package/dist/features/categories/hooks/useCategoryTree.js +65 -0
  224. package/dist/features/categories/repository/categories.repository.js +2 -3
  225. package/dist/features/categories/schemas/firestore.d.ts +23 -2
  226. package/dist/features/categories/schemas/firestore.js +8 -0
  227. package/dist/features/categories/schemas/index.d.ts +8 -8
  228. package/dist/features/categories/types/index.d.ts +1 -0
  229. package/dist/features/collections/schemas/index.d.ts +2 -2
  230. package/dist/features/events/components/AdminEventEditorView.d.ts +6 -0
  231. package/dist/features/events/components/AdminEventEditorView.js +203 -0
  232. package/dist/features/events/components/AdminEventsView.d.ts +4 -1
  233. package/dist/features/events/components/AdminEventsView.js +66 -14
  234. package/dist/features/events/components/EventCard.js +4 -2
  235. package/dist/features/events/components/EventFilters.js +2 -1
  236. package/dist/features/events/components/EventPollWidget.d.ts +12 -0
  237. package/dist/features/events/components/EventPollWidget.js +62 -0
  238. package/dist/features/events/components/EventsIndexListing.js +92 -10
  239. package/dist/features/events/components/EventsListPageView.d.ts +6 -1
  240. package/dist/features/events/components/EventsListPageView.js +40 -7
  241. package/dist/features/events/components/index.d.ts +4 -0
  242. package/dist/features/events/components/index.js +2 -0
  243. package/dist/features/events/hooks/useEvents.d.ts +1 -0
  244. package/dist/features/events/hooks/useEvents.js +3 -0
  245. package/dist/features/events/repository/events.repository.js +3 -0
  246. package/dist/features/events/schemas/firestore.d.ts +1 -0
  247. package/dist/features/events/schemas/index.d.ts +44 -0
  248. package/dist/features/events/types/index.d.ts +3 -0
  249. package/dist/features/faq/actions/faq-actions.d.ts +16 -16
  250. package/dist/features/faq/hooks/useFaqList.js +1 -1
  251. package/dist/features/faq/schemas/firestore.d.ts +2 -2
  252. package/dist/features/faq/schemas/firestore.js +2 -1
  253. package/dist/features/faq/schemas/index.d.ts +4 -4
  254. package/dist/features/filters/FilterFacetSection.d.ts +1 -0
  255. package/dist/features/filters/FilterFacetSection.js +13 -1
  256. package/dist/features/filters/SwitchFilter.js +1 -1
  257. package/dist/features/grouped/schemas/firestore.d.ts +32 -0
  258. package/dist/features/grouped/schemas/firestore.js +19 -0
  259. package/dist/features/homepage/components/AdSlot.d.ts +1 -3
  260. package/dist/features/homepage/components/AdSlot.js +15 -14
  261. package/dist/features/homepage/components/BlogArticlesSection.d.ts +3 -1
  262. package/dist/features/homepage/components/BlogArticlesSection.js +3 -3
  263. package/dist/features/homepage/components/BrandsSection.d.ts +3 -1
  264. package/dist/features/homepage/components/BrandsSection.js +4 -3
  265. package/dist/features/homepage/components/CustomCardsSection.d.ts +3 -0
  266. package/dist/features/homepage/components/CustomCardsSection.js +76 -0
  267. package/dist/features/homepage/components/EventsSection.d.ts +3 -1
  268. package/dist/features/homepage/components/EventsSection.js +3 -3
  269. package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +4 -1
  270. package/dist/features/homepage/components/FeaturedAuctionsSection.js +3 -3
  271. package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +4 -1
  272. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +3 -3
  273. package/dist/features/homepage/components/FeaturedProductsSection.d.ts +4 -1
  274. package/dist/features/homepage/components/FeaturedProductsSection.js +8 -3
  275. package/dist/features/homepage/components/FeaturedStoresSection.d.ts +3 -1
  276. package/dist/features/homepage/components/FeaturedStoresSection.js +3 -3
  277. package/dist/features/homepage/components/GoogleReviewsSection.d.ts +3 -0
  278. package/dist/features/homepage/components/GoogleReviewsSection.js +65 -0
  279. package/dist/features/homepage/components/HeroCarousel.js +129 -85
  280. package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +2 -20
  281. package/dist/features/homepage/components/MarketplaceHomepageView.js +73 -220
  282. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
  283. package/dist/features/homepage/components/SectionCarousel.js +6 -4
  284. package/dist/features/homepage/components/ShopByCategorySection.d.ts +3 -1
  285. package/dist/features/homepage/components/ShopByCategorySection.js +8 -4
  286. package/dist/features/homepage/components/SocialFeedSection.d.ts +3 -0
  287. package/dist/features/homepage/components/SocialFeedSection.js +86 -0
  288. package/dist/features/homepage/components/SocialPostCard.d.ts +7 -0
  289. package/dist/features/homepage/components/SocialPostCard.js +39 -0
  290. package/dist/features/homepage/components/StatsCounterSection.js +1 -1
  291. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  292. package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
  293. package/dist/features/homepage/hooks/useActiveAd.d.ts +23 -0
  294. package/dist/features/homepage/hooks/useActiveAd.js +20 -0
  295. package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -0
  296. package/dist/features/homepage/hooks/useBlogArticles.js +10 -0
  297. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +4 -1
  298. package/dist/features/homepage/hooks/useFeaturedAuctions.js +8 -4
  299. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +4 -1
  300. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +8 -4
  301. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -0
  302. package/dist/features/homepage/hooks/useFeaturedProducts.js +6 -3
  303. package/dist/features/homepage/hooks/useFeaturedStores.d.ts +3 -1
  304. package/dist/features/homepage/hooks/useFeaturedStores.js +2 -1
  305. package/dist/features/homepage/hooks/useHomepageEvents.d.ts +3 -1
  306. package/dist/features/homepage/hooks/useHomepageEvents.js +2 -1
  307. package/dist/features/homepage/hooks/useTopBrands.d.ts +3 -1
  308. package/dist/features/homepage/hooks/useTopBrands.js +2 -1
  309. package/dist/features/homepage/index.d.ts +2 -0
  310. package/dist/features/homepage/index.js +1 -0
  311. package/dist/features/homepage/lib/google-reviews-fetcher.d.ts +14 -0
  312. package/dist/features/homepage/lib/google-reviews-fetcher.js +27 -0
  313. package/dist/features/homepage/lib/live-stats.d.ts +14 -0
  314. package/dist/features/homepage/lib/live-stats.js +62 -0
  315. package/dist/features/homepage/lib/section-defaults.d.ts +11 -0
  316. package/dist/features/homepage/lib/section-defaults.js +45 -0
  317. package/dist/features/homepage/lib/section-helpers.d.ts +5 -0
  318. package/dist/features/homepage/lib/section-helpers.js +25 -0
  319. package/dist/features/homepage/lib/section-renderer.d.ts +33 -0
  320. package/dist/features/homepage/lib/section-renderer.js +164 -0
  321. package/dist/features/homepage/lib/social-feed-fetcher.d.ts +5 -0
  322. package/dist/features/homepage/lib/social-feed-fetcher.js +193 -0
  323. package/dist/features/homepage/schemas/firestore.d.ts +180 -29
  324. package/dist/features/homepage/schemas/firestore.js +7 -1
  325. package/dist/features/homepage/types/index.d.ts +48 -19
  326. package/dist/features/layout/AppLayoutShell.d.ts +11 -2
  327. package/dist/features/layout/AppLayoutShell.js +30 -10
  328. package/dist/features/layout/BottomActions.js +1 -1
  329. package/dist/features/layout/BottomNavbar.d.ts +15 -1
  330. package/dist/features/layout/BottomNavbar.js +8 -2
  331. package/dist/features/layout/FooterLayout.d.ts +7 -1
  332. package/dist/features/layout/FooterLayout.js +3 -3
  333. package/dist/features/layout/ListingLayout.js +2 -2
  334. package/dist/features/layout/MainNavbar.d.ts +6 -14
  335. package/dist/features/layout/MainNavbar.js +4 -16
  336. package/dist/features/layout/NavItem.js +1 -1
  337. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  338. package/dist/features/layout/NavbarLayout.js +5 -5
  339. package/dist/features/layout/TitleBar.d.ts +4 -2
  340. package/dist/features/layout/TitleBar.js +5 -3
  341. package/dist/features/layout/TitleBarLayout.d.ts +3 -1
  342. package/dist/features/layout/TitleBarLayout.js +2 -2
  343. package/dist/features/layout/index.d.ts +1 -1
  344. package/dist/features/media/MediaPickerModal.d.ts +30 -0
  345. package/dist/features/media/MediaPickerModal.js +72 -0
  346. package/dist/features/media/index.d.ts +3 -1
  347. package/dist/features/media/index.js +1 -0
  348. package/dist/features/media/types/index.d.ts +12 -0
  349. package/dist/features/media/types/index.js +4 -2
  350. package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
  351. package/dist/features/media/upload/MediaUploadField.js +56 -3
  352. package/dist/features/messages/schemas/firestore.d.ts +36 -0
  353. package/dist/features/messages/schemas/firestore.js +16 -0
  354. package/dist/features/orders/repository/orders.repository.d.ts +2 -2
  355. package/dist/features/orders/repository/orders.repository.js +2 -2
  356. package/dist/features/orders/schemas/firestore.d.ts +17 -4
  357. package/dist/features/orders/schemas/firestore.js +2 -2
  358. package/dist/features/orders/schemas/index.d.ts +18 -18
  359. package/dist/features/orders/schemas/index.js +3 -3
  360. package/dist/features/orders/types/index.d.ts +1 -1
  361. package/dist/features/orders/utils/order-splitter.d.ts +1 -1
  362. package/dist/features/orders/utils/order-splitter.js +2 -2
  363. package/dist/features/payments/repository/payout.repository.d.ts +4 -4
  364. package/dist/features/payments/repository/payout.repository.js +7 -7
  365. package/dist/features/payments/schemas/firestore.d.ts +6 -6
  366. package/dist/features/payments/schemas/firestore.js +6 -6
  367. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +3 -1
  368. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +13 -8
  369. package/dist/features/pre-orders/components/PreOrderActionsClient.d.ts +11 -0
  370. package/dist/features/pre-orders/components/PreOrderActionsClient.js +28 -0
  371. package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +2 -1
  372. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +100 -14
  373. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +10 -0
  374. package/dist/features/pre-orders/components/PreOrderFilters.js +24 -0
  375. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +4 -1
  376. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +166 -11
  377. package/dist/features/pre-orders/components/PreOrdersListView.d.ts +6 -1
  378. package/dist/features/pre-orders/components/PreOrdersListView.js +26 -7
  379. package/dist/features/pre-orders/components/PreorderCard.js +1 -1
  380. package/dist/features/pre-orders/components/index.d.ts +2 -0
  381. package/dist/features/pre-orders/components/index.js +1 -0
  382. package/dist/features/pre-orders/schemas/index.d.ts +10 -0
  383. package/dist/features/products/actions/product-actions.d.ts +2 -2
  384. package/dist/features/products/actions/product-actions.js +5 -5
  385. package/dist/features/products/api/[id]/route.js +5 -2
  386. package/dist/features/products/api/route.js +10 -14
  387. package/dist/features/products/columns/productTableColumns.js +2 -2
  388. package/dist/features/products/components/AuctionDetailView.d.ts +2 -1
  389. package/dist/features/products/components/AuctionDetailView.js +2 -2
  390. package/dist/features/products/components/AuctionsIndexListing.d.ts +4 -1
  391. package/dist/features/products/components/AuctionsIndexListing.js +124 -10
  392. package/dist/features/products/components/BidHistory.d.ts +2 -1
  393. package/dist/features/products/components/BidHistory.js +18 -2
  394. package/dist/features/products/components/InteractiveProductCard.d.ts +2 -4
  395. package/dist/features/products/components/InteractiveProductCard.js +2 -2
  396. package/dist/features/products/components/MakeOfferButton.d.ts +10 -0
  397. package/dist/features/products/components/MakeOfferButton.js +68 -0
  398. package/dist/features/products/components/ProductDetailPageView.d.ts +11 -1
  399. package/dist/features/products/components/ProductDetailPageView.js +136 -26
  400. package/dist/features/products/components/ProductFilters.d.ts +13 -12
  401. package/dist/features/products/components/ProductFilters.js +8 -4
  402. package/dist/features/products/components/ProductForm.d.ts +19 -1
  403. package/dist/features/products/components/ProductForm.js +24 -6
  404. package/dist/features/products/components/ProductGrid.d.ts +16 -2
  405. package/dist/features/products/components/ProductGrid.js +80 -18
  406. package/dist/features/products/components/ProductTabsShell.d.ts +3 -11
  407. package/dist/features/products/components/ProductTabsShell.js +14 -14
  408. package/dist/features/products/components/ProductsIndexListing.js +160 -10
  409. package/dist/features/products/components/ProductsIndexPageView.d.ts +6 -1
  410. package/dist/features/products/components/ProductsIndexPageView.js +39 -6
  411. package/dist/features/products/components/RelatedProductsCarousel.d.ts +7 -0
  412. package/dist/features/products/components/RelatedProductsCarousel.js +11 -0
  413. package/dist/features/products/components/ShareButton.d.ts +7 -0
  414. package/dist/features/products/components/ShareButton.js +22 -0
  415. package/dist/features/products/components/index.d.ts +3 -0
  416. package/dist/features/products/components/index.js +2 -0
  417. package/dist/features/products/hooks/useProducts.d.ts +7 -0
  418. package/dist/features/products/hooks/useProducts.js +20 -2
  419. package/dist/features/products/repository/products.repository.d.ts +9 -5
  420. package/dist/features/products/repository/products.repository.js +19 -50
  421. package/dist/features/products/schemas/firestore.d.ts +11 -9
  422. package/dist/features/products/schemas/firestore.js +11 -3
  423. package/dist/features/products/schemas/index.d.ts +43 -42
  424. package/dist/features/products/schemas/index.js +2 -5
  425. package/dist/features/products/types/index.d.ts +24 -4
  426. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  427. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  428. package/dist/features/promotions/actions/seller-coupon-actions.js +11 -6
  429. package/dist/features/promotions/api/route.js +3 -3
  430. package/dist/features/promotions/components/CouponCard.js +16 -7
  431. package/dist/features/promotions/components/CouponsIndexListing.d.ts +9 -0
  432. package/dist/features/promotions/components/CouponsIndexListing.js +80 -0
  433. package/dist/features/promotions/components/PromotionsView.d.ts +11 -5
  434. package/dist/features/promotions/components/PromotionsView.js +6 -1
  435. package/dist/features/promotions/components/index.d.ts +4 -2
  436. package/dist/features/promotions/components/index.js +2 -1
  437. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  438. package/dist/features/promotions/hooks/usePromotions.js +2 -2
  439. package/dist/features/promotions/repository/coupons.repository.d.ts +21 -15
  440. package/dist/features/promotions/repository/coupons.repository.js +97 -125
  441. package/dist/features/promotions/schemas/firestore.d.ts +31 -2
  442. package/dist/features/promotions/schemas/firestore.js +29 -0
  443. package/dist/features/promotions/schemas/index.d.ts +9 -12
  444. package/dist/features/promotions/schemas/index.js +1 -2
  445. package/dist/features/promotions/types/index.d.ts +1 -2
  446. package/dist/features/reviews/actions/review-actions.js +3 -2
  447. package/dist/features/reviews/components/ReviewDetailPageView.d.ts +4 -0
  448. package/dist/features/reviews/components/ReviewDetailPageView.js +16 -0
  449. package/dist/features/reviews/components/ReviewDetailShell.d.ts +7 -0
  450. package/dist/features/reviews/components/ReviewDetailShell.js +80 -0
  451. package/dist/features/reviews/components/ReviewFilters.d.ts +3 -3
  452. package/dist/features/reviews/components/ReviewFilters.js +5 -4
  453. package/dist/features/reviews/components/ReviewsIndexListing.d.ts +4 -3
  454. package/dist/features/reviews/components/ReviewsIndexListing.js +86 -51
  455. package/dist/features/reviews/components/ReviewsIndexPageView.d.ts +6 -1
  456. package/dist/features/reviews/components/ReviewsIndexPageView.js +49 -3
  457. package/dist/features/reviews/components/ReviewsList.js +9 -1
  458. package/dist/features/reviews/components/index.d.ts +1 -0
  459. package/dist/features/reviews/hooks/useReviews.d.ts +1 -0
  460. package/dist/features/reviews/hooks/useReviews.js +16 -1
  461. package/dist/features/reviews/repository/reviews.repository.d.ts +9 -4
  462. package/dist/features/reviews/repository/reviews.repository.js +18 -7
  463. package/dist/features/reviews/schemas/firestore.d.ts +5 -2
  464. package/dist/features/reviews/schemas/firestore.js +1 -0
  465. package/dist/features/reviews/schemas/index.d.ts +19 -16
  466. package/dist/features/reviews/schemas/index.js +3 -2
  467. package/dist/features/reviews/types/index.d.ts +9 -3
  468. package/dist/features/scams/actions/scam-actions.d.ts +29 -0
  469. package/dist/features/scams/actions/scam-actions.js +62 -0
  470. package/dist/features/scams/components/ScamProfileView.d.ts +7 -0
  471. package/dist/features/scams/components/ScamProfileView.js +49 -0
  472. package/dist/features/scams/components/ScamRegistryView.d.ts +6 -0
  473. package/dist/features/scams/components/ScamRegistryView.js +41 -0
  474. package/dist/features/scams/components/index.d.ts +4 -0
  475. package/dist/features/scams/components/index.js +2 -0
  476. package/dist/features/scams/constants/scam-types.d.ts +38 -0
  477. package/dist/features/scams/constants/scam-types.js +443 -0
  478. package/dist/features/scams/repository/scammer.repository.d.ts +67 -0
  479. package/dist/features/scams/repository/scammer.repository.js +160 -0
  480. package/dist/features/scams/schemas/firestore.d.ts +362 -0
  481. package/dist/features/scams/schemas/firestore.js +233 -0
  482. package/dist/features/search/components/Search.d.ts +12 -2
  483. package/dist/features/search/components/Search.js +26 -7
  484. package/dist/features/search/components/index.d.ts +1 -1
  485. package/dist/features/search/hooks/useNavSuggestions.d.ts +1 -1
  486. package/dist/features/search/hooks/useNavSuggestions.js +2 -2
  487. package/dist/features/search/schemas/index.d.ts +7 -7
  488. package/dist/features/seller/actions/offer-actions.js +52 -36
  489. package/dist/features/seller/actions/seller-actions.js +19 -13
  490. package/dist/features/seller/api/products/route.js +9 -4
  491. package/dist/features/seller/components/SellerAddressesView.d.ts +3 -12
  492. package/dist/features/seller/components/SellerAddressesView.js +144 -4
  493. package/dist/features/seller/components/SellerAuctionsView.js +58 -5
  494. package/dist/features/seller/components/SellerBidsView.d.ts +4 -0
  495. package/dist/features/seller/components/SellerBidsView.js +131 -0
  496. package/dist/features/seller/components/SellerCouponEditorView.d.ts +19 -0
  497. package/dist/features/seller/components/SellerCouponEditorView.js +67 -0
  498. package/dist/features/seller/components/SellerCouponsView.d.ts +5 -3
  499. package/dist/features/seller/components/SellerCouponsView.js +135 -13
  500. package/dist/features/seller/components/SellerCreateProductView.d.ts +4 -10
  501. package/dist/features/seller/components/SellerCreateProductView.js +4 -3
  502. package/dist/features/seller/components/SellerEditProductView.d.ts +4 -10
  503. package/dist/features/seller/components/SellerEditProductView.js +4 -3
  504. package/dist/features/seller/components/SellerOffersPanel.d.ts +20 -0
  505. package/dist/features/seller/components/SellerOffersPanel.js +138 -0
  506. package/dist/features/seller/components/SellerOffersView.js +56 -5
  507. package/dist/features/seller/components/SellerOrdersView.d.ts +2 -1
  508. package/dist/features/seller/components/SellerOrdersView.js +185 -16
  509. package/dist/features/seller/components/SellerPayoutRequestView.d.ts +7 -0
  510. package/dist/features/seller/components/SellerPayoutRequestView.js +63 -0
  511. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +3 -10
  512. package/dist/features/seller/components/SellerPayoutSettingsView.js +89 -3
  513. package/dist/features/seller/components/SellerPayoutsView.js +56 -5
  514. package/dist/features/seller/components/SellerProductShell.d.ts +68 -0
  515. package/dist/features/seller/components/SellerProductShell.js +179 -0
  516. package/dist/features/seller/components/SellerProductsView.d.ts +2 -3
  517. package/dist/features/seller/components/SellerProductsView.js +194 -18
  518. package/dist/features/seller/components/SellerReviewsView.d.ts +5 -0
  519. package/dist/features/seller/components/SellerReviewsView.js +100 -0
  520. package/dist/features/seller/components/SellerShippingView.d.ts +3 -11
  521. package/dist/features/seller/components/SellerShippingView.js +87 -3
  522. package/dist/features/seller/components/SellerSidebar.d.ts +18 -6
  523. package/dist/features/seller/components/SellerSidebar.js +54 -8
  524. package/dist/features/seller/components/SellerStorefrontView.d.ts +26 -11
  525. package/dist/features/seller/components/SellerStorefrontView.js +45 -7
  526. package/dist/features/seller/components/index.d.ts +45 -1
  527. package/dist/features/seller/components/index.js +24 -0
  528. package/dist/features/seller/hooks/useSellerListingData.d.ts +3 -1
  529. package/dist/features/seller/hooks/useSellerListingData.js +6 -4
  530. package/dist/features/seller/hooks/useSellerStore.d.ts +2 -0
  531. package/dist/features/seller/hooks/useSellerStore.js +2 -0
  532. package/dist/features/seller/permission-map.d.ts +4 -2
  533. package/dist/features/seller/permission-map.js +16 -14
  534. package/dist/features/seller/repository/offer.repository.d.ts +3 -3
  535. package/dist/features/seller/repository/offer.repository.js +6 -6
  536. package/dist/features/seller/schemas/firestore.d.ts +7 -7
  537. package/dist/features/seller/schemas/firestore.js +4 -4
  538. package/dist/features/seller/schemas/index.d.ts +18 -18
  539. package/dist/features/shell/FormShell.d.ts +29 -0
  540. package/dist/features/shell/FormShell.js +103 -0
  541. package/dist/features/shell/QuickFormDrawer.d.ts +29 -0
  542. package/dist/features/shell/QuickFormDrawer.js +117 -0
  543. package/dist/features/shell/StepForm.d.ts +44 -0
  544. package/dist/features/shell/StepForm.js +81 -0
  545. package/dist/features/shell/index.d.ts +6 -0
  546. package/dist/features/shell/index.js +3 -0
  547. package/dist/features/stores/actions/store-query-actions.js +3 -3
  548. package/dist/features/stores/api/[storeSlug]/auctions/route.js +1 -1
  549. package/dist/features/stores/api/[storeSlug]/products/route.js +1 -1
  550. package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +1 -1
  551. package/dist/features/stores/api/[storeSlug]/reviews/route.js +25 -20
  552. package/dist/features/stores/components/InteractiveStoreCard.d.ts +2 -7
  553. package/dist/features/stores/components/InteractiveStoreCard.js +24 -10
  554. package/dist/features/stores/components/StoreAboutView.js +1 -1
  555. package/dist/features/stores/components/StoreAuctionsListing.d.ts +5 -2
  556. package/dist/features/stores/components/StoreAuctionsListing.js +103 -12
  557. package/dist/features/stores/components/StoreAuctionsPageView.js +8 -7
  558. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -0
  559. package/dist/features/stores/components/StoreDetailLayoutView.js +30 -4
  560. package/dist/features/stores/components/StoreFilters.d.ts +5 -0
  561. package/dist/features/stores/components/StoreFilters.js +20 -0
  562. package/dist/features/stores/components/StoreHeader.js +3 -2
  563. package/dist/features/stores/components/StorePreOrdersListing.d.ts +7 -0
  564. package/dist/features/stores/components/StorePreOrdersListing.js +92 -0
  565. package/dist/features/stores/components/StorePreOrdersPageView.d.ts +4 -0
  566. package/dist/features/stores/components/StorePreOrdersPageView.js +22 -0
  567. package/dist/features/stores/components/StoreProductsListing.d.ts +5 -2
  568. package/dist/features/stores/components/StoreProductsListing.js +113 -14
  569. package/dist/features/stores/components/StoreProductsPageView.js +8 -7
  570. package/dist/features/stores/components/StoreReviewsListing.js +4 -9
  571. package/dist/features/stores/components/StoresIndexListing.js +106 -9
  572. package/dist/features/stores/components/StoresIndexPageView.d.ts +6 -1
  573. package/dist/features/stores/components/StoresIndexPageView.js +9 -2
  574. package/dist/features/stores/components/StoresListView.js +1 -1
  575. package/dist/features/stores/components/index.d.ts +3 -0
  576. package/dist/features/stores/components/index.js +1 -0
  577. package/dist/features/stores/hooks/useStores.d.ts +8 -1
  578. package/dist/features/stores/hooks/useStores.js +17 -3
  579. package/dist/features/stores/schemas/firestore.d.ts +34 -0
  580. package/dist/features/stores/schemas/index.d.ts +10 -10
  581. package/dist/features/stores/types/index.d.ts +3 -0
  582. package/dist/features/sublisting/schemas/firestore.d.ts +30 -0
  583. package/dist/features/sublisting/schemas/firestore.js +19 -0
  584. package/dist/features/support/schemas/firestore.d.ts +113 -0
  585. package/dist/features/support/schemas/firestore.js +95 -0
  586. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +5 -0
  587. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +143 -0
  588. package/dist/features/whatsapp-bot/components/index.d.ts +2 -0
  589. package/dist/features/whatsapp-bot/components/index.js +1 -0
  590. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +23 -1
  591. package/dist/features/whatsapp-bot/helpers/whatsapp.js +104 -0
  592. package/dist/features/whatsapp-bot/server.d.ts +1 -0
  593. package/dist/features/whatsapp-bot/server.js +1 -0
  594. package/dist/features/whatsapp-bot/types/index.d.ts +49 -0
  595. package/dist/features/wishlist/components/WishlistView.d.ts +0 -10
  596. package/dist/features/wishlist/components/WishlistView.js +13 -6
  597. package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +20 -0
  598. package/dist/features/wishlist/hooks/useGuestWishlist.js +49 -0
  599. package/dist/features/wishlist/hooks/useWishlist.js +2 -0
  600. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +15 -0
  601. package/dist/features/wishlist/hooks/useWishlistCount.js +95 -0
  602. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +56 -0
  603. package/dist/features/wishlist/hooks/useWishlistWithGuest.js +57 -0
  604. package/dist/features/wishlist/index.d.ts +3 -0
  605. package/dist/features/wishlist/index.js +3 -0
  606. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  607. package/dist/features/wishlist/types/index.d.ts +16 -0
  608. package/dist/features/wishlist/utils/guest-wishlist.d.ts +22 -0
  609. package/dist/features/wishlist/utils/guest-wishlist.js +70 -0
  610. package/dist/http/api-handler.js +8 -1
  611. package/dist/index.d.ts +158 -13
  612. package/dist/index.js +188 -21
  613. package/dist/monitoring/server-logger.js +9 -3
  614. package/dist/next/routing/route-map.d.ts +184 -36
  615. package/dist/next/routing/route-map.js +81 -22
  616. package/dist/providers/db-firebase/realtime.d.ts +1 -1
  617. package/dist/react/contexts/SessionContext.js +17 -26
  618. package/dist/react/hooks/useBulkSelection.d.ts +7 -24
  619. package/dist/react/hooks/useBulkSelection.js +27 -34
  620. package/dist/react/hooks/useLongPress.d.ts +3 -16
  621. package/dist/react/hooks/useLongPress.js +6 -25
  622. package/dist/react/index.d.ts +1 -0
  623. package/dist/react/index.js +2 -0
  624. package/dist/repositories/index.d.ts +3 -0
  625. package/dist/repositories/index.js +2 -0
  626. package/dist/seed/actions/demo-seed-actions.d.ts +2 -2
  627. package/dist/seed/actions/demo-seed-actions.js +1 -1
  628. package/dist/seed/addresses-seed-data.js +62 -261
  629. package/dist/seed/anime-figures-seed-data.d.ts +8 -0
  630. package/dist/seed/anime-figures-seed-data.js +1033 -0
  631. package/dist/seed/beyblade-seed-data.d.ts +7 -0
  632. package/dist/seed/beyblade-seed-data.js +1129 -0
  633. package/dist/seed/bids-seed-data.d.ts +4 -2
  634. package/dist/seed/bids-seed-data.js +343 -1067
  635. package/dist/seed/blog-posts-seed-data.d.ts +3 -2
  636. package/dist/seed/blog-posts-seed-data.js +258 -181
  637. package/dist/seed/brands-seed-data.d.ts +7 -0
  638. package/dist/seed/brands-seed-data.js +410 -0
  639. package/dist/seed/carousel-slides-seed-data.d.ts +3 -2
  640. package/dist/seed/carousel-slides-seed-data.js +177 -216
  641. package/dist/seed/cart-seed-data.d.ts +8 -8
  642. package/dist/seed/cart-seed-data.js +73 -74
  643. package/dist/seed/categories-seed-data.d.ts +4 -2
  644. package/dist/seed/categories-seed-data.js +720 -879
  645. package/dist/seed/conversations-seed-data.d.ts +8 -0
  646. package/dist/seed/conversations-seed-data.js +388 -0
  647. package/dist/seed/cosplay-accessories-seed-data.d.ts +8 -0
  648. package/dist/seed/cosplay-accessories-seed-data.js +647 -0
  649. package/dist/seed/coupon-usage-seed-data.d.ts +25 -0
  650. package/dist/seed/coupon-usage-seed-data.js +69 -0
  651. package/dist/seed/coupons-seed-data.d.ts +4 -2
  652. package/dist/seed/coupons-seed-data.js +204 -338
  653. package/dist/seed/events-seed-data.d.ts +4 -2
  654. package/dist/seed/events-seed-data.js +125 -588
  655. package/dist/seed/factories/cart.factory.d.ts +0 -1
  656. package/dist/seed/factories/cart.factory.js +2 -2
  657. package/dist/seed/faq-seed-data.d.ts +11 -41
  658. package/dist/seed/faq-seed-data.js +833 -1977
  659. package/dist/seed/grouped-listings-seed-data.d.ts +8 -0
  660. package/dist/seed/grouped-listings-seed-data.js +201 -0
  661. package/dist/seed/homepage-sections-seed-data.d.ts +3 -13
  662. package/dist/seed/homepage-sections-seed-data.js +228 -252
  663. package/dist/seed/hot-wheels-seed-data.d.ts +7 -0
  664. package/dist/seed/hot-wheels-seed-data.js +1612 -0
  665. package/dist/seed/index.d.ts +12 -6
  666. package/dist/seed/index.js +10 -7
  667. package/dist/seed/letitrip-official-seed-data.d.ts +8 -0
  668. package/dist/seed/letitrip-official-seed-data.js +399 -0
  669. package/dist/seed/manifest.d.ts +15 -0
  670. package/dist/seed/manifest.js +140 -0
  671. package/dist/seed/notifications-seed-data.d.ts +4 -2
  672. package/dist/seed/notifications-seed-data.js +117 -440
  673. package/dist/seed/orders-seed-data.d.ts +4 -2
  674. package/dist/seed/orders-seed-data.js +1090 -521
  675. package/dist/seed/payouts-seed-data.d.ts +4 -2
  676. package/dist/seed/payouts-seed-data.js +522 -145
  677. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +4 -2
  678. package/dist/seed/pokemon-carousel-slides-seed-data.js +157 -268
  679. package/dist/seed/pokemon-categories-seed-data.d.ts +18 -21
  680. package/dist/seed/pokemon-categories-seed-data.js +445 -1025
  681. package/dist/seed/pokemon-coupons-seed-data.d.ts +6 -0
  682. package/dist/seed/pokemon-coupons-seed-data.js +465 -0
  683. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +3 -2
  684. package/dist/seed/pokemon-homepage-sections-seed-data.js +120 -249
  685. package/dist/seed/pokemon-products-seed-data.d.ts +1 -1
  686. package/dist/seed/pokemon-products-seed-data.js +720 -48
  687. package/dist/seed/pokemon-seed-bundle.d.ts +36 -11
  688. package/dist/seed/pokemon-seed-bundle.js +60 -11
  689. package/dist/seed/pokemon-stores-seed-data.d.ts +2 -3
  690. package/dist/seed/pokemon-stores-seed-data.js +135 -34
  691. package/dist/seed/pokemon-users-seed-data.d.ts +2 -2
  692. package/dist/seed/pokemon-users-seed-data.js +344 -261
  693. package/dist/seed/products-auctions-seed-data.d.ts +10 -0
  694. package/dist/seed/products-auctions-seed-data.js +689 -0
  695. package/dist/seed/products-preorders-seed-data.d.ts +9 -0
  696. package/dist/seed/products-preorders-seed-data.js +483 -0
  697. package/dist/seed/products-seed-data.js +34 -13
  698. package/dist/seed/products-standard-seed-data.d.ts +8 -0
  699. package/dist/seed/products-standard-seed-data.js +4179 -0
  700. package/dist/seed/retro-gaming-seed-data.d.ts +8 -0
  701. package/dist/seed/retro-gaming-seed-data.js +801 -0
  702. package/dist/seed/reviews-seed-data.d.ts +4 -2
  703. package/dist/seed/reviews-seed-data.js +1005 -441
  704. package/dist/seed/scammers-seed-data.d.ts +17 -0
  705. package/dist/seed/scammers-seed-data.js +118 -0
  706. package/dist/seed/site-settings-seed-data.js +39 -16
  707. package/dist/seed/store-addresses-seed-data.js +187 -65
  708. package/dist/seed/stores-seed-data.d.ts +3 -9
  709. package/dist/seed/stores-seed-data.js +212 -102
  710. package/dist/seed/sublisting-categories-seed-data.d.ts +7 -0
  711. package/dist/seed/sublisting-categories-seed-data.js +315 -0
  712. package/dist/seed/transformers-seed-data.d.ts +7 -0
  713. package/dist/seed/transformers-seed-data.js +530 -0
  714. package/dist/seed/users-seed-data.d.ts +3 -2
  715. package/dist/seed/users-seed-data.js +531 -440
  716. package/dist/seed/wishlists-seed-data.d.ts +5 -1
  717. package/dist/seed/wishlists-seed-data.js +84 -6
  718. package/dist/server.d.ts +10 -2
  719. package/dist/server.js +14 -4
  720. package/dist/tokens/index.d.ts +6 -0
  721. package/dist/tokens/index.js +2 -0
  722. package/dist/tokens/tokens.css +76 -31
  723. package/dist/ui/components/Avatar.style.css +10 -12
  724. package/dist/ui/components/BaseListingCard.d.ts +8 -3
  725. package/dist/ui/components/BaseListingCard.js +39 -30
  726. package/dist/ui/components/BaseListingCard.style.css +8 -6
  727. package/dist/ui/components/BulkActionsBar.d.ts +16 -0
  728. package/dist/ui/components/BulkActionsBar.js +22 -0
  729. package/dist/ui/components/Button.style.css +23 -23
  730. package/dist/ui/components/Card.style.css +60 -62
  731. package/dist/ui/components/Checkbox.style.css +19 -21
  732. package/dist/ui/components/DashboardStatsCard.style.css +12 -14
  733. package/dist/ui/components/Drawer.style.css +18 -14
  734. package/dist/ui/components/Dropdown.style.css +25 -27
  735. package/dist/ui/components/EmptyState.style.css +2 -4
  736. package/dist/ui/components/HorizontalScroller.d.ts +3 -1
  737. package/dist/ui/components/HorizontalScroller.js +130 -21
  738. package/dist/ui/components/HorizontalScroller.style.css +2 -2
  739. package/dist/ui/components/ImageLightbox.d.ts +0 -9
  740. package/dist/ui/components/ImageLightbox.js +43 -9
  741. package/dist/ui/components/InlineCreateSelect.d.ts +38 -0
  742. package/dist/ui/components/InlineCreateSelect.js +70 -0
  743. package/dist/ui/components/ListingLayout.style.css +41 -77
  744. package/dist/ui/components/ListingToolbar.d.ts +54 -0
  745. package/dist/ui/components/ListingToolbar.js +34 -0
  746. package/dist/ui/components/Modal.style.css +14 -10
  747. package/dist/ui/components/PageLoader.d.ts +11 -0
  748. package/dist/ui/components/PageLoader.js +21 -0
  749. package/dist/ui/components/Radio.style.css +34 -36
  750. package/dist/ui/components/RichTextEditor.js +1 -1
  751. package/dist/ui/components/RowActionMenu.d.ts +1 -0
  752. package/dist/ui/components/RowActionMenu.js +4 -2
  753. package/dist/ui/components/SectionTabs.js +1 -1
  754. package/dist/ui/components/SectionTabs.style.css +1 -0
  755. package/dist/ui/components/SideDrawer.style.css +3 -11
  756. package/dist/ui/components/SideModal.style.css +4 -8
  757. package/dist/ui/components/Slider.style.css +2 -4
  758. package/dist/ui/components/Tabs.style.css +8 -10
  759. package/dist/ui/components/Toast.style.css +22 -24
  760. package/dist/ui/components/Toggle.style.css +11 -13
  761. package/dist/ui/index.d.ts +9 -0
  762. package/dist/ui/index.js +5 -0
  763. package/dist/ui/rich-text/RichText.js +21 -2
  764. package/dist/ui/rich-text/RichText.style.css +292 -5
  765. package/dist/ui/rich-text/RichTextRenderer.d.ts +15 -0
  766. package/dist/ui/rich-text/RichTextRenderer.js +15 -0
  767. package/dist/utils/id-generators.d.ts +10 -0
  768. package/dist/utils/id-generators.js +12 -0
  769. package/dist/validation/schemas.d.ts +9 -9
  770. package/package.json +5 -1
  771. package/README.md +0 -116
@@ -1,38 +1,50 @@
1
1
  /**
2
- * Pokemon Base Set 151 — Categories Seed Data
2
+ * Multi-Franchise Collectibles — Categories Seed Data (35 categories)
3
+ *
4
+ * Franchises: Pokémon TCG · Hot Wheels · Beyblade Burst · Transformers
3
5
  *
4
6
  * Hierarchy:
5
- * Pokémon Cards (root)
6
- * ├- Card Type (tier 1)
7
- * │ ├- Pokémon Cards (leaf)
8
- * │ ├- Trainer Cards (leaf)
9
- * │ └- Energy Cards (leaf)
10
- * ├- Element Type (tier 1)
11
- * │ ├- Water (leaf)
12
- * │ ├- Electric (leaf)
13
- * │ ├- Fire (leaf)
14
- * │ ├- Grass (leaf)
15
- * │ ├- Psychic (leaf)
16
- * │ ├- Fighting (leaf)
17
- * │ └- Colorless (leaf)
18
- * ├- Rarity (tier 1)
19
- * │ ├- Holographic Rare (leaf)
20
- * │ ├- Non-Holo Rare (leaf)
21
- * │ ├- Uncommon (leaf)
22
- * │ └- Common (leaf)
23
- * Sealed Products (root, leaf)
24
- * Accessories (root, leaf)
7
+ * Pokémon Cards (root) — tier 0
8
+ * Card Type tier 1
9
+ * Pokémon / Trainer / Energy — tier 2 leaf
10
+ * Element Type — tier 1
11
+ * Water / Electric / Fire / Grass / Psychic / Fighting / Colorless — leaf
12
+ * Rarity — tier 1
13
+ * Holo Rare / Non-Holo / Uncommon / Common — leaf
14
+ * Hot Wheels (root) — tier 0
15
+ * Basic Cars / Premium / Treasure Hunt / Track Sets — tier 1 leaf
16
+ * Beyblade Burst (root) — tier 0
17
+ * Attack / Defense / Stamina / Balance / Stadium — tier 1 leaf
18
+ * Transformers (root) — tier 0
19
+ * Autobots / Decepticons / Combiners — tier 1 leaf
20
+ * Sealed Products (root leaf)
21
+ * Accessories (root leaf)
25
22
  */
26
23
  const NOW = new Date();
27
24
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
28
25
  const ADMIN = "user-admin-user-admin";
26
+ function mkCat(partial) {
27
+ return {
28
+ isActive: true,
29
+ isSearchable: true,
30
+ isFeatured: false,
31
+ isBrand: false,
32
+ showOnHomepage: false,
33
+ createdBy: ADMIN,
34
+ createdAt: daysAgo(30),
35
+ updatedAt: daysAgo(1),
36
+ ...partial,
37
+ };
38
+ }
29
39
  export const pokemonCategoriesSeedData = [
30
- // -- ROOT: Pokémon Cards -----------------------------------------------------
31
- {
40
+ // ═══════════════════════════════════════════════════
41
+ // POKÉMON TCG
42
+ // ═══════════════════════════════════════════════════
43
+ mkCat({
32
44
  id: "category-pokemon-cards",
33
45
  name: "Pokémon Cards",
34
- slug: "pokemon-cards",
35
- description: "Original Pokémon Base Set 151 cards — singles, lots, and graded copies",
46
+ slug: "category-pokemon-cards",
47
+ description: "Original Pokémon Base Set 151 cards — singles, lots, graded, and sealed",
36
48
  rootId: "category-pokemon-cards",
37
49
  parentIds: [],
38
50
  childrenIds: [
@@ -44,1084 +56,492 @@ export const pokemonCategoriesSeedData = [
44
56
  path: "pokemon-cards",
45
57
  order: 1,
46
58
  isLeaf: false,
47
- metrics: {
48
- productCount: 0,
49
- productIds: [],
50
- auctionCount: 0,
51
- auctionIds: [],
52
- totalProductCount: 60,
53
- totalAuctionCount: 5,
54
- totalItemCount: 65,
55
- lastUpdated: daysAgo(1),
56
- },
57
59
  isFeatured: true,
58
60
  featuredPriority: 1,
59
- isBrand: false,
61
+ showOnHomepage: true,
62
+ metrics: {
63
+ productCount: 0, productIds: [], auctionCount: 0, auctionIds: [],
64
+ totalProductCount: 80, totalAuctionCount: 6, totalItemCount: 86, lastUpdated: daysAgo(1),
65
+ },
60
66
  seo: {
61
67
  title: "Pokémon Cards — Base Set 151 | LetItRip",
62
68
  description: "Buy and sell original Pokémon Base Set 151 singles, holos, and sealed packs.",
63
69
  keywords: ["pokemon cards", "base set", "151", "charizard", "pikachu"],
64
70
  },
65
- display: {
66
- showInFooter: true,
67
- icon: "🃏",
68
- coverImage: "https://images.pokemontcg.io/base1/logo.png",
69
- color: "#FFCB05",
70
- showInMenu: true,
71
- },
72
- showOnHomepage: true,
73
- isActive: true,
74
- isSearchable: true,
71
+ display: { showInFooter: true, icon: "🃏", coverImage: "https://images.pokemontcg.io/base1/logo.png", color: "#FFCB05", showInMenu: true },
75
72
  ancestors: [],
76
- createdBy: ADMIN,
77
- createdAt: daysAgo(30),
78
- updatedAt: daysAgo(1),
79
- },
80
- // -- TIER 1: Card Type -------------------------------------------------------
81
- {
73
+ }),
74
+ mkCat({
82
75
  id: "category-card-type-pokemon-cards",
83
76
  name: "Card Type",
84
- slug: "card-type",
85
- description: "Filter by Pokémon, Trainer, or Energy",
77
+ slug: "category-card-type-pokemon-cards",
78
+ description: "Filter by Pokémon, Trainer, or Energy card",
86
79
  rootId: "category-pokemon-cards",
87
80
  parentIds: ["category-pokemon-cards"],
88
- childrenIds: [
89
- "category-pokemon-type-card-type",
90
- "category-trainer-type-card-type",
91
- "category-energy-type-card-type",
92
- ],
93
- tier: 1,
94
- path: "pokemon-cards/card-type",
95
- order: 1,
96
- isLeaf: false,
97
- metrics: {
98
- productCount: 0,
99
- productIds: [],
100
- auctionCount: 0,
101
- auctionIds: [],
102
- totalProductCount: 40,
103
- totalAuctionCount: 3,
104
- totalItemCount: 43,
105
- lastUpdated: daysAgo(1),
106
- },
107
- isFeatured: false,
108
- isBrand: false,
109
- seo: {
110
- title: "Card Type — Pokémon Base Set 151",
111
- description: "Shop by Pokémon, Trainer, or Energy card type.",
112
- keywords: ["pokemon card type", "trainer card", "energy card"],
113
- },
114
- display: { showInFooter: false, icon: "🎴", showInMenu: true },
115
- showOnHomepage: false,
116
- isActive: true,
117
- isSearchable: true,
118
- ancestors: [
119
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
120
- ],
121
- createdBy: ADMIN,
122
- createdAt: daysAgo(30),
123
- updatedAt: daysAgo(1),
124
- },
125
- // -- LEAF: Pokémon-type cards ------------------------------------------------
126
- {
81
+ childrenIds: ["category-pokemon-type-card-type", "category-trainer-type-card-type", "category-energy-type-card-type"],
82
+ tier: 1, path: "pokemon-cards/card-type", order: 1, isLeaf: false,
83
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 45, totalAuctionCount: 4, totalItemCount: 49, lastUpdated: daysAgo(1) },
84
+ seo: { title: "Card Type — Pokémon TCG", description: "Shop by card type.", keywords: ["pokemon card type"] },
85
+ display: { showInFooter: false, icon: "🎴", showInMenu: true },
86
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }],
87
+ }),
88
+ mkCat({
127
89
  id: "category-pokemon-type-card-type",
128
90
  name: "Pokémon Cards",
129
- slug: "pokemon-type",
91
+ slug: "category-pokemon-type-card-type",
130
92
  description: "Individual creature cards — the core of the Base Set",
131
93
  rootId: "category-pokemon-cards",
132
94
  parentIds: ["category-card-type-pokemon-cards"],
133
- childrenIds: [],
134
- tier: 2,
135
- path: "pokemon-cards/card-type/pokemon-type",
136
- order: 1,
137
- isLeaf: true,
138
- metrics: {
139
- productCount: 30,
140
- productIds: [],
141
- auctionCount: 3,
142
- auctionIds: [],
143
- totalProductCount: 30,
144
- totalAuctionCount: 3,
145
- totalItemCount: 33,
146
- lastUpdated: daysAgo(1),
147
- },
148
- isFeatured: true,
149
- featuredPriority: 2,
150
- isBrand: false,
151
- seo: {
152
- title: "Pokémon Cards — Base Set Singles",
153
- description: "Shop all 102 Pokémon Base Set creature singles.",
154
- keywords: [
155
- "pokemon singles",
156
- "base set pokemon",
157
- "charizard",
158
- "blastoise",
159
- ],
160
- },
161
- display: {
162
- showInFooter: false,
163
- icon: "⚡",
164
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
165
- showInMenu: true,
166
- },
167
- showOnHomepage: true,
168
- isActive: true,
169
- isSearchable: true,
170
- ancestors: [
171
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
172
- { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 },
173
- ],
174
- createdBy: ADMIN,
175
- createdAt: daysAgo(30),
176
- updatedAt: daysAgo(1),
177
- },
178
- // -- LEAF: Trainer cards -----------------------------------------------------
179
- {
95
+ childrenIds: [], tier: 2, path: "pokemon-cards/card-type/pokemon-type", order: 1, isLeaf: true,
96
+ isFeatured: true, featuredPriority: 2, showOnHomepage: true,
97
+ metrics: { productCount: 35, productIds: [], auctionCount: 4, auctionIds: [], totalProductCount: 35, totalAuctionCount: 4, totalItemCount: 39, lastUpdated: daysAgo(1) },
98
+ seo: { title: "Pokémon Cards — Base Set Singles", description: "Shop all Base Set creature singles.", keywords: ["pokemon singles", "charizard", "blastoise"] },
99
+ display: { showInFooter: false, icon: "âš¡", coverImage: "https://images.pokemontcg.io/base1/4_hires.png", showInMenu: true },
100
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 }],
101
+ }),
102
+ mkCat({
180
103
  id: "category-trainer-type-card-type",
181
104
  name: "Trainer Cards",
182
- slug: "trainer-type",
105
+ slug: "category-trainer-type-card-type",
183
106
  description: "Supporter, Item, and Stadium trainer cards from Base Set",
184
107
  rootId: "category-pokemon-cards",
185
108
  parentIds: ["category-card-type-pokemon-cards"],
186
- childrenIds: [],
187
- tier: 2,
188
- path: "pokemon-cards/card-type/trainer-type",
189
- order: 2,
190
- isLeaf: true,
191
- metrics: {
192
- productCount: 8,
193
- productIds: [],
194
- auctionCount: 0,
195
- auctionIds: [],
196
- totalProductCount: 8,
197
- totalAuctionCount: 0,
198
- totalItemCount: 8,
199
- lastUpdated: daysAgo(1),
200
- },
201
- isFeatured: false,
202
- isBrand: false,
203
- seo: {
204
- title: "Trainer Cards — Base Set",
205
- description: "Professor Oak, Bill, Energy Retrieval and more Base Set trainer cards.",
206
- keywords: ["trainer cards", "professor oak", "bill", "pokemon trainer"],
207
- },
208
- display: {
209
- showInFooter: false,
210
- icon: "🧑‍🏫",
211
- coverImage: "https://images.pokemontcg.io/base1/88_hires.png",
212
- showInMenu: true,
213
- },
214
- showOnHomepage: false,
215
- isActive: true,
216
- isSearchable: true,
217
- ancestors: [
218
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
219
- { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 },
220
- ],
221
- createdBy: ADMIN,
222
- createdAt: daysAgo(30),
223
- updatedAt: daysAgo(1),
224
- },
225
- // -- LEAF: Energy cards ------------------------------------------------------
226
- {
109
+ childrenIds: [], tier: 2, path: "pokemon-cards/card-type/trainer-type", order: 2, isLeaf: true,
110
+ metrics: { productCount: 8, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 8, totalAuctionCount: 0, totalItemCount: 8, lastUpdated: daysAgo(1) },
111
+ seo: { title: "Trainer Cards — Pokémon Base Set", description: "Professor Oak, Bill, Energy Removal and more.", keywords: ["trainer cards", "professor oak", "item cards"] },
112
+ display: { showInFooter: false, icon: "🧑‍🏫", showInMenu: true },
113
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 }],
114
+ }),
115
+ mkCat({
227
116
  id: "category-energy-type-card-type",
228
117
  name: "Energy Cards",
229
- slug: "energy-type",
230
- description: "Basic Energy cards Water, Fire, Electric, Grass, Psychic, Fighting",
118
+ slug: "category-energy-type-card-type",
119
+ description: "Basic and Special Energy cards to power your Pokémon",
231
120
  rootId: "category-pokemon-cards",
232
121
  parentIds: ["category-card-type-pokemon-cards"],
233
- childrenIds: [],
234
- tier: 2,
235
- path: "pokemon-cards/card-type/energy-type",
236
- order: 3,
237
- isLeaf: true,
238
- metrics: {
239
- productCount: 6,
240
- productIds: [],
241
- auctionCount: 0,
242
- auctionIds: [],
243
- totalProductCount: 6,
244
- totalAuctionCount: 0,
245
- totalItemCount: 6,
246
- lastUpdated: daysAgo(1),
247
- },
248
- isFeatured: false,
249
- isBrand: false,
250
- seo: {
251
- title: "Energy Cards — Base Set",
252
- description: "All basic energy types from the original Pokémon Base Set.",
253
- keywords: [
254
- "energy cards",
255
- "water energy",
256
- "fire energy",
257
- "pokemon energy",
258
- ],
259
- },
260
- display: {
261
- showInFooter: false,
262
- icon: "⚡",
263
- coverImage: "https://images.pokemontcg.io/base1/99_hires.png",
264
- showInMenu: true,
265
- },
266
- showOnHomepage: false,
267
- isActive: true,
268
- isSearchable: true,
269
- ancestors: [
270
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
271
- { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 },
272
- ],
273
- createdBy: ADMIN,
274
- createdAt: daysAgo(30),
275
- updatedAt: daysAgo(1),
276
- },
277
- // -- TIER 1: Element Type ----------------------------------------------------
278
- {
122
+ childrenIds: [], tier: 2, path: "pokemon-cards/card-type/energy-type", order: 3, isLeaf: true,
123
+ metrics: { productCount: 5, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 5, totalAuctionCount: 0, totalItemCount: 5, lastUpdated: daysAgo(1) },
124
+ seo: { title: "Energy Cards — Pokémon Base Set", description: "Basic Energy sets from the original print runs.", keywords: ["energy cards", "fire energy", "water energy"] },
125
+ display: { showInFooter: false, icon: "⚪", showInMenu: true },
126
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-card-type-pokemon-cards", name: "Card Type", tier: 1 }],
127
+ }),
128
+ mkCat({
279
129
  id: "category-element-type-pokemon-cards",
280
130
  name: "Element Type",
281
- slug: "element-type",
282
- description: "Browse cards by elemental type",
131
+ slug: "category-element-type-pokemon-cards",
132
+ description: "Shop by Pokémon energy type",
283
133
  rootId: "category-pokemon-cards",
284
134
  parentIds: ["category-pokemon-cards"],
285
- childrenIds: [
286
- "category-water-element-type",
287
- "category-electric-element-type",
288
- "category-fire-element-type",
289
- "category-grass-element-type",
290
- "category-psychic-element-type",
291
- "category-fighting-element-type",
292
- "category-colorless-element-type",
293
- ],
294
- tier: 1,
295
- path: "pokemon-cards/element-type",
296
- order: 2,
297
- isLeaf: false,
298
- metrics: {
299
- productCount: 0,
300
- productIds: [],
301
- auctionCount: 0,
302
- auctionIds: [],
303
- totalProductCount: 35,
304
- totalAuctionCount: 2,
305
- totalItemCount: 37,
306
- lastUpdated: daysAgo(1),
307
- },
308
- isFeatured: false,
309
- isBrand: false,
310
- seo: {
311
- title: "Element Types — Pokémon Base Set",
312
- description: "Water, Electric, Fire, Grass, Psychic, Fighting, Colorless",
313
- keywords: [
314
- "pokemon element",
315
- "type",
316
- "water pokemon",
317
- "electric pokemon",
318
- ],
319
- },
320
- display: { showInFooter: true, icon: "🌊", showInMenu: true },
321
- showOnHomepage: false,
322
- isActive: true,
323
- isSearchable: true,
324
- ancestors: [
325
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
326
- ],
327
- createdBy: ADMIN,
328
- createdAt: daysAgo(30),
329
- updatedAt: daysAgo(1),
330
- },
331
- // -- LEAF: Water -------------------------------------------------------------
332
- {
333
- id: "category-water-element-type",
135
+ childrenIds: ["category-water-element", "category-electric-element", "category-fire-element", "category-grass-element", "category-psychic-element", "category-fighting-element", "category-colorless-element"],
136
+ tier: 1, path: "pokemon-cards/element-type", order: 2, isLeaf: false,
137
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 35, totalAuctionCount: 4, totalItemCount: 39, lastUpdated: daysAgo(1) },
138
+ seo: { title: "Element Types — Pokémon TCG", description: "Water, Fire, Electric, Grass, Psychic, Fighting, and Colorless types.", keywords: ["pokemon elements", "fire type", "water type"] },
139
+ display: { showInFooter: false, icon: "🌊", showInMenu: true },
140
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }],
141
+ }),
142
+ mkCat({
143
+ id: "category-water-element",
334
144
  name: "Water",
335
- slug: "water",
336
- description: "Water-type Pokémon cards — Squirtle, Blastoise, Lapras, Starmie and more",
145
+ slug: "category-water-element",
146
+ description: "Water-type Pokémon cards — Blastoise, Lapras, Starmie, Gyarados",
337
147
  rootId: "category-pokemon-cards",
338
148
  parentIds: ["category-element-type-pokemon-cards"],
339
- childrenIds: [],
340
- tier: 2,
341
- path: "pokemon-cards/element-type/water",
342
- order: 1,
343
- isLeaf: true,
344
- metrics: {
345
- productCount: 6,
346
- productIds: [],
347
- auctionCount: 0,
348
- auctionIds: [],
349
- totalProductCount: 6,
350
- totalAuctionCount: 0,
351
- totalItemCount: 6,
352
- lastUpdated: daysAgo(1),
353
- },
354
- isFeatured: true,
355
- featuredPriority: 3,
356
- isBrand: false,
357
- seo: {
358
- title: "Water-type Pokémon Cards — Base Set",
359
- description: "Blastoise, Squirtle, Lapras, Starmie and all Base Set Water types.",
360
- keywords: ["water pokemon", "blastoise", "squirtle"],
361
- },
362
- display: {
363
- showInFooter: false,
364
- icon: "💧",
365
- coverImage: "https://images.pokemontcg.io/base1/2_hires.png",
366
- color: "#6DB6D4",
367
- showInMenu: true,
368
- },
369
- showOnHomepage: true,
370
- isActive: true,
371
- isSearchable: true,
372
- ancestors: [
373
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
374
- {
375
- id: "category-element-type-pokemon-cards",
376
- name: "Element Type",
377
- tier: 1,
378
- },
379
- ],
380
- createdBy: ADMIN,
381
- createdAt: daysAgo(30),
382
- updatedAt: daysAgo(1),
383
- },
384
- // -- LEAF: Electric ----------------------------------------------------------
385
- {
386
- id: "category-electric-element-type",
149
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/water", order: 1, isLeaf: true,
150
+ metrics: { productCount: 6, productIds: [], auctionCount: 1, auctionIds: [], totalProductCount: 6, totalAuctionCount: 1, totalItemCount: 7, lastUpdated: daysAgo(1) },
151
+ seo: { title: "Water-Type Pokémon Cards", description: "Blastoise, Lapras, Starmie and more.", keywords: ["water pokemon", "blastoise"] },
152
+ display: { showInFooter: false, icon: "💧", color: "#6DB6D4", showInMenu: true },
153
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
154
+ }),
155
+ mkCat({
156
+ id: "category-electric-element",
387
157
  name: "Electric",
388
- slug: "electric",
389
- description: "Electric-type Pokémon cards — Pikachu, Raichu, Zapdos, Electabuzz and more",
158
+ slug: "category-electric-element",
159
+ description: "Electric-type Pokémon cards — Pikachu, Raichu, Zapdos, Electabuzz",
390
160
  rootId: "category-pokemon-cards",
391
161
  parentIds: ["category-element-type-pokemon-cards"],
392
- childrenIds: [],
393
- tier: 2,
394
- path: "pokemon-cards/element-type/electric",
395
- order: 2,
396
- isLeaf: true,
397
- metrics: {
398
- productCount: 5,
399
- productIds: [],
400
- auctionCount: 1,
401
- auctionIds: [],
402
- totalProductCount: 5,
403
- totalAuctionCount: 1,
404
- totalItemCount: 6,
405
- lastUpdated: daysAgo(1),
406
- },
407
- isFeatured: true,
408
- featuredPriority: 4,
409
- isBrand: false,
410
- seo: {
411
- title: "Electric-type Pokémon Cards — Base Set",
412
- description: "Pikachu, Raichu, Zapdos and all Base Set Electric types.",
413
- keywords: ["electric pokemon", "pikachu", "zapdos"],
414
- },
415
- display: {
416
- showInFooter: false,
417
- icon: "⚡",
418
- coverImage: "https://images.pokemontcg.io/base1/16_hires.png",
419
- color: "#F7D02C",
420
- showInMenu: true,
421
- },
422
- showOnHomepage: true,
423
- isActive: true,
424
- isSearchable: true,
425
- ancestors: [
426
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
427
- {
428
- id: "category-element-type-pokemon-cards",
429
- name: "Element Type",
430
- tier: 1,
431
- },
432
- ],
433
- createdBy: ADMIN,
434
- createdAt: daysAgo(30),
435
- updatedAt: daysAgo(1),
436
- },
437
- // -- LEAF: Fire --------------------------------------------------------------
438
- {
439
- id: "category-fire-element-type",
162
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/electric", order: 2, isLeaf: true,
163
+ metrics: { productCount: 5, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 5, totalAuctionCount: 0, totalItemCount: 5, lastUpdated: daysAgo(1) },
164
+ seo: { title: "Electric-Type Pokémon Cards", description: "Pikachu, Zapdos, Raichu and more.", keywords: ["electric pokemon", "pikachu", "zapdos"] },
165
+ display: { showInFooter: false, icon: "âš¡", color: "#F7D02C", showInMenu: true },
166
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
167
+ }),
168
+ mkCat({
169
+ id: "category-fire-element",
440
170
  name: "Fire",
441
- slug: "fire",
442
- description: "Fire-type Pokémon cards — Charizard, Arcanine, Ninetales, Magmar and more",
171
+ slug: "category-fire-element",
172
+ description: "Fire-type Pokémon cards — Charizard, Arcanine, Ninetales, Moltres",
443
173
  rootId: "category-pokemon-cards",
444
174
  parentIds: ["category-element-type-pokemon-cards"],
445
- childrenIds: [],
446
- tier: 2,
447
- path: "pokemon-cards/element-type/fire",
448
- order: 3,
449
- isLeaf: true,
450
- metrics: {
451
- productCount: 7,
452
- productIds: [],
453
- auctionCount: 2,
454
- auctionIds: [],
455
- totalProductCount: 7,
456
- totalAuctionCount: 2,
457
- totalItemCount: 9,
458
- lastUpdated: daysAgo(1),
459
- },
460
- isFeatured: true,
461
- featuredPriority: 2,
462
- isBrand: false,
463
- seo: {
464
- title: "Fire-type Pokémon Cards — Base Set",
465
- description: "Charizard, Arcanine, Ninetales and all Base Set Fire types.",
466
- keywords: ["fire pokemon", "charizard", "arcanine"],
467
- },
468
- display: {
469
- showInFooter: false,
470
- icon: "🔥",
471
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
472
- color: "#EE8130",
473
- showInMenu: true,
474
- },
475
- showOnHomepage: true,
476
- isActive: true,
477
- isSearchable: true,
478
- ancestors: [
479
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
480
- {
481
- id: "category-element-type-pokemon-cards",
482
- name: "Element Type",
483
- tier: 1,
484
- },
485
- ],
486
- createdBy: ADMIN,
487
- createdAt: daysAgo(30),
488
- updatedAt: daysAgo(1),
489
- },
490
- // -- LEAF: Grass -------------------------------------------------------------
491
- {
492
- id: "category-grass-element-type",
175
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/fire", order: 3, isLeaf: true,
176
+ isFeatured: true, featuredPriority: 3, showOnHomepage: true,
177
+ metrics: { productCount: 6, productIds: [], auctionCount: 2, auctionIds: [], totalProductCount: 6, totalAuctionCount: 2, totalItemCount: 8, lastUpdated: daysAgo(1) },
178
+ seo: { title: "Fire-Type Pokémon Cards", description: "Charizard, Arcanine, Ninetales and more.", keywords: ["fire pokemon", "charizard"] },
179
+ display: { showInFooter: false, icon: "🔥", color: "#EE8130", coverImage: "https://images.pokemontcg.io/base1/4_hires.png", showInMenu: true },
180
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
181
+ }),
182
+ mkCat({
183
+ id: "category-grass-element",
493
184
  name: "Grass",
494
- slug: "grass",
495
- description: "Grass-type Pokémon cards — Bulbasaur, Venusaur, Scyther, Pinsir and more",
185
+ slug: "category-grass-element",
186
+ description: "Grass-type Pokémon cards — Venusaur, Scyther, Pinsir, Clefairy",
496
187
  rootId: "category-pokemon-cards",
497
188
  parentIds: ["category-element-type-pokemon-cards"],
498
- childrenIds: [],
499
- tier: 2,
500
- path: "pokemon-cards/element-type/grass",
501
- order: 4,
502
- isLeaf: true,
503
- metrics: {
504
- productCount: 6,
505
- productIds: [],
506
- auctionCount: 0,
507
- auctionIds: [],
508
- totalProductCount: 6,
509
- totalAuctionCount: 0,
510
- totalItemCount: 6,
511
- lastUpdated: daysAgo(1),
512
- },
513
- isFeatured: false,
514
- isBrand: false,
515
- seo: {
516
- title: "Grass-type Pokémon Cards — Base Set",
517
- description: "Venusaur, Bulbasaur, Scyther and all Base Set Grass types.",
518
- keywords: ["grass pokemon", "venusaur", "bulbasaur"],
519
- },
520
- display: {
521
- showInFooter: false,
522
- icon: "🌿",
523
- coverImage: "https://images.pokemontcg.io/base1/15_hires.png",
524
- color: "#7AC74C",
525
- showInMenu: true,
526
- },
527
- showOnHomepage: false,
528
- isActive: true,
529
- isSearchable: true,
530
- ancestors: [
531
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
532
- {
533
- id: "category-element-type-pokemon-cards",
534
- name: "Element Type",
535
- tier: 1,
536
- },
537
- ],
538
- createdBy: ADMIN,
539
- createdAt: daysAgo(30),
540
- updatedAt: daysAgo(1),
541
- },
542
- // -- LEAF: Psychic -----------------------------------------------------------
543
- {
544
- id: "category-psychic-element-type",
189
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/grass", order: 4, isLeaf: true,
190
+ metrics: { productCount: 4, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 4, totalAuctionCount: 0, totalItemCount: 4, lastUpdated: daysAgo(1) },
191
+ seo: { title: "Grass-Type Pokémon Cards", description: "Venusaur, Scyther, Pinsir and more.", keywords: ["grass pokemon", "venusaur"] },
192
+ display: { showInFooter: false, icon: "🌿", color: "#7AC74C", showInMenu: true },
193
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
194
+ }),
195
+ mkCat({
196
+ id: "category-psychic-element",
545
197
  name: "Psychic",
546
- slug: "psychic",
547
- description: "Psychic-type Pokémon cards — Mewtwo, Jynx, Haunter, Gengar and more",
198
+ slug: "category-psychic-element",
199
+ description: "Psychic-type Pokémon cards — Mewtwo, Gengar, Jynx, Alakazam",
548
200
  rootId: "category-pokemon-cards",
549
201
  parentIds: ["category-element-type-pokemon-cards"],
550
- childrenIds: [],
551
- tier: 2,
552
- path: "pokemon-cards/element-type/psychic",
553
- order: 5,
554
- isLeaf: true,
555
- metrics: {
556
- productCount: 5,
557
- productIds: [],
558
- auctionCount: 1,
559
- auctionIds: [],
560
- totalProductCount: 5,
561
- totalAuctionCount: 1,
562
- totalItemCount: 6,
563
- lastUpdated: daysAgo(1),
564
- },
565
- isFeatured: true,
566
- featuredPriority: 5,
567
- isBrand: false,
568
- seo: {
569
- title: "Psychic-type Pokémon Cards — Base Set",
570
- description: "Mewtwo, Gengar, Jynx and all Base Set Psychic types.",
571
- keywords: ["psychic pokemon", "mewtwo", "gengar"],
572
- },
573
- display: {
574
- showInFooter: false,
575
- icon: "🔮",
576
- coverImage: "https://images.pokemontcg.io/base1/10_hires.png",
577
- color: "#F95587",
578
- showInMenu: true,
579
- },
580
- showOnHomepage: true,
581
- isActive: true,
582
- isSearchable: true,
583
- ancestors: [
584
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
585
- {
586
- id: "category-element-type-pokemon-cards",
587
- name: "Element Type",
588
- tier: 1,
589
- },
590
- ],
591
- createdBy: ADMIN,
592
- createdAt: daysAgo(30),
593
- updatedAt: daysAgo(1),
594
- },
595
- // -- LEAF: Fighting ----------------------------------------------------------
596
- {
597
- id: "category-fighting-element-type",
202
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/psychic", order: 5, isLeaf: true,
203
+ isFeatured: true, featuredPriority: 4,
204
+ metrics: { productCount: 5, productIds: [], auctionCount: 1, auctionIds: [], totalProductCount: 5, totalAuctionCount: 1, totalItemCount: 6, lastUpdated: daysAgo(1) },
205
+ seo: { title: "Psychic-Type Pokémon Cards", description: "Mewtwo, Gengar, Alakazam and more.", keywords: ["psychic pokemon", "mewtwo", "gengar"] },
206
+ display: { showInFooter: false, icon: "🔮", color: "#F95587", coverImage: "https://images.pokemontcg.io/base1/10_hires.png", showInMenu: true },
207
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
208
+ }),
209
+ mkCat({
210
+ id: "category-fighting-element",
598
211
  name: "Fighting",
599
- slug: "fighting",
600
- description: "Fighting-type Pokémon cards — Machamp, Hitmonchan, Hitmonlee and more",
212
+ slug: "category-fighting-element",
213
+ description: "Fighting-type Pokémon cards — Machamp, Hitmonchan, Primeape, Onix",
601
214
  rootId: "category-pokemon-cards",
602
215
  parentIds: ["category-element-type-pokemon-cards"],
603
- childrenIds: [],
604
- tier: 2,
605
- path: "pokemon-cards/element-type/fighting",
606
- order: 6,
607
- isLeaf: true,
608
- metrics: {
609
- productCount: 4,
610
- productIds: [],
611
- auctionCount: 0,
612
- auctionIds: [],
613
- totalProductCount: 4,
614
- totalAuctionCount: 0,
615
- totalItemCount: 4,
616
- lastUpdated: daysAgo(1),
617
- },
618
- isFeatured: false,
619
- isBrand: false,
620
- seo: {
621
- title: "Fighting-type Pokémon Cards — Base Set",
622
- description: "Machamp, Hitmonchan and all Base Set Fighting types.",
623
- keywords: ["fighting pokemon", "machamp", "hitmonchan"],
624
- },
625
- display: {
626
- showInFooter: false,
627
- icon: "🥊",
628
- coverImage: "https://images.pokemontcg.io/base1/8_hires.png",
629
- color: "#C22E28",
630
- showInMenu: true,
631
- },
632
- showOnHomepage: false,
633
- isActive: true,
634
- isSearchable: true,
635
- ancestors: [
636
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
637
- {
638
- id: "category-element-type-pokemon-cards",
639
- name: "Element Type",
640
- tier: 1,
641
- },
642
- ],
643
- createdBy: ADMIN,
644
- createdAt: daysAgo(30),
645
- updatedAt: daysAgo(1),
646
- },
647
- // -- LEAF: Colorless ---------------------------------------------------------
648
- {
649
- id: "category-colorless-element-type",
216
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/fighting", order: 6, isLeaf: true,
217
+ metrics: { productCount: 3, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 3, totalAuctionCount: 0, totalItemCount: 3, lastUpdated: daysAgo(1) },
218
+ seo: { title: "Fighting-Type Pokémon Cards", description: "Machamp, Hitmonchan and more.", keywords: ["fighting pokemon", "machamp"] },
219
+ display: { showInFooter: false, icon: "🥊", color: "#C22E28", showInMenu: true },
220
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
221
+ }),
222
+ mkCat({
223
+ id: "category-colorless-element",
650
224
  name: "Colorless",
651
- slug: "colorless",
652
- description: "Colorless-type Pokémon cards — Snorlax, Clefable, Chansey and more",
225
+ slug: "category-colorless-element",
226
+ description: "Colorless-type Pokémon cards — Chansey, Snorlax, Dragonite, Kangaskhan",
653
227
  rootId: "category-pokemon-cards",
654
228
  parentIds: ["category-element-type-pokemon-cards"],
655
- childrenIds: [],
656
- tier: 2,
657
- path: "pokemon-cards/element-type/colorless",
658
- order: 7,
659
- isLeaf: true,
660
- metrics: {
661
- productCount: 5,
662
- productIds: [],
663
- auctionCount: 0,
664
- auctionIds: [],
665
- totalProductCount: 5,
666
- totalAuctionCount: 0,
667
- totalItemCount: 5,
668
- lastUpdated: daysAgo(1),
669
- },
670
- isFeatured: false,
671
- isBrand: false,
672
- seo: {
673
- title: "Colorless Pokémon Cards — Base Set",
674
- description: "Snorlax, Clefable, Chansey and all Colorless Base Set cards.",
675
- keywords: ["colorless pokemon", "snorlax", "chansey"],
676
- },
677
- display: {
678
- showInFooter: false,
679
- icon: "🤍",
680
- coverImage: "https://images.pokemontcg.io/base1/3_hires.png",
681
- showInMenu: true,
682
- },
683
- showOnHomepage: false,
684
- isActive: true,
685
- isSearchable: true,
686
- ancestors: [
687
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
688
- {
689
- id: "category-element-type-pokemon-cards",
690
- name: "Element Type",
691
- tier: 1,
692
- },
693
- ],
694
- createdBy: ADMIN,
695
- createdAt: daysAgo(30),
696
- updatedAt: daysAgo(1),
697
- },
698
- // -- TIER 1: Rarity ----------------------------------------------------------
699
- {
229
+ childrenIds: [], tier: 2, path: "pokemon-cards/element-type/colorless", order: 7, isLeaf: true,
230
+ metrics: { productCount: 4, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 4, totalAuctionCount: 0, totalItemCount: 4, lastUpdated: daysAgo(1) },
231
+ seo: { title: "Colorless-Type Pokémon Cards", description: "Chansey, Snorlax, Dragonite and more.", keywords: ["colorless pokemon", "chansey", "snorlax"] },
232
+ display: { showInFooter: false, icon: "⚪", color: "#A8A77A", showInMenu: true },
233
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-element-type-pokemon-cards", name: "Element Type", tier: 1 }],
234
+ }),
235
+ mkCat({
700
236
  id: "category-rarity-pokemon-cards",
701
237
  name: "Rarity",
702
- slug: "rarity",
703
- description: "Browse by card rarity — Holo Rare, Non-Holo Rare, Uncommon, Common",
238
+ slug: "category-rarity-pokemon-cards",
239
+ description: "Shop by card rarity level",
704
240
  rootId: "category-pokemon-cards",
705
241
  parentIds: ["category-pokemon-cards"],
706
- childrenIds: [
707
- "category-holo-rare-rarity",
708
- "category-non-holo-rare-rarity",
709
- "category-uncommon-rarity",
710
- "category-common-rarity",
711
- ],
712
- tier: 1,
713
- path: "pokemon-cards/rarity",
714
- order: 3,
715
- isLeaf: false,
716
- metrics: {
717
- productCount: 0,
718
- productIds: [],
719
- auctionCount: 0,
720
- auctionIds: [],
721
- totalProductCount: 40,
722
- totalAuctionCount: 4,
723
- totalItemCount: 44,
724
- lastUpdated: daysAgo(1),
725
- },
726
- isFeatured: false,
727
- isBrand: false,
728
- seo: {
729
- title: "Card Rarity — Base Set",
730
- description: "Holo Rare, Non-Holo Rare, Uncommon and Common Base Set cards.",
731
- keywords: ["pokemon rarity", "holo rare", "common pokemon"],
732
- },
733
- display: { showInFooter: true, icon: "⭐", showInMenu: true },
734
- showOnHomepage: false,
735
- isActive: true,
736
- isSearchable: true,
737
- ancestors: [
738
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
739
- ],
740
- createdBy: ADMIN,
741
- createdAt: daysAgo(30),
742
- updatedAt: daysAgo(1),
743
- },
744
- // -- LEAF: Holo Rare ---------------------------------------------------------
745
- {
242
+ childrenIds: ["category-holo-rare-rarity", "category-non-holo-rare-rarity", "category-uncommon-rarity", "category-common-rarity"],
243
+ tier: 1, path: "pokemon-cards/rarity", order: 3, isLeaf: false,
244
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 35, totalAuctionCount: 4, totalItemCount: 39, lastUpdated: daysAgo(1) },
245
+ seo: { title: "Rarity — Pokémon TCG", description: "Browse Holo Rare, Uncommon, and Common Pokémon cards.", keywords: ["pokemon rarity", "holo rare", "uncommon"] },
246
+ display: { showInFooter: false, icon: "⭐", showInMenu: true },
247
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }],
248
+ }),
249
+ mkCat({
746
250
  id: "category-holo-rare-rarity",
747
- name: "Holographic Rare",
748
- slug: "holo-rare",
749
- description: "Shiny holographic Rare cards — the most sought-after Base Set singles",
251
+ name: "Holo Rare",
252
+ slug: "category-holo-rare-rarity",
253
+ description: "Holographic Rare cards — the crown jewels of any Base Set collection",
750
254
  rootId: "category-pokemon-cards",
751
255
  parentIds: ["category-rarity-pokemon-cards"],
752
- childrenIds: [],
753
- tier: 2,
754
- path: "pokemon-cards/rarity/holo-rare",
755
- order: 1,
756
- isLeaf: true,
757
- metrics: {
758
- productCount: 16,
759
- productIds: [],
760
- auctionCount: 4,
761
- auctionIds: [],
762
- totalProductCount: 16,
763
- totalAuctionCount: 4,
764
- totalItemCount: 20,
765
- lastUpdated: daysAgo(1),
766
- },
767
- isFeatured: true,
768
- featuredPriority: 1,
769
- isBrand: false,
770
- seo: {
771
- title: "Holo Rare Pokémon Cards — Base Set",
772
- description: "All 16 Holo Rare cards from the original Pokémon Base Set.",
773
- keywords: ["holo rare", "holographic pokemon", "charizard holo"],
774
- },
775
- display: {
776
- showInFooter: true,
777
- icon: "✨",
778
- coverImage: "https://images.pokemontcg.io/base1/4_hires.png",
779
- color: "#FFD700",
780
- showInMenu: true,
781
- },
782
- showOnHomepage: true,
783
- isActive: true,
784
- isSearchable: true,
785
- ancestors: [
786
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
787
- { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 },
788
- ],
789
- createdBy: ADMIN,
790
- createdAt: daysAgo(30),
791
- updatedAt: daysAgo(1),
792
- },
793
- // -- LEAF: Non-Holo Rare -----------------------------------------------------
794
- {
256
+ childrenIds: [], tier: 2, path: "pokemon-cards/rarity/holo-rare", order: 1, isLeaf: true,
257
+ isFeatured: true, featuredPriority: 1, showOnHomepage: true,
258
+ metrics: { productCount: 16, productIds: [], auctionCount: 4, auctionIds: [], totalProductCount: 16, totalAuctionCount: 4, totalItemCount: 20, lastUpdated: daysAgo(1) },
259
+ seo: { title: "Holo Rare Pokémon Cards — Base Set", description: "All 16 Holo Rares from the original Pokémon Base Set.", keywords: ["holo rare", "holographic", "charizard", "mewtwo"] },
260
+ display: { showInFooter: true, icon: "✨", coverImage: "https://images.pokemontcg.io/base1/4_hires.png", color: "#B8860B", showInMenu: true },
261
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 }],
262
+ }),
263
+ mkCat({
795
264
  id: "category-non-holo-rare-rarity",
796
265
  name: "Non-Holo Rare",
797
- slug: "non-holo-rare",
798
- description: "Rare cards without the holographic pattern",
266
+ slug: "category-non-holo-rare-rarity",
267
+ description: "Rare cards without holo foiling — often overlooked, great value",
799
268
  rootId: "category-pokemon-cards",
800
269
  parentIds: ["category-rarity-pokemon-cards"],
801
- childrenIds: [],
802
- tier: 2,
803
- path: "pokemon-cards/rarity/non-holo-rare",
804
- order: 2,
805
- isLeaf: true,
806
- metrics: {
807
- productCount: 10,
808
- productIds: [],
809
- auctionCount: 0,
810
- auctionIds: [],
811
- totalProductCount: 10,
812
- totalAuctionCount: 0,
813
- totalItemCount: 10,
814
- lastUpdated: daysAgo(1),
815
- },
816
- isFeatured: false,
817
- isBrand: false,
818
- seo: {
819
- title: "Non-Holo Rare Pokémon Cards — Base Set",
820
- description: "Rare but non-holographic Base Set singles.",
821
- keywords: ["non holo rare", "rare pokemon cards"],
822
- },
823
- display: { showInFooter: false, icon: "🌟", showInMenu: true },
824
- showOnHomepage: false,
825
- isActive: true,
826
- isSearchable: true,
827
- ancestors: [
828
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
829
- { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 },
830
- ],
831
- createdBy: ADMIN,
832
- createdAt: daysAgo(30),
833
- updatedAt: daysAgo(1),
834
- },
835
- // -- LEAF: Uncommon ----------------------------------------------------------
836
- {
270
+ childrenIds: [], tier: 2, path: "pokemon-cards/rarity/non-holo-rare", order: 2, isLeaf: true,
271
+ metrics: { productCount: 10, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 10, totalAuctionCount: 0, totalItemCount: 10, lastUpdated: daysAgo(1) },
272
+ seo: { title: "Non-Holo Rare Pokémon Cards", description: "Rare cards without holo foil from Base Set.", keywords: ["non holo rare", "rare pokemon cards"] },
273
+ display: { showInFooter: false, icon: "🌟", showInMenu: true },
274
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 }],
275
+ }),
276
+ mkCat({
837
277
  id: "category-uncommon-rarity",
838
278
  name: "Uncommon",
839
- slug: "uncommon",
840
- description: "Uncommon Base Set cards — great for deck building",
279
+ slug: "category-uncommon-rarity",
280
+ description: "Uncommon cards — playable staples at accessible prices",
841
281
  rootId: "category-pokemon-cards",
842
282
  parentIds: ["category-rarity-pokemon-cards"],
843
- childrenIds: [],
844
- tier: 2,
845
- path: "pokemon-cards/rarity/uncommon",
846
- order: 3,
847
- isLeaf: true,
848
- metrics: {
849
- productCount: 8,
850
- productIds: [],
851
- auctionCount: 0,
852
- auctionIds: [],
853
- totalProductCount: 8,
854
- totalAuctionCount: 0,
855
- totalItemCount: 8,
856
- lastUpdated: daysAgo(1),
857
- },
858
- isFeatured: false,
859
- isBrand: false,
860
- seo: {
861
- title: "Uncommon Pokémon Cards — Base Set",
862
- description: "Base Set uncommon singles for collectors and players.",
863
- keywords: ["uncommon pokemon", "base set uncommon"],
864
- },
865
- display: { showInFooter: false, icon: "🔵", showInMenu: true },
866
- showOnHomepage: false,
867
- isActive: true,
868
- isSearchable: true,
869
- ancestors: [
870
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
871
- { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 },
872
- ],
873
- createdBy: ADMIN,
874
- createdAt: daysAgo(30),
875
- updatedAt: daysAgo(1),
876
- },
877
- // -- LEAF: Common ------------------------------------------------------------
878
- {
283
+ childrenIds: [], tier: 2, path: "pokemon-cards/rarity/uncommon", order: 3, isLeaf: true,
284
+ metrics: { productCount: 6, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 6, totalAuctionCount: 0, totalItemCount: 6, lastUpdated: daysAgo(1) },
285
+ seo: { title: "Uncommon Pokémon Cards — Base Set", description: "Budget-friendly uncommon singles from the original print run.", keywords: ["uncommon pokemon cards", "base set uncommon"] },
286
+ display: { showInFooter: false, icon: "💎", showInMenu: true },
287
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 }],
288
+ }),
289
+ mkCat({
879
290
  id: "category-common-rarity",
880
291
  name: "Common",
881
- slug: "common",
882
- description: "Common Base Set cards — affordable starters and bulk lots",
292
+ slug: "category-common-rarity",
293
+ description: "Common cards — great for play sets and completing your collection",
883
294
  rootId: "category-pokemon-cards",
884
295
  parentIds: ["category-rarity-pokemon-cards"],
885
- childrenIds: [],
886
- tier: 2,
887
- path: "pokemon-cards/rarity/common",
888
- order: 4,
889
- isLeaf: true,
890
- metrics: {
891
- productCount: 12,
892
- productIds: [],
893
- auctionCount: 0,
894
- auctionIds: [],
895
- totalProductCount: 12,
896
- totalAuctionCount: 0,
897
- totalItemCount: 12,
898
- lastUpdated: daysAgo(1),
899
- },
900
- isFeatured: false,
901
- isBrand: false,
902
- seo: {
903
- title: "Common Pokémon Cards — Base Set",
904
- description: "Base Set common singles, great for bulk collectors.",
905
- keywords: ["common pokemon", "base set common", "pokemon bulk"],
906
- },
907
- display: { showInFooter: false, icon: "⚪", showInMenu: true },
908
- showOnHomepage: false,
909
- isActive: true,
910
- isSearchable: true,
911
- ancestors: [
912
- { id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 },
913
- { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 },
914
- ],
915
- createdBy: ADMIN,
916
- createdAt: daysAgo(30),
917
- updatedAt: daysAgo(1),
918
- },
919
- // -- ROOT: Sealed Products ---------------------------------------------------
920
- {
921
- id: "category-sealed-products",
922
- name: "Sealed Products",
923
- slug: "sealed-products",
924
- description: "Factory-sealed Pokémon TCG products — booster packs, theme decks, booster boxes",
925
- rootId: "category-sealed-products",
296
+ childrenIds: [], tier: 2, path: "pokemon-cards/rarity/common", order: 4, isLeaf: true,
297
+ metrics: { productCount: 6, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 6, totalAuctionCount: 0, totalItemCount: 6, lastUpdated: daysAgo(1) },
298
+ seo: { title: "Common Pokémon Cards — Base Set", description: "Affordable common singles from the original Base Set.", keywords: ["common pokemon cards", "base set common"] },
299
+ display: { showInFooter: false, icon: "🃏", showInMenu: true },
300
+ ancestors: [{ id: "category-pokemon-cards", name: "Pokémon Cards", tier: 0 }, { id: "category-rarity-pokemon-cards", name: "Rarity", tier: 1 }],
301
+ }),
302
+ // ═══════════════════════════════════════════════════
303
+ // HOT WHEELS
304
+ // ═══════════════════════════════════════════════════
305
+ mkCat({
306
+ id: "category-hot-wheels",
307
+ name: "Hot Wheels",
308
+ slug: "category-hot-wheels",
309
+ description: "Die-cast Hot Wheels cars — basic, premium, Treasure Hunt, and track sets",
310
+ rootId: "category-hot-wheels",
926
311
  parentIds: [],
927
- childrenIds: [],
928
- tier: 0,
929
- path: "sealed-products",
930
- order: 2,
931
- isLeaf: true,
932
- metrics: {
933
- productCount: 6,
934
- productIds: [],
935
- auctionCount: 1,
936
- auctionIds: [],
937
- totalProductCount: 6,
938
- totalAuctionCount: 1,
939
- totalItemCount: 7,
940
- lastUpdated: daysAgo(1),
941
- },
942
- isFeatured: true,
943
- featuredPriority: 6,
944
- isBrand: false,
945
- seo: {
946
- title: "Sealed Pokémon Products | LetItRip",
947
- description: "Booster packs, theme decks, display boxes — all sealed Base Set products.",
948
- keywords: ["sealed pokemon", "booster pack", "theme deck"],
949
- },
950
- display: {
951
- showInFooter: true,
952
- icon: "📦",
953
- coverImage: "https://images.pokemontcg.io/base1/logo.png",
954
- color: "#2563EB",
955
- showInMenu: true,
956
- },
957
- showOnHomepage: true,
958
- isActive: true,
959
- isSearchable: true,
312
+ childrenIds: ["category-hw-basic-cars", "category-hw-premium", "category-hw-treasure-hunt", "category-hw-track-sets"],
313
+ tier: 0, path: "hot-wheels", order: 2, isLeaf: false,
314
+ isFeatured: true, featuredPriority: 2, showOnHomepage: true,
315
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 35, totalAuctionCount: 3, totalItemCount: 38, lastUpdated: daysAgo(1) },
316
+ seo: { title: "Hot Wheels Die-Cast Cars | LetItRip", description: "Shop Hot Wheels basic, premium, Treasure Hunt, and collector cars.", keywords: ["hot wheels", "die cast", "toy cars", "treasure hunt"] },
317
+ display: { showInFooter: true, icon: "🚗", color: "#e74c3c", coverImage: "https://picsum.photos/seed/hw-root/600/400", showInMenu: true },
960
318
  ancestors: [],
961
- createdBy: ADMIN,
962
- createdAt: daysAgo(30),
963
- updatedAt: daysAgo(1),
964
- },
965
- // -- ROOT: Accessories -------------------------------------------------------
966
- {
967
- id: "category-accessories",
968
- name: "Accessories",
969
- slug: "accessories",
970
- description: "Card sleeves, deck boxes, binders, playmats and other TCG accessories",
971
- rootId: "category-accessories",
319
+ }),
320
+ mkCat({
321
+ id: "category-hw-basic-cars",
322
+ name: "Basic Die-Cast Cars",
323
+ slug: "category-hw-basic-cars",
324
+ description: "Everyday Hot Wheels cars — from movie vehicles to original designs",
325
+ rootId: "category-hot-wheels",
326
+ parentIds: ["category-hot-wheels"],
327
+ childrenIds: [], tier: 1, path: "hot-wheels/basic-cars", order: 1, isLeaf: true,
328
+ isFeatured: true, featuredPriority: 5,
329
+ metrics: { productCount: 15, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 15, totalAuctionCount: 0, totalItemCount: 15, lastUpdated: daysAgo(1) },
330
+ seo: { title: "Hot Wheels Basic Cars", description: "Everyday mainline Hot Wheels die-cast cars.", keywords: ["hot wheels basic", "mainline", "die cast cars"] },
331
+ display: { showInFooter: false, icon: "🚙", color: "#e74c3c", showInMenu: true },
332
+ ancestors: [{ id: "category-hot-wheels", name: "Hot Wheels", tier: 0 }],
333
+ }),
334
+ mkCat({
335
+ id: "category-hw-premium",
336
+ name: "Premium Cars",
337
+ slug: "category-hw-premium",
338
+ description: "Hot Wheels premium lines — Car Culture, Boulevard, Real Riders with rubber tyres",
339
+ rootId: "category-hot-wheels",
340
+ parentIds: ["category-hot-wheels"],
341
+ childrenIds: [], tier: 1, path: "hot-wheels/premium", order: 2, isLeaf: true,
342
+ isFeatured: true, featuredPriority: 6,
343
+ metrics: { productCount: 10, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 10, totalAuctionCount: 0, totalItemCount: 10, lastUpdated: daysAgo(1) },
344
+ seo: { title: "Hot Wheels Premium Cars — Car Culture, Boulevard", description: "Premium Hot Wheels with real rubber tyres and premium packaging.", keywords: ["hot wheels premium", "car culture", "boulevard", "real riders"] },
345
+ display: { showInFooter: false, icon: "🏎️", color: "#c0392b", showInMenu: true },
346
+ ancestors: [{ id: "category-hot-wheels", name: "Hot Wheels", tier: 0 }],
347
+ }),
348
+ mkCat({
349
+ id: "category-hw-treasure-hunt",
350
+ name: "Treasure Hunt",
351
+ slug: "category-hw-treasure-hunt",
352
+ description: "Super Treasure Hunt (STH) and regular Treasure Hunt — the most sought-after Hot Wheels",
353
+ rootId: "category-hot-wheels",
354
+ parentIds: ["category-hot-wheels"],
355
+ childrenIds: [], tier: 1, path: "hot-wheels/treasure-hunt", order: 3, isLeaf: true,
356
+ isFeatured: true, featuredPriority: 7,
357
+ metrics: { productCount: 5, productIds: [], auctionCount: 3, auctionIds: [], totalProductCount: 5, totalAuctionCount: 3, totalItemCount: 8, lastUpdated: daysAgo(1) },
358
+ seo: { title: "Hot Wheels Treasure Hunt & Super Treasure Hunt", description: "Rare and super-rare Treasure Hunt Hot Wheels cars.", keywords: ["super treasure hunt", "STH", "hot wheels rare"] },
359
+ display: { showInFooter: false, icon: "🏆", color: "#d4ac0d", showInMenu: true },
360
+ ancestors: [{ id: "category-hot-wheels", name: "Hot Wheels", tier: 0 }],
361
+ }),
362
+ mkCat({
363
+ id: "category-hw-track-sets",
364
+ name: "Track Sets & Playsets",
365
+ slug: "category-hw-track-sets",
366
+ description: "Hot Wheels track sets, loop launchers, garages, and city playsets",
367
+ rootId: "category-hot-wheels",
368
+ parentIds: ["category-hot-wheels"],
369
+ childrenIds: [], tier: 1, path: "hot-wheels/track-sets", order: 4, isLeaf: true,
370
+ metrics: { productCount: 5, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 5, totalAuctionCount: 0, totalItemCount: 5, lastUpdated: daysAgo(1) },
371
+ seo: { title: "Hot Wheels Track Sets and Playsets", description: "Loops, launchers, garages, and city sets from Hot Wheels.", keywords: ["hot wheels track", "loop set", "playset", "garage"] },
372
+ display: { showInFooter: false, icon: "🛤️", showInMenu: true },
373
+ ancestors: [{ id: "category-hot-wheels", name: "Hot Wheels", tier: 0 }],
374
+ }),
375
+ // ═══════════════════════════════════════════════════
376
+ // BEYBLADE BURST
377
+ // ═══════════════════════════════════════════════════
378
+ mkCat({
379
+ id: "category-beyblade-burst",
380
+ name: "Beyblade Burst",
381
+ slug: "category-beyblade-burst",
382
+ description: "Beyblade Burst spinning tops — Attack, Defense, Stamina, and Balance types",
383
+ rootId: "category-beyblade-burst",
972
384
  parentIds: [],
973
- childrenIds: [],
974
- tier: 0,
975
- path: "accessories",
976
- order: 3,
977
- isLeaf: true,
978
- metrics: {
979
- productCount: 4,
980
- productIds: [],
981
- auctionCount: 0,
982
- auctionIds: [],
983
- totalProductCount: 4,
984
- totalAuctionCount: 0,
985
- totalItemCount: 4,
986
- lastUpdated: daysAgo(1),
987
- },
988
- isFeatured: false,
989
- isBrand: false,
990
- seo: {
991
- title: "Pokémon TCG Accessories | LetItRip",
992
- description: "Card sleeves, binders, playmats and deck boxes for Pokémon TCG collectors.",
993
- keywords: ["pokemon accessories", "card sleeves", "deck box", "binder"],
994
- },
995
- display: { showInFooter: true, icon: "🎒", showInMenu: true },
996
- showOnHomepage: false,
997
- isActive: true,
998
- isSearchable: true,
385
+ childrenIds: ["category-bb-attack-type", "category-bb-defense-type", "category-bb-stamina-type", "category-bb-balance-type", "category-bb-stadium"],
386
+ tier: 0, path: "beyblade-burst", order: 3, isLeaf: false,
387
+ isFeatured: true, featuredPriority: 3, showOnHomepage: true,
388
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 24, totalAuctionCount: 2, totalItemCount: 26, lastUpdated: daysAgo(1) },
389
+ seo: { title: "Beyblade Burst Tops | LetItRip", description: "Shop Beyblade Burst spinning tops — all types and series.", keywords: ["beyblade burst", "spinning top", "beyblade", "valtryek", "spriggan"] },
390
+ display: { showInFooter: true, icon: "🌀", color: "#2980b9", coverImage: "https://picsum.photos/seed/bb-root/600/400", showInMenu: true },
999
391
  ancestors: [],
1000
- createdBy: ADMIN,
1001
- createdAt: daysAgo(30),
1002
- updatedAt: daysAgo(1),
1003
- },
1004
- // -- BRANDS ------------------------------------------------------------------
1005
- {
1006
- id: "category-brand-wizards",
1007
- name: "Wizards of the Coast",
1008
- slug: "brand-wizards",
1009
- description: "Original Base Set publisher",
1010
- rootId: "category-brand-wizards",
392
+ }),
393
+ mkCat({
394
+ id: "category-bb-attack-type",
395
+ name: "Attack Type",
396
+ slug: "category-bb-attack-type",
397
+ description: "Aggressive attack-type Beyblade Burst tops — built for raw power and KOs",
398
+ rootId: "category-beyblade-burst",
399
+ parentIds: ["category-beyblade-burst"],
400
+ childrenIds: [], tier: 1, path: "beyblade-burst/attack-type", order: 1, isLeaf: true,
401
+ isFeatured: true, featuredPriority: 8,
402
+ metrics: { productCount: 6, productIds: [], auctionCount: 1, auctionIds: [], totalProductCount: 6, totalAuctionCount: 1, totalItemCount: 7, lastUpdated: daysAgo(1) },
403
+ seo: { title: "Attack Type Beyblades — Burst", description: "Valtryek, Spriggan, Achilles and top attack-type Beyblade Burst tops.", keywords: ["attack type beyblade", "valtryek", "achilles"] },
404
+ display: { showInFooter: false, icon: "⚔️", color: "#e74c3c", showInMenu: true },
405
+ ancestors: [{ id: "category-beyblade-burst", name: "Beyblade Burst", tier: 0 }],
406
+ }),
407
+ mkCat({
408
+ id: "category-bb-defense-type",
409
+ name: "Defense Type",
410
+ slug: "category-bb-defense-type",
411
+ description: "Defense-type Beyblade Burst tops — wide, heavy layers that resist attacks",
412
+ rootId: "category-beyblade-burst",
413
+ parentIds: ["category-beyblade-burst"],
414
+ childrenIds: [], tier: 1, path: "beyblade-burst/defense-type", order: 2, isLeaf: true,
415
+ metrics: { productCount: 4, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 4, totalAuctionCount: 0, totalItemCount: 4, lastUpdated: daysAgo(1) },
416
+ seo: { title: "Defense Type Beyblades — Burst", description: "Garuda, Balkesh, and top defense-type Beyblades.", keywords: ["defense type beyblade", "garuda"] },
417
+ display: { showInFooter: false, icon: "🛡️", color: "#2c3e50", showInMenu: true },
418
+ ancestors: [{ id: "category-beyblade-burst", name: "Beyblade Burst", tier: 0 }],
419
+ }),
420
+ mkCat({
421
+ id: "category-bb-stamina-type",
422
+ name: "Stamina Type",
423
+ slug: "category-bb-stamina-type",
424
+ description: "Stamina-type tops — long-spinning, outlast opponents in the stadium",
425
+ rootId: "category-beyblade-burst",
426
+ parentIds: ["category-beyblade-burst"],
427
+ childrenIds: [], tier: 1, path: "beyblade-burst/stamina-type", order: 3, isLeaf: true,
428
+ metrics: { productCount: 5, productIds: [], auctionCount: 1, auctionIds: [], totalProductCount: 5, totalAuctionCount: 1, totalItemCount: 6, lastUpdated: daysAgo(1) },
429
+ seo: { title: "Stamina Type Beyblades — Burst", description: "Nepstrius, Phoenix, and top stamina-type Beyblades.", keywords: ["stamina type beyblade", "nepstrius", "phoenix"] },
430
+ display: { showInFooter: false, icon: "🌀", color: "#27ae60", showInMenu: true },
431
+ ancestors: [{ id: "category-beyblade-burst", name: "Beyblade Burst", tier: 0 }],
432
+ }),
433
+ mkCat({
434
+ id: "category-bb-balance-type",
435
+ name: "Balance Type",
436
+ slug: "category-bb-balance-type",
437
+ description: "Balance-type tops — versatile performance across attack, defense, and stamina",
438
+ rootId: "category-beyblade-burst",
439
+ parentIds: ["category-beyblade-burst"],
440
+ childrenIds: [], tier: 1, path: "beyblade-burst/balance-type", order: 4, isLeaf: true,
441
+ metrics: { productCount: 3, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 3, totalAuctionCount: 0, totalItemCount: 3, lastUpdated: daysAgo(1) },
442
+ seo: { title: "Balance Type Beyblades — Burst", description: "Genesis Drago, Achilles, Dead Hades — all-round balance tops.", keywords: ["balance type beyblade", "genesis drago"] },
443
+ display: { showInFooter: false, icon: "⚖️", color: "#8e44ad", showInMenu: true },
444
+ ancestors: [{ id: "category-beyblade-burst", name: "Beyblade Burst", tier: 0 }],
445
+ }),
446
+ mkCat({
447
+ id: "category-bb-stadium",
448
+ name: "Stadiums & Accessories",
449
+ slug: "category-bb-stadium",
450
+ description: "Beyblade Burst stadiums, launchers, string tops, and customisation parts",
451
+ rootId: "category-beyblade-burst",
452
+ parentIds: ["category-beyblade-burst"],
453
+ childrenIds: [], tier: 1, path: "beyblade-burst/stadium", order: 5, isLeaf: true,
454
+ metrics: { productCount: 4, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 4, totalAuctionCount: 0, totalItemCount: 4, lastUpdated: daysAgo(1) },
455
+ seo: { title: "Beyblade Burst Stadiums & Accessories", description: "Official Beyblade stadiums, launchers, and custom parts.", keywords: ["beyblade stadium", "beystadium", "launcher"] },
456
+ display: { showInFooter: false, icon: "🏟️", showInMenu: true },
457
+ ancestors: [{ id: "category-beyblade-burst", name: "Beyblade Burst", tier: 0 }],
458
+ }),
459
+ // ═══════════════════════════════════════════════════
460
+ // TRANSFORMERS
461
+ // ═══════════════════════════════════════════════════
462
+ mkCat({
463
+ id: "category-transformers",
464
+ name: "Transformers",
465
+ slug: "category-transformers",
466
+ description: "Transformers action figures — Autobots, Decepticons, Combiners, G1 and modern",
467
+ rootId: "category-transformers",
1011
468
  parentIds: [],
1012
- childrenIds: [],
1013
- tier: 0,
1014
- path: "brand-wizards",
1015
- order: 10,
1016
- isLeaf: true,
1017
- isBrand: true,
1018
- isFeatured: false,
1019
- metrics: {
1020
- productCount: 0,
1021
- productIds: [],
1022
- auctionCount: 0,
1023
- auctionIds: [],
1024
- totalProductCount: 0,
1025
- totalAuctionCount: 0,
1026
- totalItemCount: 0,
1027
- lastUpdated: daysAgo(1),
1028
- },
1029
- seo: {
1030
- title: "Wizards of the Coast Pokémon Cards",
1031
- description: "Original Base Set cards published by Wizards of the Coast.",
1032
- keywords: ["wizards of the coast", "wotc pokemon"],
1033
- },
1034
- display: { showInFooter: false, showInMenu: false },
1035
- showOnHomepage: false,
1036
- isActive: true,
1037
- isSearchable: true,
469
+ childrenIds: ["category-tf-autobots", "category-tf-decepticons", "category-tf-combiners"],
470
+ tier: 0, path: "transformers", order: 4, isLeaf: false,
471
+ isFeatured: true, featuredPriority: 4, showOnHomepage: true,
472
+ metrics: { productCount: 0, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 12, totalAuctionCount: 1, totalItemCount: 13, lastUpdated: daysAgo(1) },
473
+ seo: { title: "Transformers Action Figures | LetItRip", description: "Shop Transformers figures — Autobots, Decepticons, and Combiners.", keywords: ["transformers", "optimus prime", "megatron", "autobots"] },
474
+ display: { showInFooter: true, icon: "🤖", color: "#e67e22", coverImage: "https://picsum.photos/seed/tf-root/600/400", showInMenu: true },
1038
475
  ancestors: [],
1039
- createdBy: ADMIN,
1040
- createdAt: daysAgo(30),
1041
- updatedAt: daysAgo(1),
1042
- },
1043
- {
1044
- id: "category-brand-tpci",
1045
- name: "The Pokémon Company",
1046
- slug: "brand-pokemon-company",
1047
- description: "Official Pokémon Trading Card Game publisher",
1048
- rootId: "category-brand-tpci",
476
+ }),
477
+ mkCat({
478
+ id: "category-tf-autobots",
479
+ name: "Autobots",
480
+ slug: "category-tf-autobots",
481
+ description: "Autobot Transformers — Optimus Prime, Bumblebee, Jazz, Ironhide and more",
482
+ rootId: "category-transformers",
483
+ parentIds: ["category-transformers"],
484
+ childrenIds: [], tier: 1, path: "transformers/autobots", order: 1, isLeaf: true,
485
+ isFeatured: true, featuredPriority: 9,
486
+ metrics: { productCount: 6, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 6, totalAuctionCount: 0, totalItemCount: 6, lastUpdated: daysAgo(1) },
487
+ seo: { title: "Autobot Transformers Figures", description: "Optimus Prime, Bumblebee, Jazz, and all Autobot figures.", keywords: ["autobots", "optimus prime", "bumblebee", "transformers"] },
488
+ display: { showInFooter: false, icon: "🔵", color: "#2980b9", showInMenu: true },
489
+ ancestors: [{ id: "category-transformers", name: "Transformers", tier: 0 }],
490
+ }),
491
+ mkCat({
492
+ id: "category-tf-decepticons",
493
+ name: "Decepticons",
494
+ slug: "category-tf-decepticons",
495
+ description: "Decepticon Transformers — Megatron, Starscream, Soundwave, Shockwave",
496
+ rootId: "category-transformers",
497
+ parentIds: ["category-transformers"],
498
+ childrenIds: [], tier: 1, path: "transformers/decepticons", order: 2, isLeaf: true,
499
+ metrics: { productCount: 4, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 4, totalAuctionCount: 0, totalItemCount: 4, lastUpdated: daysAgo(1) },
500
+ seo: { title: "Decepticon Transformers Figures", description: "Megatron, Starscream, Soundwave, and all Decepticon figures.", keywords: ["decepticons", "megatron", "starscream", "soundwave"] },
501
+ display: { showInFooter: false, icon: "🔴", color: "#922b21", showInMenu: true },
502
+ ancestors: [{ id: "category-transformers", name: "Transformers", tier: 0 }],
503
+ }),
504
+ mkCat({
505
+ id: "category-tf-combiners",
506
+ name: "Combiners & Special Teams",
507
+ slug: "category-tf-combiners",
508
+ description: "Combiner Wars, Siege, and Legacy combiner sets — Devastator, Superion and more",
509
+ rootId: "category-transformers",
510
+ parentIds: ["category-transformers"],
511
+ childrenIds: [], tier: 1, path: "transformers/combiners", order: 3, isLeaf: true,
512
+ metrics: { productCount: 2, productIds: [], auctionCount: 1, auctionIds: [], totalProductCount: 2, totalAuctionCount: 1, totalItemCount: 3, lastUpdated: daysAgo(1) },
513
+ seo: { title: "Transformers Combiner Sets", description: "Devastator, Superion, Menasor — all Transformers combiner sets.", keywords: ["combiners", "devastator", "superion", "combiner wars"] },
514
+ display: { showInFooter: false, icon: "🦾", color: "#641e16", showInMenu: true },
515
+ ancestors: [{ id: "category-transformers", name: "Transformers", tier: 0 }],
516
+ }),
517
+ // ═══════════════════════════════════════════════════
518
+ // CROSS-FRANCHISE
519
+ // ═══════════════════════════════════════════════════
520
+ mkCat({
521
+ id: "category-sealed-products",
522
+ name: "Sealed Products",
523
+ slug: "category-sealed-products",
524
+ description: "Factory-sealed booster boxes, packs, starter sets, and collector bundles",
525
+ rootId: "category-sealed-products",
1049
526
  parentIds: [],
1050
- childrenIds: [],
1051
- tier: 0,
1052
- path: "brand-pokemon-company",
1053
- order: 11,
1054
- isLeaf: true,
1055
- isBrand: true,
1056
- isFeatured: true,
1057
- featuredPriority: 1,
1058
- metrics: {
1059
- productCount: 0,
1060
- productIds: [],
1061
- auctionCount: 0,
1062
- auctionIds: [],
1063
- totalProductCount: 0,
1064
- totalAuctionCount: 0,
1065
- totalItemCount: 0,
1066
- lastUpdated: daysAgo(1),
1067
- },
1068
- seo: {
1069
- title: "The Pokémon Company | LetItRip",
1070
- description: "Official Pokémon TCG cards published by The Pokémon Company International.",
1071
- keywords: ["pokemon company", "tpci", "official pokemon cards"],
1072
- },
1073
- display: {
1074
- showInFooter: false,
1075
- showInMenu: false,
1076
- icon: "https://images.pokemontcg.io/base1/logo.png",
1077
- },
1078
- showOnHomepage: false,
1079
- isActive: true,
1080
- isSearchable: true,
527
+ childrenIds: [], tier: 0, path: "sealed-products", order: 5, isLeaf: true,
528
+ isFeatured: true, featuredPriority: 10, showOnHomepage: true,
529
+ metrics: { productCount: 8, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 8, totalAuctionCount: 0, totalItemCount: 8, lastUpdated: daysAgo(1) },
530
+ seo: { title: "Sealed Products — Pokémon, Hot Wheels & More | LetItRip", description: "Factory-sealed collectibles — Pokémon packs, Hot Wheels cases, Beyblade sets.", keywords: ["sealed products", "booster box", "factory sealed"] },
531
+ display: { showInFooter: true, icon: "📦", showInMenu: true },
1081
532
  ancestors: [],
1082
- createdBy: ADMIN,
1083
- createdAt: daysAgo(30),
1084
- updatedAt: daysAgo(1),
1085
- },
1086
- {
1087
- id: "category-brand-nintendo",
1088
- name: "Nintendo",
1089
- slug: "brand-nintendo",
1090
- description: "Nintendo-licensed Pokémon card products and accessories",
1091
- rootId: "category-brand-nintendo",
533
+ }),
534
+ mkCat({
535
+ id: "category-accessories",
536
+ name: "Accessories & Display",
537
+ slug: "category-accessories",
538
+ description: "Card sleeves, top-loaders, binders, display stands, and storage solutions",
539
+ rootId: "category-accessories",
1092
540
  parentIds: [],
1093
- childrenIds: [],
1094
- tier: 0,
1095
- path: "brand-nintendo",
1096
- order: 12,
1097
- isLeaf: true,
1098
- isBrand: true,
1099
- isFeatured: false,
1100
- metrics: {
1101
- productCount: 0,
1102
- productIds: [],
1103
- auctionCount: 0,
1104
- auctionIds: [],
1105
- totalProductCount: 0,
1106
- totalAuctionCount: 0,
1107
- totalItemCount: 0,
1108
- lastUpdated: daysAgo(1),
1109
- },
1110
- seo: {
1111
- title: "Nintendo Pokémon Products | LetItRip",
1112
- description: "Nintendo-licensed Pokémon collectibles and accessories.",
1113
- keywords: ["nintendo pokemon", "nintendo licensed"],
1114
- },
1115
- display: {
1116
- showInFooter: false,
1117
- showInMenu: false,
1118
- },
1119
- showOnHomepage: false,
1120
- isActive: true,
1121
- isSearchable: true,
541
+ childrenIds: [], tier: 0, path: "accessories", order: 6, isLeaf: true,
542
+ metrics: { productCount: 6, productIds: [], auctionCount: 0, auctionIds: [], totalProductCount: 6, totalAuctionCount: 0, totalItemCount: 6, lastUpdated: daysAgo(1) },
543
+ seo: { title: "Accessories & Display Products | LetItRip", description: "Card sleeves, binders, top-loaders, display cases, and storage.", keywords: ["card sleeves", "top loader", "binder", "display case"] },
544
+ display: { showInFooter: true, icon: "🗂️", showInMenu: true },
1122
545
  ancestors: [],
1123
- createdBy: ADMIN,
1124
- createdAt: daysAgo(30),
1125
- updatedAt: daysAgo(1),
1126
- },
546
+ }),
1127
547
  ];