@mohasinac/appkit 4.30.18 → 4.31.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/digital-code/CodeRevealPanel.js +5 -2
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +3 -3
- package/dist/_internal/client/features/layout/useSidebarSearch.d.ts +21 -5
- package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -86
- package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
- package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
- package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +5 -2
- package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +11 -3
- package/dist/_internal/client/hand-mode/HandModeProvider.js +2 -0
- package/dist/_internal/server/features/auctions/actions.js +14 -3
- package/dist/_internal/server/features/auctions/service.js +1 -1
- package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
- package/dist/_internal/server/features/auth/permissions.js +3 -2
- package/dist/_internal/server/features/blog/data.js +2 -2
- package/dist/_internal/server/features/blog/service.js +3 -3
- package/dist/_internal/server/features/brands/data.js +1 -1
- package/dist/_internal/server/features/brands/service.js +3 -3
- package/dist/_internal/server/features/bundles/actions.js +6 -1
- package/dist/_internal/server/features/bundles/data.js +21 -4
- package/dist/_internal/server/features/cart/data.js +3 -1
- package/dist/_internal/server/features/cart/service.js +13 -2
- package/dist/_internal/server/features/categories/data.js +26 -6
- package/dist/_internal/server/features/classified/index.d.ts +0 -1
- package/dist/_internal/server/features/classified/index.js +0 -1
- package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
- package/dist/_internal/server/features/digital-code/index.js +0 -1
- package/dist/_internal/server/features/events/actions.js +17 -4
- package/dist/_internal/server/features/events/data.js +1 -1
- package/dist/_internal/server/features/events/service.js +1 -1
- package/dist/_internal/server/features/grouped/data.js +7 -2
- package/dist/_internal/server/features/item-requests/data.js +1 -1
- package/dist/_internal/server/features/live/index.d.ts +0 -1
- package/dist/_internal/server/features/live/index.js +0 -1
- package/dist/_internal/server/features/lottery/actions.js +2 -2
- package/dist/_internal/server/features/lottery/data.js +1 -1
- package/dist/_internal/server/features/orders/actions.js +7 -7
- package/dist/_internal/server/features/orders/data.d.ts +1 -1
- package/dist/_internal/server/features/orders/data.js +14 -2
- package/dist/_internal/server/features/orders/service.js +1 -1
- package/dist/_internal/server/features/pre-orders/service.js +1 -1
- package/dist/_internal/server/features/prize-draws/actions.js +1 -1
- package/dist/_internal/server/features/products/data.js +21 -6
- package/dist/_internal/server/features/products/list-public.d.ts +9 -0
- package/dist/_internal/server/features/products/list-public.js +95 -7
- package/dist/_internal/server/features/products/service.js +1 -1
- package/dist/_internal/server/features/promotions/actions.js +1 -1
- package/dist/_internal/server/features/promotions/data.js +1 -1
- package/dist/_internal/server/features/promotions/service.js +1 -1
- package/dist/_internal/server/features/reviews/data.d.ts +1 -1
- package/dist/_internal/server/features/reviews/data.js +6 -1
- package/dist/_internal/server/features/reviews/og-data.js +1 -1
- package/dist/_internal/server/features/shared/listing-data-factory.js +7 -2
- package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
- package/dist/_internal/server/features/site-settings/adapters.js +8 -5
- package/dist/_internal/server/features/stores/data.js +1 -1
- package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
- package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
- package/dist/_internal/server/features/tester/visibility.js +2 -2
- package/dist/_internal/server/functions/scheduled.d.ts +3 -1
- package/dist/_internal/server/functions/scheduled.js +27 -1
- package/dist/_internal/server/jobs/core/auctionSettlement.js +6 -1
- package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +7 -15
- package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
- package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
- package/dist/_internal/server/jobs/core/revenueRollup.js +7 -1
- package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +69 -22
- package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
- package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
- package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
- package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
- package/dist/_internal/shared/features/layout/types.d.ts +37 -1
- package/dist/_internal/shared/features/layout/types.js +19 -1
- package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
- package/dist/_internal/shared/features/notifications/action-url.js +47 -0
- package/dist/_internal/shared/features/offers/config.d.ts +65 -0
- package/dist/_internal/shared/features/offers/config.js +73 -2
- package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
- package/dist/_internal/shared/features/orders/schema.js +22 -2
- package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
- package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
- package/dist/_internal/shared/listing-types/capabilities.js +6 -1
- package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
- package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
- package/dist/client/api/useApiQuery.js +17 -6
- package/dist/client.d.ts +38 -20
- package/dist/client.js +39 -14
- package/dist/configs/next.js +10 -2
- package/dist/constants/api-endpoints.d.ts +18 -54
- package/dist/constants/api-endpoints.js +6 -26
- package/dist/constants/field-names.d.ts +6 -24
- package/dist/constants/field-names.js +10 -27
- package/dist/constants/geo/countries.d.ts +50 -0
- package/dist/constants/geo/countries.js +129 -0
- package/dist/constants/geo/subdivisions.d.ts +13 -0
- package/dist/constants/geo/subdivisions.js +104 -0
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -2
- package/dist/constants/table-keys.d.ts +24 -0
- package/dist/constants/table-keys.js +28 -0
- package/dist/contracts/client-realtime.d.ts +6 -0
- package/dist/contracts/extend.d.ts +0 -9
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/realtime-session.d.ts +12 -12
- package/dist/contracts/realtime-session.js +79 -77
- package/dist/core/browser.d.ts +1 -1
- package/dist/core/browser.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/site-config.d.ts +0 -3
- package/dist/core/site-config.js +0 -3
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/messages.d.ts +0 -8
- package/dist/errors/messages.js +0 -9
- package/dist/features/about/components/DeveloperView.js +7 -2
- package/dist/features/about/components/PolicyPageView.js +9 -1
- package/dist/features/about/components/PublicProfileView.js +23 -5
- package/dist/features/about/schemas/index.d.ts +8 -8
- package/dist/features/account/components/AddressFilters.js +32 -11
- package/dist/features/account/components/AddressForm.d.ts +26 -25
- package/dist/features/account/components/AddressForm.js +81 -103
- package/dist/features/account/components/AddressesIndexListing.js +8 -4
- package/dist/features/account/components/NotificationBell.js +4 -3
- package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
- package/dist/features/account/components/UserOffersPanel.js +1 -1
- package/dist/features/account/components/UserSidebar.d.ts +3 -4
- package/dist/features/account/components/UserSupportView.js +89 -58
- package/dist/features/account/components/index.d.ts +1 -7
- package/dist/features/account/components/index.js +0 -3
- package/dist/features/account/hooks/useAddresses.d.ts +4 -3
- package/dist/features/account/hooks/useAddresses.js +4 -6
- package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
- package/dist/features/account/hooks/useCollapsedSections.js +211 -38
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +0 -3
- package/dist/features/account/index.js +0 -3
- package/dist/features/account/schemas/index.d.ts +0 -92
- package/dist/features/account/schemas/index.js +42 -20
- package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
- package/dist/features/addresses/components/AddressLocationFields.js +41 -0
- package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
- package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
- package/dist/features/addresses/schemas/address-form.d.ts +423 -0
- package/dist/features/addresses/schemas/address-form.js +212 -0
- package/dist/features/addresses/schemas/index.d.ts +1 -0
- package/dist/features/addresses/schemas/index.js +8 -0
- package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
- package/dist/features/admin/actions/index.d.ts +0 -1
- package/dist/features/admin/actions/index.js +0 -1
- package/dist/features/admin/actions/notification-actions.js +1 -41
- package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
- package/dist/features/admin/components/AdminActionIndexView.js +128 -0
- package/dist/features/admin/components/AdminAdEditorView.js +159 -163
- package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
- package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
- package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
- package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
- package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
- package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
- package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
- package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
- package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
- package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
- package/dist/features/admin/components/AdminFulfillmentView.js +5 -2
- package/dist/features/admin/components/AdminMediaView.js +3 -3
- package/dist/features/admin/components/AdminNavEditorView.js +69 -44
- package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
- package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
- package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
- package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
- package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
- package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
- package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
- package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
- package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
- package/dist/features/admin/components/index.d.ts +2 -2
- package/dist/features/admin/components/index.js +1 -1
- package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
- package/dist/features/admin/constants/site-settings-tabs.js +152 -0
- package/dist/features/admin/index.d.ts +0 -3
- package/dist/features/admin/index.js +0 -2
- package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
- package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
- package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
- package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
- package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
- package/dist/features/admin/schemas/admin-user-form.js +7 -0
- package/dist/features/admin/schemas/firestore.d.ts +48 -95
- package/dist/features/admin/schemas/firestore.js +15 -151
- package/dist/features/admin/schemas/nav-item-form.js +9 -2
- package/dist/features/admin/server.d.ts +0 -4
- package/dist/features/admin/server.js +0 -2
- package/dist/features/admin/types/index.d.ts +0 -7
- package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
- package/dist/features/analytics/repository/page-views.repository.js +24 -0
- package/dist/features/analytics/types.d.ts +1 -1
- package/dist/features/analytics/types.js +13 -0
- package/dist/features/auctions/components/AuctionDetailPageView.js +6 -2
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +3 -1
- package/dist/features/auth/actions/index.d.ts +0 -1
- package/dist/features/auth/actions/index.js +0 -1
- package/dist/features/auth/actions/profile-actions.js +4 -3
- package/dist/features/auth/actions/realtime-token-actions.js +1 -12
- package/dist/features/auth/auth-helpers.js +5 -7
- package/dist/features/auth/components/ForgotPasswordView.js +1 -1
- package/dist/features/auth/components/Guards.js +2 -1
- package/dist/features/auth/components/LoginForm.d.ts +0 -2
- package/dist/features/auth/components/LoginForm.js +2 -4
- package/dist/features/auth/components/RegisterForm.js +62 -19
- package/dist/features/auth/components/ResetPasswordView.js +1 -1
- package/dist/features/auth/hooks/useAuth.js +3 -0
- package/dist/features/auth/permissions/constants.d.ts +27 -1
- package/dist/features/auth/role-predicates.d.ts +75 -7
- package/dist/features/auth/role-predicates.js +28 -2
- package/dist/features/auth/schemas/firestore.d.ts +22 -0
- package/dist/features/auth/schemas/index.d.ts +1 -1
- package/dist/features/auth/schemas/index.js +44 -8
- package/dist/features/auth/types/index.d.ts +14 -1
- package/dist/features/blog/api/route.js +10 -2
- package/dist/features/blog/components/BlogIndexListing.js +1 -1
- package/dist/features/blog/hooks/useBlog.js +2 -2
- package/dist/features/blog/repository/blog.repository.js +3 -1
- package/dist/features/blog/schemas/index.d.ts +4 -0
- package/dist/features/blog/schemas/index.js +2 -0
- package/dist/features/blog/types/index.d.ts +1 -1
- package/dist/features/cart/actions/cart-actions.js +13 -4
- package/dist/features/cart/utils/pending-ops.js +1 -1
- package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
- package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
- package/dist/features/catalogue/schemas/validation.d.ts +4 -4
- package/dist/features/catalogue/schemas/validation.js +47 -10
- package/dist/features/categories/components/BrandDetailPageView.js +28 -12
- package/dist/features/categories/components/CategoryDetailPageView.js +37 -20
- package/dist/features/categories/repository/categories.repository.js +3 -1
- package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
- package/dist/features/categories/schemas/bundle-form.js +149 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +10 -1
- package/dist/features/classified/components/ClassifiedContactSellerPanel.js +1 -1
- package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
- package/dist/features/classified/components/ClassifiedDetailPageView.js +47 -18
- package/dist/features/consultation/components/ConsultationForm.js +1 -1
- package/dist/features/consultation/schemas/index.js +34 -10
- package/dist/features/corporate/schemas/index.js +36 -15
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -1
- package/dist/features/events/components/EventBanner.js +5 -2
- package/dist/features/events/components/EventOfferCard.js +3 -1
- package/dist/features/events/components/EventPollWidget.js +1 -1
- package/dist/features/events/components/SpinWheelView.js +3 -2
- package/dist/features/filters/FilterPanel.js +3 -3
- package/dist/features/filters/RangeFilter.d.ts +10 -0
- package/dist/features/filters/RangeFilter.js +41 -4
- package/dist/features/grouped/components/GroupedListingEditorView.js +2 -1
- package/dist/features/history/hooks/useHistory.js +29 -27
- package/dist/features/homepage/components/AdSlot.js +3 -1
- package/dist/features/homepage/components/GoogleReviewsSection.js +8 -2
- package/dist/features/homepage/components/MarketplaceHomepageView.js +58 -15
- package/dist/features/homepage/components/SocialFeedSection.js +4 -1
- package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
- package/dist/features/homepage/lib/live-stats.js +8 -1
- package/dist/features/homepage/repository/carousel.repository.js +2 -1
- package/dist/features/layout/BottomActions.js +84 -11
- package/dist/features/layout/BottomActionsContext.d.ts +1 -6
- package/dist/features/layout/BottomActionsContext.js +1 -1
- package/dist/features/layout/hooks/useBottomActions.js +2 -2
- package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
- package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
- package/dist/features/live/components/LiveItemDetailPageView.js +4 -1
- package/dist/features/lottery/schemas/config-write.d.ts +9 -5
- package/dist/features/lottery/schemas/config-write.js +69 -9
- package/dist/features/media/finalize.js +3 -1
- package/dist/features/media/modals/ImageEditor.js +1 -1
- package/dist/features/media/modals/VideoThumbnailSelector.js +5 -2
- package/dist/features/media/modals/VideoTrimModal.js +5 -2
- package/dist/features/media/upload/MediaUploadField.js +2 -2
- package/dist/features/messages/hooks/useConversation.js +18 -4
- package/dist/features/messages/hooks/useConversations.js +25 -8
- package/dist/features/orders/components/RefundRequestView.js +5 -2
- package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
- package/dist/features/orders/schemas/buyer-forms.js +31 -3
- package/dist/features/orders/schemas/index.d.ts +2 -2
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -1
- package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -1
- package/dist/features/products/components/GroupSettingsPanel.js +3 -1
- package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
- package/dist/features/products/components/MakeOfferButton.js +33 -11
- package/dist/features/products/components/PrizeDrawDetailPageView.js +4 -1
- package/dist/features/products/components/ProductDetailActions.js +0 -1
- package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
- package/dist/features/products/components/ProductDetailPageView.js +16 -7
- package/dist/features/products/components/ShareButton.js +3 -1
- package/dist/features/products/constants/action-defs.d.ts +1 -2
- package/dist/features/products/constants/action-defs.js +40 -43
- package/dist/features/products/repository/loadProductFeatures.js +10 -2
- package/dist/features/products/repository/products.repository.d.ts +5 -1
- package/dist/features/products/repository/products.repository.js +25 -2
- package/dist/features/products/schemas/firestore.d.ts +7 -3
- package/dist/features/products/schemas/product-features.validators.js +3 -0
- package/dist/features/promotions/components/CouponCard.js +11 -8
- package/dist/features/reviews/actions/review-actions.js +8 -1
- package/dist/features/reviews/components/ReviewDetailPageView.js +13 -3
- package/dist/features/reviews/components/ReviewDetailShell.js +3 -1
- package/dist/features/scams/actions/scam-actions.d.ts +9 -1
- package/dist/features/scams/actions/scam-actions.js +52 -12
- package/dist/features/scams/components/SellerTrustBadge.d.ts +1 -1
- package/dist/features/scams/components/SellerTrustBadge.js +13 -0
- package/dist/features/scams/repository/scammer.repository.js +2 -1
- package/dist/features/scams/schemas/firestore.d.ts +15 -1
- package/dist/features/scams/schemas/report-form.d.ts +5 -5
- package/dist/features/scams/schemas/report-form.js +18 -3
- package/dist/features/search/action-index/derive.d.ts +49 -0
- package/dist/features/search/action-index/derive.js +121 -0
- package/dist/features/search/action-index/repository.d.ts +42 -0
- package/dist/features/search/action-index/repository.js +100 -0
- package/dist/features/search/action-index/settings-entries.d.ts +41 -0
- package/dist/features/search/action-index/settings-entries.js +268 -0
- package/dist/features/search/action-index/types.d.ts +81 -0
- package/dist/features/search/action-index/types.js +102 -0
- package/dist/features/search/action-index/validate-entry.d.ts +34 -0
- package/dist/features/search/action-index/validate-entry.js +114 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
- package/dist/features/search/hooks/useNavSuggestions.js +23 -3
- package/dist/features/search/repository/search.repository.js +3 -1
- package/dist/features/seller/actions/offer-actions.js +43 -19
- package/dist/features/seller/actions/seller-actions.js +29 -5
- package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
- package/dist/features/seller/components/CategoryChipPicker.js +12 -0
- package/dist/features/seller/components/FulfillmentView.js +5 -2
- package/dist/features/seller/components/PhysicalLocationModal.js +1 -1
- package/dist/features/seller/components/PrintCenterView.js +3 -1
- package/dist/features/seller/components/SellerAddressesView.js +5 -1
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
- package/dist/features/seller/components/SellerArtView.d.ts +14 -7
- package/dist/features/seller/components/SellerArtView.js +4 -119
- package/dist/features/seller/components/SellerBidsView.js +1 -1
- package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
- package/dist/features/seller/components/SellerClassifiedView.js +4 -124
- package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
- package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
- package/dist/features/seller/components/SellerCouponsView.js +1 -1
- package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
- package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
- package/dist/features/seller/components/SellerGoogleReviewsView.js +2 -2
- package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
- package/dist/features/seller/components/SellerListingTypeView.js +277 -0
- package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
- package/dist/features/seller/components/SellerLiveView.js +4 -126
- package/dist/features/seller/components/SellerOrdersView.js +3 -3
- package/dist/features/seller/components/SellerPayoutMethodsView.js +2 -2
- package/dist/features/seller/components/SellerProductShell.d.ts +5 -0
- package/dist/features/seller/components/SellerProductShell.js +15 -5
- package/dist/features/seller/components/SellerProductsView.js +24 -10
- package/dist/features/seller/components/SellerReviewsView.js +47 -16
- package/dist/features/seller/components/SellerShippingConfigsView.js +5 -4
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
- package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
- package/dist/features/seller/components/SellerStickersView.js +4 -119
- package/dist/features/seller/components/SellerStoreCategoriesView.js +3 -2
- package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
- package/dist/features/seller/components/SellerSupportView.js +100 -0
- package/dist/features/seller/components/index.d.ts +4 -8
- package/dist/features/seller/components/index.js +2 -4
- package/dist/features/seller/index.d.ts +0 -1
- package/dist/features/seller/index.js +0 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
- package/dist/features/seller/schemas/coupon-form.js +155 -23
- package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
- package/dist/features/seller/schemas/offer-forms.js +28 -12
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +2 -2
- package/dist/features/shell/SectionForm.d.ts +19 -1
- package/dist/features/shell/SectionForm.js +104 -17
- package/dist/features/shell/build-sections.d.ts +23 -0
- package/dist/features/shell/build-sections.js +106 -8
- package/dist/features/shell/field-ui-meta.d.ts +44 -0
- package/dist/features/shell/field-ui-meta.js +14 -7
- package/dist/features/shell/form-sections.d.ts +46 -0
- package/dist/features/shell/form-sections.js +114 -0
- package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
- package/dist/features/shipments/schemas/validation.d.ts +2 -2
- package/dist/features/shipments/schemas/validation.js +44 -13
- package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
- package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
- package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
- package/dist/features/stores/actions/store-query-actions.js +3 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
- package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +12 -3
- package/dist/features/support/repository/support.repository.d.ts +21 -0
- package/dist/features/support/repository/support.repository.js +63 -0
- package/dist/features/support/schemas/firestore.d.ts +27 -2
- package/dist/features/support/schemas/firestore.js +2 -0
- package/dist/features/support/schemas/ticket-create-form.js +7 -0
- package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
- package/dist/features/tester/schemas/checklist-item-form.js +109 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
- package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +291 -30
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +51 -14
- package/dist/features/wishlist/hooks/useWishlistToggle.js +8 -1
- package/dist/http/api-handler.js +2 -1
- package/dist/index.d.ts +25 -104
- package/dist/index.js +38 -143
- package/dist/jobs.d.ts +1 -1
- package/dist/jobs.js +1 -1
- package/dist/monitoring/browser.d.ts +0 -2
- package/dist/monitoring/browser.js +12 -1
- package/dist/monitoring/index.d.ts +0 -2
- package/dist/monitoring/index.js +0 -1
- package/dist/next/api/routeHandler.js +9 -4
- package/dist/next/index.d.ts +1 -2
- package/dist/next/index.js +0 -1
- package/dist/next/middleware/index.d.ts +0 -2
- package/dist/next/middleware/index.js +0 -1
- package/dist/next/routing/route-map.d.ts +8 -7
- package/dist/next/routing/route-map.js +10 -3
- package/dist/providers/auth-firebase/session.js +3 -1
- package/dist/providers/db-firebase/admin-app-lite.js +8 -8
- package/dist/providers/db-firebase/admin.js +27 -13
- package/dist/providers/db-firebase/browser-stub.d.ts +1 -11
- package/dist/providers/db-firebase/browser-stub.js +6 -11
- package/dist/providers/db-firebase/index.d.ts +0 -1
- package/dist/providers/db-firebase/index.js +0 -1
- package/dist/providers/db-firebase/rtdb-paths.d.ts +15 -6
- package/dist/providers/db-firebase/rtdb-paths.js +15 -6
- package/dist/providers/db-firebase/rtdb-url.d.ts +27 -0
- package/dist/providers/db-firebase/rtdb-url.js +50 -0
- package/dist/providers/db-firebase/sieve.d.ts +22 -0
- package/dist/providers/firebase-client/realtime.d.ts +20 -0
- package/dist/providers/firebase-client/realtime.js +34 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +1 -1
- package/dist/react/hooks/use-action-dispatch.js +8 -2
- package/dist/react/hooks/useFormStatePreservation.js +3 -1
- package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
- package/dist/react/hooks/useListingTypeFlags.js +1 -1
- package/dist/react/hooks/usePendingFilters.js +5 -3
- package/dist/react/hooks/usePendingTable.js +15 -3
- package/dist/react/hooks/useRealtimeEvent.js +20 -9
- package/dist/repositories/index.d.ts +0 -1
- package/dist/repositories/index.js +0 -1
- package/dist/schemas/registry.d.ts +197 -232
- package/dist/schemas/registry.js +5 -6
- package/dist/schemas/webhooks/razorpay.d.ts +50 -50
- package/dist/security/authorization.d.ts +9 -0
- package/dist/security/authorization.js +16 -2
- package/dist/security/browser.d.ts +1 -3
- package/dist/security/browser.js +5 -2
- package/dist/security/index.d.ts +1 -3
- package/dist/security/index.js +19 -2
- package/dist/security/pii-encrypt.js +16 -0
- package/dist/security/pii-schemas.d.ts +0 -14
- package/dist/security/pii-schemas.js +7 -15
- package/dist/seed/_helpers/category-forest.js +2 -2
- package/dist/seed/_helpers/media.d.ts +19 -0
- package/dist/seed/_helpers/media.js +75 -0
- package/dist/seed/blog-posts-seed-data.js +17 -17
- package/dist/seed/carousel-slides-seed-data.js +7 -7
- package/dist/seed/cart-seed-data.js +13 -13
- package/dist/seed/categories-seed-data.js +10 -10
- package/dist/seed/events-seed-data.js +24 -24
- package/dist/seed/factories/product.factory.js +4 -4
- package/dist/seed/factories/store.factory.js +3 -3
- package/dist/seed/factories/user.factory.js +2 -2
- package/dist/seed/grouped-listings-seed-data.js +11 -11
- package/dist/seed/homepage-sections-seed-data.js +2 -2
- package/dist/seed/index.d.ts +0 -1
- package/dist/seed/index.js +0 -1
- package/dist/seed/manifest.d.ts +1 -1
- package/dist/seed/manifest.js +0 -5
- package/dist/seed/notifications-seed-data.js +20 -1
- package/dist/seed/orders-seed-data.js +2 -2
- package/dist/seed/products-art-seed-data.js +16 -16
- package/dist/seed/products-auctions-seed-data.js +34 -34
- package/dist/seed/products-classifieds-seed-data.js +35 -37
- package/dist/seed/products-digital-codes-seed-data.js +20 -20
- package/dist/seed/products-live-items-seed-data.js +11 -11
- package/dist/seed/products-preorders-seed-data.js +13 -13
- package/dist/seed/products-prize-draws-seed-data.js +43 -43
- package/dist/seed/products-standard-seed-data.js +54 -54
- package/dist/seed/products-stickers-seed-data.js +15 -15
- package/dist/seed/reviews-seed-data.js +4 -4
- package/dist/seed/scammers-seed-data.js +3 -3
- package/dist/seed/site-settings-seed-data.js +11 -24
- package/dist/seed/store-extensions-seed-data.js +10 -10
- package/dist/seed/stores-seed-data.js +11 -11
- package/dist/seed/support-tickets-seed-data.d.ts +14 -0
- package/dist/seed/support-tickets-seed-data.js +20 -1
- package/dist/seed/users-seed-data.js +20 -20
- package/dist/server-entry.d.ts +0 -1
- package/dist/server-entry.js +0 -1
- package/dist/server.d.ts +9 -6
- package/dist/server.js +7 -13
- package/dist/styles.css +248 -68
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +2 -2
- package/dist/tokens/themes/default-light.js +2 -2
- package/dist/tokens/tokens.css +24 -4
- package/dist/ui/components/ActionRow.d.ts +50 -0
- package/dist/ui/components/ActionRow.js +53 -0
- package/dist/ui/components/ActionRow.style.css +145 -0
- package/dist/ui/components/Drawer.d.ts +10 -0
- package/dist/ui/components/Drawer.js +2 -1
- package/dist/ui/components/FilterDrawer.js +4 -1
- package/dist/ui/components/FilterDrawer.style.css +6 -12
- package/dist/ui/components/FormActionBar.js +14 -1
- package/dist/ui/components/FormActionBar.style.css +12 -11
- package/dist/ui/components/ListingLayout.js +8 -1
- package/dist/ui/components/ListingLayout.style.css +6 -13
- package/dist/ui/components/Modal.d.ts +15 -1
- package/dist/ui/components/Modal.js +17 -3
- package/dist/ui/components/QuickCreateModal.js +2 -2
- package/dist/ui/components/QuickCreateModal.style.css +78 -84
- package/dist/ui/components/RecordDetailModal.js +2 -2
- package/dist/ui/components/SideDrawer.d.ts +8 -0
- package/dist/ui/components/SideDrawer.js +2 -1
- package/dist/ui/components/SideDrawer.style.css +6 -3
- package/dist/ui/components/SideModal.d.ts +11 -1
- package/dist/ui/components/SideModal.js +3 -2
- package/dist/ui/components/SideModal.style.css +14 -0
- package/dist/ui/components/Typography.style.css +33 -24
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/components/toolbar-collapse.js +1 -2
- package/dist/ui/forms/FormShell.style.css +260 -311
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/schemas.d.ts +0 -19
- package/dist/validation/schemas.js +8 -19
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +3 -6
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ListingType } from "../../../../features/products/types/index";
|
|
1
2
|
/**
|
|
2
3
|
* The floor, as a percentage of the listed price, below which an offer is
|
|
3
4
|
* rejected — used whenever a listing does not set its own `minOfferPercent`.
|
|
@@ -28,3 +29,67 @@ export declare function minOfferAmount(listedPrice: number, percent?: number | n
|
|
|
28
29
|
* below the floor the seller has said they don't want to hear it.
|
|
29
30
|
*/
|
|
30
31
|
export declare function isOfferAmountValid(amount: number, listedPrice: number, percent?: number | null): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Is Make-an-Offer the only way to buy this listing type?
|
|
34
|
+
*
|
|
35
|
+
* True exactly when the type can be offered on but has no cart line — today
|
|
36
|
+
* that is `classified` alone (`canAddToCart: false`, `canMakeOffer: true`).
|
|
37
|
+
*
|
|
38
|
+
* Derived from the capability registry rather than testing for `"classified"`,
|
|
39
|
+
* so a future type that lands in the same shape inherits the rule instead of
|
|
40
|
+
* silently becoming unbuyable. That is not hypothetical: this function exists
|
|
41
|
+
* because classified's actual purchase path was a `conversations` chat thread,
|
|
42
|
+
* and when that feature was deleted the listing type would have been left with
|
|
43
|
+
* no way to transact at all.
|
|
44
|
+
*/
|
|
45
|
+
export declare function offerIsOnlyPurchasePath(listingType: ListingType): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* May a buyer send an offer on this listing at all?
|
|
48
|
+
*
|
|
49
|
+
* The two ordinary gates are the type's `canMakeOffer` capability and the
|
|
50
|
+
* seller's own `allowOffers` opt-in. The third clause is the point:
|
|
51
|
+
*
|
|
52
|
+
* 🛑 **`allowOffers` is an opt-in to NEGOTIATION, not to being contactable.**
|
|
53
|
+
* On a listing with no cart, unchecking it would mean the buyer has no way to
|
|
54
|
+
* transact whatsoever — the page would render a price and no path to it. So
|
|
55
|
+
* where the offer IS the purchase path, an offer is always permitted; what
|
|
56
|
+
* `allowOffers` then controls is whether the buyer may propose a price *below*
|
|
57
|
+
* the asking one. See `resolveOfferBounds`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function offersEnabledFor(listingType: ListingType, allowOffers?: boolean): boolean;
|
|
60
|
+
export interface OfferBounds {
|
|
61
|
+
/** Lowest legal amount, inclusive. */
|
|
62
|
+
min: number;
|
|
63
|
+
/** Highest legal amount, inclusive. */
|
|
64
|
+
max: number;
|
|
65
|
+
/**
|
|
66
|
+
* The offer is pinned to the asking price — the buyer is requesting to buy,
|
|
67
|
+
* not negotiating. True when the offer is the only purchase path and the
|
|
68
|
+
* seller has not opted into haggling.
|
|
69
|
+
*
|
|
70
|
+
* Callers use this for COPY, never for a second bounds calculation: `min`
|
|
71
|
+
* and `max` are already equal when it is true.
|
|
72
|
+
*/
|
|
73
|
+
isBuyRequest: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The amounts this listing will accept, as one answer for the form, the schema
|
|
77
|
+
* and the server.
|
|
78
|
+
*
|
|
79
|
+
* Two cases beyond the ordinary one, both driven by there being no cart:
|
|
80
|
+
*
|
|
81
|
+
* - **No haggling opted in** → `min === max === listedPrice`. A "request to buy".
|
|
82
|
+
* - **Haggling opted in** → the usual floor, but the ceiling is the asking price
|
|
83
|
+
* **inclusive**. On a cartable listing an offer at full price is rejected with
|
|
84
|
+
* "use Add to Cart instead", which on a classified is advice the buyer cannot
|
|
85
|
+
* take — there is no cart button to use. That rejection was already a dead end
|
|
86
|
+
* before this change.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolveOfferBounds(opts: {
|
|
89
|
+
listingType: ListingType;
|
|
90
|
+
listedPrice: number;
|
|
91
|
+
minOfferPercent?: number | null;
|
|
92
|
+
allowOffers?: boolean;
|
|
93
|
+
}): OfferBounds;
|
|
94
|
+
/** Whether `amount` falls within `bounds`. The one comparison, shared. */
|
|
95
|
+
export declare function isWithinOfferBounds(amount: number, bounds: OfferBounds): boolean;
|
|
@@ -11,15 +11,18 @@
|
|
|
11
11
|
* Same discipline as `resolveMinBid` in the auctions config next door.
|
|
12
12
|
*
|
|
13
13
|
* EXPORTS:
|
|
14
|
-
* DEFAULT_MIN_OFFER_PERCENT, minOfferAmount, isOfferAmountValid
|
|
14
|
+
* DEFAULT_MIN_OFFER_PERCENT, minOfferAmount, isOfferAmountValid,
|
|
15
|
+
* offerIsOnlyPurchasePath, offersEnabledFor, resolveOfferBounds,
|
|
16
|
+
* type OfferBounds
|
|
15
17
|
*
|
|
16
18
|
* @tag domain:offers,seller
|
|
17
19
|
* @tag layer:shared
|
|
18
20
|
* @tag pattern:none
|
|
19
21
|
* @tag access:isomorphic
|
|
20
|
-
* @tag consumers:offer-actions,MakeOfferButton,ProductDetailPageView,ProductForm,SellerProductShell
|
|
22
|
+
* @tag consumers:offer-actions,MakeOfferButton,ProductDetailPageView,ClassifiedDetailPageView,ProductForm,SellerProductShell
|
|
21
23
|
* @tag sideEffects:none
|
|
22
24
|
*/
|
|
25
|
+
import { canAddToCart, canMakeOffer, } from "../../listing-types/capabilities";
|
|
23
26
|
/**
|
|
24
27
|
* The floor, as a percentage of the listed price, below which an offer is
|
|
25
28
|
* rejected — used whenever a listing does not set its own `minOfferPercent`.
|
|
@@ -57,3 +60,71 @@ export function minOfferAmount(listedPrice, percent) {
|
|
|
57
60
|
export function isOfferAmountValid(amount, listedPrice, percent) {
|
|
58
61
|
return amount >= minOfferAmount(listedPrice, percent) && amount < listedPrice;
|
|
59
62
|
}
|
|
63
|
+
/* -------------------------------------------------------------------------
|
|
64
|
+
* Listings whose ONLY purchase path is an offer
|
|
65
|
+
* ---------------------------------------------------------------------- */
|
|
66
|
+
/**
|
|
67
|
+
* Is Make-an-Offer the only way to buy this listing type?
|
|
68
|
+
*
|
|
69
|
+
* True exactly when the type can be offered on but has no cart line — today
|
|
70
|
+
* that is `classified` alone (`canAddToCart: false`, `canMakeOffer: true`).
|
|
71
|
+
*
|
|
72
|
+
* Derived from the capability registry rather than testing for `"classified"`,
|
|
73
|
+
* so a future type that lands in the same shape inherits the rule instead of
|
|
74
|
+
* silently becoming unbuyable. That is not hypothetical: this function exists
|
|
75
|
+
* because classified's actual purchase path was a `conversations` chat thread,
|
|
76
|
+
* and when that feature was deleted the listing type would have been left with
|
|
77
|
+
* no way to transact at all.
|
|
78
|
+
*/
|
|
79
|
+
export function offerIsOnlyPurchasePath(listingType) {
|
|
80
|
+
return canMakeOffer(listingType) && !canAddToCart(listingType);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* May a buyer send an offer on this listing at all?
|
|
84
|
+
*
|
|
85
|
+
* The two ordinary gates are the type's `canMakeOffer` capability and the
|
|
86
|
+
* seller's own `allowOffers` opt-in. The third clause is the point:
|
|
87
|
+
*
|
|
88
|
+
* 🛑 **`allowOffers` is an opt-in to NEGOTIATION, not to being contactable.**
|
|
89
|
+
* On a listing with no cart, unchecking it would mean the buyer has no way to
|
|
90
|
+
* transact whatsoever — the page would render a price and no path to it. So
|
|
91
|
+
* where the offer IS the purchase path, an offer is always permitted; what
|
|
92
|
+
* `allowOffers` then controls is whether the buyer may propose a price *below*
|
|
93
|
+
* the asking one. See `resolveOfferBounds`.
|
|
94
|
+
*/
|
|
95
|
+
export function offersEnabledFor(listingType, allowOffers) {
|
|
96
|
+
if (!canMakeOffer(listingType))
|
|
97
|
+
return false;
|
|
98
|
+
return allowOffers === true || offerIsOnlyPurchasePath(listingType);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The amounts this listing will accept, as one answer for the form, the schema
|
|
102
|
+
* and the server.
|
|
103
|
+
*
|
|
104
|
+
* Two cases beyond the ordinary one, both driven by there being no cart:
|
|
105
|
+
*
|
|
106
|
+
* - **No haggling opted in** → `min === max === listedPrice`. A "request to buy".
|
|
107
|
+
* - **Haggling opted in** → the usual floor, but the ceiling is the asking price
|
|
108
|
+
* **inclusive**. On a cartable listing an offer at full price is rejected with
|
|
109
|
+
* "use Add to Cart instead", which on a classified is advice the buyer cannot
|
|
110
|
+
* take — there is no cart button to use. That rejection was already a dead end
|
|
111
|
+
* before this change.
|
|
112
|
+
*/
|
|
113
|
+
export function resolveOfferBounds(opts) {
|
|
114
|
+
const { listingType, listedPrice, minOfferPercent, allowOffers } = opts;
|
|
115
|
+
const onlyPath = offerIsOnlyPurchasePath(listingType);
|
|
116
|
+
if (onlyPath && allowOffers !== true) {
|
|
117
|
+
return { min: listedPrice, max: listedPrice, isBuyRequest: true };
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
min: minOfferAmount(listedPrice, minOfferPercent),
|
|
121
|
+
// `- 0.01` and not `- 1`: money is decimal rupees, and this is the exact
|
|
122
|
+
// ceiling `makeOfferFormSchema` has always enforced.
|
|
123
|
+
max: onlyPath ? listedPrice : Math.round((listedPrice - 0.01) * 100) / 100,
|
|
124
|
+
isBuyRequest: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** Whether `amount` falls within `bounds`. The one comparison, shared. */
|
|
128
|
+
export function isWithinOfferBounds(amount, bounds) {
|
|
129
|
+
return amount >= bounds.min && amount <= bounds.max;
|
|
130
|
+
}
|
|
@@ -13,7 +13,7 @@ export declare const createOrderSchema: z.ZodObject<{
|
|
|
13
13
|
quantity: number;
|
|
14
14
|
productId: string;
|
|
15
15
|
}>, "many">;
|
|
16
|
-
shippingAddress: z.ZodObject<{
|
|
16
|
+
shippingAddress: z.ZodEffects<z.ZodObject<{
|
|
17
17
|
fullName: z.ZodString;
|
|
18
18
|
phone: z.ZodString;
|
|
19
19
|
addressLine1: z.ZodString;
|
|
@@ -40,6 +40,24 @@ export declare const createOrderSchema: z.ZodObject<{
|
|
|
40
40
|
pincode: string;
|
|
41
41
|
country?: string | undefined;
|
|
42
42
|
addressLine2?: string | undefined;
|
|
43
|
+
}>, {
|
|
44
|
+
country: string;
|
|
45
|
+
fullName: string;
|
|
46
|
+
phone: string;
|
|
47
|
+
addressLine1: string;
|
|
48
|
+
city: string;
|
|
49
|
+
state: string;
|
|
50
|
+
pincode: string;
|
|
51
|
+
addressLine2?: string | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
fullName: string;
|
|
54
|
+
phone: string;
|
|
55
|
+
addressLine1: string;
|
|
56
|
+
city: string;
|
|
57
|
+
state: string;
|
|
58
|
+
pincode: string;
|
|
59
|
+
country?: string | undefined;
|
|
60
|
+
addressLine2?: string | undefined;
|
|
43
61
|
}>;
|
|
44
62
|
paymentMethod: z.ZodEnum<["razorpay", "cod", "upi"]>;
|
|
45
63
|
couponCode: z.ZodOptional<z.ZodString>;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { DEFAULT_COUNTRY, isValidPostalCode, postalLabelFor, } from "../../../../constants/geo/countries";
|
|
2
3
|
import { ORDER_CANCEL_REASON_MAX_LENGTH, ORDER_NOTE_MAX_LENGTH, ORDER_TRACKING_NUMBER_MAX_LENGTH, } from "./config";
|
|
4
|
+
/*
|
|
5
|
+
* The order's own SNAPSHOT of where it shipped, denormalised onto the order
|
|
6
|
+
* document at creation. Its field names (`pincode`) are stored on every
|
|
7
|
+
* existing order, so renaming them to match `AddressDocument` is a data
|
|
8
|
+
* migration rather than a refactor — and a snapshot deliberately does NOT
|
|
9
|
+
* follow the address it was copied from.
|
|
10
|
+
*
|
|
11
|
+
* The postal RULE is shared, which is the half that was wrong: `/^\d{6}$/`
|
|
12
|
+
* is India-only, on an order whose country is whatever the buyer chose.
|
|
13
|
+
*/
|
|
14
|
+
// audit-address-shape-ok: an order's frozen shipping snapshot, not the address entity
|
|
3
15
|
const addressSchema = z.object({
|
|
4
16
|
fullName: z.string().min(1),
|
|
5
17
|
phone: z.string().min(10).max(15),
|
|
@@ -7,8 +19,16 @@ const addressSchema = z.object({
|
|
|
7
19
|
addressLine2: z.string().optional(),
|
|
8
20
|
city: z.string().min(1),
|
|
9
21
|
state: z.string().min(1),
|
|
10
|
-
pincode: z.string().
|
|
11
|
-
country: z.string().default(
|
|
22
|
+
pincode: z.string().trim().min(1, "A postal code is required."),
|
|
23
|
+
country: z.string().default(DEFAULT_COUNTRY),
|
|
24
|
+
}).superRefine((v, ctx) => {
|
|
25
|
+
if (!isValidPostalCode(v.country, v.pincode)) {
|
|
26
|
+
ctx.addIssue({
|
|
27
|
+
code: z.ZodIssueCode.custom,
|
|
28
|
+
path: ["pincode"],
|
|
29
|
+
message: `That is not a valid ${postalLabelFor(v.country)}.`,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
12
32
|
});
|
|
13
33
|
export const createOrderSchema = z.object({
|
|
14
34
|
items: z.array(z.object({
|
|
@@ -25,9 +25,18 @@ export interface PublicSiteSettings {
|
|
|
25
25
|
payment: {
|
|
26
26
|
otpCheckoutThreshold?: number;
|
|
27
27
|
};
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Which listing types the site offers — the client needs this to avoid
|
|
30
|
+
* rendering a browse tab for a type nothing will return.
|
|
31
|
+
*
|
|
32
|
+
* Deliberately NOT the whole `listings` block: `categoryTypes` has no client
|
|
33
|
+
* reader. This was `featureFlags.listingTypes` until that group was deleted
|
|
34
|
+
* on 2026-08-29; the projection stayed narrow for the same reason it always
|
|
35
|
+
* was — a public payload carries what a client demonstrably reads, nothing
|
|
36
|
+
* more (Root Cause #70).
|
|
37
|
+
*/
|
|
38
|
+
listings: {
|
|
39
|
+
listingTypes?: NonNullable<SiteSettingsDocument["listings"]>["listingTypes"];
|
|
31
40
|
};
|
|
32
41
|
notificationChannels?: NotificationChannelConfig;
|
|
33
42
|
announcementBar?: SiteSettingsDocument["announcementBar"];
|
|
@@ -27,9 +27,15 @@ export interface ListingTypeCapability {
|
|
|
27
27
|
/**
|
|
28
28
|
* Buyers can negotiate the price via the Make-an-Offer flow.
|
|
29
29
|
*
|
|
30
|
-
* A per-listing `allowOffers` flag is
|
|
30
|
+
* A per-listing `allowOffers` flag is normally required on top of this — the
|
|
31
31
|
* capability says the TYPE can support offers at all, the flag says this
|
|
32
|
-
* particular seller opted in. `
|
|
32
|
+
* particular seller opted in. `offersEnabledFor()` checks both.
|
|
33
|
+
*
|
|
34
|
+
* 🛑 One exception, and it is structural: on a type with `canAddToCart: false`
|
|
35
|
+
* the offer is the only way to buy, so `allowOffers` cannot decide whether an
|
|
36
|
+
* offer may be sent — it decides whether the buyer may propose a price BELOW
|
|
37
|
+
* the asking one. Otherwise unchecking one flag would render a price with no
|
|
38
|
+
* path to it.
|
|
33
39
|
*
|
|
34
40
|
* False wherever a negotiated price would collide with the type's own pricing
|
|
35
41
|
* mechanism: an auction already has bidding, a prize-draw sells fixed-price
|
|
@@ -49,7 +49,12 @@ export const LISTING_TYPE_CAPABILITIES = {
|
|
|
49
49
|
},
|
|
50
50
|
// SB-UNI-F 2026-05-13 — Phase 2 union extension.
|
|
51
51
|
classified: {
|
|
52
|
-
|
|
52
|
+
// No cart (OLX / Facebook Marketplace pattern). Paired with
|
|
53
|
+
// `canMakeOffer: true` this is the ONLY combination in the table where the
|
|
54
|
+
// offer is the purchase path rather than an alternative to one — which is
|
|
55
|
+
// what `offerIsOnlyPurchasePath()` detects, and why `allowOffers` cannot
|
|
56
|
+
// gate whether an offer may be sent on this type at all.
|
|
57
|
+
canAddToCart: false,
|
|
53
58
|
canBid: false,
|
|
54
59
|
supportsShipping: false, // local meetup; shipping is a "negotiable" flag, not a flow
|
|
55
60
|
requiresVendorVerified: false,
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
// SB-UNI X2 — placeholder for classified-listing CTA list.
|
|
2
|
-
//
|
|
2
|
+
//
|
|
3
|
+
// Still empty, and now for a settled reason rather than a pending one: the
|
|
4
|
+
// classified CTA is `ACTIONS.PRODUCT["make-offer"]`, rendered by
|
|
5
|
+
// `MakeOfferButton` through the detail view's `renderOfferAction` slot. The old
|
|
6
|
+
// note here promised a "Contact Seller" → conversations flow; that feature was
|
|
7
|
+
// deleted 2026-08-31 and the offer is now the type's only purchase path.
|
|
3
8
|
export const ctas = [];
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Listing-type / category-type feature flag helpers — SB-UNI-X4 2026-05-13.
|
|
3
3
|
*
|
|
4
|
-
* Reads from `siteSettings.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Reads from `siteSettings.listings.{listingTypes,categoryTypes}` and collapses
|
|
5
|
+
* missing fields to a "type is enabled" default. The capability registry
|
|
6
|
+
* decides what each type CAN do; these decide whether the site exposes the type
|
|
7
|
+
* at all.
|
|
8
|
+
*
|
|
9
|
+
* Moved out of `featureFlags` on 2026-08-29 when that group was deleted — 11 of
|
|
10
|
+
* its 14 keys had no readers, and these two were never flags: "we don't sell
|
|
11
|
+
* live animals" is a standing catalogue decision, not a switch around
|
|
12
|
+
* unfinished work.
|
|
8
13
|
*
|
|
9
14
|
* Consumer pattern:
|
|
10
15
|
* const settings = await siteSettingsRepository.findById("global");
|
|
@@ -16,7 +21,7 @@
|
|
|
16
21
|
import type { ListingType } from "../../../features/products/types/index";
|
|
17
22
|
import type { CategoryType } from "../../../features/categories/types/index";
|
|
18
23
|
interface FeatureFlagSnapshot {
|
|
19
|
-
|
|
24
|
+
listings?: {
|
|
20
25
|
listingTypes?: Partial<Record<ListingType, boolean>>;
|
|
21
26
|
categoryTypes?: Partial<Record<CategoryType, boolean>>;
|
|
22
27
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Listing-type / category-type feature flag helpers — SB-UNI-X4 2026-05-13.
|
|
3
3
|
*
|
|
4
|
-
* Reads from `siteSettings.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Reads from `siteSettings.listings.{listingTypes,categoryTypes}` and collapses
|
|
5
|
+
* missing fields to a "type is enabled" default. The capability registry
|
|
6
|
+
* decides what each type CAN do; these decide whether the site exposes the type
|
|
7
|
+
* at all.
|
|
8
|
+
*
|
|
9
|
+
* Moved out of `featureFlags` on 2026-08-29 when that group was deleted — 11 of
|
|
10
|
+
* its 14 keys had no readers, and these two were never flags: "we don't sell
|
|
11
|
+
* live animals" is a standing catalogue decision, not a switch around
|
|
12
|
+
* unfinished work.
|
|
8
13
|
*
|
|
9
14
|
* Consumer pattern:
|
|
10
15
|
* const settings = await siteSettingsRepository.findById("global");
|
|
@@ -19,11 +24,11 @@
|
|
|
19
24
|
* EXPLICITLY set to `false` to disable a type.
|
|
20
25
|
*/
|
|
21
26
|
export function isListingTypeEnabled(type, settings) {
|
|
22
|
-
const flag = settings?.
|
|
27
|
+
const flag = settings?.listings?.listingTypes?.[type];
|
|
23
28
|
return flag !== false;
|
|
24
29
|
}
|
|
25
30
|
export function isCategoryTypeEnabled(type, settings) {
|
|
26
|
-
const flag = settings?.
|
|
31
|
+
const flag = settings?.listings?.categoryTypes?.[type];
|
|
27
32
|
return flag !== false;
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
@@ -4,7 +4,13 @@ import * as React from "react";
|
|
|
4
4
|
import { useQuery, } from "@tanstack/react-query";
|
|
5
5
|
import { useToast } from "../../ui/components/Toast";
|
|
6
6
|
import { ApiError } from "./ApiError";
|
|
7
|
-
import {
|
|
7
|
+
import { toUserMessage } from "../../errors/error-display-map";
|
|
8
|
+
/**
|
|
9
|
+
* Appended to the "stale data" warning. Authored copy, never derived from the
|
|
10
|
+
* failure — a background refetch that dies on a `MODULE_NOT_FOUND` must not
|
|
11
|
+
* print a require stack into a toast (audit-raw-error-text).
|
|
12
|
+
*/
|
|
13
|
+
const REFRESH_HINT = "Please check your connection and try again.";
|
|
8
14
|
export function useApiQuery(options) {
|
|
9
15
|
const { showToast } = useToast();
|
|
10
16
|
const { silentBackgroundFailures, translate, reportClientError, ...rest } = options;
|
|
@@ -22,9 +28,10 @@ export function useApiQuery(options) {
|
|
|
22
28
|
return;
|
|
23
29
|
const err = result.error;
|
|
24
30
|
if (err instanceof ApiError) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
const message = toUserMessage(err.code, translate, {
|
|
32
|
+
fallback: REFRESH_HINT,
|
|
33
|
+
});
|
|
34
|
+
showToast(`Couldn't refresh latest data. ${message}`, "warning");
|
|
28
35
|
if (reportClientError) {
|
|
29
36
|
try {
|
|
30
37
|
reportClientError({
|
|
@@ -39,8 +46,12 @@ export function useApiQuery(options) {
|
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
48
|
else {
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
// No stable code on a non-ApiError rejection, so there is nothing to
|
|
50
|
+
// resolve — go straight to the authored hint rather than the raw text.
|
|
51
|
+
const message = toUserMessage(undefined, translate, {
|
|
52
|
+
fallback: REFRESH_HINT,
|
|
53
|
+
});
|
|
54
|
+
showToast(`Couldn't refresh latest data. ${message}`, "warning");
|
|
44
55
|
}
|
|
45
56
|
}, [
|
|
46
57
|
result.isError,
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { HTTP_ERROR_CODES, mapToHttpError } from "./errors/error-mapping";
|
|
2
2
|
export type { HttpErrorCode, MappedError } from "./errors/error-mapping";
|
|
3
3
|
export { ERROR_DISPLAY_MAP, getErrorDisplay } from "./errors/error-display-map";
|
|
4
|
+
export { toUserMessage, GENERIC_USER_MESSAGE } from "./errors/error-display-map";
|
|
4
5
|
export type { ErrorDisplayEntry } from "./errors/error-display-map";
|
|
5
6
|
export { RazorpayUnreachableError } from "./errors/razorpay-unreachable";
|
|
6
7
|
export type { ActionResult } from "./utils/action-result";
|
|
@@ -17,8 +18,6 @@ export { useApiMutation } from "./client/api/useApiMutation";
|
|
|
17
18
|
export type { UseApiMutationOptions } from "./client/api/useApiMutation";
|
|
18
19
|
export { useApiQuery } from "./client/api/useApiQuery";
|
|
19
20
|
export type { UseApiQueryOptions } from "./client/api/useApiQuery";
|
|
20
|
-
export { useFeatureFlags } from "./client/api/useFeatureFlags";
|
|
21
|
-
export type { FeatureFlagState } from "./client/api/useFeatureFlags";
|
|
22
21
|
export { ServerErrorsListView, ServerErrorDetailView, MaintenanceDashboardView, AnalysisRunnerView, CloudLogsListView, } from "./_internal/client/features/maintenance";
|
|
23
22
|
export type { ServerErrorsListViewProps, ServerErrorDetailViewProps, MaintenanceDashboardViewProps, CloudLogsListViewProps, } from "./_internal/client/features/maintenance";
|
|
24
23
|
export { registerClientAuthProvider, getClientAuthProvider, type IClientAuthProvider, } from "./contracts/client-auth";
|
|
@@ -97,7 +96,9 @@ export { LotteryAdminEditView } from "./_internal/client/features/lottery/Lotter
|
|
|
97
96
|
export { lotteryConfigWriteSchema, lotterySlotWriteSchema } from "./features/lottery/schemas/config-write";
|
|
98
97
|
export { SectionForm, useSectionFormNav } from "./features/shell/SectionForm";
|
|
99
98
|
export type { SectionDef, SectionFormProps } from "./features/shell/SectionForm";
|
|
100
|
-
export { buildSectionsFromSchema } from "./features/shell/build-sections";
|
|
99
|
+
export { buildSectionsFromSchema, visibleValues } from "./features/shell/build-sections";
|
|
100
|
+
export { FORM_SECTION_GROUP, SECTION_GROUP_DEFAULTS, groupRank, resolveSectionGroup } from "./features/shell/form-sections";
|
|
101
|
+
export type { FormSectionGroup } from "./features/shell/form-sections";
|
|
101
102
|
export { reportCreateSchema } from "./features/store-extensions/schemas/report-create-form";
|
|
102
103
|
export { itemRequestCreateSchema } from "./features/store-extensions/schemas/item-request-create-form";
|
|
103
104
|
export { supportTicketCreateSchema } from "./features/support/schemas/ticket-create-form";
|
|
@@ -197,6 +198,8 @@ export { TextLink } from "./ui/components/TextLink";
|
|
|
197
198
|
export type { TextLinkProps } from "./ui/components/TextLink";
|
|
198
199
|
export { Anchor } from "./ui/components/Anchor";
|
|
199
200
|
export { IconButton } from "./ui/index";
|
|
201
|
+
export { ActionRow } from "./ui/components/ActionRow";
|
|
202
|
+
export type { ActionRowProps, ActionRowAlign } from "./ui/components/ActionRow";
|
|
200
203
|
export { Textarea } from "./ui/components/Textarea";
|
|
201
204
|
export { GlobalError } from "./next/components/GlobalError";
|
|
202
205
|
export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, useBottomActions, DashboardNavProvider, LayoutClient } from "./features/layout/index";
|
|
@@ -231,8 +234,8 @@ export { NotificationPreferencesPanel } from "./features/account/components/Noti
|
|
|
231
234
|
export type { NotificationPreferencesPanelProps } from "./features/account/components/NotificationPreferencesPanel";
|
|
232
235
|
export { LinkedAccountsSection } from "./features/account/components/LinkedAccountsSection";
|
|
233
236
|
export type { LinkedAccountsSectionProps } from "./features/account/components/LinkedAccountsSection";
|
|
234
|
-
export { useCollapsedSections } from "./features/account/hooks/useCollapsedSections";
|
|
235
|
-
export type { UseCollapsedSectionsOptions, UseCollapsedSectionsResult, } from "./features/account/hooks/useCollapsedSections";
|
|
237
|
+
export { useCollapsedSections, useSectionState, } from "./features/account/hooks/useCollapsedSections";
|
|
238
|
+
export type { UseCollapsedSectionsOptions, UseCollapsedSectionsResult, UseSectionStateOptions, UseSectionStateResult, SectionExpandMode, } from "./features/account/hooks/useCollapsedSections";
|
|
236
239
|
export { PageViewTracker } from "./features/analytics/components/PageViewTracker";
|
|
237
240
|
export type { PageViewTrackerProps } from "./features/analytics/components/PageViewTracker";
|
|
238
241
|
export { PAGE_VIEW_ENTITY_TYPES } from "./features/analytics/types";
|
|
@@ -305,16 +308,6 @@ export { STANDARD_SORT_OPTIONS, STANDARD_PUBLIC_SORT_OPTIONS, AUCTION_SORT_OPTIO
|
|
|
305
308
|
export { sortOptionsFor, commonSortOptionsFor, hideDefaultsFor, } from "./_internal/shared/listing-types/_registry";
|
|
306
309
|
export type { ListingHideDefault } from "./_internal/shared/listing-types/_registry";
|
|
307
310
|
export type { SortOption } from "./features/products/constants/sieve";
|
|
308
|
-
export { MessagesView } from "./features/account/components/MessagesView";
|
|
309
|
-
export type { MessagesViewProps, MessagesViewLabels } from "./features/account/components/MessagesView";
|
|
310
|
-
export { ChatList } from "./features/account/components/ChatList";
|
|
311
|
-
export type { ChatListProps, ChatListLabels } from "./features/account/components/ChatList";
|
|
312
|
-
export { ChatWindow } from "./features/account/components/ChatWindow";
|
|
313
|
-
export type { ChatWindowProps, ChatWindowLabels } from "./features/account/components/ChatWindow";
|
|
314
|
-
export { useConversations, useConversation } from "./features/messages/index";
|
|
315
|
-
export { CONVERSATIONS_COLLECTION, CONVERSATIONS_INDEXED_FIELDS, } from "./features/messages/index";
|
|
316
|
-
export type { ConversationDocument, ConversationMessage, UseConversationsReturn, UseConversationReturn, } from "./features/messages/index";
|
|
317
|
-
export { CONVERSATIONS_PING_PATH, CONVERSATIONS_PING_USER_PATH, } from "./features/messages/hooks/useConversation";
|
|
318
311
|
export { ACTION_ID, ACTION_META, DETAIL_ACTIONS, MOBILE_PRIMARY_ACTIONS, LISTING_BULK_ACTIONS } from "./features/products/index";
|
|
319
312
|
export type { ActionId, ActionMeta, ActionVariant } from "./features/products/index";
|
|
320
313
|
export { ROW_ACTION_ID, ROW_ACTION_META, ADMIN_ROW_ACTIONS, SELLER_ROW_ACTIONS, USER_ROW_ACTIONS, ADMIN_BULK_ACTIONS, SELLER_BULK_ACTIONS } from "./features/products/index";
|
|
@@ -344,8 +337,10 @@ export { UserOffersPanel } from "./features/account/components/UserOffersPanel";
|
|
|
344
337
|
export type { UserOffersPanelProps } from "./features/account/components/UserOffersPanel";
|
|
345
338
|
export { SellerDashboardView as StoreDashboardView, SellerDashboardView, useSellerDashboard as useStoreDashboard, useSellerDashboard } from "./features/seller/index";
|
|
346
339
|
export type { SellerDashboardViewProps as StoreDashboardViewProps, SellerDashboardViewProps } from "./features/seller/index";
|
|
347
|
-
export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView,
|
|
348
|
-
export type { SellerPayoutSettingsViewProps, SellerShippingViewProps, SellerReviewsViewProps, SellerPayoutRequestViewProps, SellerAnalyticsViewProps, SellerPayoutsViewProps, SellerCouponEditorViewProps, CouponEditorDraft, SellerBidsViewProps, SellerAddressesViewProps,
|
|
340
|
+
export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView, PrintCenterView, SellerOffersView, SellerGroupedListingsView, StoreGroupedListingsView, SellerAnalyticsAlertsView, StoreAnalyticsAlertsView, BarcodeField, FulfillmentView, SellerListingTypeView, SELLER_LISTING_TYPE_SPECS } from "./features/seller/components/index";
|
|
341
|
+
export type { SellerPayoutSettingsViewProps, SellerShippingViewProps, SellerReviewsViewProps, SellerPayoutRequestViewProps, SellerAnalyticsViewProps, SellerPayoutsViewProps, SellerCouponEditorViewProps, CouponEditorDraft, SellerBidsViewProps, SellerAddressesViewProps, SellerOffersViewProps, SellerGroupedListingsViewProps, SellerAnalyticsAlertsViewProps, BarcodeFieldProps, FulfillmentViewProps, SellerListingTypeViewProps, SellerListingTypeSpec, SellerListingTypeKey, SellerListingRow } from "./features/seller/components/index";
|
|
342
|
+
export { couponDraftToPayload } from "./features/seller/schemas/coupon-form";
|
|
343
|
+
export type { SellerCouponPayload } from "./features/seller/schemas/coupon-form";
|
|
349
344
|
export type { SellerAnalyticsSummary, SellerAnalyticsTopProduct } from "./features/seller/types/index";
|
|
350
345
|
export { UserAccountHubView, UserOrdersView, UserBidsView, OrderDetailView, UserNotificationsView, UserReturnsView, UserSupportView, useNotifications } from "./features/account/index";
|
|
351
346
|
export type { UserAccountHubViewProps, UserAccountHubViewLabels, UserOrdersViewProps, OrderDetailViewProps, OrderDetailViewLabels, UserNotificationsViewProps, UserNotificationsViewLabels, UserReturnsViewProps, UserSupportViewProps } from "./features/account/index";
|
|
@@ -388,7 +383,7 @@ export { actionTracker, setActionTrackerSink, resetActionTrackerSink, type Actio
|
|
|
388
383
|
export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_internal/shared/listing-types/cart-shipping";
|
|
389
384
|
export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, type ActionDef, type ActionKind, type ActionResource, type ActionTree, type ActionConfirmation, } from "./_internal/shared/actions/action-registry";
|
|
390
385
|
export { buildBulkAction } from "./_internal/shared/actions/bulk-helpers";
|
|
391
|
-
export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, } from "./features/auth/role-predicates";
|
|
386
|
+
export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, isTesterUser, canTestAdminSurfaces, isStrictSellerUser, isAccountDisabled, } from "./features/auth/role-predicates";
|
|
392
387
|
export { DashboardLayoutClient, RoleGuard } from "./_internal/client/features/layout/index";
|
|
393
388
|
export type { DashboardLayoutClientProps, RoleGuardProps, } from "./_internal/client/features/layout/index";
|
|
394
389
|
export type { LayoutBreakpoint, DashboardVariant, LayoutRole, SidebarNavItem, SidebarNavGroup, MainNavItem as LayoutMainNavItem, BrandingConfig, FooterConfig, SectionResponsive, SectionTheming, LayoutConfig, DashboardLayoutConfig, } from "./_internal/shared/features/layout/index";
|
|
@@ -475,15 +470,38 @@ export { BrandInlineSelect } from "./features/seller/components/BrandInlineSelec
|
|
|
475
470
|
export { API_ENDPOINTS } from "./constants/index";
|
|
476
471
|
export { SELLER_LISTING_TABS, type SellerListingTabId, } from "./features/products/constants/listing-tabs";
|
|
477
472
|
export { ALL_TAB, EMPTY_TAB, ADMIN_PRODUCT_STATUS_TABS, ADMIN_PRODUCT_LISTING_TYPE_TABS, ADMIN_BLOG_STATUS_TABS, ADMIN_USER_STATUS_TABS, ADMIN_USER_ROLE_TABS, ADMIN_STORE_STATUS_TABS, ADMIN_PAYOUT_STATUS_TABS, ADMIN_ORDER_STATUS_TABS, ADMIN_REVIEW_STATUS_TABS, ADMIN_REVIEW_RATING_TABS, ADMIN_BID_STATUS_TABS, ADMIN_CONTACT_STATUS_TABS, ADMIN_NEWSLETTER_STATUS_TABS, ADMIN_EVENT_ENTRY_STATUS_TABS, ADMIN_EVENT_STATUS_TABS, ADMIN_CART_OWNERSHIP_TABS, ADMIN_COUPON_TYPE_TABS, SELLER_PRODUCT_STATUS_TABS, SELLER_AUCTION_STATUS_TABS, SELLER_ORDER_STATUS_TABS, SELLER_OFFER_STATUS_TABS, SELLER_BID_STATUS_TABS, } from "./features/admin/constants/filter-tabs";
|
|
478
|
-
export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, EVENT_FIELDS, EVENT_ENTRY_FIELDS, PAYOUT_FIELDS, STORE_FIELDS, CATEGORY_FIELDS, BLOG_FIELDS, USER_FIELDS, ADDRESS_FIELDS, BRAND_FIELDS, CART_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, NOTIFICATION_FIELDS, SESSION_FIELDS, COUPON_USAGE_FIELDS,
|
|
473
|
+
export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, EVENT_FIELDS, EVENT_ENTRY_FIELDS, PAYOUT_FIELDS, STORE_FIELDS, CATEGORY_FIELDS, BLOG_FIELDS, USER_FIELDS, ADDRESS_FIELDS, BRAND_FIELDS, CART_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, NOTIFICATION_FIELDS, SESSION_FIELDS, COUPON_USAGE_FIELDS, SCAMMER_FIELDS, SUPPORT_TICKET_FIELDS, CAROUSEL_FIELDS, COUPON_FIELDS, FAQ_FIELDS, HOMEPAGE_SECTION_FIELDS, SITE_SETTINGS_FIELDS, COMMON_FIELDS, OAUTH_STATE_VALUES, SCHEMA_DEFAULTS, } from "./constants/field-names";
|
|
479
474
|
export { CART_LANE, CART_LANE_PRIORITY, CART_LANE_LABELS, laneOf, activeLane, laneItems, laneCounts, isLaneCheckoutable, laneBlockReason, isLockedLane, canAddNewItems, type CartLane, type LaneAssignable, } from "./_internal/shared/checkout/lanes";
|
|
480
475
|
export { newsletterSubscribeSchema, quickCreateTaxonomySchema, payoutMarkPaidSchema, } from "./features/admin/schemas/small-forms";
|
|
481
476
|
export { raffleEntrySchema } from "./features/contact/schemas/inquiry-forms";
|
|
482
477
|
export { orderCancelSchema, paymentProofSchema, } from "./features/orders/schemas/buyer-forms";
|
|
483
478
|
export { scamReportFormSchema } from "./features/scams/schemas/report-form";
|
|
484
479
|
export { sublistingCategoryFormSchema } from "./features/store-extensions/schemas/sublisting-category-form";
|
|
485
|
-
export {
|
|
480
|
+
export { adminStoreUpdateSchema, announcementBarSchema, } from "./features/admin/schemas/admin-editor-forms";
|
|
486
481
|
export { adminOrderUpdateSchema, employeeInviteSchema, hardBanReasonSchema, featureFlagsUpdateSchema, adminAdFormSchema, } from "./features/admin/schemas/admin-ops-forms";
|
|
487
482
|
export { changeEmailSchema } from "./features/account/schemas/index";
|
|
488
483
|
export { adminUserUpdateSchema, whatsappSettingsSchema, lotteryPullSchema, } from "./features/admin/schemas/admin-user-form";
|
|
489
484
|
export { siteSettingsFormSchema } from "./features/admin/schemas/site-settings-form";
|
|
485
|
+
export { refineAddressPostal, addressFormSchema, addressUpdateSchema, adminAddressCreateSchema, adminAddressUpdateSchema, addressUnbanRequestSchema, } from "./features/addresses/schemas/address-form";
|
|
486
|
+
export type { AddressFormValues, AddressUpdateValues, AdminAddressCreateValues, } from "./features/addresses/schemas/address-form";
|
|
487
|
+
export { COUNTRIES, COUNTRY_CODES, DEFAULT_COUNTRY, countryFor, postalPatternFor, postalLabelFor, isValidPostalCode, } from "./constants/geo/countries";
|
|
488
|
+
export type { CountryDef } from "./constants/geo/countries";
|
|
489
|
+
export { SUBDIVISIONS, subdivisionsFor } from "./constants/geo/subdivisions";
|
|
490
|
+
export { navItemId } from "./_internal/shared/features/layout/types";
|
|
491
|
+
export type { NavPortal } from "./_internal/shared/features/layout/types";
|
|
492
|
+
export { mergeActionIndex, projectActionIndexForViewer, } from "./features/search/action-index/types";
|
|
493
|
+
export type { ActionIndexEntry, ActionIndexKind, ActionIndexControl, ActionIndexOverride, } from "./features/search/action-index/types";
|
|
494
|
+
export { deriveNavEntries, deriveQuickActionEntries, buildActionIndexBase, } from "./features/search/action-index/derive";
|
|
495
|
+
export type { PortalNavGroups, QuickActionSource } from "./features/search/action-index/derive";
|
|
496
|
+
export { matchesNavQuery } from "./_internal/shared/features/layout/matchesNavQuery";
|
|
497
|
+
export type { NavSearchable } from "./_internal/shared/features/layout/matchesNavQuery";
|
|
498
|
+
export { SITE_SETTINGS_ENTRIES, deriveSettingsEntries, } from "./features/search/action-index/settings-entries";
|
|
499
|
+
export type { SettingsIndexSource } from "./features/search/action-index/settings-entries";
|
|
500
|
+
export { SITE_SETTINGS_TABS, SITE_SETTINGS_TAB_IDS, isSiteSettingsTabId, } from "./features/admin/constants/site-settings-tabs";
|
|
501
|
+
export type { SiteSettingsTab, SiteSettingsTabId } from "./features/admin/constants/site-settings-tabs";
|
|
502
|
+
export { validateActionIndexEntry, normaliseRoute, } from "./features/search/action-index/validate-entry";
|
|
503
|
+
export type { ActionIndexValidationContext, ActionIndexValidationIssue, } from "./features/search/action-index/validate-entry";
|
|
504
|
+
export { AdminActionIndexView } from "./features/admin/components/AdminActionIndexView";
|
|
505
|
+
export type { AdminActionIndexViewProps } from "./features/admin/components/AdminActionIndexView";
|
|
506
|
+
export { SellerSupportView } from "./features/seller/components/SellerSupportView";
|
|
507
|
+
export type { SellerSupportViewProps } from "./features/seller/components/SellerSupportView";
|