@mohasinac/appkit 4.13.1 → 4.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +14 -5
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +3 -0
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +6 -0
- package/dist/_internal/client/features/lottery/LotteryDetailView.d.ts +8 -0
- package/dist/_internal/client/features/lottery/LotteryDetailView.js +4 -1
- package/dist/_internal/client/features/lottery/LotteryListView.d.ts +7 -0
- package/dist/_internal/client/features/lottery/LotteryListView.js +1 -1
- package/dist/_internal/client/features/lottery/PrizeDrawLotteryDetailView.js +4 -1
- package/dist/_internal/client/features/lottery/slot-collage-items.d.ts +15 -0
- package/dist/_internal/client/features/lottery/slot-collage-items.js +13 -0
- package/dist/_internal/server/features/auctions/actions.js +6 -0
- package/dist/_internal/server/features/bundles/data.d.ts +16 -0
- package/dist/_internal/server/features/bundles/data.js +26 -0
- package/dist/_internal/server/features/bundles/index.d.ts +1 -1
- package/dist/_internal/server/features/bundles/index.js +1 -1
- package/dist/_internal/server/features/checkout/actions.js +6 -0
- package/dist/_internal/server/features/checkout/locked-lines.d.ts +38 -0
- package/dist/_internal/server/features/checkout/locked-lines.js +171 -0
- package/dist/_internal/server/features/homepage/index.d.ts +0 -1
- package/dist/_internal/server/features/homepage/index.js +7 -1
- package/dist/_internal/server/features/lottery/adapters.js +4 -0
- package/dist/_internal/server/features/products/data.js +15 -37
- package/dist/_internal/server/features/products/index.d.ts +1 -1
- package/dist/_internal/server/features/products/index.js +1 -1
- package/dist/_internal/server/features/products/list-public.d.ts +46 -20
- package/dist/_internal/server/features/products/list-public.js +266 -90
- package/dist/_internal/server/features/products/listing-tab-counts.d.ts +44 -0
- package/dist/_internal/server/features/products/listing-tab-counts.js +97 -0
- package/dist/_internal/server/features/site-settings/adapters.d.ts +51 -0
- package/dist/_internal/server/features/site-settings/adapters.js +75 -0
- package/dist/_internal/server/features/site-settings/index.d.ts +1 -0
- package/dist/_internal/server/features/site-settings/index.js +1 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +56 -0
- package/dist/_internal/server/features/stores/adapters.js +91 -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/jobs/core/auctionSettlement.js +56 -2
- package/dist/_internal/server/jobs/core/offerExpiry.js +45 -9
- package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.d.ts +5 -0
- package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +33 -1
- package/dist/_internal/server/jobs/handlers/messages.d.ts +7 -0
- package/dist/_internal/server/jobs/handlers/messages.js +10 -0
- package/dist/_internal/shared/actions/action-registry.js +15 -1
- package/dist/_internal/shared/checkout/lanes.d.ts +25 -0
- package/dist/_internal/shared/checkout/lanes.js +26 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +27 -0
- package/dist/_internal/shared/features/auctions/config.js +27 -0
- package/dist/_internal/shared/features/blog/schema.d.ts +2 -2
- package/dist/_internal/shared/features/cart/schema.d.ts +12 -12
- package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +32 -32
- package/dist/_internal/shared/features/emi/schedule.d.ts +24 -3
- package/dist/_internal/shared/features/emi/schedule.js +20 -5
- package/dist/_internal/shared/features/events/schema.d.ts +2 -2
- package/dist/_internal/shared/features/homepage/section-gate.d.ts +14 -0
- package/dist/_internal/shared/features/homepage/section-gate.js +51 -0
- package/dist/_internal/shared/features/offers/config.d.ts +30 -0
- package/dist/_internal/shared/features/offers/config.js +59 -0
- package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
- package/dist/_internal/shared/features/products/schema.d.ts +32 -32
- package/dist/_internal/shared/features/products/to-product-item.js +6 -0
- package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
- package/dist/_internal/shared/features/site-settings/fees.d.ts +60 -0
- package/dist/_internal/shared/features/site-settings/fees.js +39 -0
- package/dist/_internal/shared/features/site-settings/types.d.ts +40 -0
- package/dist/_internal/shared/features/site-settings/types.js +1 -0
- package/dist/_internal/shared/history/history.d.ts +66 -0
- package/dist/_internal/shared/history/history.js +158 -0
- package/dist/_internal/shared/history/index.d.ts +4 -0
- package/dist/_internal/shared/history/index.js +2 -0
- package/dist/_internal/shared/history/types.d.ts +61 -0
- package/dist/_internal/shared/history/types.js +6 -0
- package/dist/_internal/shared/listing-types/_registry.d.ts +54 -1
- package/dist/_internal/shared/listing-types/_registry.js +67 -0
- package/dist/_internal/shared/listing-types/art/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/art/config.js +5 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +13 -0
- package/dist/_internal/shared/listing-types/auction/config.js +21 -0
- package/dist/_internal/shared/listing-types/availability.d.ts +79 -0
- package/dist/_internal/shared/listing-types/availability.js +104 -0
- package/dist/_internal/shared/listing-types/capabilities.d.ts +15 -0
- package/dist/_internal/shared/listing-types/capabilities.js +12 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/classified/config.js +5 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +11 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +22 -2
- package/dist/_internal/shared/listing-types/live/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/live/config.js +5 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +19 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +11 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +15 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/standard/config.js +5 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +3 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +5 -0
- package/dist/client.d.ts +7 -5
- package/dist/client.js +2 -2
- package/dist/constants/api-endpoints.d.ts +6 -0
- package/dist/constants/api-endpoints.js +2 -0
- package/dist/constants/field-names.d.ts +49 -2
- package/dist/constants/field-names.js +53 -2
- package/dist/constants/table-keys.d.ts +17 -0
- package/dist/constants/table-keys.js +17 -0
- package/dist/errors/error-codes.d.ts +13 -1
- package/dist/errors/error-codes.js +13 -1
- package/dist/errors/error-display-map.js +12 -3
- package/dist/errors/messages.d.ts +10 -2
- package/dist/errors/messages.js +10 -2
- package/dist/features/about/components/AboutView.d.ts +3 -0
- package/dist/features/about/components/AboutView.js +3 -2
- package/dist/features/about/components/PolicyPageView.d.ts +2 -1
- package/dist/features/about/components/PolicyPageView.js +61 -23
- package/dist/features/about/components/PublicProfileView.js +5 -0
- package/dist/features/about/schemas/firestore.d.ts +3 -0
- package/dist/features/account/components/UserOrdersView.js +7 -0
- package/dist/features/account/components/index.d.ts +0 -2
- package/dist/features/account/components/index.js +0 -1
- package/dist/features/account/schemas/index.d.ts +2 -2
- package/dist/features/account/types/index.d.ts +21 -2
- package/dist/features/addresses/schemas/index.d.ts +4 -4
- package/dist/features/admin/components/AdminArtView.js +8 -3
- package/dist/features/admin/components/AdminClassifiedView.js +8 -3
- package/dist/features/admin/components/AdminDigitalCodesView.js +8 -3
- package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -0
- package/dist/features/admin/components/AdminLiveView.js +8 -3
- package/dist/features/admin/components/AdminOffersView.d.ts +4 -0
- package/dist/features/admin/components/AdminOffersView.js +186 -0
- package/dist/features/admin/components/AdminOrdersView.js +10 -1
- package/dist/features/admin/components/AdminPrizeDrawsView.js +5 -0
- package/dist/features/admin/components/AdminProductsView.js +16 -29
- package/dist/features/admin/components/AdminSiteSettingsView.js +31 -13
- package/dist/features/admin/components/AdminSiteView.js +6 -2
- package/dist/features/admin/components/AdminStickersView.js +8 -3
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +86 -0
- package/dist/features/admin/constants/filter-tabs.js +55 -0
- package/dist/features/admin/schemas/firestore.d.ts +122 -3
- package/dist/features/admin/schemas/firestore.js +1 -0
- package/dist/features/auctions/actions/bid-actions.d.ts +20 -5
- package/dist/features/auctions/actions/bid-actions.js +93 -20
- package/dist/features/auctions/components/AuctionDetailPageView.js +11 -6
- package/dist/features/auctions/components/AuctionsListView.js +5 -6
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +7 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +19 -2
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +1 -2
- package/dist/features/auctions/components/PlaceBidFormClient.js +8 -4
- package/dist/features/auctions/repository/bid.repository.d.ts +13 -0
- package/dist/features/auctions/repository/bid.repository.js +23 -0
- package/dist/features/auctions/schemas/firestore.d.ts +17 -0
- package/dist/features/auctions/schemas/index.d.ts +12 -12
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/permissions/constants.js +10 -1
- package/dist/features/blog/actions/blog-actions.d.ts +7 -7
- package/dist/features/blog/schemas/index.d.ts +6 -6
- package/dist/features/cart/repository/cart.repository.js +1 -0
- package/dist/features/cart/schemas/firestore.d.ts +15 -0
- package/dist/features/catalogue/schemas/validation.d.ts +4 -4
- package/dist/features/categories/components/BrandDetailPageView.js +23 -40
- package/dist/features/categories/components/BrandDetailTabs.d.ts +7 -7
- package/dist/features/categories/components/BrandDetailTabs.js +8 -12
- package/dist/features/categories/components/BundleCollage.js +1 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +53 -57
- package/dist/features/categories/components/CategoryDetailTabs.d.ts +10 -8
- package/dist/features/categories/components/CategoryDetailTabs.js +11 -16
- package/dist/features/categories/components/CategoryProductsListing.js +11 -1
- package/dist/features/categories/components/ConcernCard.js +7 -1
- package/dist/features/categories/schemas/firestore.d.ts +13 -0
- package/dist/features/categories/schemas/index.d.ts +26 -26
- package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +16 -1
- package/dist/features/classified/components/ClassifiedDetailPageView.js +23 -3
- package/dist/features/events/components/AdminEventsView.js +15 -11
- package/dist/features/events/components/EventFilters.d.ts +9 -1
- package/dist/features/events/components/EventFilters.js +45 -21
- package/dist/features/events/components/EventsIndexListing.d.ts +6 -1
- package/dist/features/events/components/EventsIndexListing.js +2 -2
- package/dist/features/events/components/EventsListPageView.js +13 -4
- package/dist/features/events/repository/events.repository.d.ts +17 -0
- package/dist/features/events/repository/events.repository.js +27 -0
- package/dist/features/events/schemas/firestore.d.ts +12 -0
- package/dist/features/events/schemas/firestore.js +12 -0
- package/dist/features/events/schemas/index.d.ts +50 -50
- package/dist/features/events/types/index.d.ts +11 -0
- package/dist/features/events/types/index.js +57 -1
- package/dist/features/faq/actions/faq-actions.d.ts +12 -12
- package/dist/features/faq/schemas/index.d.ts +8 -8
- package/dist/features/filters/FilterFacetSection.d.ts +7 -1
- package/dist/features/filters/FilterFacetSection.js +11 -3
- package/dist/features/grouped/schemas/index.d.ts +4 -4
- package/dist/features/homepage/components/AnnouncementBar.d.ts +7 -1
- package/dist/features/homepage/components/AnnouncementBar.js +3 -3
- package/dist/features/homepage/components/MarketplaceHomepageView.js +20 -6
- package/dist/features/homepage/hooks/homepage-query.d.ts +16 -0
- package/dist/features/homepage/hooks/homepage-query.js +45 -0
- package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +10 -0
- package/dist/features/homepage/hooks/useFeaturedAuctions.js +28 -8
- package/dist/features/homepage/hooks/useFeaturedPreOrders.js +17 -8
- package/dist/features/homepage/hooks/useFeaturedProducts.js +15 -8
- package/dist/features/homepage/schemas/index.d.ts +2 -2
- package/dist/features/layout/AppLayoutShell.d.ts +11 -1
- package/dist/features/layout/AppLayoutShell.js +15 -14
- package/dist/features/layout/BackToTop.d.ts +9 -0
- package/dist/features/layout/BackToTop.js +10 -1
- package/dist/features/layout/BottomActions.js +28 -25
- package/dist/features/layout/BottomChrome.d.ts +34 -0
- package/dist/features/layout/BottomChrome.js +55 -0
- package/dist/features/layout/BottomNavLayout.d.ts +6 -0
- package/dist/features/layout/BottomNavLayout.js +7 -1
- package/dist/features/layout/BottomNavbar.js +15 -2
- package/dist/features/layout/FooterLayout.js +11 -1
- package/dist/features/layout/NavbarLayout.js +1 -1
- package/dist/features/layout/TitleBarLayout.d.ts +7 -0
- package/dist/features/layout/TitleBarLayout.js +28 -5
- package/dist/features/layout/index.d.ts +2 -0
- package/dist/features/layout/index.js +1 -0
- package/dist/features/lottery/types/index.d.ts +3 -0
- package/dist/features/media/MediaPickerModal.js +5 -1
- package/dist/features/messages/schemas/index.d.ts +2 -2
- package/dist/features/orders/components/OrderScopeTabs.d.ts +20 -0
- package/dist/features/orders/components/OrderScopeTabs.js +31 -0
- package/dist/features/orders/constants/order-scope.d.ts +48 -0
- package/dist/features/orders/constants/order-scope.js +111 -0
- package/dist/features/orders/repository/orders.repository.d.ts +54 -7
- package/dist/features/orders/repository/orders.repository.js +116 -22
- package/dist/features/orders/schemas/firestore.d.ts +117 -0
- package/dist/features/orders/schemas/firestore.js +30 -0
- package/dist/features/orders/schemas/index.d.ts +18 -18
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +14 -9
- package/dist/features/pre-orders/components/PreOrdersListView.js +6 -5
- package/dist/features/pre-orders/schemas/index.d.ts +1 -1
- package/dist/features/products/actions/product-actions.d.ts +14 -0
- package/dist/features/products/actions/product-actions.js +49 -11
- package/dist/features/products/api/route.d.ts +12 -0
- package/dist/features/products/api/route.js +42 -100
- package/dist/features/products/components/ArtStickersListView.js +2 -2
- package/dist/features/products/components/AuctionsIndexListing.js +13 -11
- package/dist/features/products/components/AvailabilityTabs.d.ts +11 -0
- package/dist/features/products/components/AvailabilityTabs.js +47 -0
- package/dist/features/products/components/MakeOfferButton.js +48 -49
- package/dist/features/products/components/PrizeDrawCollage.d.ts +20 -4
- package/dist/features/products/components/PrizeDrawCollage.js +9 -1
- package/dist/features/products/components/PrizeDrawsIndexListing.js +14 -12
- package/dist/features/products/components/PrizeDrawsListingView.js +2 -2
- package/dist/features/products/components/PrizeDrawsSection.d.ts +7 -1
- package/dist/features/products/components/PrizeDrawsSection.js +23 -18
- package/dist/features/products/components/ProductDetailPageView.d.ts +4 -1
- package/dist/features/products/components/ProductDetailPageView.js +18 -4
- package/dist/features/products/components/ProductForm.js +5 -2
- package/dist/features/products/components/ProductGrid.js +6 -1
- package/dist/features/products/components/ProductsIndexListing.js +22 -32
- package/dist/features/products/components/ProductsIndexPageView.js +6 -9
- package/dist/features/products/components/index.d.ts +2 -2
- package/dist/features/products/components/index.js +1 -1
- package/dist/features/products/config/listing-type-listing-config.d.ts +20 -0
- package/dist/features/products/config/listing-type-listing-config.js +22 -10
- package/dist/features/products/constants/action-defs.d.ts +2 -0
- package/dist/features/products/constants/action-defs.js +6 -0
- package/dist/features/products/hooks/useAvailabilityScope.d.ts +13 -0
- package/dist/features/products/hooks/useAvailabilityScope.js +19 -0
- package/dist/features/products/hooks/useProducts.d.ts +5 -0
- package/dist/features/products/hooks/useProducts.js +13 -2
- package/dist/features/products/repository/products.repository.d.ts +31 -2
- package/dist/features/products/repository/products.repository.js +53 -21
- package/dist/features/products/schemas/firestore.d.ts +17 -3
- package/dist/features/products/schemas/firestore.js +7 -2
- package/dist/features/products/schemas/index.d.ts +66 -66
- package/dist/features/products/schemas/product-features.validators.d.ts +6 -6
- package/dist/features/products/types/index.d.ts +16 -1
- package/dist/features/promotions/schemas/index.d.ts +2 -2
- package/dist/features/reviews/schemas/index.d.ts +16 -16
- package/dist/features/search/schemas/index.d.ts +4 -4
- package/dist/features/seller/actions/offer-actions.js +25 -2
- package/dist/features/seller/components/SellerArtView.js +5 -0
- package/dist/features/seller/components/SellerAuctionsView.js +13 -15
- package/dist/features/seller/components/SellerClassifiedView.js +5 -0
- package/dist/features/seller/components/SellerDigitalCodesView.js +5 -0
- package/dist/features/seller/components/SellerLiveView.js +5 -0
- package/dist/features/seller/components/SellerOrdersView.js +31 -9
- package/dist/features/seller/components/SellerPayoutSettingsView.js +19 -18
- package/dist/features/seller/components/SellerPreOrdersView.js +5 -0
- package/dist/features/seller/components/SellerPrizeDrawsView.js +14 -16
- package/dist/features/seller/components/SellerProductShell.js +7 -1
- package/dist/features/seller/components/SellerProductsView.js +11 -8
- package/dist/features/seller/components/SellerStickersView.js +5 -0
- package/dist/features/seller/components/index.d.ts +0 -2
- package/dist/features/seller/components/index.js +0 -1
- package/dist/features/seller/repository/offer.repository.d.ts +73 -16
- package/dist/features/seller/repository/offer.repository.js +38 -3
- package/dist/features/seller/schemas/index.d.ts +2 -2
- package/dist/features/seller/schemas/offer-forms.d.ts +25 -0
- package/dist/features/seller/schemas/offer-forms.js +21 -0
- package/dist/features/seller/server.d.ts +0 -1
- package/dist/features/seller/server.js +0 -1
- package/dist/features/shell/SectionForm.d.ts +99 -0
- package/dist/features/shell/SectionForm.js +128 -0
- package/dist/features/shell/entity-form.d.ts +109 -0
- package/dist/features/shell/entity-form.js +96 -0
- package/dist/features/shell/index.d.ts +4 -0
- package/dist/features/shell/index.js +2 -0
- package/dist/features/stores/api/[storeSlug]/route.js +2 -25
- package/dist/features/stores/components/StoreAuctionsListing.js +15 -1
- package/dist/features/stores/components/StoreClassifiedsListing.js +12 -2
- package/dist/features/stores/components/StoreDetailLayoutView.js +24 -71
- package/dist/features/stores/components/StoreDigitalCodesListing.js +12 -2
- package/dist/features/stores/components/StoreLiveItemsListing.js +12 -2
- package/dist/features/stores/components/StorePreOrdersListing.js +12 -1
- package/dist/features/stores/components/StoreProductsListing.js +11 -1
- package/dist/features/stores/repository/store.repository.js +6 -0
- package/dist/features/stores/schemas/index.d.ts +6 -6
- package/dist/features/support/schemas/index.d.ts +4 -4
- package/dist/features/tester/actions/checklist-item-actions.d.ts +4 -4
- package/dist/features/tester/seed-data/offers-tester-seed-data.js +119 -3
- package/dist/features/tester/seed-data/products-tester-seed-data.js +131 -1
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +105 -1
- package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
- package/dist/index.d.ts +13 -10
- package/dist/index.js +14 -9
- package/dist/next/routing/route-map.d.ts +7 -1
- package/dist/next/routing/route-map.js +5 -0
- package/dist/providers/db-firebase/base.repository.d.ts +30 -0
- package/dist/providers/db-firebase/base.repository.js +50 -1
- package/dist/providers/db-firebase/index.d.ts +1 -1
- package/dist/providers/db-firebase/index.js +1 -1
- package/dist/providers/db-firebase/sieve.d.ts +25 -0
- package/dist/providers/db-firebase/sieve.js +52 -18
- package/dist/react/hooks/useUrlTable.js +10 -1
- package/dist/schemas/registry.d.ts +68 -68
- package/dist/seed/_helpers/category-forest.d.ts +2 -0
- package/dist/seed/_helpers/category-forest.js +309 -0
- package/dist/seed/_helpers/category-tree.d.ts +27 -0
- package/dist/seed/_helpers/category-tree.js +103 -0
- package/dist/seed/catalogue-seed-data.js +12 -12
- package/dist/seed/categories-seed-data.js +177 -162
- package/dist/seed/events-seed-data.js +61 -10
- package/dist/seed/homepage-sections-seed-data.js +5 -1
- package/dist/seed/offers-seed-data.js +32 -27
- package/dist/seed/products-art-seed-data.js +50 -12
- package/dist/seed/products-auctions-seed-data.js +97 -18
- package/dist/seed/products-classifieds-seed-data.js +80 -16
- package/dist/seed/products-digital-codes-seed-data.js +66 -18
- package/dist/seed/products-live-items-seed-data.js +64 -13
- package/dist/seed/products-preorders-seed-data.d.ts +0 -1
- package/dist/seed/products-preorders-seed-data.js +52 -13
- package/dist/seed/products-prize-draws-seed-data.js +63 -14
- package/dist/seed/products-standard-seed-data.js +99 -26
- package/dist/seed/products-stickers-seed-data.js +47 -12
- package/dist/seed/reviews-seed-data.js +6 -1
- package/dist/seed/site-settings-seed-data.d.ts +1 -38
- package/dist/seed/site-settings-seed-data.js +38 -76
- package/dist/seed/stores-seed-data.js +71 -1
- package/dist/seed/users-seed-data.js +15 -5
- package/dist/server-entry.d.ts +1 -2
- package/dist/server-entry.js +4 -3
- package/dist/server.d.ts +4 -3
- package/dist/server.js +8 -4
- package/dist/styles.css +78 -12
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Button.style.css +19 -4
- package/dist/ui/components/CollapsibleSection.d.ts +17 -1
- package/dist/ui/components/CollapsibleSection.js +6 -2
- package/dist/ui/components/FilterChipGroup.d.ts +25 -1
- package/dist/ui/components/FilterChipGroup.js +21 -4
- package/dist/ui/components/HandMode.style.css +47 -0
- package/dist/ui/components/Layout.d.ts +9 -2
- package/dist/ui/components/Layout.js +1 -1
- package/dist/ui/components/ListingLayout.js +8 -8
- package/dist/ui/components/ListingLayout.style.css +8 -7
- package/dist/ui/components/StickyToolbar.d.ts +3 -1
- package/dist/ui/components/StickyToolbar.js +62 -20
- package/dist/ui/components/bottom-chrome-slot.d.ts +21 -0
- package/dist/ui/components/bottom-chrome-slot.js +29 -0
- package/dist/ui/components/index.style.css +3 -0
- package/dist/ui/forms/FormShell.d.ts +43 -13
- package/dist/ui/forms/FormShell.js +22 -11
- package/dist/ui/forms/index.d.ts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -27,11 +27,11 @@ export const offersSeedData = [
|
|
|
27
27
|
buyerUid: "user-yugi-muto",
|
|
28
28
|
buyerName: "Mock User 3",
|
|
29
29
|
buyerEmail: "rehan.sheikh@gmail.com",
|
|
30
|
-
listedPrice:
|
|
31
|
-
offerAmount:
|
|
30
|
+
listedPrice: 999,
|
|
31
|
+
offerAmount: 780,
|
|
32
32
|
currency: "INR",
|
|
33
33
|
status: OfferStatusValues.PENDING,
|
|
34
|
-
buyerNote: "Would you accept ₹
|
|
34
|
+
buyerNote: "Would you accept ₹780 for the Burst Valkyrie?",
|
|
35
35
|
expiresAt: daysFromNow(3),
|
|
36
36
|
createdAt: daysAgo(0),
|
|
37
37
|
updatedAt: daysAgo(0),
|
|
@@ -46,13 +46,13 @@ export const offersSeedData = [
|
|
|
46
46
|
buyerUid: "user-yugi-muto",
|
|
47
47
|
buyerName: "Mock User 3",
|
|
48
48
|
buyerEmail: "rehan.sheikh@gmail.com",
|
|
49
|
-
listedPrice:
|
|
50
|
-
offerAmount:
|
|
51
|
-
counterAmount:
|
|
49
|
+
listedPrice: 1299,
|
|
50
|
+
offerAmount: 1000,
|
|
51
|
+
counterAmount: 1150,
|
|
52
52
|
currency: "INR",
|
|
53
53
|
status: OfferStatusValues.COUNTERED,
|
|
54
|
-
buyerNote: "₹
|
|
55
|
-
sellerNote: "Best I can do is ₹
|
|
54
|
+
buyerNote: "₹1,000 — will you take it?",
|
|
55
|
+
sellerNote: "Best I can do is ₹1,150.",
|
|
56
56
|
expiresAt: daysFromNow(2),
|
|
57
57
|
respondedAt: daysAgo(1),
|
|
58
58
|
createdAt: daysAgo(3),
|
|
@@ -68,14 +68,15 @@ export const offersSeedData = [
|
|
|
68
68
|
buyerUid: "user-admin-letitrip",
|
|
69
69
|
buyerName: "Mock User 1",
|
|
70
70
|
buyerEmail: "admin@letitrip.in",
|
|
71
|
-
listedPrice:
|
|
72
|
-
offerAmount:
|
|
73
|
-
lockedPrice:
|
|
71
|
+
listedPrice: 949,
|
|
72
|
+
offerAmount: 800,
|
|
73
|
+
lockedPrice: 800,
|
|
74
74
|
currency: "INR",
|
|
75
75
|
status: OfferStatusValues.PAID,
|
|
76
|
-
buyerNote: "Would you accept ₹
|
|
76
|
+
buyerNote: "Would you accept ₹800 for the X Knife Shinobi?",
|
|
77
77
|
sellerNote: "Accepted. Thank you!",
|
|
78
78
|
expiresAt: daysAgo(3),
|
|
79
|
+
checkoutDeadline: daysAgo(10),
|
|
79
80
|
acceptedAt: daysAgo(12),
|
|
80
81
|
respondedAt: daysAgo(12),
|
|
81
82
|
createdAt: daysAgo(14),
|
|
@@ -91,8 +92,8 @@ export const offersSeedData = [
|
|
|
91
92
|
buyerUid: "user-yugi-muto",
|
|
92
93
|
buyerName: "Mock User 3",
|
|
93
94
|
buyerEmail: "rehan.sheikh@gmail.com",
|
|
94
|
-
listedPrice:
|
|
95
|
-
offerAmount:
|
|
95
|
+
listedPrice: 1399,
|
|
96
|
+
offerAmount: 1050,
|
|
96
97
|
currency: "INR",
|
|
97
98
|
status: OfferStatusValues.DECLINED,
|
|
98
99
|
buyerNote: "Offering ₹2,500 — slightly above my budget.",
|
|
@@ -112,8 +113,8 @@ export const offersSeedData = [
|
|
|
112
113
|
buyerUid: "user-seto-kaiba",
|
|
113
114
|
buyerName: "Mock User 2",
|
|
114
115
|
buyerEmail: "vivaan.kapoor@gmail.com",
|
|
115
|
-
listedPrice:
|
|
116
|
-
offerAmount:
|
|
116
|
+
listedPrice: 899,
|
|
117
|
+
offerAmount: 700,
|
|
117
118
|
currency: "INR",
|
|
118
119
|
status: OfferStatusValues.EXPIRED,
|
|
119
120
|
buyerNote: "₹1,300 — let me know.",
|
|
@@ -131,8 +132,8 @@ export const offersSeedData = [
|
|
|
131
132
|
buyerUid: "user-admin-letitrip",
|
|
132
133
|
buyerName: "Mock User 1",
|
|
133
134
|
buyerEmail: "admin@letitrip.in",
|
|
134
|
-
listedPrice:
|
|
135
|
-
offerAmount:
|
|
135
|
+
listedPrice: 1799,
|
|
136
|
+
offerAmount: 1450,
|
|
136
137
|
currency: "INR",
|
|
137
138
|
status: OfferStatusValues.WITHDRAWN,
|
|
138
139
|
buyerNote: "Offering ₹1,600 for the Driger V.",
|
|
@@ -150,14 +151,18 @@ export const offersSeedData = [
|
|
|
150
151
|
buyerUid: "user-seto-kaiba",
|
|
151
152
|
buyerName: "Mock User 2",
|
|
152
153
|
buyerEmail: "vivaan.kapoor@gmail.com",
|
|
153
|
-
listedPrice:
|
|
154
|
-
offerAmount:
|
|
155
|
-
lockedPrice:
|
|
154
|
+
listedPrice: 1499,
|
|
155
|
+
offerAmount: 1250,
|
|
156
|
+
lockedPrice: 1250,
|
|
156
157
|
currency: "INR",
|
|
157
158
|
status: OfferStatusValues.ACCEPTED,
|
|
158
|
-
buyerNote: "₹1,
|
|
159
|
+
buyerNote: "₹1,250 final offer on the sealed Dranzer S.",
|
|
159
160
|
sellerNote: "Accepted! Please complete payment within 24 hours.",
|
|
160
161
|
expiresAt: daysFromNow(1),
|
|
162
|
+
// Without this the offer is invisible to findExpiredAccepted() and the
|
|
163
|
+
// seller/admin "Buyer must pay by" row never renders — the field is what
|
|
164
|
+
// makes an accepted offer a CLAIM ON A CLOCK rather than an open promise.
|
|
165
|
+
checkoutDeadline: daysFromNow(2),
|
|
161
166
|
acceptedAt: daysAgo(0),
|
|
162
167
|
respondedAt: daysAgo(0),
|
|
163
168
|
createdAt: daysAgo(1),
|
|
@@ -165,16 +170,16 @@ export const offersSeedData = [
|
|
|
165
170
|
},
|
|
166
171
|
// ── 8. PENDING — Admin → Beyblade Arena — Metal Lightning L-Drago ───────
|
|
167
172
|
{
|
|
168
|
-
id: "offer-admin-
|
|
169
|
-
productId: "
|
|
170
|
-
productTitle: "Beyblade Metal
|
|
173
|
+
id: "offer-admin-flame-sagittario-pending",
|
|
174
|
+
productId: "product-beyblade-metal-flame-sagittario",
|
|
175
|
+
productTitle: "Beyblade Metal Flame Sagittario",
|
|
171
176
|
storeId: "store-beyblade-arena",
|
|
172
177
|
storeName: "Beyblade Arena",
|
|
173
178
|
buyerUid: "user-admin-letitrip",
|
|
174
179
|
buyerName: "Mock User 1",
|
|
175
180
|
buyerEmail: "admin@letitrip.in",
|
|
176
|
-
listedPrice:
|
|
177
|
-
offerAmount:
|
|
181
|
+
listedPrice: 1199,
|
|
182
|
+
offerAmount: 950,
|
|
178
183
|
currency: "INR",
|
|
179
184
|
status: OfferStatusValues.PENDING,
|
|
180
185
|
buyerNote: "Interested in this piece. Would you accept ₹4,700?",
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* stub with the note "out of scope for the minimal Beyblade-focused demo catalog,"
|
|
5
5
|
* but unlike "live," art prints fit the Beyblade theme naturally as fan-art (see
|
|
6
6
|
* CLAUDE.md seed-data blandness sweep, 2026-08-20 session).
|
|
7
|
-
* WHAT: Exports
|
|
7
|
+
* WHAT: Exports 6 Beyblade fan-art print listings on Beyblade Arena, varying size,
|
|
8
8
|
* material, finish, and edition size (including one open-edition, no editionSize).
|
|
9
9
|
*
|
|
10
10
|
* EXPORTS:
|
|
11
|
-
* productsArtSeedData — Array of
|
|
11
|
+
* productsArtSeedData — Array of 6 Partial<ProductDocument> with listingType:"art"
|
|
12
12
|
*
|
|
13
13
|
* @tag domain:products,art
|
|
14
14
|
* @tag layer:seed
|
|
@@ -26,8 +26,8 @@ export const productsArtSeedData = [
|
|
|
26
26
|
slug: "art-dranzer-phoenix-poster",
|
|
27
27
|
title: "Dranzer Phoenix Rising — Fan Art Poster",
|
|
28
28
|
description: "A vibrant fan-art poster of Dranzer erupting in phoenix flame, hand-illustrated and giclée-printed on matte photo paper.",
|
|
29
|
-
categorySlugs: ["category-spinning-tops"],
|
|
30
|
-
categoryNames: ["Spinning Tops"],
|
|
29
|
+
categorySlugs: ["category-stadiums-standard", "category-gear-stadiums", "category-battle-gear", "category-spinning-tops"],
|
|
30
|
+
categoryNames: ["Standard Stadiums", "Stadiums", "Battle Gear", "Spinning Tops"],
|
|
31
31
|
brandSlug: "brand-beyblade",
|
|
32
32
|
brand: "Beyblade",
|
|
33
33
|
price: 599,
|
|
@@ -61,8 +61,8 @@ export const productsArtSeedData = [
|
|
|
61
61
|
slug: "art-valkyrie-holographic-print",
|
|
62
62
|
title: "Beyblade Burst Valkyrie — Holographic Art Print (Limited /100)",
|
|
63
63
|
description: "A limited-edition holographic art print of Valkyrie mid-battle, numbered out of 100. Ships in a rigid mailer to prevent bending.",
|
|
64
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
65
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
64
|
+
categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
65
|
+
categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
66
66
|
brandSlug: "brand-beyblade",
|
|
67
67
|
brand: "Beyblade",
|
|
68
68
|
price: 1299,
|
|
@@ -96,8 +96,8 @@ export const productsArtSeedData = [
|
|
|
96
96
|
slug: "art-beyblade-x-lineup-canvas",
|
|
97
97
|
title: "Beyblade X Full Lineup — Canvas Print",
|
|
98
98
|
description: "A gallery-style canvas print featuring the full current Beyblade X roster in battle formation. Stretched and ready to hang.",
|
|
99
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
100
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
99
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
100
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
101
101
|
brandSlug: "brand-takara-tomy",
|
|
102
102
|
brand: "Takara-Tomy",
|
|
103
103
|
price: 2499,
|
|
@@ -134,8 +134,8 @@ export const productsArtSeedData = [
|
|
|
134
134
|
slug: "art-metal-fight-vintage-poster",
|
|
135
135
|
title: "Metal Fight Beyblade — Vintage-Style Poster (Open Edition)",
|
|
136
136
|
description: "A retro-styled poster celebrating the Metal Fight era, printed on demand — open edition, no print run limit.",
|
|
137
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
138
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
137
|
+
categorySlugs: ["category-metal-fusion", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
138
|
+
categoryNames: ["Metal Fusion", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
139
139
|
brandSlug: "brand-takara-tomy",
|
|
140
140
|
brand: "Takara-Tomy",
|
|
141
141
|
price: 449,
|
|
@@ -166,8 +166,8 @@ export const productsArtSeedData = [
|
|
|
166
166
|
slug: "art-original-series-anniversary-print",
|
|
167
167
|
title: "Original Series 25th Anniversary — Glossy Art Print",
|
|
168
168
|
description: "A commemorative glossy print marking 25 years of the original Beyblade series, featuring Dragoon, Dranzer, Driger, and Draciel together.",
|
|
169
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
170
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
169
|
+
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
170
|
+
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
171
171
|
brandSlug: "brand-beyblade",
|
|
172
172
|
brand: "Beyblade",
|
|
173
173
|
price: 899,
|
|
@@ -196,4 +196,42 @@ export const productsArtSeedData = [
|
|
|
196
196
|
updatedAt: new Date("2026-08-19"),
|
|
197
197
|
searchTokens: buildSearchTokens("Original Series 25th Anniversary — Glossy Art Print", "Commemorative glossy print marking 25 years of the original Beyblade series.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["fan-art", "vintage-collectible", "limited-run"]),
|
|
198
198
|
},
|
|
199
|
+
{
|
|
200
|
+
// Sold-out fixture. The canonical unavailable shape for a stock-only type:
|
|
201
|
+
// isSold + both quantities zeroed, and status STILL published — an
|
|
202
|
+
// archived row is hidden by the status filter before the availability
|
|
203
|
+
// predicate ever runs, so it would prove nothing.
|
|
204
|
+
id: "art-dragoon-galaxy-turbo-print-sold-out",
|
|
205
|
+
slug: "art-dragoon-galaxy-turbo-print-sold-out",
|
|
206
|
+
title: "Dragoon Galaxy Turbo — Fan Art Print (Sold Out)",
|
|
207
|
+
description: "A sold-out run of the Dragoon Galaxy Turbo fan-art print. Every copy of this edition has shipped.",
|
|
208
|
+
categorySlugs: ["category-original-hms", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
209
|
+
categoryNames: ["Heavy Metal System", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
210
|
+
brandSlug: "brand-beyblade",
|
|
211
|
+
brand: "Beyblade",
|
|
212
|
+
price: 749,
|
|
213
|
+
currency: "INR",
|
|
214
|
+
stockQuantity: 0,
|
|
215
|
+
availableQuantity: 0,
|
|
216
|
+
isSold: true,
|
|
217
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-dragoon-galaxy-sold-out-1-20260824/900/900"),
|
|
218
|
+
images: [
|
|
219
|
+
seedExtMedia("https://picsum.photos/seed/art-image-dragoon-galaxy-sold-out-1-20260824/900/900"),
|
|
220
|
+
],
|
|
221
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
222
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
223
|
+
listingType: "art",
|
|
224
|
+
storeId: "store-beyblade-arena",
|
|
225
|
+
storeName: "Beyblade Arena",
|
|
226
|
+
printMeta: { size: "18x24 in", material: "Archival cotton rag", finish: "Matte", editionSize: 40 },
|
|
227
|
+
customFields: [],
|
|
228
|
+
customSections: [],
|
|
229
|
+
featured: false,
|
|
230
|
+
isPromoted: false,
|
|
231
|
+
isOnSale: false,
|
|
232
|
+
tags: ["fan-art", "poster", "sold-out"],
|
|
233
|
+
createdAt: new Date("2026-08-24"),
|
|
234
|
+
updatedAt: new Date("2026-08-24"),
|
|
235
|
+
searchTokens: buildSearchTokens("Dragoon Galaxy Turbo — Fan Art Print (Sold Out)", "A sold-out run of the Dragoon Galaxy Turbo fan-art print.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["fan-art", "poster", "sold-out"]),
|
|
236
|
+
},
|
|
199
237
|
];
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
* Also fixes a real field-name bug: the two original fixtures set `buyItNowPrice`
|
|
8
8
|
* (a distinct, no-bids-yet-only BIN field) but AuctionDetailPageView.tsx reads
|
|
9
9
|
* `buyNowPrice` — so neither auction's Buy Now button/price ever rendered.
|
|
10
|
-
* WHAT: Exports
|
|
10
|
+
* WHAT: Exports 9 auction products with listingType:"auction" — 2 original fixtures
|
|
11
11
|
* (field-bug fixed, specs/tags added) + 6 new: a Buy-Now-only auction (zero bids,
|
|
12
12
|
* bidsHaveStarted:false), a reserve-not-met auction, a closed/won auction with a
|
|
13
13
|
* winning bidder, and 3 more active auctions with varied end dates/bid activity.
|
|
14
14
|
*
|
|
15
15
|
* EXPORTS:
|
|
16
|
-
* productsAuctionsSeedData — Array of
|
|
16
|
+
* productsAuctionsSeedData — Array of 9 auction products with listingType:"auction"
|
|
17
17
|
*
|
|
18
18
|
* @tag domain:auctions,products
|
|
19
19
|
* @tag layer:seed
|
|
@@ -48,8 +48,8 @@ const _rawProductsAuctionsSeedData = [
|
|
|
48
48
|
slug: "auction-beyblade-original-dragoon-storm",
|
|
49
49
|
title: "Beyblade Original — Dragoon Storm (Rare Sealed)",
|
|
50
50
|
description: "Sealed, unopened Dragoon Storm from the original 1999-2003 series. A grail piece for original-generation collectors.",
|
|
51
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
52
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
51
|
+
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
52
|
+
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
53
53
|
brandSlug: "brand-beyblade",
|
|
54
54
|
brand: "Beyblade",
|
|
55
55
|
startingBid: 2999,
|
|
@@ -92,8 +92,8 @@ const _rawProductsAuctionsSeedData = [
|
|
|
92
92
|
slug: "auction-beyblade-metal-lightning-l-drago",
|
|
93
93
|
title: "Metal Fight Beyblade BB-99 Lightning L-Drago",
|
|
94
94
|
description: "Lightning L-Drago 100HF/S, a highly sought-after Metal Fury era top in excellent condition.",
|
|
95
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
96
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
95
|
+
categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
96
|
+
categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
97
97
|
brandSlug: "brand-takara-tomy",
|
|
98
98
|
brand: "Takara-Tomy",
|
|
99
99
|
startingBid: 1999,
|
|
@@ -124,14 +124,17 @@ const _rawProductsAuctionsSeedData = [
|
|
|
124
124
|
createdAt: new Date("2026-05-19"),
|
|
125
125
|
updatedAt: new Date("2026-05-22"),
|
|
126
126
|
},
|
|
127
|
-
// ---
|
|
127
|
+
// --- The clean buyout fixture: BIN price well above the standing bid ---
|
|
128
|
+
// (It also happens to have zero bids, but that is no longer WHY Buy Now is
|
|
129
|
+
// offered — the `bidsHaveStarted` gate was dropped 2026-08-24. What matters
|
|
130
|
+
// now is `buyNowPrice > currentBid`, which holds here 1299 > 799.)
|
|
128
131
|
{
|
|
129
132
|
id: "auction-beyblade-x-shark-edge",
|
|
130
133
|
slug: "auction-beyblade-x-shark-edge",
|
|
131
134
|
title: "Beyblade X BX-04 Shark Edge (Buy It Now Available)",
|
|
132
|
-
description: "Shark Edge 3-60GF straight from a fresh case pull.
|
|
133
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
134
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
135
|
+
description: "Shark Edge 3-60GF straight from a fresh case pull. Grab it at the Buy It Now price before the clock runs, or start the bidding.",
|
|
136
|
+
categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
137
|
+
categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
135
138
|
brandSlug: "brand-takara-tomy",
|
|
136
139
|
brand: "Takara-Tomy",
|
|
137
140
|
startingBid: 799,
|
|
@@ -161,14 +164,54 @@ const _rawProductsAuctionsSeedData = [
|
|
|
161
164
|
createdAt: new Date("2026-08-14"),
|
|
162
165
|
updatedAt: new Date("2026-08-14"),
|
|
163
166
|
},
|
|
167
|
+
// --- NEGATIVE CONTROL: bidding has passed the buy-now price ---
|
|
168
|
+
// Buy Now must be offered NOWHERE for this listing — not the button on the
|
|
169
|
+
// detail page, not the advertised price above it, not the Buyout chip on the
|
|
170
|
+
// card. Before the 2026-08-24 rework those three sites used three different
|
|
171
|
+
// conditions, so this state was unreachable as a test case.
|
|
172
|
+
{
|
|
173
|
+
id: "auction-beyblade-burst-xcalius-passed-bin",
|
|
174
|
+
slug: "auction-beyblade-burst-xcalius-passed-bin",
|
|
175
|
+
title: "Beyblade Burst Xcalius X2 (bidding passed Buy It Now)",
|
|
176
|
+
description: "Xcalius X2 attack type. The Buy It Now price has already been overtaken by live bidding, so only bidding remains.",
|
|
177
|
+
categorySlugs: ["category-burst-cho-z", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
178
|
+
categoryNames: ["Cho-Z", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
179
|
+
brandSlug: "brand-takara-tomy",
|
|
180
|
+
brand: "Takara-Tomy",
|
|
181
|
+
startingBid: 700,
|
|
182
|
+
buyNowPrice: 1400,
|
|
183
|
+
currentBid: 1650,
|
|
184
|
+
currency: "INR",
|
|
185
|
+
auctionEndDate: new Date(Date.now() + 4 * 24 * 60 * 60 * 1000),
|
|
186
|
+
bidCount: 7,
|
|
187
|
+
bidsHaveStarted: true,
|
|
188
|
+
isSold: false,
|
|
189
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-xcalius-1-20260824/900/900"),
|
|
190
|
+
images: [
|
|
191
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-xcalius-1-20260824/900/900"),
|
|
192
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-xcalius-2-20260824/900/900"),
|
|
193
|
+
],
|
|
194
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
195
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
196
|
+
tags: ["attack-type", "burst"],
|
|
197
|
+
specifications: [
|
|
198
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
199
|
+
{ name: "Type", value: "Attack" },
|
|
200
|
+
{ name: "Weight", value: "33.8", unit: "g" },
|
|
201
|
+
],
|
|
202
|
+
storeId: "store-beyblade-arena",
|
|
203
|
+
storeName: "Beyblade Arena",
|
|
204
|
+
createdAt: new Date("2026-08-24"),
|
|
205
|
+
updatedAt: new Date("2026-08-24"),
|
|
206
|
+
},
|
|
164
207
|
// --- Reserve not met: currentBid sits below reservePrice ---
|
|
165
208
|
{
|
|
166
209
|
id: "auction-beyblade-original-seaborg",
|
|
167
210
|
slug: "auction-beyblade-original-seaborg",
|
|
168
211
|
title: "Beyblade Original — Seaborg 2000 (Reserve Auction)",
|
|
169
212
|
description: "Rare Seaborg 2000 defense-type top from the original series. Reserve price set by the seller — current bids haven't met it yet.",
|
|
170
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
171
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
213
|
+
categorySlugs: ["category-original-hms", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
214
|
+
categoryNames: ["Heavy Metal System", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
172
215
|
brandSlug: "brand-beyblade",
|
|
173
216
|
brand: "Beyblade",
|
|
174
217
|
startingBid: 1499,
|
|
@@ -204,8 +247,8 @@ const _rawProductsAuctionsSeedData = [
|
|
|
204
247
|
slug: "auction-beyblade-metal-diablo-nemesis",
|
|
205
248
|
title: "Metal Fight Beyblade BB-122 Diablo Nemesis (Ended — Sold)",
|
|
206
249
|
description: "Diablo Nemesis XF, the final boss top of Metal Fight Beyblade Zero-G. Auction closed with a winning bidder.",
|
|
207
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
208
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
250
|
+
categorySlugs: ["category-metal-fury", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
251
|
+
categoryNames: ["Metal Fury", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
209
252
|
brandSlug: "brand-takara-tomy",
|
|
210
253
|
brand: "Takara-Tomy",
|
|
211
254
|
startingBid: 3499,
|
|
@@ -242,8 +285,8 @@ const _rawProductsAuctionsSeedData = [
|
|
|
242
285
|
slug: "auction-beyblade-burst-cho-z-achilles",
|
|
243
286
|
title: "Beyblade Burst B-100 Cho-Z Achilles",
|
|
244
287
|
description: "Cho-Z Achilles.Ow.Zn', a Super Zeta stamina-type top from the Cho-Z generation, in excellent spinning condition.",
|
|
245
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
246
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
288
|
+
categorySlugs: ["category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
289
|
+
categoryNames: ["Superking", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
247
290
|
brandSlug: "brand-beyblade",
|
|
248
291
|
brand: "Beyblade",
|
|
249
292
|
startingBid: 1199,
|
|
@@ -278,8 +321,8 @@ const _rawProductsAuctionsSeedData = [
|
|
|
278
321
|
slug: "auction-beyblade-x-wizard-fafnir",
|
|
279
322
|
title: "Beyblade X BX-06 Wizard Fafnir (Long-Running Auction)",
|
|
280
323
|
description: "Wizard Fafnir 4-60F, one week left on the clock — a rare Beyblade X chase top with active bidding.",
|
|
281
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
282
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
324
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
325
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
283
326
|
brandSlug: "brand-takara-tomy",
|
|
284
327
|
brand: "Takara-Tomy",
|
|
285
328
|
startingBid: 999,
|
|
@@ -314,4 +357,40 @@ export const productsAuctionsSeedData = [
|
|
|
314
357
|
...a,
|
|
315
358
|
listingType: PRODUCT_FIELDS.LISTING_TYPE_VALUES.AUCTION,
|
|
316
359
|
})),
|
|
360
|
+
{
|
|
361
|
+
// Ended with NO winner — reserve never met, zero bids.
|
|
362
|
+
//
|
|
363
|
+
// Deliberately `isSold: false` with stock still on the document: this is
|
|
364
|
+
// the fixture that proves the auction branch reads `auctionEndDate`
|
|
365
|
+
// rather than falling through to the shared isSold/quantity checks. The
|
|
366
|
+
// other ended auction (diablo-nemesis) is sold AND ended, so it passes
|
|
367
|
+
// the base check and exercises nothing type-specific.
|
|
368
|
+
id: "auction-beyblade-burst-lord-spryzen-ended-unsold",
|
|
369
|
+
slug: "auction-beyblade-burst-lord-spryzen-ended-unsold",
|
|
370
|
+
title: "Beyblade Burst B-174 Lord Spryzen (Ended — Reserve Not Met)",
|
|
371
|
+
description: "Auction closed without meeting its reserve, so no winner was declared. Relisting soon.",
|
|
372
|
+
categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
373
|
+
categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
374
|
+
brandSlug: "brand-takara-tomy",
|
|
375
|
+
brand: "Takara-Tomy",
|
|
376
|
+
startingBid: 1999,
|
|
377
|
+
currentBid: 1999,
|
|
378
|
+
reservePrice: 3500,
|
|
379
|
+
currency: "INR",
|
|
380
|
+
auctionEndDate: new Date(Date.now() - 9 * 24 * 60 * 60 * 1000),
|
|
381
|
+
bidCount: 0,
|
|
382
|
+
bidsHaveStarted: false,
|
|
383
|
+
isSold: false,
|
|
384
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-lord-spryzen-ended-1-20260824/900/900"),
|
|
385
|
+
images: [
|
|
386
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-lord-spryzen-ended-1-20260824/900/900"),
|
|
387
|
+
],
|
|
388
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
389
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
|
|
390
|
+
tags: ["stamina-type"],
|
|
391
|
+
storeId: "store-beyblade-arena",
|
|
392
|
+
storeName: "Beyblade Arena",
|
|
393
|
+
createdAt: new Date("2026-08-10"),
|
|
394
|
+
updatedAt: new Date("2026-08-24"),
|
|
395
|
+
},
|
|
317
396
|
];
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* `contactMethod` ("both"), and always `acceptsShipping:false`/`negotiable:true` —
|
|
5
5
|
* no variety to exercise the classifieds filter UI or the contact-method-specific
|
|
6
6
|
* copy on the detail page (see CLAUDE.md seed-data blandness sweep, 2026-08-20).
|
|
7
|
-
* WHAT: Exports
|
|
7
|
+
* WHAT: Exports 8 classified listings on Beyblade Arena — local meetups across 5 Indian
|
|
8
8
|
* cities, covering all 3 contactMethod values and both true/false states of
|
|
9
9
|
* acceptsShipping/negotiable.
|
|
10
10
|
*
|
|
11
11
|
* EXPORTS:
|
|
12
|
-
* productsClassifiedsSeedData — Array of
|
|
12
|
+
* productsClassifiedsSeedData — Array of 8 Partial<ProductDocument> with listingType:"classified"
|
|
13
13
|
*
|
|
14
14
|
* @tag domain:products,classifieds
|
|
15
15
|
* @tag layer:seed
|
|
@@ -27,11 +27,17 @@ export const productsClassifiedsSeedData = [
|
|
|
27
27
|
slug: "classified-beyblade-stadium-set",
|
|
28
28
|
title: "Used Beyblade Stadium Set — Local Pickup Only",
|
|
29
29
|
description: "Well-loved Beyblade stadium with 6 tops and 2 launchers, sold as-is. Meet up locally — price is negotiable.",
|
|
30
|
-
categorySlugs: ["category-spinning-tops"],
|
|
31
|
-
categoryNames: ["Spinning Tops"],
|
|
30
|
+
categorySlugs: ["category-storage-cases", "category-gear-storage", "category-battle-gear", "category-spinning-tops"],
|
|
31
|
+
categoryNames: ["Cases & Trays", "Storage & Care", "Battle Gear", "Spinning Tops"],
|
|
32
32
|
brandSlug: "brand-beyblade",
|
|
33
33
|
brand: "Beyblade",
|
|
34
34
|
price: 1200,
|
|
35
|
+
// Matches `classified.negotiable: true` below — that flag is the
|
|
36
|
+
// DISPLAY hint ("₹650 (negotiable)"), this one is what actually
|
|
37
|
+
// turns the Make-an-Offer form on. The three non-negotiable
|
|
38
|
+
// classifieds deliberately leave both off.
|
|
39
|
+
allowOffers: true,
|
|
40
|
+
minOfferPercent: 70,
|
|
35
41
|
currency: "INR",
|
|
36
42
|
stockQuantity: 1,
|
|
37
43
|
availableQuantity: 1,
|
|
@@ -67,8 +73,8 @@ export const productsClassifiedsSeedData = [
|
|
|
67
73
|
slug: "classified-beyblade-burst-collection-bengaluru",
|
|
68
74
|
title: "Beyblade Burst Collection (12 Tops) — Bengaluru",
|
|
69
75
|
description: "Downsizing my Burst collection — 12 tops in good condition, fixed price, will also ship nationwide if you'd rather not meet up.",
|
|
70
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
71
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
76
|
+
categorySlugs: ["category-burst-cho-z", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
77
|
+
categoryNames: ["Cho-Z", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
72
78
|
brandSlug: "brand-beyblade",
|
|
73
79
|
brand: "Beyblade",
|
|
74
80
|
price: 4500,
|
|
@@ -107,11 +113,17 @@ export const productsClassifiedsSeedData = [
|
|
|
107
113
|
slug: "classified-beyblade-x-starter-pune",
|
|
108
114
|
title: "Beyblade X Starter Pack — Pune, Phone Contact Only",
|
|
109
115
|
description: "Barely used Beyblade X starter pack, selling because I upgraded to a full set. Call or WhatsApp only, no chat.",
|
|
110
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
111
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
116
|
+
categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
117
|
+
categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
112
118
|
brandSlug: "brand-takara-tomy",
|
|
113
119
|
brand: "Takara-Tomy",
|
|
114
120
|
price: 650,
|
|
121
|
+
// Matches `classified.negotiable: true` below — that flag is the
|
|
122
|
+
// DISPLAY hint ("₹650 (negotiable)"), this one is what actually
|
|
123
|
+
// turns the Make-an-Offer form on. The three non-negotiable
|
|
124
|
+
// classifieds deliberately leave both off.
|
|
125
|
+
allowOffers: true,
|
|
126
|
+
minOfferPercent: 70,
|
|
115
127
|
currency: "INR",
|
|
116
128
|
stockQuantity: 1,
|
|
117
129
|
availableQuantity: 1,
|
|
@@ -144,8 +156,8 @@ export const productsClassifiedsSeedData = [
|
|
|
144
156
|
slug: "classified-beyblade-metal-vintage-delhi",
|
|
145
157
|
title: "Vintage Metal Fight Lot (5 Tops) — Delhi NCR",
|
|
146
158
|
description: "A well-preserved 5-top Metal Fight lot from a long-time collector. Firm price, ships anywhere in India.",
|
|
147
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
148
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
159
|
+
categorySlugs: ["category-metal-fusion", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
160
|
+
categoryNames: ["Metal Fusion", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
149
161
|
brandSlug: "brand-takara-tomy",
|
|
150
162
|
brand: "Takara-Tomy",
|
|
151
163
|
price: 3200,
|
|
@@ -191,8 +203,8 @@ export const productsClassifiedsSeedData = [
|
|
|
191
203
|
slug: "classified-beyblade-original-grail-chennai",
|
|
192
204
|
title: "Original Series Grail Piece — Chennai, Meet Up Only",
|
|
193
205
|
description: "A genuine original-series grail piece, only selling to a local buyer I can meet in person to verify authenticity together.",
|
|
194
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
195
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
206
|
+
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
207
|
+
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
196
208
|
brandSlug: "brand-beyblade",
|
|
197
209
|
brand: "Beyblade",
|
|
198
210
|
price: 8000,
|
|
@@ -231,11 +243,17 @@ export const productsClassifiedsSeedData = [
|
|
|
231
243
|
slug: "classified-beyblade-x-tournament-kit-hyderabad",
|
|
232
244
|
title: "Tournament-Ready Beyblade X Kit — Hyderabad",
|
|
233
245
|
description: "Complete tournament-legal kit including 3 tops, stadium, and a scorecard pad from our last local meetup event.",
|
|
234
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
235
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
246
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
247
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
236
248
|
brandSlug: "brand-takara-tomy",
|
|
237
249
|
brand: "Takara-Tomy",
|
|
238
250
|
price: 2400,
|
|
251
|
+
// Matches `classified.negotiable: true` below — that flag is the
|
|
252
|
+
// DISPLAY hint ("₹650 (negotiable)"), this one is what actually
|
|
253
|
+
// turns the Make-an-Offer form on. The three non-negotiable
|
|
254
|
+
// classifieds deliberately leave both off.
|
|
255
|
+
allowOffers: true,
|
|
256
|
+
minOfferPercent: 70,
|
|
239
257
|
currency: "INR",
|
|
240
258
|
stockQuantity: 1,
|
|
241
259
|
availableQuantity: 1,
|
|
@@ -271,11 +289,17 @@ export const productsClassifiedsSeedData = [
|
|
|
271
289
|
slug: "classified-beyblade-burst-parts-mumbai",
|
|
272
290
|
title: "Spare Burst Parts Bundle — Mumbai, Ships Too",
|
|
273
291
|
description: "Assorted spare Burst layers, discs, and drivers cleared out from my parts box. Happy to meet locally or ship.",
|
|
274
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
275
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
292
|
+
categorySlugs: ["category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
293
|
+
categoryNames: ["Superking", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
276
294
|
brandSlug: "brand-beyblade",
|
|
277
295
|
brand: "Beyblade",
|
|
278
296
|
price: 450,
|
|
297
|
+
// Matches `classified.negotiable: true` below — that flag is the
|
|
298
|
+
// DISPLAY hint ("₹650 (negotiable)"), this one is what actually
|
|
299
|
+
// turns the Make-an-Offer form on. The three non-negotiable
|
|
300
|
+
// classifieds deliberately leave both off.
|
|
301
|
+
allowOffers: true,
|
|
302
|
+
minOfferPercent: 70,
|
|
279
303
|
currency: "INR",
|
|
280
304
|
stockQuantity: 1,
|
|
281
305
|
availableQuantity: 1,
|
|
@@ -303,4 +327,44 @@ export const productsClassifiedsSeedData = [
|
|
|
303
327
|
updatedAt: new Date("2026-08-18"),
|
|
304
328
|
searchTokens: buildSearchTokens("Spare Burst Parts Bundle — Mumbai, Ships Too", "Assorted spare Burst layers, discs, and drivers.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["classified", "spare-parts"]),
|
|
305
329
|
},
|
|
330
|
+
{
|
|
331
|
+
// Sold classified. Keeps `meetupArea.city` populated so the City facet
|
|
332
|
+
// still has a row to match inside the Sold scope.
|
|
333
|
+
id: "classified-beyblade-metal-galaxy-pegasus-sold-mumbai",
|
|
334
|
+
slug: "classified-beyblade-metal-galaxy-pegasus-sold-mumbai",
|
|
335
|
+
title: "Galaxy Pegasus W105R2F — Sold (Mumbai)",
|
|
336
|
+
description: "Vintage Metal Fight Galaxy Pegasus, sold to a local collector. Listing kept up for reference.",
|
|
337
|
+
categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
338
|
+
categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
339
|
+
brandSlug: "brand-beyblade",
|
|
340
|
+
brand: "Beyblade",
|
|
341
|
+
price: 2200,
|
|
342
|
+
currency: "INR",
|
|
343
|
+
stockQuantity: 0,
|
|
344
|
+
availableQuantity: 0,
|
|
345
|
+
isSold: true,
|
|
346
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-galaxy-pegasus-sold-1-20260824/900/900"),
|
|
347
|
+
images: [
|
|
348
|
+
seedExtMedia("https://picsum.photos/seed/classified-image-galaxy-pegasus-sold-1-20260824/900/900"),
|
|
349
|
+
],
|
|
350
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
351
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
|
|
352
|
+
listingType: "classified",
|
|
353
|
+
storeId: "store-beyblade-arena",
|
|
354
|
+
storeName: "Beyblade Arena",
|
|
355
|
+
classified: {
|
|
356
|
+
meetupArea: { city: "Mumbai", locality: "Dadar", pincode: "400014" },
|
|
357
|
+
contactMethod: "chat",
|
|
358
|
+
acceptsShipping: false,
|
|
359
|
+
negotiable: false,
|
|
360
|
+
},
|
|
361
|
+
customFields: [],
|
|
362
|
+
customSections: [],
|
|
363
|
+
featured: false,
|
|
364
|
+
isPromoted: false,
|
|
365
|
+
isOnSale: false,
|
|
366
|
+
tags: ["vintage", "sold"],
|
|
367
|
+
createdAt: new Date("2026-08-24"),
|
|
368
|
+
updatedAt: new Date("2026-08-24"),
|
|
369
|
+
},
|
|
306
370
|
];
|