@mohasinac/appkit 4.13.1 → 4.15.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 +8 -2
- 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/cart/service.d.ts +3 -3
- package/dist/_internal/server/features/checkout/actions.js +25 -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/checkout/source-context.d.ts +5 -0
- package/dist/_internal/server/features/checkout/source-context.js +157 -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/offers/adapters.d.ts +103 -0
- package/dist/_internal/server/features/offers/adapters.js +88 -0
- package/dist/_internal/server/features/offers/index.d.ts +2 -0
- package/dist/_internal/server/features/offers/index.js +1 -0
- package/dist/_internal/server/features/orders/adapters.js +24 -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 +55 -19
- 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 +17 -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/auctions/schema.d.ts +14 -2
- package/dist/_internal/shared/features/auctions/schema.js +13 -1
- package/dist/_internal/shared/features/blog/schema.d.ts +2 -2
- package/dist/_internal/shared/features/cart/schema.d.ts +20 -15
- package/dist/_internal/shared/features/cart/schema.js +15 -0
- 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 +30 -30
- 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 +88 -0
- package/dist/_internal/shared/history/history.js +198 -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 +20 -7
- package/dist/client.js +22 -4
- package/dist/constants/api-endpoints.d.ts +6 -0
- package/dist/constants/api-endpoints.js +2 -0
- package/dist/constants/field-names.d.ts +57 -8
- package/dist/constants/field-names.js +101 -8
- 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/UserBidsView.js +12 -4
- package/dist/features/account/components/UserOrdersView.js +7 -0
- package/dist/features/account/components/UserReturnsView.d.ts +3 -0
- package/dist/features/account/components/UserReturnsView.js +17 -1
- 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/AdminAuditLogView.js +1 -0
- package/dist/features/admin/components/AdminBidsView.js +15 -2
- package/dist/features/admin/components/AdminBlogEditorView.js +65 -33
- package/dist/features/admin/components/AdminClassifiedView.js +8 -3
- package/dist/features/admin/components/AdminDigitalCodesView.js +8 -3
- package/dist/features/admin/components/AdminFeatureEditorView.js +35 -6
- package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -0
- package/dist/features/admin/components/AdminLiveView.js +8 -3
- package/dist/features/admin/components/AdminNavEditorView.js +15 -5
- package/dist/features/admin/components/AdminNewsletterView.js +18 -2
- package/dist/features/admin/components/AdminOffersView.d.ts +4 -0
- package/dist/features/admin/components/AdminOffersView.js +230 -0
- package/dist/features/admin/components/AdminOrdersView.js +10 -1
- package/dist/features/admin/components/AdminPaymentMethodsView.js +24 -4
- package/dist/features/admin/components/AdminPrizeDrawsView.js +5 -0
- package/dist/features/admin/components/AdminProductsView.js +16 -29
- package/dist/features/admin/components/AdminScammerEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminScammerEditorView.js +3 -13
- package/dist/features/admin/components/AdminScammersView.js +3 -8
- package/dist/features/admin/components/AdminSectionsView.js +32 -23
- package/dist/features/admin/components/AdminSessionsView.js +17 -2
- 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/ViewAuditLogEntryModal.js +1 -0
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +4 -2
- package/dist/features/admin/components/sections/adminSectionsTypes.js +45 -27
- package/dist/features/admin/constants/filter-tabs.d.ts +89 -0
- package/dist/features/admin/constants/filter-tabs.js +56 -0
- package/dist/features/admin/schemas/firestore.d.ts +122 -3
- package/dist/features/admin/schemas/firestore.js +1 -0
- package/dist/features/admin/schemas/homepage-section-form.d.ts +22 -0
- package/dist/features/admin/schemas/homepage-section-form.js +68 -0
- package/dist/features/admin/schemas/nav-item-form.d.ts +74 -0
- package/dist/features/admin/schemas/nav-item-form.js +72 -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/AuctionBidsTable.d.ts +10 -1
- package/dist/features/auctions/components/AuctionBidsTable.js +22 -4
- 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/components/bid-detail-fields.d.ts +29 -0
- package/dist/features/auctions/components/bid-detail-fields.js +103 -0
- 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/audit-log/schemas/firestore.d.ts +14 -0
- package/dist/features/audit-log/schemas/firestore.js +7 -0
- 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/blog-form.d.ts +80 -0
- package/dist/features/blog/schemas/blog-form.js +100 -0
- 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/AdminEventEditorView.js +32 -54
- package/dist/features/events/components/AdminEventEntriesView.js +22 -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/event-form.d.ts +113 -0
- package/dist/features/events/schemas/event-form.js +82 -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/grouped-listing-form.d.ts +101 -0
- package/dist/features/grouped/schemas/grouped-listing-form.js +89 -0
- package/dist/features/grouped/schemas/index.d.ts +4 -4
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +11 -3
- package/dist/features/homepage/actions/homepage-section-actions.js +33 -1
- 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 +33 -2
- package/dist/features/homepage/schemas/index.js +24 -0
- 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/components/OrderStatusTimeline.d.ts +5 -1
- package/dist/features/orders/components/OrderStatusTimeline.js +39 -20
- 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 +121 -22
- package/dist/features/orders/schemas/firestore.d.ts +152 -0
- package/dist/features/orders/schemas/firestore.js +30 -0
- package/dist/features/orders/schemas/index.d.ts +18 -18
- package/dist/features/orders/types/index.d.ts +35 -7
- 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/GroupSettingsPanel.js +5 -1
- 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 +64 -64
- package/dist/features/products/schemas/product-features.validators.d.ts +79 -6
- package/dist/features/products/schemas/product-features.validators.js +63 -0
- 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/scams/constants/scammer-status-display.d.ts +28 -0
- package/dist/features/scams/constants/scammer-status-display.js +79 -0
- package/dist/features/search/schemas/index.d.ts +4 -4
- package/dist/features/seller/actions/offer-actions.js +57 -4
- package/dist/features/seller/components/OfferPhaseTimeline.d.ts +59 -0
- package/dist/features/seller/components/OfferPhaseTimeline.js +107 -0
- package/dist/features/seller/components/SellerArtView.js +5 -0
- package/dist/features/seller/components/SellerAuctionsView.js +13 -15
- package/dist/features/seller/components/SellerBidsView.js +11 -4
- package/dist/features/seller/components/SellerClassifiedView.js +5 -0
- package/dist/features/seller/components/SellerCouponEditorView.js +17 -17
- package/dist/features/seller/components/SellerDigitalCodesView.js +5 -0
- package/dist/features/seller/components/SellerLiveView.js +5 -0
- package/dist/features/seller/components/SellerOffersView.js +2 -1
- package/dist/features/seller/components/SellerOrdersView.js +31 -9
- package/dist/features/seller/components/SellerPayoutSettingsView.js +56 -31
- 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 +142 -24
- package/dist/features/seller/repository/offer.repository.js +165 -26
- package/dist/features/seller/schemas/coupon-form.d.ts +72 -0
- package/dist/features/seller/schemas/coupon-form.js +116 -0
- package/dist/features/seller/schemas/firestore.d.ts +56 -2
- package/dist/features/seller/schemas/firestore.js +27 -0
- package/dist/features/seller/schemas/index.d.ts +2 -2
- package/dist/features/seller/schemas/offer-forms.d.ts +46 -0
- package/dist/features/seller/schemas/offer-forms.js +42 -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/build-sections.d.ts +63 -0
- package/dist/features/shell/build-sections.js +207 -0
- package/dist/features/shell/entity-form.d.ts +109 -0
- package/dist/features/shell/entity-form.js +96 -0
- package/dist/features/shell/field-ui-meta.d.ts +115 -0
- package/dist/features/shell/field-ui-meta.js +324 -0
- package/dist/features/shell/index.d.ts +8 -0
- package/dist/features/shell/index.js +4 -0
- package/dist/features/status-history/components/StatusTimeline.d.ts +74 -0
- package/dist/features/status-history/components/StatusTimeline.js +46 -0
- package/dist/features/status-history/index.d.ts +11 -0
- package/dist/features/status-history/index.js +10 -0
- package/dist/features/store-extensions/components/ReviewDecisionModal.d.ts +27 -0
- package/dist/features/store-extensions/components/ReviewDecisionModal.js +82 -0
- package/dist/features/store-extensions/index.d.ts +12 -0
- package/dist/features/store-extensions/index.js +12 -0
- package/dist/features/store-extensions/schemas/admin-notification-form.d.ts +36 -0
- package/dist/features/store-extensions/schemas/admin-notification-form.js +114 -0
- package/dist/features/store-extensions/schemas/analytics-forms.d.ts +57 -0
- package/dist/features/store-extensions/schemas/analytics-forms.js +158 -0
- package/dist/features/store-extensions/schemas/custom-role-form.d.ts +85 -0
- package/dist/features/store-extensions/schemas/custom-role-form.js +118 -0
- package/dist/features/store-extensions/schemas/firestore.d.ts +21 -1
- package/dist/features/store-extensions/schemas/firestore.js +60 -0
- package/dist/features/store-extensions/schemas/google-config-form.d.ts +53 -0
- package/dist/features/store-extensions/schemas/google-config-form.js +105 -0
- package/dist/features/store-extensions/schemas/item-request-create-form.d.ts +28 -0
- package/dist/features/store-extensions/schemas/item-request-create-form.js +80 -0
- package/dist/features/store-extensions/schemas/listing-template-form.d.ts +78 -0
- package/dist/features/store-extensions/schemas/listing-template-form.js +87 -0
- package/dist/features/store-extensions/schemas/moderation-review-form.d.ts +49 -0
- package/dist/features/store-extensions/schemas/moderation-review-form.js +101 -0
- package/dist/features/store-extensions/schemas/payout-method-form.d.ts +153 -0
- package/dist/features/store-extensions/schemas/payout-method-form.js +155 -0
- package/dist/features/store-extensions/schemas/report-create-form.d.ts +25 -0
- package/dist/features/store-extensions/schemas/report-create-form.js +79 -0
- package/dist/features/store-extensions/schemas/report-review-form.d.ts +47 -0
- package/dist/features/store-extensions/schemas/report-review-form.js +111 -0
- package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +148 -0
- package/dist/features/store-extensions/schemas/shipping-config-form.js +104 -0
- package/dist/features/store-extensions/schemas/store-category-form.d.ts +54 -0
- package/dist/features/store-extensions/schemas/store-category-form.js +73 -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 +431 -1
- package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
- package/dist/index.d.ts +25 -12
- package/dist/index.js +26 -11
- package/dist/next/routing/route-map.d.ts +23 -3
- package/dist/next/routing/route-map.js +14 -2
- 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/firestore-value.d.ts +8 -0
- package/dist/schemas/firestore-value.js +44 -0
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/registry.d.ts +702 -69
- package/dist/schemas/registry.js +64 -1
- 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/bids-seed-data.js +30 -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 +244 -34
- package/dist/seed/orders-seed-data.js +336 -1
- package/dist/seed/products-art-seed-data.js +50 -12
- package/dist/seed/products-auctions-seed-data.js +138 -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 +6 -3
- package/dist/server.js +13 -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/RecordDetailModal.d.ts +10 -1
- package/dist/ui/components/RecordDetailModal.js +2 -2
- 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 +2 -1
- package/scripts/node-esm-loader.mjs +65 -0
- package/scripts/seed-cli-loader.mjs +6 -49
- package/scripts/seed-cli.mjs +1 -1
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
export interface LotterySlot {
|
|
8
8
|
slotNumber: number;
|
|
9
9
|
name: string;
|
|
10
|
+
/** Prize photo. Public — rendered in the prize collage on the lottery detail page. */
|
|
11
|
+
image?: string;
|
|
10
12
|
price: number;
|
|
11
13
|
weight: number;
|
|
12
14
|
isBooked: boolean;
|
|
@@ -18,6 +20,7 @@ export interface LotterySlot {
|
|
|
18
20
|
export interface ClientLotterySlot {
|
|
19
21
|
slotNumber: number;
|
|
20
22
|
name: string;
|
|
23
|
+
image?: string;
|
|
21
24
|
isBooked: boolean;
|
|
22
25
|
bookedByUserLotteryNumber?: number;
|
|
23
26
|
bookedByDisplayName?: string;
|
|
@@ -126,7 +126,11 @@ export function MediaPickerModal({ isOpen, onClose, onSelect, accept = "image/*"
|
|
|
126
126
|
const isImage = (f.contentType ?? "").startsWith("image/");
|
|
127
127
|
const isSelected = selectedExisting === f.downloadURL;
|
|
128
128
|
return (_jsxs(Button, { type: "button", variant: "ghost", onClick: () => setSelectedExisting(f.downloadURL), className: [
|
|
129
|
-
|
|
129
|
+
// `flex-col items-stretch` — without it the thumbnail and the
|
|
130
|
+
// filename lay out as row siblings inside `.appkit-button__content`
|
|
131
|
+
// and the square tile shrinks to a fraction of its width
|
|
132
|
+
// (Root Cause #68).
|
|
133
|
+
"flex-col items-stretch rounded-lg border overflow-hidden text-left transition p-[var(--appkit-space-0)] h-auto",
|
|
130
134
|
isSelected
|
|
131
135
|
? "border-primary-500 ring-2 ring-primary-300"
|
|
132
136
|
: "border-[var(--appkit-color-border)]",
|
|
@@ -116,8 +116,8 @@ export declare const conversationFirestoreSchema: z.ZodObject<{
|
|
|
116
116
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
117
117
|
}, z.ZodTypeAny, "passthrough">;
|
|
118
118
|
storeId: string;
|
|
119
|
-
storeName: string;
|
|
120
119
|
buyerId: string;
|
|
120
|
+
storeName: string;
|
|
121
121
|
lastMessageAt: string | Date | z.objectOutputType<{
|
|
122
122
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
123
123
|
}, z.ZodTypeAny, "passthrough">;
|
|
@@ -149,8 +149,8 @@ export declare const conversationFirestoreSchema: z.ZodObject<{
|
|
|
149
149
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
150
150
|
}, z.ZodTypeAny, "passthrough">;
|
|
151
151
|
storeId: string;
|
|
152
|
-
storeName: string;
|
|
153
152
|
buyerId: string;
|
|
153
|
+
storeName: string;
|
|
154
154
|
lastMessageAt: string | Date | z.objectInputType<{
|
|
155
155
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
156
156
|
}, z.ZodTypeAny, "passthrough">;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type OrderScope } from "../constants/order-scope";
|
|
3
|
+
export declare function OrderScopeTabs({ className }: {
|
|
4
|
+
className?: string;
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
export interface OrderScopeState {
|
|
7
|
+
scope: OrderScope;
|
|
8
|
+
/** Spread into `ListingViewConfig.buildExtraParams`'s return value. */
|
|
9
|
+
extraParams: {
|
|
10
|
+
orderScope: OrderScope;
|
|
11
|
+
};
|
|
12
|
+
/** Assign to `ListingViewConfig.renderAboveContent`. */
|
|
13
|
+
renderAboveContent: () => React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Same seam as `useAvailabilityScope`: `buildExtraParams`, not `filterKeys`.
|
|
17
|
+
* Registering the scope as a filter key would inflate the filter-drawer badge
|
|
18
|
+
* for a tab selection and let the drawer's Clear button silently reset it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useOrderScope(): OrderScopeState;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Tabs, TabsList, TabsTrigger } from "../../../ui";
|
|
4
|
+
import { useUrlTable } from "../../../react/hooks/useUrlTable";
|
|
5
|
+
import { TABLE_KEYS } from "../../../constants/table-keys";
|
|
6
|
+
import { ORDER_SCOPE_TABS, ORDER_SCOPE_VALUES, isOrderScope, } from "../constants/order-scope";
|
|
7
|
+
export function OrderScopeTabs({ className }) {
|
|
8
|
+
const table = useUrlTable();
|
|
9
|
+
const raw = table.get(TABLE_KEYS.ORDER_SCOPE);
|
|
10
|
+
const active = isOrderScope(raw) ? raw : ORDER_SCOPE_VALUES.ACTIVE;
|
|
11
|
+
return (_jsx(Tabs, { value: active,
|
|
12
|
+
// A single `set` — `useUrlTable.set` already resets the page, and a
|
|
13
|
+
// follow-up `setPage` would read stale searchParams and overwrite this
|
|
14
|
+
// update (Root Cause #13).
|
|
15
|
+
onChange: (next) => table.set(TABLE_KEYS.ORDER_SCOPE, next), className: className, children: _jsx(TabsList, { children: ORDER_SCOPE_TABS.map((tab) => (_jsx(TabsTrigger, { value: tab.id, children: tab.label }, tab.id))) }) }));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Same seam as `useAvailabilityScope`: `buildExtraParams`, not `filterKeys`.
|
|
19
|
+
* Registering the scope as a filter key would inflate the filter-drawer badge
|
|
20
|
+
* for a tab selection and let the drawer's Clear button silently reset it.
|
|
21
|
+
*/
|
|
22
|
+
export function useOrderScope() {
|
|
23
|
+
const table = useUrlTable();
|
|
24
|
+
const raw = table.get(TABLE_KEYS.ORDER_SCOPE);
|
|
25
|
+
const scope = isOrderScope(raw) ? raw : ORDER_SCOPE_VALUES.ACTIVE;
|
|
26
|
+
return {
|
|
27
|
+
scope,
|
|
28
|
+
extraParams: { orderScope: scope },
|
|
29
|
+
renderAboveContent: () => _jsx(OrderScopeTabs, {}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { type TimelineEntry } from "../../status-history/components/StatusTimeline";
|
|
1
2
|
export interface OrderStatusTimelineProps {
|
|
2
3
|
orderStatus: string;
|
|
4
|
+
/** Recorded history. When present it wins over the scalar-date fallback. */
|
|
5
|
+
timeline?: TimelineEntry[];
|
|
6
|
+
timelineTruncated?: number;
|
|
3
7
|
orderDate?: string;
|
|
4
8
|
shippingDate?: string;
|
|
5
9
|
deliveryDate?: string;
|
|
@@ -9,4 +13,4 @@ export interface OrderStatusTimelineProps {
|
|
|
9
13
|
trackingUrl?: string;
|
|
10
14
|
className?: string;
|
|
11
15
|
}
|
|
12
|
-
export declare function OrderStatusTimeline({ orderStatus, orderDate, shippingDate, deliveryDate, cancellationDate, trackingNumber, shippingCarrier, trackingUrl, className, }: OrderStatusTimelineProps): import("react").JSX.Element;
|
|
16
|
+
export declare function OrderStatusTimeline({ orderStatus, timeline, timelineTruncated, orderDate, shippingDate, deliveryDate, cancellationDate, trackingNumber, shippingCarrier, trackingUrl, className, }: OrderStatusTimelineProps): import("react").JSX.Element;
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
|
-
* OrderStatusTimeline —
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
4
|
+
* OrderStatusTimeline — the order-shaped wrapper around `<StatusTimeline>`.
|
|
5
|
+
*
|
|
6
|
+
* Two branches, and the fallback matters as much as the primary path:
|
|
7
|
+
*
|
|
8
|
+
* **Branch A — real history.** When the order carries `timeline` entries
|
|
9
|
+
* (written by the repository since W2), each status change becomes a step
|
|
10
|
+
* dated by when it actually happened, stamped with who did it. This finally
|
|
11
|
+
* makes transitions with no dedicated date field visible at all — a payment
|
|
12
|
+
* review, a re-upload request, a partial refund.
|
|
13
|
+
*
|
|
14
|
+
* **Branch B — legacy orders.** Every order written before `statusHistory`
|
|
15
|
+
* existed has none, and back-filling one would mean inventing timestamps. So
|
|
16
|
+
* the original derivation from the four scalar dates is kept verbatim for
|
|
17
|
+
* those. Statuses with no dedicated date field render without one.
|
|
18
|
+
*
|
|
19
|
+
* No live courier API: `trackingUrl` is the passthrough link a seller entered.
|
|
12
20
|
*/
|
|
13
|
-
import { Anchor, Badge,
|
|
21
|
+
import { Anchor, Badge, Row, Stack, Text } from "../../../ui";
|
|
22
|
+
import { StatusTimeline, stepsFromEntries, } from "../../status-history/components/StatusTimeline";
|
|
14
23
|
const STAGE_SEQUENCE = ["pending", "confirmed", "processing", "shipped", "delivered"];
|
|
15
24
|
const STAGE_LABELS = {
|
|
16
25
|
pending: "Order placed",
|
|
@@ -23,10 +32,16 @@ const STAGE_LABELS = {
|
|
|
23
32
|
returned: "Returned",
|
|
24
33
|
refunded: "Refunded",
|
|
25
34
|
};
|
|
26
|
-
|
|
35
|
+
const NEGATIVE_STATUSES = new Set(["cancelled"]);
|
|
36
|
+
const labelFor = (status) => STAGE_LABELS[status] ?? status;
|
|
37
|
+
const isNegative = (status) => NEGATIVE_STATUSES.has(status);
|
|
38
|
+
/** Branch B — derive from the four scalar dates, for orders with no history. */
|
|
39
|
+
function buildLegacySteps(props) {
|
|
27
40
|
const status = (props.orderStatus ?? "").toLowerCase();
|
|
28
41
|
const currentIndex = STAGE_SEQUENCE.indexOf(status);
|
|
29
|
-
const steps = [
|
|
42
|
+
const steps = [
|
|
43
|
+
{ key: "pending", label: STAGE_LABELS.pending, date: props.orderDate },
|
|
44
|
+
];
|
|
30
45
|
if ((status === "confirmed" || status === "processing") && !props.shippingDate) {
|
|
31
46
|
steps.push({ key: status, label: STAGE_LABELS[status] });
|
|
32
47
|
}
|
|
@@ -37,19 +52,23 @@ function buildSteps(props) {
|
|
|
37
52
|
steps.push({ key: "delivered", label: STAGE_LABELS.delivered, date: props.deliveryDate });
|
|
38
53
|
}
|
|
39
54
|
if (status === "cancelled" || props.cancellationDate) {
|
|
40
|
-
steps.push({
|
|
55
|
+
steps.push({
|
|
56
|
+
key: "cancelled",
|
|
57
|
+
label: STAGE_LABELS.cancelled,
|
|
58
|
+
date: props.cancellationDate,
|
|
59
|
+
negative: true,
|
|
60
|
+
});
|
|
41
61
|
}
|
|
42
62
|
else if (status === "return_requested" || status === "returned" || status === "refunded") {
|
|
43
63
|
steps.push({ key: status, label: STAGE_LABELS[status] ?? status });
|
|
44
64
|
}
|
|
45
65
|
return steps;
|
|
46
66
|
}
|
|
47
|
-
export function OrderStatusTimeline({ orderStatus, orderDate, shippingDate, deliveryDate, cancellationDate, trackingNumber, shippingCarrier, trackingUrl, className = "", }) {
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}) }), (trackingNumber || shippingCarrier || trackingUrl) && !isTerminalNegative && (_jsx(Div, { className: "mt-3 border-t border-[var(--appkit-color-border)]", padding: "t-sm", children: _jsxs(Stack, { gap: "xs", children: [shippingCarrier && (_jsxs(Row, { justify: "between", children: [_jsx(Text, { size: "sm", color: "muted", children: "Carrier" }), _jsx(Text, { size: "sm", weight: "medium", children: shippingCarrier })] })), trackingNumber && (_jsxs(Row, { justify: "between", children: [_jsx(Text, { size: "sm", color: "muted", children: "Tracking number" }), _jsx(Text, { size: "sm", weight: "medium", children: trackingNumber })] })), trackingUrl && (_jsx(Row, { justify: "end", children: _jsx(Anchor, { href: trackingUrl, tone: "brand", weight: "semibold", size: "sm", children: "Track with carrier \u2192" }) }))] }) })), !trackingNumber && !trackingUrl && !isTerminalNegative && (_jsx(Badge, { variant: "default", className: "mt-3", children: "No tracking details yet" }))] }));
|
|
67
|
+
export function OrderStatusTimeline({ orderStatus, timeline, timelineTruncated, orderDate, shippingDate, deliveryDate, cancellationDate, trackingNumber, shippingCarrier, trackingUrl, className = "", }) {
|
|
68
|
+
const fromHistory = stepsFromEntries(timeline, labelFor, isNegative);
|
|
69
|
+
const steps = fromHistory.length
|
|
70
|
+
? fromHistory
|
|
71
|
+
: buildLegacySteps({ orderStatus, orderDate, shippingDate, deliveryDate, cancellationDate });
|
|
72
|
+
const hasTracking = Boolean(trackingNumber || shippingCarrier || trackingUrl);
|
|
73
|
+
return (_jsx(StatusTimeline, { title: "Tracking", steps: steps, truncatedCount: timelineTruncated, className: className, footer: hasTracking ? (_jsxs(Stack, { gap: "xs", children: [shippingCarrier && (_jsxs(Row, { justify: "between", children: [_jsx(Text, { size: "sm", color: "muted", children: "Carrier" }), _jsx(Text, { size: "sm", weight: "medium", children: shippingCarrier })] })), trackingNumber && (_jsxs(Row, { justify: "between", children: [_jsx(Text, { size: "sm", color: "muted", children: "Tracking number" }), _jsx(Text, { size: "sm", weight: "medium", children: trackingNumber })] })), trackingUrl && (_jsx(Row, { justify: "end", children: _jsx(Anchor, { href: trackingUrl, tone: "brand", weight: "semibold", size: "sm", children: "Track with carrier \u2192" }) }))] })) : (_jsx(Badge, { variant: "default", children: "No tracking details yet" })) }));
|
|
55
74
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { OrderStatus } from "../types/index";
|
|
2
|
+
import { OrderStatusValues } from "../schemas/firestore";
|
|
3
|
+
export declare const ORDER_SCOPE_VALUES: {
|
|
4
|
+
/** Still moving — someone (buyer, seller or admin) has something to do. */
|
|
5
|
+
readonly ACTIVE: "active";
|
|
6
|
+
/** Terminal — delivered, cancelled, refunded or returned. */
|
|
7
|
+
readonly CLOSED: "closed";
|
|
8
|
+
/** No lifecycle predicate. */
|
|
9
|
+
readonly ALL: "all";
|
|
10
|
+
};
|
|
11
|
+
export type OrderScope = (typeof ORDER_SCOPE_VALUES)[keyof typeof ORDER_SCOPE_VALUES];
|
|
12
|
+
export declare function isOrderScope(value: string): value is OrderScope;
|
|
13
|
+
/**
|
|
14
|
+
* The statuses a scope covers, or `undefined` for "all" (no filter).
|
|
15
|
+
*
|
|
16
|
+
* Emitted as a pipe-joined OR-group, which the Firebase Sieve adapter upgrades
|
|
17
|
+
* to a single Firestore "in" query — no fan-out, and it reuses the existing
|
|
18
|
+
* (status, createdAt) composite index.
|
|
19
|
+
*/
|
|
20
|
+
export declare function statusesForScope(scope: OrderScope): OrderStatus[] | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Tab definitions for the scope bar.
|
|
23
|
+
*
|
|
24
|
+
* NOT registered in `audit-filter-tab-enums.mjs`'s REGISTRY, and deliberately
|
|
25
|
+
* so — the same reasoning its header gives for `ADMIN_ORDER_PAYMENT_REVIEW_TABS`
|
|
26
|
+
* and `ADMIN_CART_OWNERSHIP_TABS`. These ids are a DERIVED grouping, not values
|
|
27
|
+
* any Firestore field holds, so there is no backing enum to compare them
|
|
28
|
+
* against. `STATUS_SCOPE` above is what keeps them honest instead, at compile
|
|
29
|
+
* time.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ORDER_SCOPE_TABS: readonly {
|
|
32
|
+
id: OrderScope;
|
|
33
|
+
label: string;
|
|
34
|
+
}[];
|
|
35
|
+
/**
|
|
36
|
+
* Fold the lifecycle scope into a caller-supplied Sieve filter string.
|
|
37
|
+
*
|
|
38
|
+
* Shared by all three order list routes rather than written three times —
|
|
39
|
+
* partly for the usual reason, but mostly because of the guard: if `filters`
|
|
40
|
+
* already carries a `status==` clause, the scope must NOT add a second one.
|
|
41
|
+
* Two equality clauses on one field are AND-ed by Sieve, and no document can
|
|
42
|
+
* satisfy both, so the list would silently return zero rows (the failure mode
|
|
43
|
+
* documented in Root Cause #59). An explicit status wins; the scope only fills
|
|
44
|
+
* the gap when the caller named none.
|
|
45
|
+
*/
|
|
46
|
+
export declare function mergeOrderScopeFilter(filters: string | undefined | null, scopeParam: string | undefined | null): string | undefined;
|
|
47
|
+
/** Re-exported for callers that need the raw values alongside the scope. */
|
|
48
|
+
export { OrderStatusValues };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Filtering orders meant picking one of seven individual statuses, on
|
|
3
|
+
* every order dashboard. The overwhelmingly common questions — "what still
|
|
4
|
+
* needs someone to act on it" and "what is finished" — had no answer at
|
|
5
|
+
* all, and the per-view status arrays had drifted from the real union
|
|
6
|
+
* anyway (`SELLER_ORDER_STATUS_TABS` omitted `confirmed`, a status the
|
|
7
|
+
* seller's own Update-Status dropdown could SET, so a seller could put an
|
|
8
|
+
* order into a state they could then never filter for).
|
|
9
|
+
*
|
|
10
|
+
* WHAT: A lifecycle scope — Active / Closed / All — that groups the nine real
|
|
11
|
+
* statuses. The buyer, seller and admin order lists all render the same
|
|
12
|
+
* three tabs, and the detailed status chips remain underneath as the
|
|
13
|
+
* drill-down.
|
|
14
|
+
*
|
|
15
|
+
* EXPORTS: ORDER_SCOPE_VALUES, OrderScope, isOrderScope, statusesForScope,
|
|
16
|
+
* ORDER_SCOPE_TABS
|
|
17
|
+
*
|
|
18
|
+
* @tag domain:orders
|
|
19
|
+
* @tag layer:constants
|
|
20
|
+
* @tag pattern:none
|
|
21
|
+
* @tag access:isomorphic
|
|
22
|
+
* @tag consumers:AdminOrdersView,SellerOrdersView,UserOrdersView,api/user/orders
|
|
23
|
+
* @tag sideEffects:none
|
|
24
|
+
*/
|
|
25
|
+
import { OrderStatusValues } from "../schemas/firestore";
|
|
26
|
+
export const ORDER_SCOPE_VALUES = {
|
|
27
|
+
/** Still moving — someone (buyer, seller or admin) has something to do. */
|
|
28
|
+
ACTIVE: "active",
|
|
29
|
+
/** Terminal — delivered, cancelled, refunded or returned. */
|
|
30
|
+
CLOSED: "closed",
|
|
31
|
+
/** No lifecycle predicate. */
|
|
32
|
+
ALL: "all",
|
|
33
|
+
};
|
|
34
|
+
export function isOrderScope(value) {
|
|
35
|
+
return Object.values(ORDER_SCOPE_VALUES).includes(value);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Every status belongs to exactly one scope.
|
|
39
|
+
*
|
|
40
|
+
* `Record<OrderStatus, …>` on purpose: adding a tenth status is then a COMPILE
|
|
41
|
+
* error rather than a status that silently belongs to neither tab and
|
|
42
|
+
* disappears from both (Root Cause #61).
|
|
43
|
+
*/
|
|
44
|
+
const STATUS_SCOPE = {
|
|
45
|
+
pending: "active",
|
|
46
|
+
confirmed: "active",
|
|
47
|
+
processing: "active",
|
|
48
|
+
shipped: "active",
|
|
49
|
+
// Deliberately ACTIVE: a return request is the seller's next action item,
|
|
50
|
+
// not a finished order. Grouping it under Closed would bury exactly the
|
|
51
|
+
// rows a seller most needs to see.
|
|
52
|
+
return_requested: "active",
|
|
53
|
+
delivered: "closed",
|
|
54
|
+
cancelled: "closed",
|
|
55
|
+
refunded: "closed",
|
|
56
|
+
returned: "closed",
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* The statuses a scope covers, or `undefined` for "all" (no filter).
|
|
60
|
+
*
|
|
61
|
+
* Emitted as a pipe-joined OR-group, which the Firebase Sieve adapter upgrades
|
|
62
|
+
* to a single Firestore "in" query — no fan-out, and it reuses the existing
|
|
63
|
+
* (status, createdAt) composite index.
|
|
64
|
+
*/
|
|
65
|
+
export function statusesForScope(scope) {
|
|
66
|
+
if (scope === ORDER_SCOPE_VALUES.ALL)
|
|
67
|
+
return undefined;
|
|
68
|
+
return Object.keys(STATUS_SCOPE).filter((status) => STATUS_SCOPE[status] === scope);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tab definitions for the scope bar.
|
|
72
|
+
*
|
|
73
|
+
* NOT registered in `audit-filter-tab-enums.mjs`'s REGISTRY, and deliberately
|
|
74
|
+
* so — the same reasoning its header gives for `ADMIN_ORDER_PAYMENT_REVIEW_TABS`
|
|
75
|
+
* and `ADMIN_CART_OWNERSHIP_TABS`. These ids are a DERIVED grouping, not values
|
|
76
|
+
* any Firestore field holds, so there is no backing enum to compare them
|
|
77
|
+
* against. `STATUS_SCOPE` above is what keeps them honest instead, at compile
|
|
78
|
+
* time.
|
|
79
|
+
*/
|
|
80
|
+
export const ORDER_SCOPE_TABS = [
|
|
81
|
+
{ id: ORDER_SCOPE_VALUES.ACTIVE, label: "Active" },
|
|
82
|
+
{ id: ORDER_SCOPE_VALUES.CLOSED, label: "Closed" },
|
|
83
|
+
{ id: ORDER_SCOPE_VALUES.ALL, label: "All" },
|
|
84
|
+
];
|
|
85
|
+
/**
|
|
86
|
+
* Fold the lifecycle scope into a caller-supplied Sieve filter string.
|
|
87
|
+
*
|
|
88
|
+
* Shared by all three order list routes rather than written three times —
|
|
89
|
+
* partly for the usual reason, but mostly because of the guard: if `filters`
|
|
90
|
+
* already carries a `status==` clause, the scope must NOT add a second one.
|
|
91
|
+
* Two equality clauses on one field are AND-ed by Sieve, and no document can
|
|
92
|
+
* satisfy both, so the list would silently return zero rows (the failure mode
|
|
93
|
+
* documented in Root Cause #59). An explicit status wins; the scope only fills
|
|
94
|
+
* the gap when the caller named none.
|
|
95
|
+
*/
|
|
96
|
+
export function mergeOrderScopeFilter(filters, scopeParam) {
|
|
97
|
+
const existing = (filters ?? "").trim();
|
|
98
|
+
if (!scopeParam || !isOrderScope(scopeParam))
|
|
99
|
+
return existing || undefined;
|
|
100
|
+
if (/(^|,)\s*status\s*==/.test(existing))
|
|
101
|
+
return existing || undefined;
|
|
102
|
+
const statuses = statusesForScope(scopeParam);
|
|
103
|
+
if (!statuses?.length)
|
|
104
|
+
return existing || undefined;
|
|
105
|
+
// A pipe-joined OR-group on ONE field — the Firebase Sieve adapter upgrades
|
|
106
|
+
// it to a single Firestore "in" query rather than several.
|
|
107
|
+
const clause = `status==${statuses.join("|")}`;
|
|
108
|
+
return existing ? `${existing},${clause}` : clause;
|
|
109
|
+
}
|
|
110
|
+
/** Re-exported for callers that need the raw values alongside the scope. */
|
|
111
|
+
export { OrderStatusValues };
|
|
@@ -2,8 +2,27 @@ import type { DocumentReference, WriteBatch } from "firebase-admin/firestore";
|
|
|
2
2
|
import type { FirebaseSieveResult, SieveModel } from "../../../providers/db-firebase";
|
|
3
3
|
import { BaseRepository, parseSieveDateValue } from "../../../providers/db-firebase";
|
|
4
4
|
import { type OrderCreateInput, type OrderDocument, type OrderRefundEvent } from "../schemas";
|
|
5
|
+
import { type HistoryActor, type FieldChange } from "../../../_internal/shared/history/index";
|
|
5
6
|
import type { OrderStatus, PaymentStatus } from "../types";
|
|
6
7
|
import { type PaymentReviewQueueMode } from "../constants/payment-window";
|
|
8
|
+
/**
|
|
9
|
+
* Who/why for a write that lands in `statusHistory`.
|
|
10
|
+
*
|
|
11
|
+
* Optional everywhere so existing callers keep compiling and record
|
|
12
|
+
* `system`; pass it wherever the acting user is known.
|
|
13
|
+
*/
|
|
14
|
+
export interface OrderWriteContext {
|
|
15
|
+
actor?: HistoryActor;
|
|
16
|
+
/** Overrides the default trigger label with the calling function's name. */
|
|
17
|
+
trigger?: string;
|
|
18
|
+
reason?: string;
|
|
19
|
+
note?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Changes the field diff cannot express — used by `postRefundEvent` to put
|
|
22
|
+
* the refund itself on the timeline rather than an array-length delta.
|
|
23
|
+
*/
|
|
24
|
+
extraChanges?: Record<string, FieldChange>;
|
|
25
|
+
}
|
|
7
26
|
declare class OrderRepository extends BaseRepository<OrderDocument> {
|
|
8
27
|
constructor();
|
|
9
28
|
private decryptOrder;
|
|
@@ -15,10 +34,23 @@ declare class OrderRepository extends BaseRepository<OrderDocument> {
|
|
|
15
34
|
findByStatus(status: OrderStatus): Promise<OrderDocument[]>;
|
|
16
35
|
findConfirmed(): Promise<OrderDocument[]>;
|
|
17
36
|
findPending(): Promise<OrderDocument[]>;
|
|
18
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Every write primitive below routes through this so `statusHistory` is
|
|
39
|
+
* appended at the SEVEN places a tracked field can change, rather than at
|
|
40
|
+
* the ~32 call sites above them. That is what makes order history a
|
|
41
|
+
* contained change instead of a codebase-wide sweep — and it follows the
|
|
42
|
+
* precedent `postRefundEvent` already set for append-only order data.
|
|
43
|
+
*
|
|
44
|
+
* `ctx` is optional throughout: a caller that has not been updated yet
|
|
45
|
+
* records `system` rather than failing, so this rolls out incrementally.
|
|
46
|
+
* The actor is worth passing wherever it is known — a history entry that
|
|
47
|
+
* cannot say who cancelled an order is a much weaker record.
|
|
48
|
+
*/
|
|
49
|
+
private updateWithHistory;
|
|
50
|
+
updateStatus(orderId: string, status: OrderStatus, additionalData?: Partial<OrderDocument>, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
19
51
|
assignWorker(orderId: string, workerId: string): Promise<OrderDocument>;
|
|
20
52
|
unassignWorker(orderId: string): Promise<OrderDocument>;
|
|
21
|
-
markPicked(orderId: string): Promise<OrderDocument>;
|
|
53
|
+
markPicked(orderId: string, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
22
54
|
markPacked(orderId: string): Promise<OrderDocument>;
|
|
23
55
|
/**
|
|
24
56
|
* Payment Detail Parity (Feature C) — the COD counterpart to the manual
|
|
@@ -27,10 +59,10 @@ declare class OrderRepository extends BaseRepository<OrderDocument> {
|
|
|
27
59
|
* verify against, so `verifiedBy` is the acting user's uid and
|
|
28
60
|
* `verificationMethod` is always "cod_collection".
|
|
29
61
|
*/
|
|
30
|
-
markCodCollected(orderId: string, verifiedBy: string, note?: string): Promise<OrderDocument>;
|
|
62
|
+
markCodCollected(orderId: string, verifiedBy: string, note?: string, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
31
63
|
findFulfillmentQueue(storeId: string): Promise<OrderDocument[]>;
|
|
32
|
-
updatePaymentStatus(orderId: string, paymentStatus: PaymentStatus, paymentId?: string): Promise<OrderDocument>;
|
|
33
|
-
cancelOrder(orderId: string, reason: string, refundAmount?: number): Promise<OrderDocument>;
|
|
64
|
+
updatePaymentStatus(orderId: string, paymentStatus: PaymentStatus, paymentId?: string, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
65
|
+
cancelOrder(orderId: string, reason: string, refundAmount?: number, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
34
66
|
findRecentByUser(userId: string): Promise<OrderDocument[]>;
|
|
35
67
|
hasUserPurchased(userId: string, productId: string): Promise<boolean>;
|
|
36
68
|
/**
|
|
@@ -217,7 +249,7 @@ declare class OrderRepository extends BaseRepository<OrderDocument> {
|
|
|
217
249
|
* Append one refund event to the order and mark it non-contestable.
|
|
218
250
|
* If `becomeRefunded` is true, also transitions the order status to "refunded".
|
|
219
251
|
*/
|
|
220
|
-
postRefundEvent(orderId: string, event: OrderRefundEvent, becomeRefunded?: boolean): Promise<OrderDocument>;
|
|
252
|
+
postRefundEvent(orderId: string, event: OrderRefundEvent, becomeRefunded?: boolean, ctx?: OrderWriteContext): Promise<OrderDocument>;
|
|
221
253
|
/** Fetch all orders sharing a paymentBatchId (for sibling-orders display). */
|
|
222
254
|
findByPaymentBatchId(batchId: string): Promise<OrderDocument[]>;
|
|
223
255
|
/**
|
|
@@ -327,8 +359,23 @@ declare class OrderRepository extends BaseRepository<OrderDocument> {
|
|
|
327
359
|
markPayoutRequested(batch: WriteBatch, ref: DocumentReference, payoutId: string): void;
|
|
328
360
|
/**
|
|
329
361
|
* Cloud Functions: stage a cancellation update into a caller-owned WriteBatch.
|
|
362
|
+
*
|
|
363
|
+
* `fromStatus` is supplied by the caller because a batch write does no read
|
|
364
|
+
* — but the sweep that calls this already filtered on a status, so it knows
|
|
365
|
+
* the value. Passing it beats recording `null` for something that is
|
|
366
|
+
* genuinely known one stack frame up.
|
|
367
|
+
*/
|
|
368
|
+
cancelInBatch(batch: WriteBatch, ref: DocumentReference, fromStatus?: OrderStatus | null): void;
|
|
369
|
+
/**
|
|
370
|
+
* History append for the two WriteBatch paths, which cannot read-then-diff.
|
|
371
|
+
*
|
|
372
|
+
* Uses `arrayUnion` so the entry lands without a prior read. The FIFO cap
|
|
373
|
+
* therefore is NOT applied here — it is enforced on the next ordinary
|
|
374
|
+
* write. That is an acceptable trade: both batch paths are terminal
|
|
375
|
+
* transitions (cancelled, payout-requested) that fire at most once per
|
|
376
|
+
* order, so they cannot be what overflows the array.
|
|
330
377
|
*/
|
|
331
|
-
|
|
378
|
+
private batchHistoryPatch;
|
|
332
379
|
}
|
|
333
380
|
declare const orderRepository: OrderRepository;
|
|
334
381
|
export { OrderRepository, orderRepository };
|