@mohasinac/appkit 2.7.53 → 2.7.55

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 (197) 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/_internal/server/jobs/runtime/adapters/firebase.js +5 -14
  9. package/dist/_internal/shared/actions/action-registry.js +827 -4
  10. package/dist/_internal/shared/features/events/schema.d.ts +4 -4
  11. package/dist/client.d.ts +2 -0
  12. package/dist/client.js +1 -0
  13. package/dist/constants/api-endpoints.d.ts +3 -0
  14. package/dist/constants/api-endpoints.js +1 -0
  15. package/dist/constants/field-names.d.ts +4 -3
  16. package/dist/constants/field-names.js +8 -8
  17. package/dist/errors/error-codes.d.ts +3 -0
  18. package/dist/errors/error-codes.js +3 -0
  19. package/dist/errors/messages.d.ts +3 -0
  20. package/dist/errors/messages.js +3 -0
  21. package/dist/features/account/components/UserOffersPanel.js +2 -1
  22. package/dist/features/admin/components/AdminAllEventEntriesView.js +4 -3
  23. package/dist/features/admin/components/AdminBidsView.js +5 -3
  24. package/dist/features/admin/components/AdminBlogView.js +3 -2
  25. package/dist/features/admin/components/AdminBrandsView.js +2 -1
  26. package/dist/features/admin/components/AdminBundleEditorView.js +4 -5
  27. package/dist/features/admin/components/AdminBundlesView.js +3 -3
  28. package/dist/features/admin/components/AdminCarouselView.d.ts +2 -1
  29. package/dist/features/admin/components/AdminCarouselView.js +14 -5
  30. package/dist/features/admin/components/AdminCategoriesView.js +2 -1
  31. package/dist/features/admin/components/AdminContactView.d.ts +4 -1
  32. package/dist/features/admin/components/AdminContactView.js +27 -7
  33. package/dist/features/admin/components/AdminCouponsView.d.ts +3 -1
  34. package/dist/features/admin/components/AdminCouponsView.js +17 -3
  35. package/dist/features/admin/components/AdminFaqsView.d.ts +3 -1
  36. package/dist/features/admin/components/AdminFaqsView.js +18 -4
  37. package/dist/features/admin/components/AdminFeaturesView.js +2 -1
  38. package/dist/features/admin/components/AdminMediaView.js +3 -2
  39. package/dist/features/admin/components/AdminNavigationView.js +3 -2
  40. package/dist/features/admin/components/AdminNewsletterView.d.ts +2 -1
  41. package/dist/features/admin/components/AdminNewsletterView.js +13 -4
  42. package/dist/features/admin/components/AdminNotificationsView.js +6 -4
  43. package/dist/features/admin/components/AdminOrdersView.js +4 -3
  44. package/dist/features/admin/components/AdminPayoutsView.js +2 -2
  45. package/dist/features/admin/components/AdminPrizeDrawsView.js +2 -1
  46. package/dist/features/admin/components/AdminProductsView.js +3 -3
  47. package/dist/features/admin/components/AdminReviewsView.js +4 -3
  48. package/dist/features/admin/components/AdminScammersView.js +2 -1
  49. package/dist/features/admin/components/AdminSessionsView.js +5 -3
  50. package/dist/features/admin/components/AdminStoresView.js +2 -2
  51. package/dist/features/admin/components/AdminSublistingCategoriesView.d.ts +5 -1
  52. package/dist/features/admin/components/AdminSublistingCategoriesView.js +12 -3
  53. package/dist/features/admin/components/AdminSupportTicketsView.js +2 -1
  54. package/dist/features/admin/components/AdminTeamView.d.ts +2 -1
  55. package/dist/features/admin/components/AdminTeamView.js +13 -4
  56. package/dist/features/admin/components/AdminUsersView.js +2 -2
  57. package/dist/features/admin/types/product.types.d.ts +1 -1
  58. package/dist/features/admin/types/product.types.js +2 -3
  59. package/dist/features/auctions/actions/bid-actions.d.ts +9 -0
  60. package/dist/features/auctions/actions/bid-actions.js +61 -0
  61. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +2 -1
  62. package/dist/features/auctions/components/AuctionDetailPageView.js +5 -4
  63. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +3 -1
  64. package/dist/features/auctions/components/PlaceBidFormClient.js +32 -2
  65. package/dist/features/auctions/types/index.d.ts +1 -1
  66. package/dist/features/layout/AppLayoutShell.js +1 -1
  67. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -11
  68. package/dist/features/products/api/[id]/route.js +4 -8
  69. package/dist/features/products/api/route.js +1 -3
  70. package/dist/features/products/components/AuctionsIndexListing.js +3 -11
  71. package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -10
  72. package/dist/features/products/components/ProductFilters.d.ts +33 -9
  73. package/dist/features/products/components/ProductFilters.js +6 -29
  74. package/dist/features/products/components/ProductForm.js +2 -3
  75. package/dist/features/products/constants/action-defs.d.ts +86 -7
  76. package/dist/features/products/constants/action-defs.js +99 -7
  77. package/dist/features/products/constants/sieve.d.ts +162 -0
  78. package/dist/features/products/constants/sieve.js +95 -0
  79. package/dist/features/products/repository/products.repository.d.ts +5 -0
  80. package/dist/features/products/repository/products.repository.js +23 -3
  81. package/dist/features/products/schemas/firestore.d.ts +4 -4
  82. package/dist/features/products/schemas/firestore.js +2 -3
  83. package/dist/features/products/schemas/index.d.ts +6 -6
  84. package/dist/features/products/schemas/index.js +2 -6
  85. package/dist/features/products/types/index.d.ts +1 -1
  86. package/dist/features/seller/actions/offer-actions.js +2 -2
  87. package/dist/features/seller/components/QuickProductForm.d.ts +13 -0
  88. package/dist/features/seller/components/QuickProductForm.js +50 -0
  89. package/dist/features/seller/components/SellerAuctionsView.d.ts +4 -1
  90. package/dist/features/seller/components/SellerAuctionsView.js +37 -3
  91. package/dist/features/seller/components/SellerBidsView.js +2 -1
  92. package/dist/features/seller/components/SellerBundlesView.d.ts +3 -1
  93. package/dist/features/seller/components/SellerBundlesView.js +38 -5
  94. package/dist/features/seller/components/SellerClassifiedView.d.ts +3 -1
  95. package/dist/features/seller/components/SellerClassifiedView.js +37 -4
  96. package/dist/features/seller/components/SellerDigitalCodesView.d.ts +3 -1
  97. package/dist/features/seller/components/SellerDigitalCodesView.js +37 -4
  98. package/dist/features/seller/components/SellerGoogleReviewsView.js +2 -1
  99. package/dist/features/seller/components/SellerGroupedListingsView.js +3 -2
  100. package/dist/features/seller/components/SellerLiveView.d.ts +3 -1
  101. package/dist/features/seller/components/SellerLiveView.js +37 -4
  102. package/dist/features/seller/components/SellerOffersPanel.js +2 -1
  103. package/dist/features/seller/components/SellerOffersView.d.ts +4 -1
  104. package/dist/features/seller/components/SellerOffersView.js +8 -3
  105. package/dist/features/seller/components/SellerPayoutsView.d.ts +3 -1
  106. package/dist/features/seller/components/SellerPayoutsView.js +7 -3
  107. package/dist/features/seller/components/SellerPreOrdersView.d.ts +2 -1
  108. package/dist/features/seller/components/SellerPreOrdersView.js +30 -7
  109. package/dist/features/seller/components/SellerPrizeDrawsView.d.ts +2 -1
  110. package/dist/features/seller/components/SellerPrizeDrawsView.js +30 -7
  111. package/dist/features/seller/components/SellerProductShell.js +12 -0
  112. package/dist/features/seller/components/SellerReviewsView.js +2 -1
  113. package/dist/features/seller/components/SellerShippingConfigsView.js +3 -2
  114. package/dist/features/seller/components/SellerStoreCategoriesView.js +6 -5
  115. package/dist/features/seller/components/SellerTemplatesView.js +4 -3
  116. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +30 -16
  117. package/dist/features/wishlist/types/index.d.ts +1 -1
  118. package/dist/index.d.ts +6 -3
  119. package/dist/index.js +6 -4
  120. package/dist/seed/addresses-seed-data.d.ts +2 -18
  121. package/dist/seed/addresses-seed-data.js +137 -203
  122. package/dist/seed/bids-seed-data.d.ts +2 -8
  123. package/dist/seed/bids-seed-data.js +172 -648
  124. package/dist/seed/blog-posts-seed-data.d.ts +0 -5
  125. package/dist/seed/blog-posts-seed-data.js +341 -596
  126. package/dist/seed/carousel-slides-seed-data.d.ts +0 -5
  127. package/dist/seed/carousel-slides-seed-data.js +61 -192
  128. package/dist/seed/carousels-seed-data.js +18 -1
  129. package/dist/seed/cart-seed-data.d.ts +1 -18
  130. package/dist/seed/cart-seed-data.js +116 -293
  131. package/dist/seed/categories-seed-data.d.ts +0 -6
  132. package/dist/seed/categories-seed-data.js +1409 -1537
  133. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -11
  134. package/dist/seed/claimed-coupons-seed-data.js +32 -29
  135. package/dist/seed/conversations-seed-data.d.ts +0 -6
  136. package/dist/seed/conversations-seed-data.js +132 -280
  137. package/dist/seed/coupon-usage-seed-data.d.ts +0 -16
  138. package/dist/seed/coupon-usage-seed-data.js +30 -44
  139. package/dist/seed/coupons-seed-data.d.ts +0 -6
  140. package/dist/seed/coupons-seed-data.js +141 -489
  141. package/dist/seed/events-seed-data.d.ts +0 -6
  142. package/dist/seed/events-seed-data.js +201 -379
  143. package/dist/seed/faq-seed-data.d.ts +0 -14
  144. package/dist/seed/faq-seed-data.js +609 -1184
  145. package/dist/seed/grouped-listings-seed-data.d.ts +119 -8
  146. package/dist/seed/grouped-listings-seed-data.js +148 -233
  147. package/dist/seed/history-seed-data.d.ts +0 -7
  148. package/dist/seed/history-seed-data.js +50 -54
  149. package/dist/seed/homepage-sections-seed-data.d.ts +0 -5
  150. package/dist/seed/homepage-sections-seed-data.js +83 -175
  151. package/dist/seed/index.d.ts +1 -1
  152. package/dist/seed/index.js +1 -1
  153. package/dist/seed/manifest.js +2 -2
  154. package/dist/seed/notifications-seed-data.d.ts +0 -6
  155. package/dist/seed/notifications-seed-data.js +309 -196
  156. package/dist/seed/offers-seed-data.d.ts +0 -8
  157. package/dist/seed/offers-seed-data.js +118 -197
  158. package/dist/seed/orders-seed-data.d.ts +2 -8
  159. package/dist/seed/orders-seed-data.js +248 -1510
  160. package/dist/seed/payouts-seed-data.d.ts +0 -6
  161. package/dist/seed/payouts-seed-data.js +102 -441
  162. package/dist/seed/products-auctions-seed-data.d.ts +1 -14
  163. package/dist/seed/products-auctions-seed-data.js +612 -1084
  164. package/dist/seed/products-preorders-seed-data.d.ts +119 -14
  165. package/dist/seed/products-preorders-seed-data.js +154 -455
  166. package/dist/seed/products-standard-seed-data.d.ts +1 -15
  167. package/dist/seed/products-standard-seed-data.js +1355 -4128
  168. package/dist/seed/reviews-seed-data.d.ts +2 -8
  169. package/dist/seed/reviews-seed-data.js +99 -1182
  170. package/dist/seed/scammers-seed-data.d.ts +0 -15
  171. package/dist/seed/scammers-seed-data.js +36 -37
  172. package/dist/seed/sessions-seed-data.d.ts +0 -13
  173. package/dist/seed/sessions-seed-data.js +58 -335
  174. package/dist/seed/site-settings-seed-data.d.ts +0 -4
  175. package/dist/seed/site-settings-seed-data.js +61 -52
  176. package/dist/seed/store-addresses-seed-data.js +27 -151
  177. package/dist/seed/store-extensions-seed-data.d.ts +0 -7
  178. package/dist/seed/store-extensions-seed-data.js +147 -261
  179. package/dist/seed/stores-seed-data.d.ts +0 -5
  180. package/dist/seed/stores-seed-data.js +222 -184
  181. package/dist/seed/sub-listings-seed-data.d.ts +119 -0
  182. package/dist/seed/sub-listings-seed-data.js +447 -0
  183. package/dist/seed/support-tickets-seed-data.d.ts +0 -7
  184. package/dist/seed/support-tickets-seed-data.js +82 -75
  185. package/dist/seed/users-seed-data.d.ts +0 -5
  186. package/dist/seed/users-seed-data.js +279 -634
  187. package/dist/seed/wishlists-seed-data.d.ts +0 -9
  188. package/dist/seed/wishlists-seed-data.js +36 -52
  189. package/dist/seo/json-ld.js +6 -4
  190. package/dist/styles.css +8052 -3
  191. package/dist/tailwind-utilities.css +1 -1
  192. package/dist/utils/index.d.ts +1 -0
  193. package/dist/utils/index.js +1 -0
  194. package/dist/utils/search-tokens.d.ts +2 -0
  195. package/dist/utils/search-tokens.js +21 -0
  196. package/package.json +2 -2
  197. package/scripts/seed-cli.mjs +2 -2
@@ -1,7 +1,17 @@
1
- /**
2
- * Users Seed Data Collectibles Marketplace
3
- * 9 users: 1 admin, 4 sellers (one per collectibles vertical), 4 buyers.
4
- * id === uid === slug convention. Indian market locale.
1
+ /*
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), 10 buyers.
4
+ * All passwords are TempPass123! in the Firebase Auth emulator. UIDs match slugs.
5
+ *
6
+ * EXPORTS:
7
+ * usersSeedData — array of 18 Partial<UserDocument> objects for the seed runner
8
+ *
9
+ * @tag domain:users,auth
10
+ * @tag layer:seed
11
+ * @tag pattern:none
12
+ * @tag access:server-only
13
+ * @tag consumers:seed/runner.ts,SeedPanel
14
+ * @tag sideEffects:none
5
15
  */
6
16
  import { getDefaultPhonePrefix } from "./seed-market-config";
7
17
  import { USER_FIELDS } from "../constants/field-names";
@@ -9,15 +19,19 @@ const _ph = getDefaultPhonePrefix();
9
19
  const NOW = new Date();
10
20
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
11
21
  export const usersSeedData = [
12
- // ── Admin ──────────────────────────────────────────────────────────────────
22
+ // ── Admin (also acts as buyer — has orders/cart/wishlist/history) ───────────
13
23
  {
14
24
  uid: "user-admin-letitrip",
15
25
  email: "admin@letitrip.in",
16
- phoneNumber: `${_ph}9876500000`,
26
+ phoneNumber: `${_ph}9999900000`,
17
27
  phoneVerified: true,
18
28
  displayName: "LetItRip Admin",
19
- photoURL: null,
20
- avatarMetadata: null,
29
+ photoURL: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
30
+ avatarMetadata: {
31
+ url: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
32
+ position: { x: 50, y: 50 },
33
+ zoom: 1.0,
34
+ },
21
35
  role: USER_FIELDS.ROLE_VALUES.ADMIN,
22
36
  emailVerified: true,
23
37
  disabled: false,
@@ -25,41 +39,43 @@ export const usersSeedData = [
25
39
  storeSlug: "store-letitrip-official",
26
40
  storeStatus: "approved",
27
41
  publicProfile: {
28
- isPublic: false,
42
+ isPublic: true,
29
43
  showEmail: false,
30
44
  showPhone: false,
31
45
  showOrders: false,
32
46
  showWishlist: false,
33
- bio: "LetItRip platform administrator.",
47
+ bio: "LetItRip platform administrator. India's largest YGO collectibles marketplace.",
48
+ location: "Mumbai, Maharashtra",
49
+ storeName: "LetItRip Official",
50
+ storeCategory: "trading-cards",
34
51
  },
35
- stats: { totalOrders: 7, auctionsWon: 1, itemsSold: 142, reviewsCount: 0 },
52
+ stats: { totalOrders: 20, auctionsWon: 2, itemsSold: 200, reviewsCount: 0 },
36
53
  metadata: {
37
54
  lastSignInTime: daysAgo(1),
38
55
  creationTime: daysAgo(400).toISOString(),
39
- loginCount: 300,
56
+ loginCount: 400,
40
57
  },
41
58
  createdAt: daysAgo(400),
42
59
  updatedAt: daysAgo(1),
43
60
  },
44
- // ── Sellers ────────────────────────────────────────────────────────────────
45
- // Seller 1: Pokémon TCG specialist
61
+ // ── Seller: Seto Kaiba (also acts as buyer — bids on admin's auctions) ──────
46
62
  {
47
- uid: "user-aryan-kapoor",
48
- email: "aryan@pokemonpalace.in",
49
- phoneNumber: `${_ph}9876501001`,
63
+ uid: "user-seto-kaiba",
64
+ email: "kaiba@kaibalandmark.in",
65
+ phoneNumber: `${_ph}9999900001`,
50
66
  phoneVerified: true,
51
- displayName: "Aryan Kapoor",
52
- photoURL: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face",
67
+ displayName: "Seto Kaiba",
68
+ photoURL: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
53
69
  avatarMetadata: {
54
- url: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face",
55
- position: { x: 50, y: 40 },
56
- zoom: 1.1,
70
+ url: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
71
+ position: { x: 50, y: 50 },
72
+ zoom: 1.0,
57
73
  },
58
74
  role: USER_FIELDS.ROLE_VALUES.SELLER,
59
75
  emailVerified: true,
60
76
  disabled: false,
61
- storeId: "store-pokemon-palace",
62
- storeSlug: "store-pokemon-palace",
77
+ storeId: "store-kaiba-corp-cards",
78
+ storeSlug: "store-kaiba-corp-cards",
63
79
  storeStatus: "approved",
64
80
  publicProfile: {
65
81
  isPublic: true,
@@ -67,110 +83,69 @@ export const usersSeedData = [
67
83
  showPhone: false,
68
84
  showOrders: false,
69
85
  showWishlist: false,
70
- bio: "Pokémon TCG enthusiast and collector since 2010. Specialising in sealed product, graded slabs, and rare vintage cards.",
71
- location: "Mumbai, Maharashtra",
72
- socialLinks: { instagram: "https://instagram.com/aryan.pokecollector" },
73
- storeName: "Pokémon Palace",
86
+ bio: "CEO of Kaiba Corp. Collector and seller of authenticated YGO cards. Blue-Eyes White Dragon enthusiast.",
87
+ location: "Domino City",
88
+ socialLinks: { instagram: "https://instagram.com/kaibacorp" },
89
+ storeName: "Kaiba Corp Card Vault",
74
90
  storeCategory: "trading-cards",
75
91
  },
76
- stats: { totalOrders: 12, auctionsWon: 3, itemsSold: 87, reviewsCount: 42 },
92
+ stats: { totalOrders: 20, auctionsWon: 3, itemsSold: 580, reviewsCount: 35 },
77
93
  metadata: {
78
- lastSignInTime: daysAgo(2),
79
- creationTime: daysAgo(380).toISOString(),
80
- loginCount: 95,
81
- },
82
- createdAt: daysAgo(380),
83
- updatedAt: daysAgo(2),
84
- },
85
- // Seller 2: Yu-Gi-Oh! & Trading Cards
86
- {
87
- uid: "user-nisha-reddy",
88
- email: "nisha@cardgamehub.in",
89
- phoneNumber: `${_ph}9876502002`,
90
- phoneVerified: true,
91
- displayName: "Nisha Reddy",
92
- photoURL: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200&h=200&fit=crop&crop=face",
93
- avatarMetadata: null,
94
- role: USER_FIELDS.ROLE_VALUES.SELLER,
95
- emailVerified: true,
96
- disabled: false,
97
- storeId: "store-cardgame-hub",
98
- storeSlug: "store-cardgame-hub",
99
- storeStatus: "approved",
100
- publicProfile: {
101
- isPublic: true,
102
- showEmail: false,
103
- showPhone: false,
104
- showOrders: false,
105
- showWishlist: false,
106
- bio: "Yu-Gi-Oh! TCG player and sealed product trader. WCS 2022 qualifier. Top-grade singles and booster boxes.",
107
- location: "Hyderabad, Telangana",
108
- socialLinks: { instagram: "https://instagram.com/nisha.cardgamehub" },
109
- storeName: "CardGame Hub",
110
- storeCategory: "trading-cards",
111
- },
112
- stats: { totalOrders: 8, auctionsWon: 1, itemsSold: 64, reviewsCount: 31 },
113
- metadata: {
114
- lastSignInTime: daysAgo(3),
94
+ lastSignInTime: daysAgo(1),
115
95
  creationTime: daysAgo(350).toISOString(),
116
- loginCount: 67,
96
+ loginCount: 250,
117
97
  },
118
98
  createdAt: daysAgo(350),
119
- updatedAt: daysAgo(3),
99
+ updatedAt: daysAgo(1),
120
100
  },
121
- // Seller 3: Diecast cars (Hot Wheels + Tomica)
101
+ // ── Buyer: Yugi Muto (pure buyer) ───────────────────────────────────────────
122
102
  {
123
- uid: "user-vikram-mehta",
124
- email: "vikram@diecastdepot.in",
125
- phoneNumber: `${_ph}9876503003`,
103
+ uid: "user-yugi-muto",
104
+ email: "yugi@duelkingdom.in",
105
+ phoneNumber: `${_ph}9999900002`,
126
106
  phoneVerified: true,
127
- displayName: "Vikram Mehta",
128
- photoURL: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&h=200&fit=crop&crop=face",
129
- avatarMetadata: null,
130
- role: USER_FIELDS.ROLE_VALUES.SELLER,
107
+ displayName: "Yugi Muto",
108
+ photoURL: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
109
+ avatarMetadata: {
110
+ url: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
111
+ position: { x: 50, y: 50 },
112
+ zoom: 1.0,
113
+ },
114
+ role: USER_FIELDS.ROLE_VALUES.USER,
131
115
  emailVerified: true,
132
116
  disabled: false,
133
- storeId: "store-diecast-depot",
134
- storeSlug: "store-diecast-depot",
135
- storeStatus: "approved",
136
117
  publicProfile: {
137
118
  isPublic: true,
138
119
  showEmail: false,
139
120
  showPhone: false,
140
121
  showOrders: false,
141
122
  showWishlist: false,
142
- bio: "Hot Wheels and Tomica collector since 2005. STH hunter, Car Culture completionist, and Tomica Limited Vintage dealer.",
143
- location: "Delhi, NCR",
144
- socialLinks: {
145
- instagram: "https://instagram.com/vikram.diecastdepot",
146
- facebook: "https://facebook.com/diecastdepot",
147
- },
148
- storeName: "Diecast Depot",
149
- storeCategory: "diecast-vehicles",
123
+ bio: "King of Games. Duelist from Domino City. Collecting the cards of destiny.",
124
+ location: "Domino City",
125
+ socialLinks: { instagram: "https://instagram.com/yugi.duelkingdom" },
150
126
  },
151
- stats: { totalOrders: 5, auctionsWon: 2, itemsSold: 115, reviewsCount: 58 },
127
+ stats: { totalOrders: 30, auctionsWon: 5, itemsSold: 0, reviewsCount: 20 },
152
128
  metadata: {
153
- lastSignInTime: daysAgo(1),
154
- creationTime: daysAgo(320).toISOString(),
155
- loginCount: 140,
129
+ lastSignInTime: daysAgo(2),
130
+ creationTime: daysAgo(300).toISOString(),
131
+ loginCount: 180,
156
132
  },
157
- createdAt: daysAgo(320),
158
- updatedAt: daysAgo(1),
133
+ createdAt: daysAgo(300),
134
+ updatedAt: daysAgo(2),
159
135
  },
160
- // Seller 4: Beyblade X + Burst
136
+ // ── Seller: Ash (Pokémon Palace owner) ──────────────────────────────────────
161
137
  {
162
- uid: "user-rohit-joshi",
163
- email: "rohit@beyladearena.in",
164
- phoneNumber: `${_ph}9876504004`,
138
+ uid: "user-ash-trainer",
139
+ email: "ash@pokemonpalace.in",
140
+ phoneNumber: `${_ph}9999900003`,
165
141
  phoneVerified: true,
166
- displayName: "Rohit Joshi",
167
- photoURL: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=200&h=200&fit=crop&crop=face",
168
- avatarMetadata: null,
142
+ displayName: "Ash Ketchum",
143
+ photoURL: "/media/user-avatar-ash-ketchum-20260101.jpg",
169
144
  role: USER_FIELDS.ROLE_VALUES.SELLER,
170
145
  emailVerified: true,
171
146
  disabled: false,
172
- storeId: "store-beyblade-arena",
173
- storeSlug: "store-beyblade-arena",
147
+ storeId: "store-pokemon-palace",
148
+ storeSlug: "store-pokemon-palace",
174
149
  storeStatus: "approved",
175
150
  publicProfile: {
176
151
  isPublic: true,
@@ -178,158 +153,114 @@ export const usersSeedData = [
178
153
  showPhone: false,
179
154
  showOrders: false,
180
155
  showWishlist: false,
181
- bio: "India's top Beyblade X and Burst supplier. Directly importing from Takara Tomy Japan. Official tops, launchers, and XStadiums.",
182
- location: "Pune, Maharashtra",
183
- socialLinks: {
184
- instagram: "https://instagram.com/rohit.beyaladearena",
185
- },
186
- storeName: "Beyblade Arena",
187
- storeCategory: "spinning-tops",
188
- },
189
- stats: { totalOrders: 9, auctionsWon: 0, itemsSold: 73, reviewsCount: 47 },
190
- metadata: {
191
- lastSignInTime: daysAgo(2),
192
- creationTime: daysAgo(290).toISOString(),
193
- loginCount: 88,
194
- },
195
- createdAt: daysAgo(290),
196
- updatedAt: daysAgo(2),
197
- },
198
- // ── Buyers ─────────────────────────────────────────────────────────────────
199
- // Buyer 1
200
- {
201
- uid: "user-rahul-sharma",
202
- email: "rahul.sharma@gmail.com",
203
- phoneNumber: `${_ph}9876511001`,
204
- phoneVerified: false,
205
- displayName: "Rahul Sharma",
206
- photoURL: null,
207
- avatarMetadata: null,
208
- role: USER_FIELDS.ROLE_VALUES.USER,
209
- emailVerified: true,
210
- disabled: false,
211
- publicProfile: {
212
- isPublic: false,
213
- showEmail: false,
214
- showPhone: false,
215
- showOrders: false,
216
- showWishlist: false,
217
- bio: "Pokémon TCG collector. Chasing Base Set and Jungle holos.",
156
+ bio: "Pokémon Master and TCG collector. Running Pokémon Palace from Bengaluru.",
218
157
  location: "Bengaluru, Karnataka",
158
+ storeName: "Pokémon Palace",
159
+ storeCategory: "trading-cards",
219
160
  },
220
- stats: { totalOrders: 7, auctionsWon: 2, itemsSold: 0, reviewsCount: 5 },
221
- metadata: {
222
- lastSignInTime: daysAgo(4),
223
- creationTime: daysAgo(200).toISOString(),
224
- loginCount: 24,
225
- },
161
+ stats: { totalOrders: 5, auctionsWon: 1, itemsSold: 120, reviewsCount: 8 },
162
+ metadata: { lastSignInTime: daysAgo(3), creationTime: daysAgo(200).toISOString(), loginCount: 90 },
226
163
  createdAt: daysAgo(200),
227
- updatedAt: daysAgo(4),
164
+ updatedAt: daysAgo(3),
228
165
  },
229
- // Buyer 2
166
+ // ── Seller: Priya (CardGame Hub owner) ──────────────────────────────────────
230
167
  {
231
- uid: "user-priya-patel",
232
- email: "priya.patel@gmail.com",
233
- phoneNumber: `${_ph}9876512002`,
168
+ uid: "user-priya-cards",
169
+ email: "priya@cardgamehub.in",
170
+ phoneNumber: `${_ph}9999900004`,
234
171
  phoneVerified: true,
235
- displayName: "Priya Patel",
236
- photoURL: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=200&h=200&fit=crop&crop=face",
237
- avatarMetadata: {
238
- url: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=200&h=200&fit=crop&crop=face",
239
- position: { x: 50, y: 35 },
240
- zoom: 1.15,
241
- },
242
- role: USER_FIELDS.ROLE_VALUES.USER,
172
+ displayName: "Priya Sharma",
173
+ photoURL: "/media/user-avatar-priya-sharma-20260101.jpg",
174
+ role: USER_FIELDS.ROLE_VALUES.SELLER,
243
175
  emailVerified: true,
244
176
  disabled: false,
177
+ storeId: "store-cardgame-hub",
178
+ storeSlug: "store-cardgame-hub",
179
+ storeStatus: "approved",
245
180
  publicProfile: {
246
- isPublic: false,
181
+ isPublic: true,
247
182
  showEmail: false,
248
183
  showPhone: false,
249
184
  showOrders: false,
250
185
  showWishlist: false,
251
- bio: "Nendoroid and figma collector. Good Smile Company fan.",
252
- location: "Ahmedabad, Gujarat",
253
- },
254
- stats: { totalOrders: 11, auctionsWon: 1, itemsSold: 0, reviewsCount: 8 },
255
- metadata: {
256
- lastSignInTime: daysAgo(2),
257
- creationTime: daysAgo(180).toISOString(),
258
- loginCount: 31,
186
+ bio: "TCG enthusiast and tournament organizer from Hyderabad. Multi-TCG specialist.",
187
+ location: "Hyderabad, Telangana",
188
+ storeName: "CardGame Hub",
189
+ storeCategory: "trading-cards",
259
190
  },
191
+ stats: { totalOrders: 3, auctionsWon: 0, itemsSold: 85, reviewsCount: 4 },
192
+ metadata: { lastSignInTime: daysAgo(5), creationTime: daysAgo(180).toISOString(), loginCount: 60 },
260
193
  createdAt: daysAgo(180),
261
- updatedAt: daysAgo(2),
194
+ updatedAt: daysAgo(5),
262
195
  },
263
- // Buyer 3
196
+ // ── Seller: Ravi (Diecast Depot owner) ──────────────────────────────────────
264
197
  {
265
- uid: "user-arjun-singh",
266
- email: "arjun.singh@gmail.com",
267
- phoneNumber: `${_ph}9876513003`,
268
- phoneVerified: false,
269
- displayName: "Arjun Singh",
270
- photoURL: null,
271
- avatarMetadata: null,
272
- role: USER_FIELDS.ROLE_VALUES.USER,
198
+ uid: "user-ravi-diecast",
199
+ email: "ravi@diecastdepot.in",
200
+ phoneNumber: `${_ph}9999900005`,
201
+ phoneVerified: true,
202
+ displayName: "Ravi Kumar",
203
+ photoURL: "/media/user-avatar-ravi-kumar-20260101.jpg",
204
+ role: USER_FIELDS.ROLE_VALUES.SELLER,
273
205
  emailVerified: true,
274
206
  disabled: false,
207
+ storeId: "store-diecast-depot",
208
+ storeSlug: "store-diecast-depot",
209
+ storeStatus: "approved",
275
210
  publicProfile: {
276
- isPublic: false,
211
+ isPublic: true,
277
212
  showEmail: false,
278
213
  showPhone: false,
279
214
  showOrders: false,
280
215
  showWishlist: false,
281
- bio: "Gunpla builder. Working through MG grade. Next target: PG Wing Zero.",
282
- location: "Jaipur, Rajasthan",
283
- },
284
- stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
285
- metadata: {
286
- lastSignInTime: daysAgo(7),
287
- creationTime: daysAgo(150).toISOString(),
288
- loginCount: 12,
216
+ bio: "Hot Wheels collector since 1998. Over 5,000 diecast in my personal collection.",
217
+ location: "Delhi, NCR",
218
+ storeName: "Diecast Depot",
219
+ storeCategory: "diecast-vehicles",
289
220
  },
290
- createdAt: daysAgo(150),
291
- updatedAt: daysAgo(7),
221
+ stats: { totalOrders: 8, auctionsWon: 2, itemsSold: 340, reviewsCount: 12 },
222
+ metadata: { lastSignInTime: daysAgo(2), creationTime: daysAgo(250).toISOString(), loginCount: 150 },
223
+ createdAt: daysAgo(250),
224
+ updatedAt: daysAgo(2),
292
225
  },
293
- // Buyer 4
226
+ // ── Seller: Tyson (Beyblade Arena owner) ────────────────────────────────────
294
227
  {
295
- uid: "user-meera-nair",
296
- email: "meera.nair@gmail.com",
297
- phoneNumber: `${_ph}9876514004`,
228
+ uid: "user-tyson-blader",
229
+ email: "tyson@beybladearena.in",
230
+ phoneNumber: `${_ph}9999900006`,
298
231
  phoneVerified: true,
299
- displayName: "Meera Nair",
300
- photoURL: "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=200&h=200&fit=crop&crop=face",
301
- avatarMetadata: null,
302
- role: USER_FIELDS.ROLE_VALUES.USER,
232
+ displayName: "Tyson Granger",
233
+ photoURL: "/media/user-avatar-tyson-granger-20260101.jpg",
234
+ role: USER_FIELDS.ROLE_VALUES.SELLER,
303
235
  emailVerified: true,
304
236
  disabled: false,
237
+ storeId: "store-beyblade-arena",
238
+ storeSlug: "store-beyblade-arena",
239
+ storeStatus: "approved",
305
240
  publicProfile: {
306
- isPublic: false,
241
+ isPublic: true,
307
242
  showEmail: false,
308
243
  showPhone: false,
309
244
  showOrders: false,
310
245
  showWishlist: false,
311
- bio: "Hot Wheels STH hunter and Tomica Premium collector.",
312
- location: "Kochi, Kerala",
313
- },
314
- stats: { totalOrders: 6, auctionsWon: 3, itemsSold: 0, reviewsCount: 4 },
315
- metadata: {
316
- lastSignInTime: daysAgo(3),
317
- creationTime: daysAgo(120).toISOString(),
318
- loginCount: 19,
246
+ bio: "Beyblade champion. Importing authentic Takara-Tomy Beyblades from Japan. Let It Rip!",
247
+ location: "Chennai, Tamil Nadu",
248
+ storeName: "Beyblade Arena",
249
+ storeCategory: "spinning-tops",
319
250
  },
320
- createdAt: daysAgo(120),
321
- updatedAt: daysAgo(3),
251
+ stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 95, reviewsCount: 6 },
252
+ metadata: { lastSignInTime: daysAgo(4), creationTime: daysAgo(150).toISOString(), loginCount: 70 },
253
+ createdAt: daysAgo(150),
254
+ updatedAt: daysAgo(4),
322
255
  },
323
- // ── New Sellers ────────────────────────────────────────────────────────────
324
- // Seller 5: Anime Figures, Gundam, Funko Pop (Tokyo Toys India)
256
+ // ── Seller: Megumi (Tokyo Toys India owner) ────────────────────────────────
325
257
  {
326
- uid: "user-priya-singh",
327
- email: "priya@tokyotoysindia.in",
328
- phoneNumber: `${_ph}9876505005`,
258
+ uid: "user-megumi-figures",
259
+ email: "megumi@tokyotoys.in",
260
+ phoneNumber: `${_ph}9999900007`,
329
261
  phoneVerified: true,
330
- displayName: "Priya Singh",
331
- photoURL: "https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?w=200&h=200&fit=crop&crop=face",
332
- avatarMetadata: null,
262
+ displayName: "Megumi Tanaka",
263
+ photoURL: "/media/user-avatar-megumi-tanaka-20260101.jpg",
333
264
  role: USER_FIELDS.ROLE_VALUES.SELLER,
334
265
  emailVerified: true,
335
266
  disabled: false,
@@ -342,30 +273,24 @@ export const usersSeedData = [
342
273
  showPhone: false,
343
274
  showOrders: false,
344
275
  showWishlist: false,
345
- bio: "Anime figure collector and importer. Specialising in Nendoroids, S.H.Figuarts, scale figures, and Funko Pops. Direct sourcing from Akihabara and Good Smile Company.",
346
- location: "Chennai, Tamil Nadu",
347
- socialLinks: { instagram: "https://instagram.com/priya.tokyotoys" },
276
+ bio: "Direct imports from Akihabara. Authentic anime figures and model kits, no bootlegs.",
277
+ location: "Pune, Maharashtra",
348
278
  storeName: "Tokyo Toys India",
349
279
  storeCategory: "action-figures",
350
280
  },
351
- stats: { totalOrders: 6, auctionsWon: 1, itemsSold: 52, reviewsCount: 28 },
352
- metadata: {
353
- lastSignInTime: daysAgo(1),
354
- creationTime: daysAgo(260).toISOString(),
355
- loginCount: 74,
356
- },
357
- createdAt: daysAgo(260),
358
- updatedAt: daysAgo(1),
281
+ stats: { totalOrders: 2, auctionsWon: 0, itemsSold: 65, reviewsCount: 3 },
282
+ metadata: { lastSignInTime: daysAgo(2), creationTime: daysAgo(120).toISOString(), loginCount: 55 },
283
+ createdAt: daysAgo(120),
284
+ updatedAt: daysAgo(2),
359
285
  },
360
- // Seller 6: Gundam kits specialist (Gundam Galaxy)
286
+ // ── Seller: Amuro (Gundam Galaxy owner) ─────────────────────────────────────
361
287
  {
362
- uid: "user-amit-sharma",
363
- email: "amit@gundamgalaxy.in",
364
- phoneNumber: `${_ph}9876506006`,
288
+ uid: "user-amuro-builder",
289
+ email: "amuro@gundamgalaxy.in",
290
+ phoneNumber: `${_ph}9999900008`,
365
291
  phoneVerified: true,
366
- displayName: "Amit Sharma",
367
- photoURL: "https://images.unsplash.com/photo-1552058544-f2b08422138a?w=200&h=200&fit=crop&crop=face",
368
- avatarMetadata: null,
292
+ displayName: "Amuro Ray",
293
+ photoURL: "/media/user-avatar-amuro-ray-20260101.jpg",
369
294
  role: USER_FIELDS.ROLE_VALUES.SELLER,
370
295
  emailVerified: true,
371
296
  disabled: false,
@@ -378,344 +303,199 @@ export const usersSeedData = [
378
303
  showPhone: false,
379
304
  showOrders: false,
380
305
  showWishlist: false,
381
- bio: "Master Grade builder and HG completionist. Running Gundam Galaxy since 2021. All kits are authenticated Bandai sourced from official Bandai distributors in Japan and Singapore.",
382
- location: "Bengaluru, Karnataka",
383
- socialLinks: {
384
- instagram: "https://instagram.com/amit.gundamgalaxy",
385
- twitter: "https://twitter.com/gundamgalaxy",
386
- },
306
+ bio: "Gunpla builder since 2005. Over 200 kits built. Importing from Bandai Hobby distributors.",
307
+ location: "Kolkata, West Bengal",
387
308
  storeName: "Gundam Galaxy",
388
309
  storeCategory: "model-kits",
389
310
  },
390
- stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 41, reviewsCount: 22 },
391
- metadata: {
392
- lastSignInTime: daysAgo(2),
393
- creationTime: daysAgo(230).toISOString(),
394
- loginCount: 58,
395
- },
396
- createdAt: daysAgo(230),
397
- updatedAt: daysAgo(2),
311
+ stats: { totalOrders: 1, auctionsWon: 0, itemsSold: 42, reviewsCount: 2 },
312
+ metadata: { lastSignInTime: daysAgo(6), creationTime: daysAgo(90).toISOString(), loginCount: 35 },
313
+ createdAt: daysAgo(90),
314
+ updatedAt: daysAgo(6),
398
315
  },
399
- // Seller 7: Vintage collectibles (Vintage Vault)
316
+ // ── Buyer: Ananya (Pokémon + anime collector) ──────────────────────────────
400
317
  {
401
- uid: "user-kavya-iyer",
402
- email: "kavya@vintagevault.in",
403
- phoneNumber: `${_ph}9876507007`,
318
+ uid: "user-ananya-collector",
319
+ email: "ananya.patel@gmail.com",
320
+ phoneNumber: `${_ph}9999900009`,
404
321
  phoneVerified: true,
405
- displayName: "Kavya Iyer",
406
- photoURL: "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=200&h=200&fit=crop&crop=face",
407
- avatarMetadata: null,
408
- role: USER_FIELDS.ROLE_VALUES.SELLER,
322
+ displayName: "Ananya Patel",
323
+ photoURL: "/media/user-avatar-ananya-patel-20260101.jpg",
324
+ role: USER_FIELDS.ROLE_VALUES.USER,
409
325
  emailVerified: true,
410
326
  disabled: false,
411
- storeId: "store-vintage-vault",
412
- storeSlug: "store-vintage-vault",
413
- storeStatus: "approved",
414
327
  publicProfile: {
415
328
  isPublic: true,
416
329
  showEmail: false,
417
330
  showPhone: false,
418
331
  showOrders: false,
419
- showWishlist: false,
420
- bio: "Vintage toy and collectibles specialist. 20+ years sourcing from estate sales, Tokyo flea markets, and private collections. Pokémon WOTC era, 80s action figures, and vintage Redlines.",
421
- location: "Kolkata, West Bengal",
422
- socialLinks: { instagram: "https://instagram.com/kavya.vintagevault" },
423
- storeName: "Vintage Vault",
424
- storeCategory: "vintage-rare",
425
- },
426
- stats: { totalOrders: 3, auctionsWon: 2, itemsSold: 34, reviewsCount: 19 },
427
- metadata: {
428
- lastSignInTime: daysAgo(3),
429
- creationTime: daysAgo(200).toISOString(),
430
- loginCount: 45,
332
+ showWishlist: true,
333
+ bio: "Pokémon TCG and anime figure collector from Mumbai. Charizard enthusiast.",
334
+ location: "Mumbai, Maharashtra",
431
335
  },
432
- createdAt: daysAgo(200),
433
- updatedAt: daysAgo(3),
336
+ stats: { totalOrders: 15, auctionsWon: 3, itemsSold: 0, reviewsCount: 10 },
337
+ metadata: { lastSignInTime: daysAgo(1), creationTime: daysAgo(180).toISOString(), loginCount: 120 },
338
+ createdAt: daysAgo(180),
339
+ updatedAt: daysAgo(1),
434
340
  },
435
- // ── New Buyers ─────────────────────────────────────────────────────────────
436
- // Buyer 5 (referenced in conversations seed)
341
+ // ── Buyer: Vikram (Hot Wheels collector) ────────────────────────────────────
437
342
  {
438
- uid: "user-sneha-kumar",
439
- email: "sneha.kumar@gmail.com",
440
- phoneNumber: `${_ph}9876515005`,
343
+ uid: "user-vikram-wheels",
344
+ email: "vikram.hw@gmail.com",
345
+ phoneNumber: `${_ph}9999900010`,
441
346
  phoneVerified: true,
442
- displayName: "Sneha Kumar",
443
- photoURL: "https://images.unsplash.com/photo-1517841905240-472988babdf9?w=200&h=200&fit=crop&crop=face",
444
- avatarMetadata: null,
347
+ displayName: "Vikram Singh",
348
+ photoURL: "/media/user-avatar-vikram-singh-20260101.jpg",
445
349
  role: USER_FIELDS.ROLE_VALUES.USER,
446
350
  emailVerified: true,
447
351
  disabled: false,
448
352
  publicProfile: {
449
- isPublic: false,
353
+ isPublic: true,
450
354
  showEmail: false,
451
355
  showPhone: false,
452
356
  showOrders: false,
453
357
  showWishlist: false,
454
- bio: "Anime figure collector Nendoroids and scale figures. Building a Re:Zero shelf.",
455
- location: "Bengaluru, Karnataka",
456
- },
457
- stats: { totalOrders: 9, auctionsWon: 1, itemsSold: 0, reviewsCount: 6 },
458
- metadata: {
459
- lastSignInTime: daysAgo(1),
460
- creationTime: daysAgo(110).toISOString(),
461
- loginCount: 28,
358
+ bio: "Hot Wheels Treasure Hunt collector. Chasing the next Super TH.",
359
+ location: "Jaipur, Rajasthan",
462
360
  },
463
- createdAt: daysAgo(110),
464
- updatedAt: daysAgo(1),
361
+ stats: { totalOrders: 22, auctionsWon: 0, itemsSold: 0, reviewsCount: 8 },
362
+ metadata: { lastSignInTime: daysAgo(3), creationTime: daysAgo(200).toISOString(), loginCount: 95 },
363
+ createdAt: daysAgo(200),
364
+ updatedAt: daysAgo(3),
465
365
  },
466
- // Buyer 6 (referenced in conversations seed)
366
+ // ── Buyer: Meera (Beyblade collector) ───────────────────────────────────────
467
367
  {
468
- uid: "user-kartik-nair",
469
- email: "kartik.nair@gmail.com",
470
- phoneNumber: `${_ph}9876516006`,
471
- phoneVerified: false,
472
- displayName: "Kartik Nair",
473
- photoURL: null,
474
- avatarMetadata: null,
368
+ uid: "user-meera-bey",
369
+ email: "meera.blader@gmail.com",
370
+ phoneNumber: `${_ph}9999900011`,
371
+ phoneVerified: true,
372
+ displayName: "Meera Nair",
373
+ photoURL: "/media/user-avatar-meera-nair-20260101.jpg",
475
374
  role: USER_FIELDS.ROLE_VALUES.USER,
476
375
  emailVerified: true,
477
376
  disabled: false,
478
377
  publicProfile: {
479
- isPublic: false,
378
+ isPublic: true,
480
379
  showEmail: false,
481
380
  showPhone: false,
482
381
  showOrders: false,
483
- showWishlist: false,
484
- bio: "Gunpla builder currently on my first MG kit. Also collecting Hot Wheels Car Culture.",
485
- location: "Thiruvananthapuram, Kerala",
486
- },
487
- stats: { totalOrders: 3, auctionsWon: 0, itemsSold: 0, reviewsCount: 2 },
488
- metadata: {
489
- lastSignInTime: daysAgo(5),
490
- creationTime: daysAgo(90).toISOString(),
491
- loginCount: 9,
382
+ showWishlist: true,
383
+ bio: "Beyblade X collector and tournament player from Kochi.",
384
+ location: "Kochi, Kerala",
492
385
  },
493
- createdAt: daysAgo(90),
386
+ stats: { totalOrders: 8, auctionsWon: 1, itemsSold: 0, reviewsCount: 4 },
387
+ metadata: { lastSignInTime: daysAgo(5), creationTime: daysAgo(100).toISOString(), loginCount: 45 },
388
+ createdAt: daysAgo(100),
494
389
  updatedAt: daysAgo(5),
495
390
  },
496
- // Buyer 7 (referenced in conversations seed)
391
+ // ── Buyer: Arjun (Gunpla builder) ───────────────────────────────────────────
497
392
  {
498
- uid: "user-divya-menon",
499
- email: "divya.menon@gmail.com",
500
- phoneNumber: `${_ph}9876517007`,
393
+ uid: "user-arjun-gunpla",
394
+ email: "arjun.builder@gmail.com",
395
+ phoneNumber: `${_ph}9999900012`,
501
396
  phoneVerified: true,
502
- displayName: "Divya Menon",
503
- photoURL: "https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?w=200&h=200&fit=crop&crop=face",
504
- avatarMetadata: null,
397
+ displayName: "Arjun Reddy",
398
+ photoURL: "/media/user-avatar-arjun-reddy-20260101.jpg",
505
399
  role: USER_FIELDS.ROLE_VALUES.USER,
506
400
  emailVerified: true,
507
401
  disabled: false,
508
402
  publicProfile: {
509
- isPublic: false,
403
+ isPublic: true,
510
404
  showEmail: false,
511
405
  showPhone: false,
512
406
  showOrders: false,
513
407
  showWishlist: false,
514
- bio: "Pokémon fan and casual collector. Pulling packs and hoping for shiny Charizard.",
408
+ bio: "Gunpla hobbyist building MG and PG kits. Airbrushing enthusiast.",
515
409
  location: "Hyderabad, Telangana",
516
410
  },
517
- stats: { totalOrders: 5, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
518
- metadata: {
519
- lastSignInTime: daysAgo(2),
520
- creationTime: daysAgo(80).toISOString(),
521
- loginCount: 15,
522
- },
411
+ stats: { totalOrders: 6, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
412
+ metadata: { lastSignInTime: daysAgo(7), creationTime: daysAgo(80).toISOString(), loginCount: 30 },
523
413
  createdAt: daysAgo(80),
524
- updatedAt: daysAgo(2),
525
- },
526
- // Buyer 8 (referenced in conversations seed)
527
- {
528
- uid: "user-ankit-gupta",
529
- email: "ankit.gupta@gmail.com",
530
- phoneNumber: `${_ph}9876518008`,
531
- phoneVerified: false,
532
- displayName: "Ankit Gupta",
533
- photoURL: null,
534
- avatarMetadata: null,
535
- role: USER_FIELDS.ROLE_VALUES.USER,
536
- emailVerified: true,
537
- disabled: false,
538
- publicProfile: {
539
- isPublic: false,
540
- showEmail: false,
541
- showPhone: false,
542
- showOrders: false,
543
- showWishlist: false,
544
- bio: "Beyblade X tournament player. Building competitive lineup — Dran Sword is my go-to.",
545
- location: "Lucknow, Uttar Pradesh",
546
- },
547
- stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 0, reviewsCount: 2 },
548
- metadata: {
549
- lastSignInTime: daysAgo(3),
550
- creationTime: daysAgo(75).toISOString(),
551
- loginCount: 11,
552
- },
553
- createdAt: daysAgo(75),
554
- updatedAt: daysAgo(3),
414
+ updatedAt: daysAgo(7),
555
415
  },
556
- // Buyer 9
416
+ // ── Buyer: Sneha (vintage collector) ────────────────────────────────────────
557
417
  {
558
- uid: "user-siddharth-rao",
559
- email: "siddharth.rao@gmail.com",
560
- phoneNumber: `${_ph}9876519009`,
418
+ uid: "user-sneha-vintage",
419
+ email: "sneha.vintage@gmail.com",
420
+ phoneNumber: `${_ph}9999900013`,
561
421
  phoneVerified: true,
562
- displayName: "Siddharth Rao",
563
- photoURL: "https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face",
564
- avatarMetadata: {
565
- url: "https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face",
566
- position: { x: 50, y: 45 },
567
- zoom: 1.05,
568
- },
422
+ displayName: "Sneha Gupta",
423
+ photoURL: "/media/user-avatar-sneha-gupta-20260101.jpg",
569
424
  role: USER_FIELDS.ROLE_VALUES.USER,
570
425
  emailVerified: true,
571
426
  disabled: false,
572
427
  publicProfile: {
573
- isPublic: false,
428
+ isPublic: true,
574
429
  showEmail: false,
575
430
  showPhone: false,
576
431
  showOrders: false,
577
- showWishlist: false,
578
- bio: "Yu-Gi-Oh! TCG competitive player. Chasing Blue-Eyes and Chaos archetype singles.",
579
- location: "Pune, Maharashtra",
580
- },
581
- stats: { totalOrders: 7, auctionsWon: 1, itemsSold: 0, reviewsCount: 5 },
582
- metadata: {
583
- lastSignInTime: daysAgo(2),
584
- creationTime: daysAgo(65).toISOString(),
585
- loginCount: 22,
432
+ showWishlist: true,
433
+ bio: "Vintage toy collector. 80s/90s action figures and first-edition cards.",
434
+ location: "Lucknow, Uttar Pradesh",
586
435
  },
587
- createdAt: daysAgo(65),
436
+ stats: { totalOrders: 12, auctionsWon: 4, itemsSold: 0, reviewsCount: 6 },
437
+ metadata: { lastSignInTime: daysAgo(2), creationTime: daysAgo(160).toISOString(), loginCount: 75 },
438
+ createdAt: daysAgo(160),
588
439
  updatedAt: daysAgo(2),
589
440
  },
590
- // Buyer 10
441
+ // ── Buyer: Rohit (multi-category) ───────────────────────────────────────────
591
442
  {
592
- uid: "user-tanvi-desai",
593
- email: "tanvi.desai@gmail.com",
594
- phoneNumber: `${_ph}9876520010`,
443
+ uid: "user-rohit-collector",
444
+ email: "rohit.collect@gmail.com",
445
+ phoneNumber: `${_ph}9999900014`,
595
446
  phoneVerified: true,
596
- displayName: "Tanvi Desai",
597
- photoURL: "https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?w=200&h=200&fit=crop&crop=face",
598
- avatarMetadata: null,
447
+ displayName: "Rohit Agarwal",
448
+ photoURL: "/media/user-avatar-rohit-agarwal-20260101.jpg",
599
449
  role: USER_FIELDS.ROLE_VALUES.USER,
600
450
  emailVerified: true,
601
451
  disabled: false,
602
452
  publicProfile: {
603
- isPublic: false,
453
+ isPublic: true,
604
454
  showEmail: false,
605
455
  showPhone: false,
606
456
  showOrders: false,
607
457
  showWishlist: false,
608
- bio: "Funko Pop collectorover 200 on my shelf. Anime and Marvel are my favourites.",
609
- location: "Ahmedabad, Gujarat",
610
- },
611
- stats: { totalOrders: 12, auctionsWon: 0, itemsSold: 0, reviewsCount: 9 },
612
- metadata: {
613
- lastSignInTime: daysAgo(1),
614
- creationTime: daysAgo(55).toISOString(),
615
- loginCount: 35,
458
+ bio: "Collector of everythingcards, figures, diecast. If it's collectible, I want it.",
459
+ location: "Pune, Maharashtra",
616
460
  },
617
- createdAt: daysAgo(55),
461
+ stats: { totalOrders: 25, auctionsWon: 6, itemsSold: 0, reviewsCount: 12 },
462
+ metadata: { lastSignInTime: daysAgo(1), creationTime: daysAgo(220).toISOString(), loginCount: 140 },
463
+ createdAt: daysAgo(220),
618
464
  updatedAt: daysAgo(1),
619
465
  },
620
- // Buyer 11 referenced in scammers seed as a victim reporter
466
+ // ── Buyer: Divya (Funko Pop collector) ──────────────────────────────────────
621
467
  {
622
- uid: "user-anjali-verma",
623
- email: "anjali.verma@gmail.com",
624
- phoneNumber: `${_ph}9876521011`,
468
+ uid: "user-divya-funko",
469
+ email: "divya.funko@gmail.com",
470
+ phoneNumber: `${_ph}9999900015`,
625
471
  phoneVerified: true,
626
- displayName: "Anjali Verma",
627
- photoURL: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200&h=200&fit=crop&crop=face",
628
- avatarMetadata: null,
629
- role: USER_FIELDS.ROLE_VALUES.USER,
630
- emailVerified: true,
631
- disabled: false,
632
- publicProfile: {
633
- isPublic: false,
634
- showEmail: false,
635
- showPhone: false,
636
- showOrders: false,
637
- showWishlist: false,
638
- bio: "Hot Wheels collector — OLX veteran. Specialising in vintage Redlines and Car Culture sets.",
639
- location: "Jaipur, Rajasthan",
640
- },
641
- stats: { totalOrders: 6, auctionsWon: 0, itemsSold: 0, reviewsCount: 4 },
642
- metadata: {
643
- lastSignInTime: daysAgo(6),
644
- creationTime: daysAgo(50).toISOString(),
645
- loginCount: 14,
646
- },
647
- createdAt: daysAgo(50),
648
- updatedAt: daysAgo(6),
649
- },
650
- // Buyer 12
651
- {
652
- uid: "user-rohit-verma",
653
- email: "rohit.verma@gmail.com",
654
- phoneNumber: `${_ph}9876522012`,
655
- phoneVerified: false,
656
- displayName: "Rohit Verma",
657
- photoURL: null,
658
- avatarMetadata: null,
472
+ displayName: "Divya Menon",
473
+ photoURL: "/media/user-avatar-divya-menon-20260101.jpg",
659
474
  role: USER_FIELDS.ROLE_VALUES.USER,
660
475
  emailVerified: true,
661
476
  disabled: false,
662
477
  publicProfile: {
663
- isPublic: false,
478
+ isPublic: true,
664
479
  showEmail: false,
665
480
  showPhone: false,
666
481
  showOrders: false,
667
- showWishlist: false,
668
- bio: "One Piece TCG player and Manga collector. Always looking for OP singles at fair price.",
669
- location: "Delhi, Delhi",
670
- },
671
- stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
672
- metadata: {
673
- lastSignInTime: daysAgo(4),
674
- creationTime: daysAgo(45).toISOString(),
675
- loginCount: 12,
482
+ showWishlist: true,
483
+ bio: "Funko Pop! collector. Chase variants are my weakness. Marvel and anime pops.",
484
+ location: "Bengaluru, Karnataka",
676
485
  },
677
- createdAt: daysAgo(45),
486
+ stats: { totalOrders: 18, auctionsWon: 2, itemsSold: 0, reviewsCount: 7 },
487
+ metadata: { lastSignInTime: daysAgo(4), creationTime: daysAgo(130).toISOString(), loginCount: 65 },
488
+ createdAt: daysAgo(130),
678
489
  updatedAt: daysAgo(4),
679
490
  },
680
- // Buyer 13
681
- {
682
- uid: "user-pooja-sharma",
683
- email: "pooja.sharma@gmail.com",
684
- phoneNumber: `${_ph}9876523013`,
685
- phoneVerified: true,
686
- displayName: "Pooja Sharma",
687
- photoURL: "https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=200&h=200&fit=crop&crop=face",
688
- avatarMetadata: null,
689
- role: USER_FIELDS.ROLE_VALUES.USER,
690
- emailVerified: true,
691
- disabled: false,
692
- publicProfile: {
693
- isPublic: false,
694
- showEmail: false,
695
- showPhone: false,
696
- showOrders: false,
697
- showWishlist: false,
698
- bio: "Scale figure collector — Good Smile and Alter. Currently building a KonoSuba shelf.",
699
- location: "Mumbai, Maharashtra",
700
- },
701
- stats: { totalOrders: 8, auctionsWon: 1, itemsSold: 0, reviewsCount: 6 },
702
- metadata: {
703
- lastSignInTime: daysAgo(2),
704
- creationTime: daysAgo(40).toISOString(),
705
- loginCount: 19,
706
- },
707
- createdAt: daysAgo(40),
708
- updatedAt: daysAgo(2),
709
- },
710
- // Buyer 14
491
+ // ── Buyer: Karthik (new user, few orders) ──────────────────────────────────
711
492
  {
712
- uid: "user-kiran-reddy",
713
- email: "kiran.reddy@gmail.com",
714
- phoneNumber: `${_ph}9876524014`,
493
+ uid: "user-karthik-new",
494
+ email: "karthik.new@gmail.com",
495
+ phoneNumber: `${_ph}9999900016`,
715
496
  phoneVerified: false,
716
- displayName: "Kiran Reddy",
717
- photoURL: null,
718
- avatarMetadata: null,
497
+ displayName: "Karthik Iyer",
498
+ photoURL: "/media/user-avatar-karthik-iyer-20260101.jpg",
719
499
  role: USER_FIELDS.ROLE_VALUES.USER,
720
500
  emailVerified: true,
721
501
  disabled: false,
@@ -725,172 +505,37 @@ export const usersSeedData = [
725
505
  showPhone: false,
726
506
  showOrders: false,
727
507
  showWishlist: false,
728
- bio: "Gundam model kit builder. Starting with HG, working up to Master Grade. Zeon supporter.",
729
- location: "Hyderabad, Telangana",
730
- },
731
- stats: { totalOrders: 3, auctionsWon: 0, itemsSold: 0, reviewsCount: 2 },
732
- metadata: {
733
- lastSignInTime: daysAgo(7),
734
- creationTime: daysAgo(35).toISOString(),
735
- loginCount: 8,
736
- },
737
- createdAt: daysAgo(35),
738
- updatedAt: daysAgo(7),
739
- },
740
- // Buyer 15
741
- {
742
- uid: "user-naman-gupta",
743
- email: "naman.gupta@gmail.com",
744
- phoneNumber: `${_ph}9876525015`,
745
- phoneVerified: true,
746
- displayName: "Naman Gupta",
747
- photoURL: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=200&h=200&fit=crop&crop=face",
748
- avatarMetadata: null,
749
- role: USER_FIELDS.ROLE_VALUES.USER,
750
- emailVerified: true,
751
- disabled: false,
752
- publicProfile: {
753
- isPublic: false,
754
- showEmail: false,
755
- showPhone: false,
756
- showOrders: false,
757
- showWishlist: false,
758
- bio: "Magic: The Gathering player and Pokémon casual. Drafting Modern Horizons 3 this month.",
759
- location: "Chandigarh, Punjab",
760
- },
761
- stats: { totalOrders: 5, auctionsWon: 0, itemsSold: 0, reviewsCount: 3 },
762
- metadata: {
763
- lastSignInTime: daysAgo(3),
764
- creationTime: daysAgo(30).toISOString(),
765
- loginCount: 11,
766
- },
767
- createdAt: daysAgo(30),
768
- updatedAt: daysAgo(3),
769
- },
770
- // Buyer 16
771
- {
772
- uid: "user-preeti-joshi",
773
- email: "preeti.joshi@gmail.com",
774
- phoneNumber: `${_ph}9876526016`,
775
- phoneVerified: true,
776
- displayName: "Preeti Joshi",
777
- photoURL: "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=200&h=200&fit=crop&crop=face",
778
- avatarMetadata: null,
779
- role: USER_FIELDS.ROLE_VALUES.USER,
780
- emailVerified: true,
781
- disabled: false,
782
- publicProfile: {
783
- isPublic: false,
784
- showEmail: false,
785
- showPhone: false,
786
- showOrders: false,
787
- showWishlist: false,
788
- bio: "Beyblade X casual fan. Daughter loves Hells Chain, I ended up getting addicted too.",
789
- location: "Bhopal, Madhya Pradesh",
508
+ bio: "New to collecting. Exploring trading cards and diecast.",
509
+ location: "Chennai, Tamil Nadu",
790
510
  },
791
511
  stats: { totalOrders: 2, auctionsWon: 0, itemsSold: 0, reviewsCount: 1 },
792
- metadata: {
793
- lastSignInTime: daysAgo(8),
794
- creationTime: daysAgo(25).toISOString(),
795
- loginCount: 5,
796
- },
797
- createdAt: daysAgo(25),
798
- updatedAt: daysAgo(8),
799
- },
800
- // Buyer 17
801
- {
802
- uid: "user-varun-bhat",
803
- email: "varun.bhat@gmail.com",
804
- phoneNumber: `${_ph}9876527017`,
805
- phoneVerified: false,
806
- displayName: "Varun Bhat",
807
- photoURL: null,
808
- avatarMetadata: null,
809
- role: USER_FIELDS.ROLE_VALUES.USER,
810
- emailVerified: false,
811
- disabled: false,
812
- publicProfile: {
813
- isPublic: false,
814
- showEmail: false,
815
- showPhone: false,
816
- showOrders: false,
817
- showWishlist: false,
818
- bio: "New to collecting — started with Funko Pops and now falling down the figure rabbit hole.",
819
- location: "Mangalore, Karnataka",
820
- },
821
- stats: { totalOrders: 1, auctionsWon: 0, itemsSold: 0, reviewsCount: 0 },
822
- metadata: {
823
- lastSignInTime: daysAgo(10),
824
- creationTime: daysAgo(20).toISOString(),
825
- loginCount: 3,
826
- },
827
- createdAt: daysAgo(20),
512
+ metadata: { lastSignInTime: daysAgo(10), creationTime: daysAgo(30).toISOString(), loginCount: 8 },
513
+ createdAt: daysAgo(30),
828
514
  updatedAt: daysAgo(10),
829
515
  },
830
- // ── Moderator ──────────────────────────────────────────────────────────────
831
- {
832
- uid: "user-deepak-verma",
833
- email: "deepak.mod@letitrip.in",
834
- phoneNumber: `${_ph}9876500001`,
835
- phoneVerified: true,
836
- displayName: "Deepak Verma",
837
- photoURL: "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=200&h=200&fit=crop&crop=face",
838
- avatarMetadata: {
839
- url: "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=200&h=200&fit=crop&crop=face",
840
- position: { x: 50, y: 35 },
841
- zoom: 1.1,
842
- },
843
- role: USER_FIELDS.ROLE_VALUES.MODERATOR,
844
- emailVerified: true,
845
- disabled: false,
846
- publicProfile: {
847
- isPublic: false,
848
- showEmail: false,
849
- showPhone: false,
850
- showOrders: false,
851
- showWishlist: false,
852
- bio: "LetItRip content moderator. Keeps the marketplace clean and scam-free.",
853
- },
854
- stats: { totalOrders: 0, auctionsWon: 0, itemsSold: 0, reviewsCount: 0 },
855
- metadata: {
856
- lastSignInTime: daysAgo(1),
857
- creationTime: daysAgo(300).toISOString(),
858
- loginCount: 210,
859
- },
860
- createdAt: daysAgo(300),
861
- updatedAt: daysAgo(1),
862
- },
863
- // ── Employee ───────────────────────────────────────────────────────────────
516
+ // ── Buyer: Neha (One Piece TCG fan) ─────────────────────────────────────────
864
517
  {
865
- uid: "user-simran-kaur",
866
- email: "simran.support@letitrip.in",
867
- phoneNumber: `${_ph}9876500002`,
518
+ uid: "user-neha-onepiece",
519
+ email: "neha.op@gmail.com",
520
+ phoneNumber: `${_ph}9999900017`,
868
521
  phoneVerified: true,
869
- displayName: "Simran Kaur",
870
- photoURL: "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=200&h=200&fit=crop&crop=face",
871
- avatarMetadata: {
872
- url: "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=200&h=200&fit=crop&crop=face",
873
- position: { x: 50, y: 30 },
874
- zoom: 1.2,
875
- },
876
- role: USER_FIELDS.ROLE_VALUES.EMPLOYEE,
522
+ displayName: "Neha Joshi",
523
+ photoURL: "/media/user-avatar-neha-joshi-20260101.jpg",
524
+ role: USER_FIELDS.ROLE_VALUES.USER,
877
525
  emailVerified: true,
878
526
  disabled: false,
879
527
  publicProfile: {
880
- isPublic: false,
528
+ isPublic: true,
881
529
  showEmail: false,
882
530
  showPhone: false,
883
531
  showOrders: false,
884
- showWishlist: false,
885
- bio: "Customer support specialist at LetItRip. Here to help buyers and sellers.",
886
- },
887
- stats: { totalOrders: 0, auctionsWon: 0, itemsSold: 0, reviewsCount: 0 },
888
- metadata: {
889
- lastSignInTime: daysAgo(1),
890
- creationTime: daysAgo(250).toISOString(),
891
- loginCount: 175,
532
+ showWishlist: true,
533
+ bio: "One Piece TCG and manga collector. Luffy is king!",
534
+ location: "Ahmedabad, Gujarat",
892
535
  },
893
- createdAt: daysAgo(250),
894
- updatedAt: daysAgo(1),
536
+ stats: { totalOrders: 10, auctionsWon: 1, itemsSold: 0, reviewsCount: 5 },
537
+ metadata: { lastSignInTime: daysAgo(3), creationTime: daysAgo(110).toISOString(), loginCount: 50 },
538
+ createdAt: daysAgo(110),
539
+ updatedAt: daysAgo(3),
895
540
  },
896
541
  ];