@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
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* 2026-08-21). A real MediaUploadField file-upload video can't be reproduced from seed
|
|
10
10
|
* data (no Storage object actually exists for a seeded URL to point at) — that path is
|
|
11
11
|
* covered by a tester-checklist manual test case instead, not a fixture here.
|
|
12
|
-
* WHAT: Exports
|
|
12
|
+
* WHAT: Exports 14 standard products with listingType:"standard", covering all 4 generation
|
|
13
13
|
* leaf categories (tagged with both leaf + root category slugs).
|
|
14
14
|
*
|
|
15
15
|
* EXPORTS:
|
|
16
|
-
* productsStandardSeedData — Array of
|
|
16
|
+
* productsStandardSeedData — Array of 14 standard products with listingType:"standard"
|
|
17
17
|
*
|
|
18
18
|
* @tag domain:products,catalog
|
|
19
19
|
* @tag layer:seed
|
|
@@ -181,11 +181,13 @@ const _rawProductsStandardSeedData = [
|
|
|
181
181
|
barcodeId: "LIR-BEY-ORIG-001",
|
|
182
182
|
title: "Beyblade Original — Dranzer S",
|
|
183
183
|
description: "Plastic Generation era Dranzer S with launcher and ripcord. A classic from the original 1999-2003 Beyblade series.",
|
|
184
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
185
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
184
|
+
categorySlugs: ["category-original-hms", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
185
|
+
categoryNames: ["Heavy Metal System", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
186
186
|
brandSlug: "brand-beyblade",
|
|
187
187
|
brand: "Beyblade",
|
|
188
188
|
price: 1499,
|
|
189
|
+
allowOffers: true,
|
|
190
|
+
minOfferPercent: 70,
|
|
189
191
|
currency: "INR",
|
|
190
192
|
stockQuantity: 4,
|
|
191
193
|
availableQuantity: 4,
|
|
@@ -211,11 +213,13 @@ const _rawProductsStandardSeedData = [
|
|
|
211
213
|
barcodeId: "LIR-BEY-ORIG-002",
|
|
212
214
|
title: "Beyblade Original — Driger V",
|
|
213
215
|
description: "Vintage Driger V attack-type top from the original series, complete with launcher grip.",
|
|
214
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
215
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
216
|
+
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
217
|
+
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
216
218
|
brandSlug: "brand-beyblade",
|
|
217
219
|
brand: "Beyblade",
|
|
218
220
|
price: 1799,
|
|
221
|
+
allowOffers: true,
|
|
222
|
+
minOfferPercent: 70,
|
|
219
223
|
currency: "INR",
|
|
220
224
|
stockQuantity: 2,
|
|
221
225
|
availableQuantity: 2,
|
|
@@ -241,11 +245,13 @@ const _rawProductsStandardSeedData = [
|
|
|
241
245
|
barcodeId: "LIR-BEY-META-001",
|
|
242
246
|
title: "Metal Fight Beyblade BB-28 Storm Pegasus",
|
|
243
247
|
description: "Storm Pegasus 105RF from the Metal Fusion era — one of the most iconic Metal Fight tops.",
|
|
244
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
245
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
248
|
+
categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
249
|
+
categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
246
250
|
brandSlug: "brand-takara-tomy",
|
|
247
251
|
brand: "Takara-Tomy",
|
|
248
252
|
price: 1299,
|
|
253
|
+
allowOffers: true,
|
|
254
|
+
minOfferPercent: 70,
|
|
249
255
|
currency: "INR",
|
|
250
256
|
stockQuantity: 6,
|
|
251
257
|
availableQuantity: 6,
|
|
@@ -271,11 +277,13 @@ const _rawProductsStandardSeedData = [
|
|
|
271
277
|
barcodeId: "LIR-BEY-META-002",
|
|
272
278
|
title: "Metal Fight Beyblade BB-43 Flame Sagittario",
|
|
273
279
|
description: "Flame Sagittario C145S, a balance-type top from the Metal Masters generation.",
|
|
274
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
275
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
280
|
+
categorySlugs: ["category-metal-fury", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
281
|
+
categoryNames: ["Metal Fury", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
276
282
|
brandSlug: "brand-takara-tomy",
|
|
277
283
|
brand: "Takara-Tomy",
|
|
278
284
|
price: 1199,
|
|
285
|
+
allowOffers: true,
|
|
286
|
+
minOfferPercent: 70,
|
|
279
287
|
currency: "INR",
|
|
280
288
|
stockQuantity: 3,
|
|
281
289
|
availableQuantity: 3,
|
|
@@ -301,11 +309,13 @@ const _rawProductsStandardSeedData = [
|
|
|
301
309
|
barcodeId: "LIR-BEY-BURS-001",
|
|
302
310
|
title: "Beyblade Burst B-01 Valkyrie",
|
|
303
311
|
description: "Starter set Valkyrie Wing Accel with launcher and grip — the top that launched the Burst generation.",
|
|
304
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
305
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
312
|
+
categorySlugs: ["category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
313
|
+
categoryNames: ["Superking", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
306
314
|
brandSlug: "brand-beyblade",
|
|
307
315
|
brand: "Beyblade",
|
|
308
316
|
price: 999,
|
|
317
|
+
allowOffers: true,
|
|
318
|
+
minOfferPercent: 70,
|
|
309
319
|
currency: "INR",
|
|
310
320
|
stockQuantity: 10,
|
|
311
321
|
availableQuantity: 10,
|
|
@@ -331,11 +341,13 @@ const _rawProductsStandardSeedData = [
|
|
|
331
341
|
barcodeId: "LIR-BEY-BURS-002",
|
|
332
342
|
title: "Beyblade Burst B-59 Regalia Genesis",
|
|
333
343
|
description: "Regalia Genesis.Zt with switch launcher — Burst Rise generation attack-type top.",
|
|
334
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
335
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
344
|
+
categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
345
|
+
categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
336
346
|
brandSlug: "brand-beyblade",
|
|
337
347
|
brand: "Beyblade",
|
|
338
348
|
price: 1399,
|
|
349
|
+
allowOffers: true,
|
|
350
|
+
minOfferPercent: 70,
|
|
339
351
|
currency: "INR",
|
|
340
352
|
stockQuantity: 5,
|
|
341
353
|
availableQuantity: 5,
|
|
@@ -361,11 +373,13 @@ const _rawProductsStandardSeedData = [
|
|
|
361
373
|
barcodeId: "LIR-BEY-X-001",
|
|
362
374
|
title: "Beyblade X BX-01 Wizard Arrow",
|
|
363
375
|
description: "Wizard Arrow 4-60F, a starter top from the Beyblade X Xtreme Gear generation.",
|
|
364
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
365
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
376
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
377
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
366
378
|
brandSlug: "brand-takara-tomy",
|
|
367
379
|
brand: "Takara-Tomy",
|
|
368
380
|
price: 899,
|
|
381
|
+
allowOffers: true,
|
|
382
|
+
minOfferPercent: 70,
|
|
369
383
|
currency: "INR",
|
|
370
384
|
stockQuantity: 12,
|
|
371
385
|
availableQuantity: 12,
|
|
@@ -391,11 +405,13 @@ const _rawProductsStandardSeedData = [
|
|
|
391
405
|
barcodeId: "LIR-BEY-X-002",
|
|
392
406
|
title: "Beyblade X BX-05 Knife Shinobi",
|
|
393
407
|
description: "Knife Shinobi 3-60GF, a balance-type top with tournament-grade stamina parts.",
|
|
394
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
395
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
408
|
+
categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
409
|
+
categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
396
410
|
brandSlug: "brand-takara-tomy",
|
|
397
411
|
brand: "Takara-Tomy",
|
|
398
412
|
price: 949,
|
|
413
|
+
allowOffers: true,
|
|
414
|
+
minOfferPercent: 70,
|
|
399
415
|
currency: "INR",
|
|
400
416
|
stockQuantity: 7,
|
|
401
417
|
availableQuantity: 7,
|
|
@@ -421,8 +437,8 @@ const _rawProductsStandardSeedData = [
|
|
|
421
437
|
barcodeId: "LIR-BEY-VID-001",
|
|
422
438
|
title: "Beyblade Original — Dragoon F (Video Demo)",
|
|
423
439
|
description: "Dragoon F attack-type top from the original series. Listed with an unboxing/spin video for gallery testing.",
|
|
424
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
425
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
440
|
+
categorySlugs: ["category-original-hms", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
441
|
+
categoryNames: ["Heavy Metal System", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
426
442
|
brandSlug: "brand-beyblade",
|
|
427
443
|
brand: "Beyblade",
|
|
428
444
|
price: 1599,
|
|
@@ -454,8 +470,8 @@ const _rawProductsStandardSeedData = [
|
|
|
454
470
|
barcodeId: "LIR-BEY-VID-002",
|
|
455
471
|
title: "Beyblade X BX-02 Dran Sword (Video Demo)",
|
|
456
472
|
description: "Dran Sword 3-60F attack-type top from the Beyblade X Xtreme Gear generation. Listed with a battle-test video for gallery testing.",
|
|
457
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
458
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
473
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
474
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
459
475
|
brandSlug: "brand-takara-tomy",
|
|
460
476
|
brand: "Takara-Tomy",
|
|
461
477
|
price: 949,
|
|
@@ -495,8 +511,8 @@ const _rawProductsStandardSeedData = [
|
|
|
495
511
|
barcodeId: "LIR-BEY-VID-003",
|
|
496
512
|
title: "Metal Fight Beyblade BB-118 Dark Bull (Video Demo, YouTube)",
|
|
497
513
|
description: "Dark Bull H145SD, a defense-type top from the Metal Masters generation. Listed with a YouTube battle video to exercise the gallery's YouTube-embed video source.",
|
|
498
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
499
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
514
|
+
categorySlugs: ["category-metal-fusion", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
515
|
+
categoryNames: ["Metal Fusion", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
500
516
|
brandSlug: "brand-takara-tomy",
|
|
501
517
|
brand: "Takara-Tomy",
|
|
502
518
|
price: 1099,
|
|
@@ -537,8 +553,8 @@ const _rawProductsStandardSeedData = [
|
|
|
537
553
|
barcodeId: "LIR-BEY-VID-004",
|
|
538
554
|
title: "Beyblade Burst B-97 Spryzen S2 (Video Demo, Wikimedia)",
|
|
539
555
|
description: "Spryzen S2 stamina-type top from the God Layer generation. Listed with a Wikimedia-hosted spin video to exercise a second raw-external-host video source.",
|
|
540
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
541
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
556
|
+
categorySlugs: ["category-burst-cho-z", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
557
|
+
categoryNames: ["Cho-Z", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
542
558
|
brandSlug: "brand-beyblade",
|
|
543
559
|
brand: "Beyblade",
|
|
544
560
|
price: 899,
|
|
@@ -564,6 +580,63 @@ const _rawProductsStandardSeedData = [
|
|
|
564
580
|
createdAt: new Date("2026-08-21"),
|
|
565
581
|
updatedAt: new Date("2026-08-21"),
|
|
566
582
|
},
|
|
583
|
+
{
|
|
584
|
+
// Two sold-out standard fixtures, so a 24-row page of /products has more
|
|
585
|
+
// than one row in the "Sold & Ended" scope. Both stay `published` — an
|
|
586
|
+
// archived row is hidden by the status filter before the availability
|
|
587
|
+
// predicate ever runs, so it would prove nothing.
|
|
588
|
+
id: "product-beyblade-x-dran-buster-sold-out",
|
|
589
|
+
slug: "product-beyblade-x-dran-buster-sold-out",
|
|
590
|
+
title: "Beyblade X BX-34 Dran Buster (Sold Out)",
|
|
591
|
+
description: "The BX-34 Dran Buster attack type — this batch is fully sold. Watch for the next restock.",
|
|
592
|
+
price: 1499,
|
|
593
|
+
currency: "INR",
|
|
594
|
+
categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
595
|
+
categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
596
|
+
brandSlug: "brand-takara-tomy",
|
|
597
|
+
brand: "Takara-Tomy",
|
|
598
|
+
stockQuantity: 0,
|
|
599
|
+
availableQuantity: 0,
|
|
600
|
+
isSold: true,
|
|
601
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-dran-buster-sold-out-1-20260824/900/900"),
|
|
602
|
+
images: [
|
|
603
|
+
seedExtMedia("https://picsum.photos/seed/product-image-dran-buster-sold-out-1-20260824/900/900"),
|
|
604
|
+
seedExtMedia("https://picsum.photos/seed/product-image-dran-buster-sold-out-2-20260824/900/900"),
|
|
605
|
+
],
|
|
606
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
607
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
608
|
+
tags: ["attack-type", "sold-out"],
|
|
609
|
+
storeId: "store-beyblade-arena",
|
|
610
|
+
storeName: "Beyblade Arena",
|
|
611
|
+
createdAt: new Date("2026-08-24"),
|
|
612
|
+
updatedAt: new Date("2026-08-24"),
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
id: "product-beyblade-burst-valtryek-v3-sold-out",
|
|
616
|
+
slug: "product-beyblade-burst-valtryek-v3-sold-out",
|
|
617
|
+
title: "Beyblade Burst Valtryek V3 (Sold Out)",
|
|
618
|
+
description: "Valtryek V3, the balance-type staple. This run sold through — no units remaining.",
|
|
619
|
+
price: 899,
|
|
620
|
+
currency: "INR",
|
|
621
|
+
categorySlugs: ["category-burst-superking", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
622
|
+
categoryNames: ["Superking", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
623
|
+
brandSlug: "brand-beyblade",
|
|
624
|
+
brand: "Beyblade",
|
|
625
|
+
stockQuantity: 0,
|
|
626
|
+
availableQuantity: 0,
|
|
627
|
+
isSold: true,
|
|
628
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-valtryek-v3-sold-out-1-20260824/900/900"),
|
|
629
|
+
images: [
|
|
630
|
+
seedExtMedia("https://picsum.photos/seed/product-image-valtryek-v3-sold-out-1-20260824/900/900"),
|
|
631
|
+
],
|
|
632
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
633
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
634
|
+
tags: ["balance-type", "sold-out"],
|
|
635
|
+
storeId: "store-beyblade-arena",
|
|
636
|
+
storeName: "Beyblade Arena",
|
|
637
|
+
createdAt: new Date("2026-08-24"),
|
|
638
|
+
updatedAt: new Date("2026-08-24"),
|
|
639
|
+
},
|
|
567
640
|
];
|
|
568
641
|
export const productsStandardSeedData = [
|
|
569
642
|
..._rawProductsStandardSeedData.map((p) => withTokens({
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* with "art" — both printed-only physical goods. Previously left as an empty stub,
|
|
4
4
|
* but sticker sheets fit the Beyblade theme naturally (see CLAUDE.md seed-data
|
|
5
5
|
* blandness sweep, 2026-08-20 session).
|
|
6
|
-
* WHAT: Exports
|
|
6
|
+
* WHAT: Exports 6 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
|
|
7
7
|
* material, and finish (including a holographic variant and a die-cut vinyl set).
|
|
8
8
|
*
|
|
9
9
|
* EXPORTS:
|
|
10
|
-
* productsStickersSeedData — Array of
|
|
10
|
+
* productsStickersSeedData — Array of 6 Partial<ProductDocument> with listingType:"stickers"
|
|
11
11
|
*
|
|
12
12
|
* @tag domain:products,stickers
|
|
13
13
|
* @tag layer:seed
|
|
@@ -25,8 +25,8 @@ export const productsStickersSeedData = [
|
|
|
25
25
|
slug: "stickers-beyblade-original-classic-sheet",
|
|
26
26
|
title: "Beyblade Original Classic — Sticker Sheet",
|
|
27
27
|
description: "A 5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon in classic original-series art style.",
|
|
28
|
-
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
29
|
-
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
28
|
+
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
29
|
+
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
30
30
|
brandSlug: "brand-beyblade",
|
|
31
31
|
brand: "Beyblade",
|
|
32
32
|
price: 149,
|
|
@@ -57,8 +57,8 @@ export const productsStickersSeedData = [
|
|
|
57
57
|
slug: "stickers-beyblade-x-holographic-pack",
|
|
58
58
|
title: "Beyblade X Holographic Sticker Pack",
|
|
59
59
|
description: "A holographic-finish sticker pack featuring the current Beyblade X lineup — catches the light with a rainbow shimmer.",
|
|
60
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
61
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
60
|
+
categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
61
|
+
categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
62
62
|
brandSlug: "brand-takara-tomy",
|
|
63
63
|
brand: "Takara-Tomy",
|
|
64
64
|
price: 199,
|
|
@@ -92,8 +92,8 @@ export const productsStickersSeedData = [
|
|
|
92
92
|
slug: "stickers-beyblade-burst-diecut-set",
|
|
93
93
|
title: "Beyblade Burst Die-Cut Sticker Set (6-Pack)",
|
|
94
94
|
description: "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops — no background, clean edges, weatherproof.",
|
|
95
|
-
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
96
|
-
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
95
|
+
categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
96
|
+
categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
97
97
|
brandSlug: "brand-beyblade",
|
|
98
98
|
brand: "Beyblade",
|
|
99
99
|
price: 249,
|
|
@@ -124,8 +124,8 @@ export const productsStickersSeedData = [
|
|
|
124
124
|
slug: "stickers-beyblade-metal-retro-sheet",
|
|
125
125
|
title: "Metal Fight Retro Sticker Sheet — Limited /500",
|
|
126
126
|
description: "A limited-edition retro-styled sticker sheet celebrating Metal Fight favorites, numbered out of 500.",
|
|
127
|
-
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
128
|
-
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
127
|
+
categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
128
|
+
categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
129
129
|
brandSlug: "brand-takara-tomy",
|
|
130
130
|
brand: "Takara-Tomy",
|
|
131
131
|
price: 179,
|
|
@@ -156,8 +156,8 @@ export const productsStickersSeedData = [
|
|
|
156
156
|
slug: "stickers-beyblade-x-glow-in-dark",
|
|
157
157
|
title: "Beyblade X Glow-in-the-Dark Sticker Pack",
|
|
158
158
|
description: "Charge these stickers under light and watch the Beyblade X logos glow in the dark. Great for stadium cases and water bottles.",
|
|
159
|
-
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
160
|
-
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
159
|
+
categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
160
|
+
categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
161
161
|
brandSlug: "brand-takara-tomy",
|
|
162
162
|
brand: "Takara-Tomy",
|
|
163
163
|
price: 229,
|
|
@@ -186,4 +186,39 @@ export const productsStickersSeedData = [
|
|
|
186
186
|
updatedAt: new Date("2026-08-19"),
|
|
187
187
|
searchTokens: buildSearchTokens("Beyblade X Glow-in-the-Dark Sticker Pack", "Charge under light and watch the Beyblade X logos glow in the dark.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
|
|
188
188
|
},
|
|
189
|
+
{
|
|
190
|
+
// Sold-out fixture — see the art file's equivalent for the shape rationale.
|
|
191
|
+
id: "sticker-beyblade-metal-fight-sold-out",
|
|
192
|
+
slug: "sticker-beyblade-metal-fight-sold-out",
|
|
193
|
+
title: "Beyblade Metal Fight Sticker Sheet (Sold Out)",
|
|
194
|
+
description: "The original Metal Fight sticker sheet run, now fully sold out. Restock TBD.",
|
|
195
|
+
categorySlugs: ["category-metal-fury", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
196
|
+
categoryNames: ["Metal Fury", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
197
|
+
brandSlug: "brand-beyblade",
|
|
198
|
+
brand: "Beyblade",
|
|
199
|
+
price: 199,
|
|
200
|
+
currency: "INR",
|
|
201
|
+
stockQuantity: 0,
|
|
202
|
+
availableQuantity: 0,
|
|
203
|
+
isSold: true,
|
|
204
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/sticker-image-metal-fight-sold-out-1-20260824/900/900"),
|
|
205
|
+
images: [
|
|
206
|
+
seedExtMedia("https://picsum.photos/seed/sticker-image-metal-fight-sold-out-1-20260824/900/900"),
|
|
207
|
+
],
|
|
208
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
209
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
210
|
+
listingType: "stickers",
|
|
211
|
+
storeId: "store-beyblade-arena",
|
|
212
|
+
storeName: "Beyblade Arena",
|
|
213
|
+
printMeta: { size: "10x15 cm sheet", material: "Matte vinyl", finish: "Matte" },
|
|
214
|
+
customFields: [],
|
|
215
|
+
customSections: [],
|
|
216
|
+
featured: false,
|
|
217
|
+
isPromoted: false,
|
|
218
|
+
isOnSale: false,
|
|
219
|
+
tags: ["stickers", "sold-out"],
|
|
220
|
+
createdAt: new Date("2026-08-24"),
|
|
221
|
+
updatedAt: new Date("2026-08-24"),
|
|
222
|
+
searchTokens: buildSearchTokens("Beyblade Metal Fight Sticker Sheet (Sold Out)", "The original Metal Fight sticker sheet run, now fully sold out.", "Beyblade", "brand-beyblade", ["Beyblade Metal", "Spinning Tops"], ["stickers", "sold-out"]),
|
|
223
|
+
},
|
|
189
224
|
];
|
|
@@ -111,7 +111,12 @@ for (let i = 0; i < 65; i++) {
|
|
|
111
111
|
: undefined,
|
|
112
112
|
verified: i % 3 !== 2,
|
|
113
113
|
status: "approved",
|
|
114
|
-
|
|
114
|
+
// Derived from the loop index, not Math.random(): a seed file is
|
|
115
|
+
// re-executed top-to-bottom on every CLI invocation, so a random value
|
|
116
|
+
// rewrites this field on every reseed and makes `appkit-seed status` diffs
|
|
117
|
+
// permanently noisy (Root Cause #25). The file's own header already claimed
|
|
118
|
+
// "no Math.random()" — this was the one place it wasn't true.
|
|
119
|
+
helpfulCount: (i * 7) % 20,
|
|
115
120
|
reportCount: 0,
|
|
116
121
|
sellerReply: hasSellerReply ? sellerReplies[Math.floor(i / 4) % sellerReplies.length] : undefined,
|
|
117
122
|
sellerRepliedAt: hasSellerReply ? daysAgo(daysAgoCreated - 2) : undefined,
|
|
@@ -1,39 +1,2 @@
|
|
|
1
1
|
import type { SiteSettingsDocument } from "../features/admin/schemas";
|
|
2
|
-
export declare const siteSettingsSeedData: Partial<SiteSettingsDocument
|
|
3
|
-
adSettings: {
|
|
4
|
-
consentRequired: boolean;
|
|
5
|
-
placements: readonly {
|
|
6
|
-
id: string;
|
|
7
|
-
label: string;
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
reservedHeight: number;
|
|
10
|
-
}[];
|
|
11
|
-
providerCredentials: {
|
|
12
|
-
adsenseClientId: string;
|
|
13
|
-
thirdPartyScriptUrl: string;
|
|
14
|
-
};
|
|
15
|
-
inventory: {
|
|
16
|
-
id: string;
|
|
17
|
-
name: string;
|
|
18
|
-
provider: "manual" | "adsense" | "thirdParty";
|
|
19
|
-
status: "draft" | "active" | "scheduled" | "paused";
|
|
20
|
-
placementIds: string[];
|
|
21
|
-
requiresConsent: boolean;
|
|
22
|
-
priority: number;
|
|
23
|
-
startAt?: string;
|
|
24
|
-
endAt?: string;
|
|
25
|
-
createdAt: string;
|
|
26
|
-
updatedAt: string;
|
|
27
|
-
updatedBy: string;
|
|
28
|
-
creative: {
|
|
29
|
-
title?: string;
|
|
30
|
-
body?: string;
|
|
31
|
-
imageUrl?: string;
|
|
32
|
-
ctaLabel?: string;
|
|
33
|
-
ctaHref?: string;
|
|
34
|
-
adsenseSlot?: string;
|
|
35
|
-
thirdPartyUrl?: string;
|
|
36
|
-
};
|
|
37
|
-
}[];
|
|
38
|
-
};
|
|
39
|
-
};
|
|
2
|
+
export declare const siteSettingsSeedData: Partial<SiteSettingsDocument>;
|
|
@@ -47,9 +47,15 @@ export const siteSettingsSeedData = {
|
|
|
47
47
|
id: "global",
|
|
48
48
|
siteName: "LetItRip",
|
|
49
49
|
motto: "India's Marketplace for Collectibles — Action Figures, Trading Cards, Spinning Tops & More",
|
|
50
|
+
// `message` is the canonical field — `AnnouncementBar` and the homepage read
|
|
51
|
+
// it. The main admin editor used to save this copy under `text`, which no
|
|
52
|
+
// renderer has ever read, so admin-authored announcements saved and then
|
|
53
|
+
// never appeared (fixed 2026-08-24). `link` is seeded because it only became
|
|
54
|
+
// a rendered field in that same fix — without a fixture nothing exercises it.
|
|
50
55
|
announcementBar: {
|
|
51
56
|
enabled: true,
|
|
52
57
|
message: "🎉 Up to 25% off select listings + free shipping on orders above ₹999 — See Events for codes",
|
|
58
|
+
link: "/events",
|
|
53
59
|
},
|
|
54
60
|
watermark: {
|
|
55
61
|
type: "text",
|
|
@@ -259,83 +265,29 @@ export const siteSettingsSeedData = {
|
|
|
259
265
|
enabled: true,
|
|
260
266
|
},
|
|
261
267
|
],
|
|
268
|
+
// Every key here is an ADMIN OVERRIDE, and an empty string is the correct
|
|
269
|
+
// default: `PolicyPageView` falls back to the i18n `sections[]` content for
|
|
270
|
+
// that page whenever the value is empty, and every one of these pages already
|
|
271
|
+
// ships full copy in `messages/en.json`.
|
|
272
|
+
//
|
|
273
|
+
// Two hard constraints, both learned the hard way (2026-08-24):
|
|
274
|
+
// 1. The value must be raw HTML. `PolicyPageView` injects it with
|
|
275
|
+
// `dangerouslySetInnerHTML`, and the admin Legal tab edits it as a plain
|
|
276
|
+
// HTML textarea. This block previously held TipTap `JSON.stringify({...})`
|
|
277
|
+
// documents, so the one key that DID match a real reader (`refundPolicy`)
|
|
278
|
+
// rendered a wall of raw JSON on /refund-policy in production.
|
|
279
|
+
// 2. The key names must match `POLICY_META[*].firestoreField` in
|
|
280
|
+
// `features/about/components/PolicyPageView.tsx`. The other three keys here
|
|
281
|
+
// were `termsOfService`/`privacyPolicy`/`shippingPolicy` — names no reader
|
|
282
|
+
// or writer has ever used, so they were silently inert.
|
|
262
283
|
legalPages: {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
type: "paragraph",
|
|
273
|
-
content: [
|
|
274
|
-
{
|
|
275
|
-
type: "text",
|
|
276
|
-
text: "Welcome to LetItRip. By accessing our platform, you agree to these terms...",
|
|
277
|
-
},
|
|
278
|
-
],
|
|
279
|
-
},
|
|
280
|
-
],
|
|
281
|
-
}),
|
|
282
|
-
privacyPolicy: JSON.stringify({
|
|
283
|
-
type: "doc",
|
|
284
|
-
content: [
|
|
285
|
-
{
|
|
286
|
-
type: "heading",
|
|
287
|
-
attrs: { level: 1 },
|
|
288
|
-
content: [{ type: "text", text: "Privacy Policy" }],
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
type: "paragraph",
|
|
292
|
-
content: [
|
|
293
|
-
{
|
|
294
|
-
type: "text",
|
|
295
|
-
text: "Your privacy is important to us. This policy describes how we collect and use your data...",
|
|
296
|
-
},
|
|
297
|
-
],
|
|
298
|
-
},
|
|
299
|
-
],
|
|
300
|
-
}),
|
|
301
|
-
refundPolicy: JSON.stringify({
|
|
302
|
-
type: "doc",
|
|
303
|
-
content: [
|
|
304
|
-
{
|
|
305
|
-
type: "heading",
|
|
306
|
-
attrs: { level: 1 },
|
|
307
|
-
content: [{ type: "text", text: "Refund Policy" }],
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
type: "paragraph",
|
|
311
|
-
content: [
|
|
312
|
-
{
|
|
313
|
-
type: "text",
|
|
314
|
-
text: "We offer a 7-day return and refund policy on most products. Items must be in original condition...",
|
|
315
|
-
},
|
|
316
|
-
],
|
|
317
|
-
},
|
|
318
|
-
],
|
|
319
|
-
}),
|
|
320
|
-
shippingPolicy: JSON.stringify({
|
|
321
|
-
type: "doc",
|
|
322
|
-
content: [
|
|
323
|
-
{
|
|
324
|
-
type: "heading",
|
|
325
|
-
attrs: { level: 1 },
|
|
326
|
-
content: [{ type: "text", text: "Shipping Policy" }],
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
type: "paragraph",
|
|
330
|
-
content: [
|
|
331
|
-
{
|
|
332
|
-
type: "text",
|
|
333
|
-
text: "We offer free shipping on orders above ₹999. Standard delivery takes 3-7 business days...",
|
|
334
|
-
},
|
|
335
|
-
],
|
|
336
|
-
},
|
|
337
|
-
],
|
|
338
|
-
}),
|
|
284
|
+
terms: "",
|
|
285
|
+
privacy: "",
|
|
286
|
+
cookies: "",
|
|
287
|
+
refundPolicy: "",
|
|
288
|
+
shipping: "",
|
|
289
|
+
ethics: "",
|
|
290
|
+
codeOfConduct: "",
|
|
339
291
|
},
|
|
340
292
|
shipping: {
|
|
341
293
|
estimatedDays: 7,
|
|
@@ -499,6 +451,7 @@ export const siteSettingsSeedData = {
|
|
|
499
451
|
notifications: true,
|
|
500
452
|
sellerRegistration: true,
|
|
501
453
|
preOrders: true,
|
|
454
|
+
offers: true,
|
|
502
455
|
adminCheckoutBypass: false,
|
|
503
456
|
listingTypes: {
|
|
504
457
|
standard: true,
|
|
@@ -553,6 +506,15 @@ export const siteSettingsSeedData = {
|
|
|
553
506
|
tiktokAccessToken: "tiktok_access_token_PLACEHOLDER",
|
|
554
507
|
deviantartClientId: "deviantart_client_id_PLACEHOLDER",
|
|
555
508
|
deviantartClientSecret: "deviantart_client_secret_PLACEHOLDER",
|
|
509
|
+
// Google Places — billed API. Left EMPTY for the same reason as the Meta
|
|
510
|
+
// secrets above: `/api/social-feed/google-reviews` and
|
|
511
|
+
// `GoogleReviewsSection` read these directly and would treat a
|
|
512
|
+
// `*_PLACEHOLDER` string as a usable key, producing a failed billed call
|
|
513
|
+
// instead of cleanly skipping. Editable at Admin → Site Settings →
|
|
514
|
+
// Integrations (inputs added 2026-08-24 — both fields were consumed by the
|
|
515
|
+
// Google Reviews section but had no UI, so they could never be set).
|
|
516
|
+
googleMapsApiKey: "",
|
|
517
|
+
googlePlaceId: "",
|
|
556
518
|
},
|
|
557
519
|
notificationChannels: {
|
|
558
520
|
inApp: { enabled: true, readOnly: true },
|
|
@@ -75,6 +75,12 @@ export const storesSeedData = [
|
|
|
75
75
|
isPublic: true,
|
|
76
76
|
isVacationMode: false,
|
|
77
77
|
emiEnabled: true,
|
|
78
|
+
// No seeded store set either flag before 2026-08-24, so the verification
|
|
79
|
+
// badge and every featured-store surface rendered from empty data — and the
|
|
80
|
+
// public /stores "Featured" toggle (which only started filtering at all in
|
|
81
|
+
// the same change) had nothing to match.
|
|
82
|
+
isVerified: true,
|
|
83
|
+
isFeatured: true,
|
|
78
84
|
stats: {
|
|
79
85
|
totalProducts: 0,
|
|
80
86
|
itemsSold: 0,
|
|
@@ -124,8 +130,16 @@ export const storesSeedData = [
|
|
|
124
130
|
isPublic: true,
|
|
125
131
|
isVacationMode: false,
|
|
126
132
|
emiEnabled: true,
|
|
133
|
+
isVerified: true,
|
|
127
134
|
stats: { totalProducts: 0, itemsSold: 0, totalReviews: 6, averageRating: 4.8 },
|
|
128
|
-
|
|
135
|
+
// `host_auctions` added 2026-08-24. Every one of the seeded auctions belongs
|
|
136
|
+
// to this store, but its owner could not have created any of them:
|
|
137
|
+
// `createSellerProductAction` throws AuthorizationError for
|
|
138
|
+
// `listingType === "auction"` without this capability. The only store that
|
|
139
|
+
// had it (letitrip-official) owns zero auctions, so no seeded seller could
|
|
140
|
+
// walk a successful auction-create flow except by logging in as admin,
|
|
141
|
+
// which bypasses the gate entirely.
|
|
142
|
+
capabilities: ["host_auctions", "host_preorders", "verified_seller", "create_coupons", "suggest_brands"],
|
|
129
143
|
createdAt: daysAgo(150),
|
|
130
144
|
updatedAt: daysAgo(4),
|
|
131
145
|
},
|
|
@@ -157,4 +171,60 @@ export const storesSeedData = [
|
|
|
157
171
|
createdAt: daysAgo(1),
|
|
158
172
|
updatedAt: daysAgo(1),
|
|
159
173
|
},
|
|
174
|
+
// ── Store 4: pending seller application ───────────────────────────────────
|
|
175
|
+
// `StoreStatus` is pending|active|suspended|rejected, but every seeded store
|
|
176
|
+
// was `active` — so three of the four admin status chips could only ever
|
|
177
|
+
// return an empty list, and the seller-approval queue had nothing in it.
|
|
178
|
+
{
|
|
179
|
+
id: "store-blader-bazaar",
|
|
180
|
+
storeSlug: "store-blader-bazaar",
|
|
181
|
+
ownerId: "user-meera-bey",
|
|
182
|
+
storeName: "Blader Bazaar",
|
|
183
|
+
storeDescription: "Applied to sell refurbished Burst-era tops and spare parts. Awaiting review — not yet visible to buyers.",
|
|
184
|
+
storeCategory: "category-beyblade-burst",
|
|
185
|
+
storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-blader-bazaar-20260101/400/400"),
|
|
186
|
+
storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-blader-bazaar-20260101/1600/400"),
|
|
187
|
+
status: STORE_FIELDS.STATUS_VALUES.PENDING,
|
|
188
|
+
bio: "Refurbishing and reselling Burst-era tops and parts.",
|
|
189
|
+
location: "Pune, Maharashtra, India",
|
|
190
|
+
returnPolicy: "7-day returns once approved.",
|
|
191
|
+
shippingPolicy: "Standard courier, dispatch within 48 hours.",
|
|
192
|
+
// A pending store is not public — this pairing is the point of the fixture:
|
|
193
|
+
// public visibility gates on `status`/`isPublic`, not on the user doc's own
|
|
194
|
+
// storeStatus, and the two are separate fields.
|
|
195
|
+
isPublic: false,
|
|
196
|
+
isVacationMode: false,
|
|
197
|
+
isVerified: false,
|
|
198
|
+
stats: { totalProducts: 0, itemsSold: 0, totalReviews: 0, averageRating: 0 },
|
|
199
|
+
capabilities: ["suggest_brands", "create_coupons"],
|
|
200
|
+
createdAt: daysAgo(4),
|
|
201
|
+
updatedAt: daysAgo(4),
|
|
202
|
+
},
|
|
203
|
+
// ── Store 5: suspended store ──────────────────────────────────────────────
|
|
204
|
+
// Exercises `suspensionReason`, which no seeded row populated, and gives the
|
|
205
|
+
// admin "Suspended" chip a row.
|
|
206
|
+
{
|
|
207
|
+
id: "store-vintage-vault-co",
|
|
208
|
+
storeSlug: "store-vintage-vault-co",
|
|
209
|
+
ownerId: "user-sneha-vintage",
|
|
210
|
+
storeName: "Vintage Vault Co.",
|
|
211
|
+
storeDescription: "Vintage original-series specialist. Currently suspended pending a listing-authenticity review.",
|
|
212
|
+
storeCategory: "category-beyblade-original",
|
|
213
|
+
storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-vintage-vault-20260101/400/400"),
|
|
214
|
+
storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-vintage-vault-20260101/1600/400"),
|
|
215
|
+
status: STORE_FIELDS.STATUS_VALUES.SUSPENDED,
|
|
216
|
+
suspensionReason: "Three listings flagged as possible reproductions; suspended while authenticity documentation is reviewed.",
|
|
217
|
+
adminNotes: "Owner responsive. Re-review once COAs are supplied.",
|
|
218
|
+
bio: "Original-series collector turned seller.",
|
|
219
|
+
location: "Kolkata, West Bengal, India",
|
|
220
|
+
returnPolicy: "14-day returns on sealed items.",
|
|
221
|
+
shippingPolicy: "Insured courier only.",
|
|
222
|
+
isPublic: false,
|
|
223
|
+
isVacationMode: false,
|
|
224
|
+
isVerified: false,
|
|
225
|
+
stats: { totalProducts: 0, itemsSold: 0, totalReviews: 0, averageRating: 0 },
|
|
226
|
+
capabilities: ["suggest_brands"],
|
|
227
|
+
createdAt: daysAgo(220),
|
|
228
|
+
updatedAt: daysAgo(9),
|
|
229
|
+
},
|
|
160
230
|
];
|