@mohasinac/appkit 4.53.2 → 4.54.1
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/.build-stamp.json +3 -3
- package/dist/_internal/server/features/auth/capabilities.js +7 -5
- package/dist/_internal/server/features/checkout/actions.d.ts +22 -6
- package/dist/_internal/server/features/checkout/actions.js +96 -51
- package/dist/_internal/server/features/checkout/index.d.ts +1 -1
- package/dist/_internal/server/features/checkout/index.js +1 -1
- package/dist/_internal/server/features/checkout/supplier-identity.js +28 -6
- package/dist/_internal/server/features/orders/adapters.js +1 -3
- package/dist/_internal/server/features/products/listing-tab-counts.js +81 -25
- package/dist/_internal/server/features/search/index-build/sources.js +43 -2
- package/dist/_internal/server/features/site-settings/adapters.js +1 -1
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +0 -1
- package/dist/_internal/server/jobs/core/analyticsAlertEvaluate.js +2 -5
- package/dist/_internal/server/jobs/core/jobRunners.js +0 -10
- package/dist/_internal/server/jobs/core/onOrderCreate.js +10 -104
- package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +0 -2
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +0 -1
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +0 -1
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +0 -1
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +0 -1
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +0 -1
- package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +0 -1
- package/dist/_internal/server/notifications/channel-health.d.ts +7 -3
- package/dist/_internal/server/notifications/channel-health.js +2 -2
- package/dist/_internal/server/notifications/send-guard.d.ts +1 -1
- package/dist/_internal/server/notifications/send-guard.js +2 -4
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +128 -28
- package/dist/_internal/shared/checkout/order-math.d.ts +1 -1
- package/dist/_internal/shared/checkout/order-math.js +1 -1
- package/dist/_internal/shared/features/categories/bundle-copy.d.ts +1 -1
- package/dist/_internal/shared/features/checkout/config.d.ts +0 -2
- package/dist/_internal/shared/features/checkout/config.js +0 -2
- package/dist/_internal/shared/features/messaging/config.d.ts +7 -5
- package/dist/_internal/shared/features/messaging/config.js +1 -4
- package/dist/_internal/shared/features/site-settings/fees.d.ts +0 -2
- package/dist/_internal/shared/features/site-settings/fees.js +0 -2
- package/dist/_internal/shared/features/site-settings/supplier-of-record.d.ts +56 -0
- package/dist/_internal/shared/features/site-settings/supplier-of-record.js +57 -0
- package/dist/_internal/shared/fees/calculator.d.ts +0 -8
- package/dist/_internal/shared/fees/calculator.js +0 -7
- package/dist/_internal/shared/listing-types/tiers.d.ts +94 -0
- package/dist/_internal/shared/listing-types/tiers.js +150 -0
- package/dist/cli/index.js +0 -2
- package/dist/client.d.ts +25 -4
- package/dist/client.js +36 -5
- package/dist/constants/api-endpoints.d.ts +21 -15
- package/dist/constants/api-endpoints.js +7 -8
- package/dist/constants/field-names.d.ts +1 -0
- package/dist/constants/field-names.js +1 -0
- package/dist/constants/notification-types.d.ts +1 -1
- package/dist/constants/notification-types.js +1 -1
- package/dist/core/integration-keys.d.ts +5 -5
- package/dist/core/integration-keys.js +21 -10
- package/dist/features/about/components/FeesView.js +0 -6
- package/dist/features/about/components/GuidesHubView.js +15 -2
- package/dist/features/account/components/NotificationPreferencesPanel.js +3 -4
- package/dist/features/account/components/UserOrdersView.js +26 -7
- package/dist/features/account/types/index.d.ts +0 -2
- package/dist/features/addresses/utils/postal-autofill.d.ts +39 -0
- package/dist/features/addresses/utils/postal-autofill.js +54 -0
- package/dist/features/admin/actions/notification-actions.d.ts +2 -8
- package/dist/features/admin/actions/notification-actions.js +9 -104
- package/dist/features/admin/components/AdminGuideHubView.js +1 -8
- package/dist/features/admin/components/AdminOrderEditorView.d.ts +1 -1
- package/dist/features/admin/components/AdminOrdersView.js +0 -2
- package/dist/features/admin/components/AdminSectionsView.js +3 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +22 -68
- package/dist/features/admin/components/AdminStoreEditorView.js +72 -34
- package/dist/features/admin/components/OwnerQuickActions.d.ts +29 -0
- package/dist/features/admin/components/OwnerQuickActions.js +142 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +13 -4
- package/dist/features/admin/components/sections/icon-options.d.ts +21 -0
- package/dist/features/admin/components/sections/icon-options.js +23 -0
- package/dist/features/admin/components/sections/sectionTemplates.js +4 -1
- package/dist/features/admin/constants/site-settings-tabs.d.ts +7 -12
- package/dist/features/admin/constants/site-settings-tabs.js +6 -12
- package/dist/features/admin/repository/site-settings.repository.js +1 -1
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +1 -1
- package/dist/features/admin/schemas/admin-editor-forms.js +4 -1
- package/dist/features/admin/schemas/admin-user-form.d.ts +0 -61
- package/dist/features/admin/schemas/admin-user-form.js +3 -44
- package/dist/features/admin/schemas/firestore.d.ts +28 -54
- package/dist/features/admin/schemas/firestore.js +40 -18
- package/dist/features/auctions/components/AuctionDetailPageView.js +4 -3
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +9 -2
- package/dist/features/auth/checkout-value-otp.d.ts +1 -1
- package/dist/features/auth/checkout-value-otp.js +1 -1
- package/dist/features/auth/permissions/constants.d.ts +29 -2
- package/dist/features/auth/permissions/constants.js +67 -1
- package/dist/features/blog/components/BlogFeaturedCard.d.ts +11 -1
- package/dist/features/blog/components/BlogFeaturedCard.js +9 -2
- package/dist/features/cart/components/CartDrawer.js +3 -2
- package/dist/features/cart/components/CartGroupLineRow.js +2 -1
- package/dist/features/cart/components/CartPriceBreakdown.d.ts +0 -2
- package/dist/features/cart/components/CartPriceBreakdown.js +1 -1
- package/dist/features/cart/components/StoreAddonsPicker.d.ts +2 -5
- package/dist/features/cart/components/StoreAddonsPicker.js +4 -5
- package/dist/features/cart/hooks/useAddToCart.js +10 -5
- package/dist/features/cart/repository/cart.repository.js +1 -2
- package/dist/features/cart/schemas/firestore.d.ts +1 -2
- package/dist/features/cart/utils/pending-ops.d.ts +11 -1
- package/dist/features/cart/utils/pending-ops.js +14 -2
- package/dist/features/categories/components/BrandDetailPageView.js +2 -1
- package/dist/features/categories/components/BundleDetailView.js +2 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +2 -1
- package/dist/features/categories/components/CategoryGrid.d.ts +11 -1
- package/dist/features/categories/components/CategoryGrid.js +9 -2
- package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +10 -5
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +2 -88
- package/dist/features/classified/components/ClassifiedDetailPageView.js +2 -1
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +2 -1
- package/dist/features/events/components/EventCard.d.ts +11 -1
- package/dist/features/events/components/EventCard.js +9 -2
- package/dist/features/grouped/components/GroupedListingDetailView.js +3 -1
- package/dist/features/homepage/components/CTABannerSection.d.ts +3 -1
- package/dist/features/homepage/components/CTABannerSection.js +6 -3
- package/dist/features/homepage/components/HeroCarousel.js +8 -6
- package/dist/features/homepage/components/MarketplaceHomepageView.js +33 -7
- package/dist/features/homepage/components/SectionCarousel.js +13 -5
- package/dist/features/homepage/components/SecurityHighlightsSection.d.ts +8 -3
- package/dist/features/homepage/components/SecurityHighlightsSection.js +2 -2
- package/dist/features/homepage/components/StatsCounterSection.d.ts +9 -4
- package/dist/features/homepage/components/StatsCounterSection.js +2 -2
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/TrustFeaturesSection.d.ts +18 -4
- package/dist/features/homepage/components/TrustFeaturesSection.js +5 -5
- package/dist/features/homepage/components/WelcomeSection.d.ts +13 -2
- package/dist/features/homepage/components/WelcomeSection.js +3 -3
- package/dist/features/homepage/components/WhatsAppCommunitySection.d.ts +28 -0
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +42 -6
- package/dist/features/homepage/components/WhatsAppGlyph.d.ts +20 -0
- package/dist/features/homepage/components/WhatsAppGlyph.js +20 -0
- package/dist/features/homepage/constants/hero-carousel-styles.d.ts +8 -6
- package/dist/features/homepage/constants/hero-carousel-styles.js +8 -6
- package/dist/features/homepage/constants/section-copy.d.ts +12 -10
- package/dist/features/homepage/constants/section-copy.js +28 -6
- package/dist/features/homepage/constants/stat-icons.d.ts +12 -0
- package/dist/features/homepage/constants/stat-icons.js +17 -0
- package/dist/features/homepage/constants/trust-icon-aliases.d.ts +8 -0
- package/dist/features/homepage/constants/trust-icon-aliases.js +75 -0
- package/dist/features/homepage/lib/section-defaults.d.ts +16 -1
- package/dist/features/homepage/lib/section-defaults.js +24 -4
- package/dist/features/homepage/lib/section-renderer.js +48 -8
- package/dist/features/homepage/schemas/firestore.d.ts +18 -1
- package/dist/features/layout/AppLayoutShell.js +2 -1
- package/dist/features/layout/BottomActions.d.ts +1 -0
- package/dist/features/layout/BottomActions.js +330 -0
- package/dist/features/layout/BottomChrome.d.ts +45 -0
- package/dist/features/layout/BottomChrome.js +5 -17
- package/dist/features/layout/SideActionDock.js +36 -13
- package/dist/features/layout/index.d.ts +2 -7
- package/dist/features/layout/index.js +7 -7
- package/dist/features/layout/useIsDesktop.d.ts +36 -0
- package/dist/features/layout/useIsDesktop.js +48 -0
- package/dist/features/live/components/LiveItemDetailPageView.js +2 -1
- package/dist/features/orders/actions/refund-actions.js +0 -1
- package/dist/features/orders/components/OrderAddonBadges.d.ts +1 -3
- package/dist/features/orders/components/OrderAddonBadges.js +3 -4
- package/dist/features/orders/components/OrderPaymentSummary.js +15 -2
- package/dist/features/orders/components/YourPurchaseStrip.d.ts +24 -0
- package/dist/features/orders/components/YourPurchaseStrip.js +77 -0
- package/dist/features/orders/components/index.d.ts +2 -1
- package/dist/features/orders/components/index.js +1 -1
- package/dist/features/orders/repository/orders.repository.d.ts +0 -8
- package/dist/features/orders/repository/orders.repository.js +0 -2
- package/dist/features/orders/schemas/firestore.d.ts +17 -9
- package/dist/features/orders/types/index.d.ts +2 -5
- package/dist/features/orders/utils/order-announcement-message.d.ts +18 -0
- package/dist/features/orders/utils/order-announcement-message.js +16 -0
- package/dist/features/orders/utils/payment-proof-message.d.ts +20 -0
- package/dist/features/orders/utils/payment-proof-message.js +17 -0
- package/dist/features/parts/components/PartDetailPageView.js +96 -1
- package/dist/features/parts/schemas/firestore.d.ts +247 -0
- package/dist/features/parts/schemas/firestore.js +6 -6
- package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +11 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +10 -3
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -3
- package/dist/features/products/api/[id]/route.js +8 -1
- package/dist/features/products/api/route.js +16 -4
- package/dist/features/products/components/AvailabilityScopeHint.js +1 -1
- package/dist/features/products/components/InteractiveProductCard.d.ts +7 -1
- package/dist/features/products/components/InteractiveProductCard.js +16 -4
- package/dist/features/products/components/MarketplaceBundleCard.d.ts +11 -1
- package/dist/features/products/components/MarketplaceBundleCard.js +9 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.d.ts +11 -1
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +9 -2
- package/dist/features/products/components/PrizeDrawDetailPageView.js +2 -1
- package/dist/features/products/components/ProductDetailPageView.js +27 -2
- package/dist/features/products/components/ProductGrid.d.ts +14 -1
- package/dist/features/products/components/ProductGrid.js +22 -5
- package/dist/features/products/components/ProductsIndexListing.js +2 -2
- package/dist/features/reviews/api/[id]/route.js +83 -23
- package/dist/features/reviews/components/PurchaseReviewAffordance.d.ts +6 -0
- package/dist/features/reviews/components/PurchaseReviewAffordance.js +42 -0
- package/dist/features/reviews/components/ReviewFormDrawer.d.ts +34 -0
- package/dist/features/reviews/components/ReviewFormDrawer.js +127 -0
- package/dist/features/reviews/components/index.d.ts +4 -0
- package/dist/features/reviews/components/index.js +2 -0
- package/dist/features/scams/schemas/index.d.ts +10 -10
- package/dist/features/search/action-index/settings-entries.js +0 -9
- package/dist/features/seller/actions/seller-actions.d.ts +1 -1
- package/dist/features/seller/actions/seller-actions.js +49 -3
- package/dist/features/seller/components/SellerPayoutSettingsView.js +30 -2
- package/dist/features/seller/components/SellerProductShell.d.ts +17 -1
- package/dist/features/seller/hooks/useStoreListingEntitlements.d.ts +8 -0
- package/dist/features/seller/hooks/useStoreListingEntitlements.js +70 -0
- package/dist/features/store-extensions/repository/store-extensions.repositories.d.ts +1 -6
- package/dist/features/store-extensions/repository/store-extensions.repositories.js +1 -10
- package/dist/features/store-extensions/schemas/firestore.d.ts +1 -17
- package/dist/features/store-extensions/schemas/firestore.js +0 -10
- package/dist/features/stores/components/InteractiveStoreCard.d.ts +11 -1
- package/dist/features/stores/components/InteractiveStoreCard.js +9 -2
- package/dist/features/stores/components/StoreCapabilitiesGuideView.js +0 -1
- package/dist/features/stores/components/StoreGuideHubView.js +2 -8
- package/dist/features/stores/components/StoreSettingsGuideView.js +2 -6
- package/dist/features/stores/components/index.d.ts +0 -2
- package/dist/features/stores/components/index.js +0 -1
- package/dist/features/stores/repository/store.repository.d.ts +1 -26
- package/dist/features/stores/repository/store.repository.js +5 -60
- package/dist/features/stores/schemas/firestore.d.ts +6 -25
- package/dist/features/stores/schemas/firestore.js +6 -3
- package/dist/features/stores/schemas/index.d.ts +1 -87
- package/dist/features/stores/schemas/index.js +10 -15
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -48
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -40
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -16
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +1 -1
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -79
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +1 -1
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +415 -69
- package/dist/index.d.ts +20 -32
- package/dist/index.js +34 -43
- package/dist/next/routing/route-map.d.ts +2 -8
- package/dist/next/routing/route-map.js +21 -4
- package/dist/providers/db-firebase/base.repository.d.ts +1 -1
- package/dist/providers/db-firebase/base.repository.js +1 -1
- package/dist/providers/payment-razorpay/index.d.ts +125 -0
- package/dist/providers/payment-razorpay/index.js +232 -0
- package/dist/providers/payment-razorpay/signature.d.ts +53 -0
- package/dist/providers/payment-razorpay/signature.js +71 -0
- package/dist/providers/shipping-shiprocket/index.d.ts +98 -0
- package/dist/providers/shipping-shiprocket/index.js +356 -0
- package/dist/providers.d.ts +3 -0
- package/dist/providers.js +3 -0
- package/dist/react/hooks/useCanSeePrices.d.ts +0 -27
- package/dist/react/hooks/useCanSeePrices.js +25 -0
- package/dist/repositories/index.d.ts +1 -1
- package/dist/repositories/index.js +1 -1
- package/dist/schemas/registry.d.ts +10 -115
- package/dist/schemas/registry.js +1 -2
- package/dist/security/pii-encrypt.js +1 -1
- package/dist/seed/_helpers/category-forest.js +27 -0
- package/dist/seed/_helpers/category-parts-glossary-map.js +1816 -88
- package/dist/seed/_helpers/category-parts.d.ts +1 -1
- package/dist/seed/_helpers/category-parts.js +13399 -3019
- package/dist/seed/carousel-slides-seed-data.js +47 -10
- package/dist/seed/categories-seed-data.js +48 -6
- package/dist/seed/faq-seed-data.js +2 -2
- package/dist/seed/homepage-sections-seed-data.js +286 -54
- package/dist/seed/index.d.ts +1 -1
- package/dist/seed/index.js +1 -1
- package/dist/seed/manifest.d.ts +1 -1
- package/dist/seed/manifest.js +1 -2
- package/dist/seed/model-composition-seed-data.js +6 -8
- package/dist/seed/part-glossary/chunk0.d.ts +9 -0
- package/dist/seed/part-glossary/chunk0.js +35448 -0
- package/dist/seed/part-glossary/chunk1.d.ts +9 -0
- package/dist/seed/part-glossary/chunk1.js +40494 -0
- package/dist/seed/part-glossary/chunk2.d.ts +9 -0
- package/dist/seed/part-glossary/chunk2.js +51242 -0
- package/dist/seed/part-glossary/chunk3.d.ts +9 -0
- package/dist/seed/part-glossary/chunk3.js +53337 -0
- package/dist/seed/part-glossary/chunk4.d.ts +9 -0
- package/dist/seed/part-glossary/chunk4.js +51454 -0
- package/dist/seed/part-glossary-seed-data.d.ts +1 -1
- package/dist/seed/part-glossary-seed-data.js +23 -47483
- package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
- package/dist/seed/products-catalogue-seed-data.js +63936 -13803
- package/dist/seed/site-settings-seed-data.js +34 -35
- package/dist/seed/store-extensions-seed-data.d.ts +1 -2
- package/dist/seed/store-extensions-seed-data.js +1 -23
- package/dist/seed/stores-seed-data.js +0 -1
- package/dist/server-entry.d.ts +1 -1
- package/dist/server-entry.js +1 -1
- package/dist/server.d.ts +8 -10
- package/dist/server.js +16 -22
- package/dist/styles.css +392 -43
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +1 -1
- package/dist/tokens/themes/default-light.js +2 -1
- package/dist/tokens/tokens.css +6 -2
- package/dist/ui/components/Button.d.ts +11 -0
- package/dist/ui/components/Button.js +11 -0
- package/dist/ui/components/Button.style.css +29 -0
- package/dist/ui/components/CarouselNav.d.ts +57 -0
- package/dist/ui/components/CarouselNav.js +25 -0
- package/dist/ui/components/CarouselNav.style.css +265 -0
- package/dist/ui/components/GatedPrice.js +30 -3
- package/dist/ui/components/GatedPrice.style.css +43 -40
- package/dist/ui/components/HorizontalScroller.d.ts +12 -1
- package/dist/ui/components/HorizontalScroller.js +43 -3
- package/dist/ui/components/ImageMosaic.d.ts +8 -1
- package/dist/ui/components/ImageMosaic.js +3 -2
- package/dist/ui/components/ImageMosaic.style.css +22 -0
- package/dist/ui/components/Layout.style.css +6 -0
- package/dist/ui/components/Semantic.d.ts +3 -2
- package/dist/ui/components/Semantic.js +1 -0
- package/dist/ui/components/Typography.d.ts +2 -0
- package/dist/ui/components/Typography.js +2 -0
- package/dist/ui/components/Typography.style.css +19 -0
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.js +4 -0
- package/package.json +3 -2
- package/dist/_internal/server/jobs/core/whatsappCatalogImport.d.ts +0 -27
- package/dist/_internal/server/jobs/core/whatsappCatalogImport.js +0 -172
- package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +0 -35
- package/dist/_internal/server/jobs/core/whatsappNotify.js +0 -140
- package/dist/features/admin/components/AdminWhatsAppGuideView.d.ts +0 -2
- package/dist/features/admin/components/AdminWhatsAppGuideView.js +0 -35
- package/dist/features/orders/components/MarketplaceOrderCard.d.ts +0 -36
- package/dist/features/orders/components/MarketplaceOrderCard.js +0 -57
- package/dist/features/stores/components/StoreWhatsAppGuideView.d.ts +0 -3
- package/dist/features/stores/components/StoreWhatsAppGuideView.js +0 -12
- package/dist/features/whatsapp-bot/api/send-status/route.d.ts +0 -12
- package/dist/features/whatsapp-bot/api/send-status/route.js +0 -38
- package/dist/features/whatsapp-bot/api/webhook/route.d.ts +0 -12
- package/dist/features/whatsapp-bot/api/webhook/route.js +0 -43
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +0 -6
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +0 -270
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.d.ts +0 -9
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +0 -7
- package/dist/features/whatsapp-bot/components/index.d.ts +0 -3
- package/dist/features/whatsapp-bot/components/index.js +0 -2
- package/dist/features/whatsapp-bot/helpers/payment-proof-message.d.ts +0 -14
- package/dist/features/whatsapp-bot/helpers/payment-proof-message.js +0 -17
- package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +0 -52
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +0 -283
- package/dist/features/whatsapp-bot/index.d.ts +0 -3
- package/dist/features/whatsapp-bot/index.js +0 -3
- package/dist/features/whatsapp-bot/manifest.d.ts +0 -2
- package/dist/features/whatsapp-bot/manifest.js +0 -13
- package/dist/features/whatsapp-bot/messages/en.json +0 -7
- package/dist/features/whatsapp-bot/server.d.ts +0 -7
- package/dist/features/whatsapp-bot/server.js +0 -7
- package/dist/features/whatsapp-bot/types/index.d.ts +0 -126
- package/dist/features/whatsapp-bot/types/index.js +0 -1
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* WHY: Seeds the homepage layout — which sections render, in what order, with what copy.
|
|
3
|
-
* WHAT:
|
|
3
|
+
* WHAT: 26 sections (21 enabled + 5 deliberately disabled), ordered 1..26 contiguously.
|
|
4
|
+
*
|
|
5
|
+
* 🛑 Four of those five were disabled on 2026-10-20 — auctions (3),
|
|
6
|
+
* featured-bundles (9), event-raffles (13) and prize-draws (14) — each with its
|
|
7
|
+
* own note on the switch that did it. A disabled row KEEPS its order slot, so
|
|
8
|
+
* the range stays contiguous and re-enabling one puts it back where it was
|
|
9
|
+
* rather than at the end.
|
|
4
10
|
* `google-reviews` is a REGISTERED type with no document — see the note
|
|
5
|
-
* beside the deliberate budget-tile omission below for why.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
11
|
+
* beside the deliberate budget-tile omission below for why.
|
|
12
|
+
*
|
|
13
|
+
* `how-it-works` (25) and `promo-grid` (26) were in that same unseeded set and
|
|
14
|
+
* were SEEDED 2026-10-20, on the terms the rule always allowed: there is now
|
|
15
|
+
* real copy for them. How-it-works quotes the three-tier authenticity policy
|
|
16
|
+
* the carousel already leads with; promo-grid routes to the four generation
|
|
17
|
+
* categories using the same `/media/` covers those categories use. Neither
|
|
18
|
+
* invents a claim. `testimonials` stays unseeded — the site has never had a
|
|
19
|
+
* customer, so every quote would be fabricated.
|
|
12
20
|
*
|
|
13
21
|
* 🛑 That count and range are ASSERTED, not described — `order` must stay unique
|
|
14
22
|
* and contiguous. Until 2026-10-19 this header read "22 sections … 1..21" while
|
|
@@ -21,24 +29,33 @@
|
|
|
21
29
|
* section type with a renderer and zero seeded rows is the same class of gap,
|
|
22
30
|
* just silent rather than colliding.
|
|
23
31
|
*
|
|
24
|
-
* ORDER
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
32
|
+
* ORDER: hero → SHOP (products, auctions, pre-orders) → carousel → trust →
|
|
33
|
+
* orient (categories, systems matrix) → shop cont. (bundles) → supply
|
|
34
|
+
* (stores) → social proof (reviews) → engage (events, raffles, prize draws) →
|
|
35
|
+
* editorial (blog) → convert (seller banner, newsletter) → reassure (stats,
|
|
36
|
+
* security, community, FAQ, brands).
|
|
37
|
+
*
|
|
38
|
+
* 🛑 Products (2), auctions (3) and pre-orders (4) were lifted above the
|
|
39
|
+
* carousel on 2026-10-20 at the owner's request — real merchandise directly
|
|
40
|
+
* under the hero, promotions below it. That OVERRIDES the research arrangement
|
|
41
|
+
* this header used to describe (trust → orient → shop), so do not "restore"
|
|
42
|
+
* the old order on the strength of the paragraphs below; they explain the
|
|
43
|
+
* reasoning for the sections that are still in a research-driven position,
|
|
44
|
+
* not a mandate for the three that were deliberately moved. Pre-orders came
|
|
45
|
+
* up from 8 in a second pass, which is why the carousel/trust/categories/
|
|
46
|
+
* matrix block reads 5 → 8 rather than 4 → 7.
|
|
30
47
|
*
|
|
31
|
-
* The systems matrix sits
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* rail — taxonomy routing before merchandising. See
|
|
48
|
+
* The systems matrix still sits immediately after the generation tiles (7 → 8)
|
|
49
|
+
* because that is where the measured leader puts it: on worldhobbyshop
|
|
50
|
+
* "Browse Beyblade Systems & Series" (25 text links) follows "Shop Beyblades
|
|
51
|
+
* by Generation" (6 image tiles) — taxonomy routing stays together. See
|
|
36
52
|
* docs/research/competitor-crawl-2026-10/layout.md.
|
|
37
53
|
*
|
|
38
|
-
* Baymard's finding drives the
|
|
39
|
-
* the one documented carousel win came from demoting it BELOW a
|
|
40
|
-
* So `welcome` is first and owns the page's single <h1>;
|
|
41
|
-
*
|
|
54
|
+
* Baymard's finding still drives the hero: a static hero outperforms a
|
|
55
|
+
* carousel, and the one documented carousel win came from demoting it BELOW a
|
|
56
|
+
* static hero. So `welcome` is first and owns the page's single <h1>; the
|
|
57
|
+
* `carousel` is now demoted further still, under the first three product
|
|
58
|
+
* rails, and its slide titles render as <h2>.
|
|
42
59
|
*
|
|
43
60
|
* COPY IS CATALOGUE-NEUTRAL on purpose. "Shop by Category" stays correct
|
|
44
61
|
* however the catalogue changes; "Burst & X Series" goes stale the moment it
|
|
@@ -62,7 +79,6 @@
|
|
|
62
79
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
63
80
|
* @tag sideEffects:none
|
|
64
81
|
*/
|
|
65
|
-
import { seedPhoto } from "./_helpers/media.js";
|
|
66
82
|
import { ROUTES } from "../next/routing/route-map.js";
|
|
67
83
|
const NOW = new Date();
|
|
68
84
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
@@ -76,26 +92,43 @@ export const homepageSectionsSeedData = [
|
|
|
76
92
|
order: 1,
|
|
77
93
|
enabled: true,
|
|
78
94
|
config: {
|
|
79
|
-
|
|
95
|
+
/*
|
|
96
|
+
* 🛑 NO AUCTIONS IN THE HERO, and nothing else that the site does not
|
|
97
|
+
* currently do.
|
|
98
|
+
*
|
|
99
|
+
* The h1 read "Buy, Sell & Auction Collectibles" and the second CTA sent
|
|
100
|
+
* visitors to /auctions — which `listings.listingTypes.auction: false`
|
|
101
|
+
* now switches off (2026-10-20). The first screen of the site is the
|
|
102
|
+
* worst place to advertise a type whose browse page returns nothing.
|
|
103
|
+
*
|
|
104
|
+
* The description lost "bid in live auctions" for the same reason, and
|
|
105
|
+
* "escrow-backed payments" because that claim was withdrawn from the
|
|
106
|
+
* seller guide and the Become-a-Seller copy on the same day.
|
|
107
|
+
*
|
|
108
|
+
* ⚠️ This is SEED data. The live hero is a `homepageSections` document and
|
|
109
|
+
* is NOT rewritten by editing this file — change it in the admin
|
|
110
|
+
* homepage-sections editor, or re-seed.
|
|
111
|
+
*/
|
|
112
|
+
h1: "Buy & Sell Collectibles",
|
|
80
113
|
subtitle: "Verified sellers, secure payments, and authenticity checks on every listing.",
|
|
81
|
-
description: "A marketplace built for collectors — browse thousands of listings,
|
|
114
|
+
description: "A marketplace built for collectors — browse thousands of listings, reserve upcoming releases, and buy with secure, verified payments.",
|
|
82
115
|
showCTA: true,
|
|
83
116
|
pillLabel: "Buy, sell & collect",
|
|
84
117
|
ctaText: "Start Shopping",
|
|
85
118
|
ctaLink: String(ROUTES.PUBLIC.PRODUCTS),
|
|
86
|
-
secondaryCtaText: "
|
|
87
|
-
secondaryCtaLink: String(ROUTES.PUBLIC.
|
|
119
|
+
secondaryCtaText: "Explore Categories",
|
|
120
|
+
secondaryCtaLink: String(ROUTES.PUBLIC.CATEGORIES),
|
|
88
121
|
},
|
|
89
122
|
createdAt: daysAgo(90),
|
|
90
123
|
updatedAt: daysAgo(2),
|
|
91
124
|
},
|
|
92
|
-
// ----
|
|
125
|
+
// ---- 5. Promo carousel ---------------------------------------------------
|
|
93
126
|
// "medium" rather than "tall": it now sits UNDER a full hero, so a
|
|
94
127
|
// viewport-height band would push everything else below the fold.
|
|
95
128
|
{
|
|
96
129
|
id: "section-hero-carousel",
|
|
97
130
|
type: "carousel",
|
|
98
|
-
order:
|
|
131
|
+
order: 5,
|
|
99
132
|
enabled: true,
|
|
100
133
|
config: {
|
|
101
134
|
title: "Featured promotions",
|
|
@@ -108,13 +141,13 @@ export const homepageSectionsSeedData = [
|
|
|
108
141
|
createdAt: daysAgo(90),
|
|
109
142
|
updatedAt: daysAgo(5),
|
|
110
143
|
},
|
|
111
|
-
// ----
|
|
112
|
-
//
|
|
113
|
-
//
|
|
144
|
+
// ---- 6. Trust bar --------------------------------------------------------
|
|
145
|
+
// Research: ~80% of attention is above the fold and the first 3–4 trust
|
|
146
|
+
// elements carry nearly all of the lift.
|
|
114
147
|
{
|
|
115
148
|
id: "section-trust-indicators",
|
|
116
149
|
type: "trust-indicators",
|
|
117
|
-
order:
|
|
150
|
+
order: 6,
|
|
118
151
|
enabled: true,
|
|
119
152
|
config: {
|
|
120
153
|
title: "Why buyers trust us",
|
|
@@ -126,10 +159,16 @@ export const homepageSectionsSeedData = [
|
|
|
126
159
|
description: "Every seller is verified before their first listing goes live.",
|
|
127
160
|
},
|
|
128
161
|
{
|
|
162
|
+
// Was "Escrow-backed payments". The escrow claim was withdrawn from
|
|
163
|
+
// the seller guide, the Become-a-Seller copy and the hero description
|
|
164
|
+
// on 2026-10-20; a trust badge is the last place it should have
|
|
165
|
+
// survived, because it is the claim a buyer is most likely to rely
|
|
166
|
+
// on. The `id` is deliberately unchanged — it is this seed document's
|
|
167
|
+
// identity, not its copy.
|
|
129
168
|
id: "trust-escrow",
|
|
130
169
|
icon: "lock",
|
|
131
|
-
title: "
|
|
132
|
-
description: "Your money
|
|
170
|
+
title: "Secure payments",
|
|
171
|
+
description: "Your money reaches the seller after the item is delivered and accepted.",
|
|
133
172
|
},
|
|
134
173
|
{
|
|
135
174
|
id: "trust-returns",
|
|
@@ -148,12 +187,12 @@ export const homepageSectionsSeedData = [
|
|
|
148
187
|
createdAt: daysAgo(90),
|
|
149
188
|
updatedAt: daysAgo(20),
|
|
150
189
|
},
|
|
151
|
-
// ----
|
|
190
|
+
// ---- 7. Orient: categories ----------------------------------------------
|
|
152
191
|
// Baymard's top homepage guideline, and the main internal-linking surface.
|
|
153
192
|
{
|
|
154
193
|
id: "section-collectibles-categories",
|
|
155
194
|
type: "categories",
|
|
156
|
-
order:
|
|
195
|
+
order: 7,
|
|
157
196
|
enabled: true,
|
|
158
197
|
config: {
|
|
159
198
|
title: "Shop by Category",
|
|
@@ -173,13 +212,17 @@ export const homepageSectionsSeedData = [
|
|
|
173
212
|
createdAt: daysAgo(90),
|
|
174
213
|
updatedAt: daysAgo(10),
|
|
175
214
|
},
|
|
176
|
-
// ----
|
|
215
|
+
// ---- 2–4, 9. Shop --------------------------------------------------------
|
|
216
|
+
// Products (2), auctions (3) and pre-orders (4) sit directly under the hero,
|
|
217
|
+
// ABOVE the carousel — a merchandising-first top of page, asked for
|
|
218
|
+
// 2026-10-20. Bundles (9) stay below the orientation band.
|
|
219
|
+
//
|
|
177
220
|
// maxItems stays <= 12 everywhere: SSR supplies exactly 12 via
|
|
178
221
|
// getFeatured*(12), so a larger cap would promise rows that cannot fill.
|
|
179
222
|
{
|
|
180
223
|
id: "section-featured-products",
|
|
181
224
|
type: "products",
|
|
182
|
-
order:
|
|
225
|
+
order: 2,
|
|
183
226
|
enabled: true,
|
|
184
227
|
config: {
|
|
185
228
|
title: "Featured Products",
|
|
@@ -207,11 +250,24 @@ export const homepageSectionsSeedData = [
|
|
|
207
250
|
createdAt: daysAgo(90),
|
|
208
251
|
updatedAt: daysAgo(1),
|
|
209
252
|
},
|
|
253
|
+
/*
|
|
254
|
+
* 🛑 DISABLED, NOT DELETED — and the `order: 3` slot is held.
|
|
255
|
+
*
|
|
256
|
+
* `listings.listingTypes.auction: false` already stops this rail rendering
|
|
257
|
+
* (HOMEPAGE_SECTION_LISTING_TYPE in MarketplaceHomepageView), so `enabled:
|
|
258
|
+
* false` is the second of two locks, not the only one. It is worth having
|
|
259
|
+
* because it is the one an ADMIN sees: a section listed as enabled in the
|
|
260
|
+
* homepage builder, silently filtered out at render, reads as a bug in the
|
|
261
|
+
* builder. Both switches say the same thing now.
|
|
262
|
+
*
|
|
263
|
+
* The copy and the "⚡ LIVE AUCTIONS" pill stay exactly as they were, so
|
|
264
|
+
* re-enabling the type and this flag restores the rail intact.
|
|
265
|
+
*/
|
|
210
266
|
{
|
|
211
267
|
id: "section-live-auctions",
|
|
212
268
|
type: "auctions",
|
|
213
|
-
order:
|
|
214
|
-
enabled:
|
|
269
|
+
order: 3,
|
|
270
|
+
enabled: false,
|
|
215
271
|
config: {
|
|
216
272
|
title: "Live Auctions",
|
|
217
273
|
subtitle: "Bidding open now — place yours before the timer runs out.",
|
|
@@ -228,7 +284,7 @@ export const homepageSectionsSeedData = [
|
|
|
228
284
|
{
|
|
229
285
|
id: "section-pre-orders",
|
|
230
286
|
type: "pre-orders",
|
|
231
|
-
order:
|
|
287
|
+
order: 4,
|
|
232
288
|
enabled: true,
|
|
233
289
|
config: {
|
|
234
290
|
title: "Reserve Before It Ships",
|
|
@@ -243,11 +299,13 @@ export const homepageSectionsSeedData = [
|
|
|
243
299
|
createdAt: daysAgo(90),
|
|
244
300
|
updatedAt: daysAgo(3),
|
|
245
301
|
},
|
|
302
|
+
// Disabled 2026-10-20 with `listings.categoryTypes.bundle: false`. Same
|
|
303
|
+
// two-lock arrangement as the auctions rail above — see that note.
|
|
246
304
|
{
|
|
247
305
|
id: "section-featured-bundles",
|
|
248
306
|
type: "featured-bundles",
|
|
249
307
|
order: 9,
|
|
250
|
-
enabled:
|
|
308
|
+
enabled: false,
|
|
251
309
|
config: {
|
|
252
310
|
title: "Curated Bundles",
|
|
253
311
|
subtitle: "Multiple items, one discounted price.",
|
|
@@ -316,8 +374,18 @@ export const homepageSectionsSeedData = [
|
|
|
316
374
|
{
|
|
317
375
|
id: "section-event-raffles",
|
|
318
376
|
type: "event-raffles",
|
|
377
|
+
/*
|
|
378
|
+
* 🛑 DISABLED, and here `enabled: false` is the ONLY lock there is.
|
|
379
|
+
*
|
|
380
|
+
* Raffles and spin wheels are EVENT types, not listing types and not
|
|
381
|
+
* category types, so no Site Settings toggle reaches them and
|
|
382
|
+
* `HOMEPAGE_SECTION_LISTING_TYPE` has nothing to map them to. The same gap
|
|
383
|
+
* put Lotteries, Bundles and Promotions in the footer's hand-written hidden
|
|
384
|
+
* block (src/constants/navigation.tsx) — a per-document flag is the whole
|
|
385
|
+
* mechanism for this one, which is exactly why it is spelled out.
|
|
386
|
+
*/
|
|
319
387
|
order: 13,
|
|
320
|
-
enabled:
|
|
388
|
+
enabled: false,
|
|
321
389
|
config: {
|
|
322
390
|
title: "Raffles & Spin Wheels",
|
|
323
391
|
subtitle: "Enter for free and see if the odds are with you.",
|
|
@@ -332,8 +400,10 @@ export const homepageSectionsSeedData = [
|
|
|
332
400
|
{
|
|
333
401
|
id: "section-prize-draws",
|
|
334
402
|
type: "prize-draws",
|
|
403
|
+
// Disabled 2026-10-20 with `listings.listingTypes.prize-draw: false` — the
|
|
404
|
+
// same two-lock arrangement as the auctions rail.
|
|
335
405
|
order: 14,
|
|
336
|
-
enabled:
|
|
406
|
+
enabled: false,
|
|
337
407
|
config: {
|
|
338
408
|
title: "Prize Draws",
|
|
339
409
|
subtitle: "Buy an entry for a shot at something rare.",
|
|
@@ -378,7 +448,13 @@ export const homepageSectionsSeedData = [
|
|
|
378
448
|
enabled: true,
|
|
379
449
|
config: {
|
|
380
450
|
height: "md",
|
|
381
|
-
|
|
451
|
+
/* Real imagery instead of a `seedPhoto()` grey tile — see the MEDIA block
|
|
452
|
+
in carousel-slides-seed-data.ts for why that helper produces one of six
|
|
453
|
+
flat SVG rectangles and why a third-party host is not the alternative.
|
|
454
|
+
🛑 A seller pitch wants a HUMAN packing an order, which the wiki corpus
|
|
455
|
+
does not contain; this generation cover is a stand-in until a real photo
|
|
456
|
+
exists for the slot. */
|
|
457
|
+
backgroundImage: "/media/category-beyblade-x-image",
|
|
382
458
|
content: {
|
|
383
459
|
title: "Have collectibles to sell?",
|
|
384
460
|
subtitle: "Open a store in minutes.",
|
|
@@ -419,12 +495,40 @@ export const homepageSectionsSeedData = [
|
|
|
419
495
|
order: 18,
|
|
420
496
|
enabled: true,
|
|
421
497
|
config: {
|
|
498
|
+
/*
|
|
499
|
+
* 🛑 VERIFIABLE FACTS, not volume claims.
|
|
500
|
+
*
|
|
501
|
+
* This read "200+ Listings · 8+ Verified Sellers · 35+ Buyer Reviews ·
|
|
502
|
+
* 50+ Orders Completed". Those were `source: "live"` FALLBACKS, shown
|
|
503
|
+
* whenever the metric fetch fails — and all four were falsifiable in the
|
|
504
|
+
* same breath as the page that showed them: `realListingsOnly()` in
|
|
505
|
+
* seed-cli.mjs loads on the order of a dozen products, and the site has
|
|
506
|
+
* never taken a real order, so "50+ Orders Completed" was a number about
|
|
507
|
+
* nothing. A visitor who reads it and then browses the catalogue
|
|
508
|
+
* concludes the whole page is decoration.
|
|
509
|
+
*
|
|
510
|
+
* The replacements are things a visitor can CHECK by clicking through,
|
|
511
|
+
* and each was counted from source in the change that wrote it:
|
|
512
|
+
* - parts `PART_LEAF_COUNT` (_helpers/category-parts.ts:17528) = 2490.
|
|
513
|
+
* 🛑 CLAUDE.md says 752; that is stale, the corpus grew.
|
|
514
|
+
* - generations 4 tier-1 rows under `category-spinning-tops`.
|
|
515
|
+
* - brands 28 `BRAND_SEED_INPUTS` entries (`BRAND_ROW_COUNT`).
|
|
516
|
+
* Re-count before editing any of them rather than trusting this comment.
|
|
517
|
+
*
|
|
518
|
+
* `total_listings` stays LIVE and keeps a `"0"` fallback: a live number is
|
|
519
|
+
* verifiable by definition, and a zero fallback can only ever understate.
|
|
520
|
+
* `total_orders` and `total_reviews` are dropped rather than zeroed — a
|
|
521
|
+
* giant "0" in 48pt type is worse than not raising the subject.
|
|
522
|
+
*
|
|
523
|
+
* `iconName` is required on a static stat; a live one derives its glyph
|
|
524
|
+
* from `metric` via STAT_PRESET_ICON.
|
|
525
|
+
*/
|
|
422
526
|
title: "By the numbers",
|
|
423
527
|
stats: [
|
|
424
|
-
{ key: "products", label: "Listings", value: "
|
|
425
|
-
{ key: "
|
|
426
|
-
{ key: "
|
|
427
|
-
{ key: "
|
|
528
|
+
{ key: "products", label: "Listings", value: "0", source: "live", metric: "total_listings", suffix: "+" },
|
|
529
|
+
{ key: "parts", label: "Parts catalogued", value: "2,490", source: "static", iconName: "spares" },
|
|
530
|
+
{ key: "generations", label: "Generations covered", value: "4", source: "static", iconName: "archive" },
|
|
531
|
+
{ key: "brands", label: "Brands", value: "28", source: "static", iconName: "deals" },
|
|
428
532
|
],
|
|
429
533
|
},
|
|
430
534
|
createdAt: daysAgo(90),
|
|
@@ -474,8 +578,17 @@ export const homepageSectionsSeedData = [
|
|
|
474
578
|
config: {
|
|
475
579
|
title: "Join the community",
|
|
476
580
|
description: "Deal alerts, auction reminders, and early access to drops.",
|
|
477
|
-
|
|
478
|
-
|
|
581
|
+
/* 🛑 The line that used to sit here — "Keep this link verbatim — a
|
|
582
|
+
tester-checklist case asserts it" — was FALSE and is deleted. Verified:
|
|
583
|
+
zero hits for `chat.whatsapp.com` anywhere under
|
|
584
|
+
`appkit/src/features/tester/seed-data/`. It had also outlived its
|
|
585
|
+
subject: the value it was protecting (a bare `https://chat.whatsapp.com/`
|
|
586
|
+
with no invite code) is gone, so the comment defended a string that no
|
|
587
|
+
longer existed while discouraging anyone from touching the field. */
|
|
588
|
+
// Left unset: a bare chat.whatsapp.com URL is not a valid invite code and
|
|
589
|
+
// opens a page that resolves to no group. The real link is env-owned
|
|
590
|
+
// (WHATSAPP_GROUP_INVITE) and reaches the card through appkit.config.
|
|
591
|
+
groupLink: undefined,
|
|
479
592
|
benefits: [
|
|
480
593
|
"Deal alerts before they hit the homepage",
|
|
481
594
|
"Reminders when auctions you watch are closing",
|
|
@@ -635,7 +748,7 @@ export const homepageSectionsSeedData = [
|
|
|
635
748
|
{
|
|
636
749
|
id: "section-systems-matrix",
|
|
637
750
|
type: "custom-cards",
|
|
638
|
-
order:
|
|
751
|
+
order: 8,
|
|
639
752
|
enabled: true,
|
|
640
753
|
config: {
|
|
641
754
|
title: "Every system, every part family",
|
|
@@ -746,6 +859,125 @@ export const homepageSectionsSeedData = [
|
|
|
746
859
|
createdAt: daysAgo(1),
|
|
747
860
|
updatedAt: daysAgo(1),
|
|
748
861
|
},
|
|
862
|
+
/*
|
|
863
|
+
* ---- 25. How it works ----------------------------------------------------
|
|
864
|
+
*
|
|
865
|
+
* `how-it-works` and `promo-grid` (26) were registered types with renderers,
|
|
866
|
+
* admin create-picker entries and ZERO seeded rows — so both returned `null`
|
|
867
|
+
* and the page was missing the two blocks a 2026 marketplace homepage most
|
|
868
|
+
* obviously has. They were left unseeded on the principle that this file must
|
|
869
|
+
* not invent placeholder content, which was the right call: the reason they
|
|
870
|
+
* can be seeded NOW is that there is real, checkable copy to put in them.
|
|
871
|
+
*
|
|
872
|
+
* 🛑 Every step below is a claim the site actually honours. No "ships in 24
|
|
873
|
+
* hours", no "100% buyer protection" — the authenticity labelling in step 2
|
|
874
|
+
* is the one genuine differentiator the carousel already leads with, quoted
|
|
875
|
+
* from the same policy.
|
|
876
|
+
*
|
|
877
|
+
* 🛑 NO BIDDING STEP. `listings.listingTypes.auction` is false, so a step
|
|
878
|
+
* telling visitors to place a bid would route them to a browse page with
|
|
879
|
+
* nothing in it.
|
|
880
|
+
*
|
|
881
|
+
* 🛑 PLACEMENT IS PROVISIONAL. Appended at 25/26 rather than inserted mid-page
|
|
882
|
+
* (how-it-works belongs nearer the top, after the trust bar) because the
|
|
883
|
+
* section order is being tuned with the owner in a parallel change and
|
|
884
|
+
* renumbering 24 rows underneath that would collide. Reposition from
|
|
885
|
+
* /admin/sections, which is cheaper than a reseed.
|
|
886
|
+
*/
|
|
887
|
+
{
|
|
888
|
+
id: "section-how-it-works",
|
|
889
|
+
type: "how-it-works",
|
|
890
|
+
order: 25,
|
|
891
|
+
enabled: true,
|
|
892
|
+
config: {
|
|
893
|
+
title: "How buying here works",
|
|
894
|
+
subtitle: "Three steps, and the second one is the part other marketplaces skip.",
|
|
895
|
+
pillLabel: "New here?",
|
|
896
|
+
ctaLabel: "Browse the catalogue →",
|
|
897
|
+
ctaLink: String(ROUTES.PUBLIC.PRODUCTS),
|
|
898
|
+
steps: [
|
|
899
|
+
{
|
|
900
|
+
number: 1,
|
|
901
|
+
iconKey: "search",
|
|
902
|
+
title: "Find the piece",
|
|
903
|
+
desc: "Filter by generation, part family, condition and price across every seller on the marketplace.",
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
number: 2,
|
|
907
|
+
iconKey: "verify",
|
|
908
|
+
title: "Read the authenticity label",
|
|
909
|
+
desc: "Every listing carries one of three labels — original, reproduction or unverified. If a seller does not say which, it reads “unverified”; we will not claim “original” on their behalf.",
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
number: 3,
|
|
913
|
+
iconKey: "lock",
|
|
914
|
+
title: "Buy with the seller verified",
|
|
915
|
+
desc: "Identity and payout details are checked before a store can publish, and your address and phone number are encrypted at rest.",
|
|
916
|
+
},
|
|
917
|
+
],
|
|
918
|
+
},
|
|
919
|
+
createdAt: daysAgo(1),
|
|
920
|
+
updatedAt: daysAgo(1),
|
|
921
|
+
},
|
|
922
|
+
/*
|
|
923
|
+
* ---- 26. Promo grid ------------------------------------------------------
|
|
924
|
+
*
|
|
925
|
+
* The always-dark 4-tile editorial mosaic: one large slot plus three, each a
|
|
926
|
+
* full-bleed image under a bottom-up scrim. Routes to the four generations,
|
|
927
|
+
* which is the one set of destinations guaranteed to be populated however the
|
|
928
|
+
* product catalogue changes — a promo tile pointing at an empty page is worse
|
|
929
|
+
* than no tile.
|
|
930
|
+
*
|
|
931
|
+
* 🛑 `image` is a `/media/<shortId>` slug backed by a real `mediaAssets` row,
|
|
932
|
+
* never `seedPhoto()` (six flat grey tiles) and never a third-party host
|
|
933
|
+
* (Root Cause #104). These four covers are the same ones the generation
|
|
934
|
+
* categories use, so they are known-present.
|
|
935
|
+
*
|
|
936
|
+
* 🛑 The component caps at `PROMO_GRID_MAX_BANNERS` (4) and silently drops a
|
|
937
|
+
* fifth — the layout has exactly one hero slot and three regular ones.
|
|
938
|
+
*/
|
|
939
|
+
{
|
|
940
|
+
id: "section-generation-promos",
|
|
941
|
+
type: "promo-grid",
|
|
942
|
+
order: 26,
|
|
943
|
+
enabled: true,
|
|
944
|
+
config: {
|
|
945
|
+
eyebrow: "FOUR GENERATIONS",
|
|
946
|
+
heading: "Pick your era",
|
|
947
|
+
banners: [
|
|
948
|
+
{
|
|
949
|
+
id: "promo-beyblade-x",
|
|
950
|
+
title: "Beyblade X",
|
|
951
|
+
ctaLabel: "Shop Beyblade X",
|
|
952
|
+
ctaUrl: "/categories/category-beyblade-x",
|
|
953
|
+
image: "/media/category-beyblade-x-image",
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
id: "promo-beyblade-burst",
|
|
957
|
+
title: "Burst",
|
|
958
|
+
ctaLabel: "Shop Burst",
|
|
959
|
+
ctaUrl: "/categories/category-beyblade-burst",
|
|
960
|
+
image: "/media/category-beyblade-burst-image",
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
id: "promo-beyblade-metal",
|
|
964
|
+
title: "Metal Fight",
|
|
965
|
+
ctaLabel: "Shop Metal Fight",
|
|
966
|
+
ctaUrl: "/categories/category-beyblade-metal",
|
|
967
|
+
image: "/media/category-beyblade-metal-image",
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
id: "promo-beyblade-original",
|
|
971
|
+
title: "The Originals",
|
|
972
|
+
ctaLabel: "Shop the originals",
|
|
973
|
+
ctaUrl: "/categories/category-beyblade-original",
|
|
974
|
+
image: "/media/category-beyblade-original-image",
|
|
975
|
+
},
|
|
976
|
+
],
|
|
977
|
+
},
|
|
978
|
+
createdAt: daysAgo(1),
|
|
979
|
+
updatedAt: daysAgo(1),
|
|
980
|
+
},
|
|
749
981
|
/*
|
|
750
982
|
* 🛑 `google-reviews` stays DELIBERATELY UNSEEDED — not an oversight, the
|
|
751
983
|
* same decision already made for `googleMapsApiKey`/`googlePlaceId` in
|
package/dist/seed/index.d.ts
CHANGED
|
@@ -86,7 +86,7 @@ export { productFeaturesSeedData } from "./product-features-seed-data";
|
|
|
86
86
|
export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./authenticity-knowledge-seed-data";
|
|
87
87
|
export { taxCodesSeedData } from "./tax-codes-seed-data";
|
|
88
88
|
export { offersSeedData } from "./offers-seed-data";
|
|
89
|
-
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData,
|
|
89
|
+
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
90
90
|
export type { SeedManifest, SeedManifestEntry, SeedCollectionName } from "./manifest";
|
|
91
91
|
export { SEED_MANIFEST } from "./manifest";
|
|
92
92
|
export type { FirestoreIndexConfig } from "./firestore-indexes";
|
package/dist/seed/index.js
CHANGED
|
@@ -95,7 +95,7 @@ export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHE
|
|
|
95
95
|
export { taxCodesSeedData } from "./tax-codes-seed-data.js";
|
|
96
96
|
export { offersSeedData } from "./offers-seed-data.js";
|
|
97
97
|
// S-STORE Extensions (Tier S-STORE) — 11 new collections
|
|
98
|
-
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData,
|
|
98
|
+
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data.js";
|
|
99
99
|
export { SEED_MANIFEST } from "./manifest.js";
|
|
100
100
|
export { mergeFirestoreIndices, generateMergedFirestoreIndexFile, } from "./firestore-indexes.js";
|
|
101
101
|
// Test utilities (Firestore emulator + PII assertion)
|
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" | "groupedListings" | "scammerProfiles" | "supportTickets" | "productFeatures" | "taxCodes" | "offers" | "couponUsage" | "claimedCoupons" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "
|
|
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" | "taxCodes" | "offers" | "couponUsage" | "claimedCoupons" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* name/id pairs without loading the full seed data payload.
|
|
6
6
|
* Auto-derived from the live seed data files — stays in sync automatically.
|
|
7
7
|
*/
|
|
8
|
-
import { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData,
|
|
8
|
+
import { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data.js";
|
|
9
9
|
// SB-UNI-C — brandsSeedData merged into categoriesSeedData.
|
|
10
10
|
import { categoriesSeedData } from "./categories-seed-data.js";
|
|
11
11
|
import { usersSeedData } from "./users-seed-data.js";
|
|
@@ -223,7 +223,6 @@ export const SEED_MANIFEST = {
|
|
|
223
223
|
moderationQueue: pick(asArr(moderationQueueSeedData)),
|
|
224
224
|
reports: pick(asArr(reportsSeedData)),
|
|
225
225
|
itemRequests: pick(asArr(itemRequestsSeedData).map((r) => ({ ...r, name: r.title ?? r.id }))),
|
|
226
|
-
storeWhatsAppConfig: pick(asArr(storeWhatsAppConfigSeedData)),
|
|
227
226
|
storeGoogleConfig: pick(asArr(storeGoogleConfigSeedData)),
|
|
228
227
|
// RBAC + admin notifications — no seed docs yet; manifest stays empty until populated.
|
|
229
228
|
roleOverrides: [],
|
|
@@ -2493,7 +2493,7 @@ export const modelCompositionSeedData = [
|
|
|
2493
2493
|
"slotKey": "blade-base",
|
|
2494
2494
|
"slotLabel": "BLADE BASE (BB)",
|
|
2495
2495
|
"partName": "Metal Sharp Base",
|
|
2496
|
-
"partId": "blade-base--
|
|
2496
|
+
"partId": "blade-base--blade-base"
|
|
2497
2497
|
}
|
|
2498
2498
|
],
|
|
2499
2499
|
"source": "gen1/plastic/flash-leopard-2.md",
|
|
@@ -6587,14 +6587,12 @@ export const modelCompositionSeedData = [
|
|
|
6587
6587
|
{
|
|
6588
6588
|
"slotKey": "disc",
|
|
6589
6589
|
"slotLabel": "FORGE DISC",
|
|
6590
|
-
"partName": "variable per combo"
|
|
6591
|
-
"partId": "disc--variable-per-combo"
|
|
6590
|
+
"partName": "variable per combo"
|
|
6592
6591
|
},
|
|
6593
6592
|
{
|
|
6594
6593
|
"slotKey": "performance-tip",
|
|
6595
6594
|
"slotLabel": "PERFORMANCE TIP",
|
|
6596
|
-
"partName": "variable per combo"
|
|
6597
|
-
"partId": "performance-tip--variable-per-combo"
|
|
6595
|
+
"partName": "variable per combo"
|
|
6598
6596
|
}
|
|
6599
6597
|
],
|
|
6600
6598
|
"source": "gen3/bu/draciel-fortress.md",
|
|
@@ -7415,7 +7413,7 @@ export const modelCompositionSeedData = [
|
|
|
7415
7413
|
"slotKey": "driver",
|
|
7416
7414
|
"slotLabel": "DRIVER",
|
|
7417
7415
|
"partName": "Destroy'",
|
|
7418
|
-
"partId": "driver--destroy
|
|
7416
|
+
"partId": "driver--destroy"
|
|
7419
7417
|
}
|
|
7420
7418
|
],
|
|
7421
7419
|
"source": "gen3/db/rage-longinus-s5.md"
|
|
@@ -7925,7 +7923,7 @@ export const modelCompositionSeedData = [
|
|
|
7925
7923
|
"slotKey": "driver",
|
|
7926
7924
|
"slotLabel": "PERFORMANCE DRIVER",
|
|
7927
7925
|
"partName": "Evolution'",
|
|
7928
|
-
"partId": "driver--evolution
|
|
7926
|
+
"partId": "driver--evolution"
|
|
7929
7927
|
}
|
|
7930
7928
|
],
|
|
7931
7929
|
"source": "gen3/superking/brave-valtryek.md"
|
|
@@ -7972,7 +7970,7 @@ export const modelCompositionSeedData = [
|
|
|
7972
7970
|
"slotKey": "driver",
|
|
7973
7971
|
"slotLabel": "DRIVER",
|
|
7974
7972
|
"partName": "Destroy'",
|
|
7975
|
-
"partId": "driver--destroy
|
|
7973
|
+
"partId": "driver--destroy"
|
|
7976
7974
|
}
|
|
7977
7975
|
],
|
|
7978
7976
|
"source": "gen3/superking/rage-longinus-d3a.md"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by `scripts/generate-parts-seed.mjs` — do not hand-edit.
|
|
3
|
+
*
|
|
4
|
+
* Chunk 0 of the part glossary. See `../part-glossary-seed-data.ts` for
|
|
5
|
+
* provenance and for why the chunks are separate FILES rather than separate
|
|
6
|
+
* consts in one file.
|
|
7
|
+
*/
|
|
8
|
+
import type { PartGlossaryDocument } from "../../features/parts/schemas/firestore";
|
|
9
|
+
export declare const glossaryChunk0: Partial<PartGlossaryDocument>[];
|