@mohasinac/appkit 4.30.19 → 4.31.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/useSidebarSearch.d.ts +21 -5
- package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -87
- package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
- package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
- package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
- package/dist/_internal/server/features/auth/permissions.js +3 -2
- package/dist/_internal/server/features/categories/data.js +15 -4
- package/dist/_internal/server/features/classified/index.d.ts +0 -1
- package/dist/_internal/server/features/classified/index.js +0 -1
- package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
- package/dist/_internal/server/features/digital-code/index.js +0 -1
- package/dist/_internal/server/features/live/index.d.ts +0 -1
- package/dist/_internal/server/features/live/index.js +0 -1
- package/dist/_internal/server/features/products/data.js +15 -5
- package/dist/_internal/server/features/products/list-public.d.ts +9 -0
- package/dist/_internal/server/features/products/list-public.js +95 -7
- package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
- package/dist/_internal/server/features/site-settings/adapters.js +8 -5
- package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
- package/dist/_internal/server/features/tester/visibility.js +2 -2
- package/dist/_internal/server/functions/scheduled.d.ts +3 -1
- package/dist/_internal/server/functions/scheduled.js +27 -1
- package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
- package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +69 -22
- package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
- package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
- package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
- package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
- package/dist/_internal/shared/features/layout/types.d.ts +37 -1
- package/dist/_internal/shared/features/layout/types.js +19 -1
- package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
- package/dist/_internal/shared/features/notifications/action-url.js +47 -0
- package/dist/_internal/shared/features/offers/config.d.ts +65 -0
- package/dist/_internal/shared/features/offers/config.js +73 -2
- package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
- package/dist/_internal/shared/features/orders/schema.js +22 -2
- package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
- package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
- package/dist/_internal/shared/listing-types/capabilities.js +6 -1
- package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
- package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
- package/dist/client.d.ts +37 -20
- package/dist/client.js +36 -14
- package/dist/configs/next.js +10 -2
- package/dist/constants/api-endpoints.d.ts +18 -54
- package/dist/constants/api-endpoints.js +6 -26
- package/dist/constants/field-names.d.ts +6 -24
- package/dist/constants/field-names.js +10 -27
- package/dist/constants/geo/countries.d.ts +50 -0
- package/dist/constants/geo/countries.js +129 -0
- package/dist/constants/geo/subdivisions.d.ts +13 -0
- package/dist/constants/geo/subdivisions.js +104 -0
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -2
- package/dist/constants/table-keys.d.ts +24 -0
- package/dist/constants/table-keys.js +28 -0
- package/dist/contracts/extend.d.ts +0 -9
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/realtime-session.js +7 -0
- package/dist/core/browser.d.ts +1 -1
- package/dist/core/browser.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/site-config.d.ts +0 -3
- package/dist/core/site-config.js +0 -3
- package/dist/errors/messages.d.ts +0 -8
- package/dist/errors/messages.js +0 -9
- package/dist/features/about/schemas/index.d.ts +8 -8
- package/dist/features/account/components/AddressFilters.js +32 -11
- package/dist/features/account/components/AddressForm.d.ts +26 -25
- package/dist/features/account/components/AddressForm.js +81 -103
- package/dist/features/account/components/AddressesIndexListing.js +8 -4
- package/dist/features/account/components/UserSidebar.d.ts +3 -4
- package/dist/features/account/components/UserSupportView.js +89 -58
- package/dist/features/account/components/index.d.ts +1 -7
- package/dist/features/account/components/index.js +0 -3
- package/dist/features/account/hooks/useAddresses.d.ts +4 -3
- package/dist/features/account/hooks/useAddresses.js +4 -6
- package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
- package/dist/features/account/hooks/useCollapsedSections.js +211 -38
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +0 -3
- package/dist/features/account/index.js +0 -3
- package/dist/features/account/schemas/index.d.ts +0 -92
- package/dist/features/account/schemas/index.js +42 -20
- package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
- package/dist/features/addresses/components/AddressLocationFields.js +41 -0
- package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
- package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
- package/dist/features/addresses/schemas/address-form.d.ts +423 -0
- package/dist/features/addresses/schemas/address-form.js +212 -0
- package/dist/features/addresses/schemas/index.d.ts +1 -0
- package/dist/features/addresses/schemas/index.js +8 -0
- package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
- package/dist/features/admin/actions/index.d.ts +0 -1
- package/dist/features/admin/actions/index.js +0 -1
- package/dist/features/admin/actions/notification-actions.js +1 -41
- package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
- package/dist/features/admin/components/AdminActionIndexView.js +128 -0
- package/dist/features/admin/components/AdminAdEditorView.js +159 -163
- package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
- package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
- package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
- package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
- package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
- package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
- package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
- package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
- package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
- package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
- package/dist/features/admin/components/AdminNavEditorView.js +69 -44
- package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
- package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
- package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
- package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
- package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
- package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
- package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
- package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
- package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
- package/dist/features/admin/components/index.d.ts +2 -2
- package/dist/features/admin/components/index.js +1 -1
- package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
- package/dist/features/admin/constants/site-settings-tabs.js +152 -0
- package/dist/features/admin/index.d.ts +0 -3
- package/dist/features/admin/index.js +0 -2
- package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
- package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
- package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
- package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
- package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
- package/dist/features/admin/schemas/admin-user-form.js +7 -0
- package/dist/features/admin/schemas/firestore.d.ts +48 -95
- package/dist/features/admin/schemas/firestore.js +15 -151
- package/dist/features/admin/schemas/nav-item-form.js +9 -2
- package/dist/features/admin/server.d.ts +0 -4
- package/dist/features/admin/server.js +0 -2
- package/dist/features/admin/types/index.d.ts +0 -7
- package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
- package/dist/features/analytics/repository/page-views.repository.js +24 -0
- package/dist/features/auth/actions/index.d.ts +0 -1
- package/dist/features/auth/actions/index.js +0 -1
- package/dist/features/auth/actions/realtime-token-actions.js +1 -12
- package/dist/features/auth/auth-helpers.js +5 -7
- package/dist/features/auth/components/Guards.js +2 -1
- package/dist/features/auth/components/LoginForm.d.ts +0 -2
- package/dist/features/auth/components/LoginForm.js +1 -3
- package/dist/features/auth/components/RegisterForm.js +62 -19
- package/dist/features/auth/permissions/constants.d.ts +27 -1
- package/dist/features/auth/role-predicates.d.ts +75 -7
- package/dist/features/auth/role-predicates.js +28 -2
- package/dist/features/auth/schemas/firestore.d.ts +22 -0
- package/dist/features/auth/schemas/index.d.ts +1 -1
- package/dist/features/auth/schemas/index.js +44 -8
- package/dist/features/auth/types/index.d.ts +14 -1
- package/dist/features/blog/api/route.js +10 -2
- package/dist/features/blog/components/BlogIndexListing.js +1 -1
- package/dist/features/blog/hooks/useBlog.js +2 -2
- package/dist/features/blog/schemas/index.d.ts +4 -0
- package/dist/features/blog/schemas/index.js +2 -0
- package/dist/features/blog/types/index.d.ts +1 -1
- package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
- package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
- package/dist/features/catalogue/schemas/validation.d.ts +4 -4
- package/dist/features/catalogue/schemas/validation.js +47 -10
- package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
- package/dist/features/categories/schemas/bundle-form.js +149 -0
- package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
- package/dist/features/classified/components/ClassifiedDetailPageView.js +37 -16
- package/dist/features/consultation/components/ConsultationForm.js +1 -1
- package/dist/features/consultation/schemas/index.js +34 -10
- package/dist/features/corporate/schemas/index.js +36 -15
- package/dist/features/filters/FilterPanel.js +3 -3
- package/dist/features/filters/RangeFilter.d.ts +10 -0
- package/dist/features/filters/RangeFilter.js +41 -4
- package/dist/features/homepage/components/MarketplaceHomepageView.js +24 -5
- package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
- package/dist/features/layout/BottomActions.js +84 -11
- package/dist/features/layout/BottomActionsContext.d.ts +1 -6
- package/dist/features/layout/BottomActionsContext.js +1 -1
- package/dist/features/layout/hooks/useBottomActions.js +2 -2
- package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
- package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
- package/dist/features/lottery/schemas/config-write.d.ts +9 -5
- package/dist/features/lottery/schemas/config-write.js +69 -9
- package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
- package/dist/features/orders/schemas/buyer-forms.js +31 -3
- package/dist/features/orders/schemas/index.d.ts +2 -2
- package/dist/features/products/components/GroupSettingsPanel.js +3 -1
- package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
- package/dist/features/products/components/MakeOfferButton.js +33 -11
- package/dist/features/products/components/ProductDetailActions.js +0 -1
- package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
- package/dist/features/products/components/ProductDetailPageView.js +8 -5
- package/dist/features/products/constants/action-defs.d.ts +1 -2
- package/dist/features/products/constants/action-defs.js +40 -43
- package/dist/features/products/repository/products.repository.d.ts +5 -1
- package/dist/features/products/repository/products.repository.js +23 -1
- package/dist/features/products/schemas/firestore.d.ts +7 -3
- package/dist/features/products/schemas/product-features.validators.js +3 -0
- package/dist/features/promotions/components/CouponCard.js +8 -7
- package/dist/features/scams/schemas/firestore.d.ts +15 -1
- package/dist/features/scams/schemas/report-form.d.ts +5 -5
- package/dist/features/scams/schemas/report-form.js +18 -3
- package/dist/features/search/action-index/derive.d.ts +49 -0
- package/dist/features/search/action-index/derive.js +121 -0
- package/dist/features/search/action-index/repository.d.ts +42 -0
- package/dist/features/search/action-index/repository.js +100 -0
- package/dist/features/search/action-index/settings-entries.d.ts +41 -0
- package/dist/features/search/action-index/settings-entries.js +268 -0
- package/dist/features/search/action-index/types.d.ts +81 -0
- package/dist/features/search/action-index/types.js +102 -0
- package/dist/features/search/action-index/validate-entry.d.ts +34 -0
- package/dist/features/search/action-index/validate-entry.js +114 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
- package/dist/features/search/hooks/useNavSuggestions.js +23 -3
- package/dist/features/search/repository/search.repository.js +3 -1
- package/dist/features/seller/actions/offer-actions.js +43 -24
- package/dist/features/seller/actions/seller-actions.js +29 -5
- package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
- package/dist/features/seller/components/CategoryChipPicker.js +12 -0
- package/dist/features/seller/components/SellerAddressesView.js +5 -1
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
- package/dist/features/seller/components/SellerArtView.d.ts +14 -7
- package/dist/features/seller/components/SellerArtView.js +4 -119
- package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
- package/dist/features/seller/components/SellerClassifiedView.js +4 -124
- package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
- package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
- package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
- package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
- package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
- package/dist/features/seller/components/SellerListingTypeView.js +277 -0
- package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
- package/dist/features/seller/components/SellerLiveView.js +4 -126
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
- package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
- package/dist/features/seller/components/SellerStickersView.js +4 -119
- package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
- package/dist/features/seller/components/SellerSupportView.js +100 -0
- package/dist/features/seller/components/index.d.ts +4 -8
- package/dist/features/seller/components/index.js +2 -4
- package/dist/features/seller/index.d.ts +0 -1
- package/dist/features/seller/index.js +0 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
- package/dist/features/seller/schemas/coupon-form.js +155 -23
- package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
- package/dist/features/seller/schemas/offer-forms.js +28 -12
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +2 -2
- package/dist/features/shell/SectionForm.d.ts +19 -1
- package/dist/features/shell/SectionForm.js +104 -17
- package/dist/features/shell/build-sections.d.ts +23 -0
- package/dist/features/shell/build-sections.js +106 -8
- package/dist/features/shell/field-ui-meta.d.ts +44 -0
- package/dist/features/shell/field-ui-meta.js +14 -7
- package/dist/features/shell/form-sections.d.ts +46 -0
- package/dist/features/shell/form-sections.js +114 -0
- package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
- package/dist/features/shipments/schemas/validation.d.ts +2 -2
- package/dist/features/shipments/schemas/validation.js +44 -13
- package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
- package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
- package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
- package/dist/features/stores/actions/store-query-actions.js +3 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
- package/dist/features/support/repository/support.repository.d.ts +21 -0
- package/dist/features/support/repository/support.repository.js +63 -0
- package/dist/features/support/schemas/firestore.d.ts +27 -2
- package/dist/features/support/schemas/firestore.js +2 -0
- package/dist/features/support/schemas/ticket-create-form.js +7 -0
- package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
- package/dist/features/tester/schemas/checklist-item-form.js +109 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
- package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +275 -29
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +48 -12
- package/dist/http/api-handler.js +2 -1
- package/dist/index.d.ts +24 -103
- package/dist/index.js +33 -141
- package/dist/jobs.d.ts +1 -1
- package/dist/jobs.js +1 -1
- package/dist/monitoring/browser.d.ts +0 -2
- package/dist/monitoring/browser.js +12 -1
- package/dist/monitoring/index.d.ts +0 -2
- package/dist/monitoring/index.js +0 -1
- package/dist/next/api/routeHandler.js +6 -3
- package/dist/next/index.d.ts +1 -2
- package/dist/next/index.js +0 -1
- package/dist/next/middleware/index.d.ts +0 -2
- package/dist/next/middleware/index.js +0 -1
- package/dist/next/routing/route-map.d.ts +8 -7
- package/dist/next/routing/route-map.js +10 -3
- package/dist/providers/db-firebase/admin.js +15 -1
- package/dist/providers/db-firebase/sieve.d.ts +22 -0
- package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
- package/dist/react/hooks/useListingTypeFlags.js +1 -1
- package/dist/react/hooks/usePendingFilters.js +5 -3
- package/dist/react/hooks/usePendingTable.js +15 -3
- package/dist/repositories/index.d.ts +0 -1
- package/dist/repositories/index.js +0 -1
- package/dist/schemas/registry.d.ts +197 -232
- package/dist/schemas/registry.js +5 -6
- package/dist/schemas/webhooks/razorpay.d.ts +50 -50
- package/dist/security/authorization.d.ts +9 -0
- package/dist/security/authorization.js +16 -2
- package/dist/security/browser.d.ts +1 -3
- package/dist/security/browser.js +5 -2
- package/dist/security/index.d.ts +1 -3
- package/dist/security/index.js +19 -2
- package/dist/security/pii-encrypt.js +16 -0
- package/dist/security/pii-schemas.d.ts +0 -14
- package/dist/security/pii-schemas.js +7 -15
- package/dist/seed/_helpers/category-forest.js +2 -2
- package/dist/seed/_helpers/media.d.ts +19 -0
- package/dist/seed/_helpers/media.js +75 -0
- package/dist/seed/blog-posts-seed-data.js +17 -17
- package/dist/seed/carousel-slides-seed-data.js +7 -7
- package/dist/seed/cart-seed-data.js +13 -13
- package/dist/seed/categories-seed-data.js +10 -10
- package/dist/seed/events-seed-data.js +24 -24
- package/dist/seed/factories/product.factory.js +4 -4
- package/dist/seed/factories/store.factory.js +3 -3
- package/dist/seed/factories/user.factory.js +2 -2
- package/dist/seed/grouped-listings-seed-data.js +11 -11
- package/dist/seed/homepage-sections-seed-data.js +2 -2
- package/dist/seed/index.d.ts +0 -1
- package/dist/seed/index.js +0 -1
- package/dist/seed/manifest.d.ts +1 -1
- package/dist/seed/manifest.js +0 -5
- package/dist/seed/notifications-seed-data.js +20 -1
- package/dist/seed/orders-seed-data.js +2 -2
- package/dist/seed/products-art-seed-data.js +16 -16
- package/dist/seed/products-auctions-seed-data.js +34 -34
- package/dist/seed/products-classifieds-seed-data.js +35 -37
- package/dist/seed/products-digital-codes-seed-data.js +20 -20
- package/dist/seed/products-live-items-seed-data.js +11 -11
- package/dist/seed/products-preorders-seed-data.js +13 -13
- package/dist/seed/products-prize-draws-seed-data.js +43 -43
- package/dist/seed/products-standard-seed-data.js +54 -54
- package/dist/seed/products-stickers-seed-data.js +15 -15
- package/dist/seed/reviews-seed-data.js +4 -4
- package/dist/seed/scammers-seed-data.js +3 -3
- package/dist/seed/site-settings-seed-data.js +11 -24
- package/dist/seed/store-extensions-seed-data.js +10 -10
- package/dist/seed/stores-seed-data.js +11 -11
- package/dist/seed/support-tickets-seed-data.d.ts +14 -0
- package/dist/seed/support-tickets-seed-data.js +20 -1
- package/dist/seed/users-seed-data.js +20 -20
- package/dist/server-entry.d.ts +0 -1
- package/dist/server-entry.js +0 -1
- package/dist/server.d.ts +9 -6
- package/dist/server.js +7 -13
- package/dist/styles.css +248 -68
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +2 -2
- package/dist/tokens/themes/default-light.js +2 -2
- package/dist/tokens/tokens.css +24 -4
- package/dist/ui/components/ActionRow.d.ts +50 -0
- package/dist/ui/components/ActionRow.js +53 -0
- package/dist/ui/components/ActionRow.style.css +145 -0
- package/dist/ui/components/Drawer.d.ts +10 -0
- package/dist/ui/components/Drawer.js +2 -1
- package/dist/ui/components/FilterDrawer.js +4 -1
- package/dist/ui/components/FilterDrawer.style.css +6 -12
- package/dist/ui/components/FormActionBar.js +14 -1
- package/dist/ui/components/FormActionBar.style.css +12 -11
- package/dist/ui/components/ListingLayout.js +8 -1
- package/dist/ui/components/ListingLayout.style.css +6 -13
- package/dist/ui/components/Modal.d.ts +15 -1
- package/dist/ui/components/Modal.js +17 -3
- package/dist/ui/components/QuickCreateModal.js +2 -2
- package/dist/ui/components/QuickCreateModal.style.css +78 -84
- package/dist/ui/components/RecordDetailModal.js +2 -2
- package/dist/ui/components/SideDrawer.d.ts +8 -0
- package/dist/ui/components/SideDrawer.js +2 -1
- package/dist/ui/components/SideDrawer.style.css +6 -3
- package/dist/ui/components/SideModal.d.ts +11 -1
- package/dist/ui/components/SideModal.js +3 -2
- package/dist/ui/components/SideModal.style.css +14 -0
- package/dist/ui/components/Typography.style.css +33 -24
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/forms/FormShell.style.css +260 -311
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/schemas.d.ts +0 -19
- package/dist/validation/schemas.js +8 -19
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +3 -6
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* @tag sideEffects:none
|
|
35
35
|
*/
|
|
36
36
|
import { CATEGORY_FIELDS } from "../constants/field-names";
|
|
37
|
-
import {
|
|
37
|
+
import { seedPhoto } from "./_helpers/media";
|
|
38
38
|
import { buildCategoryTree } from "./_helpers/category-tree";
|
|
39
39
|
import { CATEGORY_FOREST } from "./_helpers/category-forest";
|
|
40
40
|
const NOW = new Date();
|
|
@@ -186,7 +186,7 @@ const brandRows = [
|
|
|
186
186
|
path: "brand-takara-tomy",
|
|
187
187
|
isLeaf: true,
|
|
188
188
|
order: 1,
|
|
189
|
-
display: { coverImage:
|
|
189
|
+
display: { coverImage: seedPhoto("brand-logo-takara-tomy-20260101", 800, 800), showInMenu: false, showInFooter: true },
|
|
190
190
|
isFeatured: true,
|
|
191
191
|
isBrand: true,
|
|
192
192
|
isActive: true,
|
|
@@ -220,7 +220,7 @@ const brandRows = [
|
|
|
220
220
|
path: "brand-beyblade",
|
|
221
221
|
isLeaf: true,
|
|
222
222
|
order: 2,
|
|
223
|
-
display: { coverImage:
|
|
223
|
+
display: { coverImage: seedPhoto("brand-logo-beyblade-20260101", 800, 800), showInMenu: false, showInFooter: true },
|
|
224
224
|
isFeatured: true,
|
|
225
225
|
isBrand: true,
|
|
226
226
|
isActive: true,
|
|
@@ -254,7 +254,7 @@ const brandRows = [
|
|
|
254
254
|
path: "brand-hasbro",
|
|
255
255
|
isLeaf: true,
|
|
256
256
|
order: 3,
|
|
257
|
-
display: { coverImage:
|
|
257
|
+
display: { coverImage: seedPhoto("brand-logo-hasbro-20260101", 800, 800), showInMenu: false, showInFooter: true },
|
|
258
258
|
isFeatured: false,
|
|
259
259
|
isBrand: true,
|
|
260
260
|
isActive: true,
|
|
@@ -289,7 +289,7 @@ const brandRows = [
|
|
|
289
289
|
path: "brand-independent-keepers",
|
|
290
290
|
isLeaf: true,
|
|
291
291
|
order: 4,
|
|
292
|
-
display: { coverImage:
|
|
292
|
+
display: { coverImage: seedPhoto("brand-logo-independent-keepers-20260101", 800, 800), showInMenu: false, showInFooter: false },
|
|
293
293
|
isFeatured: false,
|
|
294
294
|
isBrand: true,
|
|
295
295
|
isActive: true,
|
|
@@ -322,7 +322,7 @@ const bundleRows = [
|
|
|
322
322
|
bundleCategorySlugs: ["category-original-hms", "category-original-tops", "category-beyblade-original", "category-spinning-tops", "category-original-plastic-gen", "category-metal-masters", "category-metal-tops", "category-beyblade-metal"],
|
|
323
323
|
bundleOriginalTotal: 4597, // 1499 + 1799 + 1299
|
|
324
324
|
bundleStockStatus: "in_stock",
|
|
325
|
-
display: { coverImage:
|
|
325
|
+
display: { coverImage: seedPhoto("bundle-original-collectors-set-20260101", 1200, 900), showInFooter: false },
|
|
326
326
|
isActive: true,
|
|
327
327
|
isSearchable: true,
|
|
328
328
|
isFeatured: true,
|
|
@@ -357,7 +357,7 @@ const bundleRows = [
|
|
|
357
357
|
bundleCategorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops", "category-metal-fury", "category-original-hms", "category-original-tops", "category-beyblade-original"],
|
|
358
358
|
bundleOriginalTotal: 3997, // 1299 + 1199 + 1499
|
|
359
359
|
bundleStockStatus: "in_stock",
|
|
360
|
-
display: { coverImage:
|
|
360
|
+
display: { coverImage: seedPhoto("bundle-metal-fusion-duo-20260101", 1200, 900), showInFooter: false },
|
|
361
361
|
isActive: true,
|
|
362
362
|
isSearchable: true,
|
|
363
363
|
isFeatured: false,
|
|
@@ -394,7 +394,7 @@ const bundleRows = [
|
|
|
394
394
|
bundleCategorySlugs: ["category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops", "category-burst-classic", "category-metal-fury", "category-metal-tops", "category-beyblade-metal"],
|
|
395
395
|
bundleOriginalTotal: 3597, // 999 + 1399 + 1199
|
|
396
396
|
bundleStockStatus: "in_stock",
|
|
397
|
-
display: { coverImage:
|
|
397
|
+
display: { coverImage: seedPhoto("bundle-burst-battlers-pack-20260101", 1200, 900), showInFooter: false },
|
|
398
398
|
isActive: true,
|
|
399
399
|
isSearchable: true,
|
|
400
400
|
isFeatured: true,
|
|
@@ -429,7 +429,7 @@ const bundleRows = [
|
|
|
429
429
|
bundleCategorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops", "category-x-boosters", "category-burst-superking", "category-burst-tops", "category-beyblade-burst"],
|
|
430
430
|
bundleOriginalTotal: 2847, // 899 + 949 + 999
|
|
431
431
|
bundleStockStatus: "in_stock",
|
|
432
|
-
display: { coverImage:
|
|
432
|
+
display: { coverImage: seedPhoto("bundle-x-series-starter-20260101", 1200, 900), showInFooter: false },
|
|
433
433
|
isActive: true,
|
|
434
434
|
isSearchable: true,
|
|
435
435
|
isFeatured: false,
|
|
@@ -477,7 +477,7 @@ const bundleRows = [
|
|
|
477
477
|
bundleCategorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops", "category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-x-starters", "category-x-tops", "category-beyblade-x"],
|
|
478
478
|
bundleOriginalTotal: 4996, // 1799 + 1299 + 999 + 899
|
|
479
479
|
bundleStockStatus: "in_stock",
|
|
480
|
-
display: { coverImage:
|
|
480
|
+
display: { coverImage: seedPhoto("bundle-every-generation-starter-pack-20260101", 1200, 900), showInFooter: false },
|
|
481
481
|
isActive: true,
|
|
482
482
|
isSearchable: true,
|
|
483
483
|
isFeatured: true,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { withEventSearchTxt } from "./_helpers/search-txt-wrappers";
|
|
17
17
|
import { EVENT_FIELDS, EVENT_ENTRY_FIELDS } from "../features/events/schemas";
|
|
18
|
-
import { seedExtMedia } from "./_helpers/media";
|
|
18
|
+
import { seedExtMedia, seedPhoto } from "./_helpers/media";
|
|
19
19
|
const NOW = new Date();
|
|
20
20
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
21
21
|
const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
|
|
@@ -26,11 +26,11 @@ const _raweventsSeedData = [
|
|
|
26
26
|
slug: "favourite-blader-poll",
|
|
27
27
|
type: EVENT_FIELDS.TYPE_VALUES.POLL,
|
|
28
28
|
title: "Vote: Best Blader of the Original Beyblade Series",
|
|
29
|
-
description: `<p>Who is the greatest blader of the original 1999 series? Cast your vote and see real-time results!</p><img src="${
|
|
29
|
+
description: `<p>Who is the greatest blader of the original 1999 series? Cast your vote and see real-time results!</p><img src="${seedPhoto("event-content-favourite-blader-lineup-20260101", 900, 500)}" alt="Original series blader lineup" />`,
|
|
30
30
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
31
31
|
startsAt: daysAgo(5),
|
|
32
32
|
endsAt: daysAhead(10),
|
|
33
|
-
coverImage: { type: "image", url:
|
|
33
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-favourite-blader-poll-20260101", 1200, 600), alt: "Original series Beyblade lineup" },
|
|
34
34
|
tags: ["poll", "original-series", "season-1"],
|
|
35
35
|
// Demo fixture for the guest-participation toggle (2026-08-20) — polls
|
|
36
36
|
// are otherwise login-gated, so this event demonstrates the override.
|
|
@@ -62,7 +62,7 @@ const _raweventsSeedData = [
|
|
|
62
62
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
63
63
|
startsAt: daysAgo(3),
|
|
64
64
|
endsAt: daysAhead(14),
|
|
65
|
-
coverImage: { type: "image", url:
|
|
65
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-storage-survey-20260101", 1200, 600), alt: "Beyblade storage case" },
|
|
66
66
|
tags: ["survey", "beyblade-storage", "community"],
|
|
67
67
|
surveyConfig: {
|
|
68
68
|
requireLogin: true,
|
|
@@ -91,7 +91,7 @@ const _raweventsSeedData = [
|
|
|
91
91
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
92
92
|
startsAt: daysAgo(2),
|
|
93
93
|
endsAt: daysAhead(7),
|
|
94
|
-
coverImage: { type: "image", url:
|
|
94
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-original-clearance-20260101", 1200, 600), alt: "Original series Beyblade clearance sale" },
|
|
95
95
|
tags: ["sale", "clearance", "original-series", "singles"],
|
|
96
96
|
saleConfig: {
|
|
97
97
|
discountPercent: 20,
|
|
@@ -109,11 +109,11 @@ const _raweventsSeedData = [
|
|
|
109
109
|
slug: "win-burst-regalia-genesis",
|
|
110
110
|
type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
|
|
111
111
|
title: "Win a Sealed Beyblade Burst Regalia Genesis",
|
|
112
|
-
description: `<p>Enter for a chance to win a sealed Beyblade Burst Regalia Genesis! One lucky blader takes home the ultimate spinner.</p><img src="${
|
|
112
|
+
description: `<p>Enter for a chance to win a sealed Beyblade Burst Regalia Genesis! One lucky blader takes home the ultimate spinner.</p><img src="${seedPhoto("event-content-regalia-genesis-prize-20260101", 900, 500)}" alt="Sealed Beyblade Burst Regalia Genesis prize box" />`,
|
|
113
113
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
114
114
|
startsAt: daysAgo(3),
|
|
115
115
|
endsAt: daysAhead(14),
|
|
116
|
-
coverImage: { type: "image", url:
|
|
116
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-regalia-genesis-raffle-20260101", 1200, 600), alt: "Beyblade Burst Regalia Genesis" },
|
|
117
117
|
tags: ["raffle", "burst", "regalia-genesis", "giveaway", "prizes"],
|
|
118
118
|
hasRaffle: true,
|
|
119
119
|
raffleType: "open_raffle",
|
|
@@ -134,7 +134,7 @@ const _raweventsSeedData = [
|
|
|
134
134
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
135
135
|
startsAt: daysAgo(7),
|
|
136
136
|
endsAt: daysAhead(23),
|
|
137
|
-
coverImage: { type: "image", url:
|
|
137
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-daily-pull-wheel-20260101", 1200, 600), alt: "Spin wheel prize wheel" },
|
|
138
138
|
tags: ["spin-wheel", "daily", "prizes", "coupons"],
|
|
139
139
|
spinPrizes: [
|
|
140
140
|
{ id: "spin-10pct", label: "10% Off Coupon", couponId: "coupon-rehan10", weight: 15, isActive: true },
|
|
@@ -164,7 +164,7 @@ const _raweventsSeedData = [
|
|
|
164
164
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
165
165
|
startsAt: daysAgo(10),
|
|
166
166
|
endsAt: daysAhead(20),
|
|
167
|
-
coverImage: { type: "image", url:
|
|
167
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-metal-fight-feedback-20260101", 1200, 600), alt: "Metal Fight era Beyblade lineup" },
|
|
168
168
|
tags: ["feedback", "metal-fight", "community"],
|
|
169
169
|
feedbackConfig: {
|
|
170
170
|
formFields: [
|
|
@@ -188,7 +188,7 @@ const _raweventsSeedData = [
|
|
|
188
188
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
189
189
|
startsAt: daysAgo(1),
|
|
190
190
|
endsAt: daysAhead(20),
|
|
191
|
-
coverImage: { type: "image", url:
|
|
191
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-buy3get1-20260101", 1200, 600), alt: "Buy 3 beyblades, get 10% off offer" },
|
|
192
192
|
tags: ["offer", "buy-3-get-10-percent", "singles"],
|
|
193
193
|
offerConfig: {
|
|
194
194
|
couponId: "coupon-buynow10",
|
|
@@ -206,11 +206,11 @@ const _raweventsSeedData = [
|
|
|
206
206
|
slug: "won-original-set-raffle",
|
|
207
207
|
type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
|
|
208
208
|
title: "Win Complete Original Series Collectors Set",
|
|
209
|
-
description: `<p>The grand raffle has concluded! One lucky blader won a complete original-series collectors set.</p><img src="${
|
|
209
|
+
description: `<p>The grand raffle has concluded! One lucky blader won a complete original-series collectors set.</p><img src="${seedPhoto("event-content-original-set-winner-20260101", 900, 500)}" alt="Winner unboxing the complete original-series collectors set" />`,
|
|
210
210
|
status: EVENT_FIELDS.STATUS_VALUES.ENDED,
|
|
211
211
|
startsAt: daysAgo(30),
|
|
212
212
|
endsAt: daysAgo(5),
|
|
213
|
-
coverImage: { type: "image", url:
|
|
213
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-original-set-raffle-20260101", 1200, 600), alt: "Complete original-series collectors set" },
|
|
214
214
|
tags: ["raffle", "original-series", "ended", "winner"],
|
|
215
215
|
hasRaffle: true,
|
|
216
216
|
raffleType: "open_raffle",
|
|
@@ -248,14 +248,14 @@ const _raweventsSeedData = [
|
|
|
248
248
|
// so the detail page exercises both sides of the "only photographed
|
|
249
249
|
// slots get a collage tile" rule. `image` is a plain image URL and so
|
|
250
250
|
// is seedExtMedia()-wrapped like every other image in this file.
|
|
251
|
-
{ slotNumber: 1, name: "Charizard Base Set Holo", image:
|
|
252
|
-
{ slotNumber: 2, name: "Blastoise Base Set Holo", image:
|
|
253
|
-
{ slotNumber: 3, name: "Venusaur Base Set Holo", image:
|
|
254
|
-
{ slotNumber: 4, name: "Pikachu Surfing Promo", image:
|
|
255
|
-
{ slotNumber: 5, name: "Mewtwo Base Set Holo", image:
|
|
256
|
-
{ slotNumber: 6, name: "Gengar First Ed. Fossil", image:
|
|
257
|
-
{ slotNumber: 7, name: "Alakazam Base Set Holo", image:
|
|
258
|
-
{ slotNumber: 8, name: "Machamp 1st Ed. Base Set", image:
|
|
251
|
+
{ slotNumber: 1, name: "Charizard Base Set Holo", image: seedPhoto("lottery-pokemon-number-draw-slot-1", 600, 600), price: 5000, weight: 1, isBooked: true, bookedByUserId: "user-ravi-k", bookedByDisplayName: "Ravi K", bookedByUserLotteryNumber: 1 },
|
|
252
|
+
{ slotNumber: 2, name: "Blastoise Base Set Holo", image: seedPhoto("lottery-pokemon-number-draw-slot-2", 600, 600), price: 3000, weight: 33, isBooked: true, bookedByUserId: "user-priya-s", bookedByDisplayName: "Priya S", bookedByUserLotteryNumber: 2 },
|
|
253
|
+
{ slotNumber: 3, name: "Venusaur Base Set Holo", image: seedPhoto("lottery-pokemon-number-draw-slot-3", 600, 600), price: 2500, weight: 40, isBooked: true, bookedByUserId: "user-arjun-m", bookedByDisplayName: "Arjun M", bookedByUserLotteryNumber: 3 },
|
|
254
|
+
{ slotNumber: 4, name: "Pikachu Surfing Promo", image: seedPhoto("lottery-pokemon-number-draw-slot-4", 600, 600), price: 1500, weight: 66, isBooked: true, bookedByUserId: "user-sneha-p", bookedByDisplayName: "Sneha P", bookedByUserLotteryNumber: 4 },
|
|
255
|
+
{ slotNumber: 5, name: "Mewtwo Base Set Holo", image: seedPhoto("lottery-pokemon-number-draw-slot-5", 600, 600), price: 2000, weight: 50, isBooked: true, bookedByUserId: "user-vikram-r", bookedByDisplayName: "Vikram R", bookedByUserLotteryNumber: 5 },
|
|
256
|
+
{ slotNumber: 6, name: "Gengar First Ed. Fossil", image: seedPhoto("lottery-pokemon-number-draw-slot-6", 600, 600), price: 3500, weight: 28, isBooked: false },
|
|
257
|
+
{ slotNumber: 7, name: "Alakazam Base Set Holo", image: seedPhoto("lottery-pokemon-number-draw-slot-7", 600, 600), price: 800, weight: 93, isBooked: false },
|
|
258
|
+
{ slotNumber: 8, name: "Machamp 1st Ed. Base Set", image: seedPhoto("lottery-pokemon-number-draw-slot-8", 600, 600), price: 400, weight: 99, isBooked: false },
|
|
259
259
|
{ slotNumber: 9, name: "Clefairy Base Set Holo", price: 600, weight: 95, isBooked: false },
|
|
260
260
|
{ slotNumber: 10, name: "Chansey Base Set Holo", price: 700, weight: 94, isBooked: false },
|
|
261
261
|
{ slotNumber: 11, name: "Ninetales Base Set Holo", price: 1000, weight: 80, isBooked: false },
|
|
@@ -290,7 +290,7 @@ const _raweventsSeedData = [
|
|
|
290
290
|
status: EVENT_FIELDS.STATUS_VALUES.DRAFT,
|
|
291
291
|
startsAt: daysAhead(7),
|
|
292
292
|
endsAt: daysAhead(14),
|
|
293
|
-
coverImage: { type: "image", url:
|
|
293
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-beyblade-slot-raffle-20260101", 1200, 600), alt: "Beyblade Slot Raffle" },
|
|
294
294
|
tags: ["lottery", "beyblade", "prizes"],
|
|
295
295
|
lotteryConfig: {
|
|
296
296
|
totalSlots: 10,
|
|
@@ -305,7 +305,7 @@ const _raweventsSeedData = [
|
|
|
305
305
|
// Seed index, not Math.random() — a seed file is re-executed on every
|
|
306
306
|
// CLI invocation, so any non-deterministic value breaks upsert
|
|
307
307
|
// idempotency (Root Cause #25).
|
|
308
|
-
image:
|
|
308
|
+
image: seedPhoto(`lottery-beyblade-slot-raffle-slot-${i + 1}`, 600, 600),
|
|
309
309
|
price: 500,
|
|
310
310
|
weight: 50,
|
|
311
311
|
isBooked: false,
|
|
@@ -331,7 +331,7 @@ const _raweventsSeedData = [
|
|
|
331
331
|
status: EVENT_FIELDS.STATUS_VALUES.PAUSED,
|
|
332
332
|
startsAt: daysAgo(3),
|
|
333
333
|
endsAt: daysAhead(10),
|
|
334
|
-
coverImage: { type: "image", url:
|
|
334
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-monsoon-sale-paused-20260101", 1200, 600), alt: "Monsoon Sale" },
|
|
335
335
|
tags: ["sale", "monsoon", "paused"],
|
|
336
336
|
stats: { totalEntries: 0, approvedEntries: 0, flaggedEntries: 0 },
|
|
337
337
|
createdBy: "user-admin-letitrip",
|
|
@@ -348,7 +348,7 @@ const _raweventsSeedData = [
|
|
|
348
348
|
status: EVENT_FIELDS.STATUS_VALUES.CANCELLED,
|
|
349
349
|
startsAt: daysAgo(20),
|
|
350
350
|
endsAt: daysAgo(6),
|
|
351
|
-
coverImage: { type: "image", url:
|
|
351
|
+
coverImage: { type: "image", url: seedPhoto("event-cover-x-launch-raffle-cancelled-20260101", 1200, 600), alt: "Beyblade X Launch Raffle" },
|
|
352
352
|
tags: ["raffle", "beyblade-x", "cancelled"],
|
|
353
353
|
hasRaffle: true,
|
|
354
354
|
raffleType: "open_raffle",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// appkit/src/seed/factories/product.factory.ts
|
|
2
|
-
import {
|
|
2
|
+
import { seedPhoto } from "../_helpers/media";
|
|
3
3
|
import { getSeedLocale, getDefaultCurrency, pick, irand, } from "../seed-market-config";
|
|
4
4
|
let _seq = 1;
|
|
5
5
|
// --- Realistic data pools (from seed locale config) ---------------------------
|
|
@@ -45,10 +45,10 @@ export function makeProduct(overrides = {}) {
|
|
|
45
45
|
/** Full product with all optional fields populated — for rendering tests */
|
|
46
46
|
export function makeFullProduct(overrides = {}) {
|
|
47
47
|
return makeProduct({
|
|
48
|
-
mainImage:
|
|
48
|
+
mainImage: seedPhoto("product-image-factory-1", 900, 900),
|
|
49
49
|
images: [
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
seedPhoto("product-image-factory-1", 900, 900),
|
|
51
|
+
seedPhoto("product-image-factory-2", 900, 900),
|
|
52
52
|
],
|
|
53
53
|
seoTitle: "Buy Amazing Product Online",
|
|
54
54
|
tags: ["featured", "new-arrival"],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { seedPhoto } from "../_helpers/media";
|
|
2
2
|
// appkit/src/seed/factories/store.factory.ts
|
|
3
3
|
let _seq = 1;
|
|
4
4
|
export function makeStore(overrides = {}) {
|
|
@@ -22,8 +22,8 @@ export function makeStore(overrides = {}) {
|
|
|
22
22
|
/** Full store with all optional fields populated — for rendering + PII tests */
|
|
23
23
|
export function makeFullStore(overrides = {}) {
|
|
24
24
|
return makeStore({
|
|
25
|
-
logo:
|
|
26
|
-
coverImage:
|
|
25
|
+
logo: seedPhoto("store-logo-factory", 400, 400),
|
|
26
|
+
coverImage: seedPhoto("store-banner-factory", 1200, 400),
|
|
27
27
|
ownerEmail: "seller@example.com",
|
|
28
28
|
commissionRate: 10,
|
|
29
29
|
...overrides,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// appkit/src/seed/factories/user.factory.ts
|
|
2
2
|
import { getSeedLocale, pick } from "../seed-market-config";
|
|
3
|
-
import {
|
|
3
|
+
import { seedPhoto } from "../_helpers/media";
|
|
4
4
|
let _seq = 1;
|
|
5
5
|
export function makeUser(overrides = {}) {
|
|
6
6
|
const n = _seq++;
|
|
@@ -25,7 +25,7 @@ export function makeUser(overrides = {}) {
|
|
|
25
25
|
/** Full user with all optional fields populated — for rendering tests */
|
|
26
26
|
export function makeFullUser(overrides = {}) {
|
|
27
27
|
return makeUser({
|
|
28
|
-
photoURL:
|
|
28
|
+
photoURL: seedPhoto("user-avatar-factory", 400, 400),
|
|
29
29
|
emailVerified: true,
|
|
30
30
|
...overrides,
|
|
31
31
|
});
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
23
23
|
* @tag sideEffects:none
|
|
24
24
|
*/
|
|
25
|
-
import {
|
|
25
|
+
import { seedPhoto } from "./_helpers/media";
|
|
26
26
|
const NOW = new Date();
|
|
27
27
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
28
28
|
export const groupedListingsSeedData = [
|
|
@@ -35,7 +35,7 @@ export const groupedListingsSeedData = [
|
|
|
35
35
|
"product-beyblade-original-dranzer-s",
|
|
36
36
|
"product-beyblade-original-driger-v",
|
|
37
37
|
],
|
|
38
|
-
coverImage:
|
|
38
|
+
coverImage: seedPhoto("group-beyblade-original-lineage-20260101", 1200, 900),
|
|
39
39
|
groupTheme: "lineage",
|
|
40
40
|
minActiveMembers: 2,
|
|
41
41
|
activeMemberCount: 2,
|
|
@@ -58,7 +58,7 @@ export const groupedListingsSeedData = [
|
|
|
58
58
|
"product-beyblade-metal-storm-pegasus",
|
|
59
59
|
"product-beyblade-metal-flame-sagittario",
|
|
60
60
|
],
|
|
61
|
-
coverImage:
|
|
61
|
+
coverImage: seedPhoto("group-beyblade-metal-fusion-set-20260101", 1200, 900),
|
|
62
62
|
groupTheme: "set",
|
|
63
63
|
minActiveMembers: 2,
|
|
64
64
|
activeMemberCount: 2,
|
|
@@ -83,7 +83,7 @@ export const groupedListingsSeedData = [
|
|
|
83
83
|
"product-beyblade-x-wizard-arrow",
|
|
84
84
|
"product-beyblade-x-knife-shinobi",
|
|
85
85
|
],
|
|
86
|
-
coverImage:
|
|
86
|
+
coverImage: seedPhoto("group-beyblade-burst-x-related-20260101", 1200, 900),
|
|
87
87
|
groupTheme: "related",
|
|
88
88
|
minActiveMembers: 2,
|
|
89
89
|
activeMemberCount: 4,
|
|
@@ -109,7 +109,7 @@ export const groupedListingsSeedData = [
|
|
|
109
109
|
"auction-beyblade-original-dragoon-storm",
|
|
110
110
|
"auction-beyblade-metal-diablo-nemesis",
|
|
111
111
|
],
|
|
112
|
-
coverImage:
|
|
112
|
+
coverImage: seedPhoto("group-beyblade-auction-highlights-20260819", 1200, 900),
|
|
113
113
|
groupTheme: "related",
|
|
114
114
|
minActiveMembers: 2,
|
|
115
115
|
activeMemberCount: 2,
|
|
@@ -132,7 +132,7 @@ export const groupedListingsSeedData = [
|
|
|
132
132
|
"preorder-beyblade-x-bx-08-wave",
|
|
133
133
|
"preorder-beyblade-x-bx-09-glide-ring",
|
|
134
134
|
],
|
|
135
|
-
coverImage:
|
|
135
|
+
coverImage: seedPhoto("group-beyblade-x-preorder-wave-20260819", 1200, 900),
|
|
136
136
|
groupTheme: "set",
|
|
137
137
|
minActiveMembers: 2,
|
|
138
138
|
activeMemberCount: 2,
|
|
@@ -156,7 +156,7 @@ export const groupedListingsSeedData = [
|
|
|
156
156
|
"prizedraw-beyblade-x-legendary-vault",
|
|
157
157
|
"prizedraw-beyblade-original-vintage-vault",
|
|
158
158
|
],
|
|
159
|
-
coverImage:
|
|
159
|
+
coverImage: seedPhoto("group-beyblade-mystery-draws-20260819", 1200, 900),
|
|
160
160
|
groupTheme: "related",
|
|
161
161
|
minActiveMembers: 2,
|
|
162
162
|
activeMemberCount: 3,
|
|
@@ -180,7 +180,7 @@ export const groupedListingsSeedData = [
|
|
|
180
180
|
"classified-beyblade-burst-collection-bengaluru",
|
|
181
181
|
"classified-beyblade-x-starter-pune",
|
|
182
182
|
],
|
|
183
|
-
coverImage:
|
|
183
|
+
coverImage: seedPhoto("group-beyblade-local-meetup-picks-20260819", 1200, 900),
|
|
184
184
|
groupTheme: "related",
|
|
185
185
|
minActiveMembers: 2,
|
|
186
186
|
activeMemberCount: 3,
|
|
@@ -204,7 +204,7 @@ export const groupedListingsSeedData = [
|
|
|
204
204
|
"digitalcode-beyblade-metal-app-classic-pack",
|
|
205
205
|
"digitalcode-beyblade-burst-app-avatar-skins",
|
|
206
206
|
],
|
|
207
|
-
coverImage:
|
|
207
|
+
coverImage: seedPhoto("group-beyblade-app-unlock-codes-20260819", 1200, 900),
|
|
208
208
|
groupTheme: "related",
|
|
209
209
|
minActiveMembers: 2,
|
|
210
210
|
activeMemberCount: 3,
|
|
@@ -229,7 +229,7 @@ export const groupedListingsSeedData = [
|
|
|
229
229
|
"stickers-beyblade-original-classic-sheet",
|
|
230
230
|
"stickers-beyblade-x-holographic-pack",
|
|
231
231
|
],
|
|
232
|
-
coverImage:
|
|
232
|
+
coverImage: seedPhoto("group-beyblade-fan-art-and-stickers-20260819", 1200, 900),
|
|
233
233
|
groupTheme: "related",
|
|
234
234
|
minActiveMembers: 2,
|
|
235
235
|
activeMemberCount: 4,
|
|
@@ -252,7 +252,7 @@ export const groupedListingsSeedData = [
|
|
|
252
252
|
"live-golden-retriever-puppy",
|
|
253
253
|
"live-bonsai-juniper-10yr",
|
|
254
254
|
],
|
|
255
|
-
coverImage:
|
|
255
|
+
coverImage: seedPhoto("group-beyblade-arena-extras-20260819", 1200, 900),
|
|
256
256
|
groupTheme: "generic",
|
|
257
257
|
minActiveMembers: 2,
|
|
258
258
|
activeMemberCount: 2,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
15
|
+
import { seedPhoto } from "./_helpers/media";
|
|
16
16
|
import { ROUTES } from "../next/routing/route-map";
|
|
17
17
|
const NOW = new Date();
|
|
18
18
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
@@ -171,7 +171,7 @@ export const homepageSectionsSeedData = [
|
|
|
171
171
|
enabled: true,
|
|
172
172
|
config: {
|
|
173
173
|
height: "md",
|
|
174
|
-
backgroundImage:
|
|
174
|
+
backgroundImage: seedPhoto("section-banner-beyblade-collection-20260101", 1600, 500),
|
|
175
175
|
content: {
|
|
176
176
|
title: "Complete Your Beyblade Collection",
|
|
177
177
|
subtitle: "All 4 generations available — Original to Beyblade X",
|
package/dist/seed/index.d.ts
CHANGED
|
@@ -75,7 +75,6 @@ export { carouselSlidesSeedData } from "./carousel-slides-seed-data";
|
|
|
75
75
|
export { carouselsSeedData } from "./carousels-seed-data";
|
|
76
76
|
export { wishlistsSeedData } from "./wishlists-seed-data";
|
|
77
77
|
export { historySeedData } from "./history-seed-data";
|
|
78
|
-
export { conversationsSeedData } from "./conversations-seed-data";
|
|
79
78
|
export { groupedListingsSeedData } from "./grouped-listings-seed-data";
|
|
80
79
|
export { scammersSeedData } from "./scammers-seed-data";
|
|
81
80
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
package/dist/seed/index.js
CHANGED
|
@@ -64,7 +64,6 @@ export { carouselSlidesSeedData } from "./carousel-slides-seed-data";
|
|
|
64
64
|
export { carouselsSeedData } from "./carousels-seed-data";
|
|
65
65
|
export { wishlistsSeedData } from "./wishlists-seed-data";
|
|
66
66
|
export { historySeedData } from "./history-seed-data";
|
|
67
|
-
export { conversationsSeedData } from "./conversations-seed-data";
|
|
68
67
|
export { groupedListingsSeedData } from "./grouped-listings-seed-data";
|
|
69
68
|
export { scammersSeedData } from "./scammers-seed-data";
|
|
70
69
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
package/dist/seed/manifest.d.ts
CHANGED
|
@@ -11,6 +11,6 @@ export interface SeedManifestEntry {
|
|
|
11
11
|
type?: string;
|
|
12
12
|
}
|
|
13
13
|
/** Every collection name the CLI seeder (appkit/scripts/seed-cli.mjs) and this manifest cover. */
|
|
14
|
-
export type SeedCollectionName = "users" | "addresses" | "categories" | "stores" | "products" | "orders" | "reviews" | "bids" | "coupons" | "carousels" | "carouselSlides" | "homepageSections" | "siteSettings" | "faqs" | "notifications" | "payouts" | "blogPosts" | "events" | "eventEntries" | "sessions" | "carts" | "wishlists" | "history" | "
|
|
14
|
+
export type SeedCollectionName = "users" | "addresses" | "categories" | "stores" | "products" | "orders" | "reviews" | "bids" | "coupons" | "carousels" | "carouselSlides" | "homepageSections" | "siteSettings" | "faqs" | "notifications" | "payouts" | "blogPosts" | "events" | "eventEntries" | "sessions" | "carts" | "wishlists" | "history" | "groupedListings" | "scammerProfiles" | "supportTickets" | "productFeatures" | "offers" | "couponUsage" | "claimedCoupons" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "storeWhatsAppConfig" | "storeGoogleConfig" | "roleOverrides" | "customRoles" | "adminNotifications" | "lotteryEntries" | "shipments" | "shipmentLots" | "shipmentItems" | "catalogueItems" | "testerChecklistItems";
|
|
15
15
|
export type SeedManifest = Record<SeedCollectionName, SeedManifestEntry[]>;
|
|
16
16
|
export declare const SEED_MANIFEST: SeedManifest;
|
package/dist/seed/manifest.js
CHANGED
|
@@ -40,7 +40,6 @@ import { storeAddressesSeedData } from "./store-addresses-seed-data";
|
|
|
40
40
|
import { cartsSeedData } from "./cart-seed-data";
|
|
41
41
|
import { wishlistsSeedData } from "./wishlists-seed-data";
|
|
42
42
|
import { historySeedData } from "./history-seed-data";
|
|
43
|
-
import { conversationsSeedData } from "./conversations-seed-data";
|
|
44
43
|
// SB-UNI-B — sublistingCategoriesSeedData absorbed into categoriesSeedData.
|
|
45
44
|
import { groupedListingsSeedData } from "./grouped-listings-seed-data";
|
|
46
45
|
// SB-UNI-V — bundlesSeedData absorbed into categoriesSeedData.
|
|
@@ -179,10 +178,6 @@ export const SEED_MANIFEST = {
|
|
|
179
178
|
...h,
|
|
180
179
|
name: h.userId ?? h.id,
|
|
181
180
|
}))),
|
|
182
|
-
conversations: pick(asArr(conversationsSeedData).map((c) => ({
|
|
183
|
-
...c,
|
|
184
|
-
name: c.productTitle ?? c.id,
|
|
185
|
-
}))),
|
|
186
181
|
groupedListings: pick(asArr(groupedListingsSeedData).map((g) => ({
|
|
187
182
|
...g,
|
|
188
183
|
name: g.title ?? g.id,
|
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { NOTIFICATION_FIELDS } from "../features/admin/schemas";
|
|
16
16
|
import { ROUTES } from "../next/routing/route-map";
|
|
17
|
+
import { resolveNotificationActionUrl, TYPE_AUDIENCE, } from "../_internal/shared/features/notifications/action-url";
|
|
17
18
|
const NOW = new Date();
|
|
18
19
|
const hoursAgo = (n) => new Date(NOW.getTime() - n * 3600000);
|
|
19
20
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
20
|
-
|
|
21
|
+
const notificationRecords = [
|
|
21
22
|
// ── Rehan's notifications (10) — buyer-focused ────────────────────────────
|
|
22
23
|
{
|
|
23
24
|
id: "notif-yugi-outbid-001",
|
|
@@ -581,3 +582,21 @@ export const notificationsSeedData = [
|
|
|
581
582
|
updatedAt: hoursAgo(1),
|
|
582
583
|
},
|
|
583
584
|
];
|
|
585
|
+
/*
|
|
586
|
+
* `actionUrl` is DERIVED, not hand-written per fixture.
|
|
587
|
+
*
|
|
588
|
+
* 17 of these 39 records carried no `actionUrl` and so arrived in the bell as
|
|
589
|
+
* text with nothing to click — the exact defect the central resolver was built
|
|
590
|
+
* to end, reappearing here because the seed writes documents straight to
|
|
591
|
+
* Firestore and never passes through `sendNotification`.
|
|
592
|
+
*
|
|
593
|
+
* Deriving it also means a fixture cannot drift from the rule: the seed and the
|
|
594
|
+
* runtime now answer "where does this notification go" with the same function.
|
|
595
|
+
* A record that sets its own `actionUrl` keeps it, matching `sendNotification`,
|
|
596
|
+
* where a caller-supplied value also wins.
|
|
597
|
+
*/
|
|
598
|
+
export const notificationsSeedData = notificationRecords.map((n) => ({
|
|
599
|
+
...n,
|
|
600
|
+
actionUrl: n.actionUrl ??
|
|
601
|
+
resolveNotificationActionUrl(n.relatedType, n.relatedId, TYPE_AUDIENCE[n.type] ?? "buyer"),
|
|
602
|
+
}));
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* @tag sideEffects:none
|
|
38
38
|
*/
|
|
39
39
|
import { withOrderSearchTxt } from "./_helpers/search-txt-wrappers";
|
|
40
|
-
import {
|
|
40
|
+
import { seedPhoto } from "./_helpers/media";
|
|
41
41
|
const NOW = new Date();
|
|
42
42
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
43
43
|
// Deterministic per-product thumbnail — picsum.photos returns a stable image
|
|
@@ -47,7 +47,7 @@ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
|
47
47
|
// 2026-08-20 (see OrderDocumentItem.image), so seeded order fixtures show a
|
|
48
48
|
// thumbnail on My Orders / order-detail like real orders do.
|
|
49
49
|
function orderItemImage(productId) {
|
|
50
|
-
return
|
|
50
|
+
return seedPhoto(`order-item-${productId}`, 300, 300);
|
|
51
51
|
}
|
|
52
52
|
// Deterministic 6-char base36 suffix derived from a seed string — replaces the
|
|
53
53
|
// previous Math.random() suffix, which regenerated a fresh id on every module
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { PRODUCT_FIELDS } from "../constants/field-names";
|
|
21
21
|
import { buildSearchTxt } from "../utils/search-txt";
|
|
22
|
-
import {
|
|
22
|
+
import { seedPhoto } from "./_helpers/media";
|
|
23
23
|
export const productsArtSeedData = [
|
|
24
24
|
{
|
|
25
25
|
id: "art-dranzer-phoenix-poster",
|
|
@@ -35,10 +35,10 @@ export const productsArtSeedData = [
|
|
|
35
35
|
stockQuantity: 20,
|
|
36
36
|
availableQuantity: 20,
|
|
37
37
|
isSold: false,
|
|
38
|
-
mainImage:
|
|
38
|
+
mainImage: seedPhoto("art-image-dranzer-phoenix-1-20260817", 900, 900),
|
|
39
39
|
images: [
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
seedPhoto("art-image-dranzer-phoenix-1-20260817", 900, 900),
|
|
41
|
+
seedPhoto("art-image-dranzer-phoenix-2-20260817", 900, 900),
|
|
42
42
|
],
|
|
43
43
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
44
44
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
@@ -77,10 +77,10 @@ export const productsArtSeedData = [
|
|
|
77
77
|
stockQuantity: 100,
|
|
78
78
|
availableQuantity: 37,
|
|
79
79
|
isSold: false,
|
|
80
|
-
mainImage:
|
|
80
|
+
mainImage: seedPhoto("art-image-valkyrie-holo-1-20260818", 900, 900),
|
|
81
81
|
images: [
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
seedPhoto("art-image-valkyrie-holo-1-20260818", 900, 900),
|
|
83
|
+
seedPhoto("art-image-valkyrie-holo-2-20260818", 900, 900),
|
|
84
84
|
],
|
|
85
85
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
86
86
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
@@ -119,8 +119,8 @@ export const productsArtSeedData = [
|
|
|
119
119
|
stockQuantity: 15,
|
|
120
120
|
availableQuantity: 15,
|
|
121
121
|
isSold: false,
|
|
122
|
-
mainImage:
|
|
123
|
-
images: [
|
|
122
|
+
mainImage: seedPhoto("art-image-x-lineup-canvas-1-20260819", 900, 900),
|
|
123
|
+
images: [seedPhoto("art-image-x-lineup-canvas-1-20260819", 900, 900)],
|
|
124
124
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
125
125
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
126
126
|
listingType: "art",
|
|
@@ -164,8 +164,8 @@ export const productsArtSeedData = [
|
|
|
164
164
|
stockQuantity: 999,
|
|
165
165
|
availableQuantity: 999,
|
|
166
166
|
isSold: false,
|
|
167
|
-
mainImage:
|
|
168
|
-
images: [
|
|
167
|
+
mainImage: seedPhoto("art-image-metal-vintage-1-20260819", 900, 900),
|
|
168
|
+
images: [seedPhoto("art-image-metal-vintage-1-20260819", 900, 900)],
|
|
169
169
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
170
170
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
171
171
|
listingType: "art",
|
|
@@ -203,10 +203,10 @@ export const productsArtSeedData = [
|
|
|
203
203
|
stockQuantity: 250,
|
|
204
204
|
availableQuantity: 180,
|
|
205
205
|
isSold: false,
|
|
206
|
-
mainImage:
|
|
206
|
+
mainImage: seedPhoto("art-image-original-anniversary-1-20260819", 900, 900),
|
|
207
207
|
images: [
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
seedPhoto("art-image-original-anniversary-1-20260819", 900, 900),
|
|
209
|
+
seedPhoto("art-image-original-anniversary-2-20260819", 900, 900),
|
|
210
210
|
],
|
|
211
211
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
212
212
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
@@ -249,9 +249,9 @@ export const productsArtSeedData = [
|
|
|
249
249
|
stockQuantity: 0,
|
|
250
250
|
availableQuantity: 0,
|
|
251
251
|
isSold: true,
|
|
252
|
-
mainImage:
|
|
252
|
+
mainImage: seedPhoto("art-image-dragoon-galaxy-sold-out-1-20260824", 900, 900),
|
|
253
253
|
images: [
|
|
254
|
-
|
|
254
|
+
seedPhoto("art-image-dragoon-galaxy-sold-out-1-20260824", 900, 900),
|
|
255
255
|
],
|
|
256
256
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
257
257
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|