@mohasinac/appkit 2.7.58 → 2.8.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/filters/filter-load-options.d.ts +4 -5
- package/dist/_internal/server/features/auctions/og.js +8 -32
- package/dist/_internal/server/features/blog/og.js +10 -49
- package/dist/_internal/server/features/checkout/actions.js +6 -0
- package/dist/_internal/server/features/classified/og.js +9 -51
- package/dist/_internal/server/features/digital-code/actions.d.ts +11 -0
- package/dist/_internal/server/features/digital-code/actions.js +30 -0
- package/dist/_internal/server/features/digital-code/index.d.ts +1 -0
- package/dist/_internal/server/features/digital-code/index.js +1 -0
- package/dist/_internal/server/features/digital-code/og.js +9 -51
- package/dist/_internal/server/features/events/og.js +10 -49
- package/dist/_internal/server/features/item-requests/data.d.ts +17 -0
- package/dist/_internal/server/features/item-requests/data.js +20 -0
- package/dist/_internal/server/features/item-requests/index.d.ts +2 -0
- package/dist/_internal/server/features/item-requests/index.js +2 -0
- package/dist/_internal/server/features/item-requests/og.d.ts +40 -0
- package/dist/_internal/server/features/item-requests/og.js +136 -0
- package/dist/_internal/server/features/live/actions.d.ts +5 -0
- package/dist/_internal/server/features/live/actions.js +24 -0
- package/dist/_internal/server/features/live/index.d.ts +1 -0
- package/dist/_internal/server/features/live/index.js +1 -0
- package/dist/_internal/server/features/live/og.js +9 -51
- package/dist/_internal/server/features/media/contextGuards.js +19 -8
- package/dist/_internal/server/features/pre-orders/og.js +8 -32
- package/dist/_internal/server/features/prize-draws/data.d.ts +17 -0
- package/dist/_internal/server/features/prize-draws/data.js +20 -0
- package/dist/_internal/server/features/prize-draws/index.d.ts +2 -0
- package/dist/_internal/server/features/prize-draws/index.js +2 -0
- package/dist/_internal/server/features/prize-draws/og.d.ts +30 -0
- package/dist/_internal/server/features/prize-draws/og.js +50 -0
- package/dist/_internal/server/features/products/og.js +8 -33
- package/dist/_internal/server/features/scams/og.js +1 -1
- package/dist/_internal/server/features/seo/og-layout.d.ts +42 -0
- package/dist/_internal/server/features/seo/og-layout.js +69 -0
- package/dist/_internal/server/features/stores/og.js +8 -41
- package/dist/_internal/server/features/sublisting-categories/og.js +11 -42
- package/dist/_internal/shared/actions/bulk-helpers.d.ts +3 -0
- package/dist/_internal/shared/actions/bulk-helpers.js +19 -0
- package/dist/_internal/shared/config/schema.d.ts +4 -4
- package/dist/client.d.ts +13 -6
- package/dist/client.js +9 -3
- package/dist/configs/next.js +11 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/notification-types.d.ts +20 -0
- package/dist/constants/notification-types.js +37 -0
- package/dist/constants/pagination-presets.d.ts +39 -0
- package/dist/constants/pagination-presets.js +38 -0
- package/dist/errors/messages.d.ts +0 -4
- package/dist/errors/messages.js +0 -4
- package/dist/features/account/components/AddressesIndexListing.js +3 -4
- package/dist/features/account/components/UserOffersPanel.js +1 -1
- package/dist/features/account/components/UserSidebar.js +14 -10
- package/dist/features/account/components/UserSupportView.d.ts +1 -2
- package/dist/features/account/components/UserSupportView.js +9 -1
- package/dist/features/admin/actions/admin-actions.js +16 -1
- package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +2 -3
- package/dist/features/admin/components/AdminAllEventEntriesView.js +50 -89
- package/dist/features/admin/components/AdminBidsView.d.ts +2 -3
- package/dist/features/admin/components/AdminBidsView.js +64 -104
- package/dist/features/admin/components/AdminBlogView.d.ts +3 -7
- package/dist/features/admin/components/AdminBlogView.js +53 -88
- package/dist/features/admin/components/AdminBrandEditorView.js +14 -17
- package/dist/features/admin/components/AdminBrandsView.d.ts +2 -3
- package/dist/features/admin/components/AdminBrandsView.js +85 -89
- package/dist/features/admin/components/AdminBundlesView.js +68 -130
- package/dist/features/admin/components/AdminCarouselView.d.ts +2 -2
- package/dist/features/admin/components/AdminCarouselView.js +22 -70
- package/dist/features/admin/components/AdminCartsView.d.ts +2 -3
- package/dist/features/admin/components/AdminCartsView.js +39 -89
- package/dist/features/admin/components/AdminCategoriesView.d.ts +3 -3
- package/dist/features/admin/components/AdminCategoriesView.js +97 -96
- package/dist/features/admin/components/AdminCategoryEditorView.js +2 -6
- package/dist/features/admin/components/AdminClassifiedView.d.ts +3 -0
- package/dist/features/admin/components/AdminClassifiedView.js +44 -0
- package/dist/features/admin/components/AdminContactView.d.ts +2 -2
- package/dist/features/admin/components/AdminContactView.js +105 -130
- package/dist/features/admin/components/AdminCouponEditorView.js +14 -17
- package/dist/features/admin/components/AdminCouponsView.d.ts +3 -6
- package/dist/features/admin/components/AdminCouponsView.js +69 -97
- package/dist/features/admin/components/AdminDigitalCodesView.d.ts +3 -0
- package/dist/features/admin/components/AdminDigitalCodesView.js +51 -0
- package/dist/features/admin/components/AdminFaqEditorView.js +14 -17
- package/dist/features/admin/components/AdminFaqsView.d.ts +4 -4
- package/dist/features/admin/components/AdminFaqsView.js +79 -86
- package/dist/features/admin/components/AdminFeatureEditorView.js +7 -9
- package/dist/features/admin/components/AdminFeaturesView.d.ts +2 -3
- package/dist/features/admin/components/AdminFeaturesView.js +57 -70
- package/dist/features/admin/components/AdminGroupedListingsView.d.ts +3 -0
- package/dist/features/admin/components/AdminGroupedListingsView.js +43 -0
- package/dist/features/admin/components/AdminHistoryView.d.ts +2 -3
- package/dist/features/admin/components/AdminHistoryView.js +35 -52
- package/dist/features/admin/components/AdminListingScaffold.d.ts +2 -2
- package/dist/features/admin/components/AdminListingScaffold.js +3 -3
- package/dist/features/admin/components/AdminLiveView.d.ts +3 -0
- package/dist/features/admin/components/AdminLiveView.js +50 -0
- package/dist/features/admin/components/AdminNewsletterView.d.ts +2 -2
- package/dist/features/admin/components/AdminNewsletterView.js +68 -108
- package/dist/features/admin/components/AdminNotificationsView.d.ts +2 -3
- package/dist/features/admin/components/AdminNotificationsView.js +67 -99
- package/dist/features/admin/components/AdminOrderEditorView.js +10 -10
- package/dist/features/admin/components/AdminOrdersView.d.ts +2 -3
- package/dist/features/admin/components/AdminOrdersView.js +93 -113
- package/dist/features/admin/components/AdminPayoutsView.d.ts +2 -3
- package/dist/features/admin/components/AdminPayoutsView.js +51 -97
- package/dist/features/admin/components/AdminPrizeDrawsView.d.ts +2 -3
- package/dist/features/admin/components/AdminPrizeDrawsView.js +41 -83
- package/dist/features/admin/components/AdminProductEditorView.js +3 -7
- package/dist/features/admin/components/AdminProductsView.d.ts +4 -4
- package/dist/features/admin/components/AdminProductsView.js +166 -167
- package/dist/features/admin/components/AdminReturnRequestsView.d.ts +1 -1
- package/dist/features/admin/components/AdminReturnRequestsView.js +64 -66
- package/dist/features/admin/components/AdminReviewsView.d.ts +3 -7
- package/dist/features/admin/components/AdminReviewsView.js +94 -116
- package/dist/features/admin/components/AdminScammersView.d.ts +2 -3
- package/dist/features/admin/components/AdminScammersView.js +53 -103
- package/dist/features/admin/components/AdminSectionsView.js +1 -1
- package/dist/features/admin/components/AdminSessionsView.d.ts +2 -3
- package/dist/features/admin/components/AdminSessionsView.js +62 -95
- package/dist/features/admin/components/AdminStoreAddressesView.d.ts +1 -1
- package/dist/features/admin/components/AdminStoreAddressesView.js +39 -53
- package/dist/features/admin/components/AdminStoreEditorView.js +21 -8
- package/dist/features/admin/components/AdminStoresView.d.ts +2 -3
- package/dist/features/admin/components/AdminStoresView.js +67 -105
- package/dist/features/admin/components/AdminSublistingCategoriesView.d.ts +1 -1
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +29 -49
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +17 -20
- package/dist/features/admin/components/AdminSupportTicketDetailView.d.ts +10 -1
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +191 -5
- package/dist/features/admin/components/AdminSupportTicketsView.d.ts +2 -3
- package/dist/features/admin/components/AdminSupportTicketsView.js +65 -102
- package/dist/features/admin/components/AdminTeamView.d.ts +2 -2
- package/dist/features/admin/components/AdminTeamView.js +42 -85
- package/dist/features/admin/components/AdminUserEditorView.d.ts +11 -1
- package/dist/features/admin/components/AdminUserEditorView.js +80 -6
- package/dist/features/admin/components/AdminUsersView.d.ts +2 -3
- package/dist/features/admin/components/AdminUsersView.js +108 -106
- package/dist/features/admin/components/AdminViewCards.d.ts +1 -1
- package/dist/features/admin/components/AdminWishlistsView.d.ts +2 -3
- package/dist/features/admin/components/AdminWishlistsView.js +36 -62
- package/dist/features/admin/components/DataListingView.d.ts +122 -0
- package/dist/features/admin/components/DataListingView.js +66 -0
- package/dist/features/admin/components/index.d.ts +10 -4
- package/dist/features/admin/components/index.js +6 -2
- package/dist/features/admin/constants/filter-tabs.d.ts +23 -17
- package/dist/features/admin/constants/filter-tabs.js +21 -17
- package/dist/features/admin/hooks/useAdminListing.d.ts +59 -0
- package/dist/features/admin/hooks/useAdminListing.js +71 -0
- package/dist/features/admin/schemas/firestore.js +6 -7
- package/dist/features/auctions/server.d.ts +0 -1
- package/dist/features/auctions/server.js +0 -1
- package/dist/features/auth/actions/realtime-token-actions.js +1 -1
- package/dist/features/auth/repository/user.repository.js +1 -1
- package/dist/features/auth/schemas/firestore.d.ts +1 -0
- package/dist/features/blog/components/BlogIndexListing.js +3 -6
- package/dist/features/cart/repository/cart.repository.d.ts +4 -1
- package/dist/features/cart/repository/cart.repository.js +12 -0
- package/dist/features/categories/components/CategoriesIndexListing.js +3 -6
- package/dist/features/checkout/hooks/useCheckoutApi.d.ts +0 -2
- package/dist/features/checkout/index.d.ts +1 -1
- package/dist/features/events/components/AdminEventsView.d.ts +3 -3
- package/dist/features/events/components/AdminEventsView.js +50 -86
- package/dist/features/events/components/EventOfferCard.d.ts +19 -0
- package/dist/features/events/components/EventOfferCard.js +29 -0
- package/dist/features/events/components/EventRaffleEntryForm.d.ts +25 -0
- package/dist/features/events/components/EventRaffleEntryForm.js +37 -0
- package/dist/features/events/components/EventRafflesSection.d.ts +1 -4
- package/dist/features/events/components/EventRafflesSection.js +17 -6
- package/dist/features/events/components/EventSaleBanner.d.ts +21 -0
- package/dist/features/events/components/EventSaleBanner.js +18 -0
- package/dist/features/events/components/EventsIndexListing.js +3 -4
- package/dist/features/events/components/index.d.ts +6 -0
- package/dist/features/events/components/index.js +4 -0
- package/dist/features/events/repository/event-entry.repository.d.ts +5 -0
- package/dist/features/events/repository/event-entry.repository.js +7 -0
- package/dist/features/filters/AsyncFacetSection.d.ts +1 -1
- package/dist/features/homepage/components/AnnouncementBar.d.ts +4 -1
- package/dist/features/homepage/components/AnnouncementBar.js +51 -4
- package/dist/features/homepage/components/FAQSection.d.ts +0 -5
- package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +3 -1
- package/dist/features/homepage/components/MarketplaceHomepageView.js +2 -2
- package/dist/features/homepage/components/index.d.ts +1 -1
- package/dist/features/homepage/components/index.js +1 -1
- package/dist/features/homepage/lib/live-stats.js +1 -1
- package/dist/features/homepage/lib/section-renderer.d.ts +2 -2
- package/dist/features/homepage/lib/section-renderer.js +2 -2
- package/dist/features/homepage/schemas/firestore.d.ts +0 -2
- package/dist/features/layout/index.d.ts +0 -2
- package/dist/features/layout/index.js +0 -1
- package/dist/features/orders/repository/orders.repository.d.ts +0 -1
- package/dist/features/orders/repository/orders.repository.js +0 -1
- package/dist/features/orders/server.d.ts +1 -1
- package/dist/features/orders/server.js +1 -1
- package/dist/features/pre-orders/server.d.ts +0 -1
- package/dist/features/pre-orders/server.js +0 -1
- package/dist/features/products/components/GroupSettingsPanel.js +65 -49
- package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
- package/dist/features/products/components/PrizeDrawsSection.d.ts +1 -4
- package/dist/features/products/components/PrizeDrawsSection.js +17 -6
- package/dist/features/products/components/PrizeRevealModal.js +1 -1
- package/dist/features/products/components/ProductCardMetadataSection.d.ts +11 -0
- package/dist/features/products/components/ProductCardMetadataSection.js +25 -0
- package/dist/features/products/components/ProductDetailPageView.js +3 -1
- package/dist/features/products/components/ProductFeaturesSelector.js +1 -1
- package/dist/features/products/components/ProductGradingTab.d.ts +13 -0
- package/dist/features/products/components/ProductGradingTab.js +25 -0
- package/dist/features/products/components/ProductGrid.js +14 -2
- package/dist/features/products/components/ProductTabsShell.d.ts +5 -1
- package/dist/features/products/components/ProductTabsShell.js +6 -1
- package/dist/features/products/components/index.d.ts +4 -0
- package/dist/features/products/components/index.js +3 -0
- package/dist/features/products/constants/action-defs.d.ts +5 -0
- package/dist/features/products/constants/action-defs.js +52 -32
- package/dist/features/products/constants/sieve.d.ts +24 -4
- package/dist/features/products/constants/sieve.js +20 -11
- package/dist/features/products/repository/products.repository.d.ts +0 -2
- package/dist/features/products/repository/products.repository.js +0 -2
- package/dist/features/products/schemas/firestore.d.ts +17 -0
- package/dist/features/products/schemas/product-features.validators.d.ts +2 -2
- package/dist/features/products/schemas/product-templates.d.ts +2 -4
- package/dist/features/products/server.d.ts +1 -1
- package/dist/features/products/server.js +1 -1
- package/dist/features/products/types/index.d.ts +4 -0
- package/dist/features/promotions/components/CouponCard.js +5 -5
- package/dist/features/promotions/components/CouponsIndexListing.js +3 -2
- package/dist/features/promotions/server.d.ts +0 -1
- package/dist/features/promotions/server.js +0 -1
- package/dist/features/reviews/components/ReviewsIndexListing.js +3 -4
- package/dist/features/reviews/repository/reviews.repository.d.ts +0 -1
- package/dist/features/reviews/repository/reviews.repository.js +0 -1
- package/dist/features/reviews/server.d.ts +1 -1
- package/dist/features/reviews/server.js +1 -1
- package/dist/features/search/api/route.js +44 -1
- package/dist/features/search/components/Search.js +2 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
- package/dist/features/search/hooks/useNavSuggestions.js +31 -4
- package/dist/features/seller/components/BrandInlineSelect.js +2 -2
- package/dist/features/seller/components/CategoryInlineSelect.js +2 -2
- package/dist/features/seller/components/SellerAddressesView.js +10 -20
- package/dist/features/seller/components/SellerAuctionsView.d.ts +3 -3
- package/dist/features/seller/components/SellerAuctionsView.js +67 -106
- package/dist/features/seller/components/SellerBidsView.js +6 -6
- package/dist/features/seller/components/SellerBundlesView.js +72 -105
- package/dist/features/seller/components/SellerClassifiedView.js +74 -105
- package/dist/features/seller/components/SellerCouponEditorView.js +1 -1
- package/dist/features/seller/components/SellerCouponsView.d.ts +2 -2
- package/dist/features/seller/components/SellerCouponsView.js +51 -96
- package/dist/features/seller/components/SellerDigitalCodesView.js +70 -103
- package/dist/features/seller/components/SellerGroupedListingsView.js +34 -54
- package/dist/features/seller/components/SellerLiveView.js +70 -99
- package/dist/features/seller/components/SellerOffersPanel.js +1 -1
- package/dist/features/seller/components/SellerOffersView.d.ts +2 -2
- package/dist/features/seller/components/SellerOffersView.js +37 -70
- package/dist/features/seller/components/SellerOrdersView.d.ts +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +10 -24
- package/dist/features/seller/components/SellerPayoutMethodsView.js +12 -24
- package/dist/features/seller/components/SellerPayoutsView.d.ts +2 -2
- package/dist/features/seller/components/SellerPayoutsView.js +34 -69
- package/dist/features/seller/components/SellerPreOrdersView.d.ts +2 -2
- package/dist/features/seller/components/SellerPreOrdersView.js +55 -97
- package/dist/features/seller/components/SellerPrizeDrawsView.d.ts +2 -2
- package/dist/features/seller/components/SellerPrizeDrawsView.js +55 -97
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +1 -1
- package/dist/features/seller/components/SellerProductsFilterDrawer.js +3 -6
- package/dist/features/seller/components/SellerProductsView.d.ts +2 -2
- package/dist/features/seller/components/SellerProductsView.js +24 -32
- package/dist/features/seller/components/SellerShippingConfigsView.js +12 -24
- package/dist/features/seller/components/SellerSidebar.d.ts +0 -4
- package/dist/features/seller/components/SellerSidebar.js +0 -2
- package/dist/features/seller/components/SellerStoreCategoriesView.js +15 -34
- package/dist/features/seller/components/SellerTemplatesView.js +27 -43
- package/dist/features/seller/components/SellersListView.d.ts +1 -2
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.d.ts +5 -0
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +2 -8
- package/dist/features/seller/components/index.d.ts +0 -3
- package/dist/features/seller/components/index.js +0 -2
- package/dist/features/seller/server.d.ts +0 -1
- package/dist/features/seller/server.js +0 -1
- package/dist/features/shell/FormShell.d.ts +1 -1
- package/dist/features/shell/FormShell.js +4 -1
- package/dist/features/shell/field-groups/ImageFieldGroup.d.ts +18 -0
- package/dist/features/shell/field-groups/ImageFieldGroup.js +15 -0
- package/dist/features/shell/field-groups/SeoFieldGroup.d.ts +22 -0
- package/dist/features/shell/field-groups/SeoFieldGroup.js +16 -0
- package/dist/features/shell/field-groups/StatusFieldGroup.d.ts +35 -0
- package/dist/features/shell/field-groups/StatusFieldGroup.js +16 -0
- package/dist/features/shell/field-groups/TitleDescriptionGroup.d.ts +40 -0
- package/dist/features/shell/field-groups/TitleDescriptionGroup.js +16 -0
- package/dist/features/shell/field-groups/index.d.ts +13 -0
- package/dist/features/shell/field-groups/index.js +9 -0
- package/dist/features/shell/index.d.ts +2 -0
- package/dist/features/shell/index.js +1 -0
- package/dist/features/stores/components/StoreCapabilitiesGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreFinanceGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreHeader.js +2 -1
- package/dist/features/stores/components/StoreListingsGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreOrdersGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreReviewsListing.js +3 -4
- package/dist/features/stores/components/StoreScopedSearch.d.ts +16 -0
- package/dist/features/stores/components/StoreScopedSearch.js +27 -0
- package/dist/features/stores/components/StoreSettingsGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoresIndexListing.js +3 -4
- package/dist/features/stores/server.d.ts +0 -1
- package/dist/features/stores/server.js +0 -1
- package/dist/features/support/schemas/firestore.d.ts +22 -1
- package/dist/features/support/schemas/firestore.js +10 -0
- package/dist/features/wishlist/server.d.ts +0 -1
- package/dist/features/wishlist/server.js +0 -1
- package/dist/index.d.ts +11 -33
- package/dist/index.js +17 -62
- package/dist/next/routing/route-map.d.ts +8 -0
- package/dist/next/routing/route-map.js +4 -0
- package/dist/react/contexts/SessionContext.d.ts +2 -0
- package/dist/react/contexts/SessionContext.js +2 -0
- package/dist/react/hooks/useEntityDelete.d.ts +15 -0
- package/dist/react/hooks/useEntityDelete.js +39 -0
- package/dist/react/hooks/useListingTypeFlags.d.ts +32 -0
- package/dist/react/hooks/useListingTypeFlags.js +19 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +2 -0
- package/dist/repositories/index.d.ts +3 -3
- package/dist/repositories/index.js +3 -3
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/pii-redact.d.ts +8 -0
- package/dist/security/pii-redact.js +10 -1
- package/dist/seed/grouped-listings-seed-data.d.ts +4 -0
- package/dist/seed/products-preorders-seed-data.d.ts +4 -0
- package/dist/seed/products-prize-draws-seed-data.js +3 -0
- package/dist/seed/site-settings-seed-data.js +5 -5
- package/dist/seed/sub-listings-seed-data.d.ts +4 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +4 -0
- package/dist/styles.css +54 -395
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/BaseListingCard.d.ts +10 -0
- package/dist/ui/components/BaseListingCard.js +17 -1
- package/dist/ui/components/DetailPageGallery.d.ts +32 -0
- package/dist/ui/components/DetailPageGallery.js +47 -0
- package/dist/ui/components/DetailPageHero.d.ts +30 -0
- package/dist/ui/components/DetailPageHero.js +22 -0
- package/dist/ui/components/DetailPageTabs.d.ts +34 -0
- package/dist/ui/components/DetailPageTabs.js +38 -0
- package/dist/ui/components/HorizontalScroller.style.css +15 -2
- package/dist/ui/components/ListingFilterDrawer.d.ts +10 -0
- package/dist/ui/components/ListingFilterDrawer.js +8 -0
- package/dist/ui/components/ListingLayout.d.ts +11 -2
- package/dist/ui/components/ListingLayout.js +12 -6
- package/dist/ui/components/PaginatedSelect.d.ts +66 -0
- package/dist/ui/components/PaginatedSelect.js +201 -0
- package/dist/ui/components/PaginatedSelect.style.css +254 -0
- package/dist/ui/components/Semantic.d.ts +0 -4
- package/dist/ui/components/Semantic.js +0 -2
- package/dist/ui/components/SettingsSection.d.ts +47 -0
- package/dist/ui/components/SettingsSection.js +38 -0
- package/dist/ui/components/index.style.css +1 -4
- package/dist/ui/index.d.ts +14 -14
- package/dist/ui/index.js +7 -7
- package/dist/utils/id-generators.d.ts +1 -18
- package/dist/utils/id-generators.js +51 -18
- package/dist/validation/schemas.d.ts +25 -0
- package/dist/validation/schemas.js +28 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { DataTable } from "./DataTable";
|
|
2
2
|
export { QuickEditMenu } from "./QuickEditMenu";
|
|
3
|
-
export {
|
|
3
|
+
export { DataListingView } from "./DataListingView";
|
|
4
4
|
export { DashboardStatsGrid } from "./DashboardStats";
|
|
5
5
|
export { AdminUsersView } from "./AdminUsersView";
|
|
6
6
|
export { AdminProductsView } from "./AdminProductsView";
|
|
@@ -18,6 +18,11 @@ export { AdminBrandEditorView } from "./AdminBrandEditorView";
|
|
|
18
18
|
export { AdminAddressEditorView } from "./AdminAddressEditorView";
|
|
19
19
|
// SB4-E 2026-05-14 — admin prize draws listing view.
|
|
20
20
|
export { AdminPrizeDrawsView } from "./AdminPrizeDrawsView";
|
|
21
|
+
// W1-29 2026-05-23 — admin listing views for orphaned listing types (classified/digital-codes/live).
|
|
22
|
+
export { AdminClassifiedView } from "./AdminClassifiedView";
|
|
23
|
+
export { AdminDigitalCodesView } from "./AdminDigitalCodesView";
|
|
24
|
+
export { AdminLiveView } from "./AdminLiveView";
|
|
25
|
+
export { AdminGroupedListingsView } from "./AdminGroupedListingsView";
|
|
21
26
|
// S-SBUNI-4 2026-05-13 — admin bundle CRUD views.
|
|
22
27
|
export { AdminBundlesView } from "./AdminBundlesView";
|
|
23
28
|
export { AdminBundleEditorView } from "./AdminBundleEditorView";
|
|
@@ -69,7 +74,6 @@ export { AdminReturnRequestsView } from "./AdminReturnRequestsView";
|
|
|
69
74
|
export { AdminStoreAddressesView } from "./AdminStoreAddressesView";
|
|
70
75
|
export { AdminSidebar } from "./AdminSidebar";
|
|
71
76
|
export { AdminTopBar } from "./AdminTopBar";
|
|
72
|
-
export { DemoSeedView } from "./DemoSeedView";
|
|
73
77
|
export { AdminTeamView } from "./AdminTeamView";
|
|
74
78
|
export { AdminEmployeeEditorView } from "./AdminEmployeeEditorView";
|
|
75
79
|
export { AdminSupportTicketsView } from "./AdminSupportTicketsView";
|
|
@@ -88,7 +88,10 @@ export declare const ADMIN_USER_STATUS_TABS: readonly [{
|
|
|
88
88
|
readonly id: "Disabled";
|
|
89
89
|
readonly label: "Disabled";
|
|
90
90
|
}];
|
|
91
|
-
/** Admin > Users — role filter chip set.
|
|
91
|
+
/** Admin > Users — role filter chip set. IDs match the canonical UserRole
|
|
92
|
+
* union ("user" | "seller" | "moderator" | "employee" | "admin") and the
|
|
93
|
+
* Firestore `users/{uid}.role` field. The label "Buyer" maps to id "user"
|
|
94
|
+
* per SB-UNI-E. Previously sent "buyer" which silently returned 0 rows. */
|
|
92
95
|
export declare const ADMIN_USER_ROLE_TABS: readonly [{
|
|
93
96
|
readonly id: "All";
|
|
94
97
|
readonly label: "All";
|
|
@@ -99,11 +102,14 @@ export declare const ADMIN_USER_ROLE_TABS: readonly [{
|
|
|
99
102
|
readonly id: "seller";
|
|
100
103
|
readonly label: "Seller";
|
|
101
104
|
}, {
|
|
102
|
-
readonly id: "
|
|
105
|
+
readonly id: "user";
|
|
103
106
|
readonly label: "Buyer";
|
|
104
107
|
}, {
|
|
105
108
|
readonly id: "moderator";
|
|
106
109
|
readonly label: "Moderator";
|
|
110
|
+
}, {
|
|
111
|
+
readonly id: "employee";
|
|
112
|
+
readonly label: "Employee";
|
|
107
113
|
}];
|
|
108
114
|
/** Admin > Stores — seller-onboarding state filter chip set. */
|
|
109
115
|
export declare const ADMIN_STORE_STATUS_TABS: readonly [{
|
|
@@ -122,49 +128,49 @@ export declare const ADMIN_STORE_STATUS_TABS: readonly [{
|
|
|
122
128
|
readonly id: "rejected";
|
|
123
129
|
readonly label: "Rejected";
|
|
124
130
|
}];
|
|
125
|
-
/** Admin > Payouts — payout state filter chip set.
|
|
126
|
-
* `
|
|
131
|
+
/** Admin > Payouts — payout state filter chip set. Lowercase IDs match
|
|
132
|
+
* `PayoutStatusValues` and the actual Firestore document `status` field. */
|
|
127
133
|
export declare const ADMIN_PAYOUT_STATUS_TABS: readonly [{
|
|
128
134
|
readonly id: "All";
|
|
129
135
|
readonly label: "All";
|
|
130
136
|
}, {
|
|
131
|
-
readonly id: "
|
|
137
|
+
readonly id: "pending";
|
|
132
138
|
readonly label: "Pending";
|
|
133
139
|
}, {
|
|
134
|
-
readonly id: "
|
|
140
|
+
readonly id: "processing";
|
|
135
141
|
readonly label: "Processing";
|
|
136
142
|
}, {
|
|
137
|
-
readonly id: "
|
|
143
|
+
readonly id: "paid";
|
|
138
144
|
readonly label: "Paid";
|
|
139
145
|
}, {
|
|
140
|
-
readonly id: "
|
|
146
|
+
readonly id: "failed";
|
|
141
147
|
readonly label: "Failed";
|
|
142
148
|
}];
|
|
143
|
-
/** Admin > Orders — order-state filter chip set.
|
|
144
|
-
* `
|
|
149
|
+
/** Admin > Orders — order-state filter chip set. Lowercase IDs match
|
|
150
|
+
* `OrderStatusValues` and the actual Firestore document `status` field. */
|
|
145
151
|
export declare const ADMIN_ORDER_STATUS_TABS: readonly [{
|
|
146
152
|
readonly id: "All";
|
|
147
153
|
readonly label: "All";
|
|
148
154
|
}, {
|
|
149
|
-
readonly id: "
|
|
155
|
+
readonly id: "pending";
|
|
150
156
|
readonly label: "Pending";
|
|
151
157
|
}, {
|
|
152
|
-
readonly id: "
|
|
158
|
+
readonly id: "processing";
|
|
153
159
|
readonly label: "Processing";
|
|
154
160
|
}, {
|
|
155
|
-
readonly id: "
|
|
161
|
+
readonly id: "shipped";
|
|
156
162
|
readonly label: "Shipped";
|
|
157
163
|
}, {
|
|
158
|
-
readonly id: "
|
|
164
|
+
readonly id: "delivered";
|
|
159
165
|
readonly label: "Delivered";
|
|
160
166
|
}, {
|
|
161
|
-
readonly id: "
|
|
167
|
+
readonly id: "cancelled";
|
|
162
168
|
readonly label: "Cancelled";
|
|
163
169
|
}, {
|
|
164
|
-
readonly id: "
|
|
170
|
+
readonly id: "refunded";
|
|
165
171
|
readonly label: "Refunded";
|
|
166
172
|
}, {
|
|
167
|
-
readonly id: "
|
|
173
|
+
readonly id: "return_requested";
|
|
168
174
|
readonly label: "Return Requested";
|
|
169
175
|
}];
|
|
170
176
|
/** Admin > Reviews — moderation state filter chip set. */
|
|
@@ -43,13 +43,17 @@ export const ADMIN_USER_STATUS_TABS = [
|
|
|
43
43
|
{ id: "Active", label: "Active" },
|
|
44
44
|
{ id: "Disabled", label: "Disabled" },
|
|
45
45
|
];
|
|
46
|
-
/** Admin > Users — role filter chip set.
|
|
46
|
+
/** Admin > Users — role filter chip set. IDs match the canonical UserRole
|
|
47
|
+
* union ("user" | "seller" | "moderator" | "employee" | "admin") and the
|
|
48
|
+
* Firestore `users/{uid}.role` field. The label "Buyer" maps to id "user"
|
|
49
|
+
* per SB-UNI-E. Previously sent "buyer" which silently returned 0 rows. */
|
|
47
50
|
export const ADMIN_USER_ROLE_TABS = [
|
|
48
51
|
ALL_TAB,
|
|
49
52
|
{ id: "admin", label: "Admin" },
|
|
50
53
|
{ id: "seller", label: "Seller" },
|
|
51
|
-
{ id: "
|
|
54
|
+
{ id: "user", label: "Buyer" },
|
|
52
55
|
{ id: "moderator", label: "Moderator" },
|
|
56
|
+
{ id: "employee", label: "Employee" },
|
|
53
57
|
];
|
|
54
58
|
/** Admin > Stores — seller-onboarding state filter chip set. */
|
|
55
59
|
export const ADMIN_STORE_STATUS_TABS = [
|
|
@@ -59,26 +63,26 @@ export const ADMIN_STORE_STATUS_TABS = [
|
|
|
59
63
|
{ id: "suspended", label: "Suspended" },
|
|
60
64
|
{ id: "rejected", label: "Rejected" },
|
|
61
65
|
];
|
|
62
|
-
/** Admin > Payouts — payout state filter chip set.
|
|
63
|
-
* `
|
|
66
|
+
/** Admin > Payouts — payout state filter chip set. Lowercase IDs match
|
|
67
|
+
* `PayoutStatusValues` and the actual Firestore document `status` field. */
|
|
64
68
|
export const ADMIN_PAYOUT_STATUS_TABS = [
|
|
65
69
|
ALL_TAB,
|
|
66
|
-
{ id: "
|
|
67
|
-
{ id: "
|
|
68
|
-
{ id: "
|
|
69
|
-
{ id: "
|
|
70
|
+
{ id: "pending", label: "Pending" },
|
|
71
|
+
{ id: "processing", label: "Processing" },
|
|
72
|
+
{ id: "paid", label: "Paid" },
|
|
73
|
+
{ id: "failed", label: "Failed" },
|
|
70
74
|
];
|
|
71
|
-
/** Admin > Orders — order-state filter chip set.
|
|
72
|
-
* `
|
|
75
|
+
/** Admin > Orders — order-state filter chip set. Lowercase IDs match
|
|
76
|
+
* `OrderStatusValues` and the actual Firestore document `status` field. */
|
|
73
77
|
export const ADMIN_ORDER_STATUS_TABS = [
|
|
74
78
|
ALL_TAB,
|
|
75
|
-
{ id: "
|
|
76
|
-
{ id: "
|
|
77
|
-
{ id: "
|
|
78
|
-
{ id: "
|
|
79
|
-
{ id: "
|
|
80
|
-
{ id: "
|
|
81
|
-
{ id: "
|
|
79
|
+
{ id: "pending", label: "Pending" },
|
|
80
|
+
{ id: "processing", label: "Processing" },
|
|
81
|
+
{ id: "shipped", label: "Shipped" },
|
|
82
|
+
{ id: "delivered", label: "Delivered" },
|
|
83
|
+
{ id: "cancelled", label: "Cancelled" },
|
|
84
|
+
{ id: "refunded", label: "Refunded" },
|
|
85
|
+
{ id: "return_requested", label: "Return Requested" },
|
|
82
86
|
];
|
|
83
87
|
/** Admin > Reviews — moderation state filter chip set. */
|
|
84
88
|
export const ADMIN_REVIEW_STATUS_TABS = [
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface AdminListingConfig<TResponse, TRow extends {
|
|
2
|
+
id: string;
|
|
3
|
+
}> {
|
|
4
|
+
filterKeys: string[];
|
|
5
|
+
defaultSort: string;
|
|
6
|
+
pageSize?: number;
|
|
7
|
+
queryKey: readonly unknown[];
|
|
8
|
+
endpoint: string;
|
|
9
|
+
mapRows: (response: TResponse) => TRow[];
|
|
10
|
+
getTotal?: (response: TResponse, rows: TRow[]) => number;
|
|
11
|
+
buildFilters: (filterState: Record<string, string>) => string | undefined;
|
|
12
|
+
initialView?: "grid" | "list" | "table";
|
|
13
|
+
}
|
|
14
|
+
export declare function useAdminListing<TResponse, TRow extends {
|
|
15
|
+
id: string;
|
|
16
|
+
}>(config: AdminListingConfig<TResponse, TRow>): {
|
|
17
|
+
view: "table" | "grid" | "list";
|
|
18
|
+
setView: import("react").Dispatch<import("react").SetStateAction<"table" | "grid" | "list">>;
|
|
19
|
+
table: {
|
|
20
|
+
params: URLSearchParams;
|
|
21
|
+
get: (key: string) => string;
|
|
22
|
+
getNumber: (key: string, fallback?: number) => number;
|
|
23
|
+
set: (key: string, value: string) => void;
|
|
24
|
+
setMany: (updates: Record<string, string>) => void;
|
|
25
|
+
clear: (keys?: string[]) => void;
|
|
26
|
+
setPage: (page: number) => void;
|
|
27
|
+
setPageSize: (size: number) => void;
|
|
28
|
+
setSort: (sort: string) => void;
|
|
29
|
+
buildSieveParams: (sieveFilters: string) => string;
|
|
30
|
+
buildSearchParams: () => string;
|
|
31
|
+
};
|
|
32
|
+
panel: import("../../..").PanelUrlSync;
|
|
33
|
+
searchInput: string;
|
|
34
|
+
setSearchInput: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
35
|
+
commitSearch: () => void;
|
|
36
|
+
filterOpen: boolean;
|
|
37
|
+
setFilterOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
38
|
+
openFilters: () => void;
|
|
39
|
+
applyFilters: () => void;
|
|
40
|
+
clearFilters: () => void;
|
|
41
|
+
pendingFilters: Record<string, string>;
|
|
42
|
+
setPendingFilters: import("react").Dispatch<import("react").SetStateAction<Record<string, string>>>;
|
|
43
|
+
activeFilterCount: number;
|
|
44
|
+
hasActiveState: boolean;
|
|
45
|
+
resetAll: () => void;
|
|
46
|
+
rows: TRow[];
|
|
47
|
+
total: number;
|
|
48
|
+
isLoading: boolean;
|
|
49
|
+
errorMessage: string | undefined;
|
|
50
|
+
refetch: () => void;
|
|
51
|
+
currentPage: number;
|
|
52
|
+
totalPages: number;
|
|
53
|
+
selection: import("../../../react").UseBulkSelectionReturn;
|
|
54
|
+
defaultSort: string;
|
|
55
|
+
pageSize: number;
|
|
56
|
+
};
|
|
57
|
+
export type AdminListingReturn<TRow extends {
|
|
58
|
+
id: string;
|
|
59
|
+
}> = ReturnType<typeof useAdminListing<unknown, TRow>>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useCallback } from "react";
|
|
3
|
+
import { useUrlTable } from "../../../react/hooks/useUrlTable";
|
|
4
|
+
import { useBulkSelection } from "../../../react/hooks/useBulkSelection";
|
|
5
|
+
import { usePanelUrlSync } from "../../../react/hooks/use-panel-url-sync";
|
|
6
|
+
import { useAdminListingData } from "./useAdminListingData";
|
|
7
|
+
export function useAdminListing(config) {
|
|
8
|
+
const { filterKeys, defaultSort, pageSize = 25, queryKey, endpoint, mapRows, getTotal, buildFilters, } = config;
|
|
9
|
+
const [view, setView] = useState(config.initialView ?? "table");
|
|
10
|
+
const table = useUrlTable({ defaults: { pageSize: String(pageSize), sort: defaultSort } });
|
|
11
|
+
const panel = usePanelUrlSync();
|
|
12
|
+
const [searchInput, setSearchInput] = useState(table.get("q") || "");
|
|
13
|
+
const [filterOpen, setFilterOpen] = useState(false);
|
|
14
|
+
const [pendingFilters, setPendingFilters] = useState(() => Object.fromEntries(filterKeys.map((k) => [k, table.get(k)])));
|
|
15
|
+
const openFilters = useCallback(() => {
|
|
16
|
+
setPendingFilters(Object.fromEntries(filterKeys.map((k) => [k, table.get(k)])));
|
|
17
|
+
setFilterOpen(true);
|
|
18
|
+
}, [filterKeys, table]);
|
|
19
|
+
const applyFilters = useCallback(() => {
|
|
20
|
+
const updates = { page: "1" };
|
|
21
|
+
for (const k of filterKeys)
|
|
22
|
+
updates[k] = pendingFilters[k] ?? "";
|
|
23
|
+
table.setMany(updates);
|
|
24
|
+
setFilterOpen(false);
|
|
25
|
+
}, [filterKeys, pendingFilters, table]);
|
|
26
|
+
const clearFilters = useCallback(() => {
|
|
27
|
+
setPendingFilters(Object.fromEntries(filterKeys.map((k) => [k, ""])));
|
|
28
|
+
}, [filterKeys]);
|
|
29
|
+
const resetAll = useCallback(() => {
|
|
30
|
+
const updates = { q: "", sort: "" };
|
|
31
|
+
for (const k of filterKeys)
|
|
32
|
+
updates[k] = "";
|
|
33
|
+
table.setMany(updates);
|
|
34
|
+
setSearchInput("");
|
|
35
|
+
}, [filterKeys, table]);
|
|
36
|
+
const commitSearch = useCallback(() => {
|
|
37
|
+
table.set("q", searchInput.trim());
|
|
38
|
+
}, [searchInput, table]);
|
|
39
|
+
const activeFilterCount = filterKeys.filter((k) => !!table.get(k)).length;
|
|
40
|
+
const hasActiveState = !!table.get("q") || table.get("sort") !== defaultSort || activeFilterCount > 0;
|
|
41
|
+
const currentFilterState = Object.fromEntries(filterKeys.map((k) => [k, table.get(k)]));
|
|
42
|
+
const filters = buildFilters(currentFilterState);
|
|
43
|
+
const { rows, total, isLoading, errorMessage, refetch } = useAdminListingData({
|
|
44
|
+
queryKey,
|
|
45
|
+
endpoint,
|
|
46
|
+
page: table.getNumber("page", 1),
|
|
47
|
+
pageSize,
|
|
48
|
+
sorts: table.get("sort") || defaultSort,
|
|
49
|
+
filters,
|
|
50
|
+
q: table.get("q") || undefined,
|
|
51
|
+
mapRows,
|
|
52
|
+
getTotal,
|
|
53
|
+
});
|
|
54
|
+
const currentPage = table.getNumber("page", 1);
|
|
55
|
+
const totalPages = Math.ceil(total / pageSize);
|
|
56
|
+
const selection = useBulkSelection({ items: rows, keyExtractor: (r) => r.id });
|
|
57
|
+
return {
|
|
58
|
+
view, setView,
|
|
59
|
+
table,
|
|
60
|
+
panel,
|
|
61
|
+
searchInput, setSearchInput, commitSearch,
|
|
62
|
+
filterOpen, setFilterOpen, openFilters, applyFilters, clearFilters,
|
|
63
|
+
pendingFilters, setPendingFilters,
|
|
64
|
+
activeFilterCount, hasActiveState, resetAll,
|
|
65
|
+
rows, total, isLoading, errorMessage, refetch,
|
|
66
|
+
currentPage, totalPages,
|
|
67
|
+
selection,
|
|
68
|
+
defaultSort,
|
|
69
|
+
pageSize,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -183,19 +183,18 @@ export const DEFAULT_SITE_SETTINGS_DATA = {
|
|
|
183
183
|
coupons: true,
|
|
184
184
|
notifications: true,
|
|
185
185
|
sellerRegistration: true,
|
|
186
|
-
preOrders:
|
|
186
|
+
preOrders: true,
|
|
187
187
|
seedPanel: true,
|
|
188
|
-
//
|
|
189
|
-
// (
|
|
190
|
-
// surfaces ship. Admin Feature Flags UI lets the operator flip them.
|
|
188
|
+
// W1-37 2026-05-23 — Phase 2 listing types enabled by default; all per-type
|
|
189
|
+
// surfaces (seller + admin via W1-29 + public) are now shipped.
|
|
191
190
|
listingTypes: {
|
|
192
191
|
standard: true,
|
|
193
192
|
auction: true,
|
|
194
193
|
"pre-order": true,
|
|
195
194
|
"prize-draw": true,
|
|
196
|
-
classified:
|
|
197
|
-
"digital-code":
|
|
198
|
-
live:
|
|
195
|
+
classified: true,
|
|
196
|
+
"digital-code": true,
|
|
197
|
+
live: true,
|
|
199
198
|
},
|
|
200
199
|
categoryTypes: {
|
|
201
200
|
category: true,
|
|
@@ -4,6 +4,5 @@
|
|
|
4
4
|
* Server-only entry point for auction API route handlers.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./actions";
|
|
7
|
-
export { AuctionsRepository } from "./repository/auctions.repository";
|
|
8
7
|
export { bidRepository } from "./repository/bid.repository";
|
|
9
8
|
export { GET as bidsGET, GET } from "./api/route";
|
|
@@ -4,6 +4,5 @@
|
|
|
4
4
|
* Server-only entry point for auction API route handlers.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./actions";
|
|
7
|
-
export { AuctionsRepository } from "./repository/auctions.repository";
|
|
8
7
|
export { bidRepository } from "./repository/bid.repository";
|
|
9
8
|
export { GET as bidsGET, GET } from "./api/route";
|
|
@@ -18,7 +18,7 @@ export async function issueRealtimeToken(userId, userRole) {
|
|
|
18
18
|
catch (err) {
|
|
19
19
|
serverLogger.warn("Could not resolve chatIds for realtime token", { userId, err });
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
const conversationIds = {};
|
|
22
22
|
try {
|
|
23
23
|
const buyerConvs = await conversationsRepository.listByBuyer(userId);
|
|
24
24
|
buyerConvs.forEach((c) => { conversationIds[c.id] = true; });
|
|
@@ -22,7 +22,7 @@ export class UserRepository extends BaseRepository {
|
|
|
22
22
|
// addPiiIndices is intentionally NOT called here — it spreads the original
|
|
23
23
|
// plaintext `data` back into the result, which would overwrite the encrypted
|
|
24
24
|
// ciphertext with the original plaintext values, defeating the encryption.
|
|
25
|
-
|
|
25
|
+
const encrypted = encryptPiiFields(data, [...USER_PII_FIELDS]);
|
|
26
26
|
if (encrypted.payoutDetails) {
|
|
27
27
|
encrypted.payoutDetails =
|
|
28
28
|
encryptPayoutDetails(encrypted.payoutDetails);
|
|
@@ -100,6 +100,7 @@ export interface UserDocument {
|
|
|
100
100
|
scamAwarenessAcknowledgedAt?: Date;
|
|
101
101
|
/** User-controlled notification channel and type preferences. */
|
|
102
102
|
notificationPreferences?: import("../../account/types").NotificationPreferences;
|
|
103
|
+
dismissedBannerHash?: string;
|
|
103
104
|
}
|
|
104
105
|
export interface UserSoftBan {
|
|
105
106
|
action: BannedAction;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useCallback, useMemo } from "react";
|
|
4
|
-
import { X } from "lucide-react";
|
|
5
4
|
import { useUrlTable } from "../../../react/hooks/useUrlTable";
|
|
6
5
|
import { useBlogPosts } from "../hooks/useBlog";
|
|
7
|
-
import { ListingToolbar, Pagination, Text } from "../../../ui";
|
|
6
|
+
import { ListingFilterDrawer, ListingToolbar, Pagination, Text } from "../../../ui";
|
|
8
7
|
import { ROUTES } from "../../../next";
|
|
9
8
|
import { BlogCard } from "./BlogListView";
|
|
10
9
|
import { BlogFilters, BLOG_PUBLIC_SORT_OPTIONS } from "./BlogFilters";
|
|
@@ -26,9 +25,7 @@ function renderBlogGrid(props) {
|
|
|
26
25
|
}
|
|
27
26
|
function renderBlogFilterDrawer(props) {
|
|
28
27
|
const { filterOpen, setFilterOpen, activeFilterCount, clearFilters, applyFilters, pendingTable } = props;
|
|
29
|
-
|
|
30
|
-
return null;
|
|
31
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", "aria-hidden": "true", onClick: () => setFilterOpen(false) }), _jsxs("div", { className: "fixed inset-y-0 left-0 z-50 flex w-80 flex-col bg-white dark:bg-slate-900 shadow-2xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: [_jsx("span", { className: "flex items-center gap-2 text-base font-semibold text-zinc-900 dark:text-zinc-100", children: "Filters" }), _jsxs("div", { className: "flex items-center gap-2", children: [activeFilterCount > 0 && (_jsx("button", { type: "button", onClick: clearFilters, className: "text-xs text-zinc-500 hover:text-rose-500 dark:text-zinc-400 transition-colors", children: "Clear all" })), _jsx("button", { type: "button", onClick: () => setFilterOpen(false), "aria-label": "Close filters", className: "rounded-lg p-1.5 text-zinc-500 dark:text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors", children: _jsx(X, { className: "h-5 w-5" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto px-4 py-4", children: _jsx(BlogFilters, { table: pendingTable, variant: "public" }) }), _jsx("div", { className: "border-t border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: _jsxs("button", { type: "button", onClick: applyFilters, className: "w-full rounded-lg bg-primary py-2.5 text-sm font-semibold text-white hover:bg-primary-600 transition-colors active:scale-[0.98]", children: ["Apply Filters", activeFilterCount > 0 ? ` (${activeFilterCount})` : ""] }) })] })] }));
|
|
28
|
+
return (_jsx(ListingFilterDrawer, { open: filterOpen, onClose: () => setFilterOpen(false), onApply: applyFilters, onClear: clearFilters, activeCount: activeFilterCount, children: _jsx(BlogFilters, { table: pendingTable, variant: "public" }) }));
|
|
32
29
|
}
|
|
33
30
|
const PAGE_SIZE = 24;
|
|
34
31
|
const DEFAULT_SORT = sortBy(BLOG_FIELDS.PUBLISHED_AT);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { DocumentReference } from "firebase-admin/firestore";
|
|
2
2
|
import type { DocumentSnapshot } from "../../../providers/db-firebase";
|
|
3
|
-
import { BaseRepository } from "../../../providers/db-firebase";
|
|
3
|
+
import { BaseRepository, type FirebaseSieveResult, type SieveModel } from "../../../providers/db-firebase";
|
|
4
4
|
import { type AddToCartInput, type CartAppliedCoupon, type CartDocument, type UpdateCartItemInput } from "../schemas";
|
|
5
5
|
export declare class CartRepository extends BaseRepository<CartDocument> {
|
|
6
|
+
private static readonly SIEVE_FIELDS;
|
|
6
7
|
constructor();
|
|
8
|
+
/** Admin-facing paginated list of carts. */
|
|
9
|
+
list(model: SieveModel): Promise<FirebaseSieveResult<CartDocument>>;
|
|
7
10
|
protected mapDoc<D = CartDocument>(snap: DocumentSnapshot): D;
|
|
8
11
|
findByUserId(userId: string): Promise<CartDocument | null>;
|
|
9
12
|
getOrCreate(userId: string): Promise<CartDocument>;
|
|
@@ -9,6 +9,10 @@ export class CartRepository extends BaseRepository {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
super(CART_COLLECTION);
|
|
11
11
|
}
|
|
12
|
+
/** Admin-facing paginated list of carts. */
|
|
13
|
+
async list(model) {
|
|
14
|
+
return this.sieveQuery(model, CartRepository.SIEVE_FIELDS);
|
|
15
|
+
}
|
|
12
16
|
mapDoc(snap) {
|
|
13
17
|
const raw = super.mapDoc(snap);
|
|
14
18
|
return {
|
|
@@ -279,4 +283,12 @@ export class CartRepository extends BaseRepository {
|
|
|
279
283
|
return snap.docs.map((d) => d.ref);
|
|
280
284
|
}
|
|
281
285
|
}
|
|
286
|
+
// W1-42 — admin-facing Sieve list. Filterable on userId, sessionId, updatedAt;
|
|
287
|
+
// sortable on updatedAt.
|
|
288
|
+
CartRepository.SIEVE_FIELDS = {
|
|
289
|
+
userId: { canFilter: true, canSort: false },
|
|
290
|
+
sessionId: { canFilter: true, canSort: false },
|
|
291
|
+
updatedAt: { canFilter: true, canSort: true },
|
|
292
|
+
createdAt: { canFilter: true, canSort: true },
|
|
293
|
+
};
|
|
282
294
|
export const cartRepository = new CartRepository();
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useCallback, useMemo } from "react";
|
|
4
|
-
import { X } from "lucide-react";
|
|
5
4
|
import { useCategoriesFiltered } from "../hooks/useCategories";
|
|
6
5
|
import { ROUTES } from "../../../next";
|
|
7
|
-
import { ListingToolbar, Pagination, Text } from "../../../ui";
|
|
6
|
+
import { ListingFilterDrawer, ListingToolbar, Pagination, Text } from "../../../ui";
|
|
8
7
|
import { CategoryCard } from "./CategoryGrid";
|
|
9
8
|
import { CategoryFilters } from "./CategoryFilters";
|
|
10
9
|
import { useUrlTable } from "../../../react/hooks/useUrlTable";
|
|
@@ -28,9 +27,7 @@ function renderCategoryGrid(props) {
|
|
|
28
27
|
}
|
|
29
28
|
function renderCategoryFilterDrawer(props) {
|
|
30
29
|
const { filterOpen, setFilterOpen, activeFilterCount, clearFilters, applyFilters, pendingTable } = props;
|
|
31
|
-
|
|
32
|
-
return null;
|
|
33
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", "aria-hidden": "true", onClick: () => setFilterOpen(false) }), _jsxs("div", { className: "fixed inset-y-0 left-0 z-50 flex w-80 flex-col bg-white dark:bg-slate-900 shadow-2xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: [_jsx("span", { className: "flex items-center gap-2 text-base font-semibold text-zinc-900 dark:text-zinc-100", children: "Filters" }), _jsxs("div", { className: "flex items-center gap-2", children: [activeFilterCount > 0 && _jsx("button", { type: "button", onClick: clearFilters, className: "text-xs text-zinc-500 hover:text-rose-500 dark:text-zinc-400 transition-colors", children: "Clear all" }), _jsx("button", { type: "button", onClick: () => setFilterOpen(false), "aria-label": "Close filters", className: "rounded-lg p-1.5 text-zinc-500 dark:text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors", children: _jsx(X, { className: "h-5 w-5" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto px-4 py-4", children: _jsx(CategoryFilters, { table: pendingTable, variant: "public" }) }), _jsx("div", { className: "border-t border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: _jsxs("button", { type: "button", onClick: applyFilters, className: "w-full rounded-lg bg-primary py-2.5 text-sm font-semibold text-white hover:bg-primary-600 transition-colors active:scale-[0.98]", children: ["Apply Filters", activeFilterCount > 0 ? ` (${activeFilterCount})` : ""] }) })] })] }));
|
|
30
|
+
return (_jsx(ListingFilterDrawer, { open: filterOpen, onClose: () => setFilterOpen(false), onApply: applyFilters, onClear: clearFilters, activeCount: activeFilterCount, children: _jsx(CategoryFilters, { table: pendingTable, variant: "public" }) }));
|
|
34
31
|
}
|
|
35
32
|
function getNumericParam(table, key) {
|
|
36
33
|
return table.get(key) ? Number(table.get(key)) : undefined;
|
|
@@ -22,8 +22,6 @@ export interface PreflightResponse {
|
|
|
22
22
|
available: any[];
|
|
23
23
|
unavailable: UnavailableItem[];
|
|
24
24
|
}
|
|
25
|
-
/** @deprecated Use `CreatePaymentOrderResponse` instead. */
|
|
26
|
-
export type CreateRazorpayOrderResponse = CreatePaymentOrderResponse;
|
|
27
25
|
export interface CreatePaymentOrderResponse {
|
|
28
26
|
gatewayOrderId: string;
|
|
29
27
|
amount: number;
|
|
@@ -2,7 +2,7 @@ export * from "./types";
|
|
|
2
2
|
export * from "./schemas";
|
|
3
3
|
export * from "./hooks/useCheckout";
|
|
4
4
|
export { useCheckout as useCheckoutApi } from "./hooks/useCheckoutApi";
|
|
5
|
-
export type { AddressListResponse, CartApiResponse, PlaceOrderResponse, CreatePaymentOrderResponse,
|
|
5
|
+
export type { AddressListResponse, CartApiResponse, PlaceOrderResponse, CreatePaymentOrderResponse, UnavailableItem, PreflightResponse, } from "./hooks/useCheckoutApi";
|
|
6
6
|
export * from "./hooks/usePaymentCheckout";
|
|
7
7
|
export * from "./components";
|
|
8
8
|
export { manifest } from "./manifest";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface AdminEventsViewProps extends
|
|
1
|
+
import type { ListingLayoutProps } from "../../../ui";
|
|
2
|
+
export interface AdminEventsViewProps extends ListingLayoutProps {
|
|
3
3
|
getRowHref?: (row: {
|
|
4
4
|
id: string;
|
|
5
5
|
}) => string;
|
|
6
6
|
}
|
|
7
|
-
export declare function AdminEventsView({ children,
|
|
7
|
+
export declare function AdminEventsView({ children, ...props }: AdminEventsViewProps): import("react/jsx-runtime").JSX.Element;
|