@mohasinac/appkit 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +12 -8
- package/dist/client.js +7 -4
- package/dist/constants/api-endpoints.d.ts +4 -0
- package/dist/constants/api-endpoints.js +2 -0
- package/dist/core/contact-submissions.repository.d.ts +32 -0
- package/dist/core/contact-submissions.repository.js +49 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +1 -0
- package/dist/features/about/components/HowPayoutsWorkView.js +1 -1
- package/dist/features/account/components/AddressFilters.d.ts +5 -0
- package/dist/features/account/components/AddressFilters.js +20 -0
- package/dist/features/account/components/AddressesIndexListing.d.ts +6 -0
- package/dist/features/account/components/AddressesIndexListing.js +51 -0
- package/dist/features/account/components/UserSidebar.d.ts +7 -3
- package/dist/features/account/components/UserSidebar.js +55 -7
- package/dist/features/account/hooks/useAddresses.d.ts +7 -0
- package/dist/features/account/hooks/useAddresses.js +12 -1
- package/dist/features/admin/actions/admin-read-actions.d.ts +12 -0
- package/dist/features/admin/actions/admin-read-actions.js +18 -0
- package/dist/features/admin/components/AdminBlogView.js +26 -2
- package/dist/features/admin/components/AdminCarouselView.js +18 -2
- package/dist/features/admin/components/AdminCategoriesView.js +27 -2
- package/dist/features/admin/components/AdminContactView.d.ts +4 -0
- package/dist/features/admin/components/AdminContactView.js +50 -0
- package/dist/features/admin/components/AdminFaqsView.js +19 -2
- package/dist/features/admin/components/AdminListingScaffold.d.ts +11 -2
- package/dist/features/admin/components/AdminListingScaffold.js +14 -3
- package/dist/features/admin/components/AdminNewsletterView.d.ts +4 -0
- package/dist/features/admin/components/AdminNewsletterView.js +50 -0
- package/dist/features/admin/components/AdminProductsView.js +30 -2
- package/dist/features/admin/components/AdminReviewsView.js +26 -2
- package/dist/features/admin/components/AdminStoresView.js +17 -2
- package/dist/features/admin/components/AdminUsersView.js +27 -2
- package/dist/features/admin/components/DataTable.d.ts +2 -1
- package/dist/features/admin/components/DataTable.js +18 -4
- package/dist/features/admin/components/index.d.ts +6 -0
- package/dist/features/admin/components/index.js +3 -0
- package/dist/features/admin/hooks/useAdminListingData.d.ts +3 -1
- package/dist/features/admin/hooks/useAdminListingData.js +12 -7
- package/dist/features/admin/server.d.ts +3 -0
- package/dist/features/admin/server.js +2 -0
- package/dist/features/auctions/components/AuctionDetailPageView.js +93 -47
- package/dist/features/auctions/components/AuctionFilters.d.ts +8 -0
- package/dist/features/auctions/components/AuctionFilters.js +12 -0
- package/dist/features/auctions/components/AuctionsListView.d.ts +6 -1
- package/dist/features/auctions/components/AuctionsListView.js +37 -5
- package/dist/features/auctions/schemas/index.d.ts +4 -4
- package/dist/features/blog/components/BlogFeaturedCard.d.ts +1 -7
- package/dist/features/blog/components/BlogFeaturedCard.js +4 -5
- package/dist/features/blog/components/BlogFilters.js +2 -1
- package/dist/features/blog/components/BlogIndexListing.js +14 -9
- package/dist/features/blog/components/BlogIndexPageView.d.ts +6 -1
- package/dist/features/blog/components/BlogIndexPageView.js +10 -2
- package/dist/features/blog/components/BlogListView.d.ts +2 -1
- package/dist/features/blog/components/BlogListView.js +10 -3
- package/dist/features/categories/components/CategoriesIndexListing.d.ts +1 -1
- package/dist/features/categories/components/CategoriesIndexListing.js +41 -38
- package/dist/features/categories/components/CategoriesIndexPageView.d.ts +6 -1
- package/dist/features/categories/components/CategoriesIndexPageView.js +41 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +13 -6
- package/dist/features/categories/components/CategoryDetailTabs.d.ts +5 -0
- package/dist/features/categories/components/CategoryDetailTabs.js +17 -0
- package/dist/features/categories/components/CategoryFilters.js +2 -1
- package/dist/features/categories/components/CategoryGrid.d.ts +2 -1
- package/dist/features/categories/components/CategoryGrid.js +8 -6
- package/dist/features/categories/components/CategoryProductsListing.js +22 -11
- package/dist/features/categories/components/index.d.ts +2 -0
- package/dist/features/categories/components/index.js +1 -0
- package/dist/features/categories/hooks/useCategories.d.ts +20 -0
- package/dist/features/categories/hooks/useCategories.js +50 -1
- package/dist/features/categories/hooks/useCategoryTree.d.ts +17 -0
- package/dist/features/categories/hooks/useCategoryTree.js +65 -0
- package/dist/features/events/components/AdminEventEditorView.d.ts +6 -0
- package/dist/features/events/components/AdminEventEditorView.js +203 -0
- package/dist/features/events/components/AdminEventsView.js +28 -2
- package/dist/features/events/components/EventCard.js +4 -2
- package/dist/features/events/components/EventFilters.js +2 -1
- package/dist/features/events/components/EventsIndexListing.js +40 -10
- package/dist/features/events/components/EventsListPageView.d.ts +6 -1
- package/dist/features/events/components/EventsListPageView.js +40 -7
- package/dist/features/events/components/index.d.ts +2 -0
- package/dist/features/events/components/index.js +1 -0
- package/dist/features/events/hooks/useEvents.js +2 -0
- package/dist/features/events/types/index.d.ts +1 -0
- package/dist/features/homepage/components/BlogArticlesSection.js +1 -1
- package/dist/features/homepage/components/EventsSection.js +1 -1
- package/dist/features/homepage/components/FeaturedAuctionsSection.js +1 -1
- package/dist/features/homepage/components/FeaturedPreOrdersSection.js +1 -1
- package/dist/features/homepage/components/FeaturedProductsSection.js +1 -1
- package/dist/features/homepage/components/FeaturedStoresSection.js +1 -1
- package/dist/features/homepage/components/HeroCarousel.js +1 -1
- package/dist/features/homepage/components/MarketplaceHomepageView.js +27 -17
- package/dist/features/homepage/components/SectionCarousel.js +4 -4
- package/dist/features/homepage/components/ShopByCategorySection.js +2 -2
- package/dist/features/homepage/schemas/firestore.d.ts +1 -1
- package/dist/features/homepage/schemas/firestore.js +2 -1
- package/dist/features/layout/AppLayoutShell.d.ts +6 -2
- package/dist/features/layout/AppLayoutShell.js +7 -3
- package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +3 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +6 -2
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +80 -12
- package/dist/features/pre-orders/components/PreOrderFilters.d.ts +8 -0
- package/dist/features/pre-orders/components/PreOrderFilters.js +21 -0
- package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +2 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +69 -10
- package/dist/features/pre-orders/components/PreOrdersListView.d.ts +6 -1
- package/dist/features/pre-orders/components/PreOrdersListView.js +26 -7
- package/dist/features/pre-orders/components/index.d.ts +2 -0
- package/dist/features/pre-orders/components/index.js +1 -0
- package/dist/features/products/components/AuctionsIndexListing.d.ts +2 -1
- package/dist/features/products/components/AuctionsIndexListing.js +61 -9
- package/dist/features/products/components/InteractiveProductCard.d.ts +2 -4
- package/dist/features/products/components/InteractiveProductCard.js +2 -2
- package/dist/features/products/components/ProductDetailPageView.d.ts +1 -1
- package/dist/features/products/components/ProductDetailPageView.js +116 -25
- package/dist/features/products/components/ProductFilters.d.ts +6 -11
- package/dist/features/products/components/ProductFilters.js +5 -3
- package/dist/features/products/components/ProductGrid.d.ts +8 -2
- package/dist/features/products/components/ProductGrid.js +20 -5
- package/dist/features/products/components/ProductTabsShell.d.ts +3 -11
- package/dist/features/products/components/ProductTabsShell.js +14 -14
- package/dist/features/products/components/ProductsIndexListing.js +73 -9
- package/dist/features/products/components/ProductsIndexPageView.d.ts +6 -1
- package/dist/features/products/components/ProductsIndexPageView.js +39 -6
- package/dist/features/products/components/RelatedProductsCarousel.d.ts +7 -0
- package/dist/features/products/components/RelatedProductsCarousel.js +11 -0
- package/dist/features/products/components/index.d.ts +1 -0
- package/dist/features/products/components/index.js +1 -0
- package/dist/features/products/hooks/useProducts.js +16 -0
- package/dist/features/products/repository/products.repository.d.ts +8 -0
- package/dist/features/products/repository/products.repository.js +2 -0
- package/dist/features/products/schemas/index.d.ts +8 -8
- package/dist/features/products/types/index.d.ts +12 -0
- package/dist/features/promotions/components/CouponsIndexListing.d.ts +9 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +86 -0
- package/dist/features/promotions/components/PromotionsView.d.ts +11 -5
- package/dist/features/promotions/components/PromotionsView.js +6 -1
- package/dist/features/promotions/components/index.d.ts +4 -2
- package/dist/features/promotions/components/index.js +2 -1
- package/dist/features/reviews/components/ReviewDetailPageView.d.ts +4 -0
- package/dist/features/reviews/components/ReviewDetailPageView.js +20 -0
- package/dist/features/reviews/components/ReviewDetailShell.d.ts +7 -0
- package/dist/features/reviews/components/ReviewDetailShell.js +80 -0
- package/dist/features/reviews/components/ReviewFilters.d.ts +3 -3
- package/dist/features/reviews/components/ReviewFilters.js +5 -4
- package/dist/features/reviews/components/ReviewsIndexListing.d.ts +4 -3
- package/dist/features/reviews/components/ReviewsIndexListing.js +35 -51
- package/dist/features/reviews/components/ReviewsIndexPageView.d.ts +6 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +49 -3
- package/dist/features/reviews/components/ReviewsList.js +9 -1
- package/dist/features/reviews/components/index.d.ts +1 -0
- package/dist/features/reviews/hooks/useReviews.js +15 -1
- package/dist/features/reviews/types/index.d.ts +6 -1
- package/dist/features/seller/components/SellerSidebar.d.ts +8 -4
- package/dist/features/seller/components/SellerSidebar.js +6 -4
- package/dist/features/seller/components/index.d.ts +30 -0
- package/dist/features/seller/components/index.js +17 -0
- package/dist/features/seller/hooks/useSellerStore.d.ts +2 -0
- package/dist/features/seller/hooks/useSellerStore.js +2 -0
- package/dist/features/seller/permission-map.d.ts +4 -2
- package/dist/features/seller/permission-map.js +16 -14
- package/dist/features/seller/schemas/index.d.ts +2 -2
- package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +1 -1
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +24 -19
- package/dist/features/stores/components/InteractiveStoreCard.d.ts +0 -5
- package/dist/features/stores/components/InteractiveStoreCard.js +9 -9
- package/dist/features/stores/components/StoreAuctionsListing.js +27 -9
- package/dist/features/stores/components/StoreDetailLayoutView.js +2 -0
- package/dist/features/stores/components/StoreFilters.d.ts +5 -0
- package/dist/features/stores/components/StoreFilters.js +20 -0
- package/dist/features/stores/components/StoreHeader.js +2 -2
- package/dist/features/stores/components/StorePreOrdersListing.d.ts +5 -0
- package/dist/features/stores/components/StorePreOrdersListing.js +40 -0
- package/dist/features/stores/components/StorePreOrdersPageView.d.ts +4 -0
- package/dist/features/stores/components/StorePreOrdersPageView.js +21 -0
- package/dist/features/stores/components/StoreProductsListing.js +21 -11
- package/dist/features/stores/components/StoreReviewsListing.js +2 -7
- package/dist/features/stores/components/StoresIndexListing.js +42 -8
- package/dist/features/stores/components/StoresIndexPageView.d.ts +6 -1
- package/dist/features/stores/components/StoresIndexPageView.js +9 -2
- package/dist/features/stores/components/index.d.ts +3 -0
- package/dist/features/stores/components/index.js +1 -0
- package/dist/features/stores/hooks/useStores.d.ts +7 -1
- package/dist/features/stores/hooks/useStores.js +16 -3
- package/dist/features/stores/schemas/index.d.ts +2 -2
- package/dist/features/stores/types/index.d.ts +3 -0
- package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +20 -0
- package/dist/features/wishlist/hooks/useGuestWishlist.js +49 -0
- package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -0
- package/dist/features/wishlist/hooks/useWishlistCount.js +31 -0
- package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +56 -0
- package/dist/features/wishlist/hooks/useWishlistWithGuest.js +57 -0
- package/dist/features/wishlist/index.d.ts +3 -0
- package/dist/features/wishlist/index.js +3 -0
- package/dist/features/wishlist/utils/guest-wishlist.d.ts +22 -0
- package/dist/features/wishlist/utils/guest-wishlist.js +70 -0
- package/dist/index.d.ts +50 -1
- package/dist/index.js +63 -1
- package/dist/next/routing/route-map.d.ts +70 -36
- package/dist/next/routing/route-map.js +30 -22
- package/dist/seed/addresses-seed-data.js +62 -261
- package/dist/seed/beyblade-seed-data.d.ts +7 -0
- package/dist/seed/beyblade-seed-data.js +947 -0
- package/dist/seed/bids-seed-data.d.ts +10 -2
- package/dist/seed/bids-seed-data.js +220 -1071
- package/dist/seed/blog-posts-seed-data.d.ts +2 -2
- package/dist/seed/blog-posts-seed-data.js +455 -117
- package/dist/seed/cart-seed-data.d.ts +9 -9
- package/dist/seed/cart-seed-data.js +73 -74
- package/dist/seed/coupons-seed-data.d.ts +3 -4
- package/dist/seed/coupons-seed-data.js +3 -509
- package/dist/seed/events-seed-data.d.ts +2 -2
- package/dist/seed/events-seed-data.js +315 -476
- package/dist/seed/faq-seed-data.d.ts +18 -41
- package/dist/seed/faq-seed-data.js +1059 -1172
- package/dist/seed/hot-wheels-seed-data.d.ts +7 -0
- package/dist/seed/hot-wheels-seed-data.js +1365 -0
- package/dist/seed/index.d.ts +6 -1
- package/dist/seed/index.js +6 -1
- package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +4 -2
- package/dist/seed/pokemon-carousel-slides-seed-data.js +152 -268
- package/dist/seed/pokemon-categories-seed-data.d.ts +18 -21
- package/dist/seed/pokemon-categories-seed-data.js +424 -1004
- package/dist/seed/pokemon-coupons-seed-data.d.ts +6 -0
- package/dist/seed/pokemon-coupons-seed-data.js +465 -0
- package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +3 -2
- package/dist/seed/pokemon-homepage-sections-seed-data.js +67 -289
- package/dist/seed/pokemon-products-seed-data.js +662 -0
- package/dist/seed/pokemon-seed-bundle.d.ts +32 -11
- package/dist/seed/pokemon-seed-bundle.js +41 -11
- package/dist/seed/pokemon-stores-seed-data.d.ts +2 -3
- package/dist/seed/pokemon-stores-seed-data.js +56 -31
- package/dist/seed/pokemon-users-seed-data.d.ts +2 -2
- package/dist/seed/pokemon-users-seed-data.js +245 -261
- package/dist/seed/reviews-seed-data.d.ts +17 -2
- package/dist/seed/reviews-seed-data.js +519 -483
- package/dist/seed/site-settings-seed-data.js +14 -14
- package/dist/seed/store-addresses-seed-data.js +68 -50
- package/dist/seed/transformers-seed-data.d.ts +7 -0
- package/dist/seed/transformers-seed-data.js +510 -0
- package/dist/seed/wishlists-seed-data.d.ts +5 -1
- package/dist/seed/wishlists-seed-data.js +82 -4
- package/dist/server.d.ts +1 -0
- package/dist/server.js +2 -0
- package/dist/tokens/index.d.ts +6 -0
- package/dist/tokens/index.js +2 -0
- package/dist/ui/components/BaseListingCard.js +24 -26
- package/dist/ui/components/BaseListingCard.style.css +5 -5
- package/dist/ui/components/HorizontalScroller.d.ts +1 -1
- package/dist/ui/components/HorizontalScroller.js +19 -5
- package/dist/ui/components/SideDrawer.style.css +3 -11
- package/dist/ui/rich-text/RichText.js +19 -1
- package/package.json +1 -1
|
@@ -1,38 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
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
|
-
//
|
|
31
|
-
|
|
40
|
+
// ═══════════════════════════════════════════════════
|
|
41
|
+
// POKÉMON TCG
|
|
42
|
+
// ═══════════════════════════════════════════════════
|
|
43
|
+
mkCat({
|
|
32
44
|
id: "category-pokemon-cards",
|
|
33
45
|
name: "Pokémon Cards",
|
|
34
46
|
slug: "pokemon-cards",
|
|
35
|
-
description: "Original Pokémon Base Set 151 cards — singles, lots, and
|
|
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
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
77
|
slug: "card-type",
|
|
85
|
-
description: "Filter by Pokémon, Trainer, or Energy",
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
},
|
|
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"] },
|
|
114
85
|
display: { showInFooter: false, icon: "🎴", showInMenu: true },
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
{
|
|
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
91
|
slug: "pokemon-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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
105
|
slug: "trainer-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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
118
|
slug: "energy-type",
|
|
230
|
-
description: "Basic Energy cards
|
|
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
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
131
|
slug: "element-type",
|
|
282
|
-
description: "
|
|
132
|
+
description: "Shop by Pokémon energy type",
|
|
283
133
|
rootId: "category-pokemon-cards",
|
|
284
134
|
parentIds: ["category-pokemon-cards"],
|
|
285
|
-
childrenIds: [
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
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
145
|
slug: "water",
|
|
336
|
-
description: "Water-type Pokémon cards —
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
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
158
|
slug: "electric",
|
|
389
|
-
description: "Electric-type Pokémon cards — Pikachu, Raichu, Zapdos, Electabuzz
|
|
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
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
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
171
|
slug: "fire",
|
|
442
|
-
description: "Fire-type Pokémon cards — Charizard, Arcanine, Ninetales,
|
|
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
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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
185
|
slug: "grass",
|
|
495
|
-
description: "Grass-type Pokémon cards —
|
|
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
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
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
198
|
slug: "psychic",
|
|
547
|
-
description: "Psychic-type Pokémon cards — Mewtwo,
|
|
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
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
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
212
|
slug: "fighting",
|
|
600
|
-
description: "Fighting-type Pokémon cards — Machamp, Hitmonchan,
|
|
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
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
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
225
|
slug: "colorless",
|
|
652
|
-
description: "Colorless-type Pokémon cards — Snorlax,
|
|
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
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
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
238
|
slug: "rarity",
|
|
703
|
-
description: "
|
|
239
|
+
description: "Shop by card rarity level",
|
|
704
240
|
rootId: "category-pokemon-cards",
|
|
705
241
|
parentIds: ["category-pokemon-cards"],
|
|
706
|
-
childrenIds: [
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
],
|
|
712
|
-
|
|
713
|
-
|
|
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: "
|
|
251
|
+
name: "Holo Rare",
|
|
748
252
|
slug: "holo-rare",
|
|
749
|
-
description: "
|
|
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
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
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
266
|
slug: "non-holo-rare",
|
|
798
|
-
description: "Rare cards without
|
|
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
|
-
|
|
803
|
-
|
|
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
|
-
},
|
|
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"] },
|
|
823
273
|
display: { showInFooter: false, icon: "🌟", showInMenu: true },
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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
|
-
{
|
|
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
279
|
slug: "uncommon",
|
|
840
|
-
description: "Uncommon
|
|
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
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
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
292
|
slug: "common",
|
|
882
|
-
description: "Common
|
|
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
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
},
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
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: "hot-wheels",
|
|
309
|
+
description: "Die-cast Hot Wheels cars — basic, premium, Treasure Hunt, and track sets",
|
|
310
|
+
rootId: "category-hot-wheels",
|
|
311
|
+
parentIds: [],
|
|
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 },
|
|
318
|
+
ancestors: [],
|
|
319
|
+
}),
|
|
320
|
+
mkCat({
|
|
321
|
+
id: "category-hw-basic-cars",
|
|
322
|
+
name: "Basic Die-Cast Cars",
|
|
323
|
+
slug: "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: "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: "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: "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: "beyblade-burst",
|
|
382
|
+
description: "Beyblade Burst spinning tops — Attack, Defense, Stamina, and Balance types",
|
|
383
|
+
rootId: "category-beyblade-burst",
|
|
384
|
+
parentIds: [],
|
|
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 },
|
|
391
|
+
ancestors: [],
|
|
392
|
+
}),
|
|
393
|
+
mkCat({
|
|
394
|
+
id: "category-bb-attack-type",
|
|
395
|
+
name: "Attack Type",
|
|
396
|
+
slug: "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: "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: "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: "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: "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: "transformers",
|
|
466
|
+
description: "Transformers action figures — Autobots, Decepticons, Combiners, G1 and modern",
|
|
467
|
+
rootId: "category-transformers",
|
|
468
|
+
parentIds: [],
|
|
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 },
|
|
475
|
+
ancestors: [],
|
|
476
|
+
}),
|
|
477
|
+
mkCat({
|
|
478
|
+
id: "category-tf-autobots",
|
|
479
|
+
name: "Autobots",
|
|
480
|
+
slug: "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: "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: "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({
|
|
921
521
|
id: "category-sealed-products",
|
|
922
522
|
name: "Sealed Products",
|
|
923
523
|
slug: "sealed-products",
|
|
924
|
-
description: "Factory-sealed
|
|
524
|
+
description: "Factory-sealed booster boxes, packs, starter sets, and collector bundles",
|
|
925
525
|
rootId: "category-sealed-products",
|
|
926
526
|
parentIds: [],
|
|
927
|
-
childrenIds: [],
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
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,
|
|
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 },
|
|
960
532
|
ancestors: [],
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
updatedAt: daysAgo(1),
|
|
964
|
-
},
|
|
965
|
-
// -- ROOT: Accessories -------------------------------------------------------
|
|
966
|
-
{
|
|
533
|
+
}),
|
|
534
|
+
mkCat({
|
|
967
535
|
id: "category-accessories",
|
|
968
|
-
name: "Accessories",
|
|
536
|
+
name: "Accessories & Display",
|
|
969
537
|
slug: "accessories",
|
|
970
|
-
description: "Card sleeves,
|
|
538
|
+
description: "Card sleeves, top-loaders, binders, display stands, and storage solutions",
|
|
971
539
|
rootId: "category-accessories",
|
|
972
540
|
parentIds: [],
|
|
973
|
-
childrenIds: [],
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
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,
|
|
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 },
|
|
999
545
|
ancestors: [],
|
|
1000
|
-
|
|
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",
|
|
1011
|
-
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,
|
|
1038
|
-
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",
|
|
1049
|
-
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,
|
|
1081
|
-
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",
|
|
1092
|
-
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,
|
|
1122
|
-
ancestors: [],
|
|
1123
|
-
createdBy: ADMIN,
|
|
1124
|
-
createdAt: daysAgo(30),
|
|
1125
|
-
updatedAt: daysAgo(1),
|
|
1126
|
-
},
|
|
546
|
+
}),
|
|
1127
547
|
];
|