@mohasinac/appkit 3.6.5 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +17 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +7 -2
- package/dist/_internal/client/features/tour/TourProvider.d.ts +5 -2
- package/dist/_internal/client/features/tour/TourProvider.js +125 -12
- package/dist/_internal/client/theme/ThemeProvider.js +1 -1
- package/dist/_internal/server/features/categories/data.js +2 -2
- package/dist/_internal/server/features/faqs/og.js +5 -1
- package/dist/_internal/server/features/reviews/og.js +5 -1
- package/dist/_internal/server/features/seo/manifest.js +2 -1
- package/dist/_internal/server/features/seo/og.js +7 -1
- package/dist/_internal/server/features/tester/visibility.d.ts +13 -0
- package/dist/_internal/server/features/tester/visibility.js +28 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +9 -1
- package/dist/_internal/server/jobs/core/jobRunners.js +5 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.d.ts +17 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.js +88 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +6 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +35 -0
- package/dist/_internal/server/jobs/handlers/_helpers.d.ts +6 -0
- package/dist/_internal/server/jobs/handlers/_helpers.js +12 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/messages.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/messages.js +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +56 -0
- package/dist/_internal/shared/tokens/index.d.ts +12 -12
- package/dist/client.d.ts +15 -3
- package/dist/client.js +10 -2
- package/dist/constants/api-endpoints.d.ts +39 -12
- package/dist/constants/api-endpoints.js +17 -8
- package/dist/constants/field-names.d.ts +9 -0
- package/dist/constants/field-names.js +12 -0
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/features/account/components/LinkedAccountsSection.d.ts +11 -0
- package/dist/features/account/components/LinkedAccountsSection.js +11 -0
- package/dist/features/account/components/UserSidebar.d.ts +3 -1
- package/dist/features/account/components/UserSidebar.js +9 -13
- package/dist/features/account/hooks/useCollapsedSections.d.ts +20 -0
- package/dist/features/account/hooks/useCollapsedSections.js +63 -0
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +1 -0
- package/dist/features/account/index.js +1 -0
- package/dist/features/admin/components/AdminAddressEditorView.js +2 -2
- package/dist/features/admin/components/AdminBidsView.js +6 -6
- package/dist/features/admin/components/AdminBrandsView.js +2 -2
- package/dist/features/admin/components/AdminCarouselView.js +2 -2
- package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
- package/dist/features/admin/components/AdminPrizeDrawsView.js +3 -3
- package/dist/features/admin/components/AdminProductEditorView.js +5 -2
- package/dist/features/admin/components/AdminReviewsView.js +5 -5
- package/dist/features/admin/components/AdminSectionsView.js +3 -18
- package/dist/features/admin/components/AdminSidebar.js +8 -6
- package/dist/features/admin/components/AdminSiteSettingsView.js +133 -127
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +1 -1
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.d.ts +9 -0
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +129 -0
- package/dist/features/admin/components/AdminTesterChecklistView.d.ts +6 -0
- package/dist/features/admin/components/AdminTesterChecklistView.js +93 -0
- package/dist/features/admin/components/AdminUserEditorView.d.ts +3 -1
- package/dist/features/admin/components/AdminUserEditorView.js +7 -1
- package/dist/features/admin/components/AdminUsersView.js +1 -1
- package/dist/features/admin/components/DataListingView.js +2 -2
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +8 -0
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +41 -0
- package/dist/features/admin/components/index.d.ts +6 -0
- package/dist/features/admin/components/index.js +3 -0
- package/dist/features/admin/schemas/firestore.d.ts +0 -7
- package/dist/features/admin/schemas/firestore.js +6 -6
- package/dist/features/analytics/components/PageViewTracker.d.ts +12 -0
- package/dist/features/analytics/components/PageViewTracker.js +22 -0
- package/dist/features/analytics/repository/page-views.repository.d.ts +32 -0
- package/dist/features/analytics/repository/page-views.repository.js +43 -0
- package/dist/features/analytics/types.d.ts +6 -0
- package/dist/features/analytics/types.js +13 -0
- package/dist/features/auth/components/SocialAuthButtons.js +1 -1
- package/dist/features/auth/hooks/useAuth.d.ts +12 -0
- package/dist/features/auth/hooks/useAuth.js +109 -0
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/repository/session.repository.d.ts +2 -0
- package/dist/features/auth/repository/session.repository.js +4 -1
- package/dist/features/auth/schemas/firestore.d.ts +17 -1
- package/dist/features/auth/schemas/firestore.js +2 -0
- package/dist/features/blog/components/BlogIndexListing.js +2 -2
- package/dist/features/blog/schemas/firestore.d.ts +4 -0
- package/dist/features/cart/actions/cart-actions.js +20 -2
- package/dist/features/categories/api/route.js +2 -2
- package/dist/features/categories/components/CategoriesIndexListing.js +3 -3
- package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +3 -1
- package/dist/features/categories/components/CategoryProductsListing.js +2 -2
- package/dist/features/categories/schemas/firestore.d.ts +4 -0
- package/dist/features/classified/components/ClassifiedIndexListing.js +2 -2
- package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -2
- package/dist/features/email/primitives.d.ts +2 -2
- package/dist/features/email/primitives.js +2 -2
- package/dist/features/events/components/EventsIndexListing.js +2 -2
- package/dist/features/events/repository/event-entry.repository.js +1 -0
- package/dist/features/events/schemas/firestore.d.ts +7 -1
- package/dist/features/events/schemas/firestore.js +1 -0
- package/dist/features/layout/BackToTop.d.ts +6 -1
- package/dist/features/layout/BackToTop.js +31 -6
- package/dist/features/layout/BottomNavbar.js +1 -1
- package/dist/features/layout/NavItem.js +1 -1
- package/dist/features/layout/NavbarLayout.js +2 -2
- package/dist/features/live/components/LiveItemsIndexListing.js +2 -2
- package/dist/features/media/MediaVideo.js +5 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -2
- package/dist/features/products/components/AuctionsIndexListing.js +2 -2
- package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -2
- package/dist/features/products/components/ProductsIndexListing.js +2 -2
- package/dist/features/products/constants/action-defs.d.ts +2 -0
- package/dist/features/products/constants/action-defs.js +2 -0
- package/dist/features/products/constants/sieve.d.ts +0 -6
- package/dist/features/products/constants/sieve.js +4 -2
- package/dist/features/products/repository/products.repository.d.ts +20 -0
- package/dist/features/products/repository/products.repository.js +5 -0
- package/dist/features/products/schemas/firestore.d.ts +4 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +18 -5
- package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
- package/dist/features/search/hooks/useNavSuggestions.js +20 -1
- package/dist/features/seller/actions/seller-actions.js +11 -6
- package/dist/features/seller/components/SellerAddressesView.js +2 -2
- package/dist/features/seller/components/SellerBidsView.js +2 -2
- package/dist/features/seller/components/SellerCouponsView.js +1 -1
- package/dist/features/seller/components/SellerOrdersView.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +2 -2
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -1
- package/dist/features/seller/components/SellerSidebar.js +9 -8
- package/dist/features/seller/components/SellerStoreCategoriesView.js +2 -2
- package/dist/features/seller/components/SellerTemplatesView.js +2 -2
- package/dist/features/shell/StepForm.js +4 -4
- package/dist/features/stores/actions/store-query-actions.d.ts +5 -4
- package/dist/features/stores/actions/store-query-actions.js +11 -8
- package/dist/features/stores/components/StoreAuctionsListing.js +2 -2
- package/dist/features/stores/components/StoreClassifiedsListing.js +2 -2
- package/dist/features/stores/components/StoreDetailLayoutView.js +1 -1
- package/dist/features/stores/components/StoreDigitalCodesListing.js +2 -2
- package/dist/features/stores/components/StoreLiveItemsListing.js +2 -2
- package/dist/features/stores/components/StorePreOrdersListing.js +2 -2
- package/dist/features/stores/components/StoreProductsListing.js +2 -2
- package/dist/features/stores/components/StoreReviewsListing.js +2 -2
- package/dist/features/stores/components/StoresIndexListing.js +2 -2
- package/dist/features/stores/repository/store.repository.js +3 -0
- package/dist/features/stores/schemas/firestore.d.ts +4 -0
- package/dist/features/tester/actions/checklist-item-actions.d.ts +69 -0
- package/dist/features/tester/actions/checklist-item-actions.js +42 -0
- package/dist/features/tester/actions/index.d.ts +1 -0
- package/dist/features/tester/actions/index.js +1 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +22 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.d.ts +3 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.js +100 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.js +30 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.js +29 -0
- package/dist/features/tester/components/TesterChecklistStepRow.d.ts +18 -0
- package/dist/features/tester/components/TesterChecklistStepRow.js +29 -0
- package/dist/features/tester/components/TesterFeedbackChart.d.ts +14 -0
- package/dist/features/tester/components/TesterFeedbackChart.js +18 -0
- package/dist/features/tester/components/TesterHubView.d.ts +5 -0
- package/dist/features/tester/components/TesterHubView.js +71 -0
- package/dist/features/tester/components/index.d.ts +11 -0
- package/dist/features/tester/components/index.js +7 -0
- package/dist/features/tester/index.d.ts +2 -0
- package/dist/features/tester/index.js +2 -0
- package/dist/features/tester/repository/index.d.ts +2 -0
- package/dist/features/tester/repository/index.js +2 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +13 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.js +55 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +50 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.js +196 -0
- package/dist/features/tester/schemas/firestore.d.ts +85 -0
- package/dist/features/tester/schemas/firestore.js +93 -0
- package/dist/features/tester/schemas/index.d.ts +1 -0
- package/dist/features/tester/schemas/index.js +1 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +177 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.js +50 -0
- package/dist/features/tester/seed-data/index.d.ts +6 -0
- package/dist/features/tester/seed-data/index.js +6 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.js +151 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +248 -0
- package/dist/features/tester/seed-data/tester-ttl.d.ts +4 -0
- package/dist/features/tester/seed-data/tester-ttl.js +6 -0
- package/dist/features/tester/server.d.ts +9 -0
- package/dist/features/tester/server.js +8 -0
- package/dist/index.d.ts +28 -2
- package/dist/index.js +51 -1
- package/dist/next/api/api-response.js +5 -1
- package/dist/next/api/routeHandler.js +10 -1
- package/dist/next/middleware/chain.js +1 -1
- package/dist/next/routing/route-map.d.ts +6 -7
- package/dist/next/routing/route-map.js +3 -7
- package/dist/providers/payment-manual/index.d.ts +2 -2
- package/dist/providers/payment-manual/index.js +2 -2
- package/dist/react/contexts/SessionContext.d.ts +4 -0
- package/dist/react/contexts/SessionContext.js +4 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.js +3 -0
- package/dist/security/pii-encrypt.js +12 -2
- package/dist/seed/addresses-seed-data.js +1 -1
- package/dist/seed/bids-seed-data.js +64 -185
- package/dist/seed/blog-posts-seed-data.js +1 -1
- package/dist/seed/carousel-slides-seed-data.js +22 -16
- package/dist/seed/carousels-seed-data.js +1 -1
- package/dist/seed/cart-seed-data.js +1 -1
- package/dist/seed/categories-seed-data.js +1 -1
- package/dist/seed/claimed-coupons-seed-data.js +1 -1
- package/dist/seed/conversations-seed-data.js +1 -1
- package/dist/seed/coupon-usage-seed-data.js +1 -1
- package/dist/seed/coupons-seed-data.js +1 -1
- package/dist/seed/events-seed-data.js +1 -1
- package/dist/seed/faq-seed-data.js +119 -3
- package/dist/seed/grouped-listings-seed-data.d.ts +2 -0
- package/dist/seed/grouped-listings-seed-data.js +1 -1
- package/dist/seed/history-seed-data.js +1 -1
- package/dist/seed/homepage-sections-seed-data.js +1 -1
- package/dist/seed/index.d.ts +2 -2
- package/dist/seed/index.js +7 -3
- package/dist/seed/lottery-entries-seed-data.js +1 -1
- package/dist/seed/manifest.d.ts +4 -3
- package/dist/seed/manifest.js +13 -6
- package/dist/seed/notifications-seed-data.js +1 -1
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.js +1 -1
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +1 -1
- package/dist/seed/products-auctions-seed-data.js +1 -1
- package/dist/seed/products-classifieds-seed-data.js +1 -1
- package/dist/seed/products-digital-codes-seed-data.js +1 -1
- package/dist/seed/products-live-items-seed-data.js +1 -1
- package/dist/seed/products-preorders-seed-data.d.ts +2 -0
- package/dist/seed/products-preorders-seed-data.js +1 -1
- package/dist/seed/products-prize-draws-seed-data.js +1 -1
- package/dist/seed/products-standard-seed-data.js +1 -1
- package/dist/seed/products-stickers-seed-data.js +1 -1
- package/dist/seed/reviews-seed-data.js +1 -1
- package/dist/seed/scammers-seed-data.js +1 -1
- package/dist/seed/sessions-seed-data.js +1 -1
- package/dist/seed/site-settings-seed-data.js +22 -16
- package/dist/seed/store-addresses-seed-data.js +1 -1
- package/dist/seed/store-extensions-seed-data.js +1 -1
- package/dist/seed/stores-seed-data.js +1 -1
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/tester-checklist-seed-data.d.ts +2 -0
- package/dist/seed/tester-checklist-seed-data.js +248 -0
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seed/wishlists-seed-data.js +1 -1
- package/dist/server.d.ts +7 -2
- package/dist/server.js +19 -12
- package/dist/styles.css +181 -165
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/color-pairs.d.ts +46 -0
- package/dist/tokens/color-pairs.js +93 -0
- package/dist/tokens/index.d.ts +60 -60
- package/dist/tokens/index.js +30 -30
- package/dist/tokens/themes/cobalt-night.d.ts +3 -2
- package/dist/tokens/themes/cobalt-night.js +3 -2
- package/dist/tokens/themes/default-dark.d.ts +4 -1
- package/dist/tokens/themes/default-dark.js +53 -50
- package/dist/tokens/themes/default-light.d.ts +5 -1
- package/dist/tokens/themes/default-light.js +48 -44
- package/dist/tokens/themes/sunset.js +4 -4
- package/dist/tokens/tokens.css +128 -122
- package/dist/ui/components/CollapsibleSection.d.ts +15 -0
- package/dist/ui/components/CollapsibleSection.js +13 -0
- package/dist/ui/components/ListingToolbar.js +3 -2
- package/dist/ui/components/Semantic.style.css +3 -3
- package/dist/ui/components/SideDrawer.style.css +19 -19
- package/dist/ui/components/Slider.js +1 -1
- package/dist/ui/components/StickyToolbar.d.ts +36 -7
- package/dist/ui/components/StickyToolbar.js +63 -5
- package/dist/ui/components/Tabs.js +17 -1
- package/dist/ui/components/Tabs.style.css +10 -0
- package/dist/ui/components/Typography.js +7 -0
- package/dist/ui/components/surface-tokens.d.ts +0 -7
- package/dist/ui/components/surface-tokens.js +7 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/rich-text/RichText.style.css +20 -20
- package/dist/utils/id-generators.d.ts +13 -0
- package/dist/utils/id-generators.js +17 -0
- package/package.json +1 -1
- package/scripts/seed-cli-loader.mjs +15 -0
- package/scripts/seed-cli.mjs +71 -17
|
@@ -27,6 +27,10 @@ export interface SessionUser {
|
|
|
27
27
|
sessionId?: string;
|
|
28
28
|
phoneVerified?: boolean;
|
|
29
29
|
avatarMetadata?: AvatarMetadataShape | null;
|
|
30
|
+
/** Set when this account owns a store — drives the admin sidebar's "Go to my Store" cross-nav link. */
|
|
31
|
+
storeId?: string;
|
|
32
|
+
/** Tester program flag — orthogonal to `role`. Unlocks the Tester Hub nav item/page. */
|
|
33
|
+
isTester?: boolean;
|
|
30
34
|
publicProfile?: FirestoreDocument;
|
|
31
35
|
stats?: FirestoreDocument;
|
|
32
36
|
metadata?: FirestoreDocument;
|
|
@@ -62,6 +62,8 @@ function buildSessionUser(authUser, serverData) {
|
|
|
62
62
|
: undefined,
|
|
63
63
|
sessionId: currentSessionId || undefined,
|
|
64
64
|
phoneVerified: serverData.phoneVerified,
|
|
65
|
+
storeId: serverData.storeId,
|
|
66
|
+
isTester: serverData.isTester,
|
|
65
67
|
avatarMetadata: serverData.avatarMetadata?.url
|
|
66
68
|
? {
|
|
67
69
|
url: serverData.avatarMetadata.url,
|
|
@@ -130,6 +132,8 @@ export function SessionProvider({ children, initialUser, endpoints: endpointOver
|
|
|
130
132
|
updatedAt: data.updatedAt ? new Date(data.updatedAt) : undefined,
|
|
131
133
|
sessionId: currentSessionId || undefined,
|
|
132
134
|
phoneVerified: data.phoneVerified,
|
|
135
|
+
storeId: data.storeId,
|
|
136
|
+
isTester: data.isTester,
|
|
133
137
|
avatarMetadata: data.avatarMetadata?.url
|
|
134
138
|
? {
|
|
135
139
|
url: data.avatarMetadata.url,
|
|
@@ -27,6 +27,8 @@ export { couponsRepository } from "../features/promotions/repository/coupons.rep
|
|
|
27
27
|
export { ClaimedCouponsRepository, claimedCouponsRepository, } from "../features/promotions/repository/claimed-coupons.repository";
|
|
28
28
|
export type { ClaimedCouponCreateInput } from "../features/promotions/repository/claimed-coupons.repository";
|
|
29
29
|
export { FAQsRepository, FirebaseFAQsRepository, faqsRepository, } from "../features/faq/repository/faqs.repository";
|
|
30
|
+
export { TesterChecklistItemRepository, testerChecklistItemRepository, } from "../features/tester/repository/tester-checklist-item.repository";
|
|
31
|
+
export { TesterChecklistResponseRepository, testerChecklistResponseRepository, } from "../features/tester/repository/tester-checklist-response.repository";
|
|
30
32
|
export { BlogRepository, blogRepository, } from "../features/blog/repository/blog.repository";
|
|
31
33
|
export { payoutRepository } from "../features/payments/repository/payout.repository";
|
|
32
34
|
export { jobsRepository, JobsRepository } from "../features/jobs/repository/jobs.repository";
|
|
@@ -58,3 +60,5 @@ export { loadProductFeaturesForStore } from "../features/products/repository/loa
|
|
|
58
60
|
export { LotteryEntryRepository, lotteryEntryRepository, } from "../features/lottery/repository/lottery-entry.repository";
|
|
59
61
|
export { MediaAssetsRepository, mediaAssetsRepository, } from "../features/media/repository/media-assets.repository";
|
|
60
62
|
export type { MediaAssetDocument, MediaAssetCreateInput, } from "../features/media/repository/media-assets.repository";
|
|
63
|
+
export { PageViewsRepository, pageViewsRepository, PAGE_VIEW_ENTITY_TYPES, } from "../features/analytics/repository/page-views.repository";
|
|
64
|
+
export type { PageViewDocument, PageViewEntityType, RecordPageViewInput, } from "../features/analytics/repository/page-views.repository";
|
|
@@ -33,6 +33,8 @@ export { CategoriesRepository, categoriesRepository, } from "../features/categor
|
|
|
33
33
|
export { couponsRepository } from "../features/promotions/repository/coupons.repository";
|
|
34
34
|
export { ClaimedCouponsRepository, claimedCouponsRepository, } from "../features/promotions/repository/claimed-coupons.repository";
|
|
35
35
|
export { FAQsRepository, FirebaseFAQsRepository, faqsRepository, } from "../features/faq/repository/faqs.repository";
|
|
36
|
+
export { TesterChecklistItemRepository, testerChecklistItemRepository, } from "../features/tester/repository/tester-checklist-item.repository";
|
|
37
|
+
export { TesterChecklistResponseRepository, testerChecklistResponseRepository, } from "../features/tester/repository/tester-checklist-response.repository";
|
|
36
38
|
export { BlogRepository, blogRepository, } from "../features/blog/repository/blog.repository";
|
|
37
39
|
export { payoutRepository } from "../features/payments/repository/payout.repository";
|
|
38
40
|
export { jobsRepository, JobsRepository } from "../features/jobs/repository/jobs.repository";
|
|
@@ -69,3 +71,4 @@ export { loadProductFeaturesForStore } from "../features/products/repository/loa
|
|
|
69
71
|
export { LotteryEntryRepository, lotteryEntryRepository, } from "../features/lottery/repository/lottery-entry.repository";
|
|
70
72
|
// Media assets — short ID → storagePath mapping for SEO-friendly /media/{id} URLs
|
|
71
73
|
export { MediaAssetsRepository, mediaAssetsRepository, } from "../features/media/repository/media-assets.repository";
|
|
74
|
+
export { PageViewsRepository, pageViewsRepository, PAGE_VIEW_ENTITY_TYPES, } from "../features/analytics/repository/page-views.repository";
|
|
@@ -9,9 +9,19 @@
|
|
|
9
9
|
* Ciphertext format: "enc:v1:<iv_b64>:<ciphertext_b64>:<authtag_b64>"
|
|
10
10
|
* Blind index format: "hmac-sha256:<sha256_hex>"
|
|
11
11
|
*/
|
|
12
|
+
import { createRequire } from "node:module";
|
|
12
13
|
// crypto is a Node.js built-in. Use require() to keep it out of the static
|
|
13
|
-
// import graph so Next.js Edge bundler does not warn about this file.
|
|
14
|
-
|
|
14
|
+
// import graph so Next.js Edge bundler does not warn about this file. A bare
|
|
15
|
+
// top-level `require(...)` call only works when the compiled dist output is
|
|
16
|
+
// loaded via CommonJS (or a bundler that polyfills `require`) — under a
|
|
17
|
+
// plain Node ESM `import()` (e.g. appkit/scripts/seed-cli.mjs and any other
|
|
18
|
+
// standalone script importing @mohasinac/appkit directly), there is no
|
|
19
|
+
// ambient `require` global, so that call threw `ReferenceError: require is
|
|
20
|
+
// not defined`. createRequire(import.meta.url) works in both: it's still a
|
|
21
|
+
// runtime function call a bundler's static analysis won't follow into the
|
|
22
|
+
// client graph, but it resolves correctly under Node's own ESM loader too.
|
|
23
|
+
const nodeRequire = createRequire(import.meta.url);
|
|
24
|
+
function nodeCrypto() { return nodeRequire("crypto"); }
|
|
15
25
|
const ALGO = "aes-256-gcm";
|
|
16
26
|
export const ENC_PREFIX = "enc:v1:";
|
|
17
27
|
export const HMAC_PREFIX = "hmac-sha256:";
|
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds auction bids representing participant offers on
|
|
3
|
-
*
|
|
2
|
+
* WHY: Seeds auction bids representing participant offers on the live Beyblade auctions
|
|
3
|
+
* in products-auctions-seed-data.ts.
|
|
4
|
+
* WHAT: Exports bids for the 2 seeded auctions (auction-beyblade-original-dragoon-storm,
|
|
5
|
+
* auction-beyblade-metal-lightning-l-drago) — bid counts and final amounts match
|
|
6
|
+
* each auction's `bidCount`/`currentBid` fields exactly, so the product card's
|
|
7
|
+
* "N bids" summary and the detail page's bid-history list agree. Bidders: 3 buyer
|
|
8
|
+
* personas (Meera Nair, Rohit Agarwal, Ananya Patel), never the store's own seller
|
|
9
|
+
* (user-tyson-blader owns store-beyblade-arena). Status: newest bid per auction is
|
|
10
|
+
* "active", the rest "outbid". Bid IDs: bid-{productSlug}-{userName}-{YYYYMMDD}-{rand6}.
|
|
4
11
|
*
|
|
5
12
|
* EXPORTS:
|
|
6
|
-
* bidsSeedData — Array of
|
|
13
|
+
* bidsSeedData — Array of bid documents, one set per seeded auction, counts matching
|
|
14
|
+
* each auction's bidCount field
|
|
7
15
|
*
|
|
8
16
|
* @tag domain:auctions,bids
|
|
9
17
|
* @tag layer:seed
|
|
10
18
|
* @tag pattern:none
|
|
11
19
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
20
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
21
|
* @tag sideEffects:none
|
|
14
22
|
*/
|
|
15
23
|
const NOW = new Date();
|
|
16
24
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
17
25
|
const BIDDER_EMAILS = {
|
|
18
|
-
"user-
|
|
19
|
-
"user-
|
|
20
|
-
"user-
|
|
26
|
+
"user-meera-bey": "meera.blader@gmail.com",
|
|
27
|
+
"user-rohit-collector": "rohit.collect@gmail.com",
|
|
28
|
+
"user-ananya-collector": "ananya.patel@gmail.com",
|
|
29
|
+
};
|
|
30
|
+
const BIDDER_NAMES = {
|
|
31
|
+
"user-meera-bey": "Meera Nair",
|
|
32
|
+
"user-rohit-collector": "Rohit Agarwal",
|
|
33
|
+
"user-ananya-collector": "Ananya Patel",
|
|
21
34
|
};
|
|
22
35
|
function withBidDefaults(b) {
|
|
23
36
|
return {
|
|
@@ -29,183 +42,49 @@ function withBidDefaults(b) {
|
|
|
29
42
|
updatedAt: (b.createdAt ?? NOW),
|
|
30
43
|
};
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
bidDate: daysAgo(6),
|
|
52
|
-
createdAt: daysAgo(6),
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
id: "bid-blue-eyes-psa10-yugi-20260513-001",
|
|
56
|
-
productId: "auction-psa10-blue-eyes-lob",
|
|
57
|
-
userId: "user-yugi-muto",
|
|
58
|
-
userName: "Yugi Muto",
|
|
59
|
-
bidAmount: 45000000, // ₹4,50,000 (paise)
|
|
60
|
-
status: "outbid",
|
|
61
|
-
bidDate: daysAgo(7),
|
|
62
|
-
createdAt: daysAgo(7),
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: "bid-blue-eyes-psa10-admin-20260512-001",
|
|
66
|
-
productId: "auction-psa10-blue-eyes-lob",
|
|
67
|
-
userId: "user-admin-letitrip",
|
|
68
|
-
userName: "LetItRip Admin",
|
|
69
|
-
bidAmount: 40000000, // ₹4,00,000 (paise)
|
|
70
|
-
status: "outbid",
|
|
71
|
-
bidDate: daysAgo(8),
|
|
72
|
-
createdAt: daysAgo(8),
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
id: "bid-dark-magician-psa9-yugi-20260518-002",
|
|
76
|
-
productId: "auction-psa9-dark-magician-lob",
|
|
77
|
-
userId: "user-yugi-muto",
|
|
78
|
-
userName: "Yugi Muto",
|
|
79
|
-
bidAmount: 45000000, // ₹4,50,000 (paise)
|
|
80
|
-
status: "active",
|
|
81
|
-
bidDate: daysAgo(2),
|
|
82
|
-
createdAt: daysAgo(2),
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
id: "bid-dark-magician-psa9-admin-20260517-002",
|
|
86
|
-
productId: "auction-psa9-dark-magician-lob",
|
|
87
|
-
userId: "user-admin-letitrip",
|
|
88
|
-
userName: "LetItRip Admin",
|
|
89
|
-
bidAmount: 40000000, // ₹4,00,000 (paise)
|
|
90
|
-
status: "outbid",
|
|
91
|
-
bidDate: daysAgo(3),
|
|
92
|
-
createdAt: daysAgo(3),
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
id: "bid-exodia-ended-yugi-20260513-won",
|
|
96
|
-
productId: "auction-ended-psa10-exodia",
|
|
97
|
-
userId: "user-yugi-muto",
|
|
98
|
-
userName: "Yugi Muto",
|
|
99
|
-
bidAmount: 90000000, // ₹9,00,000 (paise) — final
|
|
100
|
-
status: "won",
|
|
101
|
-
bidDate: daysAgo(7),
|
|
102
|
-
createdAt: daysAgo(7),
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
id: "bid-exodia-ended-admin-20260512-outbid",
|
|
106
|
-
productId: "auction-ended-psa10-exodia",
|
|
107
|
-
userId: "user-admin-letitrip",
|
|
108
|
-
userName: "LetItRip Admin",
|
|
109
|
-
bidAmount: 80000000, // ₹8,00,000 (paise)
|
|
110
|
-
status: "outbid",
|
|
111
|
-
bidDate: daysAgo(8),
|
|
112
|
-
createdAt: daysAgo(8),
|
|
113
|
-
},
|
|
114
|
-
// [... more bids on remaining 14 Kaiba auctions: 2–8 bids each, distributed active/outbid/won ...]
|
|
115
|
-
// Admin Store Auctions — Yugi & Kaiba bidding
|
|
116
|
-
{
|
|
117
|
-
id: "bid-ra-authentic-kaiba-20260519-001",
|
|
118
|
-
productId: "auction-admin-ra-authentic-card",
|
|
119
|
-
userId: "user-seto-kaiba",
|
|
120
|
-
userName: "Seto Kaiba",
|
|
121
|
-
bidAmount: 32000000, // ₹3,20,000 (paise)
|
|
122
|
-
status: "active",
|
|
123
|
-
bidDate: daysAgo(1),
|
|
124
|
-
createdAt: daysAgo(1),
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
id: "bid-ra-authentic-yugi-20260518-001",
|
|
128
|
-
productId: "auction-admin-ra-authentic-card",
|
|
129
|
-
userId: "user-yugi-muto",
|
|
130
|
-
userName: "Yugi Muto",
|
|
131
|
-
bidAmount: 28000000, // ₹2,80,000 (paise)
|
|
132
|
-
status: "outbid",
|
|
133
|
-
bidDate: daysAgo(2),
|
|
134
|
-
createdAt: daysAgo(2),
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
id: "bid-obelisk-kaiba-20260520-002",
|
|
138
|
-
productId: "auction-admin-obelisk-authentic",
|
|
139
|
-
userId: "user-seto-kaiba",
|
|
140
|
-
userName: "Seto Kaiba",
|
|
141
|
-
bidAmount: 39000000, // ₹3,90,000 (paise)
|
|
142
|
-
status: "active",
|
|
143
|
-
bidDate: daysAgo(0),
|
|
144
|
-
createdAt: daysAgo(0),
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
id: "bid-obelisk-yugi-20260519-002",
|
|
148
|
-
productId: "auction-admin-obelisk-authentic",
|
|
149
|
-
userId: "user-yugi-muto",
|
|
150
|
-
userName: "Yugi Muto",
|
|
151
|
-
bidAmount: 35000000, // ₹3,50,000 (paise)
|
|
152
|
-
status: "outbid",
|
|
153
|
-
bidDate: daysAgo(1),
|
|
154
|
-
createdAt: daysAgo(1),
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
id: "bid-yugi-promo-ended-kaiba-20260516-won",
|
|
158
|
-
productId: "auction-admin-ended-yugi-promo",
|
|
159
|
-
userId: "user-seto-kaiba",
|
|
160
|
-
userName: "Seto Kaiba",
|
|
161
|
-
bidAmount: 9000000, // ₹90,000 (paise) — final
|
|
162
|
-
status: "won",
|
|
163
|
-
bidDate: daysAgo(4),
|
|
164
|
-
createdAt: daysAgo(4),
|
|
165
|
-
},
|
|
166
|
-
// [... more bids on remaining 3 Admin auctions ...]
|
|
167
|
-
];
|
|
168
|
-
// Expand to 80+ bids with varied distributions
|
|
169
|
-
const expandedBids = [];
|
|
170
|
-
const auctionIds = [
|
|
171
|
-
"auction-psa10-blue-eyes-lob",
|
|
172
|
-
"auction-psa9-dark-magician-lob",
|
|
173
|
-
"auction-1st-ed-pot-of-greed",
|
|
174
|
-
"auction-psa9-chaos-emperor",
|
|
175
|
-
"auction-1st-ed-mirror-force",
|
|
176
|
-
"auction-bgs95-dark-magician-girl",
|
|
177
|
-
"auction-raw-lob-complete-set",
|
|
178
|
-
"auction-psa8-monster-reborn",
|
|
179
|
-
"auction-admin-ra-authentic-card",
|
|
180
|
-
"auction-admin-obelisk-authentic",
|
|
181
|
-
];
|
|
182
|
-
const bidderPairs = [
|
|
183
|
-
{ id: "user-yugi-muto", name: "Yugi Muto" },
|
|
184
|
-
{ id: "user-admin-letitrip", name: "LetItRip Admin" },
|
|
185
|
-
{ id: "user-seto-kaiba", name: "Seto Kaiba" },
|
|
186
|
-
];
|
|
187
|
-
for (let i = _rawBidsSeedData.length; i < 80; i++) {
|
|
188
|
-
const auction = auctionIds[i % auctionIds.length];
|
|
189
|
-
const bidderIdx = Math.floor(i / 8) % bidderPairs.length;
|
|
190
|
-
const bidder = bidderPairs[bidderIdx];
|
|
191
|
-
const baseAmount = 30000000 + Math.random() * 30000000; // ₹3,00,000 to ₹6,00,000
|
|
192
|
-
const status = Math.random() < 0.6
|
|
193
|
-
? "outbid"
|
|
194
|
-
: Math.random() < 0.3
|
|
195
|
-
? "active"
|
|
196
|
-
: "won";
|
|
197
|
-
expandedBids.push({
|
|
198
|
-
id: `bid-${auction.split("-").pop()}-${bidder.name.split(" ").join("").toLowerCase()}-20260515-${String(i).padStart(3, "0")}`,
|
|
199
|
-
productId: auction,
|
|
200
|
-
userId: bidder.id,
|
|
201
|
-
userName: bidder.name,
|
|
202
|
-
bidAmount: Math.floor(baseAmount),
|
|
203
|
-
status,
|
|
204
|
-
bidDate: daysAgo(Math.floor(Math.random() * 14)),
|
|
205
|
-
createdAt: daysAgo(Math.floor(Math.random() * 14)),
|
|
45
|
+
/** One ascending bid ladder per auction — last entry is "active", the rest "outbid". */
|
|
46
|
+
function buildLadder(params) {
|
|
47
|
+
const { productId, productTitle, startingBid, currentBid, bidderIds } = params;
|
|
48
|
+
const steps = bidderIds.length;
|
|
49
|
+
const range = currentBid - startingBid;
|
|
50
|
+
return bidderIds.map((userId, i) => {
|
|
51
|
+
const amount = i === steps - 1 ? currentBid : Math.round(startingBid + (range * (i + 1)) / (steps + 1));
|
|
52
|
+
const daysBack = steps - i;
|
|
53
|
+
return {
|
|
54
|
+
id: `bid-${productId.replace(/^auction-/, "")}-${userId.replace(/^user-/, "")}-20260601-${String(i).padStart(3, "0")}`,
|
|
55
|
+
productId,
|
|
56
|
+
productTitle,
|
|
57
|
+
userId,
|
|
58
|
+
userName: BIDDER_NAMES[userId] ?? userId,
|
|
59
|
+
bidAmount: amount,
|
|
60
|
+
status: i === steps - 1 ? "active" : "outbid",
|
|
61
|
+
bidDate: daysAgo(daysBack),
|
|
62
|
+
createdAt: daysAgo(daysBack),
|
|
63
|
+
};
|
|
206
64
|
});
|
|
207
65
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
...
|
|
211
|
-
|
|
66
|
+
const _rawBidsSeedData = [
|
|
67
|
+
// auction-beyblade-original-dragoon-storm — bidCount: 3, currentBid: 349900
|
|
68
|
+
...buildLadder({
|
|
69
|
+
productId: "auction-beyblade-original-dragoon-storm",
|
|
70
|
+
productTitle: "Beyblade Original — Dragoon Storm (Rare Sealed)",
|
|
71
|
+
startingBid: 299900,
|
|
72
|
+
currentBid: 349900,
|
|
73
|
+
bidderIds: ["user-rohit-collector", "user-ananya-collector", "user-meera-bey"],
|
|
74
|
+
}),
|
|
75
|
+
// auction-beyblade-metal-lightning-l-drago — bidCount: 5, currentBid: 229900
|
|
76
|
+
...buildLadder({
|
|
77
|
+
productId: "auction-beyblade-metal-lightning-l-drago",
|
|
78
|
+
productTitle: "Metal Fight Beyblade BB-99 Lightning L-Drago",
|
|
79
|
+
startingBid: 199900,
|
|
80
|
+
currentBid: 229900,
|
|
81
|
+
bidderIds: [
|
|
82
|
+
"user-meera-bey",
|
|
83
|
+
"user-rohit-collector",
|
|
84
|
+
"user-ananya-collector",
|
|
85
|
+
"user-rohit-collector",
|
|
86
|
+
"user-meera-bey",
|
|
87
|
+
],
|
|
88
|
+
}),
|
|
89
|
+
];
|
|
90
|
+
export const bidsSeedData = _rawBidsSeedData.map(withBidDefaults);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @tag layer:seed
|
|
11
11
|
* @tag pattern:none
|
|
12
12
|
* @tag access:server-only
|
|
13
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
14
14
|
* @tag sideEffects:none
|
|
15
15
|
*/
|
|
16
16
|
import { seedExtMedia } from "./_helpers/media";
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds 6 carousel slides for
|
|
3
|
-
* WHAT: 5 active + 1 inactive.
|
|
2
|
+
* WHY: Seeds 6 carousel slides for the marketplace homepage hero carousel.
|
|
3
|
+
* WHAT: 5 active + 1 inactive. Picsum.photos placeholder backgrounds (deterministic,
|
|
4
|
+
* free, no API key) with dim overlay, CTAs for shop/auctions/bundles/pre-orders/graded.
|
|
5
|
+
* One slide (slide-blue-eyes-auction) uses background.type:"video" with a direct,
|
|
6
|
+
* Creative-Commons-licensed MP4 URL — HeroCarousel renders video backgrounds via a
|
|
7
|
+
* native <video> element (MediaVideo), not a YouTube iframe embed, so this needs a
|
|
8
|
+
* playable video file URL rather than a YouTube video ID.
|
|
4
9
|
*
|
|
5
10
|
* EXPORTS:
|
|
6
11
|
* carouselSlidesSeedData — Array of Partial<CarouselSlideDocument> for seed runner
|
|
@@ -9,7 +14,7 @@
|
|
|
9
14
|
* @tag layer:seed
|
|
10
15
|
* @tag pattern:none
|
|
11
16
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
17
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
18
|
* @tag sideEffects:none
|
|
14
19
|
*/
|
|
15
20
|
import { seedExtMedia } from "./_helpers/media";
|
|
@@ -19,12 +24,12 @@ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
|
19
24
|
const _rawSlides = [
|
|
20
25
|
{
|
|
21
26
|
id: "slide-hero-homepage",
|
|
22
|
-
title: "India's
|
|
27
|
+
title: "India's Largest Collectibles Marketplace",
|
|
23
28
|
order: 1,
|
|
24
29
|
active: true,
|
|
25
30
|
background: {
|
|
26
31
|
type: "image",
|
|
27
|
-
url: seedExtMedia("https://
|
|
32
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-hero-homepage-20260101/1600/700"),
|
|
28
33
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
29
34
|
},
|
|
30
35
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
@@ -34,12 +39,13 @@ const _rawSlides = [
|
|
|
34
39
|
},
|
|
35
40
|
{
|
|
36
41
|
id: "slide-blue-eyes-auction",
|
|
37
|
-
title: "
|
|
42
|
+
title: "Rare Auctions Live Now",
|
|
38
43
|
order: 2,
|
|
39
44
|
active: true,
|
|
40
45
|
background: {
|
|
41
|
-
type: "
|
|
42
|
-
url: seedExtMedia("https://
|
|
46
|
+
type: "video",
|
|
47
|
+
url: seedExtMedia("https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"),
|
|
48
|
+
thumbnail: seedExtMedia("https://picsum.photos/seed/carousel-auctions-live-20260101/1600/700"),
|
|
43
49
|
dimOverlay: { enabled: true, opacity: 0.4 },
|
|
44
50
|
},
|
|
45
51
|
link: { url: String(ROUTES.PUBLIC.AUCTIONS), openInNewTab: false },
|
|
@@ -50,15 +56,15 @@ const _rawSlides = [
|
|
|
50
56
|
},
|
|
51
57
|
{
|
|
52
58
|
id: "slide-exodia-hunt",
|
|
53
|
-
title: "Complete Your
|
|
59
|
+
title: "Complete Your Collection",
|
|
54
60
|
order: 3,
|
|
55
61
|
active: true,
|
|
56
62
|
background: {
|
|
57
63
|
type: "image",
|
|
58
|
-
url: seedExtMedia("https://
|
|
64
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-complete-collection-20260101/1600/700"),
|
|
59
65
|
dimOverlay: { enabled: true, opacity: 0.45 },
|
|
60
66
|
},
|
|
61
|
-
link: { url:
|
|
67
|
+
link: { url: String(ROUTES.PUBLIC.PRODUCTS), openInNewTab: false },
|
|
62
68
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
63
69
|
createdBy: "user-admin-letitrip",
|
|
64
70
|
createdAt: daysAgo(50),
|
|
@@ -66,12 +72,12 @@ const _rawSlides = [
|
|
|
66
72
|
},
|
|
67
73
|
{
|
|
68
74
|
id: "slide-gx-era",
|
|
69
|
-
title: "
|
|
75
|
+
title: "Pre-Orders Now Open",
|
|
70
76
|
order: 4,
|
|
71
77
|
active: true,
|
|
72
78
|
background: {
|
|
73
79
|
type: "image",
|
|
74
|
-
url: seedExtMedia("https://
|
|
80
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-preorders-open-20260101/1600/700"),
|
|
75
81
|
dimOverlay: { enabled: true, opacity: 0.4 },
|
|
76
82
|
},
|
|
77
83
|
link: { url: "/pre-orders", openInNewTab: false },
|
|
@@ -82,12 +88,12 @@ const _rawSlides = [
|
|
|
82
88
|
},
|
|
83
89
|
{
|
|
84
90
|
id: "slide-psa-graded",
|
|
85
|
-
title: "
|
|
91
|
+
title: "Graded Slabs — Authenticated Collectibles",
|
|
86
92
|
order: 5,
|
|
87
93
|
active: true,
|
|
88
94
|
background: {
|
|
89
95
|
type: "image",
|
|
90
|
-
url: seedExtMedia("https://
|
|
96
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-graded-slabs-20260101/1600/700"),
|
|
91
97
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
92
98
|
},
|
|
93
99
|
link: { url: "/categories/category-graded-cards", openInNewTab: false },
|
|
@@ -103,7 +109,7 @@ const _rawSlides = [
|
|
|
103
109
|
active: false,
|
|
104
110
|
background: {
|
|
105
111
|
type: "image",
|
|
106
|
-
url: seedExtMedia("https://
|
|
112
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-tournament-promo-20260101/1600/700"),
|
|
107
113
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
108
114
|
},
|
|
109
115
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { getDefaultCurrency } from "./seed-market-config";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { createClaimedCouponId } from "../features/promotions/schemas";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { COUPON_FIELDS } from "../constants/field-names";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @tag layer:seed
|
|
11
11
|
* @tag pattern:none
|
|
12
12
|
* @tag access:server-only
|
|
13
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
14
14
|
* @tag sideEffects:none
|
|
15
15
|
*/
|
|
16
16
|
import { EVENT_FIELDS, EVENT_ENTRY_FIELDS } from "../features/events/schemas";
|