@mohasinac/appkit 2.7.49 → 2.7.52
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.
- package/dist/_internal/client/features/layout/SidebarCollapseToggle.d.ts +19 -0
- package/dist/_internal/client/features/layout/SidebarCollapseToggle.js +15 -0
- package/dist/_internal/client/features/layout/index.d.ts +2 -0
- package/dist/_internal/client/features/layout/index.js +1 -0
- package/dist/_internal/server/features/checkout/actions.js +25 -2
- package/dist/_internal/server/features/promotions/actions.js +3 -1
- package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.d.ts +1 -0
- package/dist/_internal/server/jobs/core/__tests__/couponExpiry.test.js +65 -0
- package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.d.ts +1 -0
- package/dist/_internal/server/jobs/core/__tests__/listingProcessor.test.js +163 -0
- package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.d.ts +1 -0
- package/dist/_internal/server/jobs/core/__tests__/mediaTmpCleanup.test.js +115 -0
- package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.d.ts +1 -0
- package/dist/_internal/server/jobs/core/__tests__/pendingOrderTimeout.test.js +96 -0
- package/dist/_internal/shared/actions/action-registry.js +149 -0
- package/dist/client.d.ts +45 -6
- package/dist/client.js +27 -4
- package/dist/constants/api-endpoints.d.ts +42 -0
- package/dist/constants/api-endpoints.js +14 -0
- package/dist/features/_guide-cls.d.ts +13 -0
- package/dist/features/_guide-cls.js +14 -0
- package/dist/features/about/components/HelpPageView.js +29 -26
- package/dist/features/account/components/BuyerAccountGuideView.d.ts +1 -0
- package/dist/features/account/components/BuyerAccountGuideView.js +39 -0
- package/dist/features/account/components/BuyerAuctionsGuideView.d.ts +1 -0
- package/dist/features/account/components/BuyerAuctionsGuideView.js +38 -0
- package/dist/features/account/components/BuyerOrdersGuideView.d.ts +1 -0
- package/dist/features/account/components/BuyerOrdersGuideView.js +48 -0
- package/dist/features/account/components/BuyerShoppingGuideView.d.ts +1 -0
- package/dist/features/account/components/BuyerShoppingGuideView.js +38 -0
- package/dist/features/account/components/UserSidebar.js +2 -1
- package/dist/features/admin/components/AdminAnalyticsGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminAnalyticsGuideView.js +24 -0
- package/dist/features/admin/components/AdminBlogEditorView.js +102 -75
- package/dist/features/admin/components/AdminBundleEditorView.js +20 -14
- package/dist/features/admin/components/AdminBundlesView.d.ts +1 -3
- package/dist/features/admin/components/AdminBundlesView.js +173 -52
- package/dist/features/admin/components/AdminCatalogGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminCatalogGuideView.js +28 -0
- package/dist/features/admin/components/AdminContentGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminContentGuideView.js +36 -0
- package/dist/features/admin/components/AdminCouponEditorView.js +1 -1
- package/dist/features/admin/components/AdminGuideHubView.d.ts +5 -0
- package/dist/features/admin/components/AdminGuideHubView.js +79 -0
- package/dist/features/admin/components/AdminOrdersGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminOrdersGuideView.js +44 -0
- package/dist/features/admin/components/AdminProductsView.js +8 -3
- package/dist/features/admin/components/AdminSidebar.js +2 -1
- package/dist/features/admin/components/AdminSiteConfigGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminSiteConfigGuideView.js +21 -0
- package/dist/features/admin/components/AdminStoresGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminStoresGuideView.js +32 -0
- package/dist/features/admin/components/AdminTeamGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminTeamGuideView.js +33 -0
- package/dist/features/admin/components/AdminTrustGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminTrustGuideView.js +40 -0
- package/dist/features/admin/components/AdminUsersGuideView.d.ts +1 -0
- package/dist/features/admin/components/AdminUsersGuideView.js +38 -0
- package/dist/features/auth/repository/session.repository.js +16 -1
- package/dist/features/cart/hooks/useAddToCart.d.ts +2 -0
- package/dist/features/cart/hooks/useAddToCart.js +2 -0
- package/dist/features/cart/hooks/useGuestCart.d.ts +2 -0
- package/dist/features/cart/utils/guest-cart.d.ts +7 -0
- package/dist/features/cart/utils/pending-ops.d.ts +6 -0
- package/dist/features/categories/components/CategoryBundlesListing.js +3 -25
- package/dist/features/categories/components/CategoryProductsListing.js +6 -10
- package/dist/features/categories/components/index.d.ts +0 -2
- package/dist/features/categories/components/index.js +0 -1
- package/dist/features/categories/schemas/firestore.d.ts +9 -0
- package/dist/features/events/components/AdminEventEditorView.js +223 -269
- package/dist/features/events/components/EventRaffleWinnerView.d.ts +9 -1
- package/dist/features/events/components/EventRaffleWinnerView.js +3 -3
- package/dist/features/events/components/SpinWheelView.js +3 -3
- package/dist/features/grouped/repository/grouped-listings.repository.d.ts +9 -0
- package/dist/features/grouped/repository/grouped-listings.repository.js +12 -0
- package/dist/features/layout/BottomNavLayout.d.ts +5 -0
- package/dist/features/layout/BottomNavLayout.js +21 -0
- package/dist/features/layout/TitleBar.js +7 -1
- package/dist/features/layout/TitleBarLayout.d.ts +8 -2
- package/dist/features/layout/TitleBarLayout.js +11 -7
- package/dist/features/media/upload/MediaUploadField.js +1 -1
- package/dist/features/orders/schemas/index.d.ts +2 -2
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +12 -6
- package/dist/features/products/components/AuctionsIndexListing.js +3 -1
- package/dist/features/products/components/MarketplaceBundleCard.d.ts +21 -0
- package/dist/features/products/components/MarketplaceBundleCard.js +56 -0
- package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
- package/dist/features/products/components/PrizeDrawEntryActions.d.ts +3 -1
- package/dist/features/products/components/PrizeDrawEntryActions.js +8 -12
- package/dist/features/products/components/ProductDetailActions.d.ts +5 -1
- package/dist/features/products/components/ProductDetailActions.js +3 -1
- package/dist/features/products/components/ProductDetailPageView.d.ts +2 -0
- package/dist/features/products/components/ProductDetailPageView.js +4 -0
- package/dist/features/products/components/ProductGrid.js +3 -3
- package/dist/features/products/components/ProductsIndexListing.js +18 -9
- package/dist/features/products/components/index.d.ts +2 -4
- package/dist/features/products/components/index.js +1 -2
- package/dist/features/promotions/components/CouponCard.d.ts +11 -1
- package/dist/features/promotions/components/CouponCard.js +36 -2
- package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +27 -0
- package/dist/features/promotions/repository/claimed-coupons.repository.js +115 -0
- package/dist/features/promotions/schemas/firestore.d.ts +34 -0
- package/dist/features/promotions/schemas/firestore.js +14 -1
- package/dist/features/reviews/components/index.d.ts +0 -2
- package/dist/features/reviews/components/index.js +0 -1
- package/dist/features/seller/components/BrandInlineSelect.js +23 -3
- package/dist/features/seller/components/CategoryInlineSelect.js +20 -3
- package/dist/features/seller/components/SellerAddressesView.js +3 -2
- package/dist/features/seller/components/SellerAnalyticsAlertsView.d.ts +6 -0
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +124 -0
- package/dist/features/seller/components/SellerAnalyticsView.d.ts +2 -0
- package/dist/features/seller/components/SellerAnalyticsView.js +17 -9
- package/dist/features/seller/components/SellerBidsView.js +33 -3
- package/dist/features/seller/components/SellerBundlesView.d.ts +5 -0
- package/dist/features/seller/components/SellerBundlesView.js +104 -0
- package/dist/features/seller/components/SellerClassifiedView.d.ts +5 -0
- package/dist/features/seller/components/SellerClassifiedView.js +113 -0
- package/dist/features/seller/components/SellerDashboardView.js +19 -7
- package/dist/features/seller/components/SellerDigitalCodesView.d.ts +5 -0
- package/dist/features/seller/components/SellerDigitalCodesView.js +115 -0
- package/dist/features/seller/components/SellerGoogleReviewsView.d.ts +14 -0
- package/dist/features/seller/components/SellerGoogleReviewsView.js +95 -0
- package/dist/features/seller/components/SellerGroupedListingsView.d.ts +6 -0
- package/dist/features/seller/components/SellerGroupedListingsView.js +112 -0
- package/dist/features/seller/components/SellerLiveView.d.ts +5 -0
- package/dist/features/seller/components/SellerLiveView.js +113 -0
- package/dist/features/seller/components/SellerOrdersView.js +53 -2
- package/dist/features/seller/components/SellerPayoutMethodsView.d.ts +7 -0
- package/dist/features/seller/components/SellerPayoutMethodsView.js +120 -0
- package/dist/features/seller/components/SellerPayoutSettingsView.js +50 -12
- package/dist/features/seller/components/SellerProductShell.d.ts +3 -1
- package/dist/features/seller/components/SellerProductShell.js +35 -11
- package/dist/features/seller/components/SellerProductsCards.d.ts +19 -0
- package/dist/features/seller/components/SellerProductsCards.js +19 -0
- package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +14 -0
- package/dist/features/seller/components/SellerProductsFilterDrawer.js +22 -0
- package/dist/features/seller/components/SellerProductsView.d.ts +3 -1
- package/dist/features/seller/components/SellerProductsView.js +92 -49
- package/dist/features/seller/components/SellerReviewsView.js +67 -4
- package/dist/features/seller/components/SellerShippingConfigsView.d.ts +7 -0
- package/dist/features/seller/components/SellerShippingConfigsView.js +149 -0
- package/dist/features/seller/components/SellerShippingView.js +37 -10
- package/dist/features/seller/components/SellerSidebar.js +2 -1
- package/dist/features/seller/components/SellerStoreCategoriesView.d.ts +9 -0
- package/dist/features/seller/components/SellerStoreCategoriesView.js +122 -0
- package/dist/features/seller/components/SellerStorefrontView.d.ts +0 -7
- package/dist/features/seller/components/SellerStorefrontView.js +26 -29
- package/dist/features/seller/components/SellerTemplatesView.d.ts +10 -0
- package/dist/features/seller/components/SellerTemplatesView.js +265 -0
- package/dist/features/seller/components/index.d.ts +26 -0
- package/dist/features/seller/components/index.js +13 -0
- package/dist/features/seller/components/seller-products-styles.d.ts +7 -0
- package/dist/features/seller/components/seller-products-styles.js +14 -0
- package/dist/features/shell/FormShell.d.ts +7 -1
- package/dist/features/shell/FormShell.js +5 -2
- package/dist/features/store-extensions/index.d.ts +4 -0
- package/dist/features/store-extensions/index.js +4 -0
- package/dist/features/store-extensions/repository/rbac.repositories.d.ts +23 -0
- package/dist/features/store-extensions/repository/rbac.repositories.js +32 -0
- package/dist/features/store-extensions/repository/store-extensions.repositories.d.ts +91 -0
- package/dist/features/store-extensions/repository/store-extensions.repositories.js +127 -0
- package/dist/features/store-extensions/schemas/firestore.d.ts +244 -0
- package/dist/features/store-extensions/schemas/firestore.js +158 -0
- package/dist/features/store-extensions/schemas/rbac.d.ts +65 -0
- package/dist/features/store-extensions/schemas/rbac.js +43 -0
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +49 -7
- package/dist/features/stores/components/InteractiveStoreCard.js +7 -3
- package/dist/features/stores/components/StoreCapabilitiesGuideView.d.ts +3 -0
- package/dist/features/stores/components/StoreCapabilitiesGuideView.js +101 -0
- package/dist/features/stores/components/StoreFinanceGuideView.d.ts +3 -0
- package/dist/features/stores/components/StoreFinanceGuideView.js +79 -0
- package/dist/features/stores/components/StoreGuideHubView.d.ts +5 -0
- package/dist/features/stores/components/StoreGuideHubView.js +89 -0
- package/dist/features/stores/components/StoreListingsGuideView.d.ts +3 -0
- package/dist/features/stores/components/StoreListingsGuideView.js +151 -0
- package/dist/features/stores/components/StoreOrdersGuideView.d.ts +3 -0
- package/dist/features/stores/components/StoreOrdersGuideView.js +122 -0
- package/dist/features/stores/components/StoreProductsListing.js +6 -10
- package/dist/features/stores/components/StoreReviewsListing.js +100 -23
- package/dist/features/stores/components/StoreSettingsGuideView.d.ts +3 -0
- package/dist/features/stores/components/StoreSettingsGuideView.js +56 -0
- package/dist/features/stores/components/index.d.ts +12 -1
- package/dist/features/stores/components/index.js +6 -1
- package/dist/features/stores/hooks/useStores.d.ts +5 -0
- package/dist/features/stores/hooks/useStores.js +10 -0
- package/dist/features/stores/manifest.js +1 -1
- package/dist/features/stores/schemas/firestore.d.ts +2 -0
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +13 -2
- package/dist/index.d.ts +60 -9
- package/dist/index.js +66 -15
- package/dist/next/routing/route-map.d.ts +134 -0
- package/dist/next/routing/route-map.js +59 -0
- package/dist/providers/db-firebase/__tests__/filter-aliases.test.d.ts +1 -0
- package/dist/providers/db-firebase/__tests__/filter-aliases.test.js +93 -0
- package/dist/providers/db-firebase/sieve.d.ts +49 -0
- package/dist/providers/db-firebase/sieve.js +61 -8
- package/dist/react/hooks/useFormStatePreservation.d.ts +17 -0
- package/dist/react/hooks/useFormStatePreservation.js +62 -0
- package/dist/react/hooks/useInlineRowEdit.d.ts +24 -0
- package/dist/react/hooks/useInlineRowEdit.js +68 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.js +4 -0
- package/dist/repositories/index.d.ts +5 -0
- package/dist/repositories/index.js +7 -0
- package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
- package/dist/seed/claimed-coupons-seed-data.d.ts +13 -0
- package/dist/seed/claimed-coupons-seed-data.js +79 -0
- package/dist/seed/index.d.ts +2 -0
- package/dist/seed/index.js +3 -0
- package/dist/seed/manifest.js +17 -0
- package/dist/seed/store-extensions-seed-data.d.ts +19 -0
- package/dist/seed/store-extensions-seed-data.js +421 -0
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Button.style.css +20 -12
- package/dist/ui/components/ClaimCouponButton.d.ts +28 -0
- package/dist/ui/components/ClaimCouponButton.js +89 -0
- package/dist/ui/components/ListingToolbar.d.ts +8 -1
- package/dist/ui/components/ListingToolbar.js +4 -2
- package/dist/ui/components/QuickCreateModal.d.ts +15 -0
- package/dist/ui/components/QuickCreateModal.js +48 -0
- package/dist/ui/components/QuickCreateModal.style.css +84 -0
- package/dist/ui/components/StickyBottomBar.d.ts +22 -0
- package/dist/ui/components/StickyBottomBar.js +20 -0
- package/dist/ui/components/VacationBanner.d.ts +11 -0
- package/dist/ui/components/VacationBanner.js +16 -0
- package/dist/ui/components/__tests__/BulkActionBar.test.d.ts +1 -0
- package/dist/ui/components/__tests__/BulkActionBar.test.js +96 -0
- package/dist/ui/components/__tests__/ListingToolbar.test.d.ts +1 -0
- package/dist/ui/components/__tests__/ListingToolbar.test.js +125 -0
- package/dist/ui/index.d.ts +9 -1
- package/dist/ui/index.js +4 -0
- package/package.json +8 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claimed Coupons Seed Data — plan §10.
|
|
3
|
+
*
|
|
4
|
+
* Top-level `claimedCoupons` collection (one doc per user × coupon). These
|
|
5
|
+
* rows populate the /user/coupons wallet with one example per status so the
|
|
6
|
+
* tabs (Active / Expired / Used) all have something to render in demo.
|
|
7
|
+
*
|
|
8
|
+
* Coupon snapshots mirror coupons-seed-data.ts (WELCOME10, POKEMON25,
|
|
9
|
+
* FREESHIP999) so the discount badge labels render correctly. Seed user is
|
|
10
|
+
* `user-mohsin-c` to match the dev-account convention used elsewhere.
|
|
11
|
+
*/
|
|
12
|
+
import { createClaimedCouponId } from "../features/promotions/schemas";
|
|
13
|
+
const NOW = new Date();
|
|
14
|
+
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
15
|
+
const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
|
|
16
|
+
export const claimedCouponsSeedData = [
|
|
17
|
+
// Active — won from a spin wheel, expires in 14 days
|
|
18
|
+
{
|
|
19
|
+
id: createClaimedCouponId("user-mohsin-c", "WELCOME10"),
|
|
20
|
+
userId: "user-mohsin-c",
|
|
21
|
+
couponId: "coupon-welcome10",
|
|
22
|
+
couponCode: "WELCOME10",
|
|
23
|
+
source: "spin",
|
|
24
|
+
couponSnapshot: {
|
|
25
|
+
name: "Welcome 10% Off",
|
|
26
|
+
description: "10% off your first order across the marketplace.",
|
|
27
|
+
type: "percentage",
|
|
28
|
+
scope: "admin",
|
|
29
|
+
discount: { value: 10, maxDiscount: 50000, minPurchase: 99900 },
|
|
30
|
+
restrictions: { firstTimeUserOnly: true, combineWithSellerCoupons: false },
|
|
31
|
+
},
|
|
32
|
+
status: "active",
|
|
33
|
+
expiresAt: daysAhead(14),
|
|
34
|
+
claimedAt: daysAgo(2),
|
|
35
|
+
updatedAt: daysAgo(2),
|
|
36
|
+
},
|
|
37
|
+
// Expired — manually claimed 30 days ago, no purchase made
|
|
38
|
+
{
|
|
39
|
+
id: createClaimedCouponId("user-mohsin-c", "POKEMON25"),
|
|
40
|
+
userId: "user-mohsin-c",
|
|
41
|
+
couponId: "coupon-pokemon25",
|
|
42
|
+
couponCode: "POKEMON25",
|
|
43
|
+
source: "manual",
|
|
44
|
+
couponSnapshot: {
|
|
45
|
+
name: "Pokémon 25% Off",
|
|
46
|
+
description: "25% off Pokémon TCG products.",
|
|
47
|
+
type: "percentage",
|
|
48
|
+
scope: "admin",
|
|
49
|
+
discount: { value: 25, maxDiscount: 250000, minPurchase: 199900 },
|
|
50
|
+
restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
|
|
51
|
+
},
|
|
52
|
+
status: "expired",
|
|
53
|
+
expiresAt: daysAgo(5),
|
|
54
|
+
claimedAt: daysAgo(45),
|
|
55
|
+
updatedAt: daysAgo(5),
|
|
56
|
+
},
|
|
57
|
+
// Used — applied to a prior order
|
|
58
|
+
{
|
|
59
|
+
id: createClaimedCouponId("user-mohsin-c", "FREESHIP999"),
|
|
60
|
+
userId: "user-mohsin-c",
|
|
61
|
+
couponId: "coupon-freeship999",
|
|
62
|
+
couponCode: "FREESHIP999",
|
|
63
|
+
source: "manual",
|
|
64
|
+
couponSnapshot: {
|
|
65
|
+
name: "Free Shipping Over ₹999",
|
|
66
|
+
description: "Free shipping on orders above ₹999.",
|
|
67
|
+
type: "free_shipping",
|
|
68
|
+
scope: "admin",
|
|
69
|
+
discount: { value: 0, minPurchase: 99900 },
|
|
70
|
+
restrictions: { firstTimeUserOnly: false, combineWithSellerCoupons: true },
|
|
71
|
+
},
|
|
72
|
+
status: "used",
|
|
73
|
+
expiresAt: daysAhead(60),
|
|
74
|
+
usedAt: daysAgo(10),
|
|
75
|
+
usedOrderId: "order-3-20260508-a1b2c3",
|
|
76
|
+
claimedAt: daysAgo(20),
|
|
77
|
+
updatedAt: daysAgo(10),
|
|
78
|
+
},
|
|
79
|
+
];
|
package/dist/seed/index.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export { bidsSeedData } from "./bids-seed-data";
|
|
|
56
56
|
export { couponsSeedData } from "./coupons-seed-data";
|
|
57
57
|
export type { CouponUsageSeedRecord } from "./coupon-usage-seed-data";
|
|
58
58
|
export { couponUsageSeedData } from "./coupon-usage-seed-data";
|
|
59
|
+
export { claimedCouponsSeedData } from "./claimed-coupons-seed-data";
|
|
59
60
|
export { eventsSeedData, eventEntriesSeedData } from "./events-seed-data";
|
|
60
61
|
export { payoutsSeedData } from "./payouts-seed-data";
|
|
61
62
|
export { notificationsSeedData } from "./notifications-seed-data";
|
|
@@ -73,6 +74,7 @@ export { scammersSeedData } from "./scammers-seed-data";
|
|
|
73
74
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
|
74
75
|
export { productFeaturesSeedData } from "./product-features-seed-data";
|
|
75
76
|
export { offersSeedData } from "./offers-seed-data";
|
|
77
|
+
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
76
78
|
export type { SeedManifest, SeedManifestEntry } from "./manifest";
|
|
77
79
|
export { SEED_MANIFEST } from "./manifest";
|
|
78
80
|
export type { FirestoreIndexConfig } from "./firestore-indexes";
|
package/dist/seed/index.js
CHANGED
|
@@ -43,6 +43,7 @@ export { cartsSeedData } from "./cart-seed-data";
|
|
|
43
43
|
export { bidsSeedData } from "./bids-seed-data";
|
|
44
44
|
export { couponsSeedData } from "./coupons-seed-data";
|
|
45
45
|
export { couponUsageSeedData } from "./coupon-usage-seed-data";
|
|
46
|
+
export { claimedCouponsSeedData } from "./claimed-coupons-seed-data";
|
|
46
47
|
export { eventsSeedData, eventEntriesSeedData } from "./events-seed-data";
|
|
47
48
|
export { payoutsSeedData } from "./payouts-seed-data";
|
|
48
49
|
export { notificationsSeedData } from "./notifications-seed-data";
|
|
@@ -62,6 +63,8 @@ export { scammersSeedData } from "./scammers-seed-data";
|
|
|
62
63
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
|
63
64
|
export { productFeaturesSeedData } from "./product-features-seed-data";
|
|
64
65
|
export { offersSeedData } from "./offers-seed-data";
|
|
66
|
+
// S-STORE Extensions (Tier S-STORE) — 11 new collections
|
|
67
|
+
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
65
68
|
export { SEED_MANIFEST } from "./manifest";
|
|
66
69
|
export { mergeFirestoreIndices, generateMergedFirestoreIndexFile, } from "./firestore-indexes";
|
|
67
70
|
// Test utilities (Firestore emulator + PII assertion)
|
package/dist/seed/manifest.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Imported by SeedPanel to render previews without loading full seed data.
|
|
6
6
|
* Auto-derived from the live seed data files — stays in sync automatically.
|
|
7
7
|
*/
|
|
8
|
+
import { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
8
9
|
// SB-UNI-C — brandsSeedData merged into categoriesSeedData.
|
|
9
10
|
import { categoriesSeedData } from "./categories-seed-data";
|
|
10
11
|
import { usersSeedData } from "./users-seed-data";
|
|
@@ -172,4 +173,20 @@ export const SEED_MANIFEST = {
|
|
|
172
173
|
...o,
|
|
173
174
|
name: o.productTitle ?? o.id,
|
|
174
175
|
}))),
|
|
176
|
+
// S-STORE foundation collections — entries derived lazily from store-extensions-seed-data
|
|
177
|
+
payoutMethods: pick(asArr(payoutMethodsSeedData)),
|
|
178
|
+
shippingConfigs: pick(asArr(shippingConfigsSeedData)),
|
|
179
|
+
analyticsCards: pick(asArr(analyticsCardsSeedData).map((c) => ({ ...c, name: c.title ?? c.id }))),
|
|
180
|
+
analyticsAlerts: pick(asArr(analyticsAlertsSeedData).map((a) => ({ ...a, name: a.label ?? a.id }))),
|
|
181
|
+
storeCategories: pick(asArr(storeCategoriesSeedData)),
|
|
182
|
+
listingTemplates: pick(asArr(listingTemplatesSeedData).map((t) => ({ ...t, name: t.name ?? t.id }))),
|
|
183
|
+
moderationQueue: pick(asArr(moderationQueueSeedData)),
|
|
184
|
+
reports: pick(asArr(reportsSeedData)),
|
|
185
|
+
itemRequests: pick(asArr(itemRequestsSeedData).map((r) => ({ ...r, name: r.title ?? r.id }))),
|
|
186
|
+
storeWhatsAppConfig: pick(asArr(storeWhatsAppConfigSeedData)),
|
|
187
|
+
storeGoogleConfig: pick(asArr(storeGoogleConfigSeedData)),
|
|
188
|
+
// RBAC + admin notifications — no seed docs yet; manifest stays empty until populated.
|
|
189
|
+
roleOverrides: [],
|
|
190
|
+
customRoles: [],
|
|
191
|
+
adminNotifications: [],
|
|
175
192
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S-STORE Extensions Seed Data
|
|
3
|
+
*
|
|
4
|
+
* Compact sample documents for the 11 new Tier S-STORE collections.
|
|
5
|
+
* Used by SeedPanel ("Store" group). Full demo dataset rewrite ships
|
|
6
|
+
* with S-STORE-11.
|
|
7
|
+
*/
|
|
8
|
+
import type { AnalyticsAlertDocument, AnalyticsCardDocument, ItemRequestDocument, ListingTemplateDocument, ModerationQueueDocument, PayoutMethodDocument, ReportDocument, ShippingConfigDocument, StoreCategoryDocument, StoreGoogleConfigDocument, StoreWhatsAppConfigDocument } from "../features/store-extensions/schemas/firestore";
|
|
9
|
+
export declare const payoutMethodsSeedData: Partial<PayoutMethodDocument>[];
|
|
10
|
+
export declare const shippingConfigsSeedData: Partial<ShippingConfigDocument>[];
|
|
11
|
+
export declare const analyticsCardsSeedData: Partial<AnalyticsCardDocument>[];
|
|
12
|
+
export declare const analyticsAlertsSeedData: Partial<AnalyticsAlertDocument>[];
|
|
13
|
+
export declare const storeCategoriesSeedData: Partial<StoreCategoryDocument>[];
|
|
14
|
+
export declare const listingTemplatesSeedData: Partial<ListingTemplateDocument>[];
|
|
15
|
+
export declare const moderationQueueSeedData: Partial<ModerationQueueDocument>[];
|
|
16
|
+
export declare const reportsSeedData: Partial<ReportDocument>[];
|
|
17
|
+
export declare const itemRequestsSeedData: Partial<ItemRequestDocument>[];
|
|
18
|
+
export declare const storeWhatsAppConfigSeedData: Partial<StoreWhatsAppConfigDocument>[];
|
|
19
|
+
export declare const storeGoogleConfigSeedData: Partial<StoreGoogleConfigDocument>[];
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S-STORE Extensions Seed Data
|
|
3
|
+
*
|
|
4
|
+
* Compact sample documents for the 11 new Tier S-STORE collections.
|
|
5
|
+
* Used by SeedPanel ("Store" group). Full demo dataset rewrite ships
|
|
6
|
+
* with S-STORE-11.
|
|
7
|
+
*/
|
|
8
|
+
const NOW = new Date();
|
|
9
|
+
// ───── payoutMethods (6 records) ──────────────────────────────────────────
|
|
10
|
+
export const payoutMethodsSeedData = [
|
|
11
|
+
{
|
|
12
|
+
id: "payout-method-pokemon-palace-upi-default",
|
|
13
|
+
sellerId: "user-pokemon-palace-owner",
|
|
14
|
+
storeId: "store-pokemon-palace",
|
|
15
|
+
type: "upi",
|
|
16
|
+
label: "Primary UPI",
|
|
17
|
+
upiVpa: "pokemonpalace@upi",
|
|
18
|
+
isDefault: true,
|
|
19
|
+
isActive: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "payout-method-pokemon-palace-bank",
|
|
23
|
+
sellerId: "user-pokemon-palace-owner",
|
|
24
|
+
storeId: "store-pokemon-palace",
|
|
25
|
+
type: "bank",
|
|
26
|
+
label: "HDFC Current Account",
|
|
27
|
+
accountNumber: "50200012345678",
|
|
28
|
+
ifscCode: "HDFC0001234",
|
|
29
|
+
accountHolderName: "Pokemon Palace LLP",
|
|
30
|
+
bankName: "HDFC Bank",
|
|
31
|
+
isDefault: false,
|
|
32
|
+
isActive: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "payout-method-diecast-depot-upi",
|
|
36
|
+
sellerId: "user-diecast-depot-owner",
|
|
37
|
+
storeId: "store-diecast-depot",
|
|
38
|
+
type: "upi",
|
|
39
|
+
label: "Default UPI",
|
|
40
|
+
upiVpa: "diecastdepot@okhdfc",
|
|
41
|
+
isDefault: true,
|
|
42
|
+
isActive: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "payout-method-tokyo-toys-upi",
|
|
46
|
+
sellerId: "user-tokyo-toys-owner",
|
|
47
|
+
storeId: "store-tokyo-toys-india",
|
|
48
|
+
type: "upi",
|
|
49
|
+
label: "Tokyo Toys UPI",
|
|
50
|
+
upiVpa: "tokyotoys@ybl",
|
|
51
|
+
isDefault: true,
|
|
52
|
+
isActive: true,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "payout-method-cardgame-hub-bank",
|
|
56
|
+
sellerId: "user-cardgame-hub-owner",
|
|
57
|
+
storeId: "store-cardgame-hub",
|
|
58
|
+
type: "bank",
|
|
59
|
+
label: "ICICI Current Account",
|
|
60
|
+
accountNumber: "001234567890",
|
|
61
|
+
ifscCode: "ICIC0000012",
|
|
62
|
+
accountHolderName: "Cardgame Hub Pvt Ltd",
|
|
63
|
+
bankName: "ICICI Bank",
|
|
64
|
+
isDefault: true,
|
|
65
|
+
isActive: true,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "payout-method-beyblade-arena-upi",
|
|
69
|
+
sellerId: "user-beyblade-arena-owner",
|
|
70
|
+
storeId: "store-beyblade-arena",
|
|
71
|
+
type: "upi",
|
|
72
|
+
label: "Arena UPI",
|
|
73
|
+
upiVpa: "beyarena@paytm",
|
|
74
|
+
isDefault: true,
|
|
75
|
+
isActive: true,
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
// ───── shippingConfigs (8 records) ────────────────────────────────────────
|
|
79
|
+
export const shippingConfigsSeedData = [
|
|
80
|
+
{
|
|
81
|
+
id: "ship-config-pokemon-palace-free",
|
|
82
|
+
storeId: "store-pokemon-palace",
|
|
83
|
+
label: "Free over Rs 999",
|
|
84
|
+
method: "free",
|
|
85
|
+
freeAbovePaise: 99900,
|
|
86
|
+
estimatedDays: 5,
|
|
87
|
+
isDefault: true,
|
|
88
|
+
isActive: true,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "ship-config-pokemon-palace-express",
|
|
92
|
+
storeId: "store-pokemon-palace",
|
|
93
|
+
label: "Express (2 days)",
|
|
94
|
+
method: "express",
|
|
95
|
+
flatRateInPaise: 19900,
|
|
96
|
+
expressSurchargeInPaise: 9900,
|
|
97
|
+
estimatedDays: 2,
|
|
98
|
+
isDefault: false,
|
|
99
|
+
isActive: true,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "ship-config-diecast-flat",
|
|
103
|
+
storeId: "store-diecast-depot",
|
|
104
|
+
label: "Flat Rs 99",
|
|
105
|
+
method: "flat",
|
|
106
|
+
flatRateInPaise: 9900,
|
|
107
|
+
estimatedDays: 4,
|
|
108
|
+
isDefault: true,
|
|
109
|
+
isActive: true,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: "ship-config-diecast-pickup",
|
|
113
|
+
storeId: "store-diecast-depot",
|
|
114
|
+
label: "Pickup (Bangalore)",
|
|
115
|
+
method: "pickup",
|
|
116
|
+
estimatedDays: 0,
|
|
117
|
+
isDefault: false,
|
|
118
|
+
isActive: true,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "ship-config-tokyo-toys-weight",
|
|
122
|
+
storeId: "store-tokyo-toys-india",
|
|
123
|
+
label: "By weight",
|
|
124
|
+
method: "weight",
|
|
125
|
+
pricePerKgInPaise: 12000,
|
|
126
|
+
estimatedDays: 6,
|
|
127
|
+
isDefault: true,
|
|
128
|
+
isActive: true,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: "ship-config-cardgame-free-1500",
|
|
132
|
+
storeId: "store-cardgame-hub",
|
|
133
|
+
label: "Free over Rs 1500",
|
|
134
|
+
method: "free",
|
|
135
|
+
freeAbovePaise: 150000,
|
|
136
|
+
estimatedDays: 5,
|
|
137
|
+
isDefault: true,
|
|
138
|
+
isActive: true,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "ship-config-beyblade-flat",
|
|
142
|
+
storeId: "store-beyblade-arena",
|
|
143
|
+
label: "Flat Rs 79",
|
|
144
|
+
method: "flat",
|
|
145
|
+
flatRateInPaise: 7900,
|
|
146
|
+
estimatedDays: 4,
|
|
147
|
+
isDefault: true,
|
|
148
|
+
isActive: true,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: "ship-config-gundam-galaxy-express",
|
|
152
|
+
storeId: "store-gundam-galaxy",
|
|
153
|
+
label: "Express Premium",
|
|
154
|
+
method: "express",
|
|
155
|
+
flatRateInPaise: 29900,
|
|
156
|
+
estimatedDays: 3,
|
|
157
|
+
isDefault: true,
|
|
158
|
+
isActive: true,
|
|
159
|
+
},
|
|
160
|
+
];
|
|
161
|
+
// ───── analyticsCards (9 records) ─────────────────────────────────────────
|
|
162
|
+
export const analyticsCardsSeedData = [
|
|
163
|
+
{ id: "ac-seller-revenue-30d", scope: "seller", ownerId: "user-pokemon-palace-owner", title: "Revenue · 30d", type: "metric", metric: "revenue:30d", filters: {}, position: 0, isBuiltIn: true, isVisible: true },
|
|
164
|
+
{ id: "ac-seller-orders-30d", scope: "seller", ownerId: "user-pokemon-palace-owner", title: "Orders · 30d", type: "metric", metric: "orders:30d", filters: {}, position: 1, isBuiltIn: true, isVisible: true },
|
|
165
|
+
{ id: "ac-seller-aov", scope: "seller", ownerId: "user-pokemon-palace-owner", title: "Avg Order Value", type: "metric", metric: "aov:30d", filters: {}, position: 2, isBuiltIn: true, isVisible: true },
|
|
166
|
+
{ id: "ac-seller-traffic", scope: "seller", ownerId: "user-pokemon-palace-owner", title: "Storefront Traffic", type: "line", metric: "store-views:30d", filters: {}, position: 3, isBuiltIn: true, isVisible: true },
|
|
167
|
+
{ id: "ac-seller-top-products", scope: "seller", ownerId: "user-pokemon-palace-owner", title: "Top Products", type: "table", metric: "top-products:30d", filters: {}, position: 4, isBuiltIn: true, isVisible: true },
|
|
168
|
+
{ id: "ac-admin-platform-gmv", scope: "admin", ownerId: "user-admin-letitrip", title: "Platform GMV", type: "metric", metric: "platform-gmv:30d", filters: {}, position: 0, isBuiltIn: true, isVisible: true },
|
|
169
|
+
{ id: "ac-admin-active-stores", scope: "admin", ownerId: "user-admin-letitrip", title: "Active Stores", type: "metric", metric: "active-stores", filters: {}, position: 1, isBuiltIn: true, isVisible: true },
|
|
170
|
+
{ id: "ac-admin-pending-mod", scope: "admin", ownerId: "user-admin-letitrip", title: "Pending Moderation", type: "metric", metric: "moderation-pending", filters: {}, position: 2, isBuiltIn: true, isVisible: true },
|
|
171
|
+
{ id: "ac-admin-open-reports", scope: "admin", ownerId: "user-admin-letitrip", title: "Open Reports", type: "metric", metric: "reports-open", filters: {}, position: 3, isBuiltIn: true, isVisible: true },
|
|
172
|
+
];
|
|
173
|
+
// ───── analyticsAlerts (4 records) ────────────────────────────────────────
|
|
174
|
+
export const analyticsAlertsSeedData = [
|
|
175
|
+
{ id: "alert-low-stock-pokemon", scope: "seller", ownerId: "user-pokemon-palace-owner", label: "Low stock", metric: "min-stock", operator: "<", threshold: 5, windowHours: 24, isActive: true, notifyChannels: ["in-app", "email"] },
|
|
176
|
+
{ id: "alert-no-sales-pokemon", scope: "seller", ownerId: "user-pokemon-palace-owner", label: "Zero sales 48h", metric: "orders-window", operator: "==", threshold: 0, windowHours: 48, isActive: true, notifyChannels: ["in-app"] },
|
|
177
|
+
{ id: "alert-platform-error-rate", scope: "admin", ownerId: "user-admin-letitrip", label: "API error rate > 5%", metric: "api-error-rate", operator: ">", threshold: 0.05, windowHours: 1, isActive: true, notifyChannels: ["in-app", "email", "whatsapp"] },
|
|
178
|
+
{ id: "alert-fraud-surge", scope: "admin", ownerId: "user-admin-letitrip", label: "Fraud reports surge", metric: "reports-1h", operator: ">", threshold: 10, windowHours: 1, isActive: true, notifyChannels: ["in-app", "email"] },
|
|
179
|
+
];
|
|
180
|
+
// ───── storeCategories (6 records) ────────────────────────────────────────
|
|
181
|
+
export const storeCategoriesSeedData = [
|
|
182
|
+
{ id: "scat-pokemon-1st-edition", storeId: "store-pokemon-palace", label: "1st Edition Holos", slug: "1st-edition-holos", displayOrder: 0, productIds: [], isActive: true, description: "Vintage 1st-edition Pokémon holos.", coverImageUrl: "https://picsum.photos/seed/scat-pokemon-1e/640/360" },
|
|
183
|
+
{ id: "scat-pokemon-japanese", storeId: "store-pokemon-palace", label: "Japanese Imports", slug: "japanese-imports", displayOrder: 1, productIds: [], isActive: true, coverImageUrl: "https://picsum.photos/seed/scat-pokemon-jp/640/360" },
|
|
184
|
+
{ id: "scat-diecast-redline", storeId: "store-diecast-depot", label: "Hot Wheels Redline", slug: "hot-wheels-redline", displayOrder: 0, productIds: [], isActive: true, coverImageUrl: "https://picsum.photos/seed/scat-redline/640/360" },
|
|
185
|
+
{ id: "scat-diecast-tomica", storeId: "store-diecast-depot", label: "Tomica Premium", slug: "tomica-premium", displayOrder: 1, productIds: [], isActive: true, coverImageUrl: "https://picsum.photos/seed/scat-tomica/640/360" },
|
|
186
|
+
{ id: "scat-beyblade-burst", storeId: "store-beyblade-arena", label: "Burst Series", slug: "burst-series", displayOrder: 0, productIds: [], isActive: true, coverImageUrl: "https://picsum.photos/seed/scat-bey/640/360" },
|
|
187
|
+
{ id: "scat-gundam-rg", storeId: "store-gundam-galaxy", label: "Real Grade Kits", slug: "real-grade", displayOrder: 0, productIds: [], isActive: true, coverImageUrl: "https://picsum.photos/seed/scat-gundam/640/360" },
|
|
188
|
+
];
|
|
189
|
+
// ───── listingTemplates (5 records) ───────────────────────────────────────
|
|
190
|
+
export const listingTemplatesSeedData = [
|
|
191
|
+
{
|
|
192
|
+
id: "tmpl-standard-pokemon-card",
|
|
193
|
+
storeId: "store-pokemon-palace",
|
|
194
|
+
ownerId: "user-pokemon-palace-owner",
|
|
195
|
+
name: "Pokémon Card · Standard",
|
|
196
|
+
description: "Default fields for a graded Pokémon card listing.",
|
|
197
|
+
listingType: "standard",
|
|
198
|
+
defaults: { condition: "mint", currency: "INR", tags: ["pokemon", "tcg"] },
|
|
199
|
+
isShared: true,
|
|
200
|
+
isActive: true,
|
|
201
|
+
usageCount: 14,
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: "tmpl-auction-vintage-pokemon",
|
|
205
|
+
storeId: "store-pokemon-palace",
|
|
206
|
+
ownerId: "user-pokemon-palace-owner",
|
|
207
|
+
name: "Vintage Pokémon Auction",
|
|
208
|
+
listingType: "auction",
|
|
209
|
+
defaults: { reserveMultiplier: 1.2, auctionDays: 7, currency: "INR" },
|
|
210
|
+
isShared: false,
|
|
211
|
+
isActive: true,
|
|
212
|
+
usageCount: 5,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
id: "tmpl-preorder-bandai",
|
|
216
|
+
storeId: "store-tokyo-toys-india",
|
|
217
|
+
ownerId: "user-tokyo-toys-owner",
|
|
218
|
+
name: "Bandai Pre-Order",
|
|
219
|
+
listingType: "pre-order",
|
|
220
|
+
defaults: { releaseLeadDays: 90, depositPercent: 30 },
|
|
221
|
+
isShared: false,
|
|
222
|
+
isActive: true,
|
|
223
|
+
usageCount: 9,
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
id: "tmpl-bundle-starter",
|
|
227
|
+
storeId: "store-diecast-depot",
|
|
228
|
+
ownerId: "user-diecast-depot-owner",
|
|
229
|
+
name: "Starter Bundle",
|
|
230
|
+
listingType: "bundle",
|
|
231
|
+
defaults: { minItems: 3, maxItems: 10, autoDiscountPercent: 12 },
|
|
232
|
+
isShared: true,
|
|
233
|
+
isActive: true,
|
|
234
|
+
usageCount: 2,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: "tmpl-digital-code-steam",
|
|
238
|
+
storeId: "store-cardgame-hub",
|
|
239
|
+
ownerId: "user-cardgame-hub-owner",
|
|
240
|
+
name: "Steam Key Listing",
|
|
241
|
+
listingType: "digital-code",
|
|
242
|
+
defaults: { vendor: "steam", region: "in" },
|
|
243
|
+
isShared: false,
|
|
244
|
+
isActive: true,
|
|
245
|
+
usageCount: 1,
|
|
246
|
+
},
|
|
247
|
+
];
|
|
248
|
+
// ───── moderationQueue (5 records) ────────────────────────────────────────
|
|
249
|
+
export const moderationQueueSeedData = [
|
|
250
|
+
{ id: "mod-video-pokemon-charizard", mediaType: "video", mediaUrl: "/media/product-video-charizard-psa9-20260518.mp4", entityType: "product", entityId: "product-pokemon-charizard-psa9", ownerId: "user-pokemon-palace-owner", storeId: "store-pokemon-palace", status: "pending", submittedAt: new Date(NOW.getTime() - 3600000) },
|
|
251
|
+
{ id: "mod-video-beyblade-burst", mediaType: "video", mediaUrl: "/media/product-video-beyblade-burst-20260518.mp4", entityType: "product", entityId: "product-beyblade-burst-evolution", ownerId: "user-beyblade-arena-owner", storeId: "store-beyblade-arena", status: "pending", submittedAt: new Date(NOW.getTime() - 7200000) },
|
|
252
|
+
{ id: "mod-review-hot-wheels", mediaType: "rich-text", entityType: "review", entityId: "review-hot-wheels-redline-1", ownerId: "user-ravi-kumar", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
|
|
253
|
+
{ id: "mod-image-diecast-banner", mediaType: "image", mediaUrl: "/media/store-banner-diecast-depot-20260518.jpg", entityType: "storefront", entityId: "store-diecast-depot", ownerId: "user-diecast-depot-owner", storeId: "store-diecast-depot", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 172800000) },
|
|
254
|
+
{ id: "mod-blog-grading-guide", mediaType: "rich-text", entityType: "blog", entityId: "blog-how-to-grade-pokemon-cards", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 432000000), submittedAt: new Date(NOW.getTime() - 438000000) },
|
|
255
|
+
{ id: "mod-video-tomica-unbox", mediaType: "video", mediaUrl: "/media/product-video-tomica-tlv-bmw-20260518.mp4", entityType: "product", entityId: "product-tomica-tlv-bmw-2002", ownerId: "user-diecast-depot-owner", storeId: "store-diecast-depot", status: "pending", submittedAt: new Date(NOW.getTime() - 1800000) },
|
|
256
|
+
{ id: "mod-video-rg-build-time", mediaType: "video", mediaUrl: "/media/product-video-rg-nu-gundam-20260518.mp4", entityType: "product", entityId: "product-rg-nu-gundam-real-grade", ownerId: "user-gundam-galaxy-owner", storeId: "store-gundam-galaxy", status: "pending", submittedAt: new Date(NOW.getTime() - 5400000) },
|
|
257
|
+
{ id: "mod-event-cover", mediaType: "image", mediaUrl: "/media/event-cover-summer-tcg-meetup-20260518.jpg", entityType: "event", entityId: "event-summer-tcg-meetup", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
|
|
258
|
+
{ id: "mod-storefront-bey-banner", mediaType: "image", mediaUrl: "/media/store-banner-beyblade-arena-20260518.jpg", entityType: "storefront", entityId: "store-beyblade-arena", ownerId: "user-beyblade-arena-owner", storeId: "store-beyblade-arena", status: "rejected", reason: "Banner has off-brand watermark.", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 172800000), submittedAt: new Date(NOW.getTime() - 180000000) },
|
|
259
|
+
{ id: "mod-review-bootleg-flag", mediaType: "rich-text", entityType: "review", entityId: "review-bootleg-flag", ownerId: "user-anonymous-2", status: "pending", submittedAt: new Date(NOW.getTime() - 600000) },
|
|
260
|
+
{ id: "mod-blog-collectibles-trends", mediaType: "rich-text", entityType: "blog", entityId: "blog-2026-collectibles-trends", ownerId: "user-admin-letitrip", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 14400000) },
|
|
261
|
+
];
|
|
262
|
+
// ───── reports (4 records) ────────────────────────────────────────────────
|
|
263
|
+
export const reportsSeedData = [
|
|
264
|
+
{ id: "report-counterfeit-charizard", entityType: "product", entityId: "product-suspect-charizard", reporterId: "user-ravi-kumar", reason: "counterfeit", detail: "Card edges look reprinted; texture inconsistent.", evidenceUrls: [], status: "pending" },
|
|
265
|
+
{ id: "report-scam-store-fly-by-night", entityType: "store", entityId: "store-suspect-fly-by-night", reporterId: "user-priya-sharma", reason: "scam", detail: "Reports of orders not shipped after 4 weeks.", evidenceUrls: [], status: "under-review", assignedTo: "user-admin-letitrip" },
|
|
266
|
+
{ id: "report-spam-review-bey", entityType: "review", entityId: "review-bey-spammy", reporterId: "user-arjun-rao", reason: "spam", detail: "Promotional link in review.", evidenceUrls: [], status: "actioned", resolution: "Review hidden.", resolvedAt: new Date(NOW.getTime() - 86400000) },
|
|
267
|
+
{ id: "report-harassment-comment", entityType: "comment", entityId: "comment-bad-actor-1", reporterId: "user-mohsin-c", reason: "harassment", detail: "Targeted abuse in blog comments.", evidenceUrls: [], status: "dismissed", resolvedAt: new Date(NOW.getTime() - 172800000) },
|
|
268
|
+
{ id: "report-prohibited-replica-listing", entityType: "product", entityId: "product-suspect-replica-rolex", reporterId: "user-mohsin-c", reason: "prohibited", detail: "Replica branded merchandise.", evidenceUrls: [], status: "pending" },
|
|
269
|
+
{ id: "report-ip-violation-fan-art-print", entityType: "product", entityId: "product-bootleg-pokemon-print", reporterId: "user-priya-sharma", reason: "ip-violation", detail: "Unauthorised Pokémon art prints.", evidenceUrls: [], status: "under-review", assignedTo: "user-admin-letitrip" },
|
|
270
|
+
{ id: "report-spam-listing-mass-post", entityType: "store", entityId: "store-spammer-mass", reporterId: "user-arjun-rao", reason: "spam", detail: "Same product listed 50+ times.", evidenceUrls: [], status: "pending" },
|
|
271
|
+
{ id: "report-inappropriate-blog", entityType: "blog", entityId: "blog-controversial-post", reporterId: "user-anonymous-1", reason: "inappropriate", detail: "Off-topic political content.", evidenceUrls: [], status: "dismissed", resolvedAt: new Date(NOW.getTime() - 259200000) },
|
|
272
|
+
];
|
|
273
|
+
// ───── itemRequests (3 records) ───────────────────────────────────────────
|
|
274
|
+
export const itemRequestsSeedData = [
|
|
275
|
+
{
|
|
276
|
+
id: "irq-charizard-shadowless",
|
|
277
|
+
opUserId: "user-ravi-kumar",
|
|
278
|
+
opDisplayName: "Ravi Kumar",
|
|
279
|
+
title: "Looking for Shadowless Charizard PSA 8+",
|
|
280
|
+
description: "Hunting a Shadowless Base Set Charizard, grade 8 or above. Budget Rs 2,50,000.",
|
|
281
|
+
category: "trading-cards",
|
|
282
|
+
brand: "pokemon",
|
|
283
|
+
maxBudgetInPaise: 25000000,
|
|
284
|
+
imageUrls: ["https://picsum.photos/seed/irq-1/640/480"],
|
|
285
|
+
status: "open",
|
|
286
|
+
replyCount: 2,
|
|
287
|
+
replies: [],
|
|
288
|
+
approvedAt: new Date(NOW.getTime() - 86400000),
|
|
289
|
+
approvedBy: "user-admin-letitrip",
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
id: "irq-tomica-redline-bmw",
|
|
293
|
+
opUserId: "user-arjun-rao",
|
|
294
|
+
opDisplayName: "Arjun Rao",
|
|
295
|
+
title: "Tomica Limited Vintage BMW 2002",
|
|
296
|
+
description: "Mint condition only. Box must be intact.",
|
|
297
|
+
category: "diecast-vehicles",
|
|
298
|
+
brand: "tomica",
|
|
299
|
+
maxBudgetInPaise: 850000,
|
|
300
|
+
imageUrls: ["https://picsum.photos/seed/irq-2/640/480"],
|
|
301
|
+
status: "open",
|
|
302
|
+
replyCount: 0,
|
|
303
|
+
replies: [],
|
|
304
|
+
approvedAt: new Date(NOW.getTime() - 43200000),
|
|
305
|
+
approvedBy: "user-admin-letitrip",
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: "irq-pending-funko-grail",
|
|
309
|
+
opUserId: "user-priya-sharma",
|
|
310
|
+
opDisplayName: "Priya Sharma",
|
|
311
|
+
title: "Funko Pop SDCC Exclusive Glow Batman",
|
|
312
|
+
description: "Searching for the 2013 SDCC Glow-in-Dark Batman exclusive.",
|
|
313
|
+
category: "action-figures",
|
|
314
|
+
brand: "funko",
|
|
315
|
+
imageUrls: ["https://picsum.photos/seed/irq-3/640/480"],
|
|
316
|
+
status: "pending-approval",
|
|
317
|
+
replyCount: 0,
|
|
318
|
+
replies: [],
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: "irq-bey-spriggan-bb-105",
|
|
322
|
+
opUserId: "user-arjun-rao",
|
|
323
|
+
opDisplayName: "Arjun Rao",
|
|
324
|
+
title: "Beyblade Spriggan BB-105 boxed",
|
|
325
|
+
description: "Need original-box Spriggan from the Metal Fight series. Mint launcher.",
|
|
326
|
+
category: "spinning-tops",
|
|
327
|
+
brand: "takara-tomy",
|
|
328
|
+
maxBudgetInPaise: 450000,
|
|
329
|
+
imageUrls: ["https://picsum.photos/seed/irq-4/640/480"],
|
|
330
|
+
status: "open",
|
|
331
|
+
replyCount: 1,
|
|
332
|
+
replies: [],
|
|
333
|
+
approvedAt: new Date(NOW.getTime() - 28800000),
|
|
334
|
+
approvedBy: "user-admin-letitrip",
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
id: "irq-rg-nu-gundam",
|
|
338
|
+
opUserId: "user-mohsin-c",
|
|
339
|
+
opDisplayName: "Mohsin C",
|
|
340
|
+
title: "RG 1/144 Nu Gundam mint sealed",
|
|
341
|
+
description: "Sealed runner. Will pay shipping insurance.",
|
|
342
|
+
category: "model-kits",
|
|
343
|
+
brand: "bandai",
|
|
344
|
+
maxBudgetInPaise: 320000,
|
|
345
|
+
imageUrls: ["https://picsum.photos/seed/irq-5/640/480"],
|
|
346
|
+
status: "fulfilled",
|
|
347
|
+
replyCount: 4,
|
|
348
|
+
replies: [],
|
|
349
|
+
approvedAt: new Date(NOW.getTime() - 7 * 86400000),
|
|
350
|
+
approvedBy: "user-admin-letitrip",
|
|
351
|
+
closedAt: new Date(NOW.getTime() - 2 * 86400000),
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
id: "irq-tcg-base-set-booster",
|
|
355
|
+
opUserId: "user-ravi-kumar",
|
|
356
|
+
opDisplayName: "Ravi Kumar",
|
|
357
|
+
title: "Pokémon Base Set booster pack — unopened",
|
|
358
|
+
description: "Any printing. Western or Japanese OK. Sealed only.",
|
|
359
|
+
category: "trading-cards",
|
|
360
|
+
brand: "pokemon",
|
|
361
|
+
maxBudgetInPaise: 1500000,
|
|
362
|
+
imageUrls: ["https://picsum.photos/seed/irq-6/640/480"],
|
|
363
|
+
status: "open",
|
|
364
|
+
replyCount: 0,
|
|
365
|
+
replies: [],
|
|
366
|
+
approvedAt: new Date(NOW.getTime() - 14400000),
|
|
367
|
+
approvedBy: "user-admin-letitrip",
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
id: "irq-rejected-replica-watch",
|
|
371
|
+
opUserId: "user-anonymous-flagged",
|
|
372
|
+
opDisplayName: "Anonymous",
|
|
373
|
+
title: "Replica luxury watches",
|
|
374
|
+
description: "Looking for replica watches at discount.",
|
|
375
|
+
category: "other",
|
|
376
|
+
imageUrls: ["https://picsum.photos/seed/irq-7/640/480"],
|
|
377
|
+
status: "rejected",
|
|
378
|
+
replyCount: 0,
|
|
379
|
+
replies: [],
|
|
380
|
+
},
|
|
381
|
+
];
|
|
382
|
+
// ───── storeWhatsAppConfig (2 records) ────────────────────────────────────
|
|
383
|
+
export const storeWhatsAppConfigSeedData = [
|
|
384
|
+
{
|
|
385
|
+
id: "whatsapp-pokemon-palace",
|
|
386
|
+
storeId: "store-pokemon-palace",
|
|
387
|
+
isConnected: true,
|
|
388
|
+
isPaid: true,
|
|
389
|
+
phoneNumber: "+919876543210",
|
|
390
|
+
businessProfileName: "Pokémon Palace",
|
|
391
|
+
catalogUrl: "https://wa.me/c/919876543210",
|
|
392
|
+
autoReply: "Hi! Thanks for messaging Pokémon Palace. We respond within 2 hours.",
|
|
393
|
+
welcomeMessage: "Welcome to Pokémon Palace! Browse our catalog above.",
|
|
394
|
+
onboardingStatus: "approved",
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
id: "whatsapp-tokyo-toys",
|
|
398
|
+
storeId: "store-tokyo-toys-india",
|
|
399
|
+
isConnected: false,
|
|
400
|
+
isPaid: false,
|
|
401
|
+
onboardingStatus: "pending",
|
|
402
|
+
},
|
|
403
|
+
];
|
|
404
|
+
// ───── storeGoogleConfig (2 records) ──────────────────────────────────────
|
|
405
|
+
export const storeGoogleConfigSeedData = [
|
|
406
|
+
{
|
|
407
|
+
id: "google-pokemon-palace",
|
|
408
|
+
storeId: "store-pokemon-palace",
|
|
409
|
+
isConnected: true,
|
|
410
|
+
placeId: "ChIJpokemonpalace12345",
|
|
411
|
+
businessName: "Pokémon Palace",
|
|
412
|
+
averageRating: 4.7,
|
|
413
|
+
totalReviews: 124,
|
|
414
|
+
lastSyncedAt: new Date(NOW.getTime() - 3600000),
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
id: "google-diecast-depot",
|
|
418
|
+
storeId: "store-diecast-depot",
|
|
419
|
+
isConnected: false,
|
|
420
|
+
},
|
|
421
|
+
];
|