@mohasinac/appkit 2.7.52 → 2.7.54

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 (123) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +1 -1
  2. package/dist/_internal/server/jobs/core/auctionSettlement.js +6 -3
  3. package/dist/_internal/server/jobs/core/bundleStockSync.js +9 -7
  4. package/dist/_internal/server/jobs/core/onProductStockChange.d.ts +12 -3
  5. package/dist/_internal/server/jobs/core/onProductStockChange.js +12 -13
  6. package/dist/_internal/server/jobs/core/onProductWrite.js +1 -3
  7. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +11 -2
  8. package/dist/client.d.ts +2 -0
  9. package/dist/client.js +1 -0
  10. package/dist/constants/field-names.d.ts +4 -3
  11. package/dist/constants/field-names.js +8 -8
  12. package/dist/errors/error-codes.d.ts +3 -0
  13. package/dist/errors/error-codes.js +3 -0
  14. package/dist/errors/messages.d.ts +3 -0
  15. package/dist/errors/messages.js +3 -0
  16. package/dist/features/admin/types/product.types.d.ts +1 -1
  17. package/dist/features/admin/types/product.types.js +2 -3
  18. package/dist/features/auctions/actions/bid-actions.d.ts +9 -0
  19. package/dist/features/auctions/actions/bid-actions.js +61 -0
  20. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +2 -1
  21. package/dist/features/auctions/components/AuctionDetailPageView.js +5 -4
  22. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +3 -1
  23. package/dist/features/auctions/components/PlaceBidFormClient.js +32 -2
  24. package/dist/features/auctions/types/index.d.ts +1 -1
  25. package/dist/features/layout/AppLayoutShell.js +1 -1
  26. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -11
  27. package/dist/features/products/api/[id]/route.js +4 -8
  28. package/dist/features/products/api/route.js +1 -3
  29. package/dist/features/products/components/AuctionsIndexListing.js +3 -11
  30. package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -10
  31. package/dist/features/products/components/ProductFilters.d.ts +33 -9
  32. package/dist/features/products/components/ProductFilters.js +6 -29
  33. package/dist/features/products/components/ProductForm.js +2 -3
  34. package/dist/features/products/constants/sieve.d.ts +162 -0
  35. package/dist/features/products/constants/sieve.js +95 -0
  36. package/dist/features/products/repository/products.repository.d.ts +5 -0
  37. package/dist/features/products/repository/products.repository.js +23 -3
  38. package/dist/features/products/schemas/firestore.d.ts +4 -4
  39. package/dist/features/products/schemas/firestore.js +2 -3
  40. package/dist/features/products/schemas/index.d.ts +6 -6
  41. package/dist/features/products/schemas/index.js +2 -6
  42. package/dist/features/products/types/index.d.ts +1 -1
  43. package/dist/features/seller/actions/offer-actions.js +2 -2
  44. package/dist/features/wishlist/types/index.d.ts +1 -1
  45. package/dist/index.d.ts +6 -3
  46. package/dist/index.js +6 -4
  47. package/dist/seed/addresses-seed-data.d.ts +2 -18
  48. package/dist/seed/addresses-seed-data.js +137 -203
  49. package/dist/seed/bids-seed-data.d.ts +2 -8
  50. package/dist/seed/bids-seed-data.js +172 -648
  51. package/dist/seed/blog-posts-seed-data.d.ts +0 -5
  52. package/dist/seed/blog-posts-seed-data.js +341 -596
  53. package/dist/seed/carousel-slides-seed-data.d.ts +0 -5
  54. package/dist/seed/carousel-slides-seed-data.js +61 -192
  55. package/dist/seed/carousels-seed-data.js +18 -1
  56. package/dist/seed/cart-seed-data.d.ts +1 -18
  57. package/dist/seed/cart-seed-data.js +116 -293
  58. package/dist/seed/categories-seed-data.d.ts +0 -6
  59. package/dist/seed/categories-seed-data.js +1409 -1537
  60. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -11
  61. package/dist/seed/claimed-coupons-seed-data.js +32 -29
  62. package/dist/seed/conversations-seed-data.d.ts +0 -6
  63. package/dist/seed/conversations-seed-data.js +132 -280
  64. package/dist/seed/coupon-usage-seed-data.d.ts +0 -16
  65. package/dist/seed/coupon-usage-seed-data.js +30 -44
  66. package/dist/seed/coupons-seed-data.d.ts +0 -6
  67. package/dist/seed/coupons-seed-data.js +141 -489
  68. package/dist/seed/events-seed-data.d.ts +0 -6
  69. package/dist/seed/events-seed-data.js +201 -379
  70. package/dist/seed/faq-seed-data.d.ts +0 -14
  71. package/dist/seed/faq-seed-data.js +609 -1184
  72. package/dist/seed/grouped-listings-seed-data.d.ts +119 -8
  73. package/dist/seed/grouped-listings-seed-data.js +148 -233
  74. package/dist/seed/history-seed-data.d.ts +0 -7
  75. package/dist/seed/history-seed-data.js +50 -54
  76. package/dist/seed/homepage-sections-seed-data.d.ts +0 -5
  77. package/dist/seed/homepage-sections-seed-data.js +83 -175
  78. package/dist/seed/index.d.ts +1 -1
  79. package/dist/seed/index.js +1 -1
  80. package/dist/seed/manifest.js +2 -2
  81. package/dist/seed/notifications-seed-data.d.ts +0 -6
  82. package/dist/seed/notifications-seed-data.js +309 -196
  83. package/dist/seed/offers-seed-data.d.ts +0 -8
  84. package/dist/seed/offers-seed-data.js +118 -197
  85. package/dist/seed/orders-seed-data.d.ts +2 -8
  86. package/dist/seed/orders-seed-data.js +248 -1510
  87. package/dist/seed/payouts-seed-data.d.ts +0 -6
  88. package/dist/seed/payouts-seed-data.js +102 -441
  89. package/dist/seed/products-auctions-seed-data.d.ts +1 -14
  90. package/dist/seed/products-auctions-seed-data.js +612 -1084
  91. package/dist/seed/products-preorders-seed-data.d.ts +119 -14
  92. package/dist/seed/products-preorders-seed-data.js +154 -455
  93. package/dist/seed/products-standard-seed-data.d.ts +1 -15
  94. package/dist/seed/products-standard-seed-data.js +1355 -4128
  95. package/dist/seed/reviews-seed-data.d.ts +2 -8
  96. package/dist/seed/reviews-seed-data.js +99 -1182
  97. package/dist/seed/scammers-seed-data.d.ts +0 -15
  98. package/dist/seed/scammers-seed-data.js +36 -37
  99. package/dist/seed/sessions-seed-data.d.ts +0 -13
  100. package/dist/seed/sessions-seed-data.js +58 -335
  101. package/dist/seed/site-settings-seed-data.d.ts +0 -4
  102. package/dist/seed/site-settings-seed-data.js +61 -52
  103. package/dist/seed/store-addresses-seed-data.js +27 -151
  104. package/dist/seed/store-extensions-seed-data.d.ts +0 -7
  105. package/dist/seed/store-extensions-seed-data.js +147 -261
  106. package/dist/seed/stores-seed-data.d.ts +0 -5
  107. package/dist/seed/stores-seed-data.js +222 -184
  108. package/dist/seed/sub-listings-seed-data.d.ts +119 -0
  109. package/dist/seed/sub-listings-seed-data.js +447 -0
  110. package/dist/seed/support-tickets-seed-data.d.ts +0 -7
  111. package/dist/seed/support-tickets-seed-data.js +82 -75
  112. package/dist/seed/users-seed-data.d.ts +0 -5
  113. package/dist/seed/users-seed-data.js +279 -634
  114. package/dist/seed/wishlists-seed-data.d.ts +0 -9
  115. package/dist/seed/wishlists-seed-data.js +36 -52
  116. package/dist/seo/json-ld.js +6 -4
  117. package/dist/styles.css +8052 -3
  118. package/dist/utils/index.d.ts +1 -0
  119. package/dist/utils/index.js +1 -0
  120. package/dist/utils/search-tokens.d.ts +2 -0
  121. package/dist/utils/search-tokens.js +21 -0
  122. package/package.json +2 -2
  123. package/scripts/seed-cli.mjs +2 -2
@@ -1,8 +1,119 @@
1
- /**
2
- * Grouped Listings Seed Data — Product bundles with optional discount.
3
- * 8 bundles across all collectibles verticals.
4
- * id === slug convention. group- prefix.
5
- * Standard products + pre-orders only (no auctions per GP1 spec).
6
- */
7
- import type { GroupedListingDocument } from "../features/grouped/schemas/firestore";
8
- export declare const groupedListingsSeedData: Partial<GroupedListingDocument>[];
1
+ export declare const groupedListingsSeedData: {
2
+ listingType: "standard";
3
+ id?: string | undefined;
4
+ title?: string | undefined;
5
+ description?: string | undefined;
6
+ slug?: string | undefined;
7
+ seoTitle?: string | undefined;
8
+ seoDescription?: string | undefined;
9
+ seoKeywords?: string[] | undefined;
10
+ categorySlugs?: string[] | undefined;
11
+ categoryNames?: string[] | undefined;
12
+ category?: string | undefined;
13
+ categoryName?: string | undefined;
14
+ subcategory?: string | undefined;
15
+ brand?: string | undefined;
16
+ brandSlug?: string | undefined;
17
+ price?: number | undefined;
18
+ currency?: string | undefined;
19
+ stockQuantity?: number | undefined;
20
+ availableQuantity?: number | undefined;
21
+ mainImage?: string | undefined;
22
+ images?: string[] | undefined;
23
+ video?: import("..").ProductVideoField | undefined;
24
+ status?: import("..").ProductStatus | undefined;
25
+ storeId?: string | undefined;
26
+ storeName?: string | undefined;
27
+ featured?: boolean | undefined;
28
+ tags?: string[] | undefined;
29
+ specifications?: import("..").ProductSpecification[] | undefined;
30
+ features?: string[] | undefined;
31
+ shippingInfo?: string | undefined;
32
+ returnPolicy?: string | undefined;
33
+ condition?: "new" | "used" | "refurbished" | "broken" | "graded" | undefined;
34
+ insurance?: boolean | undefined;
35
+ insuranceCost?: number | undefined;
36
+ shippingPaidBy?: "seller" | "buyer" | undefined;
37
+ auctionEndDate?: Date | undefined;
38
+ startingBid?: number | undefined;
39
+ currentBid?: number | undefined;
40
+ bidCount?: number | undefined;
41
+ leadingBidderId?: string | undefined;
42
+ reservePrice?: number | undefined;
43
+ buyNowPrice?: number | undefined;
44
+ minBidIncrement?: number | undefined;
45
+ autoExtendable?: boolean | undefined;
46
+ auctionExtensionMinutes?: number | undefined;
47
+ auctionOriginalEndDate?: Date | undefined;
48
+ auctionShippingPaidBy?: "seller" | "winner" | undefined;
49
+ buyItNowPriceInPaise?: number | undefined;
50
+ bidsHaveStarted?: boolean | undefined;
51
+ grading?: import("../features/products").ProductGrading | undefined;
52
+ card?: import("../features/products").ProductCardMetadata | undefined;
53
+ classified?: import("../features/products").ProductClassifiedMeta | undefined;
54
+ digitalCode?: import("../features/products").ProductDigitalCodeMeta | undefined;
55
+ liveItem?: import("../features/products").ProductLiveItemMeta | undefined;
56
+ catalogProductId?: string | undefined;
57
+ preOrderDeliveryDate?: Date | undefined;
58
+ preOrderDepositPercent?: number | undefined;
59
+ preOrderDepositAmount?: number | undefined;
60
+ preOrderMaxQuantity?: number | undefined;
61
+ preOrderCurrentCount?: number | undefined;
62
+ preOrderProductionStatus?: "upcoming" | "in_production" | "ready_to_ship" | undefined;
63
+ preOrderCancellable?: boolean | undefined;
64
+ preOrderClosed?: boolean | undefined;
65
+ isPromoted?: boolean | undefined;
66
+ isOnSale?: boolean | undefined;
67
+ isSold?: boolean | undefined;
68
+ promotionEndDate?: Date | undefined;
69
+ pickupAddressId?: string | undefined;
70
+ viewCount?: number | undefined;
71
+ avgRating?: number | undefined;
72
+ reviewCount?: number | undefined;
73
+ bulkDiscounts?: {
74
+ quantity: number;
75
+ discountPercent: number;
76
+ }[] | undefined;
77
+ ingredients?: string[] | undefined;
78
+ howToUse?: string[] | undefined;
79
+ allowOffers?: boolean | undefined;
80
+ minOfferPercent?: number | undefined;
81
+ customFields?: import("../features/products").CustomField[] | undefined;
82
+ customSections?: import("../features/products").CustomSection[] | undefined;
83
+ sublistingCategoryId?: string | undefined;
84
+ groupId?: string | undefined;
85
+ isGroupParent?: boolean | undefined;
86
+ groupParentSlug?: string | undefined;
87
+ groupChildSlugs?: string[] | undefined;
88
+ groupTitle?: string | undefined;
89
+ maxPerUser?: number | undefined;
90
+ partOfBundleIds?: string[] | undefined;
91
+ partOfBundleTitles?: string[] | undefined;
92
+ isPartOfBundle?: boolean | undefined;
93
+ prizeDrawItems?: import("../features/products").PrizeDrawItem[] | undefined;
94
+ pricePerEntry?: number | undefined;
95
+ prizeMaxEntries?: number | undefined;
96
+ prizeCurrentEntries?: number | undefined;
97
+ prizeRevealWindowStart?: Date | undefined;
98
+ prizeRevealWindowEnd?: Date | undefined;
99
+ prizeRevealStatus?: "pending" | "open" | "closed" | undefined;
100
+ prizeRevealDeadlineDays?: number | undefined;
101
+ prizeGithubFileUrl?: string | undefined;
102
+ shipping?: {
103
+ allowedProviderIds?: string[];
104
+ overrides?: Array<{
105
+ providerId: string;
106
+ feeInPaise?: number;
107
+ etaDaysMin?: number;
108
+ etaDaysMax?: number;
109
+ }>;
110
+ } | undefined;
111
+ physicalLocation?: {
112
+ zone: string;
113
+ shelf: string;
114
+ bin: string;
115
+ } | undefined;
116
+ searchTokens?: string[] | undefined;
117
+ createdAt?: Date | undefined;
118
+ updatedAt?: Date | undefined;
119
+ }[];
@@ -1,248 +1,163 @@
1
- /**
2
- * Grouped Listings Seed DataProduct bundles with optional discount.
3
- * 8 bundles across all collectibles verticals.
4
- * id === slug convention. group- prefix.
5
- * Standard products + pre-orders only (no auctions per GP1 spec).
1
+ /*
2
+ * WHY: Seeds grouped product listings — bundles where the parent and individual children are each purchasable separately (ETB model).
3
+ * WHAT: Exports 3 grouped listings (parents only; children are existing standard product documents referenced via groupChildSlugs): LOB Booster Box with single pack + promo child, Kaiba Structure Deck with 2–3 singles + trap child, POTD Booster Box with single pack + promo child. Groups use the existing groupId/isGroupParent/groupChildSlugs schema fields. All in Kaiba Corp Card Vault. Status: all published.
4
+ *
5
+ * EXPORTS:
6
+ * groupedListingsSeedData — Array of 3 grouped product parents with isGroupParent:true and groupChildSlugs[]
7
+ *
8
+ * @tag domain:products,bundles
9
+ * @tag layer:seed
10
+ * @tag pattern:none
11
+ * @tag access:server-only
12
+ * @tag consumers:seed/index.ts,seed/runner.ts,SeedPanel
13
+ * @tag sideEffects:none
6
14
  */
7
- const NOW = new Date();
8
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
9
- export const groupedListingsSeedData = [
10
- // ── 1. Pokémon TCG Starter Bundle (Pokémon Palace) ────────────────────────
15
+ import { PRODUCT_FIELDS } from "../constants/field-names";
16
+ // Card ID mappings for YGOPRODECK image API
17
+ const CARD_IDS = {
18
+ blueEyesWhiteDragon: 89631139,
19
+ kaibaTin: 89631139,
20
+ potOfGreed: 55144522,
21
+ };
22
+ const _rawGroupedListingsSeedData = [
23
+ // ────────────────────────────────────────────────────────────────────────────
24
+ // Group 1: LOB Booster Box with single pack + promo
25
+ // Parent: product-lob-booster-box-sealed (full box)
26
+ // Children: product-lob-booster-pack (single), product-lob-special-promo-harpie-lady (promo)
27
+ // ────────────────────────────────────────────────────────────────────────────
11
28
  {
12
- id: "group-pokemon-starter-bundle",
13
- slug: "group-pokemon-starter-bundle",
14
- title: "Pokémon TCG Starter Bundle — ETB + Deck Box + Sleeves",
15
- description: "Everything a new Pokémon TCG player needs. Paldean Fates Elite Trainer Box, 200 Katana sleeves, and a Dragon Shield deck box all bundled at a saving of ₹400 vs buying separately.",
16
- productIds: [
17
- "product-pokemon-sv-etb",
18
- "product-pokemon-pikachu-plush-8",
19
- ],
20
- groupTheme: "related",
21
- minActiveMembers: 2,
22
- activeMemberCount: 2,
23
- visibilityStatus: "visible",
24
- coverImage: "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=800&h=600&fit=crop",
25
- isActive: true,
26
- isFeatured: true,
27
- storeId: "store-pokemon-palace",
28
- brandSlug: "brand-pokemon-company",
29
- categorySlug: "category-pokemon-cards",
30
- createdBy: "user-aryan-kapoor",
31
- createdAt: daysAgo(30),
32
- updatedAt: daysAgo(2),
33
- },
34
- // ── 2. Hot Wheels Car Culture 3-Pack (Diecast Depot) ─────────────────────
35
- {
36
- id: "group-hot-wheels-car-culture-3pack",
37
- slug: "group-hot-wheels-car-culture-3pack",
38
- title: "Hot Wheels Car Culture Collector 3-Pack",
39
- description: "Three premium Hot Wheels Car Culture cars curated by Diecast Depot. Real Riders rubber tyres, premium spectraflame paint. Perfect gift set for the diecast enthusiast.",
40
- productIds: [
41
- "product-hot-wheels-premium-5pack",
42
- "product-hot-wheels-redline-1969-camaro",
43
- "product-tomica-limited-datsun",
44
- ],
45
- groupTheme: "related",
46
- minActiveMembers: 2,
47
- activeMemberCount: 2,
48
- visibilityStatus: "visible",
49
- coverImage: "https://images.unsplash.com/photo-1581235720704-06d3acfcb36f?w=800&h=600&fit=crop",
50
- isActive: true,
51
- isFeatured: true,
52
- storeId: "store-diecast-depot",
53
- brandSlug: "brand-hot-wheels",
54
- categorySlug: "category-hot-wheels-cars",
55
- createdBy: "user-vikram-mehta",
56
- createdAt: daysAgo(25),
57
- updatedAt: daysAgo(3),
58
- },
59
- // ── 3. Beyblade X Starter Kit (Beyblade Arena) ────────────────────────────
60
- {
61
- id: "group-beyblade-x-starter-kit",
62
- slug: "group-beyblade-x-starter-kit",
63
- title: "Beyblade X Complete Starter Kit — Top + Launcher + Stadium",
64
- description: "Best way to start with Beyblade X. Includes BX-01 Dran Sword, BX-05 Launcher, and the official XStadium. Takara Tomy Japan import. Ready to battle right out of the box.",
65
- productIds: [
66
- "product-beyblade-x-bx01-dran-sword",
67
- "product-beyblade-burst-b200-valkyrie",
29
+ id: "group-lob-booster-box",
30
+ storeId: "store-kaiba-corp-cards",
31
+ brandSlug: "brand-konami",
32
+ title: "LOB Booster Box — Complete Sealed Box (24 Packs)",
33
+ slug: "group-lob-booster-box",
34
+ description: "Legend of Blue Eyes White Dragon complete booster box containing 24 sealed booster packs. This is the parent product; you can also purchase individual packs or the promo card separately.",
35
+ price: 4999900, // ₹49,999
36
+ currency: "INR",
37
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
38
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
39
+ listingType: "standard",
40
+ categorySlugs: ["category-booster-boxes", "category-sealed-products"],
41
+ images: [
42
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`,
68
43
  ],
69
- groupTheme: "related",
70
- minActiveMembers: 2,
71
- activeMemberCount: 2,
72
- visibilityStatus: "visible",
73
- coverImage: "https://images.unsplash.com/photo-1555680202-c86f0e12f086?w=800&h=600&fit=crop",
74
- isActive: true,
75
- isFeatured: true,
76
- storeId: "store-beyblade-arena",
77
- brandSlug: "brand-takara-tomy",
78
- categorySlug: "category-beyblade-tops",
79
- createdBy: "user-rohit-joshi",
80
- createdAt: daysAgo(20),
81
- updatedAt: daysAgo(1),
82
- },
83
- // ── 4. Anime Figure Duo — Rem + Goku (Tokyo Toys India) ──────────────────
84
- {
85
- id: "group-anime-figure-duo-rem-goku",
86
- slug: "group-anime-figure-duo-rem-goku",
87
- title: "Anime Figure Duo — Nendoroid Rem + S.H.Figuarts Goku",
88
- description: "Two collector-favourite anime figures at a bundle price. Good Smile Nendoroid Rem (#663) from Re:Zero and Bandai S.H.Figuarts Goku Ultra Instinct. Display as a pair or separately.",
89
- productIds: [
90
- "product-nendoroid-rem-rezero",
91
- "product-shf-goku-ultra-instinct",
44
+ stockQuantity: 1,
45
+ isSold: false,
46
+ availableQuantity: 1,
47
+ customFields: [],
48
+ customSections: [],
49
+ featured: false,
50
+ isPromoted: false,
51
+ isOnSale: false,
52
+ isGroupParent: true,
53
+ groupId: "group-lob-booster-box",
54
+ groupTitle: "LOB Booster Box & Components",
55
+ groupChildSlugs: [
56
+ "product-lob-booster-pack",
57
+ "product-lob-special-promo-harpie-lady",
92
58
  ],
93
- groupTheme: "related",
94
- minActiveMembers: 2,
95
- activeMemberCount: 2,
96
- visibilityStatus: "visible",
97
- coverImage: "https://images.unsplash.com/photo-1536896407451-6e3dd976edd6?w=800&h=600&fit=crop",
98
- isActive: true,
99
- isFeatured: false,
100
- storeId: "store-tokyo-toys-india",
101
- categorySlug: "category-anime-figures",
102
- createdBy: "user-priya-singh",
103
- createdAt: daysAgo(18),
104
- updatedAt: daysAgo(4),
59
+ card: {
60
+ setName: "Legend of Blue Eyes White Dragon",
61
+ setYear: 1999,
62
+ rarity: "Mixed",
63
+ language: "en",
64
+ },
65
+ createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
66
+ updatedAt: new Date(),
105
67
  },
106
- // ── 5. Gundam Builder Essentials (Tokyo Toys India) ───────────────────────
68
+ // ────────────────────────────────────────────────────────────────────────────
69
+ // Group 2: Kaiba Structure Deck with singles + trap
70
+ // Parent: product-kaiba-starter-deck (full deck)
71
+ // Children: product-blue-eyes-white-dragon-sdk (key pull), product-shrink-sdk (foil tech), product-the-dragon-dwelling-in-cave (budget filler)
72
+ // ────────────────────────────────────────────────────────────────────────────
107
73
  {
108
- id: "group-gundam-builder-essentials",
109
- slug: "group-gundam-builder-essentials",
110
- title: "Gundam Builder Essentials — MG + RG Bundle",
111
- description: "Start your Gunpla journey right. Gundam RX-78-2 MG 1/100 (Ver. 3.0) for an intermediate build, plus Gundam Wing Zero RG 1/144 for a detailed smaller display. Both official Bandai Spirits Japan releases.",
112
- productIds: [
113
- "product-gundam-rx78-mg",
114
- "product-gundam-wing-zero-rg",
74
+ id: "group-kaiba-structure-deck",
75
+ storeId: "store-kaiba-corp-cards",
76
+ brandSlug: "brand-konami",
77
+ title: "Starter Deck: Kaiba Complete Sealed Deck",
78
+ slug: "group-kaiba-structure-deck",
79
+ description: "Starter Deck: Kaiba — complete sealed deck in original packaging. Buy the full deck or select key singles like Blue-Eyes White Dragon separately.",
80
+ price: 199900, // ₹1,999
81
+ currency: "INR",
82
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
83
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
84
+ listingType: "standard",
85
+ categorySlugs: ["category-starter-structure", "category-sealed-products"],
86
+ images: [
87
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.kaibaTin}.jpg`,
115
88
  ],
116
- groupTheme: "related",
117
- minActiveMembers: 2,
118
- activeMemberCount: 2,
119
- visibilityStatus: "visible",
120
- coverImage: "https://images.unsplash.com/photo-1536896407451-6e3dd976edd6?w=800&h=600&fit=crop",
121
- isActive: true,
122
- isFeatured: false,
123
- storeId: "store-tokyo-toys-india",
124
- brandSlug: "brand-bandai",
125
- categorySlug: "category-gundam-kits",
126
- createdBy: "user-priya-singh",
127
- createdAt: daysAgo(15),
128
- updatedAt: daysAgo(2),
129
- },
130
- // ── 6. Pokémon Plush Pair (Pokémon Palace) ────────────────────────────────
131
- {
132
- id: "group-pokemon-plush-pair",
133
- slug: "group-pokemon-plush-pair",
134
- title: "Pokémon Plush Gift Pair — Pikachu + Gengar",
135
- description: "Gift-ready pair of official Pokémon Center plushies. 8-inch Pikachu and Sitting Cuties Gengar. Ideal for gifting or display. Both authentic Pokémon Center Japan release.",
136
- productIds: [
137
- "product-pokemon-pikachu-plush-8",
138
- "product-pokemon-gengar-sitting-cuties",
89
+ stockQuantity: 3,
90
+ isSold: false,
91
+ availableQuantity: 3,
92
+ customFields: [],
93
+ customSections: [],
94
+ featured: false,
95
+ isPromoted: false,
96
+ isOnSale: false,
97
+ isGroupParent: true,
98
+ groupId: "group-kaiba-structure-deck",
99
+ groupTitle: "Kaiba Starter Deck & Key Singles",
100
+ groupChildSlugs: [
101
+ "sublisting-blue-eyes-sdk",
102
+ "product-shrink-sdk",
103
+ "product-the-dragon-dwelling-in-cave",
139
104
  ],
140
- groupTheme: "related",
141
- minActiveMembers: 2,
142
- activeMemberCount: 2,
143
- visibilityStatus: "visible",
144
- coverImage: "https://images.unsplash.com/photo-1613771404784-3a5686aa2be3?w=800&h=600&fit=crop",
145
- isActive: true,
146
- isFeatured: false,
147
- storeId: "store-pokemon-palace",
148
- brandSlug: "brand-pokemon-company",
149
- categorySlug: "category-pokemon-cards",
150
- createdBy: "user-aryan-kapoor",
151
- createdAt: daysAgo(12),
152
- updatedAt: daysAgo(3),
105
+ card: {
106
+ setName: "Starter Deck Kaiba",
107
+ setYear: 2002,
108
+ rarity: "Mixed",
109
+ language: "en",
110
+ },
111
+ createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
112
+ updatedAt: new Date(),
153
113
  },
154
- // ── 7. Yu-Gi-Oh! Tournament Ready Pair (CardGame Hub) ────────────────────
114
+ // ────────────────────────────────────────────────────────────────────────────
115
+ // Group 3: POTD Booster Box with single pack + promo
116
+ // Parent: product-potd-booster-box (full box)
117
+ // Children: product-potd-booster-pack-single (single pack), product-elemental-hero-neos (pull promo)
118
+ // ────────────────────────────────────────────────────────────────────────────
155
119
  {
156
- id: "group-yugioh-tournament-pair",
157
- slug: "group-yugioh-tournament-pair",
158
- title: "Yu-Gi-Oh! Tournament Ready — 25th Tin + Structure Deck",
159
- description: "Upgrade your deck with the 25th Anniversary Tin and the Albaz Structure Deck. Both are current-format legal. The tin gives you chase rares; the structure gives you a complete playable engine.",
160
- productIds: [
161
- "product-yugioh-25th-tin",
162
- "product-yugioh-structure-albaz",
163
- ],
164
- groupTheme: "related",
165
- minActiveMembers: 2,
166
- activeMemberCount: 2,
167
- visibilityStatus: "visible",
168
- coverImage: "https://images.unsplash.com/photo-1612036782180-6f0b6cd846fe?w=800&h=600&fit=crop",
169
- isActive: true,
170
- isFeatured: false,
171
- storeId: "store-cardgame-hub",
120
+ id: "group-potd-booster-box",
121
+ storeId: "store-kaiba-corp-cards",
172
122
  brandSlug: "brand-konami",
173
- categorySlug: "category-yugioh-cards",
174
- createdBy: "user-nisha-reddy",
175
- createdAt: daysAgo(10),
176
- updatedAt: daysAgo(1),
177
- },
178
- // ── 9. Admin Curated — Articulated Figure Display Set (LetItRip Official) ─
179
- {
180
- id: "group-letitrip-figure-display-set",
181
- slug: "group-letitrip-figure-display-set",
182
- title: "LetItRip Curated: Premium Articulated Figure Display Set",
183
- description: "Hand-picked by LetItRip's curation team — three of the finest articulated figures available right now. figma Link (TotK) for the gaming shelf, MAFEX Miles Morales for the superhero cabinet, and S.H.Figuarts UI Goku for the anime corner. All official, all brand-new. Bundled for a saving of ₹1,500 vs buying separately.",
184
- productIds: [
185
- "product-figma-link-totk",
186
- "product-mafex-miles-morales-spiderman",
187
- "product-shf-ultra-instinct-goku",
123
+ title: "POTD Booster Box — Complete Sealed Box (24 Packs)",
124
+ slug: "group-potd-booster-box",
125
+ description: "Power of the Duelist complete booster box containing 24 sealed booster packs. Purchase the full box or individual packs and the featured promo card separately.",
126
+ price: 2299900, // ₹22,999
127
+ currency: "INR",
128
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
129
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
130
+ listingType: "standard",
131
+ categorySlugs: ["category-booster-boxes", "category-sealed-products"],
132
+ images: [
133
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`,
188
134
  ],
189
- groupTheme: "related",
190
- minActiveMembers: 2,
191
- activeMemberCount: 3,
192
- visibilityStatus: "visible",
193
- coverImage: "https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800&h=600&fit=crop",
194
- isActive: true,
195
- isFeatured: true,
196
- storeId: "store-letitrip-official",
197
- categorySlug: "category-poseable-figures",
198
- createdBy: "user-admin-letitrip",
199
- createdAt: daysAgo(7),
200
- updatedAt: daysAgo(1),
201
- },
202
- // ── 10. Admin Curated — Anime Funko Pop Starter Set (LetItRip Official) ───
203
- {
204
- id: "group-letitrip-funko-anime-starter",
205
- slug: "group-letitrip-funko-anime-starter",
206
- title: "LetItRip Curated: Anime Funko Pop Starter Collection",
207
- description: "Build your Funko Pop shelf from scratch with this admin-curated set. Gojo Satoru (#1373, blindfold ver.) + Tanjiro & Nezuko Deluxe Diorama — two of the most requested Funko Pops in our anime lineup. Perfect entry point or gift set.",
208
- productIds: [
209
- "product-funko-pop-gojo-satoru",
210
- "product-funko-pop-tanjiro-dlx",
211
- ],
212
- groupTheme: "related",
213
- minActiveMembers: 2,
214
- activeMemberCount: 2,
215
- visibilityStatus: "visible",
216
- coverImage: "https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800&h=600&fit=crop",
217
- isActive: true,
218
- isFeatured: true,
219
- storeId: "store-letitrip-official",
220
- categorySlug: "category-vinyl-figures",
221
- createdBy: "user-admin-letitrip",
222
- createdAt: daysAgo(5),
223
- updatedAt: daysAgo(1),
224
- },
225
- // ── 8. Funko Pop Anime Collector Set (Tokyo Toys India) ───────────────────
226
- {
227
- id: "group-funko-pop-anime-trio",
228
- slug: "group-funko-pop-anime-trio",
229
- title: "Funko Pop! Anime Collector Set — Naruto + Batman",
230
- description: "Two of the most iconic Funko Pop figures at a bundle price. Naruto Sage Mode #932 and McFarlane Batman (Dark Knight). Ideal for display shelves or desktops.",
231
- productIds: [
232
- "product-funko-pop-naruto-sage",
233
- "product-mcfarlane-batman-dark-knight",
135
+ stockQuantity: 2,
136
+ isSold: false,
137
+ availableQuantity: 2,
138
+ customFields: [],
139
+ customSections: [],
140
+ featured: false,
141
+ isPromoted: false,
142
+ isOnSale: false,
143
+ isGroupParent: true,
144
+ groupId: "group-potd-booster-box",
145
+ groupTitle: "POTD Booster Box & Components",
146
+ groupChildSlugs: [
147
+ "product-potd-booster-pack-single",
148
+ "product-elemental-hero-neos",
234
149
  ],
235
- groupTheme: "related",
236
- minActiveMembers: 2,
237
- activeMemberCount: 2,
238
- visibilityStatus: "visible",
239
- coverImage: "https://images.unsplash.com/photo-1536896407451-6e3dd976edd6?w=800&h=600&fit=crop",
240
- isActive: true,
241
- isFeatured: false,
242
- storeId: "store-tokyo-toys-india",
243
- categorySlug: "category-vinyl-figures",
244
- createdBy: "user-priya-singh",
245
- createdAt: daysAgo(8),
246
- updatedAt: daysAgo(2),
150
+ card: {
151
+ setName: "Power of the Duelist",
152
+ setYear: 2005,
153
+ rarity: "Mixed",
154
+ language: "en",
155
+ },
156
+ createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
157
+ updatedAt: new Date(),
247
158
  },
248
159
  ];
160
+ export const groupedListingsSeedData = _rawGroupedListingsSeedData.map((p) => ({
161
+ ...p,
162
+ listingType: "standard",
163
+ }));
@@ -1,16 +1,9 @@
1
- /**
2
- * History Seed Data — one document per user at top-level `history/history-{userSlug}`.
3
- *
4
- * id === slug === `history-{userSlug}`. items[] FIFO-capped at HISTORY_MAX (50),
5
- * newest-first (viewedAt desc). Re-visit semantics: dedup by productId, max viewedAt wins.
6
- */
7
1
  export interface HistoryItemSeed {
8
2
  productId: string;
9
3
  productType: "product" | "auction" | "preorder";
10
4
  viewedAt: Date;
11
5
  }
12
6
  export interface HistorySeedDocument {
13
- /** doc id === slug === `history-{userId}` */
14
7
  id: string;
15
8
  userId: string;
16
9
  items: HistoryItemSeed[];