@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
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/*
|
|
4
|
+
* WHY: Offers had a seller surface (/store/offers) and a buyer surface
|
|
5
|
+
* (/user/offers) but no admin surface at all — despite the offers
|
|
6
|
+
* collection carrying real money commitments, a 48h locked price, and a
|
|
7
|
+
* lane that can block a buyer's whole cart. There was no way for support
|
|
8
|
+
* to see an offer, let alone clear a stuck one.
|
|
9
|
+
* WHAT: The admin offers list. Cloned from SellerOffersView rather than
|
|
10
|
+
* AdminBidsView: the seller view is already offer-shaped and already
|
|
11
|
+
* satisfies `audit-listing-detail-affordance` (row click -> detail
|
|
12
|
+
* modal), whereas AdminBidsView is itself still on the Root Cause #56
|
|
13
|
+
* backlog and cloning it would have added a tenth violation.
|
|
14
|
+
*
|
|
15
|
+
* Two things differ from the seller view, both deliberate:
|
|
16
|
+
* - the buyer's real name/email is shown UNMASKED (the seller view masks via
|
|
17
|
+
* `maskOfferForSeller`) — an admin investigating a dispute needs identity;
|
|
18
|
+
* - the only mutation is Cancel. Accepting or countering on a seller's behalf
|
|
19
|
+
* is an authority nobody asked for, so `ADMIN_ROW_ACTIONS.offers` is
|
|
20
|
+
* deliberately just [VIEW, CANCEL].
|
|
21
|
+
*
|
|
22
|
+
* EXPORTS:
|
|
23
|
+
* AdminOffersView
|
|
24
|
+
*
|
|
25
|
+
* @tag domain:admin,offers
|
|
26
|
+
* @tag layer:feature-view
|
|
27
|
+
* @tag pattern:slot-shell
|
|
28
|
+
* @tag access:client
|
|
29
|
+
* @tag consumers:src/app/[locale]/admin/offers/page.tsx
|
|
30
|
+
* @tag sideEffects:network
|
|
31
|
+
*/
|
|
32
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
33
|
+
import { sieveFilter, SIEVE_OP } from "@mohasinac/appkit/client";
|
|
34
|
+
import { sortBy } from "@mohasinac/appkit/client";
|
|
35
|
+
import React, { useState } from "react";
|
|
36
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
37
|
+
import { ConfirmDeleteModal, FilterChipGroup, ListingLayout, RecordDetailModal, RowActionMenu, useToast, } from "../../../ui";
|
|
38
|
+
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
39
|
+
import { ADMIN_OFFER_STATUS_TABS } from "../constants/filter-tabs";
|
|
40
|
+
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
41
|
+
import { ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
|
|
42
|
+
import { ROUTES } from "../../../next/routing/route-map";
|
|
43
|
+
import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
|
|
44
|
+
import { DataListingView } from "./DataListingView";
|
|
45
|
+
import { apiClient } from "../../../http";
|
|
46
|
+
/** Terminal states — an offer here has nothing left to cancel. */
|
|
47
|
+
const TERMINAL_STATUSES = new Set(["paid", "declined", "expired", "withdrawn"]);
|
|
48
|
+
export function AdminOffersView({ children, ...props }) {
|
|
49
|
+
const queryClient = useQueryClient();
|
|
50
|
+
const { showToast } = useToast();
|
|
51
|
+
const [detailRow, setDetailRow] = useState(null);
|
|
52
|
+
const [cancelOpen, setCancelOpen] = useState(false);
|
|
53
|
+
const [selectedRow, setSelectedRow] = useState(null);
|
|
54
|
+
const cancelMutation = useApiMutation({
|
|
55
|
+
mutationFn: async (offerId) => {
|
|
56
|
+
await apiClient.patch(ADMIN_ENDPOINTS.OFFER_BY_ID(offerId), { status: "expired" });
|
|
57
|
+
},
|
|
58
|
+
onSuccess: () => {
|
|
59
|
+
showToast("Offer cancelled and cleared from the buyer's cart.", "success");
|
|
60
|
+
queryClient.invalidateQueries({ queryKey: ["admin", "offers"] });
|
|
61
|
+
setCancelOpen(false);
|
|
62
|
+
setSelectedRow(null);
|
|
63
|
+
},
|
|
64
|
+
onError: (err) => {
|
|
65
|
+
showToast(err?.message ?? "Failed to cancel offer.", "error");
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
if (React.Children.count(children) > 0) {
|
|
69
|
+
return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
|
|
70
|
+
}
|
|
71
|
+
const config = {
|
|
72
|
+
portal: "admin",
|
|
73
|
+
title: "Offers",
|
|
74
|
+
searchPlaceholder: "Search offers by product, buyer, or store",
|
|
75
|
+
emptyLabel: "No offers found",
|
|
76
|
+
filterKeys: ["status"],
|
|
77
|
+
defaultSort: sortBy("createdAt", "DESC"),
|
|
78
|
+
queryKey: ["admin", "offers", "listing"],
|
|
79
|
+
endpoint: ADMIN_ENDPOINTS.OFFERS,
|
|
80
|
+
sortOptions: [
|
|
81
|
+
{ value: sortBy("createdAt", "DESC"), label: "Newest" },
|
|
82
|
+
{ value: sortBy("createdAt", "ASC"), label: "Oldest" },
|
|
83
|
+
{ value: sortBy("offerAmount", "DESC"), label: "Highest offer" },
|
|
84
|
+
],
|
|
85
|
+
mapRows: (response) => toRecordArray(response.items).map((item, index) => ({
|
|
86
|
+
id: toStringValue(item.id, `offer-${index}`),
|
|
87
|
+
// The LISTING, not the offer id — a row identified only by
|
|
88
|
+
// `offer-…-20260819-x7y8z9` is unreadable at a glance (Root Cause #52).
|
|
89
|
+
primary: toStringValue(item.productTitle, "Untitled listing"),
|
|
90
|
+
// Admin sees both sides of the negotiation, unmasked.
|
|
91
|
+
secondary: [
|
|
92
|
+
`Offer: ${toCurrency(item.offerAmount)}`,
|
|
93
|
+
`Listed: ${toCurrency(item.listedPrice)}`,
|
|
94
|
+
`${toStringValue(item.buyerName, "Unknown buyer")} → ${toStringValue(item.storeName, "Unknown store")}`,
|
|
95
|
+
].join(" · "),
|
|
96
|
+
status: toStringValue(item.status, "pending"),
|
|
97
|
+
updatedAt: toRelativeDate(item.updatedAt ?? item.createdAt),
|
|
98
|
+
detail: item,
|
|
99
|
+
})),
|
|
100
|
+
getTotal: (response, mappedRows) => typeof response.total === "number" ? response.total : mappedRows.length,
|
|
101
|
+
// A menu of pure mutations is not a detail affordance (Root Cause #56) —
|
|
102
|
+
// cancelling an offer without first reading it is acting blind.
|
|
103
|
+
onRowClick: (row) => setDetailRow(row),
|
|
104
|
+
buildFilters: (state) => state.status && state.status !== "All"
|
|
105
|
+
? sieveFilter("status", SIEVE_OP.EQ, state.status)
|
|
106
|
+
: undefined,
|
|
107
|
+
buildBulkActions: (selection) => [
|
|
108
|
+
{
|
|
109
|
+
id: ROW_ACTION_ID.CANCEL,
|
|
110
|
+
label: ACTIONS.ADMIN["cancel-offer"].label,
|
|
111
|
+
variant: "secondary",
|
|
112
|
+
onClick: () => selection.clearSelection(),
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
renderRowActions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
116
|
+
{ label: ROW_ACTION_META[ROW_ACTION_ID.VIEW].label, onClick: () => setDetailRow(row) },
|
|
117
|
+
{
|
|
118
|
+
label: ACTIONS.ADMIN["cancel-offer"].label,
|
|
119
|
+
destructive: true,
|
|
120
|
+
disabled: TERMINAL_STATUSES.has(row.status),
|
|
121
|
+
onClick: () => {
|
|
122
|
+
setSelectedRow(row);
|
|
123
|
+
setCancelOpen(true);
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
] })),
|
|
127
|
+
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_OFFER_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) })),
|
|
128
|
+
};
|
|
129
|
+
const d = detailRow?.detail ?? {};
|
|
130
|
+
const productSlug = toStringValue(d.productSlug ?? d.productId, "");
|
|
131
|
+
const paidOrderId = toStringValue(d.paidOrderId, "");
|
|
132
|
+
return (_jsxs(_Fragment, { children: [_jsx(DataListingView, { config: config }), _jsx(RecordDetailModal, { isOpen: detailRow !== null, onClose: () => setDetailRow(null), title: detailRow?.primary ?? "Offer", badges: detailRow ? [{ label: detailRow.status }] : undefined, description: toStringValue(d.buyerNote, ""), fields: [
|
|
133
|
+
{ label: "Buyer", value: toStringValue(d.buyerName, "Unknown buyer") },
|
|
134
|
+
{ label: "Buyer email", value: toStringValue(d.buyerEmail, "—") },
|
|
135
|
+
{ label: "Store", value: toStringValue(d.storeName, "Unknown store") },
|
|
136
|
+
{ label: "Listed price", value: toCurrency(d.listedPrice) },
|
|
137
|
+
{ label: "Offered", value: toCurrency(d.offerAmount) },
|
|
138
|
+
...(d.counterAmount
|
|
139
|
+
? [{ label: "Seller counter", value: toCurrency(d.counterAmount) }]
|
|
140
|
+
: []),
|
|
141
|
+
...(d.lockedPrice
|
|
142
|
+
? [{ label: "Locked price", value: toCurrency(d.lockedPrice) }]
|
|
143
|
+
: []),
|
|
144
|
+
...(d.sellerNote
|
|
145
|
+
? [{ label: "Seller note", value: toStringValue(d.sellerNote, "") }]
|
|
146
|
+
: []),
|
|
147
|
+
{ label: "Offer expires", value: toRelativeDate(d.expiresAt) },
|
|
148
|
+
...(d.checkoutDeadline
|
|
149
|
+
? [{ label: "Buyer must pay by", value: toRelativeDate(d.checkoutDeadline) }]
|
|
150
|
+
: []),
|
|
151
|
+
{ label: "Created", value: toRelativeDate(d.createdAt) },
|
|
152
|
+
{ label: "Offer ID", value: detailRow?.id ?? "—" },
|
|
153
|
+
], items: detailRow
|
|
154
|
+
? {
|
|
155
|
+
heading: "Listing",
|
|
156
|
+
entries: [
|
|
157
|
+
{
|
|
158
|
+
image: toStringValue(d.productImageUrl, "") || undefined,
|
|
159
|
+
title: detailRow.primary,
|
|
160
|
+
subtitle: toStringValue(d.productId, ""),
|
|
161
|
+
trailing: toCurrency(d.listedPrice),
|
|
162
|
+
href: productSlug
|
|
163
|
+
? String(ROUTES.PUBLIC.PRODUCT_DETAIL(productSlug))
|
|
164
|
+
: undefined,
|
|
165
|
+
},
|
|
166
|
+
// A paid offer became a real order — link to it, so the
|
|
167
|
+
// "what happened next" question has an answer in one click.
|
|
168
|
+
...(paidOrderId
|
|
169
|
+
? [
|
|
170
|
+
{
|
|
171
|
+
title: `Order ${paidOrderId}`,
|
|
172
|
+
subtitle: "Placed from this offer",
|
|
173
|
+
href: String(ROUTES.ADMIN.ORDER_DETAIL(paidOrderId)),
|
|
174
|
+
},
|
|
175
|
+
]
|
|
176
|
+
: []),
|
|
177
|
+
],
|
|
178
|
+
}
|
|
179
|
+
: undefined }), _jsx(ConfirmDeleteModal, { isOpen: cancelOpen, onClose: () => {
|
|
180
|
+
setCancelOpen(false);
|
|
181
|
+
setSelectedRow(null);
|
|
182
|
+
}, onConfirm: () => {
|
|
183
|
+
if (selectedRow)
|
|
184
|
+
cancelMutation.mutate(selectedRow.id);
|
|
185
|
+
}, isDeleting: cancelMutation.isPending, title: ACTIONS.ADMIN["cancel-offer"].confirmation.title, message: ACTIONS.ADMIN["cancel-offer"].confirmation.body, confirmText: ACTIONS.ADMIN["cancel-offer"].confirmation.confirmLabel, variant: "warning" })] }));
|
|
186
|
+
}
|
|
@@ -12,6 +12,7 @@ import { ROUTES } from "../../../next/routing/route-map";
|
|
|
12
12
|
import { ADMIN_BULK_ACTIONS, ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
|
|
13
13
|
import { ADMIN_ORDER_STATUS_TABS, ADMIN_ORDER_PAYMENT_REVIEW_TABS } from "../constants/filter-tabs";
|
|
14
14
|
import { isManualPaymentMethod, isPaymentReviewQueueMode } from "../../orders/constants/payment-window";
|
|
15
|
+
import { useOrderScope } from "../../orders/components/OrderScopeTabs";
|
|
15
16
|
import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
|
|
16
17
|
import { DataListingView } from "./DataListingView";
|
|
17
18
|
import { AdminOrderEditorView } from "./AdminOrderEditorView";
|
|
@@ -80,6 +81,7 @@ export function AdminOrdersView({ children, ...props }) {
|
|
|
80
81
|
if (React.Children.count(children) > 0) {
|
|
81
82
|
return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
|
|
82
83
|
}
|
|
84
|
+
const orderScope = useOrderScope();
|
|
83
85
|
const config = {
|
|
84
86
|
portal: "admin",
|
|
85
87
|
title: "Orders",
|
|
@@ -147,7 +149,14 @@ export function AdminOrdersView({ children, ...props }) {
|
|
|
147
149
|
return undefined;
|
|
148
150
|
return f.status && f.status !== "All" ? sieveFilter("status", SIEVE_OP.EQ, f.status) : undefined;
|
|
149
151
|
},
|
|
150
|
-
|
|
152
|
+
// The payment-review queue is its own mode — it already ignores `status`
|
|
153
|
+
// (see buildFilters above), so it must ignore the lifecycle scope too, or
|
|
154
|
+
// an admin opening the queue from the default Active tab would see it
|
|
155
|
+
// silently narrowed.
|
|
156
|
+
buildExtraParams: (f) => isPaymentReviewQueueMode(f.paymentReview ?? "")
|
|
157
|
+
? { paymentReview: f.paymentReview }
|
|
158
|
+
: orderScope.extraParams,
|
|
159
|
+
renderAboveContent: orderScope.renderAboveContent,
|
|
151
160
|
// Mirrors the row action's "View full details" entry so the row itself
|
|
152
161
|
// is clickable, not just the overflow menu.
|
|
153
162
|
onRowClick: (row) => {
|
|
@@ -11,6 +11,8 @@ import { ADMIN_PRODUCT_STATUS_TABS } from "../constants/filter-tabs";
|
|
|
11
11
|
import { ROUTES } from "../../../constants";
|
|
12
12
|
import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
|
|
13
13
|
import { DataListingView } from "./DataListingView";
|
|
14
|
+
import { useAvailabilityScope } from "../../products/hooks/useAvailabilityScope";
|
|
15
|
+
const PRIZE_DRAW_TYPES = ["prize-draw"];
|
|
14
16
|
const STATUS_VARIANT = {
|
|
15
17
|
published: "success",
|
|
16
18
|
active: "success",
|
|
@@ -57,6 +59,7 @@ export function AdminPrizeDrawsView({ children, ...props }) {
|
|
|
57
59
|
if (React.Children.count(children) > 0) {
|
|
58
60
|
return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
|
|
59
61
|
}
|
|
62
|
+
const scope = useAvailabilityScope(PRIZE_DRAW_TYPES);
|
|
60
63
|
const config = {
|
|
61
64
|
portal: "admin",
|
|
62
65
|
title: "Prize Draws",
|
|
@@ -94,6 +97,8 @@ export function AdminPrizeDrawsView({ children, ...props }) {
|
|
|
94
97
|
const status = state.status && state.status !== "All" ? sieveFilter("status", SIEVE_OP.EQ, state.status) : null;
|
|
95
98
|
return ["listingType==prize-draw", status].filter(Boolean).join(",");
|
|
96
99
|
},
|
|
100
|
+
buildExtraParams: () => scope.extraParams,
|
|
101
|
+
renderAboveContent: scope.renderAboveContent,
|
|
97
102
|
rowHrefTemplate: String(ROUTES.ADMIN.PRIZE_DRAWS_EDIT("{id}")),
|
|
98
103
|
// Rule #7: bulk-action array sourced from the ADMIN_BULK_ACTIONS preset.
|
|
99
104
|
buildBulkActions: (selection) => ADMIN_BULK_ACTIONS.prizeDraws.map((id) => ({
|
|
@@ -16,6 +16,8 @@ import { AdminProductEditorView } from "./AdminProductEditorView";
|
|
|
16
16
|
import { QuickEditMenu } from "./QuickEditMenu";
|
|
17
17
|
import { ADMIN_BULK_ACTIONS, ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
|
|
18
18
|
import { parseSelectedListingTypes } from "../../products/utils/listing-type";
|
|
19
|
+
import { useAvailabilityScope } from "../../products/hooks/useAvailabilityScope";
|
|
20
|
+
import { ALL_LISTING_TYPES } from "../../../_internal/shared/listing-types/feature-flags";
|
|
19
21
|
const FLAG_DEFS = [
|
|
20
22
|
{ key: "featured", label: "Featured" },
|
|
21
23
|
{ key: "isPromoted", label: "Promoted" },
|
|
@@ -95,16 +97,15 @@ export function AdminProductsView({ children, ...props }) {
|
|
|
95
97
|
void handleToggle(row.id, key, v);
|
|
96
98
|
} }, key))) })),
|
|
97
99
|
};
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
// Simplest: use buildFilters which gets the full filterState, and add showSold to filterKeys.
|
|
100
|
+
// Spans every listing type unless the Type chips narrow it, which is what
|
|
101
|
+
// makes the middle tab read "Sold & Ended" here rather than one or the other.
|
|
102
|
+
const scope = useAvailabilityScope(ALL_LISTING_TYPES);
|
|
102
103
|
const config = {
|
|
103
104
|
portal: "admin",
|
|
104
105
|
title: "Products",
|
|
105
106
|
searchPlaceholder: "Search products, SKUs, or seller names",
|
|
106
107
|
emptyLabel: "No products found",
|
|
107
|
-
filterKeys: ["status", "type"
|
|
108
|
+
filterKeys: ["status", "type"],
|
|
108
109
|
defaultSort: sortBy("createdAt", "DESC"),
|
|
109
110
|
queryKey: ["admin", "products", "listing"],
|
|
110
111
|
endpoint: ADMIN_ENDPOINTS.PRODUCTS,
|
|
@@ -169,8 +170,6 @@ export function AdminProductsView({ children, ...props }) {
|
|
|
169
170
|
getTotal: (response, mappedRows) => typeof response.total === "number" ? response.total : mappedRows.length,
|
|
170
171
|
buildFilters: (state) => {
|
|
171
172
|
const parts = [];
|
|
172
|
-
if (state.showSold !== "true")
|
|
173
|
-
parts.push("isSold==false");
|
|
174
173
|
if (state.status && state.status !== "All")
|
|
175
174
|
parts.push(sieveFilter("status", SIEVE_OP.EQ, state.status));
|
|
176
175
|
// `state.type` is a pipe-joined set of canonical ListingType values
|
|
@@ -181,20 +180,17 @@ export function AdminProductsView({ children, ...props }) {
|
|
|
181
180
|
if (selectedTypes.length > 0) {
|
|
182
181
|
parts.push(sieveFilter("listingType", SIEVE_OP.EQ, selectedTypes.join("|")));
|
|
183
182
|
}
|
|
184
|
-
// Ended/
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
parts.push(sieveFilter("auctionEndDate", SIEVE_OP.GTE, new Date().toISOString()));
|
|
192
|
-
}
|
|
193
|
-
if (onlyType === "prize-draw" && state.showClosed !== "true") {
|
|
194
|
-
parts.push(sieveFilter("prizeRevealWindowEnd", SIEVE_OP.GTE, new Date().toISOString()));
|
|
195
|
-
}
|
|
183
|
+
// Three drawer chips (Sold / Ended / Closed) used to live here, each
|
|
184
|
+
// emitting its own clause and each guarded by an `onlyType` check
|
|
185
|
+
// because `auctionEndDate` and `prizeRevealWindowEnd` do not exist on
|
|
186
|
+
// the other seven types. That guard meant the ended/closed filters
|
|
187
|
+
// silently did nothing on any mixed selection. The scope param replaces
|
|
188
|
+
// all three, and resolves the per-type meaning server-side — so it works
|
|
189
|
+
// across a mixed selection, which is the common case here.
|
|
196
190
|
return parts.join(",") || undefined;
|
|
197
191
|
},
|
|
192
|
+
buildExtraParams: () => scope.extraParams,
|
|
193
|
+
renderAboveContent: scope.renderAboveContent,
|
|
198
194
|
primaryAction: {
|
|
199
195
|
label: "Add Product",
|
|
200
196
|
onClick: ({ openCreatePanel }) => openCreatePanel(),
|
|
@@ -263,16 +259,7 @@ export function AdminProductsView({ children, ...props }) {
|
|
|
263
259
|
submitLabel: "Save",
|
|
264
260
|
},
|
|
265
261
|
] })),
|
|
266
|
-
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(_Fragment, { children: [_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_PRODUCT_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) }), _jsx(FilterChipGroup, { multiple: true, label: "Type", tabs: ADMIN_PRODUCT_LISTING_TYPE_TABS, value: pendingFilters.type ?? "", onChange: (ids) => setPendingFilters((p) => ({ ...p, type: ids })) })
|
|
267
|
-
{ id: "", label: "Hide sold" },
|
|
268
|
-
{ id: "true", label: "Show sold" },
|
|
269
|
-
], value: pendingFilters.showSold ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showSold: id })), allId: "" }), _jsx(FilterChipGroup, { label: "Ended", tabs: [
|
|
270
|
-
{ id: "", label: "Hide ended" },
|
|
271
|
-
{ id: "true", label: "Show ended" },
|
|
272
|
-
], value: pendingFilters.showEnded ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showEnded: id })), allId: "" }), _jsx(FilterChipGroup, { label: "Closed", tabs: [
|
|
273
|
-
{ id: "", label: "Hide closed" },
|
|
274
|
-
{ id: "true", label: "Show closed" },
|
|
275
|
-
], value: pendingFilters.showClosed ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showClosed: id })), allId: "" })] })),
|
|
262
|
+
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(_Fragment, { children: [_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_PRODUCT_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) }), _jsx(FilterChipGroup, { multiple: true, label: "Type", tabs: ADMIN_PRODUCT_LISTING_TYPE_TABS, value: pendingFilters.type ?? "", onChange: (ids) => setPendingFilters((p) => ({ ...p, type: ids })) })] })),
|
|
276
263
|
renderEditor: ({ editId, closePanel }) => (_jsx(AdminProductEditorView, { productId: editId ?? undefined, initialData: editId ? rawByIdRef.current[editId] : undefined, onSaved: closePanel, onDeleted: closePanel, embedded: true })),
|
|
277
264
|
resolveEditorTitle: ({ isCreate }) => (isCreate ? "Add Product" : "Edit Product"),
|
|
278
265
|
};
|