@mohasinac/appkit 4.53.0 → 4.53.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/client/scaffolds/AppShell.js +1 -1
- package/dist/_internal/server/features/auctions/og.d.ts +3 -1
- package/dist/_internal/server/features/auctions/og.js +3 -1
- package/dist/_internal/server/features/bundles/actions.js +1 -1
- package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
- package/dist/_internal/server/features/business-documents/download.js +91 -0
- package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
- package/dist/_internal/server/features/categories/adapters.js +10 -0
- package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
- package/dist/_internal/server/features/checkout/actions.js +106 -12
- package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
- package/dist/_internal/server/features/checkout/data.d.ts +22 -0
- package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
- package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
- package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
- package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
- package/dist/_internal/server/features/classified/metadata.js +1 -1
- package/dist/_internal/server/features/classified/og.d.ts +3 -1
- package/dist/_internal/server/features/classified/og.js +3 -1
- package/dist/_internal/server/features/digital-code/metadata.js +1 -1
- package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
- package/dist/_internal/server/features/digital-code/og.js +3 -1
- package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
- package/dist/_internal/server/features/digital-code/pool.js +19 -4
- package/dist/_internal/server/features/live/metadata.js +1 -1
- package/dist/_internal/server/features/live/og.d.ts +3 -1
- package/dist/_internal/server/features/live/og.js +3 -1
- package/dist/_internal/server/features/messages/actions.js +1 -1
- package/dist/_internal/server/features/parts/og.js +1 -1
- package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
- package/dist/_internal/server/features/pre-orders/og.js +3 -1
- package/dist/_internal/server/features/price-index/search.d.ts +18 -0
- package/dist/_internal/server/features/price-index/search.js +47 -7
- package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
- package/dist/_internal/server/features/prize-draws/og.js +3 -1
- package/dist/_internal/server/features/products/group-members.d.ts +26 -0
- package/dist/_internal/server/features/products/group-members.js +7 -1
- package/dist/_internal/server/features/products/og.d.ts +3 -1
- package/dist/_internal/server/features/products/og.js +3 -1
- package/dist/_internal/server/features/search/scoped-sources.d.ts +26 -0
- package/dist/_internal/server/features/search/scoped-sources.js +252 -0
- package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
- package/dist/_internal/server/features/search/search-everything.js +70 -20
- package/dist/_internal/server/features/seo/sitemap.js +6 -0
- package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
- package/dist/_internal/server/features/sticker-trace/adapters.d.ts +11 -0
- package/dist/_internal/server/features/sticker-trace/adapters.js +1 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +3 -1
- package/dist/_internal/server/features/sticker-trace/sheet-actions.js +32 -0
- package/dist/_internal/server/features/sticker-trace/storage.d.ts +20 -1
- package/dist/_internal/server/features/sticker-trace/storage.js +20 -1
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +16 -0
- package/dist/_internal/server/features/stores/index.d.ts +1 -0
- package/dist/_internal/server/features/stores/index.js +1 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
- package/dist/_internal/server/features/stores/tabs.js +122 -0
- package/dist/_internal/shared/checkout/rules/_defaults.js +0 -2
- package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
- package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
- package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
- package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
- package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
- package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
- package/dist/_internal/shared/checkout/rules/index.js +9 -0
- package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
- package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
- package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
- package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
- package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
- package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
- package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
- package/dist/_internal/shared/config/schema.d.ts +122 -0
- package/dist/_internal/shared/features/cart/schema.js +3 -2
- package/dist/_internal/shared/features/products/group-rules.d.ts +75 -0
- package/dist/_internal/shared/features/products/group-rules.js +142 -0
- package/dist/_internal/shared/listing-types/_registry.d.ts +24 -0
- package/dist/_internal/shared/listing-types/_registry.js +39 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/art/config.js +2 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/auction/config.js +2 -0
- package/dist/_internal/shared/listing-types/availability.js +48 -0
- package/dist/_internal/shared/listing-types/capabilities.js +19 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/classified/config.js +2 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +2 -0
- package/dist/_internal/shared/listing-types/feature-flags.js +1 -0
- package/dist/_internal/shared/listing-types/live/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/live/config.js +2 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +2 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +2 -0
- package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
- package/dist/_internal/shared/listing-types/spares/config.js +60 -0
- package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
- package/dist/_internal/shared/listing-types/spares/og.js +1 -0
- package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
- package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/standard/config.js +2 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +2 -0
- package/dist/_internal/shared/search/match.d.ts +11 -0
- package/dist/_internal/shared/search/match.js +2 -1
- package/dist/_internal/shared/search/to-groups.d.ts +52 -0
- package/dist/_internal/shared/search/to-groups.js +141 -0
- package/dist/client.d.ts +8 -2
- package/dist/client.js +4 -1
- package/dist/constants/api-endpoints.d.ts +39 -15
- package/dist/constants/api-endpoints.js +28 -5
- package/dist/constants/cache-invalidation.js +3 -1
- package/dist/constants/field-names.d.ts +6 -0
- package/dist/constants/field-names.js +6 -0
- package/dist/features/about/components/PolicyPageView.d.ts +22 -2
- package/dist/features/about/components/PolicyPageView.js +14 -2
- package/dist/features/about/components/PublicProfileView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +42 -2
- package/dist/features/account/components/NotificationBell.js +1 -1
- package/dist/features/account/hooks/useProfileStats.js +5 -1
- package/dist/features/addresses/repository/addresses.repository.d.ts +16 -0
- package/dist/features/addresses/repository/addresses.repository.js +21 -0
- package/dist/features/admin/actions/admin-actions.js +16 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +19 -2
- package/dist/features/admin/components/AdminNavigationView.js +1 -1
- package/dist/features/admin/components/AdminPageHeader.js +1 -1
- package/dist/features/admin/components/AdminProductEditorView.js +17 -2
- package/dist/features/admin/components/AdminSidebar.js +1 -1
- package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
- package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
- package/dist/features/admin/components/AdminSparesView.js +30 -0
- package/dist/features/admin/components/AdminUsersView.js +9 -7
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
- package/dist/features/admin/constants/filter-tabs.js +1 -0
- package/dist/features/admin/schemas/firestore.d.ts +26 -2
- package/dist/features/auctions/components/AuctionDetailPageView.js +4 -11
- package/dist/features/auth/repository/user.repository.d.ts +13 -0
- package/dist/features/auth/repository/user.repository.js +28 -0
- package/dist/features/auth/schemas/firestore.d.ts +2 -0
- package/dist/features/auth/schemas/firestore.js +2 -0
- package/dist/features/business-documents/repository/business-documents.repository.d.ts +58 -0
- package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
- package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
- package/dist/features/business-documents/schemas/firestore.js +75 -0
- package/dist/features/cart/actions/cart-actions.js +83 -6
- package/dist/features/cart/repository/cart.repository.js +32 -4
- package/dist/features/cart/schemas/firestore.d.ts +20 -0
- package/dist/features/cart/schemas/index.d.ts +2 -2
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +1 -1
- package/dist/features/categories/api/[id]/price-guidance/route.d.ts +42 -0
- package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
- package/dist/features/categories/components/BrandDetailPageView.js +19 -3
- package/dist/features/categories/components/BrandDetailTabs.js +10 -0
- package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
- package/dist/features/categories/components/CategoryDetailPageView.js +141 -14
- package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
- package/dist/features/categories/components/CategoryGrid.js +10 -1
- package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
- package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
- package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
- package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
- package/dist/features/categories/constants/category-tabs.d.ts +20 -25
- package/dist/features/categories/constants/category-tabs.js +22 -39
- package/dist/features/categories/repository/categories.repository.d.ts +12 -0
- package/dist/features/categories/repository/categories.repository.js +20 -0
- package/dist/features/categories/schemas/firestore.d.ts +22 -1
- package/dist/features/categories/schemas/firestore.js +10 -0
- package/dist/features/categories/schemas/index.d.ts +6 -0
- package/dist/features/categories/schemas/index.js +2 -0
- package/dist/features/categories/types/index.d.ts +8 -0
- package/dist/features/categories/utils/taxonomy-visual.d.ts +16 -3
- package/dist/features/categories/utils/taxonomy-visual.js +26 -10
- package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
- package/dist/features/contact/components/ContactPageView.d.ts +33 -1
- package/dist/features/contact/components/ContactPageView.js +58 -28
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
- package/dist/features/grouped/components/GroupedListingDetailView.js +9 -1
- package/dist/features/grouped/schemas/firestore.d.ts +5 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
- package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
- package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
- package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
- package/dist/features/homepage/components/HowItWorksSection.js +4 -4
- package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
- package/dist/features/homepage/components/PromoGrid.js +12 -3
- package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/index.d.ts +0 -20
- package/dist/features/homepage/components/index.js +0 -11
- package/dist/features/homepage/index.d.ts +0 -2
- package/dist/features/homepage/index.js +0 -2
- package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
- package/dist/features/homepage/lib/section-renderer.js +202 -58
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
- package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
- package/dist/features/homepage/schemas/firestore.d.ts +106 -3
- package/dist/features/homepage/schemas/firestore.js +32 -2
- package/dist/features/homepage/schemas/index.d.ts +36 -7
- package/dist/features/homepage/schemas/index.js +39 -27
- package/dist/features/homepage/server.d.ts +0 -3
- package/dist/features/homepage/server.js +0 -3
- package/dist/features/homepage/types/index.d.ts +0 -47
- package/dist/features/homepage/types/index.js +49 -0
- package/dist/features/layout/AppLayoutShell.js +1 -1
- package/dist/features/layout/BottomNavItem.js +1 -1
- package/dist/features/layout/BottomSheet.js +1 -1
- package/dist/features/layout/TitleBarLayout.js +1 -1
- package/dist/features/live/components/LiveItemDetailPageView.js +4 -9
- package/dist/features/media/hooks/useMedia.js +17 -0
- package/dist/features/media/repository/media-assets.repository.d.ts +46 -0
- package/dist/features/media/repository/media-assets.repository.js +31 -0
- package/dist/features/media/trust-signals.d.ts +85 -0
- package/dist/features/media/trust-signals.js +126 -0
- package/dist/features/parts/components/PartDetailPageView.d.ts +14 -1
- package/dist/features/parts/components/PartDetailPageView.js +2 -2
- package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
- package/dist/features/parts/components/PartsIndexPageView.js +2 -2
- package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
- package/dist/features/parts/components/PartsSearchBox.js +57 -0
- package/dist/features/parts/schemas/firestore.d.ts +149 -3
- package/dist/features/parts/schemas/firestore.js +184 -0
- package/dist/features/payments/repository/payout.repository.d.ts +15 -0
- package/dist/features/payments/repository/payout.repository.js +21 -0
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -11
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +1 -1
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +3 -1
- package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
- package/dist/features/products/components/CompareOverlay.d.ts +18 -1
- package/dist/features/products/components/CompareOverlay.js +21 -2
- package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
- package/dist/features/products/components/CustomSectionTabContent.js +29 -3
- package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
- package/dist/features/products/components/GroupMemberPicker.js +46 -8
- package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
- package/dist/features/products/components/GroupSettingsPanel.js +91 -3
- package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
- package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
- package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
- package/dist/features/products/components/ProductDetailPageView.js +74 -15
- package/dist/features/products/components/ProductForm.d.ts +13 -1
- package/dist/features/products/components/ProductForm.js +16 -2
- package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
- package/dist/features/products/components/ProductsIndexListing.js +3 -3
- package/dist/features/products/components/ShowGroupSection.js +15 -2
- package/dist/features/products/components/SparesListView.d.ts +7 -0
- package/dist/features/products/components/SparesListView.js +39 -0
- package/dist/features/products/constants/action-defs.d.ts +1 -0
- package/dist/features/products/constants/action-defs.js +1 -0
- package/dist/features/products/repository/products.repository.d.ts +98 -0
- package/dist/features/products/repository/products.repository.js +235 -17
- package/dist/features/products/schemas/firestore.d.ts +97 -4
- package/dist/features/products/schemas/firestore.js +104 -0
- package/dist/features/products/schemas/index.d.ts +10 -19
- package/dist/features/products/schemas/index.js +23 -6
- package/dist/features/products/types/index.d.ts +45 -1
- package/dist/features/products/utils/group-member-image.d.ts +39 -0
- package/dist/features/products/utils/group-member-image.js +3 -0
- package/dist/features/products/utils/listing-badge-variant.js +4 -0
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/scams/components/ScamProfileView.js +1 -1
- package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
- package/dist/features/search/components/EntityTypeahead.js +92 -0
- package/dist/features/search/components/Search.d.ts +12 -1
- package/dist/features/search/components/Search.js +47 -3
- package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
- package/dist/features/search/components/SearchFacetRail.js +92 -0
- package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
- package/dist/features/search/components/SearchResultsClient.js +103 -0
- package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
- package/dist/features/search/components/SearchResultsPageView.js +2 -2
- package/dist/features/search/components/index.d.ts +0 -6
- package/dist/features/search/components/index.js +0 -3
- package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
- package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
- package/dist/features/search/hooks/useScopedSearch.js +114 -0
- package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
- package/dist/features/search/hooks/useSiteSearch.js +149 -0
- package/dist/features/search/index.d.ts +0 -4
- package/dist/features/search/index.js +0 -4
- package/dist/features/search/manifest.d.ts +12 -0
- package/dist/features/search/manifest.js +17 -2
- package/dist/features/search/server.d.ts +0 -3
- package/dist/features/search/server.js +0 -3
- package/dist/features/seller/components/SellerListingTypeView.d.ts +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +20 -0
- package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -14
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductShell.js +2 -1
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
- package/dist/features/seller/components/SellerSparesView.js +6 -0
- package/dist/features/seller/components/index.d.ts +2 -0
- package/dist/features/seller/components/index.js +1 -0
- package/dist/features/shell/CommandPalette.js +1 -1
- package/dist/features/sticker-trace/schemas/firestore.d.ts +19 -0
- package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
- package/dist/features/stores/components/StoreHeader.js +1 -2
- package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
- package/dist/features/stores/components/StoreSparesPageView.js +48 -0
- package/dist/features/stores/schemas/firestore.d.ts +19 -0
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +280 -45
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +3 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -0
- package/dist/features/tester/seed-data/authored/index.js +16 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -0
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +5 -4
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +372 -18
- package/dist/index.d.ts +17 -57
- package/dist/index.js +35 -96
- package/dist/next/routing/route-map.d.ts +42 -1
- package/dist/next/routing/route-map.js +45 -0
- package/dist/providers/db-firebase/base.repository.d.ts +22 -0
- package/dist/providers/db-firebase/base.repository.js +36 -0
- package/dist/schemas/registry.d.ts +15 -6
- package/dist/security/blind-index-tokens.d.ts +54 -0
- package/dist/security/blind-index-tokens.js +152 -0
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/settings-encryption.d.ts +35 -0
- package/dist/security/settings-encryption.js +91 -0
- package/dist/seed/_helpers/brand-rows.js +38 -14
- package/dist/seed/_helpers/category-forest.js +73 -7
- package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
- package/dist/seed/_helpers/category-images-generated.js +81 -6
- package/dist/seed/_helpers/category-models.d.ts +1 -1
- package/dist/seed/_helpers/category-models.js +7 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
- package/dist/seed/_helpers/category-parts.d.ts +1 -1
- package/dist/seed/_helpers/category-parts.js +50 -2
- package/dist/seed/_helpers/character-features.d.ts +1 -1
- package/dist/seed/_helpers/character-features.js +2 -1
- package/dist/seed/_helpers/franchise-rows.js +10 -2
- package/dist/seed/_helpers/media.d.ts +47 -0
- package/dist/seed/_helpers/media.js +34 -0
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +49 -5
- package/dist/seed/authenticity-knowledge-seed-data.js +10001 -549
- package/dist/seed/categories-seed-data.js +124 -20
- package/dist/seed/grouped-listings-seed-data.js +16 -0
- package/dist/seed/homepage-sections-seed-data.js +94 -5
- package/dist/seed/index.d.ts +2 -3
- package/dist/seed/index.js +2 -2
- package/dist/seed/manifest.js +3 -0
- package/dist/seed/media-assets-seed-data.d.ts +1 -1
- package/dist/seed/media-assets-seed-data.js +746 -196
- package/dist/seed/model-composition-seed-data.js +122 -6
- package/dist/seed/part-glossary-seed-data.d.ts +1 -1
- package/dist/seed/part-glossary-seed-data.js +37219 -463
- package/dist/seed/products-art-seed-data.js +7 -18
- package/dist/seed/products-auctions-seed-data.js +56 -47
- package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
- package/dist/seed/products-beyblade-x-seed-data.js +441 -0
- package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
- package/dist/seed/products-catalogue-seed-data.js +1500 -1240
- package/dist/seed/products-classifieds-seed-data.js +9 -27
- package/dist/seed/products-digital-codes-seed-data.js +9 -18
- package/dist/seed/products-live-items-seed-data.js +5 -13
- package/dist/seed/products-preorders-seed-data.js +67 -33
- package/dist/seed/products-prize-draws-seed-data.js +8 -17
- package/dist/seed/products-spares-seed-data.d.ts +2 -0
- package/dist/seed/products-spares-seed-data.js +368 -0
- package/dist/seed/products-standard-seed-data.js +39 -126
- package/dist/seed/products-stickers-seed-data.js +59 -15
- package/dist/seed/site-settings-seed-data.js +8 -0
- package/dist/seo/json-ld.d.ts +25 -0
- package/dist/seo/json-ld.js +28 -0
- package/dist/server-entry.d.ts +3 -1
- package/dist/server-entry.js +2 -2
- package/dist/server.d.ts +9 -9
- package/dist/server.js +27 -25
- package/dist/styles.css +202 -1
- package/dist/tailwind-input.css +31 -17
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Accordion.js +1 -1
- package/dist/ui/components/Breadcrumb.js +1 -1
- package/dist/ui/components/DetailPageGallery.js +0 -2
- package/dist/ui/components/DetailPageHero.js +0 -1
- package/dist/ui/components/DetailPageTabs.js +1 -1
- package/dist/ui/components/Divider.js +3 -3
- package/dist/ui/components/GatedPrice.js +5 -1
- package/dist/ui/components/HorizontalScroller.js +1 -1
- package/dist/ui/components/ListingLayout.js +3 -3
- package/dist/ui/components/MediaTabs.style.css +81 -0
- package/dist/ui/components/Pagination.js +1 -1
- package/dist/ui/components/PendingValue.d.ts +45 -0
- package/dist/ui/components/PendingValue.js +7 -0
- package/dist/ui/components/Radio.style.css +119 -0
- package/dist/ui/components/RatingDisplay.js +2 -2
- package/dist/ui/components/SettingsSection.js +0 -2
- package/dist/ui/components/SiteLogo.js +3 -0
- package/dist/ui/components/SiteMark.js +3 -0
- package/dist/ui/components/SortDropdown.js +1 -1
- package/dist/ui/components/SpecTable.d.ts +58 -0
- package/dist/ui/components/SpecTable.js +8 -0
- package/dist/ui/components/StarRating.js +1 -3
- package/dist/ui/components/SummaryCard.js +1 -1
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/icons/icon-registry.d.ts +1 -0
- package/dist/ui/icons/icon-registry.js +9 -1
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.js +2 -0
- package/dist/utils/search-txt-query.d.ts +12 -0
- package/dist/utils/search-txt-query.js +12 -0
- package/package.json +1 -1
- package/scripts/dedupe-peer-deps.mjs +18 -0
- package/scripts/seed-cli.mjs +135 -26
- package/scripts/verify-css-build.mjs +118 -37
- package/dist/_internal/server/features/search/actions.d.ts +0 -7
- package/dist/_internal/server/features/search/actions.js +0 -21
- package/dist/_internal/server/features/search/data.d.ts +0 -15
- package/dist/_internal/server/features/search/data.js +0 -18
- package/dist/_internal/server/features/search/index.d.ts +0 -3
- package/dist/_internal/server/features/search/index.js +0 -2
- package/dist/features/homepage/api/[id]/route.d.ts +0 -23
- package/dist/features/homepage/api/[id]/route.js +0 -103
- package/dist/features/homepage/api/route.d.ts +0 -14
- package/dist/features/homepage/api/route.js +0 -140
- package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
- package/dist/features/homepage/api/sections/[id]/route.js +0 -95
- package/dist/features/homepage/api/sections/route.d.ts +0 -13
- package/dist/features/homepage/api/sections/route.js +0 -82
- package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
- package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
- package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
- package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
- package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
- package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
- package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
- package/dist/features/homepage/components/HeroBanner.js +0 -43
- package/dist/features/homepage/components/HeroSection.d.ts +0 -7
- package/dist/features/homepage/components/HeroSection.js +0 -6
- package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
- package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
- package/dist/features/homepage/components/HomepageView.d.ts +0 -25
- package/dist/features/homepage/components/HomepageView.js +0 -5
- package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
- package/dist/features/homepage/components/NewsletterBanner.js +0 -37
- package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
- package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
- package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
- package/dist/features/homepage/components/TrustBadges.js +0 -46
- package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
- package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
- package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
- package/dist/features/homepage/hooks/useHomepage.js +0 -17
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
- package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
- package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
- package/dist/features/homepage/repository/homepage.repository.js +0 -25
- package/dist/features/search/actions/index.d.ts +0 -1
- package/dist/features/search/actions/index.js +0 -1
- package/dist/features/search/actions/search-actions.d.ts +0 -18
- package/dist/features/search/actions/search-actions.js +0 -43
- package/dist/features/search/api/route.d.ts +0 -22
- package/dist/features/search/api/route.js +0 -128
- package/dist/features/search/columns/index.d.ts +0 -17
- package/dist/features/search/columns/index.js +0 -49
- package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
- package/dist/features/search/components/SearchFiltersRow.js +0 -21
- package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
- package/dist/features/search/components/SearchResultsSection.js +0 -35
- package/dist/features/search/components/SearchView.d.ts +0 -27
- package/dist/features/search/components/SearchView.js +0 -8
- package/dist/features/search/hooks/useSearch.d.ts +0 -21
- package/dist/features/search/hooks/useSearch.js +0 -33
- package/dist/features/search/repository/search.repository.d.ts +0 -14
- package/dist/features/search/repository/search.repository.js +0 -59
- package/dist/features/search/schemas/index.d.ts +0 -70
- package/dist/features/search/schemas/index.js +0 -36
- package/dist/features/search/types/index.d.ts +0 -48
- package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
- package/dist/features/stores/components/StoreScopedSearch.js +0 -27
- package/dist/seed/defaults/homepage-sections.d.ts +0 -2
- package/dist/seed/defaults/homepage-sections.js +0 -60
- package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
- package/dist/seed/factories/homepage-section.factory.js +0 -13
- /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Real, wiki-verified Beyblade X listings under `store-letitrip-official` — built
|
|
3
|
+
* 2026-10-19 so the production catalogue has genuinely purchasable products ahead of
|
|
4
|
+
* PhonePe merchant registration, which requires at least one real listing. Every name,
|
|
5
|
+
* product code, release date and image is sourced from beyblade.fandom.com (see
|
|
6
|
+
* docs/research/bey-corpus-2026-10/ for the corpus and image provenance) — nothing here
|
|
7
|
+
* is invented. `scripts/fetch-product-images.mjs` + `scripts/upload-product-images.mjs`
|
|
8
|
+
* are the reproducible pipeline that produced the `/media/product-*-image` references.
|
|
9
|
+
*
|
|
10
|
+
* Two of five standalone tops (CobaltDrake, PhoenixWing) are documented twice in the
|
|
11
|
+
* research corpus under a slug collision and sit in its `review` bucket rather than
|
|
12
|
+
* `canonical` — NOT because they are two competing retail releases, but because the two
|
|
13
|
+
* corpus documents describing each have different completeness (one has the anime
|
|
14
|
+
* owner's name, the other has the product code). Both describe the same real product;
|
|
15
|
+
* this file uses the fuller description of each.
|
|
16
|
+
*
|
|
17
|
+
* The BX-53 All-in-One Set demonstrates the PRODUCT GROUP feature (`isGroupParent` /
|
|
18
|
+
* `groupId` / `groupChildSlugs` on `ProductDocument` — see CLAUDE.md "Bundles vs
|
|
19
|
+
* Product Groups vs Grouped Listings"): one parent listing (the boxed set) plus six
|
|
20
|
+
* child listings, each independently stocked and independently purchasable. Stock is
|
|
21
|
+
* NOT pooled — selling the parent box does not decrement any child's `stockQuantity`,
|
|
22
|
+
* and vice versa. This is also the first STATIC SEED fixture of this shape in the
|
|
23
|
+
* codebase (confirmed by research — the only prior producer of `isGroupParent` is the
|
|
24
|
+
* live sticker-trace "promote sheet to listings" code path, never a seed file), so there
|
|
25
|
+
* was no existing template; cross-referenced ids were verified against the real
|
|
26
|
+
* `products.repository.ts` field contract rather than guessed.
|
|
27
|
+
*
|
|
28
|
+
* Two of the group's six children reuse a LEAF CATEGORY a standalone listing in this
|
|
29
|
+
* same file already occupies (`category-aeropegasus-3-70a`, `category-x-xtreme-
|
|
30
|
+
* stadiums`) — this is correct, not a collision: the box's AeroPegasus is a "Double
|
|
31
|
+
* Metal Coat" colourway exclusive to the set, distinct from the standalone AeroPegasus
|
|
32
|
+
* (the Rare Bey Get Battle Prize Booster colourway), and the box's stadium is a "Clear
|
|
33
|
+
* Black×Green" colourway distinct from the standard-release Xtreme Stadium. Two
|
|
34
|
+
* differently-priced, differently-described, independently-stocked products sharing one
|
|
35
|
+
* taxonomy leaf is the correct way to model "same model line, different real release."
|
|
36
|
+
*
|
|
37
|
+
* WHAT: Exports 12 standard products with listingType:"standard" — 5 standalone (4 tops + 1
|
|
38
|
+
* stadium) and 7 forming one product group (1 parent + 6 children).
|
|
39
|
+
*
|
|
40
|
+
* EXPORTS:
|
|
41
|
+
* productsBeybladeXSeedData — Array of 12 standard products
|
|
42
|
+
*
|
|
43
|
+
* @tag domain:products,catalog
|
|
44
|
+
* @tag layer:seed
|
|
45
|
+
* @tag pattern:none
|
|
46
|
+
* @tag access:server-only
|
|
47
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
48
|
+
* @tag sideEffects:none
|
|
49
|
+
*/
|
|
50
|
+
import { seedGallery } from "./_helpers/media.js";
|
|
51
|
+
import { PRODUCT_FIELDS } from "../constants/field-names.js";
|
|
52
|
+
import { withFinalSale } from "./_helpers/final-sale-fixtures.js";
|
|
53
|
+
import { withDerivedCategoryNames } from "./_helpers/category-names.js";
|
|
54
|
+
const STORE_ID = "store-letitrip-official";
|
|
55
|
+
const STORE_NAME = "LetItRip Official";
|
|
56
|
+
const BRAND_SLUG = "brand-takara-tomy";
|
|
57
|
+
const BRAND = "Takara-Tomy";
|
|
58
|
+
const _raw = [
|
|
59
|
+
// ===== Standalone tops =====
|
|
60
|
+
{
|
|
61
|
+
id: "product-beyblade-x-aeropegasus-3-70a",
|
|
62
|
+
slug: "product-beyblade-x-aeropegasus-3-70a",
|
|
63
|
+
barcodeId: "LIR-BEY-X-001",
|
|
64
|
+
title: "Beyblade X AeroPegasus 3-70A",
|
|
65
|
+
description: "AeroPegasus 3-70A, an Attack-type Beyblade X top — the Rare Bey Get Battle mobile-app prize colourway, sold new in box. Previously obtainable only as a limited app reward; this is the collector-premium release, distinct from the Double Metal Coat colourway included in the BX-53 All-in-One Set (listed separately).",
|
|
66
|
+
categorySlugs: ["category-aeropegasus-3-70a"],
|
|
67
|
+
brandSlug: BRAND_SLUG,
|
|
68
|
+
brand: BRAND,
|
|
69
|
+
price: 20000,
|
|
70
|
+
allowOffers: true,
|
|
71
|
+
minOfferPercent: 70,
|
|
72
|
+
currency: "INR",
|
|
73
|
+
stockQuantity: 2,
|
|
74
|
+
availableQuantity: 2,
|
|
75
|
+
isSold: false,
|
|
76
|
+
mainImage: "/media/product-aeropegasus-3-70a-image",
|
|
77
|
+
images: seedGallery("/media/product-aeropegasus-3-70a-image"),
|
|
78
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
79
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
80
|
+
featured: true,
|
|
81
|
+
tags: ["attack-type", "rare-bey", "prize-exclusive"],
|
|
82
|
+
storeId: STORE_ID,
|
|
83
|
+
storeName: STORE_NAME,
|
|
84
|
+
createdAt: new Date("2026-10-19"),
|
|
85
|
+
updatedAt: new Date("2026-10-19"),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "product-beyblade-x-valkyrievolt-s4-70v",
|
|
89
|
+
slug: "product-beyblade-x-valkyrievolt-s4-70v",
|
|
90
|
+
barcodeId: "LIR-BEY-X-002",
|
|
91
|
+
title: "Beyblade X ValkyrieVolt S4-70V",
|
|
92
|
+
description: "ValkyrieVolt S4-70V, a Custom Line (CX) Beyblade X top. The CX Blade splits into a Lock Chip, a Main Blade and an Assist Blade, giving one purchase several distinct build combinations. Sold new in box.",
|
|
93
|
+
categorySlugs: ["category-valkyrievolt-s4-70v"],
|
|
94
|
+
brandSlug: BRAND_SLUG,
|
|
95
|
+
brand: BRAND,
|
|
96
|
+
price: 10500,
|
|
97
|
+
allowOffers: true,
|
|
98
|
+
minOfferPercent: 70,
|
|
99
|
+
currency: "INR",
|
|
100
|
+
stockQuantity: 3,
|
|
101
|
+
availableQuantity: 3,
|
|
102
|
+
isSold: false,
|
|
103
|
+
mainImage: "/media/product-valkyrievolt-s4-70v-image",
|
|
104
|
+
images: seedGallery("/media/product-valkyrievolt-s4-70v-image"),
|
|
105
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
106
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
107
|
+
featured: true,
|
|
108
|
+
tags: ["custom-line", "cx"],
|
|
109
|
+
storeId: STORE_ID,
|
|
110
|
+
storeName: STORE_NAME,
|
|
111
|
+
createdAt: new Date("2026-10-19"),
|
|
112
|
+
updatedAt: new Date("2026-10-19"),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: "product-beyblade-x-cobaltdrake-4-60f",
|
|
116
|
+
slug: "product-beyblade-x-cobaltdrake-4-60f",
|
|
117
|
+
barcodeId: "LIR-BEY-X-003",
|
|
118
|
+
title: "Beyblade X CobaltDrake 4-60F",
|
|
119
|
+
description: "CobaltDrake 4-60F (BX-00), an Attack-type Basic Line top released as a Rare Bey Get Battle prize booster in September 2023. In the anime, piloted by Khrome Ryugu. Sold new in box.",
|
|
120
|
+
categorySlugs: ["category-x-basic"],
|
|
121
|
+
brandSlug: BRAND_SLUG,
|
|
122
|
+
brand: BRAND,
|
|
123
|
+
price: 17500,
|
|
124
|
+
allowOffers: true,
|
|
125
|
+
minOfferPercent: 70,
|
|
126
|
+
currency: "INR",
|
|
127
|
+
stockQuantity: 2,
|
|
128
|
+
availableQuantity: 2,
|
|
129
|
+
isSold: false,
|
|
130
|
+
mainImage: "/media/product-cobaltdrake-4-60f-image",
|
|
131
|
+
images: seedGallery("/media/product-cobaltdrake-4-60f-image"),
|
|
132
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
133
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
134
|
+
featured: true,
|
|
135
|
+
tags: ["attack-type", "rare-bey", "prize-exclusive"],
|
|
136
|
+
storeId: STORE_ID,
|
|
137
|
+
storeName: STORE_NAME,
|
|
138
|
+
createdAt: new Date("2026-10-19"),
|
|
139
|
+
updatedAt: new Date("2026-10-19"),
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: "product-beyblade-x-phoenixwing-9-60gf",
|
|
143
|
+
slug: "product-beyblade-x-phoenixwing-9-60gf",
|
|
144
|
+
barcodeId: "LIR-BEY-X-004",
|
|
145
|
+
title: "Beyblade X PhoenixWing 9-60GF",
|
|
146
|
+
description: "PhoenixWing 9-60GF (BX-23), a Basic Line Beyblade X booster released December 2023. In the anime, the signature top of Blaze Fujiwara, designer of Yggdrasil Inc. Originally Attack-classed; later reclassified Stamina in the UX era. Sold new in box.",
|
|
147
|
+
categorySlugs: ["category-x-basic"],
|
|
148
|
+
brandSlug: BRAND_SLUG,
|
|
149
|
+
brand: BRAND,
|
|
150
|
+
price: 2500,
|
|
151
|
+
allowOffers: true,
|
|
152
|
+
minOfferPercent: 70,
|
|
153
|
+
currency: "INR",
|
|
154
|
+
stockQuantity: 6,
|
|
155
|
+
availableQuantity: 6,
|
|
156
|
+
isSold: false,
|
|
157
|
+
mainImage: "/media/product-phoenixwing-9-60gf-image",
|
|
158
|
+
images: seedGallery("/media/product-phoenixwing-9-60gf-image"),
|
|
159
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
160
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
161
|
+
tags: ["booster"],
|
|
162
|
+
storeId: STORE_ID,
|
|
163
|
+
storeName: STORE_NAME,
|
|
164
|
+
createdAt: new Date("2026-10-19"),
|
|
165
|
+
updatedAt: new Date("2026-10-19"),
|
|
166
|
+
},
|
|
167
|
+
// ===== Standalone stadium =====
|
|
168
|
+
{
|
|
169
|
+
id: "product-beyblade-x-xtreme-stadium-bx-10",
|
|
170
|
+
slug: "product-beyblade-x-xtreme-stadium-bx-10",
|
|
171
|
+
barcodeId: "LIR-BEY-X-005",
|
|
172
|
+
title: "Beyblade X Xtreme Stadium (BX-10)",
|
|
173
|
+
description: "The BX-10 Xtreme Stadium — the standard 1v1 arena for Beyblade X, released July 2023. Its raised Xtreme Line rail is what the whole X generation is tuned around: a top that reaches and holds the rail accelerates along it (the Xtreme Dash). The tournament-standard stadium for both Beyblade Battle Base (B4) and World Beyblade Organization (WBO) play. Sold new.",
|
|
174
|
+
categorySlugs: ["category-x-xtreme-stadiums"],
|
|
175
|
+
brandSlug: BRAND_SLUG,
|
|
176
|
+
brand: BRAND,
|
|
177
|
+
price: 4500,
|
|
178
|
+
allowOffers: true,
|
|
179
|
+
minOfferPercent: 70,
|
|
180
|
+
currency: "INR",
|
|
181
|
+
stockQuantity: 4,
|
|
182
|
+
availableQuantity: 4,
|
|
183
|
+
isSold: false,
|
|
184
|
+
mainImage: "/media/product-xtreme-stadium-bx-10-image",
|
|
185
|
+
images: seedGallery("/media/product-xtreme-stadium-bx-10-image"),
|
|
186
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
187
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
188
|
+
featured: true,
|
|
189
|
+
tags: ["stadium", "tournament-standard"],
|
|
190
|
+
storeId: STORE_ID,
|
|
191
|
+
storeName: STORE_NAME,
|
|
192
|
+
createdAt: new Date("2026-10-19"),
|
|
193
|
+
updatedAt: new Date("2026-10-19"),
|
|
194
|
+
},
|
|
195
|
+
// ===== BX-53 All-in-One Set — Product Group parent =====
|
|
196
|
+
{
|
|
197
|
+
id: "product-beyblade-x-bx-53-all-in-one-set",
|
|
198
|
+
slug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
199
|
+
barcodeId: "LIR-BEY-X-006",
|
|
200
|
+
title: "Beyblade X BX-53 All-in-One Set",
|
|
201
|
+
description: "The BX-53 All-in-One Set — Takara Tomy's deluxe Beyblade X starter box, released October 2026 at ¥7,480. One box, three ready-to-battle tops (Attack/Stamina/Defense), two launchers and a dedicated stadium: everything needed to go from first battle to part customisation. Every item in the box is also listed individually below — pick exactly what you want, buy the complete set, or mix and match. Buying this box does not affect the stock of the individual listings, and vice versa.",
|
|
202
|
+
categorySlugs: ["category-beyblade-x"],
|
|
203
|
+
brandSlug: BRAND_SLUG,
|
|
204
|
+
brand: BRAND,
|
|
205
|
+
price: 12500,
|
|
206
|
+
allowOffers: true,
|
|
207
|
+
minOfferPercent: 70,
|
|
208
|
+
currency: "INR",
|
|
209
|
+
stockQuantity: 3,
|
|
210
|
+
availableQuantity: 3,
|
|
211
|
+
isSold: false,
|
|
212
|
+
mainImage: "/media/product-bx-53-box-image",
|
|
213
|
+
images: seedGallery("/media/product-bx-53-box-image"),
|
|
214
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
215
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
216
|
+
featured: true,
|
|
217
|
+
tags: ["starter-set", "all-in-one", "deluxe"],
|
|
218
|
+
storeId: STORE_ID,
|
|
219
|
+
storeName: STORE_NAME,
|
|
220
|
+
createdAt: new Date("2026-10-19"),
|
|
221
|
+
updatedAt: new Date("2026-10-19"),
|
|
222
|
+
// ── Product Group (parent) ──
|
|
223
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
224
|
+
isGroupParent: true,
|
|
225
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
226
|
+
groupChildSlugs: [
|
|
227
|
+
"product-beyblade-x-bx-53-aeropegasus-dmc",
|
|
228
|
+
"product-beyblade-x-bx-53-wizardarrow-v2",
|
|
229
|
+
"product-beyblade-x-bx-53-knightshield-v2",
|
|
230
|
+
"product-beyblade-x-bx-53-winder-launcher",
|
|
231
|
+
"product-beyblade-x-bx-53-string-launcher",
|
|
232
|
+
"product-beyblade-x-bx-53-xtreme-stadium-variant",
|
|
233
|
+
],
|
|
234
|
+
// No groupMinMembers/groupMaxMembers/groupRequiredMemberIds/groupMaxUnitsPerMember —
|
|
235
|
+
// absent means unrestricted. This is deliberately OPEN pick-and-choose: a
|
|
236
|
+
// buyer may select any subset of the six children in any quantity, which
|
|
237
|
+
// is the entire distinction from a Bundle (all-or-nothing, fixed price).
|
|
238
|
+
},
|
|
239
|
+
// ===== BX-53 All-in-One Set — Product Group children =====
|
|
240
|
+
{
|
|
241
|
+
id: "product-beyblade-x-bx-53-aeropegasus-dmc",
|
|
242
|
+
slug: "product-beyblade-x-bx-53-aeropegasus-dmc",
|
|
243
|
+
barcodeId: "LIR-BEY-X-007",
|
|
244
|
+
title: "AeroPegasus 3-70A (Double Metal Coat) — BX-53 Set Component",
|
|
245
|
+
description: "AeroPegasus 3-70A in the Double Metal Coat finish — the colourway exclusive to the BX-53 All-in-One Set, distinct from the Rare Bey Get Battle prize-app colourway (listed separately). Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
246
|
+
categorySlugs: ["category-aeropegasus-3-70a"],
|
|
247
|
+
brandSlug: BRAND_SLUG,
|
|
248
|
+
brand: BRAND,
|
|
249
|
+
price: 7500,
|
|
250
|
+
allowOffers: true,
|
|
251
|
+
minOfferPercent: 70,
|
|
252
|
+
currency: "INR",
|
|
253
|
+
stockQuantity: 5,
|
|
254
|
+
availableQuantity: 5,
|
|
255
|
+
isSold: false,
|
|
256
|
+
mainImage: "/media/product-bx-53-aeropegasus-dmc-image",
|
|
257
|
+
images: seedGallery("/media/product-bx-53-aeropegasus-dmc-image"),
|
|
258
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
259
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
260
|
+
tags: ["attack-type", "bx-53-component", "double-metal-coat"],
|
|
261
|
+
storeId: STORE_ID,
|
|
262
|
+
storeName: STORE_NAME,
|
|
263
|
+
createdAt: new Date("2026-10-19"),
|
|
264
|
+
updatedAt: new Date("2026-10-19"),
|
|
265
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
266
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
267
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: "product-beyblade-x-bx-53-wizardarrow-v2",
|
|
271
|
+
slug: "product-beyblade-x-bx-53-wizardarrow-v2",
|
|
272
|
+
barcodeId: "LIR-BEY-X-008",
|
|
273
|
+
title: "WizardArrow 4-80B Ver.2.0 — BX-53 Set Component",
|
|
274
|
+
description: "WizardArrow 4-80B Version 2.0, the Stamina-type top from the BX-53 All-in-One Set. The Ver.2.0 Blade is re-tuned over the original release: Attack 17 (was 15), Defense 33 (was 30), Stamina 60 (was 55). Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
275
|
+
categorySlugs: ["category-wizardarrow-4-80b"],
|
|
276
|
+
brandSlug: BRAND_SLUG,
|
|
277
|
+
brand: BRAND,
|
|
278
|
+
price: 1500,
|
|
279
|
+
allowOffers: true,
|
|
280
|
+
minOfferPercent: 70,
|
|
281
|
+
currency: "INR",
|
|
282
|
+
stockQuantity: 8,
|
|
283
|
+
availableQuantity: 8,
|
|
284
|
+
isSold: false,
|
|
285
|
+
mainImage: "/media/product-bx-53-wizardarrow-v2-image",
|
|
286
|
+
images: seedGallery("/media/product-bx-53-wizardarrow-v2-image"),
|
|
287
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
288
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
289
|
+
tags: ["stamina-type", "bx-53-component", "ver-2"],
|
|
290
|
+
storeId: STORE_ID,
|
|
291
|
+
storeName: STORE_NAME,
|
|
292
|
+
createdAt: new Date("2026-10-19"),
|
|
293
|
+
updatedAt: new Date("2026-10-19"),
|
|
294
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
295
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
296
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
id: "product-beyblade-x-bx-53-knightshield-v2",
|
|
300
|
+
slug: "product-beyblade-x-bx-53-knightshield-v2",
|
|
301
|
+
barcodeId: "LIR-BEY-X-009",
|
|
302
|
+
title: "KnightShield 3-80N Ver.2.0 — BX-53 Set Component",
|
|
303
|
+
description: "KnightShield 3-80N Version 2.0, the Defense-type top from the BX-53 All-in-One Set. The Ver.2.0 Blade improves on the original: Attack 22 (was 20), Defense 60 (was 55), Stamina 28 (was 25). Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
304
|
+
categorySlugs: ["category-knightshield-3-80n"],
|
|
305
|
+
brandSlug: BRAND_SLUG,
|
|
306
|
+
brand: BRAND,
|
|
307
|
+
price: 1500,
|
|
308
|
+
allowOffers: true,
|
|
309
|
+
minOfferPercent: 70,
|
|
310
|
+
currency: "INR",
|
|
311
|
+
stockQuantity: 8,
|
|
312
|
+
availableQuantity: 8,
|
|
313
|
+
isSold: false,
|
|
314
|
+
mainImage: "/media/product-bx-53-knightshield-v2-image",
|
|
315
|
+
images: seedGallery("/media/product-bx-53-knightshield-v2-image"),
|
|
316
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
317
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
318
|
+
tags: ["defense-type", "bx-53-component", "ver-2"],
|
|
319
|
+
storeId: STORE_ID,
|
|
320
|
+
storeName: STORE_NAME,
|
|
321
|
+
createdAt: new Date("2026-10-19"),
|
|
322
|
+
updatedAt: new Date("2026-10-19"),
|
|
323
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
324
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
325
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
id: "product-beyblade-x-bx-53-winder-launcher",
|
|
329
|
+
slug: "product-beyblade-x-bx-53-winder-launcher",
|
|
330
|
+
barcodeId: "LIR-BEY-X-010",
|
|
331
|
+
title: "Winder Launcher — BX-53 Set Component",
|
|
332
|
+
description: "The right-spin Winder Launcher from the BX-53 All-in-One Set — uses a rigid, notched plastic ripcord that threads into an internal gear and is pulled straight out via the ringed handle. Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
333
|
+
categorySlugs: ["category-x-winders"],
|
|
334
|
+
brandSlug: BRAND_SLUG,
|
|
335
|
+
brand: BRAND,
|
|
336
|
+
price: 250,
|
|
337
|
+
allowOffers: false,
|
|
338
|
+
currency: "INR",
|
|
339
|
+
stockQuantity: 15,
|
|
340
|
+
availableQuantity: 15,
|
|
341
|
+
isSold: false,
|
|
342
|
+
mainImage: "/media/product-bx-53-winder-launcher-image",
|
|
343
|
+
images: seedGallery("/media/product-bx-53-winder-launcher-image"),
|
|
344
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
345
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
346
|
+
tags: ["launcher", "bx-53-component"],
|
|
347
|
+
storeId: STORE_ID,
|
|
348
|
+
storeName: STORE_NAME,
|
|
349
|
+
createdAt: new Date("2026-10-19"),
|
|
350
|
+
updatedAt: new Date("2026-10-19"),
|
|
351
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
352
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
353
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
id: "product-beyblade-x-bx-53-string-launcher",
|
|
357
|
+
slug: "product-beyblade-x-bx-53-string-launcher",
|
|
358
|
+
barcodeId: "LIR-BEY-X-011",
|
|
359
|
+
title: "String Launcher — BX-53 Set Component",
|
|
360
|
+
description: "The String Launcher from the BX-53 All-in-One Set — the only Beyblade X launcher type with no ripcord, using a string built into the unit itself: load the top, pull the string, launch. Shown here as packaged inside the BX-53 box (no separate studio photo exists for this launcher on its own). Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
361
|
+
categorySlugs: ["category-x-string-launchers"],
|
|
362
|
+
brandSlug: BRAND_SLUG,
|
|
363
|
+
brand: BRAND,
|
|
364
|
+
price: 250,
|
|
365
|
+
allowOffers: false,
|
|
366
|
+
currency: "INR",
|
|
367
|
+
stockQuantity: 15,
|
|
368
|
+
availableQuantity: 15,
|
|
369
|
+
isSold: false,
|
|
370
|
+
mainImage: "/media/product-bx-53-string-launcher-image",
|
|
371
|
+
images: seedGallery("/media/product-bx-53-string-launcher-image"),
|
|
372
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
373
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
374
|
+
tags: ["launcher", "bx-53-component"],
|
|
375
|
+
storeId: STORE_ID,
|
|
376
|
+
storeName: STORE_NAME,
|
|
377
|
+
createdAt: new Date("2026-10-19"),
|
|
378
|
+
updatedAt: new Date("2026-10-19"),
|
|
379
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
380
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
381
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
id: "product-beyblade-x-bx-53-xtreme-stadium-variant",
|
|
385
|
+
slug: "product-beyblade-x-bx-53-xtreme-stadium-variant",
|
|
386
|
+
barcodeId: "LIR-BEY-X-012",
|
|
387
|
+
title: "Xtreme Stadium — Clear Black×Green (BX-53 Set Component)",
|
|
388
|
+
description: "The Clear Black×Green Xtreme Stadium colourway included in the BX-53 All-in-One Set — the same Xtreme Line rail as the standard-release Xtreme Stadium (listed separately), in a colourway exclusive to this box. Sold individually; buying this does not require buying the rest of the BX-53 set.",
|
|
389
|
+
categorySlugs: ["category-x-xtreme-stadiums"],
|
|
390
|
+
brandSlug: BRAND_SLUG,
|
|
391
|
+
brand: BRAND,
|
|
392
|
+
price: 3500,
|
|
393
|
+
allowOffers: true,
|
|
394
|
+
minOfferPercent: 70,
|
|
395
|
+
currency: "INR",
|
|
396
|
+
stockQuantity: 5,
|
|
397
|
+
availableQuantity: 5,
|
|
398
|
+
isSold: false,
|
|
399
|
+
mainImage: "/media/product-bx-53-xtreme-stadium-image",
|
|
400
|
+
images: seedGallery("/media/product-bx-53-xtreme-stadium-image"),
|
|
401
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
402
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
403
|
+
tags: ["stadium", "bx-53-component", "colourway-variant"],
|
|
404
|
+
storeId: STORE_ID,
|
|
405
|
+
storeName: STORE_NAME,
|
|
406
|
+
createdAt: new Date("2026-10-19"),
|
|
407
|
+
updatedAt: new Date("2026-10-19"),
|
|
408
|
+
groupId: "product-beyblade-x-bx-53-all-in-one-set",
|
|
409
|
+
groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
|
|
410
|
+
groupTitle: "BX-53 All-in-One Set",
|
|
411
|
+
},
|
|
412
|
+
];
|
|
413
|
+
/*
|
|
414
|
+
* 🛑 `listingType` applied AFTER the array literal's closing `]`, inside the
|
|
415
|
+
* `.map()` — never spliced onto a spread. CLAUDE.md's J13 documents this
|
|
416
|
+
* exact bug surviving its own fix once already in this codebase.
|
|
417
|
+
*/
|
|
418
|
+
export const productsBeybladeXSeedData = _raw
|
|
419
|
+
.map((p) => ({
|
|
420
|
+
...p,
|
|
421
|
+
listingType: PRODUCT_FIELDS.LISTING_TYPE_VALUES.STANDARD,
|
|
422
|
+
/*
|
|
423
|
+
* 🛑 `permanent`, explicitly — the `products` collection defaults to
|
|
424
|
+
* `test` (SEED_COLLECTION_PURPOSE), and that default is correct for the
|
|
425
|
+
* curated demo fixtures it was written for. It is WRONG for these.
|
|
426
|
+
*
|
|
427
|
+
* `appkit-seed purge` deletes every document resolving `test` and nothing
|
|
428
|
+
* else. Left on the default, this entire real catalogue — the only
|
|
429
|
+
* genuinely purchasable listings on the site, built for PhonePe merchant
|
|
430
|
+
* registration — would be destroyed by the next routine purge, silently
|
|
431
|
+
* and with no way to tell it apart from clearing mock data.
|
|
432
|
+
*
|
|
433
|
+
* Set inline (resolution step 1) rather than as `SEED_ROW_PURPOSE`
|
|
434
|
+
* entries (step 2): an external id list is a hand-maintained mirror that
|
|
435
|
+
* drifts the moment a row is added or renamed here (Root Cause #42),
|
|
436
|
+
* whereas this cannot go out of sync with the rows it describes.
|
|
437
|
+
*/
|
|
438
|
+
seedPurpose: "permanent",
|
|
439
|
+
}))
|
|
440
|
+
.map(withFinalSale)
|
|
441
|
+
.map(withDerivedCategoryNames);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED by scripts/gen-catalogue-listings.mjs — do not edit by hand.
|
|
3
3
|
*
|
|
4
|
-
* One product listing per taxonomy leaf:
|
|
5
|
-
* models =
|
|
4
|
+
* One product listing per taxonomy leaf: 760 parts + 221 complete
|
|
5
|
+
* models = 1246 rows. This is what makes `products` reproducible from
|
|
6
6
|
* committed data alone — see the generator's own header for the incident that
|
|
7
7
|
* made that matter (968 live documents with no committed source).
|
|
8
8
|
*
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
* — so a re-run of the generator, and a re-run of `appkit-seed load`, both
|
|
12
12
|
* reproduce the SAME 968 documents rather than minting duplicates.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
14
|
+
* 1025 of 760 part listings carry `partGlossaryId`, resolved through
|
|
15
15
|
* `PART_CATEGORY_TO_GLOSSARY_ID` (the pairing `gen-category-parts.mjs` already
|
|
16
|
-
* computes, emitted rather than re-derived).
|
|
16
|
+
* computes, emitted rather than re-derived). 631 of 221 model listings
|
|
17
17
|
* reuse the real wiki cover photo their category page already shows; the rest
|
|
18
18
|
* fall back to a deterministic coloured tile from `public/images/seed-tiles/`.
|
|
19
19
|
*/
|
|
20
20
|
import type { ProductDocument } from "../features/products/schemas/firestore";
|
|
21
21
|
export declare const productsCatalogueSeedData: Partial<ProductDocument>[];
|
|
22
|
-
export declare const CATALOGUE_LISTING_COUNT =
|
|
22
|
+
export declare const CATALOGUE_LISTING_COUNT = 1246;
|