@mohasinac/appkit 4.1.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/_internal/client/features/maintenance/index.d.ts +2 -0
  2. package/dist/_internal/client/features/maintenance/index.js +1 -0
  3. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.d.ts +9 -0
  4. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +55 -0
  5. package/dist/_internal/server/features/auctions/index.d.ts +1 -1
  6. package/dist/_internal/server/features/auctions/index.js +1 -1
  7. package/dist/_internal/server/features/auctions/service.js +2 -2
  8. package/dist/_internal/server/features/checkout/actions.d.ts +15 -0
  9. package/dist/_internal/server/features/checkout/actions.js +245 -182
  10. package/dist/_internal/server/features/maintenance/cloud-logs-data.d.ts +50 -0
  11. package/dist/_internal/server/features/maintenance/cloud-logs-data.js +152 -0
  12. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  13. package/dist/_internal/server/functions/scheduled.js +9 -1
  14. package/dist/_internal/server/jobs/core/jobRunners.js +10 -0
  15. package/dist/_internal/server/jobs/core/newsletterExport.d.ts +15 -0
  16. package/dist/_internal/server/jobs/core/newsletterExport.js +43 -0
  17. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +4 -12
  18. package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -3
  19. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +2 -0
  20. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +1 -0
  21. package/dist/_internal/server/jobs/core/onProductWrite.js +14 -2
  22. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +1 -0
  23. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +1 -0
  24. package/dist/_internal/server/jobs/core/revenueRollup.d.ts +13 -0
  25. package/dist/_internal/server/jobs/core/revenueRollup.js +22 -0
  26. package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +35 -0
  27. package/dist/_internal/server/jobs/core/whatsappNotify.js +82 -0
  28. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  29. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  30. package/dist/_internal/server/jobs/handlers/revenueRollup.d.ts +2 -0
  31. package/dist/_internal/server/jobs/handlers/revenueRollup.js +2 -0
  32. package/dist/_internal/shared/features/auctions/config.d.ts +1 -1
  33. package/dist/_internal/shared/features/auctions/config.js +1 -1
  34. package/dist/_internal/shared/features/auctions/schema.js +1 -1
  35. package/dist/_internal/shared/features/cart/schema.js +2 -2
  36. package/dist/_internal/shared/features/checkout/config.d.ts +7 -0
  37. package/dist/_internal/shared/features/checkout/config.js +7 -0
  38. package/dist/_internal/shared/features/events/schema.js +1 -1
  39. package/dist/_internal/shared/features/orders/schema.js +1 -1
  40. package/dist/_internal/shared/features/products/schema.js +3 -3
  41. package/dist/_internal/shared/features/promotions/schema.js +3 -3
  42. package/dist/_internal/shared/fees/calculator.d.ts +32 -7
  43. package/dist/_internal/shared/fees/calculator.js +25 -0
  44. package/dist/client.d.ts +4 -4
  45. package/dist/client.js +4 -2
  46. package/dist/constants/api-endpoints.d.ts +9 -6
  47. package/dist/constants/api-endpoints.js +3 -2
  48. package/dist/contracts/client-payment-gateway.d.ts +1 -2
  49. package/dist/features/about/components/AboutView.d.ts +6 -16
  50. package/dist/features/about/components/AboutView.js +3 -3
  51. package/dist/features/about/components/FeesView.js +18 -0
  52. package/dist/features/about/index.d.ts +2 -1
  53. package/dist/features/about/schemas/firestore.d.ts +47 -0
  54. package/dist/features/about/schemas/firestore.js +6 -0
  55. package/dist/features/about/schemas/index.d.ts +210 -0
  56. package/dist/features/about/schemas/index.js +45 -0
  57. package/dist/features/account/hooks/useProfile.js +3 -0
  58. package/dist/features/admin/actions/notification-actions.d.ts +4 -1
  59. package/dist/features/admin/actions/notification-actions.js +56 -10
  60. package/dist/features/admin/components/AdminAdsView.js +1 -1
  61. package/dist/features/admin/components/AdminCarouselGroupEditorView.d.ts +6 -0
  62. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +50 -0
  63. package/dist/features/admin/components/AdminCartsView.js +16 -3
  64. package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
  65. package/dist/features/admin/components/AdminCouponsView.js +14 -4
  66. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -42
  67. package/dist/features/admin/components/AdminMediaView.js +1 -1
  68. package/dist/features/admin/components/AdminNewsletterView.js +42 -11
  69. package/dist/features/admin/components/AdminNotificationsView.js +31 -19
  70. package/dist/features/admin/components/AdminOrdersView.js +7 -0
  71. package/dist/features/admin/components/AdminPayoutsView.js +18 -3
  72. package/dist/features/admin/components/AdminProductsView.js +17 -2
  73. package/dist/features/admin/components/AdminReviewsView.js +16 -2
  74. package/dist/features/admin/components/AdminScammersView.js +7 -0
  75. package/dist/features/admin/components/AdminSectionsView.js +4 -0
  76. package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
  77. package/dist/features/admin/components/AdminSiteSettingsView.js +127 -8
  78. package/dist/features/admin/components/AdminStoreEditorView.d.ts +2 -1
  79. package/dist/features/admin/components/AdminStoreEditorView.js +4 -4
  80. package/dist/features/admin/components/AdminStoresView.js +1 -1
  81. package/dist/features/admin/components/AdminSupportTicketDetailView.js +23 -5
  82. package/dist/features/admin/components/AdminSupportTicketsView.js +20 -2
  83. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +4 -1
  84. package/dist/features/admin/components/AdminTesterChecklistView.js +8 -0
  85. package/dist/features/admin/components/index.d.ts +2 -0
  86. package/dist/features/admin/components/index.js +1 -0
  87. package/dist/features/admin/constants/filter-tabs.d.ts +55 -41
  88. package/dist/features/admin/constants/filter-tabs.js +55 -27
  89. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +25 -0
  90. package/dist/features/admin/repository/analytics-rollup.repository.js +31 -0
  91. package/dist/features/admin/repository/site-settings.repository.js +8 -1
  92. package/dist/features/admin/schemas/firestore.d.ts +46 -0
  93. package/dist/features/admin/schemas/firestore.js +62 -24
  94. package/dist/features/auctions/actions/bid-actions.js +1 -1
  95. package/dist/features/auctions/components/AuctionDetailPageView.js +2 -2
  96. package/dist/features/auctions/components/AuctionsListView.js +8 -1
  97. package/dist/features/auth/components/LoginForm.js +2 -2
  98. package/dist/features/auth/components/RegisterForm.js +2 -2
  99. package/dist/features/auth/permissions/constants.d.ts +16 -0
  100. package/dist/features/auth/permissions/constants.js +53 -0
  101. package/dist/features/auth/schemas/firestore.js +1 -0
  102. package/dist/features/blog/components/BlogFilters.js +1 -1
  103. package/dist/features/cart/schemas/firestore.d.ts +1 -1
  104. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  105. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  106. package/dist/features/events/components/EventFilters.js +2 -0
  107. package/dist/features/homepage/components/WelcomeSection.js +2 -2
  108. package/dist/features/layout/BackToTop.d.ts +9 -5
  109. package/dist/features/layout/BackToTop.js +17 -21
  110. package/dist/features/layout/TitleBarLayout.d.ts +2 -2
  111. package/dist/features/layout/TitleBarLayout.js +4 -4
  112. package/dist/features/media/AvatarUpload.js +7 -3
  113. package/dist/features/media/MediaVideo.js +1 -1
  114. package/dist/features/media/finalize.d.ts +9 -13
  115. package/dist/features/media/finalize.js +23 -74
  116. package/dist/features/media/server.d.ts +1 -1
  117. package/dist/features/media/server.js +1 -1
  118. package/dist/features/orders/actions/refund-actions.js +1 -0
  119. package/dist/features/orders/hooks/useOrders.js +16 -4
  120. package/dist/features/orders/schemas/firestore.d.ts +19 -5
  121. package/dist/features/payments/schemas/firestore.d.ts +2 -2
  122. package/dist/features/pre-orders/components/PreOrdersListView.js +7 -0
  123. package/dist/features/products/components/ArtStickersListView.js +5 -0
  124. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -1
  125. package/dist/features/products/components/ProductForm.js +14 -1
  126. package/dist/features/products/components/ProductsIndexPageView.js +7 -0
  127. package/dist/features/products/constants/action-defs.d.ts +29 -3
  128. package/dist/features/products/constants/action-defs.js +77 -1
  129. package/dist/features/products/schemas/firestore.d.ts +1 -1
  130. package/dist/features/products/schemas/product-templates.d.ts +1 -1
  131. package/dist/features/products/types/index.d.ts +4 -0
  132. package/dist/features/scams/schemas/index.js +2 -2
  133. package/dist/features/search/components/Search.js +3 -3
  134. package/dist/features/seller/components/SellerAuctionsView.js +27 -2
  135. package/dist/features/seller/components/SellerOrdersView.js +2 -2
  136. package/dist/features/seller/components/SellerPayoutsView.js +24 -10
  137. package/dist/features/seller/components/SellerPreOrdersView.js +12 -4
  138. package/dist/features/seller/components/SellerPrizeDrawsView.js +23 -5
  139. package/dist/features/seller/components/SellerProductShell.d.ts +2 -0
  140. package/dist/features/seller/components/SellerProductShell.js +1 -1
  141. package/dist/features/seller/components/SellerProductsView.js +8 -6
  142. package/dist/features/seller/components/SellerReviewsView.js +27 -6
  143. package/dist/features/seller/components/index.d.ts +0 -2
  144. package/dist/features/seller/components/index.js +0 -1
  145. package/dist/features/stores/components/StoreListingsGuideView.js +2 -1
  146. package/dist/features/stores/components/StoreProductsView.js +1 -1
  147. package/dist/features/stores/schemas/firestore.d.ts +11 -0
  148. package/dist/features/stores/schemas/firestore.js +5 -0
  149. package/dist/features/stores/schemas/index.d.ts +2 -2
  150. package/dist/features/tester/actions/checklist-item-actions.d.ts +6 -0
  151. package/dist/features/tester/actions/checklist-item-actions.js +2 -0
  152. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +13 -2
  153. package/dist/features/tester/components/AdminTesterFeedbackListView.js +2 -1
  154. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +9 -5
  155. package/dist/features/tester/components/TesterHubView.js +34 -21
  156. package/dist/features/tester/repository/tester-checklist-item.repository.js +1 -0
  157. package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +18 -4
  158. package/dist/features/tester/repository/tester-checklist-response.repository.js +43 -8
  159. package/dist/features/tester/schemas/firestore.d.ts +8 -3
  160. package/dist/features/tester/schemas/firestore.js +6 -0
  161. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +21 -9
  162. package/dist/features/tester/utils/phases.d.ts +31 -0
  163. package/dist/features/tester/utils/phases.js +46 -0
  164. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +1 -1
  165. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +10 -1
  166. package/dist/features/whatsapp-bot/helpers/whatsapp.js +47 -0
  167. package/dist/features/whatsapp-bot/types/index.d.ts +20 -1
  168. package/dist/features/wishlist/types/index.d.ts +3 -0
  169. package/dist/index.d.ts +15 -6
  170. package/dist/index.js +19 -9
  171. package/dist/next/components/NotFoundView.js +2 -1
  172. package/dist/next/routing/route-map.d.ts +6 -12
  173. package/dist/next/routing/route-map.js +3 -4
  174. package/dist/providers/db-firebase/admin.d.ts +1 -0
  175. package/dist/providers/db-firebase/admin.js +1 -1
  176. package/dist/repositories/index.d.ts +2 -0
  177. package/dist/repositories/index.js +1 -0
  178. package/dist/schemas/registry.d.ts +2 -2
  179. package/dist/seed/addresses-seed-data.js +18 -18
  180. package/dist/seed/bids-seed-data.js +4 -4
  181. package/dist/seed/blog-posts-seed-data.js +82 -82
  182. package/dist/seed/carousel-slides-seed-data.js +14 -10
  183. package/dist/seed/carousels-seed-data.js +3 -3
  184. package/dist/seed/cart-seed-data.js +92 -92
  185. package/dist/seed/claimed-coupons-seed-data.js +10 -10
  186. package/dist/seed/conversations-seed-data.js +75 -75
  187. package/dist/seed/coupon-usage-seed-data.js +12 -12
  188. package/dist/seed/coupons-seed-data.js +41 -41
  189. package/dist/seed/events-seed-data.js +105 -105
  190. package/dist/seed/grouped-listings-seed-data.d.ts +2 -137
  191. package/dist/seed/grouped-listings-seed-data.js +79 -143
  192. package/dist/seed/history-seed-data.js +38 -38
  193. package/dist/seed/homepage-sections-seed-data.js +9 -9
  194. package/dist/seed/notifications-seed-data.js +56 -56
  195. package/dist/seed/offers-seed-data.js +91 -91
  196. package/dist/seed/orders-seed-data.js +121 -106
  197. package/dist/seed/payouts-seed-data.js +42 -42
  198. package/dist/seed/products-auctions-seed-data.js +10 -2
  199. package/dist/seed/products-standard-seed-data.js +40 -8
  200. package/dist/seed/reviews-seed-data.js +42 -23
  201. package/dist/seed/scammers-seed-data.js +22 -22
  202. package/dist/seed/sessions-seed-data.js +7 -7
  203. package/dist/seed/shipments-seed-data.js +10 -10
  204. package/dist/seed/site-settings-seed-data.js +89 -0
  205. package/dist/seed/store-addresses-seed-data.js +2 -2
  206. package/dist/seed/store-extensions-seed-data.js +93 -93
  207. package/dist/seed/stores-seed-data.js +2 -0
  208. package/dist/seed/support-tickets-seed-data.js +47 -47
  209. package/dist/seed/users-seed-data.js +55 -89
  210. package/dist/seed/wishlists-seed-data.js +22 -22
  211. package/dist/server.d.ts +4 -3
  212. package/dist/server.js +7 -7
  213. package/dist/styles.css +1 -1
  214. package/dist/tailwind-utilities.css +1 -1
  215. package/dist/ui/components/PageLoader.js +8 -3
  216. package/dist/ui/components/Select.d.ts +8 -1
  217. package/dist/ui/components/Select.js +2 -2
  218. package/dist/ui/components/SiteMark.d.ts +23 -0
  219. package/dist/ui/components/SiteMark.js +76 -0
  220. package/dist/ui/index.d.ts +2 -0
  221. package/dist/ui/index.js +1 -0
  222. package/dist/validation/schemas.d.ts +0 -2
  223. package/dist/validation/schemas.js +0 -2
  224. package/package.json +1 -1
  225. package/scripts/seed-cli.mjs +17 -15
@@ -1,164 +1,100 @@
1
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.
2
+ * WHY: Seeds groupedListingstheme groups (horizontal "you might also like" scrollers
3
+ * linking related listings on the detail page, no pricing semantics). See SB-UNI-V in
4
+ * appkit/src/features/grouped/schemas/firestore.ts: this collection was re-scoped away
5
+ * from the old bundle/pricing shape (bundlePrice/originalPrice/discountPercent) — pricing
6
+ * bundles now live on the categories collection with categoryType:"bundle" (SB-UNI-D, see
7
+ * categories-seed-data.ts's bundleRows).
8
+ * WHAT: 3 theme groups over the real Beyblade catalog (products-standard-seed-data.ts —
9
+ * currently the only standard products seeded). Rewritten 2026-08-19: the previous version
10
+ * of this file exported ProductDocument-shaped rows (isGroupParent/groupChildSlugs) that
11
+ * (a) referenced product slugs that don't exist anywhere in seed data, and (b) were written
12
+ * to the groupedListings collection despite not matching GroupedListingDocument's shape at
13
+ * all — a stale leftover from before the SB-UNI-V re-scope.
4
14
  *
5
15
  * EXPORTS:
6
- * groupedListingsSeedData — Array of 3 grouped product parents with isGroupParent:true and groupChildSlugs[]
16
+ * groupedListingsSeedData — Array of GroupedListingDocument for seed runner
7
17
  *
8
- * @tag domain:products,bundles
18
+ * @tag domain:products,grouped
9
19
  * @tag layer:seed
10
20
  * @tag pattern:none
11
21
  * @tag access:server-only
12
22
  * @tag consumers:seed/index.ts,seed/runner.ts
13
23
  * @tag sideEffects:none
14
24
  */
15
- import { PRODUCT_FIELDS } from "../constants/field-names";
16
25
  import { seedExtMedia } from "./_helpers/media";
17
- // Card ID mappings for YGOPRODECK image API
18
- const CARD_IDS = {
19
- blueEyesWhiteDragon: 89631139,
20
- kaibaTin: 89631139,
21
- potOfGreed: 55144522,
22
- };
23
- const _rawGroupedListingsSeedData = [
24
- // ────────────────────────────────────────────────────────────────────────────
25
- // Group 1: LOB Booster Box with single pack + promo
26
- // Parent: product-lob-booster-box-sealed (full box)
27
- // Children: product-lob-booster-pack (single), product-lob-special-promo-harpie-lady (promo)
28
- // ────────────────────────────────────────────────────────────────────────────
26
+ const NOW = new Date();
27
+ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
28
+ export const groupedListingsSeedData = [
29
29
  {
30
- id: "group-lob-booster-box",
31
- storeId: "store-kaiba-corp-cards",
32
- brandSlug: "brand-konami",
33
- title: "LOB Booster BoxComplete Sealed Box (24 Packs)",
34
- slug: "group-lob-booster-box",
35
- 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.",
36
- price: 9999,
37
- currency: "INR",
38
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
39
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
40
- listingType: "standard",
41
- categorySlugs: ["category-booster-boxes", "category-sealed-products"],
42
- images: [
43
- seedExtMedia(`https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`),
30
+ id: "group-beyblade-original-lineage",
31
+ slug: "group-beyblade-original-lineage",
32
+ title: "Original Series Lineage",
33
+ description: "Dranzer S and Driger V the original-generation Beyblades that started it all.",
34
+ productIds: [
35
+ "product-beyblade-original-dranzer-s",
36
+ "product-beyblade-original-driger-v",
44
37
  ],
45
- stockQuantity: 1,
46
- isSold: false,
47
- availableQuantity: 1,
48
- customFields: [],
49
- customSections: [],
50
- featured: false,
51
- isPromoted: false,
52
- isOnSale: false,
53
- isGroupParent: true,
54
- groupId: "group-lob-booster-box",
55
- groupTitle: "LOB Booster Box & Components",
56
- groupChildSlugs: [
57
- "product-lob-booster-pack",
58
- "product-lob-special-promo-harpie-lady",
59
- ],
60
- card: {
61
- setName: "Legend of Blue Eyes White Dragon",
62
- setYear: 1999,
63
- rarity: "Mixed",
64
- language: "en",
65
- },
66
- createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
67
- updatedAt: new Date(),
38
+ coverImage: seedExtMedia("https://picsum.photos/seed/group-beyblade-original-lineage-20260101/1200/900"),
39
+ groupTheme: "lineage",
40
+ minActiveMembers: 2,
41
+ activeMemberCount: 2,
42
+ visibilityStatus: "visible",
43
+ isActive: true,
44
+ isFeatured: true,
45
+ storeId: "store-beyblade-arena",
46
+ brandSlug: "brand-beyblade",
47
+ categorySlug: "category-spinning-tops",
48
+ createdBy: "user-admin-letitrip",
49
+ createdAt: daysAgo(20),
50
+ updatedAt: daysAgo(5),
68
51
  },
69
- // ────────────────────────────────────────────────────────────────────────────
70
- // Group 2: Kaiba Structure Deck with singles + trap
71
- // Parent: product-kaiba-starter-deck (full deck)
72
- // Children: product-blue-eyes-white-dragon-sdk (key pull), product-shrink-sdk (foil tech), product-the-dragon-dwelling-in-cave (budget filler)
73
- // ────────────────────────────────────────────────────────────────────────────
74
52
  {
75
- id: "group-kaiba-structure-deck",
76
- storeId: "store-kaiba-corp-cards",
77
- brandSlug: "brand-konami",
78
- title: "Starter Deck: KaibaComplete Sealed Deck",
79
- slug: "group-kaiba-structure-deck",
80
- description: "Starter Deck: Kaiba — complete sealed deck in original packaging. Buy the full deck or select key singles like Blue-Eyes White Dragon separately.",
81
- price: 1999,
82
- currency: "INR",
83
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
84
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
85
- listingType: "standard",
86
- categorySlugs: ["category-starter-structure", "category-sealed-products"],
87
- images: [
88
- seedExtMedia(`https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.kaibaTin}.jpg`),
89
- ],
90
- stockQuantity: 3,
91
- isSold: false,
92
- availableQuantity: 3,
93
- customFields: [],
94
- customSections: [],
95
- featured: false,
96
- isPromoted: false,
97
- isOnSale: false,
98
- isGroupParent: true,
99
- groupId: "group-kaiba-structure-deck",
100
- groupTitle: "Kaiba Starter Deck & Key Singles",
101
- groupChildSlugs: [
102
- "sublisting-blue-eyes-sdk",
103
- "product-shrink-sdk",
104
- "product-the-dragon-dwelling-in-cave",
53
+ id: "group-beyblade-metal-fusion-set",
54
+ slug: "group-beyblade-metal-fusion-set",
55
+ title: "Metal Fusion Rivals",
56
+ description: "Storm Pegasus and Flame Sagittario the classic Metal Fight Beyblade rivalry, same set.",
57
+ productIds: [
58
+ "product-beyblade-metal-storm-pegasus",
59
+ "product-beyblade-metal-flame-sagittario",
105
60
  ],
106
- card: {
107
- setName: "Starter Deck Kaiba",
108
- setYear: 2002,
109
- rarity: "Mixed",
110
- language: "en",
111
- },
112
- createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
113
- updatedAt: new Date(),
61
+ coverImage: seedExtMedia("https://picsum.photos/seed/group-beyblade-metal-fusion-set-20260101/1200/900"),
62
+ groupTheme: "set",
63
+ minActiveMembers: 2,
64
+ activeMemberCount: 2,
65
+ visibilityStatus: "visible",
66
+ isActive: true,
67
+ isFeatured: false,
68
+ storeId: "store-beyblade-arena",
69
+ brandSlug: "brand-beyblade",
70
+ categorySlug: "category-spinning-tops",
71
+ createdBy: "user-admin-letitrip",
72
+ createdAt: daysAgo(18),
73
+ updatedAt: daysAgo(4),
114
74
  },
115
- // ────────────────────────────────────────────────────────────────────────────
116
- // Group 3: POTD Booster Box with single pack + promo
117
- // Parent: product-potd-booster-box (full box)
118
- // Children: product-potd-booster-pack-single (single pack), product-elemental-hero-neos (pull promo)
119
- // ────────────────────────────────────────────────────────────────────────────
120
75
  {
121
- id: "group-potd-booster-box",
122
- storeId: "store-kaiba-corp-cards",
123
- brandSlug: "brand-konami",
124
- title: "POTD Booster Box Complete Sealed Box (24 Packs)",
125
- slug: "group-potd-booster-box",
126
- 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.",
127
- price: 8999,
128
- currency: "INR",
129
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
130
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
131
- listingType: "standard",
132
- categorySlugs: ["category-booster-boxes", "category-sealed-products"],
133
- images: [
134
- seedExtMedia(`https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`),
135
- ],
136
- stockQuantity: 2,
137
- isSold: false,
138
- availableQuantity: 2,
139
- customFields: [],
140
- customSections: [],
141
- featured: false,
142
- isPromoted: false,
143
- isOnSale: false,
144
- isGroupParent: true,
145
- groupId: "group-potd-booster-box",
146
- groupTitle: "POTD Booster Box & Components",
147
- groupChildSlugs: [
148
- "product-potd-booster-pack-single",
149
- "product-elemental-hero-neos",
76
+ id: "group-beyblade-burst-x-related",
77
+ slug: "group-beyblade-burst-x-related",
78
+ title: "Burst & X Attackers You Might Like",
79
+ description: "Top-tier attack-type Beyblades across the Burst and X eras.",
80
+ productIds: [
81
+ "product-beyblade-burst-valkyrie",
82
+ "product-beyblade-burst-regalia-genesis",
83
+ "product-beyblade-x-wizard-arrow",
84
+ "product-beyblade-x-knife-shinobi",
150
85
  ],
151
- card: {
152
- setName: "Power of the Duelist",
153
- setYear: 2005,
154
- rarity: "Mixed",
155
- language: "en",
156
- },
157
- createdAt: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
158
- updatedAt: new Date(),
86
+ coverImage: seedExtMedia("https://picsum.photos/seed/group-beyblade-burst-x-related-20260101/1200/900"),
87
+ groupTheme: "related",
88
+ minActiveMembers: 2,
89
+ activeMemberCount: 4,
90
+ visibilityStatus: "visible",
91
+ isActive: true,
92
+ isFeatured: false,
93
+ storeId: "store-beyblade-arena",
94
+ brandSlug: "brand-beyblade",
95
+ categorySlug: "category-spinning-tops",
96
+ createdBy: "user-admin-letitrip",
97
+ createdAt: daysAgo(15),
98
+ updatedAt: daysAgo(3),
159
99
  },
160
100
  ];
161
- export const groupedListingsSeedData = _rawGroupedListingsSeedData.map((p) => ({
162
- ...p,
163
- listingType: "standard",
164
- }));
@@ -1,6 +1,6 @@
1
1
  /*
2
- * WHY: Seeds browse history for YGO marketplace — one doc per user, FIFO-capped at 50, newest-first.
3
- * WHAT: 3 history docs (Yugi 15 items, Kaiba 8 items, Admin 10 items). All productIds reference YGO seed products.
2
+ * WHY: Seeds browse history for the Beyblade marketplace — one doc per user, FIFO-capped at 50, newest-first.
3
+ * WHAT: 3 history docs (Rehan 15 items, Vivaan 8 items, Admin 10 items). All productIds reference the real Beyblade seed products.
4
4
  *
5
5
  * EXPORTS:
6
6
  * historySeedData — Array of HistorySeedDocument for seed runner
@@ -25,46 +25,46 @@ function makeDoc(userId, items) {
25
25
  };
26
26
  }
27
27
  export const historySeedData = [
28
- // Yugi: 15 recently viewed — mix of all listing types from Kaiba's store
28
+ // Rehan: 15 recently viewed — mix of all listing types from Beyblade Arena
29
29
  makeDoc("user-yugi-muto", [
30
- { productId: "product-dark-magician-lob-1st", productType: "product", viewedAt: hoursAgo(1) },
31
- { productId: "product-dark-magician-girl-ioc", productType: "product", viewedAt: hoursAgo(2) },
32
- { productId: "auction-blue-eyes-lob-1st-psa10", productType: "auction", viewedAt: hoursAgo(4) },
33
- { productId: "product-monster-reborn-lob", productType: "product", viewedAt: hoursAgo(6) },
34
- { productId: "product-pot-of-greed-lob", productType: "product", viewedAt: hoursAgo(8) },
35
- { productId: "product-kuriboh-mrd", productType: "product", viewedAt: hoursAgo(12) },
36
- { productId: "product-mirror-force-mrd", productType: "product", viewedAt: hoursAgo(18) },
37
- { productId: "product-lob-booster-pack", productType: "product", viewedAt: daysAgo(1) },
38
- { productId: "product-yugi-starter-deck", productType: "product", viewedAt: daysAgo(1) },
39
- { productId: "auction-dark-magician-girl-psa9", productType: "auction", viewedAt: daysAgo(2) },
40
- { productId: "preorder-25th-anniversary-lob", productType: "preorder", viewedAt: daysAgo(2) },
41
- { productId: "product-black-luster-soldier", productType: "product", viewedAt: daysAgo(3) },
42
- { productId: "product-chaos-emperor-dragon", productType: "product", viewedAt: daysAgo(4) },
43
- { productId: "product-elemental-hero-neos", productType: "product", viewedAt: daysAgo(5) },
44
- { productId: "product-cyber-dragon-dp1", productType: "product", viewedAt: daysAgo(6) },
30
+ { productId: "product-beyblade-original-dranzer-s", productType: "product", viewedAt: hoursAgo(1) },
31
+ { productId: "product-beyblade-original-driger-v", productType: "product", viewedAt: hoursAgo(2) },
32
+ { productId: "auction-beyblade-original-dragoon-storm", productType: "auction", viewedAt: hoursAgo(4) },
33
+ { productId: "product-beyblade-metal-flame-sagittario", productType: "product", viewedAt: hoursAgo(6) },
34
+ { productId: "product-beyblade-burst-valkyrie", productType: "product", viewedAt: hoursAgo(8) },
35
+ { productId: "classified-beyblade-stadium-set", productType: "product", viewedAt: hoursAgo(12) },
36
+ { productId: "product-beyblade-metal-storm-pegasus", productType: "product", viewedAt: hoursAgo(18) },
37
+ { productId: "preorder-beyblade-x-bx-08-wave", productType: "preorder", viewedAt: daysAgo(1) },
38
+ { productId: "digitalcode-beyblade-x-app-unlock", productType: "product", viewedAt: daysAgo(1) },
39
+ { productId: "auction-beyblade-metal-lightning-l-drago", productType: "auction", viewedAt: daysAgo(2) },
40
+ { productId: "prizedraw-beyblade-mystery-box", productType: "preorder", viewedAt: daysAgo(2) },
41
+ { productId: "product-beyblade-burst-regalia-genesis", productType: "product", viewedAt: daysAgo(3) },
42
+ { productId: "product-beyblade-x-wizard-arrow", productType: "product", viewedAt: daysAgo(4) },
43
+ { productId: "product-beyblade-x-knife-shinobi", productType: "product", viewedAt: daysAgo(5) },
44
+ { productId: "product-beyblade-original-dranzer-s", productType: "product", viewedAt: daysAgo(6) },
45
45
  ]),
46
- // Kaiba: 8 recently viewed — browsing LetItRip Official products
46
+ // Vivaan: 8 recently viewed — browsing Beyblade Arena products
47
47
  makeDoc("user-seto-kaiba", [
48
- { productId: "product-duelist-kingdom-playmat", productType: "product", viewedAt: hoursAgo(2) },
49
- { productId: "product-egyptian-gods-playmat", productType: "product", viewedAt: hoursAgo(5) },
50
- { productId: "product-duel-disk-replica", productType: "product", viewedAt: hoursAgo(10) },
51
- { productId: "product-millennium-puzzle-model", productType: "product", viewedAt: daysAgo(1) },
52
- { productId: "product-kaiba-figure-15cm", productType: "product", viewedAt: daysAgo(1) },
53
- { productId: "product-dark-magician-figure", productType: "product", viewedAt: daysAgo(2) },
54
- { productId: "product-yugi-plush-20cm", productType: "product", viewedAt: daysAgo(3) },
55
- { productId: "product-exodia-art-print", productType: "product", viewedAt: daysAgo(4) },
48
+ { productId: "product-beyblade-x-wizard-arrow", productType: "product", viewedAt: hoursAgo(2) },
49
+ { productId: "product-beyblade-x-knife-shinobi", productType: "product", viewedAt: hoursAgo(5) },
50
+ { productId: "classified-beyblade-stadium-set", productType: "product", viewedAt: hoursAgo(10) },
51
+ { productId: "digitalcode-beyblade-x-app-unlock", productType: "product", viewedAt: daysAgo(1) },
52
+ { productId: "product-beyblade-burst-regalia-genesis", productType: "product", viewedAt: daysAgo(1) },
53
+ { productId: "product-beyblade-metal-storm-pegasus", productType: "product", viewedAt: daysAgo(2) },
54
+ { productId: "product-beyblade-original-driger-v", productType: "product", viewedAt: daysAgo(3) },
55
+ { productId: "product-beyblade-burst-valkyrie", productType: "product", viewedAt: daysAgo(4) },
56
56
  ]),
57
- // Admin: 10 recently viewed — browsing Kaiba's store to review inventory
57
+ // Admin: 10 recently viewed — browsing Beyblade Arena to review inventory
58
58
  makeDoc("user-admin-letitrip", [
59
- { productId: "product-blue-eyes-white-dragon-sdk", productType: "product", viewedAt: hoursAgo(1) },
60
- { productId: "auction-exodia-complete-set-psa9", productType: "auction", viewedAt: hoursAgo(3) },
61
- { productId: "product-raigeki-lob", productType: "product", viewedAt: hoursAgo(6) },
62
- { productId: "product-change-of-heart-mrd", productType: "product", viewedAt: hoursAgo(12) },
63
- { productId: "product-potd-booster-box", productType: "product", viewedAt: daysAgo(1) },
64
- { productId: "product-een-booster-box", productType: "product", viewedAt: daysAgo(1) },
65
- { productId: "product-jaden-yuki-starter", productType: "product", viewedAt: daysAgo(2) },
66
- { productId: "auction-mirror-force-mrd-1st-psa10", productType: "auction", viewedAt: daysAgo(3) },
67
- { productId: "preorder-gx-tournament-pack", productType: "preorder", viewedAt: daysAgo(4) },
68
- { productId: "product-rainbow-dragon", productType: "product", viewedAt: daysAgo(5) },
59
+ { productId: "product-beyblade-metal-storm-pegasus", productType: "product", viewedAt: hoursAgo(1) },
60
+ { productId: "auction-beyblade-original-dragoon-storm", productType: "auction", viewedAt: hoursAgo(3) },
61
+ { productId: "product-beyblade-x-knife-shinobi", productType: "product", viewedAt: hoursAgo(6) },
62
+ { productId: "product-beyblade-burst-valkyrie", productType: "product", viewedAt: hoursAgo(12) },
63
+ { productId: "prizedraw-beyblade-mystery-box", productType: "preorder", viewedAt: daysAgo(1) },
64
+ { productId: "product-beyblade-metal-flame-sagittario", productType: "product", viewedAt: daysAgo(1) },
65
+ { productId: "product-beyblade-x-wizard-arrow", productType: "product", viewedAt: daysAgo(2) },
66
+ { productId: "auction-beyblade-metal-lightning-l-drago", productType: "auction", viewedAt: daysAgo(3) },
67
+ { productId: "preorder-beyblade-x-bx-08-wave", productType: "preorder", viewedAt: daysAgo(4) },
68
+ { productId: "product-beyblade-original-dranzer-s", productType: "product", viewedAt: daysAgo(5) },
69
69
  ]),
70
70
  ];
@@ -165,7 +165,7 @@ export const homepageSectionsSeedData = [
165
165
  updatedAt: daysAgo(2),
166
166
  },
167
167
  {
168
- id: "section-exodia-banner",
168
+ id: "section-beyblade-banner",
169
169
  type: "banner",
170
170
  order: 10,
171
171
  enabled: true,
@@ -369,13 +369,13 @@ export const homepageSectionsSeedData = [
369
369
  updatedAt: daysAgo(2),
370
370
  },
371
371
  {
372
- id: "section-brand-konami",
372
+ id: "section-brand-takara-tomy",
373
373
  type: "products",
374
374
  order: 22,
375
375
  enabled: true,
376
376
  config: {
377
- title: "Konami Official Products",
378
- subtitle: "Official Yu-Gi-Oh! TCG products from Konami",
377
+ title: "Takara-Tomy Official Products",
378
+ subtitle: "Authentic Takara-Tomy Beyblades, direct from Japan",
379
379
  maxProducts: 12,
380
380
  rows: 2,
381
381
  itemsPerRow: 4,
@@ -383,20 +383,20 @@ export const homepageSectionsSeedData = [
383
383
  autoScroll: true,
384
384
  scrollInterval: 5000,
385
385
  loop: true,
386
- filterByBrand: "brand-konami",
386
+ filterByBrand: "brand-takara-tomy",
387
387
  sortBy: "featured",
388
388
  },
389
389
  createdAt: daysAgo(2),
390
390
  updatedAt: daysAgo(2),
391
391
  },
392
392
  {
393
- id: "section-brand-upper-deck",
393
+ id: "section-brand-beyblade",
394
394
  type: "products",
395
395
  order: 23,
396
396
  enabled: true,
397
397
  config: {
398
- title: "Upper Deck Entertainment",
399
- subtitle: "Classic YGO TCG releases from Upper Deck",
398
+ title: "Beyblade Brand Spotlight",
399
+ subtitle: "Original, Metal Fight, Burst, and X — every generation",
400
400
  maxProducts: 12,
401
401
  rows: 2,
402
402
  itemsPerRow: 4,
@@ -404,7 +404,7 @@ export const homepageSectionsSeedData = [
404
404
  autoScroll: true,
405
405
  scrollInterval: 5000,
406
406
  loop: true,
407
- filterByBrand: "brand-upper-deck",
407
+ filterByBrand: "brand-beyblade",
408
408
  sortBy: "featured",
409
409
  },
410
410
  createdAt: daysAgo(2),