@mohasinac/appkit 4.1.0 → 4.1.3

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 (205) 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/maintenance/cloud-logs-data.d.ts +50 -0
  9. package/dist/_internal/server/features/maintenance/cloud-logs-data.js +152 -0
  10. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +4 -12
  11. package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -3
  12. package/dist/_internal/server/jobs/core/onProductWrite.js +14 -2
  13. package/dist/_internal/shared/features/auctions/config.d.ts +1 -1
  14. package/dist/_internal/shared/features/auctions/config.js +1 -1
  15. package/dist/_internal/shared/features/auctions/schema.js +1 -1
  16. package/dist/_internal/shared/features/cart/schema.js +2 -2
  17. package/dist/_internal/shared/features/events/schema.js +1 -1
  18. package/dist/_internal/shared/features/orders/schema.js +1 -1
  19. package/dist/_internal/shared/features/products/schema.js +3 -3
  20. package/dist/_internal/shared/features/promotions/schema.js +3 -3
  21. package/dist/_internal/shared/fees/calculator.d.ts +6 -7
  22. package/dist/client.d.ts +4 -4
  23. package/dist/client.js +4 -2
  24. package/dist/constants/api-endpoints.d.ts +9 -6
  25. package/dist/constants/api-endpoints.js +3 -2
  26. package/dist/contracts/client-payment-gateway.d.ts +1 -2
  27. package/dist/features/about/components/AboutView.d.ts +6 -16
  28. package/dist/features/about/components/AboutView.js +3 -3
  29. package/dist/features/about/index.d.ts +2 -1
  30. package/dist/features/about/schemas/firestore.d.ts +47 -0
  31. package/dist/features/about/schemas/firestore.js +6 -0
  32. package/dist/features/about/schemas/index.d.ts +210 -0
  33. package/dist/features/about/schemas/index.js +45 -0
  34. package/dist/features/account/hooks/useProfile.js +3 -0
  35. package/dist/features/admin/components/AdminCarouselGroupEditorView.d.ts +6 -0
  36. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +50 -0
  37. package/dist/features/admin/components/AdminCartsView.js +16 -3
  38. package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
  39. package/dist/features/admin/components/AdminCouponsView.js +14 -4
  40. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -42
  41. package/dist/features/admin/components/AdminMediaView.js +1 -1
  42. package/dist/features/admin/components/AdminNotificationsView.js +31 -19
  43. package/dist/features/admin/components/AdminOrdersView.js +7 -0
  44. package/dist/features/admin/components/AdminPayoutsView.js +18 -3
  45. package/dist/features/admin/components/AdminProductsView.js +17 -2
  46. package/dist/features/admin/components/AdminReviewsView.js +16 -2
  47. package/dist/features/admin/components/AdminScammersView.js +7 -0
  48. package/dist/features/admin/components/AdminSectionsView.js +4 -0
  49. package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
  50. package/dist/features/admin/components/AdminSiteSettingsView.js +44 -2
  51. package/dist/features/admin/components/AdminStoreEditorView.d.ts +2 -1
  52. package/dist/features/admin/components/AdminStoreEditorView.js +4 -4
  53. package/dist/features/admin/components/AdminStoresView.js +1 -1
  54. package/dist/features/admin/components/AdminSupportTicketDetailView.js +23 -5
  55. package/dist/features/admin/components/AdminSupportTicketsView.js +20 -2
  56. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +4 -1
  57. package/dist/features/admin/components/AdminTesterChecklistView.js +8 -0
  58. package/dist/features/admin/components/index.d.ts +2 -0
  59. package/dist/features/admin/components/index.js +1 -0
  60. package/dist/features/admin/constants/filter-tabs.d.ts +55 -41
  61. package/dist/features/admin/constants/filter-tabs.js +55 -27
  62. package/dist/features/admin/schemas/firestore.d.ts +5 -0
  63. package/dist/features/auctions/actions/bid-actions.js +1 -1
  64. package/dist/features/auctions/components/AuctionDetailPageView.js +2 -2
  65. package/dist/features/auctions/components/AuctionsListView.js +8 -1
  66. package/dist/features/auth/components/LoginForm.js +2 -2
  67. package/dist/features/auth/components/RegisterForm.js +2 -2
  68. package/dist/features/auth/permissions/constants.d.ts +16 -0
  69. package/dist/features/auth/permissions/constants.js +53 -0
  70. package/dist/features/auth/schemas/firestore.js +1 -0
  71. package/dist/features/blog/components/BlogFilters.js +1 -1
  72. package/dist/features/cart/schemas/firestore.d.ts +1 -1
  73. package/dist/features/categories/schemas/firestore.d.ts +1 -1
  74. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  75. package/dist/features/events/components/EventFilters.js +2 -0
  76. package/dist/features/homepage/components/WelcomeSection.js +2 -2
  77. package/dist/features/layout/TitleBarLayout.d.ts +2 -2
  78. package/dist/features/layout/TitleBarLayout.js +4 -4
  79. package/dist/features/media/AvatarUpload.js +7 -3
  80. package/dist/features/media/MediaVideo.js +1 -1
  81. package/dist/features/media/finalize.d.ts +9 -13
  82. package/dist/features/media/finalize.js +23 -74
  83. package/dist/features/media/server.d.ts +1 -1
  84. package/dist/features/media/server.js +1 -1
  85. package/dist/features/orders/hooks/useOrders.js +16 -4
  86. package/dist/features/orders/schemas/firestore.d.ts +5 -5
  87. package/dist/features/payments/schemas/firestore.d.ts +2 -2
  88. package/dist/features/pre-orders/components/PreOrdersListView.js +7 -0
  89. package/dist/features/products/components/ArtStickersListView.js +5 -0
  90. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -1
  91. package/dist/features/products/components/ProductForm.js +14 -1
  92. package/dist/features/products/components/ProductsIndexPageView.js +7 -0
  93. package/dist/features/products/constants/action-defs.d.ts +1 -0
  94. package/dist/features/products/constants/action-defs.js +1 -0
  95. package/dist/features/products/schemas/firestore.d.ts +1 -1
  96. package/dist/features/products/schemas/product-templates.d.ts +1 -1
  97. package/dist/features/products/types/index.d.ts +4 -0
  98. package/dist/features/scams/schemas/index.js +2 -2
  99. package/dist/features/search/components/Search.js +3 -3
  100. package/dist/features/seller/components/SellerAuctionsView.js +27 -2
  101. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  102. package/dist/features/seller/components/SellerPayoutsView.js +24 -10
  103. package/dist/features/seller/components/SellerPreOrdersView.js +12 -4
  104. package/dist/features/seller/components/SellerPrizeDrawsView.js +23 -5
  105. package/dist/features/seller/components/SellerProductShell.d.ts +2 -0
  106. package/dist/features/seller/components/SellerProductShell.js +1 -1
  107. package/dist/features/seller/components/SellerProductsView.js +8 -6
  108. package/dist/features/seller/components/SellerReviewsView.js +27 -6
  109. package/dist/features/seller/components/index.d.ts +0 -2
  110. package/dist/features/seller/components/index.js +0 -1
  111. package/dist/features/stores/components/StoreListingsGuideView.js +2 -1
  112. package/dist/features/stores/components/StoreProductsView.js +1 -1
  113. package/dist/features/stores/schemas/firestore.d.ts +11 -0
  114. package/dist/features/stores/schemas/firestore.js +5 -0
  115. package/dist/features/stores/schemas/index.d.ts +2 -2
  116. package/dist/features/tester/actions/checklist-item-actions.d.ts +6 -0
  117. package/dist/features/tester/actions/checklist-item-actions.js +2 -0
  118. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +13 -2
  119. package/dist/features/tester/components/AdminTesterFeedbackListView.js +2 -1
  120. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +9 -5
  121. package/dist/features/tester/components/TesterHubView.js +34 -21
  122. package/dist/features/tester/repository/tester-checklist-item.repository.js +1 -0
  123. package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +18 -4
  124. package/dist/features/tester/repository/tester-checklist-response.repository.js +43 -8
  125. package/dist/features/tester/schemas/firestore.d.ts +8 -3
  126. package/dist/features/tester/schemas/firestore.js +6 -0
  127. package/dist/features/tester/seed-data/bids-tester-seed-data.d.ts +2 -0
  128. package/dist/features/tester/seed-data/bids-tester-seed-data.js +37 -0
  129. package/dist/features/tester/seed-data/coupons-tester-seed-data.d.ts +2 -0
  130. package/dist/features/tester/seed-data/coupons-tester-seed-data.js +76 -0
  131. package/dist/features/tester/seed-data/events-tester-seed-data.js +50 -2
  132. package/dist/features/tester/seed-data/index.d.ts +3 -0
  133. package/dist/features/tester/seed-data/index.js +3 -0
  134. package/dist/features/tester/seed-data/orders-tester-seed-data.d.ts +2 -0
  135. package/dist/features/tester/seed-data/orders-tester-seed-data.js +265 -0
  136. package/dist/features/tester/seed-data/products-tester-seed-data.js +213 -8
  137. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +294 -12
  138. package/dist/features/tester/utils/phases.d.ts +31 -0
  139. package/dist/features/tester/utils/phases.js +46 -0
  140. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +1 -1
  141. package/dist/features/whatsapp-bot/types/index.d.ts +1 -1
  142. package/dist/features/wishlist/types/index.d.ts +3 -0
  143. package/dist/index.d.ts +11 -4
  144. package/dist/index.js +15 -7
  145. package/dist/next/api/routeHandler.js +6 -10
  146. package/dist/next/components/NotFoundView.js +2 -1
  147. package/dist/next/routing/route-map.d.ts +4 -12
  148. package/dist/next/routing/route-map.js +2 -4
  149. package/dist/providers/db-firebase/admin.d.ts +1 -0
  150. package/dist/providers/db-firebase/admin.js +1 -1
  151. package/dist/schemas/registry.d.ts +2 -2
  152. package/dist/seed/addresses-seed-data.js +18 -18
  153. package/dist/seed/bids-seed-data.js +4 -4
  154. package/dist/seed/blog-posts-seed-data.js +82 -82
  155. package/dist/seed/carousel-slides-seed-data.js +14 -10
  156. package/dist/seed/carousels-seed-data.js +3 -3
  157. package/dist/seed/cart-seed-data.js +92 -92
  158. package/dist/seed/claimed-coupons-seed-data.js +10 -10
  159. package/dist/seed/conversations-seed-data.js +75 -75
  160. package/dist/seed/coupon-usage-seed-data.js +12 -12
  161. package/dist/seed/coupons-seed-data.js +41 -41
  162. package/dist/seed/events-seed-data.js +105 -105
  163. package/dist/seed/grouped-listings-seed-data.d.ts +2 -137
  164. package/dist/seed/grouped-listings-seed-data.js +79 -143
  165. package/dist/seed/history-seed-data.js +38 -38
  166. package/dist/seed/homepage-sections-seed-data.js +9 -9
  167. package/dist/seed/index.d.ts +1 -1
  168. package/dist/seed/index.js +1 -1
  169. package/dist/seed/manifest.js +4 -4
  170. package/dist/seed/notifications-seed-data.js +56 -56
  171. package/dist/seed/offers-seed-data.js +91 -91
  172. package/dist/seed/orders-seed-data.js +125 -106
  173. package/dist/seed/payouts-seed-data.js +42 -42
  174. package/dist/seed/products-auctions-seed-data.js +10 -2
  175. package/dist/seed/products-classifieds-seed-data.js +48 -5
  176. package/dist/seed/products-digital-codes-seed-data.js +48 -5
  177. package/dist/seed/products-live-items-seed-data.js +6 -1
  178. package/dist/seed/products-prize-draws-seed-data.js +58 -5
  179. package/dist/seed/products-standard-seed-data.js +40 -8
  180. package/dist/seed/reviews-seed-data.js +42 -23
  181. package/dist/seed/scammers-seed-data.js +22 -22
  182. package/dist/seed/sessions-seed-data.js +7 -7
  183. package/dist/seed/shipments-seed-data.js +10 -10
  184. package/dist/seed/site-settings-seed-data.js +82 -0
  185. package/dist/seed/store-addresses-seed-data.js +2 -2
  186. package/dist/seed/store-extensions-seed-data.js +93 -93
  187. package/dist/seed/stores-seed-data.js +2 -0
  188. package/dist/seed/support-tickets-seed-data.js +47 -47
  189. package/dist/seed/users-seed-data.js +55 -89
  190. package/dist/seed/wishlists-seed-data.js +22 -22
  191. package/dist/server.d.ts +2 -1
  192. package/dist/server.js +5 -5
  193. package/dist/styles.css +1 -1
  194. package/dist/tailwind-utilities.css +1 -1
  195. package/dist/ui/components/PageLoader.js +8 -3
  196. package/dist/ui/components/Select.d.ts +8 -1
  197. package/dist/ui/components/Select.js +2 -2
  198. package/dist/ui/components/SiteMark.d.ts +23 -0
  199. package/dist/ui/components/SiteMark.js +76 -0
  200. package/dist/ui/index.d.ts +2 -0
  201. package/dist/ui/index.js +1 -0
  202. package/dist/validation/schemas.d.ts +0 -2
  203. package/dist/validation/schemas.js +0 -2
  204. package/package.json +1 -1
  205. package/scripts/seed-cli.mjs +27 -19
@@ -1,5 +1,5 @@
1
1
  /*
2
- * WHY: Seeds support tickets for YGO marketplace — 8 tickets across all statuses.
2
+ * WHY: Seeds support tickets for the Beyblade marketplace — 8 tickets across all statuses.
3
3
  * WHAT: open (2), in_progress (2), waiting_on_user (1), resolved (2), closed (1).
4
4
  *
5
5
  * EXPORTS:
@@ -26,19 +26,19 @@ export const supportTicketsSeedData = [
26
26
  {
27
27
  id: "ticket-yugi-order-001",
28
28
  userId: "user-yugi-muto",
29
- userEmail: "yugi.muto@example.com",
30
- userDisplayName: "Yugi Muto",
29
+ userEmail: "rehan.sheikh@example.com",
30
+ userDisplayName: "Mock User 3",
31
31
  category: "order_issue",
32
32
  subject: "Order delivered but item is missing from the box",
33
- description: "I received order #order-1-20260515-abc123 but the Dark Magician LOB card was not inside — only the outer packaging and bubble wrap were present. Please help.",
33
+ description: "I received order #order-1-20260515-abc123 but the Beyblade Original Dranzer S was not inside — only the outer packaging and bubble wrap were present. Please help.",
34
34
  orderId: "order-1-20260515-abc123",
35
35
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.IN_PROGRESS,
36
36
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.HIGH,
37
37
  assignedTo: "user-admin-letitrip",
38
- assignedToName: "LetItRip Admin",
38
+ assignedToName: "Mock User 1",
39
39
  messages: [
40
- msg("msg-yugi-001-u1", "user-yugi-muto", "user", "I received my order but the card was missing! The seal was broken on arrival.", 5),
41
- msg("msg-yugi-001-s1", "user-admin-letitrip", "support", "Hi Yugi, we're sorry to hear this. I've raised a claim with the courier. Could you please share a photo of the packaging?", 4),
40
+ msg("msg-yugi-001-u1", "user-yugi-muto", "user", "I received my order but the beyblade was missing! The seal was broken on arrival.", 5),
41
+ msg("msg-yugi-001-s1", "user-admin-letitrip", "support", "Hi Rehan, we're sorry to hear this. I've raised a claim with the courier. Could you please share a photo of the packaging?", 4),
42
42
  msg("msg-yugi-001-u2", "user-yugi-muto", "user", "Photos attached. The outer tape was clearly cut and resealed.", 3),
43
43
  ],
44
44
  createdAt: daysBack(5),
@@ -48,11 +48,11 @@ export const supportTicketsSeedData = [
48
48
  {
49
49
  id: "ticket-yugi-refund-001",
50
50
  userId: "user-yugi-muto",
51
- userEmail: "yugi.muto@example.com",
52
- userDisplayName: "Yugi Muto",
51
+ userEmail: "rehan.sheikh@example.com",
52
+ userDisplayName: "Mock User 3",
53
53
  category: "refund_request",
54
54
  subject: "Requesting refund for cancelled pre-order",
55
- description: "I placed a pre-order for the Konami 25th Anniversary Rarity Collection 3 months ago. The store has now closed. I would like a full refund of ₹3,999.",
55
+ description: "I placed a pre-order for the Beyblade X BX-08 wave 3 months ago. The store has now closed. I would like a full refund of ₹899.",
56
56
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.OPEN,
57
57
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.NORMAL,
58
58
  messages: [
@@ -65,18 +65,18 @@ export const supportTicketsSeedData = [
65
65
  {
66
66
  id: "ticket-kaiba-account-001",
67
67
  userId: "user-seto-kaiba",
68
- userEmail: "seto.kaiba@example.com",
69
- userDisplayName: "Seto Kaiba",
68
+ userEmail: "vivaan.kapoor@example.com",
69
+ userDisplayName: "Mock User 2",
70
70
  category: "account",
71
71
  subject: "Cannot log in — OTP not arriving on new phone number",
72
- description: "I changed my phone number and now OTP for login is going to the old number. I cannot access my seller dashboard.",
72
+ description: "I changed my phone number and now OTP for login is going to the old number. I cannot access my account.",
73
73
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.WAITING_ON_USER,
74
74
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.NORMAL,
75
75
  assignedTo: "user-admin-letitrip",
76
- assignedToName: "LetItRip Admin",
76
+ assignedToName: "Mock User 1",
77
77
  messages: [
78
78
  msg("msg-kaiba-001-u1", "user-seto-kaiba", "user", "I'm locked out. My old number is no longer active.", 7),
79
- msg("msg-kaiba-001-s1", "user-admin-letitrip", "support", "Hi Kaiba, to verify ownership we need your registered email and last 4 digits of the payment card used on this account. Please reply here.", 6),
79
+ msg("msg-kaiba-001-s1", "user-admin-letitrip", "support", "Hi Vivaan, to verify ownership we need your registered email and last 4 digits of the payment card used on this account. Please reply here.", 6),
80
80
  ],
81
81
  createdAt: daysBack(7),
82
82
  updatedAt: daysBack(6),
@@ -85,19 +85,19 @@ export const supportTicketsSeedData = [
85
85
  {
86
86
  id: "ticket-yugi-dispute-001",
87
87
  userId: "user-yugi-muto",
88
- userEmail: "yugi.muto@example.com",
89
- userDisplayName: "Yugi Muto",
88
+ userEmail: "rehan.sheikh@example.com",
89
+ userDisplayName: "Mock User 3",
90
90
  category: "listing_dispute",
91
- subject: "Product description says near mint but card is heavily played",
92
- description: "The Mirror Force MRD 1st Edition I received is scratched and has edge wear. The listing said near mint. I want to return it.",
91
+ subject: "Product description says mint but tip is heavily worn",
92
+ description: "The Beyblade Metal Storm Pegasus I received has a rounded, sanded-down tip and scratches on the layer. The listing said mint condition. I want to return it.",
93
93
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.RESOLVED,
94
94
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.NORMAL,
95
95
  assignedTo: "user-admin-letitrip",
96
- assignedToName: "LetItRip Admin",
96
+ assignedToName: "Mock User 1",
97
97
  messages: [
98
- msg("msg-yugi-003-u1", "user-yugi-muto", "user", "The card is clearly not near mint. Here are photos showing the scratches and whitening.", 12),
99
- msg("msg-yugi-003-s1", "user-admin-letitrip", "support", "Thank you for the photos Yugi. We've contacted the seller and initiated a return + full refund.", 11),
100
- msg("msg-yugi-003-s2", "user-admin-letitrip", "support", "Refund of ₹15,000 has been processed back to your original payment method. This ticket is now resolved.", 8),
98
+ msg("msg-yugi-003-u1", "user-yugi-muto", "user", "The tip is clearly not mint. Here are photos showing the wear and scratches.", 12),
99
+ msg("msg-yugi-003-s1", "user-admin-letitrip", "support", "Thank you for the photos Rehan. We've contacted the seller and initiated a return + full refund.", 11),
100
+ msg("msg-yugi-003-s2", "user-admin-letitrip", "support", "Refund of ₹2,499 has been processed back to your original payment method. This ticket is now resolved.", 8),
101
101
  ],
102
102
  resolvedAt: daysBack(8),
103
103
  createdAt: daysBack(12),
@@ -107,16 +107,16 @@ export const supportTicketsSeedData = [
107
107
  {
108
108
  id: "ticket-yugi-auction-001",
109
109
  userId: "user-yugi-muto",
110
- userEmail: "yugi.muto@example.com",
111
- userDisplayName: "Yugi Muto",
110
+ userEmail: "rehan.sheikh@example.com",
111
+ userDisplayName: "Mock User 3",
112
112
  category: "auction_dispute",
113
- subject: "Winning bid was removed from Blue-Eyes auction",
114
- description: "I won the Blue-Eyes White Dragon LOB 1st Ed PSA 10 auction but my winning bid was removed without explanation.",
113
+ subject: "Winning bid was removed from Dragoon Storm auction",
114
+ description: "I won the Beyblade Original Dragoon Storm auction but my winning bid was removed without explanation.",
115
115
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.CLOSED,
116
116
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.LOW,
117
117
  messages: [
118
118
  msg("msg-yugi-004-u1", "user-yugi-muto", "user", "My winning bid was cancelled. I have a screenshot.", 20),
119
- msg("msg-yugi-004-s1", "user-admin-letitrip", "support", "Hi Yugi, after reviewing the auction logs we found a duplicate bid was submitted. The correct winning bid remains active. No action needed.", 18),
119
+ msg("msg-yugi-004-s1", "user-admin-letitrip", "support", "Hi Rehan, after reviewing the auction logs we found a duplicate bid was submitted. The correct winning bid remains active. No action needed.", 18),
120
120
  msg("msg-yugi-004-u2", "user-yugi-muto", "user", "Understood, thanks for clarifying.", 17),
121
121
  ],
122
122
  closedAt: daysBack(17),
@@ -127,15 +127,15 @@ export const supportTicketsSeedData = [
127
127
  {
128
128
  id: "ticket-kaiba-general-001",
129
129
  userId: "user-seto-kaiba",
130
- userEmail: "seto.kaiba@example.com",
131
- userDisplayName: "Seto Kaiba",
130
+ userEmail: "vivaan.kapoor@example.com",
131
+ userDisplayName: "Mock User 2",
132
132
  category: "general",
133
- subject: "How do I list graded slabs with PSA verification?",
134
- description: "I want to list my PSA 10 Blue-Eyes White Dragon with the PSA cert number visible and verified. What are the steps?",
133
+ subject: "How do I list a sealed limited-edition beyblade?",
134
+ description: "I want to list my sealed limited-edition Metal Lightning L-Drago with the authenticity certificate visible and verified. What are the steps?",
135
135
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.OPEN,
136
136
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.LOW,
137
137
  messages: [
138
- msg("msg-kaiba-002-u1", "user-seto-kaiba", "user", "I've read the FAQ but couldn't find the exact grading verification requirements for PSA slabs.", 1),
138
+ msg("msg-kaiba-002-u1", "user-seto-kaiba", "user", "I've read the FAQ but couldn't find the exact authenticity verification requirements for sealed pieces.", 1),
139
139
  ],
140
140
  createdAt: daysBack(1),
141
141
  updatedAt: daysBack(1),
@@ -144,19 +144,19 @@ export const supportTicketsSeedData = [
144
144
  {
145
145
  id: "ticket-yugi-fraud-001",
146
146
  userId: "user-yugi-muto",
147
- userEmail: "yugi.muto@example.com",
148
- userDisplayName: "Yugi Muto",
147
+ userEmail: "rehan.sheikh@example.com",
148
+ userDisplayName: "Mock User 3",
149
149
  category: "scam_report",
150
150
  subject: "Seller sent empty box and is now unreachable",
151
- description: "I paid ₹8,499 for a Dark Magician Girl IOC 1st Edition via Razorpay. The seller from Kaiba Corp has not responded in 7 days and the tracking shows the box was 200g — way too light for a graded slab.",
151
+ description: "I paid ₹2,999 for a Beyblade Burst Regalia Genesis via Razorpay. The seller has not responded in 7 days and the tracking shows the box was 40g — way too light for a sealed spinner.",
152
152
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.RESOLVED,
153
153
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.HIGH,
154
154
  assignedTo: "user-admin-letitrip",
155
- assignedToName: "LetItRip Admin",
155
+ assignedToName: "Mock User 1",
156
156
  messages: [
157
- msg("msg-yugi-005-u1", "user-yugi-muto", "user", "I have the weight receipt from Delhivery. 200g is impossible for a graded slab. The seller is not replying on messages or phone.", 10),
158
- msg("msg-yugi-005-s1", "user-admin-letitrip", "support", "Hi Yugi, I have escalated this to our admin team for review as it qualifies as a potential fraud case. You will hear back within 24 hours.", 9),
159
- msg("msg-yugi-005-a1", "user-admin-letitrip", "support", "Hi Yugi, this is the LetItRip admin. I have reviewed the shipment weight log and the seller communication history. We are initiating a full refund of ₹8,499 under our buyer protection policy. The seller account has been suspended pending investigation.", 8),
157
+ msg("msg-yugi-005-u1", "user-yugi-muto", "user", "I have the weight receipt from Delhivery. 40g is impossible for a sealed beyblade. The seller is not replying on messages or phone.", 10),
158
+ msg("msg-yugi-005-s1", "user-admin-letitrip", "support", "Hi Rehan, I have escalated this to our admin team for review as it qualifies as a potential fraud case. You will hear back within 24 hours.", 9),
159
+ msg("msg-yugi-005-a1", "user-admin-letitrip", "support", "Hi Rehan, this is the LetItRip admin. I have reviewed the shipment weight log and the seller communication history. We are initiating a full refund of ₹2,999 under our buyer protection policy. The seller account has been suspended pending investigation.", 8),
160
160
  msg("msg-yugi-005-u2", "user-yugi-muto", "user", "Thank you so much. I really appreciate the quick escalation.", 7),
161
161
  ],
162
162
  resolvedAt: daysBack(7),
@@ -167,18 +167,18 @@ export const supportTicketsSeedData = [
167
167
  {
168
168
  id: "ticket-kaiba-ban-appeal-001",
169
169
  userId: "user-seto-kaiba",
170
- userEmail: "seto.kaiba@example.com",
171
- userDisplayName: "Seto Kaiba",
170
+ userEmail: "vivaan.kapoor@example.com",
171
+ userDisplayName: "Mock User 2",
172
172
  category: "account",
173
- subject: "My store was suspended — I believe it was a mistake",
174
- description: "My store Kaiba Corp Card Vault was suspended 2 days ago. I received no email explanation. I have 100% positive reviews and have never violated any policy. Please review.",
173
+ subject: "My account was flagged — I believe it was a mistake",
174
+ description: "My account was flagged 2 days ago. I received no email explanation. I have never violated any policy. Please review.",
175
175
  status: SUPPORT_TICKET_FIELDS.STATUS_VALUES.IN_PROGRESS,
176
176
  priority: SUPPORT_TICKET_FIELDS.PRIORITY_VALUES.HIGH,
177
177
  assignedTo: "user-admin-letitrip",
178
- assignedToName: "LetItRip Admin",
178
+ assignedToName: "Mock User 1",
179
179
  messages: [
180
- msg("msg-kaiba-003-u1", "user-seto-kaiba", "user", "I run a legitimate business. I have verified reviews and never had a single complaint. Please explain the suspension.", 2),
181
- msg("msg-kaiba-003-a1", "user-admin-letitrip", "support", "Hi Kaiba, your store was suspended as part of an automatic fraud flag triggered by a buyer report. I am manually reviewing your transaction history and the specific report. Please share your business GST number and a copy of your most recent bank statement showing the Razorpay settlements for verification.", 1),
180
+ msg("msg-kaiba-003-u1", "user-seto-kaiba", "user", "I'm a legitimate buyer. I have a clean order history and never had a single complaint. Please explain the flag.", 2),
181
+ msg("msg-kaiba-003-a1", "user-admin-letitrip", "support", "Hi Vivaan, your account was flagged as part of an automatic fraud check triggered by an unusual login pattern. I am manually reviewing your account history. Please share the last 4 digits of the card used for your most recent Razorpay payment for verification.", 1),
182
182
  ],
183
183
  createdAt: daysBack(2),
184
184
  updatedAt: daysBack(1),
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * WHY: Provides 18 seed user accounts covering all marketplace roles and demographics.
3
- * WHAT: Exports 18 UserDocument partials — 1 admin, 7 sellers (store owners, one of which
4
- * is also the dedicated isTester QA account), 10 buyers.
3
+ * WHAT: Exports 18 UserDocument partials — 1 admin, 2 sellers (store owners, one of which
4
+ * is also the dedicated isTester QA account), 15 buyers.
5
5
  * All passwords are TempPass123! in the Firebase Auth emulator. UIDs match slugs.
6
6
  *
7
7
  * EXPORTS:
@@ -27,10 +27,10 @@ export const usersSeedData = [
27
27
  email: "admin@letitrip.in",
28
28
  phoneNumber: `${_ph}9999900000`,
29
29
  phoneVerified: true,
30
- displayName: "LetItRip Admin",
31
- photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
30
+ displayName: "Mock User 1",
31
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-letitrip-admin-20260101/400/400"),
32
32
  avatarMetadata: {
33
- url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
33
+ url: seedExtMedia("https://picsum.photos/seed/user-avatar-letitrip-admin-20260101/400/400"),
34
34
  position: { x: 50, y: 50 },
35
35
  zoom: 1.0,
36
36
  },
@@ -46,10 +46,10 @@ export const usersSeedData = [
46
46
  showPhone: false,
47
47
  showOrders: false,
48
48
  showWishlist: false,
49
- bio: "LetItRip platform administrator. India's largest YGO collectibles marketplace.",
49
+ bio: "LetItRip platform administrator. India's largest collectibles marketplace.",
50
50
  location: "Mumbai, Maharashtra",
51
51
  storeName: "LetItRip Official",
52
- storeCategory: "trading-cards",
52
+ storeCategory: "spinning-tops",
53
53
  },
54
54
  stats: { totalOrders: 20, auctionsWon: 2, itemsSold: 200, reviewsCount: 0 },
55
55
  metadata: {
@@ -60,38 +60,29 @@ export const usersSeedData = [
60
60
  createdAt: daysAgo(400),
61
61
  updatedAt: daysAgo(1),
62
62
  },
63
- // ── Seller: Seto Kaiba (also acts as buyer bids on admin's auctions) ──────
63
+ // ── Buyer: Mock User 2 (rival tournament bladerwas a seller persona, now a
64
+ // high-spend buyer/collector; the platform only has 2 real seller stores) ──
64
65
  {
65
66
  uid: "user-seto-kaiba",
66
- email: "kaiba@kaibalandmark.in",
67
+ email: "vivaan.kapoor@gmail.com",
67
68
  phoneNumber: `${_ph}9999900001`,
68
69
  phoneVerified: true,
69
- displayName: "Seto Kaiba",
70
- photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
71
- avatarMetadata: {
72
- url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
73
- position: { x: 50, y: 50 },
74
- zoom: 1.0,
75
- },
76
- role: USER_FIELDS.ROLE_VALUES.SELLER,
70
+ displayName: "Mock User 2",
71
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-vivaan-kapoor-20260101/400/400"),
72
+ role: USER_FIELDS.ROLE_VALUES.USER,
77
73
  emailVerified: true,
78
74
  disabled: false,
79
- storeId: "store-kaiba-corp-cards",
80
- storeSlug: "store-kaiba-corp-cards",
81
- storeStatus: "approved",
82
75
  publicProfile: {
83
76
  isPublic: true,
84
77
  showEmail: false,
85
78
  showPhone: false,
86
79
  showOrders: false,
87
80
  showWishlist: false,
88
- bio: "CEO of Kaiba Corp. Collector and seller of authenticated YGO cards. Blue-Eyes White Dragon enthusiast.",
89
- location: "Domino City",
90
- socialLinks: { instagram: "https://instagram.com/kaibacorp" },
91
- storeName: "Kaiba Corp Card Vault",
92
- storeCategory: "trading-cards",
81
+ bio: "Beyblade collector and rival tournament blader. Always hunting the next limited edition to add to my vault.",
82
+ location: "Nagpur, Maharashtra",
83
+ socialLinks: { instagram: "https://instagram.com/vivaan.beyblade" },
93
84
  },
94
- stats: { totalOrders: 20, auctionsWon: 3, itemsSold: 580, reviewsCount: 35 },
85
+ stats: { totalOrders: 20, auctionsWon: 3, itemsSold: 0, reviewsCount: 35 },
95
86
  metadata: {
96
87
  lastSignInTime: daysAgo(1),
97
88
  creationTime: daysAgo(350).toISOString(),
@@ -100,19 +91,14 @@ export const usersSeedData = [
100
91
  createdAt: daysAgo(350),
101
92
  updatedAt: daysAgo(1),
102
93
  },
103
- // ── Buyer: Yugi Muto (pure buyer) ───────────────────────────────────────────
94
+ // ── Buyer: Mock User 3 (Beyblade stadium champion, pure buyer) ─────────────
104
95
  {
105
96
  uid: "user-yugi-muto",
106
- email: "yugi@duelkingdom.in",
97
+ email: "rehan.sheikh@gmail.com",
107
98
  phoneNumber: `${_ph}9999900002`,
108
99
  phoneVerified: true,
109
- displayName: "Yugi Muto",
110
- photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
111
- avatarMetadata: {
112
- url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
113
- position: { x: 50, y: 50 },
114
- zoom: 1.0,
115
- },
100
+ displayName: "Mock User 3",
101
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-rehan-sheikh-20260101/400/400"),
116
102
  role: USER_FIELDS.ROLE_VALUES.USER,
117
103
  emailVerified: true,
118
104
  disabled: false,
@@ -122,9 +108,9 @@ export const usersSeedData = [
122
108
  showPhone: false,
123
109
  showOrders: false,
124
110
  showWishlist: false,
125
- bio: "King of Games. Duelist from Domino City. Collecting the cards of destiny.",
126
- location: "Domino City",
127
- socialLinks: { instagram: "https://instagram.com/yugi.duelkingdom" },
111
+ bio: "Beyblade stadium champion undefeated in 40+ local tournaments. Chasing limited-edition Takara-Tomy launchers and vintage originals.",
112
+ location: "Indore, Madhya Pradesh",
113
+ socialLinks: { instagram: "https://instagram.com/rehan.letitrip" },
128
114
  },
129
115
  stats: { totalOrders: 30, auctionsWon: 5, itemsSold: 0, reviewsCount: 20 },
130
116
  metadata: {
@@ -135,62 +121,52 @@ export const usersSeedData = [
135
121
  createdAt: daysAgo(300),
136
122
  updatedAt: daysAgo(2),
137
123
  },
138
- // ── Seller: Ash (Pokémon Palace owner) ──────────────────────────────────────
124
+ // ── Buyer: Ash (Pokémon + collectibles enthusiast) ──────────────────────────
139
125
  {
140
126
  uid: "user-ash-trainer",
141
127
  email: "ash@pokemonpalace.in",
142
128
  phoneNumber: `${_ph}9999900003`,
143
129
  phoneVerified: true,
144
- displayName: "Ash Ketchum",
130
+ displayName: "Mock User 4",
145
131
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ash-ketchum-20260101/400/400"),
146
- role: USER_FIELDS.ROLE_VALUES.SELLER,
132
+ role: USER_FIELDS.ROLE_VALUES.USER,
147
133
  emailVerified: true,
148
134
  disabled: false,
149
- storeId: "store-pokemon-palace",
150
- storeSlug: "store-pokemon-palace",
151
- storeStatus: "approved",
152
135
  publicProfile: {
153
136
  isPublic: true,
154
137
  showEmail: false,
155
138
  showPhone: false,
156
139
  showOrders: false,
157
140
  showWishlist: false,
158
- bio: "Pokémon Master and TCG collector. Running Pokémon Palace from Bengaluru.",
141
+ bio: "Pokémon Master and collectibles enthusiast from Bengaluru. Always chasing the next rare pull.",
159
142
  location: "Bengaluru, Karnataka",
160
- storeName: "Pokémon Palace",
161
- storeCategory: "trading-cards",
162
143
  },
163
- stats: { totalOrders: 5, auctionsWon: 1, itemsSold: 120, reviewsCount: 8 },
144
+ stats: { totalOrders: 5, auctionsWon: 1, itemsSold: 0, reviewsCount: 8 },
164
145
  metadata: { lastSignInTime: daysAgo(3), creationTime: daysAgo(200).toISOString(), loginCount: 90 },
165
146
  createdAt: daysAgo(200),
166
147
  updatedAt: daysAgo(3),
167
148
  },
168
- // ── Seller: Priya (CardGame Hub owner) ──────────────────────────────────────
149
+ // ── Buyer: Priya (multi-TCG collector) ──────────────────────────────────────
169
150
  {
170
151
  uid: "user-priya-cards",
171
152
  email: "priya@cardgamehub.in",
172
153
  phoneNumber: `${_ph}9999900004`,
173
154
  phoneVerified: true,
174
- displayName: "Priya Sharma",
155
+ displayName: "Mock User 5",
175
156
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-priya-sharma-20260101/400/400"),
176
- role: USER_FIELDS.ROLE_VALUES.SELLER,
157
+ role: USER_FIELDS.ROLE_VALUES.USER,
177
158
  emailVerified: true,
178
159
  disabled: false,
179
- storeId: "store-cardgame-hub",
180
- storeSlug: "store-cardgame-hub",
181
- storeStatus: "approved",
182
160
  publicProfile: {
183
161
  isPublic: true,
184
162
  showEmail: false,
185
163
  showPhone: false,
186
164
  showOrders: false,
187
165
  showWishlist: false,
188
- bio: "TCG enthusiast and tournament organizer from Hyderabad. Multi-TCG specialist.",
166
+ bio: "TCG enthusiast and tournament organizer from Hyderabad. Multi-TCG collector.",
189
167
  location: "Hyderabad, Telangana",
190
- storeName: "CardGame Hub",
191
- storeCategory: "trading-cards",
192
168
  },
193
- stats: { totalOrders: 3, auctionsWon: 0, itemsSold: 85, reviewsCount: 4 },
169
+ stats: { totalOrders: 3, auctionsWon: 0, itemsSold: 0, reviewsCount: 4 },
194
170
  metadata: { lastSignInTime: daysAgo(5), creationTime: daysAgo(180).toISOString(), loginCount: 60 },
195
171
  createdAt: daysAgo(180),
196
172
  updatedAt: daysAgo(5),
@@ -201,7 +177,7 @@ export const usersSeedData = [
201
177
  email: "tyson@beybladearena.in",
202
178
  phoneNumber: `${_ph}9999900006`,
203
179
  phoneVerified: true,
204
- displayName: "Tyson Granger",
180
+ displayName: "Mock User 6",
205
181
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-tyson-granger-20260101/400/400"),
206
182
  role: USER_FIELDS.ROLE_VALUES.SELLER,
207
183
  emailVerified: true,
@@ -225,62 +201,52 @@ export const usersSeedData = [
225
201
  createdAt: daysAgo(150),
226
202
  updatedAt: daysAgo(4),
227
203
  },
228
- // ── Seller: Megumi (Tokyo Toys India owner) ────────────────────────────────
204
+ // ── Buyer: Megumi (anime figure + model kit collector) ─────────────────────
229
205
  {
230
206
  uid: "user-megumi-figures",
231
207
  email: "megumi@tokyotoys.in",
232
208
  phoneNumber: `${_ph}9999900007`,
233
209
  phoneVerified: true,
234
- displayName: "Megumi Tanaka",
210
+ displayName: "Mock User 7",
235
211
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-megumi-tanaka-20260101/400/400"),
236
- role: USER_FIELDS.ROLE_VALUES.SELLER,
212
+ role: USER_FIELDS.ROLE_VALUES.USER,
237
213
  emailVerified: true,
238
214
  disabled: false,
239
- storeId: "store-tokyo-toys-india",
240
- storeSlug: "store-tokyo-toys-india",
241
- storeStatus: "approved",
242
215
  publicProfile: {
243
216
  isPublic: true,
244
217
  showEmail: false,
245
218
  showPhone: false,
246
219
  showOrders: false,
247
220
  showWishlist: false,
248
- bio: "Direct imports from Akihabara. Authentic anime figures and model kits, no bootlegs.",
221
+ bio: "Anime figure and model kit collector from Pune. Always on the hunt for authentic imports.",
249
222
  location: "Pune, Maharashtra",
250
- storeName: "Tokyo Toys India",
251
- storeCategory: "action-figures",
252
223
  },
253
- stats: { totalOrders: 2, auctionsWon: 0, itemsSold: 65, reviewsCount: 3 },
224
+ stats: { totalOrders: 2, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
254
225
  metadata: { lastSignInTime: daysAgo(2), creationTime: daysAgo(120).toISOString(), loginCount: 55 },
255
226
  createdAt: daysAgo(120),
256
227
  updatedAt: daysAgo(2),
257
228
  },
258
- // ── Seller: Amuro (Gundam Galaxy owner) ─────────────────────────────────────
229
+ // ── Buyer: Amuro (Gunpla builder) ───────────────────────────────────────────
259
230
  {
260
231
  uid: "user-amuro-builder",
261
232
  email: "amuro@gundamgalaxy.in",
262
233
  phoneNumber: `${_ph}9999900008`,
263
234
  phoneVerified: true,
264
- displayName: "Amuro Ray",
235
+ displayName: "Mock User 8",
265
236
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-amuro-ray-20260101/400/400"),
266
- role: USER_FIELDS.ROLE_VALUES.SELLER,
237
+ role: USER_FIELDS.ROLE_VALUES.USER,
267
238
  emailVerified: true,
268
239
  disabled: false,
269
- storeId: "store-gundam-galaxy",
270
- storeSlug: "store-gundam-galaxy",
271
- storeStatus: "approved",
272
240
  publicProfile: {
273
241
  isPublic: true,
274
242
  showEmail: false,
275
243
  showPhone: false,
276
244
  showOrders: false,
277
245
  showWishlist: false,
278
- bio: "Gunpla builder since 2005. Over 200 kits built. Importing from Bandai Hobby distributors.",
246
+ bio: "Gunpla builder since 2005. Over 200 kits built. Collects Bandai Hobby imports.",
279
247
  location: "Kolkata, West Bengal",
280
- storeName: "Gundam Galaxy",
281
- storeCategory: "model-kits",
282
248
  },
283
- stats: { totalOrders: 1, auctionsWon: 0, itemsSold: 42, reviewsCount: 2 },
249
+ stats: { totalOrders: 1, auctionsWon: 0, itemsSold: 0, reviewsCount: 2 },
284
250
  metadata: { lastSignInTime: daysAgo(6), creationTime: daysAgo(90).toISOString(), loginCount: 35 },
285
251
  createdAt: daysAgo(90),
286
252
  updatedAt: daysAgo(6),
@@ -291,7 +257,7 @@ export const usersSeedData = [
291
257
  email: "ananya.patel@gmail.com",
292
258
  phoneNumber: `${_ph}9999900009`,
293
259
  phoneVerified: true,
294
- displayName: "Ananya Patel",
260
+ displayName: "Mock User 9",
295
261
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ananya-patel-20260101/400/400"),
296
262
  role: USER_FIELDS.ROLE_VALUES.USER,
297
263
  emailVerified: true,
@@ -316,7 +282,7 @@ export const usersSeedData = [
316
282
  email: "vikram.hw@gmail.com",
317
283
  phoneNumber: `${_ph}9999900010`,
318
284
  phoneVerified: true,
319
- displayName: "Vikram Singh",
285
+ displayName: "Mock User 10",
320
286
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-vikram-singh-20260101/400/400"),
321
287
  role: USER_FIELDS.ROLE_VALUES.USER,
322
288
  emailVerified: true,
@@ -341,7 +307,7 @@ export const usersSeedData = [
341
307
  email: "meera.blader@gmail.com",
342
308
  phoneNumber: `${_ph}9999900011`,
343
309
  phoneVerified: true,
344
- displayName: "Meera Nair",
310
+ displayName: "Mock User 11",
345
311
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-meera-nair-20260101/400/400"),
346
312
  role: USER_FIELDS.ROLE_VALUES.USER,
347
313
  emailVerified: true,
@@ -366,7 +332,7 @@ export const usersSeedData = [
366
332
  email: "arjun.builder@gmail.com",
367
333
  phoneNumber: `${_ph}9999900012`,
368
334
  phoneVerified: true,
369
- displayName: "Arjun Reddy",
335
+ displayName: "Mock User 12",
370
336
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-arjun-reddy-20260101/400/400"),
371
337
  role: USER_FIELDS.ROLE_VALUES.USER,
372
338
  emailVerified: true,
@@ -391,7 +357,7 @@ export const usersSeedData = [
391
357
  email: "sneha.vintage@gmail.com",
392
358
  phoneNumber: `${_ph}9999900013`,
393
359
  phoneVerified: true,
394
- displayName: "Sneha Gupta",
360
+ displayName: "Mock User 13",
395
361
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-sneha-gupta-20260101/400/400"),
396
362
  role: USER_FIELDS.ROLE_VALUES.USER,
397
363
  emailVerified: true,
@@ -416,7 +382,7 @@ export const usersSeedData = [
416
382
  email: "rohit.collect@gmail.com",
417
383
  phoneNumber: `${_ph}9999900014`,
418
384
  phoneVerified: true,
419
- displayName: "Rohit Agarwal",
385
+ displayName: "Mock User 14",
420
386
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-rohit-agarwal-20260101/400/400"),
421
387
  role: USER_FIELDS.ROLE_VALUES.USER,
422
388
  emailVerified: true,
@@ -441,7 +407,7 @@ export const usersSeedData = [
441
407
  email: "divya.funko@gmail.com",
442
408
  phoneNumber: `${_ph}9999900015`,
443
409
  phoneVerified: true,
444
- displayName: "Divya Menon",
410
+ displayName: "Mock User 15",
445
411
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-divya-menon-20260101/400/400"),
446
412
  role: USER_FIELDS.ROLE_VALUES.USER,
447
413
  emailVerified: true,
@@ -466,7 +432,7 @@ export const usersSeedData = [
466
432
  email: "karthik.new@gmail.com",
467
433
  phoneNumber: `${_ph}9999900016`,
468
434
  phoneVerified: false,
469
- displayName: "Karthik Iyer",
435
+ displayName: "Mock User 16",
470
436
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-karthik-iyer-20260101/400/400"),
471
437
  role: USER_FIELDS.ROLE_VALUES.USER,
472
438
  emailVerified: true,
@@ -491,7 +457,7 @@ export const usersSeedData = [
491
457
  email: "neha.op@gmail.com",
492
458
  phoneNumber: `${_ph}9999900017`,
493
459
  phoneVerified: true,
494
- displayName: "Neha Joshi",
460
+ displayName: "Mock User 17",
495
461
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-neha-joshi-20260101/400/400"),
496
462
  role: USER_FIELDS.ROLE_VALUES.USER,
497
463
  emailVerified: true,
@@ -516,7 +482,7 @@ export const usersSeedData = [
516
482
  email: "tester@letitrip.in",
517
483
  phoneNumber: `${_ph}9999900018`,
518
484
  phoneVerified: true,
519
- displayName: "QA Tester",
485
+ displayName: "Mock User 18",
520
486
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-qa-tester-20260101/400/400"),
521
487
  role: USER_FIELDS.ROLE_VALUES.SELLER,
522
488
  isTester: true,
@@ -1,6 +1,6 @@
1
1
  /*
2
- * WHY: Seeds wishlists for YGO marketplace — one doc per user, max 20 items, newest-first.
3
- * WHAT: 3 wishlists (Yugi 8 items, Kaiba 5 items, Admin 4 items). All productIds reference YGO seed products.
2
+ * WHY: Seeds wishlists for the Beyblade marketplace — one doc per user, max 20 items, newest-first.
3
+ * WHAT: 3 wishlists (Rehan 8 items, Vivaan 5 items, Admin 4 items). All productIds reference the real Beyblade seed products.
4
4
  *
5
5
  * EXPORTS:
6
6
  * wishlistsSeedData — Array of WishlistSeedDocument for seed runner
@@ -25,30 +25,30 @@ function makeDoc(userId, items) {
25
25
  };
26
26
  }
27
27
  export const wishlistsSeedData = [
28
- // Yugi: 8 items — mix of standard + auctions from Kaiba's store
28
+ // Rehan: 8 items — mix of standard + auctions from Beyblade Arena
29
29
  makeDoc("user-yugi-muto", [
30
- { productId: "product-dark-magician-lob-1st", productType: "product", addedAt: daysAgo(14) },
31
- { productId: "product-dark-magician-girl-ioc", productType: "product", addedAt: daysAgo(12) },
32
- { productId: "product-black-luster-soldier", productType: "product", addedAt: daysAgo(10) },
33
- { productId: "auction-blue-eyes-lob-1st-psa10", productType: "auction", addedAt: daysAgo(8) },
34
- { productId: "product-monster-reborn-lob", productType: "product", addedAt: daysAgo(6) },
35
- { productId: "product-pot-of-greed-lob", productType: "product", addedAt: daysAgo(4) },
36
- { productId: "auction-dark-magician-girl-psa9", productType: "auction", addedAt: daysAgo(3) },
37
- { productId: "preorder-25th-anniversary-lob", productType: "preorder", addedAt: daysAgo(1) },
30
+ { productId: "product-beyblade-original-dranzer-s", productType: "product", addedAt: daysAgo(14) },
31
+ { productId: "product-beyblade-original-driger-v", productType: "product", addedAt: daysAgo(12) },
32
+ { productId: "product-beyblade-metal-flame-sagittario", productType: "product", addedAt: daysAgo(10) },
33
+ { productId: "auction-beyblade-original-dragoon-storm", productType: "auction", addedAt: daysAgo(8) },
34
+ { productId: "product-beyblade-burst-valkyrie", productType: "product", addedAt: daysAgo(6) },
35
+ { productId: "product-beyblade-metal-storm-pegasus", productType: "product", addedAt: daysAgo(4) },
36
+ { productId: "auction-beyblade-metal-lightning-l-drago", productType: "auction", addedAt: daysAgo(3) },
37
+ { productId: "preorder-beyblade-x-bx-08-wave", productType: "preorder", addedAt: daysAgo(1) },
38
38
  ]),
39
- // Kaiba: 5 items from LetItRip Official (Kaiba as buyer)
39
+ // Vivaan: 5 items from Beyblade Arena (Vivaan as buyer)
40
40
  makeDoc("user-seto-kaiba", [
41
- { productId: "product-duelist-kingdom-playmat", productType: "product", addedAt: daysAgo(10) },
42
- { productId: "product-egyptian-gods-playmat", productType: "product", addedAt: daysAgo(7) },
43
- { productId: "product-duel-disk-replica", productType: "product", addedAt: daysAgo(5) },
44
- { productId: "product-millennium-puzzle-model", productType: "product", addedAt: daysAgo(3) },
45
- { productId: "product-kaiba-figure-15cm", productType: "product", addedAt: daysAgo(1) },
41
+ { productId: "product-beyblade-x-wizard-arrow", productType: "product", addedAt: daysAgo(10) },
42
+ { productId: "product-beyblade-x-knife-shinobi", productType: "product", addedAt: daysAgo(7) },
43
+ { productId: "classified-beyblade-stadium-set", productType: "product", addedAt: daysAgo(5) },
44
+ { productId: "digitalcode-beyblade-x-app-unlock", productType: "product", addedAt: daysAgo(3) },
45
+ { productId: "product-beyblade-burst-regalia-genesis", productType: "product", addedAt: daysAgo(1) },
46
46
  ]),
47
- // Admin: 4 items — mix from Kaiba's store (Admin as buyer)
47
+ // Admin: 4 items — mix from Beyblade Arena (Admin as buyer)
48
48
  makeDoc("user-admin-letitrip", [
49
- { productId: "product-chaos-emperor-dragon", productType: "product", addedAt: daysAgo(20) },
50
- { productId: "auction-exodia-complete-set-psa9", productType: "auction", addedAt: daysAgo(15) },
51
- { productId: "product-rainbow-dragon", productType: "product", addedAt: daysAgo(8) },
52
- { productId: "preorder-gx-tournament-pack", productType: "preorder", addedAt: daysAgo(2) },
49
+ { productId: "product-beyblade-metal-storm-pegasus", productType: "product", addedAt: daysAgo(20) },
50
+ { productId: "auction-beyblade-original-dragoon-storm", productType: "auction", addedAt: daysAgo(15) },
51
+ { productId: "product-beyblade-burst-valkyrie", productType: "product", addedAt: daysAgo(8) },
52
+ { productId: "preorder-beyblade-x-bx-08-wave", productType: "preorder", addedAt: daysAgo(2) },
53
53
  ]),
54
54
  ];