@mohasinac/appkit 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/client.d.ts +12 -8
  2. package/dist/client.js +7 -4
  3. package/dist/constants/api-endpoints.d.ts +4 -0
  4. package/dist/constants/api-endpoints.js +2 -0
  5. package/dist/core/contact-submissions.repository.d.ts +32 -0
  6. package/dist/core/contact-submissions.repository.js +49 -0
  7. package/dist/core/index.d.ts +2 -0
  8. package/dist/core/index.js +1 -0
  9. package/dist/features/about/components/HowPayoutsWorkView.js +1 -1
  10. package/dist/features/account/components/AddressFilters.d.ts +5 -0
  11. package/dist/features/account/components/AddressFilters.js +20 -0
  12. package/dist/features/account/components/AddressesIndexListing.d.ts +6 -0
  13. package/dist/features/account/components/AddressesIndexListing.js +51 -0
  14. package/dist/features/account/components/UserSidebar.d.ts +7 -3
  15. package/dist/features/account/components/UserSidebar.js +55 -7
  16. package/dist/features/account/hooks/useAddresses.d.ts +7 -0
  17. package/dist/features/account/hooks/useAddresses.js +12 -1
  18. package/dist/features/admin/actions/admin-read-actions.d.ts +12 -0
  19. package/dist/features/admin/actions/admin-read-actions.js +18 -0
  20. package/dist/features/admin/components/AdminBlogView.js +26 -2
  21. package/dist/features/admin/components/AdminCarouselView.js +18 -2
  22. package/dist/features/admin/components/AdminCategoriesView.js +27 -2
  23. package/dist/features/admin/components/AdminContactView.d.ts +4 -0
  24. package/dist/features/admin/components/AdminContactView.js +50 -0
  25. package/dist/features/admin/components/AdminFaqsView.js +19 -2
  26. package/dist/features/admin/components/AdminListingScaffold.d.ts +11 -2
  27. package/dist/features/admin/components/AdminListingScaffold.js +14 -3
  28. package/dist/features/admin/components/AdminNewsletterView.d.ts +4 -0
  29. package/dist/features/admin/components/AdminNewsletterView.js +50 -0
  30. package/dist/features/admin/components/AdminProductsView.js +30 -2
  31. package/dist/features/admin/components/AdminReviewsView.js +26 -2
  32. package/dist/features/admin/components/AdminStoresView.js +17 -2
  33. package/dist/features/admin/components/AdminUsersView.js +27 -2
  34. package/dist/features/admin/components/DataTable.d.ts +2 -1
  35. package/dist/features/admin/components/DataTable.js +18 -4
  36. package/dist/features/admin/components/index.d.ts +6 -0
  37. package/dist/features/admin/components/index.js +3 -0
  38. package/dist/features/admin/hooks/useAdminListingData.d.ts +3 -1
  39. package/dist/features/admin/hooks/useAdminListingData.js +12 -7
  40. package/dist/features/admin/server.d.ts +3 -0
  41. package/dist/features/admin/server.js +2 -0
  42. package/dist/features/auctions/components/AuctionDetailPageView.js +93 -47
  43. package/dist/features/auctions/components/AuctionFilters.d.ts +8 -0
  44. package/dist/features/auctions/components/AuctionFilters.js +12 -0
  45. package/dist/features/auctions/components/AuctionsListView.d.ts +6 -1
  46. package/dist/features/auctions/components/AuctionsListView.js +37 -5
  47. package/dist/features/auctions/schemas/index.d.ts +4 -4
  48. package/dist/features/blog/components/BlogFeaturedCard.d.ts +1 -7
  49. package/dist/features/blog/components/BlogFeaturedCard.js +4 -5
  50. package/dist/features/blog/components/BlogFilters.js +2 -1
  51. package/dist/features/blog/components/BlogIndexListing.js +14 -9
  52. package/dist/features/blog/components/BlogIndexPageView.d.ts +6 -1
  53. package/dist/features/blog/components/BlogIndexPageView.js +10 -2
  54. package/dist/features/blog/components/BlogListView.d.ts +2 -1
  55. package/dist/features/blog/components/BlogListView.js +10 -3
  56. package/dist/features/categories/components/CategoriesIndexListing.d.ts +1 -1
  57. package/dist/features/categories/components/CategoriesIndexListing.js +41 -38
  58. package/dist/features/categories/components/CategoriesIndexPageView.d.ts +6 -1
  59. package/dist/features/categories/components/CategoriesIndexPageView.js +41 -2
  60. package/dist/features/categories/components/CategoryDetailPageView.js +13 -6
  61. package/dist/features/categories/components/CategoryDetailTabs.d.ts +5 -0
  62. package/dist/features/categories/components/CategoryDetailTabs.js +17 -0
  63. package/dist/features/categories/components/CategoryFilters.js +2 -1
  64. package/dist/features/categories/components/CategoryGrid.d.ts +2 -1
  65. package/dist/features/categories/components/CategoryGrid.js +8 -6
  66. package/dist/features/categories/components/CategoryProductsListing.js +22 -11
  67. package/dist/features/categories/components/index.d.ts +2 -0
  68. package/dist/features/categories/components/index.js +1 -0
  69. package/dist/features/categories/hooks/useCategories.d.ts +20 -0
  70. package/dist/features/categories/hooks/useCategories.js +50 -1
  71. package/dist/features/categories/hooks/useCategoryTree.d.ts +17 -0
  72. package/dist/features/categories/hooks/useCategoryTree.js +65 -0
  73. package/dist/features/events/components/AdminEventEditorView.d.ts +6 -0
  74. package/dist/features/events/components/AdminEventEditorView.js +203 -0
  75. package/dist/features/events/components/AdminEventsView.js +28 -2
  76. package/dist/features/events/components/EventCard.js +4 -2
  77. package/dist/features/events/components/EventFilters.js +2 -1
  78. package/dist/features/events/components/EventsIndexListing.js +40 -10
  79. package/dist/features/events/components/EventsListPageView.d.ts +6 -1
  80. package/dist/features/events/components/EventsListPageView.js +40 -7
  81. package/dist/features/events/components/index.d.ts +2 -0
  82. package/dist/features/events/components/index.js +1 -0
  83. package/dist/features/events/hooks/useEvents.js +2 -0
  84. package/dist/features/events/types/index.d.ts +1 -0
  85. package/dist/features/homepage/components/BlogArticlesSection.js +1 -1
  86. package/dist/features/homepage/components/EventsSection.js +1 -1
  87. package/dist/features/homepage/components/FeaturedAuctionsSection.js +1 -1
  88. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +1 -1
  89. package/dist/features/homepage/components/FeaturedProductsSection.js +1 -1
  90. package/dist/features/homepage/components/FeaturedStoresSection.js +1 -1
  91. package/dist/features/homepage/components/HeroCarousel.js +1 -1
  92. package/dist/features/homepage/components/MarketplaceHomepageView.js +27 -17
  93. package/dist/features/homepage/components/SectionCarousel.js +4 -4
  94. package/dist/features/homepage/components/ShopByCategorySection.js +2 -2
  95. package/dist/features/homepage/schemas/firestore.d.ts +1 -1
  96. package/dist/features/homepage/schemas/firestore.js +2 -1
  97. package/dist/features/layout/AppLayoutShell.d.ts +6 -2
  98. package/dist/features/layout/AppLayoutShell.js +7 -3
  99. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +3 -1
  100. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +6 -2
  101. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +80 -12
  102. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +8 -0
  103. package/dist/features/pre-orders/components/PreOrderFilters.js +21 -0
  104. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +2 -1
  105. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +69 -10
  106. package/dist/features/pre-orders/components/PreOrdersListView.d.ts +6 -1
  107. package/dist/features/pre-orders/components/PreOrdersListView.js +26 -7
  108. package/dist/features/pre-orders/components/index.d.ts +2 -0
  109. package/dist/features/pre-orders/components/index.js +1 -0
  110. package/dist/features/products/components/AuctionsIndexListing.d.ts +2 -1
  111. package/dist/features/products/components/AuctionsIndexListing.js +61 -9
  112. package/dist/features/products/components/InteractiveProductCard.d.ts +2 -4
  113. package/dist/features/products/components/InteractiveProductCard.js +2 -2
  114. package/dist/features/products/components/ProductDetailPageView.d.ts +1 -1
  115. package/dist/features/products/components/ProductDetailPageView.js +116 -25
  116. package/dist/features/products/components/ProductFilters.d.ts +6 -11
  117. package/dist/features/products/components/ProductFilters.js +5 -3
  118. package/dist/features/products/components/ProductGrid.d.ts +8 -2
  119. package/dist/features/products/components/ProductGrid.js +20 -5
  120. package/dist/features/products/components/ProductTabsShell.d.ts +3 -11
  121. package/dist/features/products/components/ProductTabsShell.js +14 -14
  122. package/dist/features/products/components/ProductsIndexListing.js +73 -9
  123. package/dist/features/products/components/ProductsIndexPageView.d.ts +6 -1
  124. package/dist/features/products/components/ProductsIndexPageView.js +39 -6
  125. package/dist/features/products/components/RelatedProductsCarousel.d.ts +7 -0
  126. package/dist/features/products/components/RelatedProductsCarousel.js +11 -0
  127. package/dist/features/products/components/index.d.ts +1 -0
  128. package/dist/features/products/components/index.js +1 -0
  129. package/dist/features/products/hooks/useProducts.js +16 -0
  130. package/dist/features/products/repository/products.repository.d.ts +8 -0
  131. package/dist/features/products/repository/products.repository.js +2 -0
  132. package/dist/features/products/schemas/index.d.ts +8 -8
  133. package/dist/features/products/types/index.d.ts +12 -0
  134. package/dist/features/promotions/components/CouponsIndexListing.d.ts +9 -0
  135. package/dist/features/promotions/components/CouponsIndexListing.js +86 -0
  136. package/dist/features/promotions/components/PromotionsView.d.ts +11 -5
  137. package/dist/features/promotions/components/PromotionsView.js +6 -1
  138. package/dist/features/promotions/components/index.d.ts +4 -2
  139. package/dist/features/promotions/components/index.js +2 -1
  140. package/dist/features/reviews/components/ReviewDetailPageView.d.ts +4 -0
  141. package/dist/features/reviews/components/ReviewDetailPageView.js +20 -0
  142. package/dist/features/reviews/components/ReviewDetailShell.d.ts +7 -0
  143. package/dist/features/reviews/components/ReviewDetailShell.js +80 -0
  144. package/dist/features/reviews/components/ReviewFilters.d.ts +3 -3
  145. package/dist/features/reviews/components/ReviewFilters.js +5 -4
  146. package/dist/features/reviews/components/ReviewsIndexListing.d.ts +4 -3
  147. package/dist/features/reviews/components/ReviewsIndexListing.js +35 -51
  148. package/dist/features/reviews/components/ReviewsIndexPageView.d.ts +6 -1
  149. package/dist/features/reviews/components/ReviewsIndexPageView.js +49 -3
  150. package/dist/features/reviews/components/ReviewsList.js +9 -1
  151. package/dist/features/reviews/components/index.d.ts +1 -0
  152. package/dist/features/reviews/hooks/useReviews.js +15 -1
  153. package/dist/features/reviews/types/index.d.ts +6 -1
  154. package/dist/features/seller/components/SellerSidebar.d.ts +8 -4
  155. package/dist/features/seller/components/SellerSidebar.js +6 -4
  156. package/dist/features/seller/components/index.d.ts +30 -0
  157. package/dist/features/seller/components/index.js +17 -0
  158. package/dist/features/seller/hooks/useSellerStore.d.ts +2 -0
  159. package/dist/features/seller/hooks/useSellerStore.js +2 -0
  160. package/dist/features/seller/permission-map.d.ts +4 -2
  161. package/dist/features/seller/permission-map.js +16 -14
  162. package/dist/features/seller/schemas/index.d.ts +2 -2
  163. package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +1 -1
  164. package/dist/features/stores/api/[storeSlug]/reviews/route.js +24 -19
  165. package/dist/features/stores/components/InteractiveStoreCard.d.ts +0 -5
  166. package/dist/features/stores/components/InteractiveStoreCard.js +9 -9
  167. package/dist/features/stores/components/StoreAuctionsListing.js +27 -9
  168. package/dist/features/stores/components/StoreDetailLayoutView.js +2 -0
  169. package/dist/features/stores/components/StoreFilters.d.ts +5 -0
  170. package/dist/features/stores/components/StoreFilters.js +20 -0
  171. package/dist/features/stores/components/StoreHeader.js +2 -2
  172. package/dist/features/stores/components/StorePreOrdersListing.d.ts +5 -0
  173. package/dist/features/stores/components/StorePreOrdersListing.js +40 -0
  174. package/dist/features/stores/components/StorePreOrdersPageView.d.ts +4 -0
  175. package/dist/features/stores/components/StorePreOrdersPageView.js +21 -0
  176. package/dist/features/stores/components/StoreProductsListing.js +21 -11
  177. package/dist/features/stores/components/StoreReviewsListing.js +2 -7
  178. package/dist/features/stores/components/StoresIndexListing.js +42 -8
  179. package/dist/features/stores/components/StoresIndexPageView.d.ts +6 -1
  180. package/dist/features/stores/components/StoresIndexPageView.js +9 -2
  181. package/dist/features/stores/components/index.d.ts +3 -0
  182. package/dist/features/stores/components/index.js +1 -0
  183. package/dist/features/stores/hooks/useStores.d.ts +7 -1
  184. package/dist/features/stores/hooks/useStores.js +16 -3
  185. package/dist/features/stores/schemas/index.d.ts +2 -2
  186. package/dist/features/stores/types/index.d.ts +3 -0
  187. package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +20 -0
  188. package/dist/features/wishlist/hooks/useGuestWishlist.js +49 -0
  189. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -0
  190. package/dist/features/wishlist/hooks/useWishlistCount.js +31 -0
  191. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +56 -0
  192. package/dist/features/wishlist/hooks/useWishlistWithGuest.js +57 -0
  193. package/dist/features/wishlist/index.d.ts +3 -0
  194. package/dist/features/wishlist/index.js +3 -0
  195. package/dist/features/wishlist/utils/guest-wishlist.d.ts +22 -0
  196. package/dist/features/wishlist/utils/guest-wishlist.js +70 -0
  197. package/dist/index.d.ts +50 -1
  198. package/dist/index.js +63 -1
  199. package/dist/next/routing/route-map.d.ts +70 -36
  200. package/dist/next/routing/route-map.js +30 -22
  201. package/dist/seed/addresses-seed-data.js +62 -261
  202. package/dist/seed/beyblade-seed-data.d.ts +7 -0
  203. package/dist/seed/beyblade-seed-data.js +947 -0
  204. package/dist/seed/bids-seed-data.d.ts +10 -2
  205. package/dist/seed/bids-seed-data.js +220 -1071
  206. package/dist/seed/blog-posts-seed-data.d.ts +2 -2
  207. package/dist/seed/blog-posts-seed-data.js +455 -117
  208. package/dist/seed/cart-seed-data.d.ts +9 -9
  209. package/dist/seed/cart-seed-data.js +73 -74
  210. package/dist/seed/coupons-seed-data.d.ts +3 -4
  211. package/dist/seed/coupons-seed-data.js +3 -509
  212. package/dist/seed/events-seed-data.d.ts +2 -2
  213. package/dist/seed/events-seed-data.js +315 -476
  214. package/dist/seed/faq-seed-data.d.ts +18 -41
  215. package/dist/seed/faq-seed-data.js +1059 -1172
  216. package/dist/seed/hot-wheels-seed-data.d.ts +7 -0
  217. package/dist/seed/hot-wheels-seed-data.js +1365 -0
  218. package/dist/seed/index.d.ts +6 -1
  219. package/dist/seed/index.js +6 -1
  220. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +4 -2
  221. package/dist/seed/pokemon-carousel-slides-seed-data.js +152 -268
  222. package/dist/seed/pokemon-categories-seed-data.d.ts +18 -21
  223. package/dist/seed/pokemon-categories-seed-data.js +424 -1004
  224. package/dist/seed/pokemon-coupons-seed-data.d.ts +6 -0
  225. package/dist/seed/pokemon-coupons-seed-data.js +465 -0
  226. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +3 -2
  227. package/dist/seed/pokemon-homepage-sections-seed-data.js +67 -289
  228. package/dist/seed/pokemon-products-seed-data.js +662 -0
  229. package/dist/seed/pokemon-seed-bundle.d.ts +32 -11
  230. package/dist/seed/pokemon-seed-bundle.js +41 -11
  231. package/dist/seed/pokemon-stores-seed-data.d.ts +2 -3
  232. package/dist/seed/pokemon-stores-seed-data.js +56 -31
  233. package/dist/seed/pokemon-users-seed-data.d.ts +2 -2
  234. package/dist/seed/pokemon-users-seed-data.js +245 -261
  235. package/dist/seed/reviews-seed-data.d.ts +17 -2
  236. package/dist/seed/reviews-seed-data.js +519 -483
  237. package/dist/seed/site-settings-seed-data.js +14 -14
  238. package/dist/seed/store-addresses-seed-data.js +68 -50
  239. package/dist/seed/transformers-seed-data.d.ts +7 -0
  240. package/dist/seed/transformers-seed-data.js +510 -0
  241. package/dist/seed/wishlists-seed-data.d.ts +5 -1
  242. package/dist/seed/wishlists-seed-data.js +82 -4
  243. package/dist/server.d.ts +1 -0
  244. package/dist/server.js +2 -0
  245. package/dist/tokens/index.d.ts +6 -0
  246. package/dist/tokens/index.js +2 -0
  247. package/dist/ui/components/BaseListingCard.js +24 -26
  248. package/dist/ui/components/BaseListingCard.style.css +5 -5
  249. package/dist/ui/components/HorizontalScroller.d.ts +1 -1
  250. package/dist/ui/components/HorizontalScroller.js +19 -5
  251. package/dist/ui/components/SideDrawer.style.css +3 -11
  252. package/dist/ui/rich-text/RichText.js +19 -1
  253. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Events Seed Data
3
- * Sample events: sale, offer, poll, survey, and feedback with entries
2
+ * Events Seed Data — Pokemon TCG Themed
3
+ * Sample events: sale, offer, poll, survey, feedback for Pokemon card collectors
4
4
  */
5
5
  import { EVENT_FIELDS, EVENT_ENTRY_FIELDS } from "../features/events/schemas";
6
6
  // --- Dynamic date helpers ---------------------------------------------------
@@ -10,20 +10,20 @@ const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
10
10
  const hoursAgo = (h) => new Date(NOW.getTime() - h * 3600000);
11
11
  // -- Events --------------------------------------------------------------------
12
12
  export const eventsSeedData = [
13
- // 1. Ended Sale Event — Anime Winter Season Sale
13
+ // 1. Ended Sale Event
14
14
  {
15
- id: "event-anime-winter-season-sale-2026-sale",
15
+ id: "event-pokemon-summer-holo-sale-2026-sale",
16
16
  type: EVENT_FIELDS.TYPE_VALUES.SALE,
17
- title: "Anime Winter Season Sale 2026 — 20% Off Everything",
18
- description: "<p>Celebrate the end of the Winter anime season with a <strong>flat 20% discount</strong> across all collectibles, figures, and cosplay. Limited-time offer sale ends 26 Jan at midnight.</p>",
17
+ title: "Pokemon Summer Holo Sale 2026 — 15% Off All Holo Rares",
18
+ description: "<p>Celebrate the summer season with a <strong>flat 15% discount</strong> across all holo rare singles. Stock up on Base Set holos, fossil holos, and jungle holos before prices climb again.</p>",
19
19
  status: EVENT_FIELDS.STATUS_VALUES.ENDED,
20
20
  startsAt: daysAgo(45),
21
- endsAt: daysAgo(43),
22
- coverImageUrl: "https://picsum.photos/seed/anime-winter-sale/1200/400",
21
+ endsAt: daysAgo(38),
22
+ coverImageUrl: "https://images.pokemontcg.io/base1/4_hires.png",
23
23
  saleConfig: {
24
- discountPercent: 20,
25
- bannerText: "❄️ Anime Winter Season Sale — 20% Off Sitewide!",
26
- affectedCategories: [],
24
+ discountPercent: 15,
25
+ bannerText: "Pokemon Summer Holo Sale — 15% Off All Holo Rares!",
26
+ affectedCategories: ["category-holo-rare-rarity"],
27
27
  },
28
28
  stats: {
29
29
  totalEntries: 0,
@@ -32,634 +32,473 @@ export const eventsSeedData = [
32
32
  },
33
33
  createdBy: "user-admin-user-admin",
34
34
  createdAt: daysAgo(49),
35
- updatedAt: daysAgo(42),
36
- },
37
- // 2. Active Offer Event — AniCon 2026 Coupon Drop
38
- {
39
- id: "event-anicon-2026-coupon-drop-offer",
40
- type: EVENT_FIELDS.TYPE_VALUES.OFFER,
41
- title: "AniCon 2026 Coupon Drop — Extra 15% Off with ANIMECON15",
42
- description: "<p>Celebrating AniCon 2026! Use code <strong>ANIMECON15</strong> to get an extra 15% off any order. Valid on all orders over ₹999 — stack it on top of sale prices!</p>",
43
- status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
44
- startsAt: daysAgo(5),
45
- endsAt: daysAhead(9),
46
- coverImageUrl: "https://picsum.photos/seed/animecon-2026-offer/1200/400",
47
- offerConfig: {
48
- couponId: "coupon-ANIMECON15",
49
- displayCode: "ANIMECON15",
50
- bannerText: "🎌 AniCon 2026 — Use ANIMECON15 for 15% extra off!",
51
- },
52
- stats: {
53
- totalEntries: 0,
54
- approvedEntries: 0,
55
- flaggedEntries: 0,
56
- },
57
- createdBy: "user-admin-user-admin",
58
- createdAt: daysAgo(12),
59
- updatedAt: daysAgo(12),
35
+ updatedAt: daysAgo(37),
60
36
  },
61
- // 3. Ended Poll — Anime Franchise Features
37
+ // 2. Active Poll Event Favourite Gen 1 Starter
62
38
  {
63
- id: "event-anime-franchise-poll-2026-poll",
39
+ id: "event-favourite-gen1-starter-poll-2026-poll",
64
40
  type: EVENT_FIELDS.TYPE_VALUES.POLL,
65
- title: "Which Anime Franchise Should We Feature Next Month?",
66
- description: "<p>We want to feature the franchise YOU love most in March. Cast your vote and shape what drops on the LetItRip homepage next month new figures, exclusive cosplay, and special auction lots!</p>",
67
- status: EVENT_FIELDS.STATUS_VALUES.ENDED,
68
- startsAt: daysAgo(22),
69
- endsAt: daysAgo(9),
41
+ title: "Vote: Which Gen 1 Starter Has the Best Base Set Card?",
42
+ description: "<p>The eternal debate <strong>Charizard, Blastoise, or Venusaur</strong>? Vote for which of the original three starters has the best card art in the Base Set. Results go live after the poll closes.</p>",
43
+ status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
44
+ startsAt: daysAgo(7),
45
+ endsAt: daysAhead(7),
46
+ coverImageUrl: "https://images.pokemontcg.io/base1/15_hires.png",
70
47
  pollConfig: {
71
- allowMultiSelect: false,
72
- allowComment: true,
73
48
  options: [
74
- { id: "opt-dragon-ball", label: "Dragon Ball (Z / Super)" },
75
- { id: "opt-one-piece", label: "One Piece" },
76
- { id: "opt-jjk", label: "Jujutsu Kaisen" },
77
- { id: "opt-demon-slayer", label: "Demon Slayer" },
78
- { id: "opt-bleach", label: "Bleach: Thousand-Year Blood War" },
49
+ { id: "charizard", label: "Charizard (#4)" },
50
+ { id: "blastoise", label: "Blastoise (#2)" },
51
+ { id: "venusaur", label: "Venusaur (#15)" },
79
52
  ],
80
- resultsVisibility: "after_vote",
53
+ allowMultiSelect: false,
54
+ allowComment: true,
55
+ resultsVisibility: "after_end",
81
56
  },
82
- coverImageUrl: "https://picsum.photos/seed/anime-franchise-poll/1200/400",
57
+ tags: ["poll", "starter-pokemon", "base-set", "community"],
83
58
  stats: {
84
59
  totalEntries: 312,
85
60
  approvedEntries: 312,
86
- flaggedEntries: 0,
61
+ flaggedEntries: 2,
87
62
  },
88
63
  createdBy: "user-admin-user-admin",
89
- createdAt: daysAgo(27),
90
- updatedAt: daysAgo(10),
64
+ createdAt: daysAgo(10),
65
+ updatedAt: daysAgo(1),
91
66
  },
92
- // 4. Ended SurveyProduct Feedback Survey
67
+ // 3. Active Feedback Event Best Pull Story (giveaway-style)
93
68
  {
94
- id: "event-platform-experience-survey-2026-survey",
95
- type: EVENT_FIELDS.TYPE_VALUES.SURVEY,
96
- title: "LetItRip Platform Experience Survey — Win ₹500 Voucher",
97
- description: "<p>Share your honest feedback about LetItRip and be entered into a draw to <strong>win a 500 shopping voucher</strong>. Takes 3 minutes we promise.</p>",
98
- status: EVENT_FIELDS.STATUS_VALUES.ENDED,
99
- startsAt: daysAgo(68),
100
- endsAt: daysAgo(37),
101
- surveyConfig: {
102
- requireLogin: true,
103
- maxEntriesPerUser: 1,
104
- hasLeaderboard: false,
105
- hasPointSystem: false,
106
- entryReviewRequired: false,
69
+ id: "event-1st-edition-booster-giveaway-2026-feedback",
70
+ type: EVENT_FIELDS.TYPE_VALUES.FEEDBACK,
71
+ title: "Share Your Best Pull Story — Win a Sealed 1st Edition Booster Pack!",
72
+ description: "<p>We're giving away a <strong>sealed 1st Edition Base Set Booster Pack</strong> estimated value95,000+. Share your best pull story and tag a friend who loves Pokemon TCG.</p>",
73
+ status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
74
+ startsAt: daysAgo(3),
75
+ endsAt: daysAhead(11),
76
+ coverImageUrl: "https://images.pokemontcg.io/base1/4_hires.png",
77
+ feedbackConfig: {
107
78
  formFields: [
108
79
  {
109
- id: "sf-overall",
110
- type: "rating",
111
- label: "Overall, how satisfied are you with LetItRip?",
80
+ id: "story",
81
+ type: "textarea",
82
+ label: "Share your best Pokemon card pull story",
112
83
  required: true,
113
84
  order: 1,
114
85
  },
115
86
  {
116
- id: "sf-discovery",
117
- type: "radio",
118
- label: "How did you discover LetItRip?",
119
- required: true,
120
- options: [
121
- "Search engine",
122
- "Social media",
123
- "Friend / family",
124
- "Online ad",
125
- "Other",
126
- ],
127
- order: 2,
128
- },
129
- {
130
- id: "sf-improve",
131
- type: "textarea",
132
- label: "What's one thing we could improve?",
133
- placeholder: "Tell us in a few words…",
87
+ id: "tagged_friend",
88
+ type: "text",
89
+ label: "Tag a friend (username or social handle)",
134
90
  required: false,
135
- validation: { maxLength: 500 },
136
- order: 3,
91
+ order: 2,
137
92
  },
138
93
  ],
94
+ anonymous: false,
139
95
  },
140
- coverImageUrl: "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=1200&h=400&fit=crop",
96
+ tags: ["giveaway", "1st-edition", "base-set", "booster-pack"],
141
97
  stats: {
142
- totalEntries: 2418,
143
- approvedEntries: 2418,
144
- flaggedEntries: 12,
98
+ totalEntries: 847,
99
+ approvedEntries: 839,
100
+ flaggedEntries: 8,
145
101
  },
146
102
  createdBy: "user-admin-user-admin",
147
- createdAt: daysAgo(72),
148
- updatedAt: daysAgo(36),
103
+ createdAt: daysAgo(5),
104
+ updatedAt: hoursAgo(6),
149
105
  },
150
- // 5. Active Feedback Event — anonymous contact form
106
+ // 4. Upcoming Poll Event — Best PSA Submission
151
107
  {
152
- id: "event-seller-feedback-form-2026-feedback",
153
- type: EVENT_FIELDS.TYPE_VALUES.FEEDBACK,
154
- title: "Help Us Improve the Seller Experience",
155
- description: "<p>Selling on LetItRip? We'd love your feedback. This anonymous form takes 2 minutes and every response is reviewed by our product team.</p>",
108
+ id: "event-best-psa-submission-contest-2026-poll",
109
+ type: EVENT_FIELDS.TYPE_VALUES.POLL,
110
+ title: "Best PSA Submission Community Vote for Top Grade!",
111
+ description: "<p>The community votes for the most impressive PSA-graded Pokemon card. Winner receives store credit and a featured listing slot. Base Set cards only.</p>",
156
112
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
157
- startsAt: daysAgo(36),
158
- endsAt: daysAhead(52),
159
- feedbackConfig: {
160
- anonymous: true,
113
+ startsAt: daysAhead(3),
114
+ endsAt: daysAhead(17),
115
+ coverImageUrl: "https://images.pokemontcg.io/base1/10_hires.png",
116
+ pollConfig: {
117
+ options: [
118
+ { id: "charizard-psa10", label: "Charizard PSA 10" },
119
+ { id: "mewtwo-psa9", label: "Mewtwo PSA 9" },
120
+ { id: "blastoise-psa10", label: "Blastoise PSA 10" },
121
+ ],
122
+ allowMultiSelect: false,
123
+ allowComment: true,
124
+ resultsVisibility: "after_end",
125
+ },
126
+ tags: ["contest", "psa", "grading", "base-set", "community"],
127
+ stats: {
128
+ totalEntries: 0,
129
+ approvedEntries: 0,
130
+ flaggedEntries: 0,
131
+ },
132
+ createdBy: "user-admin-user-admin",
133
+ createdAt: daysAgo(2),
134
+ updatedAt: daysAgo(1),
135
+ },
136
+ // 5. Active Survey — Buyer Experience
137
+ {
138
+ id: "event-buyer-experience-survey-2026-survey",
139
+ type: EVENT_FIELDS.TYPE_VALUES.SURVEY,
140
+ title: "Pokemon TCG Buyer Experience Survey",
141
+ description: "<p>Help us improve the LetItRip Pokemon TCG buying experience. This short survey takes 2 minutes and helps us understand what collectors want most from our platform.</p>",
142
+ status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
143
+ startsAt: daysAgo(14),
144
+ endsAt: daysAhead(14),
145
+ coverImageUrl: "https://images.pokemontcg.io/base1/58_hires.png",
146
+ surveyConfig: {
147
+ requireLogin: true,
148
+ maxEntriesPerUser: 1,
149
+ hasLeaderboard: false,
150
+ hasPointSystem: false,
151
+ entryReviewRequired: false,
161
152
  formFields: [
162
153
  {
163
- id: "fb-dashboard",
154
+ id: "satisfaction",
164
155
  type: "rating",
165
- label: "How easy is the seller dashboard to use?",
156
+ label: "How satisfied are you with our Pokemon card listings?",
166
157
  required: true,
167
158
  order: 1,
168
159
  },
169
160
  {
170
- id: "fb-payout",
171
- type: "radio",
172
- label: "Are you satisfied with the payout turnaround time?",
173
- required: true,
174
- options: ["Very satisfied", "Satisfied", "Neutral", "Dissatisfied"],
161
+ id: "most_wanted",
162
+ type: "text",
163
+ label: "Which Pokemon card are you currently hunting?",
164
+ required: false,
175
165
  order: 2,
176
166
  },
177
167
  {
178
- id: "fb-comment",
168
+ id: "improvements",
179
169
  type: "textarea",
180
- label: "Any additional comments?",
181
- placeholder: "Optional — share whatever is on your mind…",
170
+ label: "What would make your experience better?",
182
171
  required: false,
183
- validation: { maxLength: 1000 },
184
172
  order: 3,
185
173
  },
186
174
  ],
187
175
  },
188
- coverImageUrl: "https://images.unsplash.com/photo-1542744173-8e7e53415bb0?w=1200&h=400&fit=crop",
176
+ tags: ["survey", "feedback", "buyer-experience"],
189
177
  stats: {
190
- totalEntries: 74,
191
- approvedEntries: 74,
178
+ totalEntries: 156,
179
+ approvedEntries: 156,
192
180
  flaggedEntries: 0,
193
181
  },
194
182
  createdBy: "user-admin-user-admin",
195
- createdAt: daysAgo(40),
196
- updatedAt: daysAgo(10),
183
+ createdAt: daysAgo(16),
184
+ updatedAt: daysAgo(2),
197
185
  },
198
- // 6. Active Sale — Spring Otaku Sale 15% off all collectibles
186
+ // 6. Ended Offer Event
199
187
  {
200
- id: "event-spring-otaku-sale-2026-sale",
201
- type: EVENT_FIELDS.TYPE_VALUES.SALE,
202
- title: "Spring Otaku Sale 202615% Off All Collectibles & Cosplay",
203
- description: "<p>Spring season is here and so are new anime releases! Grab <strong>15% off</strong> all figures, cosplay, Nendoroids, and Gunpla kits. Valid 8–10 March 2026 only.</p>",
204
- status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
205
- startsAt: daysAgo(1),
206
- endsAt: daysAhead(1),
207
- coverImageUrl: "https://picsum.photos/seed/spring-otaku-sale/1200/400",
208
- saleConfig: {
209
- discountPercent: 15,
210
- bannerText: "🌸 Spring Otaku Sale — 15% off all Figures & Cosplay!",
211
- affectedCategories: ["category-electronics", "category-fashion"],
188
+ id: "event-new-trainer-welcome-offer-2026-offer",
189
+ type: EVENT_FIELDS.TYPE_VALUES.OFFER,
190
+ title: "New Trainer Welcome Offer10% Off Your First Order",
191
+ description: "<p>New to LetItRip? Welcome, Trainer! Use code <strong>NEWTRAINER10</strong> for 10% off your first Pokemon card purchase. Valid on all singles, sealed product, and accessories.</p>",
192
+ status: EVENT_FIELDS.STATUS_VALUES.ENDED,
193
+ startsAt: daysAgo(60),
194
+ endsAt: daysAgo(30),
195
+ coverImageUrl: "https://images.pokemontcg.io/base1/58_hires.png",
196
+ offerConfig: {
197
+ couponId: "coupon-newtrainer10",
198
+ displayCode: "NEWTRAINER10",
199
+ bannerText: "New Trainer? Get 10% off your first order with NEWTRAINER10",
212
200
  },
201
+ tags: ["offer", "welcome", "new-trainer", "discount"],
213
202
  stats: {
214
203
  totalEntries: 0,
215
204
  approvedEntries: 0,
216
205
  flaggedEntries: 0,
217
206
  },
218
207
  createdBy: "user-admin-user-admin",
219
- createdAt: daysAgo(8),
220
- updatedAt: daysAgo(8),
208
+ createdAt: daysAgo(65),
209
+ updatedAt: daysAgo(29),
221
210
  },
222
- // 7. Draft Sale — Summer Anime Season Sale (future)
211
+ // 7. Active Sale — Hot Wheels Car Culture Flash Sale
223
212
  {
224
- id: "event-summer-anime-season-sale-2026-sale",
213
+ id: "event-hot-wheels-car-culture-flash-sale-2026-sale",
225
214
  type: EVENT_FIELDS.TYPE_VALUES.SALE,
226
- title: "Summer Anime Season Sale 2026 Up to 40% Off",
227
- description: "<p>Get ready for our biggest otaku sale of the year! Enjoy <strong>up to 40% off</strong> exclusive figures, pre-orders, Gunpla, and cosplay across LetItRip. Mark your calendars — 1–10 July 2026.</p>",
228
- status: EVENT_FIELDS.STATUS_VALUES.DRAFT,
229
- startsAt: daysAhead(115),
230
- endsAt: daysAhead(124),
231
- coverImageUrl: "https://picsum.photos/seed/summer-anime-season-sale/1200/400",
232
- saleConfig: {
233
- discountPercent: 40,
234
- bannerText: "☀️ Summer Anime Season Sale — Up to 40% off sitewide!",
235
- affectedCategories: [],
236
- },
237
- stats: {
238
- totalEntries: 0,
239
- approvedEntries: 0,
240
- flaggedEntries: 0,
241
- },
242
- createdBy: "user-admin-user-admin",
243
- createdAt: daysAgo(1),
244
- updatedAt: daysAgo(1),
245
- },
246
- // 8. Active Offer — Golden Week Anime Special
247
- {
248
- id: "event-golden-week-anime-special-2026-offer",
249
- type: EVENT_FIELDS.TYPE_VALUES.OFFER,
250
- title: "Golden Week Anime Special — 10% Off with GOLDENWEEK10",
251
- description: "<p>Celebrate Golden Week with otaku deals! Use code <strong>GOLDENWEEK10</strong> at checkout to get 10% off all pre-orders, scale figures, and Gunpla kits. Valid on orders over ₹500.</p>",
215
+ title: "Hot Wheels Car Culture Flash Sale — 20% Off 5-Car Packs",
216
+ description: "<p>Limited-time flash sale <strong>20% off all Hot Wheels Car Culture 5-car assortments</strong> at Speed King Diecast. Japan Historics, Germany or Bust, and more. Ends Sunday!</p>",
252
217
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
253
218
  startsAt: daysAgo(2),
254
219
  endsAt: daysAhead(5),
255
- coverImageUrl: "https://picsum.photos/seed/golden-week-anime/1200/400",
256
- offerConfig: {
257
- couponId: "coupon-GOLDENWEEK10",
258
- displayCode: "GOLDENWEEK10",
259
- bannerText: "⛩️ Golden Week Special — Use GOLDENWEEK10 for 10% off figures & pre-orders!",
220
+ coverImageUrl: "https://picsum.photos/seed/hw-car-culture-sale/800/400",
221
+ saleConfig: {
222
+ discountPercent: 20,
223
+ bannerText: "Hot Wheels Car Culture Flash Sale — 20% Off This Weekend!",
224
+ affectedCategories: ["category-hw-premium"],
260
225
  },
226
+ tags: ["hot-wheels", "car-culture", "flash-sale", "discount", "speed-king"],
261
227
  stats: {
262
228
  totalEntries: 0,
263
229
  approvedEntries: 0,
264
230
  flaggedEntries: 0,
265
231
  },
266
232
  createdBy: "user-admin-user-admin",
267
- createdAt: daysAgo(10),
268
- updatedAt: daysAgo(10),
233
+ createdAt: daysAgo(3),
234
+ updatedAt: daysAgo(2),
269
235
  },
270
- // 9. Active Poll — Favourite Anime Figure Manufacturer
236
+ // 8. Active Poll — Best Beyblade Burst Series
271
237
  {
272
- id: "event-best-anime-figures-brand-poll-2026-poll",
238
+ id: "event-best-beyblade-burst-series-poll-2026-poll",
273
239
  type: EVENT_FIELDS.TYPE_VALUES.POLL,
274
- title: "Who Makes the Best Anime Figures? Cast Your Vote!",
275
- description: "<p>Which figure manufacturer do you trust most? Cast your vote and see live results everyone can see the tally as it updates in real time!</p>",
240
+ title: "Vote: Which Is the Best Beyblade Burst Series?",
241
+ description: "<p>From Classic to MCC which series introduced your favourite mechanics and best tops? Cast your vote and join the discussion. Results revealed when the poll closes.</p>",
276
242
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
277
- startsAt: daysAgo(8),
278
- endsAt: daysAhead(52),
279
- coverImageUrl: "https://picsum.photos/seed/figure-manufacturer-poll/1200/400",
243
+ startsAt: daysAgo(5),
244
+ endsAt: daysAhead(9),
245
+ coverImageUrl: "https://picsum.photos/seed/beyblade-poll/800/400",
280
246
  pollConfig: {
281
- allowMultiSelect: false,
282
- allowComment: false,
283
247
  options: [
284
- { id: "opt-gsc", label: "Good Smile Company" },
285
- { id: "opt-alter", label: "Alter" },
286
- { id: "opt-kotobukiya", label: "Kotobukiya" },
287
- { id: "opt-megahouse", label: "MegaHouse" },
288
- { id: "opt-bandai", label: "Bandai / S.H.Figuarts" },
289
- { id: "opt-other", label: "Other" },
248
+ { id: "classic", label: "Classic / Original Burst" },
249
+ { id: "turbo", label: "Burst Turbo / Cho-Z" },
250
+ { id: "gt", label: "Burst GT / Gachi" },
251
+ { id: "superking", label: "Burst Superking / Sparking" },
252
+ { id: "quaddrive", label: "QuadDrive" },
253
+ { id: "mcc", label: "DB / MCC" },
290
254
  ],
291
- resultsVisibility: "always",
255
+ allowMultiSelect: false,
256
+ allowComment: true,
257
+ resultsVisibility: "after_end",
292
258
  },
259
+ tags: ["beyblade", "poll", "series", "community", "burst"],
293
260
  stats: {
294
- totalEntries: 4,
295
- approvedEntries: 4,
261
+ totalEntries: 214,
262
+ approvedEntries: 214,
296
263
  flaggedEntries: 0,
297
264
  },
298
265
  createdBy: "user-admin-user-admin",
299
- createdAt: daysAgo(12),
266
+ createdAt: daysAgo(6),
300
267
  updatedAt: daysAgo(1),
301
268
  },
302
- // 10. Active SurveyShopping Experience with leaderboard + points
269
+ // 9. Active FeedbackTransformers Figure Wishlist Survey
303
270
  {
304
- id: "event-shopping-experience-survey-2026-survey",
271
+ id: "event-transformers-figure-wishlist-survey-2026-survey",
305
272
  type: EVENT_FIELDS.TYPE_VALUES.SURVEY,
306
- title: "Tell Us About Your Shopping Experience Earn Stars!",
307
- description: "<p>Complete this short survey and earn <strong>Stars</strong> on our leaderboard. Top contributors each month win exclusive LetItRip rewards!</p>",
273
+ title: "Tell Us: Which Transformers Figures Do You Want Listed?",
274
+ description: "<p>Help us stock what you actually want. Share your Transformers wishlist Studio Series, Legacy, G1 vintage, or Masterpiece? We'll use these results to prioritise our Speed King Diecast stock requests.</p>",
308
275
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
309
- startsAt: daysAgo(5),
310
- endsAt: daysAhead(83),
311
- coverImageUrl: "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?w=1200&h=400&fit=crop",
276
+ startsAt: daysAgo(10),
277
+ endsAt: daysAhead(20),
278
+ coverImageUrl: "https://picsum.photos/seed/tf-wishlist-survey/800/400",
312
279
  surveyConfig: {
313
280
  requireLogin: true,
314
281
  maxEntriesPerUser: 1,
315
- hasLeaderboard: true,
316
- hasPointSystem: true,
317
- pointsLabel: "Stars",
318
- entryReviewRequired: true,
282
+ hasLeaderboard: false,
283
+ hasPointSystem: false,
284
+ entryReviewRequired: false,
319
285
  formFields: [
320
286
  {
321
- id: "sq-name",
287
+ id: "line",
322
288
  type: "text",
323
- label: "Your first name",
324
- placeholder: "e.g. Priya",
289
+ label: "Which Transformers line do you prefer? (Studio Series, Legacy, Masterpiece, G1 vintage)",
325
290
  required: true,
326
291
  order: 1,
327
292
  },
328
293
  {
329
- id: "sq-rating",
330
- type: "rating",
331
- label: "How would you rate your overall shopping experience?",
294
+ id: "wishlist",
295
+ type: "textarea",
296
+ label: "List up to 5 specific figures you'd like to see available on LetItRip",
332
297
  required: true,
333
298
  order: 2,
334
299
  },
335
300
  {
336
- id: "sq-category",
337
- type: "radio",
338
- label: "Which category do you shop in most?",
339
- required: true,
340
- options: [
341
- "Scale Figures",
342
- "Nendoroids & Chibis",
343
- "Gunpla & Model Kits",
344
- "Cosplay & Apparel",
345
- "TCG & Trading Cards",
346
- ],
347
- order: 3,
348
- },
349
- {
350
- id: "sq-features",
351
- type: "checkbox",
352
- label: "Which platform features do you use? (select all that apply)",
353
- required: false,
354
- options: [
355
- "Wishlist",
356
- "Product Reviews",
357
- "Price Alerts",
358
- "Deals & Events",
359
- "Auction",
360
- ],
361
- order: 4,
362
- },
363
- {
364
- id: "sq-suggestion",
365
- type: "textarea",
366
- label: "What one feature would you most like to see added?",
367
- placeholder: "Describe in a few sentences…",
301
+ id: "budget",
302
+ type: "text",
303
+ label: "What's your typical budget per Transformers figure?",
368
304
  required: false,
369
- validation: { maxLength: 500 },
370
- order: 5,
305
+ order: 3,
371
306
  },
372
307
  ],
373
308
  },
309
+ tags: ["transformers", "survey", "wishlist", "studio-series", "legacy"],
374
310
  stats: {
375
- totalEntries: 2,
376
- approvedEntries: 1,
311
+ totalEntries: 98,
312
+ approvedEntries: 98,
377
313
  flaggedEntries: 0,
378
314
  },
379
315
  createdBy: "user-admin-user-admin",
380
- createdAt: daysAgo(14),
381
- updatedAt: hoursAgo(12),
316
+ createdAt: daysAgo(11),
317
+ updatedAt: daysAgo(1),
318
+ },
319
+ // 10. Active Offer — Beyblade Burst Bundle Deal
320
+ {
321
+ id: "event-beyblade-burst-bundle-offer-2026-offer",
322
+ type: EVENT_FIELDS.TYPE_VALUES.OFFER,
323
+ title: "Bladers Paradise Bundle Deal — Buy 2 Tops, Get Free Stadium",
324
+ description: "<p>Order any 2 Beyblade Burst starter/individual tops from Bladers Paradise and get a <strong>free standard stadium</strong> (worth ₹1,299). Use code <strong>BBBUNDLE2</strong> at checkout. While stocks last!</p>",
325
+ status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
326
+ startsAt: daysAgo(1),
327
+ endsAt: daysAhead(13),
328
+ coverImageUrl: "https://picsum.photos/seed/beyblade-bundle-offer/800/400",
329
+ offerConfig: {
330
+ couponId: "coupon-bbbundle2",
331
+ displayCode: "BBBUNDLE2",
332
+ bannerText: "Buy 2 Beyblade Tops → Free Stadium! Use BBBUNDLE2",
333
+ },
334
+ tags: ["beyblade", "offer", "bundle", "stadium", "bladers-paradise"],
335
+ stats: {
336
+ totalEntries: 0,
337
+ approvedEntries: 0,
338
+ flaggedEntries: 0,
339
+ },
340
+ createdBy: "user-admin-user-admin",
341
+ createdAt: daysAgo(2),
342
+ updatedAt: daysAgo(1),
382
343
  },
383
- // 11. Active Feedback — App Experience (non-anonymous)
344
+ // 11. Active Feedback — Hot Wheels Collector Community Survey
384
345
  {
385
- id: "event-app-experience-feedback-2026-feedback",
346
+ id: "event-hot-wheels-collector-survey-2026-feedback",
386
347
  type: EVENT_FIELDS.TYPE_VALUES.FEEDBACK,
387
- title: "Rate Your LetItRip App Experience",
388
- description: "<p>Tell us what you think about the LetItRip app. Your named feedback helps our team prioritise improvements thank you for taking a moment!</p>",
348
+ title: "Hot Wheels Collectors Survey — Win a Super Treasure Hunt!",
349
+ description: "<p>Complete this 2-minute survey about your Hot Wheels collecting habits and be entered to <strong>win a Super Treasure Hunt</strong> of our choice (value ₹2,000–₹5,000). One lucky winner drawn when entries close.</p>",
389
350
  status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
390
- startsAt: daysAgo(5),
391
- endsAt: daysAhead(83),
392
- coverImageUrl: "https://images.unsplash.com/photo-1512941937669-90a1b58e7e9c?w=1200&h=400&fit=crop",
351
+ startsAt: daysAgo(4),
352
+ endsAt: daysAhead(10),
353
+ coverImageUrl: "https://picsum.photos/seed/hw-survey-event/800/400",
393
354
  feedbackConfig: {
394
- anonymous: false,
395
355
  formFields: [
396
356
  {
397
- id: "afb-ease",
398
- type: "rating",
399
- label: "How easy is it to find what you're looking for?",
357
+ id: "collecting_focus",
358
+ type: "text",
359
+ label: "What's your Hot Wheels collecting focus? (TH hunting, Car Culture, mainline, track sets)",
400
360
  required: true,
401
361
  order: 1,
402
362
  },
403
363
  {
404
- id: "afb-performance",
405
- type: "radio",
406
- label: "How would you rate the app's speed and performance?",
364
+ id: "most_wanted_casting",
365
+ type: "text",
366
+ label: "Name your most-wanted Hot Wheels casting currently",
407
367
  required: true,
408
- options: ["Excellent", "Good", "Average", "Poor"],
409
368
  order: 2,
410
369
  },
411
370
  {
412
- id: "afb-recommend",
413
- type: "radio",
414
- label: "Would you recommend LetItRip to a friend?",
415
- required: true,
416
- options: ["Definitely", "Probably", "Not sure", "No"],
417
- order: 3,
418
- },
419
- {
420
- id: "afb-comments",
421
- type: "textarea",
422
- label: "Any other feedback for our team?",
423
- placeholder: "Share your thoughts…",
371
+ id: "monthly_spend",
372
+ type: "text",
373
+ label: "Roughly how much do you spend on Hot Wheels per month?",
424
374
  required: false,
425
- validation: { maxLength: 600 },
426
- order: 4,
375
+ order: 3,
427
376
  },
428
377
  ],
378
+ anonymous: false,
429
379
  },
380
+ tags: ["hot-wheels", "survey", "giveaway", "super-th", "community"],
430
381
  stats: {
431
- totalEntries: 3,
432
- approvedEntries: 3,
433
- flaggedEntries: 0,
382
+ totalEntries: 183,
383
+ approvedEntries: 180,
384
+ flaggedEntries: 3,
434
385
  },
435
386
  createdBy: "user-admin-user-admin",
436
- createdAt: daysAgo(14),
437
- updatedAt: hoursAgo(8),
438
- },
439
- ];
440
- // -- Event Entries -------------------------------------------------------------
441
- export const eventEntriesSeedData = [
442
- // Poll votes — anime franchise poll
443
- {
444
- id: "entry-poll-franchise-john-one-piece",
445
- eventId: "event-anime-franchise-poll-2026-poll",
446
- userId: "user-john-doe-johndoe",
447
- userDisplayName: "John Doe",
448
- userEmail: "john@letitrip.in",
449
- pollVotes: ["opt-one-piece"],
450
- pollComment: "One Piece has so many incredible figures and the Going Merry model is stunning!",
451
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
452
- submittedAt: daysAgo(20),
453
- },
454
- {
455
- id: "entry-poll-franchise-jane-demon-slayer",
456
- eventId: "event-anime-franchise-poll-2026-poll",
457
- userId: "user-jane-smith-janes",
458
- userDisplayName: "Jane Smith",
459
- userEmail: "jane@letitrip.in",
460
- pollVotes: ["opt-demon-slayer"],
461
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
462
- submittedAt: daysAgo(19),
463
- },
464
- {
465
- id: "entry-poll-franchise-mike-jjk",
466
- eventId: "event-anime-franchise-poll-2026-poll",
467
- userId: "user-mike-johnson-mikejohn",
468
- userDisplayName: "Mike Johnson",
469
- userEmail: "mike@letitrip.in",
470
- pollVotes: ["opt-jjk"],
471
- pollComment: "JJK figures have the best sculpts right now — Sukuna and Gojo both look incredible.",
472
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
473
- submittedAt: daysAgo(18),
474
- },
475
- // Survey responses
476
- {
477
- id: "entry-survey-platform-john",
478
- eventId: "event-platform-experience-survey-2026-survey",
479
- userId: "user-john-doe-johndoe",
480
- userDisplayName: "John Doe",
481
- userEmail: "john@letitrip.in",
482
- formResponses: {
483
- "sf-overall": 5,
484
- "sf-discovery": "Search engine",
485
- "sf-improve": "Faster search filters would be great.",
486
- },
487
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
488
- submittedAt: daysAgo(60),
387
+ createdAt: daysAgo(5),
388
+ updatedAt: daysAgo(1),
489
389
  },
390
+ // 12. Active Sale — Pokémon Multi-Set Clearance
490
391
  {
491
- id: "entry-survey-platform-jane",
492
- eventId: "event-platform-experience-survey-2026-survey",
493
- userId: "user-jane-smith-janes",
494
- userDisplayName: "Jane Smith",
495
- userEmail: "jane@letitrip.in",
496
- formResponses: {
497
- "sf-overall": 4,
498
- "sf-discovery": "Friend / family",
499
- "sf-improve": "Would love a wishlist sharing feature.",
392
+ id: "event-pokemon-multiseries-clearance-2026-sale",
393
+ type: EVENT_FIELDS.TYPE_VALUES.SALE,
394
+ title: "Pokémon TCG Multi-Series Clearance — Up to 25% Off Non-Holo Rares & Uncommons",
395
+ description: "<p>Clearance sale across all three LetItRip Pokémon TCG stores. <strong>Up to 25% off</strong> non-holo rares, uncommons, and common energy lots. Perfect for completing your Base Set playset.</p>",
396
+ status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
397
+ startsAt: daysAgo(3),
398
+ endsAt: daysAhead(7),
399
+ coverImageUrl: "https://images.pokemontcg.io/base1/2_hires.png",
400
+ saleConfig: {
401
+ discountPercent: 25,
402
+ bannerText: "Pokémon Clearance Sale — Up to 25% Off Non-Holo Rares & Uncommons!",
403
+ affectedCategories: ["category-non-holo-rare-rarity", "category-uncommon-rarity", "category-common-rarity"],
500
404
  },
501
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
502
- submittedAt: daysAgo(55),
503
- },
504
- // Feedback (anonymous)
505
- {
506
- id: "entry-feedback-seller-anon-1",
507
- eventId: "event-seller-feedback-form-2026-feedback",
508
- formResponses: {
509
- "fb-dashboard": 4,
510
- "fb-payout": "Satisfied",
511
- "fb-comment": "The dashboard is quite good. Would love bulk image upload.",
405
+ tags: ["pokemon", "clearance", "sale", "non-holo", "uncommon", "common"],
406
+ stats: {
407
+ totalEntries: 0,
408
+ approvedEntries: 0,
409
+ flaggedEntries: 0,
512
410
  },
513
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
514
- submittedAt: daysAgo(30),
411
+ createdBy: "user-admin-user-admin",
412
+ createdAt: daysAgo(4),
413
+ updatedAt: daysAgo(3),
515
414
  },
415
+ // 13. Cancelled — Transformers Convention Live Event (cancelled due to venue issue)
516
416
  {
517
- id: "entry-feedback-seller-anon-2",
518
- eventId: "event-seller-feedback-form-2026-feedback",
519
- formResponses: {
520
- "fb-dashboard": 3,
521
- "fb-payout": "Neutral",
522
- "fb-comment": "Payout is a bit slow. 5 days feels long for small orders.",
417
+ id: "event-transformers-convention-mumbai-2026-cancelled",
418
+ type: EVENT_FIELDS.TYPE_VALUES.OFFER,
419
+ title: "Transformers Collector Meet-Up Mumbai 2026 [CANCELLED]",
420
+ description: "<p><strong>This event has been cancelled</strong> due to unforeseen venue circumstances. We apologise for the inconvenience. All registered participants will receive a ₹500 store credit coupon as compensation. Thank you for your understanding.</p>",
421
+ status: EVENT_FIELDS.STATUS_VALUES.ENDED,
422
+ startsAt: daysAhead(15),
423
+ endsAt: daysAhead(16),
424
+ coverImageUrl: "https://picsum.photos/seed/tf-meet-cancelled/800/400",
425
+ offerConfig: {
426
+ couponId: "coupon-tfmeet-cancelled",
427
+ displayCode: "TFMEET500",
428
+ bannerText: "Convention cancelled — ₹500 compensation coupon issued to all registrants",
523
429
  },
524
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
525
- submittedAt: daysAgo(26),
526
- },
527
- {
528
- id: "entry-feedback-seller-anon-flagged",
529
- eventId: "event-seller-feedback-form-2026-feedback",
530
- formResponses: {
531
- "fb-dashboard": 1,
532
- "fb-payout": "Dissatisfied",
533
- "fb-comment": "Spam content removed by moderation",
430
+ tags: ["transformers", "event", "cancelled", "convention", "mumbai"],
431
+ stats: {
432
+ totalEntries: 0,
433
+ approvedEntries: 0,
434
+ flaggedEntries: 0,
534
435
  },
535
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.FLAGGED,
536
- reviewedBy: "user-admin-user-admin",
537
- reviewedAt: daysAgo(25),
538
- reviewNote: "Spam submission — flagged",
539
- submittedAt: daysAgo(25),
540
- },
541
- // Figure Manufacturer Poll votes — event-best-anime-figures-brand-poll-2026-poll (#9)
542
- {
543
- id: "entry-poll-brand-john-gsc",
544
- eventId: "event-best-anime-figures-brand-poll-2026-poll",
545
- userId: "user-john-doe-johndoe",
546
- userDisplayName: "John Doe",
547
- userEmail: "john@letitrip.in",
548
- pollVotes: ["opt-gsc"],
549
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
550
- submittedAt: daysAgo(7),
436
+ createdBy: "user-admin-user-admin",
437
+ createdAt: daysAgo(20),
438
+ updatedAt: daysAgo(1),
551
439
  },
440
+ ];
441
+ // -- Event Entries -------------------------------------------------------------
442
+ export const eventEntriesSeedData = [
443
+ // Poll entries — Gen 1 Starter poll
552
444
  {
553
- id: "entry-poll-brand-jane-alter",
554
- eventId: "event-best-anime-figures-brand-poll-2026-poll",
555
- userId: "user-jane-smith-janes",
556
- userDisplayName: "Jane Smith",
557
- userEmail: "jane@letitrip.in",
558
- pollVotes: ["opt-alter"],
445
+ id: "entry-gen1-poll-ash-ketchum",
446
+ eventId: "event-favourite-gen1-starter-poll-2026-poll",
447
+ userId: "user-ash-ketchum-ash",
448
+ userDisplayName: "Ash Ketchum",
449
+ pollVotes: ["charizard"],
450
+ pollComment: "Charizard carried me through every battle!",
559
451
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
560
452
  submittedAt: daysAgo(6),
453
+ points: 1,
561
454
  },
562
455
  {
563
- id: "entry-poll-brand-mike-kotobukiya",
564
- eventId: "event-best-anime-figures-brand-poll-2026-poll",
565
- userId: "user-mike-johnson-mikejohn",
566
- userDisplayName: "Mike Johnson",
567
- userEmail: "mike@letitrip.in",
568
- pollVotes: ["opt-kotobukiya"],
456
+ id: "entry-gen1-poll-gary-oak",
457
+ eventId: "event-favourite-gen1-starter-poll-2026-poll",
458
+ userId: "user-gary-oak-gary",
459
+ userDisplayName: "Gary Oak",
460
+ pollVotes: ["blastoise"],
461
+ pollComment: "Blastoise's art is unmatched. Shell Shock is peak Pokemon TCG design.",
569
462
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
570
463
  submittedAt: daysAgo(5),
464
+ points: 1,
571
465
  },
572
466
  {
573
- id: "entry-poll-brand-animecraft-bandai",
574
- eventId: "event-best-anime-figures-brand-poll-2026-poll",
575
- userId: "user-fashion-boutique-fashionb",
576
- userDisplayName: "AnimeCraft Apparel",
577
- userEmail: "fashionb@letitrip.in",
578
- pollVotes: ["opt-bandai"],
467
+ id: "entry-gen1-poll-brock",
468
+ eventId: "event-favourite-gen1-starter-poll-2026-poll",
469
+ userId: "user-brock-pewter-brock",
470
+ userDisplayName: "Brock",
471
+ pollVotes: ["venusaur"],
472
+ pollComment: "Venusaur never gets the respect it deserves. Solar Beam is powerful!",
579
473
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
580
474
  submittedAt: daysAgo(4),
475
+ points: 1,
581
476
  },
582
- // Survey responsesevent-shopping-experience-survey-2026-survey (#10)
477
+ // Feedback entries1st Edition booster pull story
583
478
  {
584
- id: "entry-survey-shopping-john",
585
- eventId: "event-shopping-experience-survey-2026-survey",
586
- userId: "user-john-doe-johndoe",
587
- userDisplayName: "John Doe",
588
- userEmail: "john@letitrip.in",
479
+ id: "entry-feedback-1sted-ash-ketchum",
480
+ eventId: "event-1st-edition-booster-giveaway-2026-feedback",
481
+ userId: "user-ash-ketchum-ash",
482
+ userDisplayName: "Ash Ketchum",
589
483
  formResponses: {
590
- "sq-name": "John",
591
- "sq-rating": 5,
592
- "sq-category": "Scale Figures",
593
- "sq-features": ["Wishlist", "Product Reviews", "Deals & Events"],
594
- "sq-suggestion": "A 'coming soon' pre-order tracker with email alerts for new Alter and GSC announcements would be amazing.",
484
+ story: "I pulled a 1st Edition Charizard from a booster pack at age 10 and have been hooked ever since. Tagged @professor_oak!",
485
+ tagged_friend: "@professor_oak",
595
486
  },
596
487
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
597
- reviewedBy: "user-admin-user-admin",
598
- reviewedAt: daysAgo(2),
599
- reviewNote: "Well-written response — awarded full Stars",
600
- points: 95,
601
- submittedAt: daysAgo(3),
602
- },
603
- {
604
- id: "entry-survey-shopping-jane",
605
- eventId: "event-shopping-experience-survey-2026-survey",
606
- userId: "user-jane-smith-janes",
607
- userDisplayName: "Jane Smith",
608
- userEmail: "jane@letitrip.in",
609
- formResponses: {
610
- "sq-name": "Jane",
611
- "sq-rating": 4,
612
- "sq-category": "Cosplay & Apparel",
613
- "sq-features": ["Wishlist", "Price Alerts"],
614
- "sq-suggestion": "A size guide comparison tool for cosplay items across different sellers would be incredibly helpful.",
615
- },
616
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.PENDING,
617
488
  submittedAt: daysAgo(2),
618
- },
619
- // App feedback — event-app-experience-feedback-2026-feedback (#11)
620
- {
621
- id: "entry-feedback-app-john",
622
- eventId: "event-app-experience-feedback-2026-feedback",
623
- userId: "user-john-doe-johndoe",
624
- userDisplayName: "John Doe",
625
- userEmail: "john@letitrip.in",
626
- formResponses: {
627
- "afb-ease": 5,
628
- "afb-performance": "Excellent",
629
- "afb-recommend": "Definitely",
630
- "afb-comments": "Love how fast searches load. The filter panel is intuitive.",
631
- },
632
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
633
- submittedAt: daysAgo(4),
634
- },
635
- {
636
- id: "entry-feedback-app-mike",
637
- eventId: "event-app-experience-feedback-2026-feedback",
638
- userId: "user-mike-johnson-mikejohn",
639
- userDisplayName: "Mike Johnson",
640
- userEmail: "mike@letitrip.in",
641
- formResponses: {
642
- "afb-ease": 3,
643
- "afb-performance": "Average",
644
- "afb-recommend": "Probably",
645
- "afb-comments": "Occasionally slow on category pages with lots of products.",
646
- },
647
- reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
648
- submittedAt: daysAgo(3),
489
+ points: 1,
649
490
  },
650
491
  {
651
- id: "entry-feedback-app-priya",
652
- eventId: "event-app-experience-feedback-2026-feedback",
653
- userId: "user-priya-sharma-priya",
654
- userDisplayName: "Priya Sharma",
655
- userEmail: "priya@letitrip.in",
492
+ id: "entry-feedback-1sted-sabrina",
493
+ eventId: "event-1st-edition-booster-giveaway-2026-feedback",
494
+ userId: "user-sabrina-psychic-sabrina",
495
+ userDisplayName: "Sabrina",
656
496
  formResponses: {
657
- "afb-ease": 4,
658
- "afb-performance": "Good",
659
- "afb-recommend": "Definitely",
660
- "afb-comments": "Love the auction feature! Wish there were more live auctions.",
497
+ story: "My best pull was a 1st Ed Mewtwo from a pack my gym leader gave me. Changed my life as a collector.",
498
+ tagged_friend: "@giovanni_viridian",
661
499
  },
662
500
  reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
663
- submittedAt: daysAgo(1),
501
+ submittedAt: hoursAgo(36),
502
+ points: 1,
664
503
  },
665
504
  ];