@mohasinac/appkit 2.8.9 → 3.0.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/classified/ClassifiedDetailView.js +17 -4
- package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +4 -2
- package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.js +2 -2
- package/dist/_internal/client/features/layout/SidebarCollapseToggle.js +1 -3
- package/dist/_internal/client/features/live/LiveItemDetailView.js +6 -6
- package/dist/_internal/client/features/maintenance/index.d.ts +7 -0
- package/dist/_internal/client/features/maintenance/index.js +4 -0
- package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.d.ts +2 -0
- package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +51 -0
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.d.ts +7 -0
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +14 -0
- package/dist/_internal/client/features/maintenance/views/ServerErrorDetailView.d.ts +8 -0
- package/dist/_internal/client/features/maintenance/views/ServerErrorDetailView.js +9 -0
- package/dist/_internal/client/features/maintenance/views/ServerErrorsListView.d.ts +10 -0
- package/dist/_internal/client/features/maintenance/views/ServerErrorsListView.js +44 -0
- package/dist/_internal/client/scaffolds/AppShell.js +2 -2
- package/dist/_internal/client/scaffolds/DashboardScaffold.js +2 -2
- package/dist/_internal/client/theme/ThemeProvider.d.ts +39 -0
- package/dist/_internal/client/theme/ThemeProvider.js +115 -0
- package/dist/_internal/client/theme/__tests__/ThemeProvider.test.d.ts +1 -0
- package/dist/_internal/client/theme/__tests__/ThemeProvider.test.js +109 -0
- package/dist/_internal/client/theme/buildRegistry.d.ts +29 -0
- package/dist/_internal/client/theme/buildRegistry.js +37 -0
- package/dist/_internal/client/theme/index.d.ts +4 -0
- package/dist/_internal/client/theme/index.js +2 -0
- package/dist/_internal/server/features/auctions/actions.d.ts +2 -1
- package/dist/_internal/server/features/auctions/actions.js +39 -35
- package/dist/_internal/server/features/auctions/og.js +1 -0
- package/dist/_internal/server/features/auctions/service.js +4 -0
- package/dist/_internal/server/features/auth/capabilities.js +1 -0
- package/dist/_internal/server/features/blog/actions.d.ts +6 -5
- package/dist/_internal/server/features/blog/actions.js +47 -34
- package/dist/_internal/server/features/brands/actions.d.ts +5 -4
- package/dist/_internal/server/features/brands/actions.js +63 -52
- package/dist/_internal/server/features/cart/actions.d.ts +5 -12
- package/dist/_internal/server/features/cart/actions.js +33 -21
- package/dist/_internal/server/features/checkout/actions.d.ts +0 -8
- package/dist/_internal/server/features/checkout/actions.js +41 -19
- package/dist/_internal/server/features/classified/actions.d.ts +2 -1
- package/dist/_internal/server/features/classified/actions.js +20 -17
- package/dist/_internal/server/features/digital-code/actions.d.ts +2 -1
- package/dist/_internal/server/features/digital-code/actions.js +20 -17
- package/dist/_internal/server/features/events/actions.d.ts +5 -4
- package/dist/_internal/server/features/events/actions.js +55 -43
- package/dist/_internal/server/features/events/og.js +1 -0
- package/dist/_internal/server/features/events/service.d.ts +3 -2
- package/dist/_internal/server/features/events/service.js +2 -0
- package/dist/_internal/server/features/grouped/data.js +2 -0
- package/dist/_internal/server/features/history/actions.d.ts +3 -2
- package/dist/_internal/server/features/history/actions.js +12 -7
- package/dist/_internal/server/features/live/actions.d.ts +2 -1
- package/dist/_internal/server/features/live/actions.js +20 -17
- package/dist/_internal/server/features/maintenance/analyze.d.ts +67 -0
- package/dist/_internal/server/features/maintenance/analyze.js +178 -0
- package/dist/_internal/server/features/maintenance/data.d.ts +35 -0
- package/dist/_internal/server/features/maintenance/data.js +86 -0
- package/dist/_internal/server/features/media/contextGuards.d.ts +2 -1
- package/dist/_internal/server/features/orders/actions.d.ts +5 -4
- package/dist/_internal/server/features/orders/actions.js +47 -33
- package/dist/_internal/server/features/payouts/actions.d.ts +2 -1
- package/dist/_internal/server/features/payouts/actions.js +22 -19
- package/dist/_internal/server/features/pre-orders/actions.d.ts +2 -7
- package/dist/_internal/server/features/pre-orders/actions.js +21 -17
- package/dist/_internal/server/features/pre-orders/og.js +1 -0
- package/dist/_internal/server/features/pre-orders/service.js +1 -0
- package/dist/_internal/server/features/products/actions.d.ts +8 -7
- package/dist/_internal/server/features/products/actions.js +80 -58
- package/dist/_internal/server/features/products/service.js +1 -0
- package/dist/_internal/server/features/promotions/actions.d.ts +5 -9
- package/dist/_internal/server/features/promotions/actions.js +37 -25
- package/dist/_internal/server/features/raffle/actions.d.ts +3 -2
- package/dist/_internal/server/features/raffle/actions.js +4 -3
- package/dist/_internal/server/features/refunds/actions.d.ts +3 -2
- package/dist/_internal/server/features/refunds/actions.js +109 -91
- package/dist/_internal/server/features/reviews/actions.d.ts +5 -4
- package/dist/_internal/server/features/reviews/actions.js +63 -50
- package/dist/_internal/server/features/scams/og.d.ts +2 -1
- package/dist/_internal/server/features/search/actions.d.ts +2 -10
- package/dist/_internal/server/features/search/actions.js +13 -10
- package/dist/_internal/server/features/seo/sitemap.js +8 -0
- package/dist/_internal/server/features/wishlist/actions.d.ts +4 -3
- package/dist/_internal/server/features/wishlist/actions.js +36 -27
- package/dist/_internal/server/functions/bind-all.d.ts +25 -0
- package/dist/_internal/server/functions/bind-all.js +85 -0
- package/dist/_internal/server/functions/define.d.ts +19 -0
- package/dist/_internal/server/functions/define.js +18 -0
- package/dist/_internal/server/functions/firestore.d.ts +30 -0
- package/dist/_internal/server/functions/firestore.js +117 -0
- package/dist/_internal/server/functions/https.d.ts +24 -0
- package/dist/_internal/server/functions/https.js +153 -0
- package/dist/_internal/server/functions/index.d.ts +11 -0
- package/dist/_internal/server/functions/index.js +10 -0
- package/dist/_internal/server/functions/manifest.d.ts +15 -0
- package/dist/_internal/server/functions/manifest.js +22 -0
- package/dist/_internal/server/functions/merge.d.ts +18 -0
- package/dist/_internal/server/functions/merge.js +37 -0
- package/dist/_internal/server/functions/scheduled.d.ts +22 -0
- package/dist/_internal/server/functions/scheduled.js +176 -0
- package/dist/_internal/server/functions/types.d.ts +96 -0
- package/dist/_internal/server/functions/types.js +17 -0
- package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +3 -0
- package/dist/_internal/server/jobs/core/countersReconcile.js +3 -1
- package/dist/_internal/server/jobs/core/listingProcessor.d.ts +2 -1
- package/dist/_internal/server/jobs/core/mediaTmpCleanup.d.ts +0 -12
- package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +2 -0
- package/dist/_internal/server/jobs/core/offerExpiry.js +2 -0
- package/dist/_internal/server/jobs/core/onBidPlaced.js +2 -0
- package/dist/_internal/server/jobs/core/onCategoryWrite.d.ts +2 -7
- package/dist/_internal/server/jobs/core/onCategoryWrite.js +2 -0
- package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -0
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +2 -0
- package/dist/_internal/server/jobs/core/onProductStockChange.js +2 -12
- package/dist/_internal/server/jobs/core/onProductWrite.d.ts +2 -5
- package/dist/_internal/server/jobs/core/onProductWrite.js +2 -0
- package/dist/_internal/server/jobs/core/onReviewWrite.d.ts +3 -2
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +5 -2
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +2 -0
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +2 -0
- package/dist/_internal/server/jobs/core/onStoreWrite.d.ts +2 -1
- package/dist/_internal/server/jobs/core/onSupportTicketCreate.js +2 -0
- package/dist/_internal/server/jobs/core/onSupportTicketUpdate.js +3 -1
- package/dist/_internal/server/jobs/core/onUserBanChange.js +2 -0
- package/dist/_internal/server/jobs/core/payoutBatch.d.ts +0 -6
- package/dist/_internal/server/jobs/core/payoutBatch.js +2 -0
- package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +3 -1
- package/dist/_internal/server/jobs/core/prizeRevealOpen.js +3 -1
- package/dist/_internal/server/jobs/core/prizeRevealReminder.js +3 -1
- package/dist/_internal/server/jobs/core/wrapJobHandler.d.ts +25 -0
- package/dist/_internal/server/jobs/core/wrapJobHandler.js +79 -0
- package/dist/_internal/server/jobs/handlers/onProductStockChange.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onReviewWrite.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onScamReportCreate.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onScamReportUpdate.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onSupportTicketCreate.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onSupportTicketUpdate.d.ts +2 -1
- package/dist/_internal/server/jobs/handlers/onUserBanChange.d.ts +2 -1
- package/dist/_internal/server/jobs/runtime/adapters/firebase.js +2 -0
- package/dist/_internal/server/jobs/runtime/types.d.ts +4 -3
- package/dist/_internal/server/providers/index.d.ts +11 -0
- package/dist/_internal/server/providers/index.js +11 -0
- package/dist/_internal/server/providers/payment/razorpay-mock.d.ts +51 -0
- package/dist/_internal/server/providers/payment/razorpay-mock.js +116 -0
- package/dist/_internal/server/providers/resolve.d.ts +39 -0
- package/dist/_internal/server/providers/resolve.js +37 -0
- package/dist/_internal/server/providers/shipping/shiprocket-mock.d.ts +29 -0
- package/dist/_internal/server/providers/shipping/shiprocket-mock.js +152 -0
- package/dist/_internal/shared/checkout/rules/types.d.ts +3 -2
- package/dist/_internal/shared/config/schema.d.ts +7 -6
- package/dist/_internal/shared/features/layout/config.js +2 -2
- package/dist/_internal/shared/features/orders/schema.d.ts +2 -2
- package/dist/_internal/shared/features/promotions/schema.d.ts +6 -6
- package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
- package/dist/_internal/shared/listing-types/action-tracker.d.ts +3 -2
- package/dist/_internal/shared/listing-types/action-tracker.js +0 -18
- package/dist/_internal/shared/listing-types/cart-shipping.d.ts +1 -1
- package/dist/_internal/shared/listing-types/cart-shipping.js +1 -1
- package/dist/_internal/shared/serialization/index.js +4 -0
- package/dist/_internal/shared/styles/grid.d.ts +12 -0
- package/dist/_internal/shared/styles/grid.js +12 -0
- package/dist/_internal/shared/styles/page.d.ts +20 -0
- package/dist/_internal/shared/styles/page.js +20 -0
- package/dist/_internal/shared/styles/skeleton.d.ts +16 -0
- package/dist/_internal/shared/styles/skeleton.js +18 -0
- package/dist/_internal/shared/styles/themed.d.ts +26 -0
- package/dist/_internal/shared/styles/themed.js +29 -0
- package/dist/_internal/shared/tokens/index.d.ts +1 -1
- package/dist/_internal/shared/tokens/index.js +1 -1
- package/dist/_internal/shared/types/__tests__/action-result.test.d.ts +1 -0
- package/dist/_internal/shared/types/__tests__/action-result.test.js +65 -0
- package/dist/_internal/shared/types/action-result.d.ts +49 -0
- package/dist/_internal/shared/types/action-result.js +47 -0
- package/dist/cli/index.d.ts +2 -1
- package/dist/client/api/ApiError.d.ts +18 -0
- package/dist/client/api/ApiError.js +23 -0
- package/dist/client/api/surface-error.d.ts +30 -0
- package/dist/client/api/surface-error.js +39 -0
- package/dist/client/api/useApiMutation.d.ts +31 -0
- package/dist/client/api/useApiMutation.js +52 -0
- package/dist/client/api/useApiQuery.d.ts +20 -0
- package/dist/client/api/useApiQuery.js +56 -0
- package/dist/client/observability/installClientErrorReporter.d.ts +10 -0
- package/dist/client/observability/installClientErrorReporter.js +48 -0
- package/dist/client/observability/reportClientError.d.ts +16 -0
- package/dist/client/observability/reportClientError.js +70 -0
- package/dist/client.d.ts +31 -3
- package/dist/client.js +37 -5
- package/dist/configs/eslint.js +50 -8
- package/dist/configs/next.d.ts +4 -3
- package/dist/configs/next.js +2 -2
- package/dist/configs/tailwind.d.ts +1 -1
- package/dist/configs/tailwind.js +2 -1
- package/dist/constants/api-endpoint-resolver.d.ts +3 -3
- package/dist/constants/api-endpoint-resolver.js +3 -3
- package/dist/contracts/auth.d.ts +3 -2
- package/dist/contracts/extend.d.ts +26 -26
- package/dist/contracts/extend.js +6 -6
- package/dist/contracts/feature.d.ts +3 -3
- package/dist/contracts/field-ops.js +2 -0
- package/dist/contracts/form.d.ts +12 -12
- package/dist/contracts/form.js +12 -12
- package/dist/contracts/payment.d.ts +3 -2
- package/dist/contracts/repository.d.ts +13 -5
- package/dist/contracts/search.d.ts +1 -1
- package/dist/core/EventBus.d.ts +0 -6
- package/dist/core/EventBus.js +4 -0
- package/dist/core/Logger.js +6 -0
- package/dist/core/Queue.js +2 -0
- package/dist/core/StorageManager.d.ts +0 -7
- package/dist/core/StorageManager.js +5 -0
- package/dist/core/hooks/useSiteSettings.d.ts +1 -1
- package/dist/core/mutation-events.d.ts +1 -1
- package/dist/core/mutation-events.js +2 -1
- package/dist/core/newsletter.repository.js +6 -2
- package/dist/core/server-action.d.ts +0 -36
- package/dist/core/server-action.js +16 -11
- package/dist/core/unit-of-work.js +3 -0
- package/dist/errors/__tests__/error-mapping.test.d.ts +1 -0
- package/dist/errors/__tests__/error-mapping.test.js +122 -0
- package/dist/errors/__tests__/safe-read.test.d.ts +1 -0
- package/dist/errors/__tests__/safe-read.test.js +39 -0
- package/dist/errors/api-error.js +1 -0
- package/dist/errors/authentication-error.js +1 -0
- package/dist/errors/authorization-error.js +1 -0
- package/dist/errors/base-error.js +3 -1
- package/dist/errors/database-error.js +1 -0
- package/dist/errors/error-display-map.d.ts +14 -0
- package/dist/errors/error-display-map.js +233 -0
- package/dist/errors/error-handler.d.ts +2 -1
- package/dist/errors/error-handler.js +5 -1
- package/dist/errors/error-mapping.d.ts +49 -0
- package/dist/errors/error-mapping.js +213 -0
- package/dist/errors/index.d.ts +6 -0
- package/dist/errors/index.js +11 -0
- package/dist/errors/normalize.d.ts +81 -0
- package/dist/errors/normalize.js +206 -0
- package/dist/errors/not-found-error.js +1 -0
- package/dist/errors/razorpay-unreachable.d.ts +4 -0
- package/dist/errors/razorpay-unreachable.js +7 -0
- package/dist/errors/safe-read.d.ts +37 -0
- package/dist/errors/safe-read.js +39 -0
- package/dist/errors/validation-error.js +1 -0
- package/dist/features/_guide-cls.js +1 -1
- package/dist/features/about/components/AboutView.d.ts +2 -3
- package/dist/features/about/components/AboutView.js +3 -3
- package/dist/features/about/components/FAQPageView.d.ts +1 -2
- package/dist/features/about/components/FAQPageView.js +9 -10
- package/dist/features/about/components/FeesView.d.ts +1 -2
- package/dist/features/about/components/FeesView.js +12 -9
- package/dist/features/about/components/HelpPageView.d.ts +1 -2
- package/dist/features/about/components/HelpPageView.js +15 -12
- package/dist/features/about/components/HowAuctionsWorkView.d.ts +1 -2
- package/dist/features/about/components/HowAuctionsWorkView.js +11 -12
- package/dist/features/about/components/HowCheckoutWorksView.d.ts +1 -2
- package/dist/features/about/components/HowCheckoutWorksView.js +11 -12
- package/dist/features/about/components/HowOffersWorkView.d.ts +1 -2
- package/dist/features/about/components/HowOffersWorkView.js +11 -12
- package/dist/features/about/components/HowOrdersWorkView.d.ts +1 -2
- package/dist/features/about/components/HowOrdersWorkView.js +11 -12
- package/dist/features/about/components/HowPayoutsWorkView.d.ts +1 -2
- package/dist/features/about/components/HowPayoutsWorkView.js +11 -12
- package/dist/features/about/components/HowPreOrdersWorkView.d.ts +1 -2
- package/dist/features/about/components/HowPreOrdersWorkView.js +11 -12
- package/dist/features/about/components/HowReviewsWorkView.d.ts +1 -2
- package/dist/features/about/components/HowReviewsWorkView.js +11 -12
- package/dist/features/about/components/PolicyPageView.d.ts +1 -2
- package/dist/features/about/components/PolicyPageView.js +6 -6
- package/dist/features/about/components/PublicProfileView.d.ts +1 -2
- package/dist/features/about/components/PublicProfileView.js +31 -24
- package/dist/features/about/components/SecurityPrivacyView.d.ts +1 -2
- package/dist/features/about/components/SecurityPrivacyView.js +9 -10
- package/dist/features/about/components/ShippingPolicyView.d.ts +1 -2
- package/dist/features/about/components/ShippingPolicyView.js +4 -5
- package/dist/features/about/components/TrackOrderView.d.ts +1 -2
- package/dist/features/about/components/TrackOrderView.js +14 -6
- package/dist/features/about/components/UnauthorizedView.d.ts +1 -2
- package/dist/features/about/components/UnauthorizedView.js +6 -7
- package/dist/features/account/api/[userId]/addresses/route.js +3 -0
- package/dist/features/account/api/[userId]/route.js +3 -0
- package/dist/features/account/components/AddressBook.d.ts +2 -1
- package/dist/features/account/components/AddressBook.js +5 -4
- package/dist/features/account/components/AddressForm.js +25 -30
- package/dist/features/account/components/AddressesIndexListing.js +4 -3
- package/dist/features/account/components/BecomeSellerView.js +1 -1
- package/dist/features/account/components/BuyerAccountGuideView.js +9 -9
- package/dist/features/account/components/BuyerAuctionsGuideView.js +7 -7
- package/dist/features/account/components/BuyerOrdersGuideView.js +8 -8
- package/dist/features/account/components/BuyerShoppingGuideView.js +8 -8
- package/dist/features/account/components/ChatList.js +1 -1
- package/dist/features/account/components/ChatWindow.js +2 -3
- package/dist/features/account/components/MessagesView.js +4 -3
- package/dist/features/account/components/NotificationBell.js +18 -9
- package/dist/features/account/components/NotificationPreferencesPanel.js +9 -7
- package/dist/features/account/components/UserOffersPanel.js +8 -4
- package/dist/features/account/components/UserSidebar.js +7 -7
- package/dist/features/account/components/UserSupportView.js +12 -11
- package/dist/features/account/hooks/useAccount.d.ts +2 -2
- package/dist/features/account/hooks/useAddressSelector.d.ts +1 -1
- package/dist/features/account/hooks/useAddresses.d.ts +2 -2
- package/dist/features/account/hooks/useNotifications.d.ts +3 -2
- package/dist/features/account/hooks/useProfile.d.ts +4 -3
- package/dist/features/account/hooks/useProfile.js +3 -2
- package/dist/features/account/hooks/usePublicProfile.d.ts +2 -2
- package/dist/features/addresses/repository/addresses.repository.d.ts +0 -10
- package/dist/features/addresses/repository/addresses.repository.js +18 -4
- package/dist/features/addresses/schemas/index.d.ts +75 -0
- package/dist/features/addresses/schemas/index.js +22 -0
- package/dist/features/admin/actions/admin-actions.d.ts +0 -6
- package/dist/features/admin/actions/admin-actions.js +2 -0
- package/dist/features/admin/actions/notification-actions.js +4 -0
- package/dist/features/admin/actions/site-settings-actions.d.ts +2 -1
- package/dist/features/admin/components/AdminAdEditorView.js +8 -7
- package/dist/features/admin/components/AdminAddressEditorView.js +12 -10
- package/dist/features/admin/components/AdminAdsView.js +13 -12
- package/dist/features/admin/components/AdminAllEventEntriesView.js +3 -2
- package/dist/features/admin/components/AdminAnalyticsGuideView.js +7 -7
- package/dist/features/admin/components/AdminAnalyticsView.js +2 -2
- package/dist/features/admin/components/AdminBidsView.js +3 -2
- package/dist/features/admin/components/AdminBlogEditorView.js +12 -10
- package/dist/features/admin/components/AdminBrandEditorView.js +29 -18
- package/dist/features/admin/components/AdminBrandsView.js +6 -6
- package/dist/features/admin/components/AdminBundleEditorView.js +36 -33
- package/dist/features/admin/components/AdminBundlesView.js +7 -6
- package/dist/features/admin/components/AdminCarouselEditorView.js +35 -24
- package/dist/features/admin/components/AdminCarouselView.js +13 -9
- package/dist/features/admin/components/AdminCartsView.js +1 -0
- package/dist/features/admin/components/AdminCatalogGuideView.js +8 -8
- package/dist/features/admin/components/AdminCategoriesView.js +7 -7
- package/dist/features/admin/components/AdminCategoryEditorView.js +25 -18
- package/dist/features/admin/components/AdminContactEditorView.js +5 -4
- package/dist/features/admin/components/AdminContactView.js +4 -3
- package/dist/features/admin/components/AdminContentGuideView.js +10 -10
- package/dist/features/admin/components/AdminCouponEditorView.js +35 -24
- package/dist/features/admin/components/AdminCouponsView.js +2 -2
- package/dist/features/admin/components/AdminEmployeeEditorView.js +9 -8
- package/dist/features/admin/components/AdminFaqEditorView.js +29 -19
- package/dist/features/admin/components/AdminFaqsView.js +6 -6
- package/dist/features/admin/components/AdminFeatureEditorView.js +9 -7
- package/dist/features/admin/components/AdminFeatureFlagsView.js +7 -6
- package/dist/features/admin/components/AdminFilterBar.d.ts +8 -8
- package/dist/features/admin/components/AdminFilterBar.js +1 -1
- package/dist/features/admin/components/AdminGuideHubView.js +6 -6
- package/dist/features/admin/components/AdminMediaView.js +12 -6
- package/dist/features/admin/components/AdminNavEditorView.js +3 -3
- package/dist/features/admin/components/AdminNavigationView.js +10 -9
- package/dist/features/admin/components/AdminNewsletterView.js +3 -2
- package/dist/features/admin/components/AdminNotificationsView.js +7 -6
- package/dist/features/admin/components/AdminOrderEditorView.js +5 -4
- package/dist/features/admin/components/AdminOrdersGuideView.js +11 -11
- package/dist/features/admin/components/AdminPageHeader.d.ts +9 -9
- package/dist/features/admin/components/AdminPageHeader.js +3 -3
- package/dist/features/admin/components/AdminPayoutsView.js +6 -4
- package/dist/features/admin/components/AdminPrizeDrawsView.js +4 -4
- package/dist/features/admin/components/AdminProductEditorView.js +9 -7
- package/dist/features/admin/components/AdminProductsView.js +10 -6
- package/dist/features/admin/components/AdminReturnRequestsView.js +4 -3
- package/dist/features/admin/components/AdminReviewsView.js +7 -6
- package/dist/features/admin/components/AdminScammerEditorView.js +6 -5
- package/dist/features/admin/components/AdminScammersView.js +4 -4
- package/dist/features/admin/components/AdminSectionsView.js +45 -44
- package/dist/features/admin/components/AdminSessionsManager.js +2 -2
- package/dist/features/admin/components/AdminSessionsView.js +6 -5
- package/dist/features/admin/components/AdminSidebar.js +9 -9
- package/dist/features/admin/components/AdminSiteConfigGuideView.js +2 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +32 -4
- package/dist/features/admin/components/AdminSiteView.js +4 -3
- package/dist/features/admin/components/AdminStoreEditorView.js +9 -8
- package/dist/features/admin/components/AdminStoresGuideView.js +9 -9
- package/dist/features/admin/components/AdminStoresView.js +4 -3
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +21 -15
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +21 -16
- package/dist/features/admin/components/AdminSupportTicketsView.js +5 -5
- package/dist/features/admin/components/AdminTeamGuideView.js +7 -7
- package/dist/features/admin/components/AdminTeamView.js +1 -1
- package/dist/features/admin/components/AdminTrustGuideView.js +10 -10
- package/dist/features/admin/components/AdminUserEditorView.js +13 -12
- package/dist/features/admin/components/AdminUsersGuideView.js +9 -9
- package/dist/features/admin/components/AdminUsersView.js +4 -3
- package/dist/features/admin/components/AdminViewCards.js +7 -7
- package/dist/features/admin/components/BrandQuickCreateForm.js +5 -4
- package/dist/features/admin/components/CategoryQuickCreateForm.js +5 -4
- package/dist/features/admin/components/DashboardStats.js +9 -7
- package/dist/features/admin/components/DataListingView.js +8 -4
- package/dist/features/admin/components/DataTable.js +9 -7
- package/dist/features/admin/components/DrawerFormFooter.js +2 -2
- package/dist/features/admin/components/QuickActionsPanel.js +1 -1
- package/dist/features/admin/components/QuickEditMenu.d.ts +6 -2
- package/dist/features/admin/components/QuickEditMenu.js +2 -2
- package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +3 -3
- package/dist/features/admin/components/analytics/AdminStatCard.js +8 -6
- package/dist/features/admin/components/analytics/AdminTopProductsTable.js +4 -2
- package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +51 -50
- package/dist/features/admin/components/sections/adminSectionsBuildParse.js +5 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +2 -1
- package/dist/features/admin/hooks/useAdmin.d.ts +1 -1
- package/dist/features/admin/hooks/useAdminListingData.d.ts +8 -2
- package/dist/features/admin/hooks/useAdminListingData.js +5 -0
- package/dist/features/admin/hooks/useAdminSectionsListing.d.ts +1 -1
- package/dist/features/admin/hooks/useChat.d.ts +3 -3
- package/dist/features/admin/hooks/useChat.js +8 -3
- package/dist/features/admin/repository/chat.repository.d.ts +0 -20
- package/dist/features/admin/repository/chat.repository.js +7 -0
- package/dist/features/admin/repository/notification.repository.js +6 -7
- package/dist/features/admin/repository/site-settings.repository.js +3 -0
- package/dist/features/admin/schemas/firestore.d.ts +53 -11
- package/dist/features/admin/schemas/firestore.js +21 -0
- package/dist/features/admin/types/index.d.ts +1 -1
- package/dist/features/auctions/actions/bid-actions.d.ts +0 -6
- package/dist/features/auctions/actions/bid-actions.js +2 -0
- package/dist/features/auctions/api/route.js +2 -0
- package/dist/features/auctions/components/AuctionBidsTable.js +8 -6
- package/dist/features/auctions/components/AuctionDetailPageView.js +13 -8
- package/dist/features/auctions/components/AuctionsListView.js +1 -1
- package/dist/features/auctions/components/CollapsibleBidHistory.js +1 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +21 -10
- package/dist/features/auctions/components/MarketplaceAuctionGrid.js +3 -3
- package/dist/features/auctions/components/PlaceBidFormClient.js +65 -45
- package/dist/features/auctions/hooks/useAuctions.d.ts +8 -8
- package/dist/features/auctions/hooks/usePlaceBid.d.ts +2 -1
- package/dist/features/auctions/repository/bid.repository.js +11 -0
- package/dist/features/auctions/schemas/bid-input.d.ts +17 -0
- package/dist/features/auctions/schemas/bid-input.js +16 -0
- package/dist/features/auctions/schemas/index.d.ts +2 -2
- package/dist/features/auth/actions/profile-actions.d.ts +2 -0
- package/dist/features/auth/actions/profile-actions.js +25 -0
- package/dist/features/auth/actions/realtime-token-actions.js +3 -0
- package/dist/features/auth/components/AuthStatusPanel.js +4 -4
- package/dist/features/auth/components/ForgotPasswordView.js +18 -11
- package/dist/features/auth/components/Guards.d.ts +11 -11
- package/dist/features/auth/components/Guards.js +3 -3
- package/dist/features/auth/components/LoginForm.d.ts +1 -6
- package/dist/features/auth/components/LoginForm.js +19 -11
- package/dist/features/auth/components/OAuthLoadingView.js +2 -2
- package/dist/features/auth/components/RegisterForm.js +28 -20
- package/dist/features/auth/components/ResetPasswordView.js +25 -18
- package/dist/features/auth/components/SocialAuthButtons.js +2 -2
- package/dist/features/auth/components/VerifyEmailView.js +8 -8
- package/dist/features/auth/consent-otp.d.ts +3 -2
- package/dist/features/auth/consent-otp.js +8 -8
- package/dist/features/auth/hooks/useAuth.d.ts +27 -26
- package/dist/features/auth/hooks/useAuth.js +3 -0
- package/dist/features/auth/permissions/constants.d.ts +2 -2
- package/dist/features/auth/permissions/constants.js +17 -0
- package/dist/features/auth/repository/session.repository.js +9 -0
- package/dist/features/auth/repository/token.repository.js +9 -0
- package/dist/features/auth/repository/user.repository.js +14 -6
- package/dist/features/auth/role-predicates.d.ts +20 -16
- package/dist/features/auth/role-predicates.js +1 -8
- package/dist/features/auth/schemas/index.d.ts +6 -6
- package/dist/features/auth/server/checkSoftBan.js +2 -1
- package/dist/features/before-after/api/[id]/route.js +4 -0
- package/dist/features/before-after/api/route.js +3 -0
- package/dist/features/before-after/components/BeforeAfterGallery.js +2 -2
- package/dist/features/before-after/components/BeforeAfterSlider.js +3 -3
- package/dist/features/blog/actions/blog-actions.d.ts +7 -7
- package/dist/features/blog/api/[slug]/route.d.ts +1 -1
- package/dist/features/blog/api/[slug]/route.js +3 -1
- package/dist/features/blog/api/route.js +2 -0
- package/dist/features/blog/columns/index.d.ts +2 -2
- package/dist/features/blog/columns/index.js +2 -2
- package/dist/features/blog/components/BlogFeaturedCard.js +9 -8
- package/dist/features/blog/components/BlogIndexListing.js +7 -6
- package/dist/features/blog/components/BlogIndexPageView.js +1 -1
- package/dist/features/blog/components/BlogListView.js +10 -11
- package/dist/features/blog/components/BlogPostForm.js +3 -3
- package/dist/features/blog/components/BlogPostView.js +10 -10
- package/dist/features/blog/repository/blog.repository.js +6 -0
- package/dist/features/blog/schemas/index.d.ts +210 -3
- package/dist/features/blog/schemas/index.js +27 -0
- package/dist/features/cart/api/[id]/route.js +3 -0
- package/dist/features/cart/api/route.js +3 -0
- package/dist/features/cart/components/CartDrawer.js +9 -8
- package/dist/features/cart/components/CartSummary.js +2 -2
- package/dist/features/cart/components/CartView.d.ts +2 -1
- package/dist/features/cart/components/CartView.js +2 -2
- package/dist/features/cart/components/CheckoutAddressStep.js +2 -2
- package/dist/features/cart/components/CheckoutView.js +2 -2
- package/dist/features/cart/components/ShippingPicker.js +1 -1
- package/dist/features/cart/hooks/useAddToCart.d.ts +2 -1
- package/dist/features/cart/hooks/useAddToCart.js +2 -0
- package/dist/features/cart/hooks/useCart.d.ts +1 -1
- package/dist/features/cart/hooks/useCartQuery.d.ts +3 -2
- package/dist/features/cart/hooks/useCheckoutReadQueries.d.ts +5 -4
- package/dist/features/cart/hooks/useOrder.d.ts +2 -2
- package/dist/features/cart/repository/cart.repository.js +3 -0
- package/dist/features/categories/api/[id]/route.d.ts +1 -1
- package/dist/features/categories/api/[id]/route.js +3 -1
- package/dist/features/categories/api/route.js +3 -0
- package/dist/features/categories/components/BrandDetailPageView.js +15 -4
- package/dist/features/categories/components/BrandDetailTabs.js +1 -1
- package/dist/features/categories/components/BreadcrumbTrail.d.ts +3 -3
- package/dist/features/categories/components/BreadcrumbTrail.js +3 -3
- package/dist/features/categories/components/BundleBuyNowCta.js +2 -0
- package/dist/features/categories/components/BundleCollage.js +4 -4
- package/dist/features/categories/components/BundleDetailView.d.ts +5 -6
- package/dist/features/categories/components/BundleDetailView.js +6 -3
- package/dist/features/categories/components/BundleDynamicRuleEditor.js +2 -2
- package/dist/features/categories/components/BundleItemsPicker.js +10 -6
- package/dist/features/categories/components/BundlesListView.js +1 -1
- package/dist/features/categories/components/CategoriesIndexListing.js +8 -7
- package/dist/features/categories/components/CategoriesIndexPageView.js +2 -1
- package/dist/features/categories/components/CategoryBundlesListing.js +6 -4
- package/dist/features/categories/components/CategoryDetailPageView.js +14 -3
- package/dist/features/categories/components/CategoryDetailTabs.js +1 -1
- package/dist/features/categories/components/CategoryForm.js +2 -2
- package/dist/features/categories/components/CategoryGrid.js +6 -7
- package/dist/features/categories/components/CategoryProductsListing.js +3 -5
- package/dist/features/categories/components/CategoryProductsView.js +2 -2
- package/dist/features/categories/components/CategorySelectorCreate.js +3 -2
- package/dist/features/categories/components/CategorySortSelect.js +1 -1
- package/dist/features/categories/components/CategoryStoresListing.js +3 -3
- package/dist/features/categories/components/CategoryTableColumns.js +6 -6
- package/dist/features/categories/components/CategoryTree.js +5 -5
- package/dist/features/categories/components/ConcernCard.js +2 -3
- package/dist/features/categories/hooks/useCategories.d.ts +3 -3
- package/dist/features/categories/hooks/useCategorySelector.d.ts +7 -6
- package/dist/features/categories/hooks/useCategoryTree.d.ts +1 -1
- package/dist/features/categories/hooks/useCategoryTree.js +1 -1
- package/dist/features/categories/repository/categories.repository.d.ts +2 -1
- package/dist/features/categories/repository/categories.repository.js +14 -0
- package/dist/features/categories/schemas/index.d.ts +555 -0
- package/dist/features/categories/schemas/index.js +96 -0
- package/dist/features/checkout/components/CheckoutStepper.js +2 -7
- package/dist/features/checkout/hooks/useCheckoutApi.d.ts +2 -2
- package/dist/features/checkout/hooks/usePaymentCheckout.js +6 -0
- package/dist/features/classified/components/ClassifiedFilters.js +1 -1
- package/dist/features/classified/components/ClassifiedIndexListing.js +2 -2
- package/dist/features/classified/components/ClassifiedListView.js +1 -1
- package/dist/features/collections/api/[slug]/route.js +4 -0
- package/dist/features/collections/api/route.js +3 -0
- package/dist/features/collections/components/CollectionCard.js +6 -4
- package/dist/features/collections/hooks/useCollections.d.ts +2 -2
- package/dist/features/consultation/api/[id]/route.js +4 -0
- package/dist/features/consultation/api/route.js +3 -0
- package/dist/features/consultation/components/ConsultationForm.js +7 -8
- package/dist/features/consultation/schemas/index.d.ts +2 -2
- package/dist/features/contact/components/ContactForm.js +5 -5
- package/dist/features/contact/components/ContactInfoSidebar.js +2 -2
- package/dist/features/contact/components/ContactPageView.js +3 -9
- package/dist/features/contact/email.d.ts +9 -8
- package/dist/features/contact/email.js +36 -196
- package/dist/features/copilot/components/AdminCopilotView.js +9 -12
- package/dist/features/copilot/hooks/useCopilotChat.d.ts +1 -1
- package/dist/features/copilot/hooks/useCopilotChat.js +2 -2
- package/dist/features/copilot/hooks/useCopilotFeedback.d.ts +1 -1
- package/dist/features/copilot/hooks/useCopilotFeedback.js +2 -2
- package/dist/features/corporate/api/[id]/route.js +4 -0
- package/dist/features/corporate/api/route.js +3 -0
- package/dist/features/corporate/components/CorporateInquiryForm.js +8 -15
- package/dist/features/cron/firebase-adapters.d.ts +1 -1
- package/dist/features/cron/firebase-adapters.js +1 -1
- package/dist/features/cron/jobs/auction-expiry.job.d.ts +1 -1
- package/dist/features/cron/registry.d.ts +11 -11
- package/dist/features/cron/registry.js +11 -11
- package/dist/features/cron/types.d.ts +2 -1
- package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -2
- package/dist/features/digital-codes/components/DigitalCodesListView.js +1 -1
- package/dist/features/email/index.d.ts +9 -0
- package/dist/features/email/index.js +8 -0
- package/dist/features/email/primitives.d.ts +90 -0
- package/dist/features/email/primitives.js +122 -0
- package/dist/features/events/actions/event-actions.d.ts +7 -6
- package/dist/features/events/actions/event-actions.js +1 -0
- package/dist/features/events/api/[id]/route.js +3 -0
- package/dist/features/events/api/route.js +2 -0
- package/dist/features/events/components/AdminEventEditorView.js +13 -11
- package/dist/features/events/components/AdminEventEntriesView.js +11 -10
- package/dist/features/events/components/EventBanner.js +3 -3
- package/dist/features/events/components/EventCard.js +9 -5
- package/dist/features/events/components/EventFormDrawer.js +2 -2
- package/dist/features/events/components/EventLeaderboard.js +4 -4
- package/dist/features/events/components/EventOfferCard.js +2 -2
- package/dist/features/events/components/EventParticipateView.js +3 -3
- package/dist/features/events/components/EventPollWidget.js +8 -6
- package/dist/features/events/components/EventRaffleEntryForm.js +6 -2
- package/dist/features/events/components/EventRaffleWinnerView.js +7 -5
- package/dist/features/events/components/EventRafflesSection.js +2 -1
- package/dist/features/events/components/EventSaleBanner.js +2 -2
- package/dist/features/events/components/EventStatusBadge.js +1 -1
- package/dist/features/events/components/EventsIndexListing.js +3 -2
- package/dist/features/events/components/EventsListPageView.js +1 -1
- package/dist/features/events/components/EventsListView.js +6 -6
- package/dist/features/events/components/SpinWheelView.js +15 -13
- package/dist/features/events/hooks/useBulkEvent.d.ts +3 -3
- package/dist/features/events/hooks/useBulkEvent.js +1 -0
- package/dist/features/events/hooks/useEvent.d.ts +3 -3
- package/dist/features/events/hooks/useEvents.d.ts +1 -1
- package/dist/features/events/repository/event-entry.repository.js +7 -0
- package/dist/features/events/repository/events.repository.js +7 -0
- package/dist/features/events/schemas/firestore.d.ts +2 -1
- package/dist/features/events/schemas/index.d.ts +4 -4
- package/dist/features/events/types/index.d.ts +3 -2
- package/dist/features/faq/api/route.js +2 -0
- package/dist/features/faq/components/ContactCTA.js +4 -2
- package/dist/features/faq/components/FAQAccordion.js +5 -3
- package/dist/features/faq/components/FAQCategorySidebar.js +5 -7
- package/dist/features/faq/components/FAQHelpfulButtons.js +7 -4
- package/dist/features/faq/components/FAQPageContent.js +4 -4
- package/dist/features/faq/components/FAQSortDropdown.js +2 -2
- package/dist/features/faq/components/RelatedFAQs.js +6 -2
- package/dist/features/faq/hooks/useFAQs.d.ts +1 -1
- package/dist/features/faq/hooks/useFaqList.d.ts +15 -15
- package/dist/features/faq/schemas/index.d.ts +198 -0
- package/dist/features/faq/schemas/index.js +35 -0
- package/dist/features/filters/AsyncFacetSection.js +8 -6
- package/dist/features/filters/FilterFacetSection.js +22 -12
- package/dist/features/filters/RangeFilter.js +5 -5
- package/dist/features/filters/SwitchFilter.js +2 -2
- package/dist/features/forms/Checkbox.js +6 -4
- package/dist/features/forms/Radio.js +1 -1
- package/dist/features/forms/Slider.js +2 -2
- package/dist/features/forms/Textarea.js +2 -2
- package/dist/features/forms/index.d.ts +0 -2
- package/dist/features/forms/index.js +4 -1
- package/dist/features/grouped/schemas/index.d.ts +83 -0
- package/dist/features/grouped/schemas/index.js +34 -0
- package/dist/features/history/repository/user-history.repository.js +2 -0
- package/dist/features/homepage/actions/carousel-actions.d.ts +3 -2
- package/dist/features/homepage/actions/carousel-actions.js +1 -0
- package/dist/features/homepage/actions/homepage-section-actions.js +5 -3
- package/dist/features/homepage/api/[id]/route.d.ts +1 -1
- package/dist/features/homepage/api/[id]/route.js +3 -1
- package/dist/features/homepage/api/carousel/[id]/route.d.ts +1 -1
- package/dist/features/homepage/api/carousel/[id]/route.js +3 -1
- package/dist/features/homepage/api/carousel/route.js +3 -0
- package/dist/features/homepage/api/route.js +3 -0
- package/dist/features/homepage/api/sections/[id]/route.js +4 -0
- package/dist/features/homepage/api/sections/route.js +3 -0
- package/dist/features/homepage/components/AdSlot.js +3 -2
- package/dist/features/homepage/components/AdvertisementBanner.js +15 -7
- package/dist/features/homepage/components/AnnouncementBar.js +2 -1
- package/dist/features/homepage/components/BeforeAfterCard.js +4 -4
- package/dist/features/homepage/components/BlogArticlesSection.js +2 -2
- package/dist/features/homepage/components/BrandsSection.js +5 -5
- package/dist/features/homepage/components/CTABannerSection.js +2 -2
- package/dist/features/homepage/components/CharacterHotspot.js +12 -12
- package/dist/features/homepage/components/CharacterHotspotForm.d.ts +7 -7
- package/dist/features/homepage/components/CharacterHotspotForm.js +39 -31
- package/dist/features/homepage/components/CollectionCardsSection.js +3 -1
- package/dist/features/homepage/components/CustomCardsSection.js +11 -10
- package/dist/features/homepage/components/CustomerReviewsSection.js +6 -4
- package/dist/features/homepage/components/EventsSection.js +2 -2
- package/dist/features/homepage/components/FAQSection.js +7 -6
- package/dist/features/homepage/components/FeaturedAuctionsSection.js +2 -2
- package/dist/features/homepage/components/FeaturedBundlesSection.js +5 -5
- package/dist/features/homepage/components/FeaturedPreOrdersSection.js +2 -2
- package/dist/features/homepage/components/FeaturedProductsSection.js +2 -2
- package/dist/features/homepage/components/FeaturedResultsSection.js +6 -5
- package/dist/features/homepage/components/FeaturedStoresSection.js +2 -2
- package/dist/features/homepage/components/GoogleReviewsSection.js +11 -11
- package/dist/features/homepage/components/HeroBanner.js +8 -8
- package/dist/features/homepage/components/HeroCarousel.js +44 -24
- package/dist/features/homepage/components/HeroSection.js +6 -2
- package/dist/features/homepage/components/HomepageSkeleton.js +5 -3
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +2 -2
- package/dist/features/homepage/components/HowItWorksInfoView.js +7 -5
- package/dist/features/homepage/components/HowItWorksSection.js +9 -5
- package/dist/features/homepage/components/MarketplaceHomepageView.js +8 -0
- package/dist/features/homepage/components/NewsletterBanner.js +11 -5
- package/dist/features/homepage/components/NewsletterSection.js +1 -1
- package/dist/features/homepage/components/PromoGrid.js +6 -4
- package/dist/features/homepage/components/SectionCarousel.js +12 -11
- package/dist/features/homepage/components/SecurityHighlightsSection.js +7 -5
- package/dist/features/homepage/components/ShopByCategorySection.js +11 -6
- package/dist/features/homepage/components/SiteFeaturesSection.js +3 -3
- package/dist/features/homepage/components/SocialFeedSection.js +7 -7
- package/dist/features/homepage/components/SocialPostCard.js +10 -8
- package/dist/features/homepage/components/StatsCounterSection.js +5 -3
- package/dist/features/homepage/components/TestimonialsCarousel.js +4 -4
- package/dist/features/homepage/components/TrustBadges.js +5 -3
- package/dist/features/homepage/components/TrustFeaturesSection.js +5 -7
- package/dist/features/homepage/components/TrustIndicatorsSection.js +3 -3
- package/dist/features/homepage/components/WelcomeSection.js +19 -4
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +7 -5
- package/dist/features/homepage/constants/carousel-per-view.d.ts +56 -0
- package/dist/features/homepage/constants/carousel-per-view.js +22 -0
- package/dist/features/homepage/constants/hero-carousel-styles.d.ts +15 -0
- package/dist/features/homepage/constants/hero-carousel-styles.js +15 -0
- package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -1
- package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +2 -2
- package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +2 -2
- package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -1
- package/dist/features/homepage/hooks/useFeaturedStores.d.ts +1 -1
- package/dist/features/homepage/hooks/useHeroCarousel.d.ts +1 -1
- package/dist/features/homepage/hooks/useHomepageEvents.d.ts +1 -1
- package/dist/features/homepage/hooks/useHomepageReviews.d.ts +1 -1
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +1 -1
- package/dist/features/homepage/hooks/useTopBrands.d.ts +1 -1
- package/dist/features/homepage/hooks/useTopCategories.d.ts +1 -1
- package/dist/features/homepage/lib/social-feed-fetcher.js +8 -0
- package/dist/features/homepage/repository/carousel.repository.js +10 -0
- package/dist/features/homepage/repository/carousels.repository.js +6 -0
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +3 -2
- package/dist/features/homepage/repository/homepage-sections.repository.js +11 -0
- package/dist/features/homepage/schemas/index.d.ts +932 -0
- package/dist/features/homepage/schemas/index.js +164 -0
- package/dist/features/layout/AppLayoutShell.js +40 -27
- package/dist/features/layout/AutoBreadcrumbs.js +2 -2
- package/dist/features/layout/BottomActions.js +4 -4
- package/dist/features/layout/BottomNavItem.d.ts +6 -6
- package/dist/features/layout/BottomNavItem.js +7 -7
- package/dist/features/layout/BottomNavbar.js +12 -2
- package/dist/features/layout/BottomSheet.d.ts +1 -1
- package/dist/features/layout/BottomSheet.js +3 -3
- package/dist/features/layout/Breadcrumbs.js +2 -2
- package/dist/features/layout/FooterLayout.js +3 -3
- package/dist/features/layout/NavItem.js +1 -1
- package/dist/features/layout/NavbarLayout.js +3 -3
- package/dist/features/layout/SidebarLayout.js +1 -10
- package/dist/features/layout/TitleBarLayout.js +4 -4
- package/dist/features/live/components/LiveItemFilters.js +1 -1
- package/dist/features/live/components/LiveItemsIndexListing.js +2 -2
- package/dist/features/live/components/LiveItemsListView.js +1 -1
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +2 -0
- package/dist/features/loyalty/api/balance/route.js +2 -0
- package/dist/features/loyalty/api/earn/route.js +2 -0
- package/dist/features/loyalty/api/history/route.js +2 -0
- package/dist/features/loyalty/api/redeem/route.js +2 -0
- package/dist/features/loyalty/components/CoinsDisplay.js +4 -4
- package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +1 -1
- package/dist/features/media/AvatarUpload.js +5 -2
- package/dist/features/media/MediaAudio.d.ts +22 -0
- package/dist/features/media/MediaAudio.js +15 -0
- package/dist/features/media/MediaAvatar.js +1 -1
- package/dist/features/media/MediaImage.d.ts +17 -1
- package/dist/features/media/MediaImage.js +30 -4
- package/dist/features/media/MediaLightbox.js +5 -5
- package/dist/features/media/MediaPickerModal.d.ts +3 -3
- package/dist/features/media/MediaPickerModal.js +7 -7
- package/dist/features/media/MediaVideo.d.ts +27 -1
- package/dist/features/media/MediaVideo.js +47 -5
- package/dist/features/media/finalize.js +3 -2
- package/dist/features/media/hooks/useMedia.d.ts +6 -5
- package/dist/features/media/modals/ImageCropModal.js +3 -3
- package/dist/features/media/modals/ImageEditor.js +5 -3
- package/dist/features/media/modals/VideoThumbnailSelector.js +4 -2
- package/dist/features/media/modals/VideoTrimModal.js +3 -1
- package/dist/features/media/upload/CameraCapture.js +2 -2
- package/dist/features/media/upload/ImageUpload.js +5 -3
- package/dist/features/media/upload/MediaUploadField.d.ts +14 -1
- package/dist/features/media/upload/MediaUploadField.js +53 -15
- package/dist/features/media/upload/MediaUploadList.js +5 -3
- package/dist/features/media/upload/video-poster.d.ts +48 -0
- package/dist/features/media/upload/video-poster.js +116 -0
- package/dist/features/media/upload/video-poster.test.d.ts +1 -0
- package/dist/features/media/upload/video-poster.test.js +42 -0
- package/dist/features/messages/actions/ping-rtdb.js +2 -0
- package/dist/features/messages/hooks/useConversation.js +2 -0
- package/dist/features/messages/hooks/useConversations.js +2 -0
- package/dist/features/messages/repository/conversations.repository.js +17 -15
- package/dist/features/messages/schemas/index.d.ts +177 -0
- package/dist/features/messages/schemas/index.js +35 -0
- package/dist/features/orders/api/track/[trackingId]/route.js +3 -0
- package/dist/features/orders/components/MarketplaceOrderCard.js +2 -2
- package/dist/features/orders/components/OrderSiblingPayments.js +2 -2
- package/dist/features/orders/components/OrdersList.js +6 -7
- package/dist/features/orders/components/RefundHistoryTable.js +4 -2
- package/dist/features/orders/components/RefundRequestView.js +5 -3
- package/dist/features/orders/hooks/useOrders.d.ts +2 -2
- package/dist/features/orders/repository/orders.repository.js +4 -0
- package/dist/features/orders/schemas/index.d.ts +677 -10
- package/dist/features/orders/schemas/index.js +148 -1
- package/dist/features/payments/hooks/usePayments.d.ts +1 -1
- package/dist/features/payments/repository/payout.repository.js +4 -3
- package/dist/features/payments/schemas/index.d.ts +252 -2
- package/dist/features/payments/schemas/index.js +48 -0
- package/dist/features/payments/types/index.d.ts +2 -1
- package/dist/features/pre-orders/api/[id]/route.js +4 -0
- package/dist/features/pre-orders/api/[slug]/route.js +2 -0
- package/dist/features/pre-orders/api/admin/[id]/route.js +3 -0
- package/dist/features/pre-orders/api/admin/route.js +2 -0
- package/dist/features/pre-orders/api/route.js +3 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +11 -8
- package/dist/features/pre-orders/components/PreOrderActionsClient.js +6 -3
- package/dist/features/pre-orders/components/PreOrderBadge.js +4 -2
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +11 -9
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -2
- package/dist/features/pre-orders/components/PreOrdersListView.js +1 -1
- package/dist/features/pre-orders/components/PreorderCard.js +1 -1
- package/dist/features/pre-orders/hooks/usePreOrders.d.ts +2 -2
- package/dist/features/products/api/[id]/route.d.ts +1 -1
- package/dist/features/products/api/[id]/route.js +9 -6
- package/dist/features/products/api/route.js +6 -2
- package/dist/features/products/columns/index.d.ts +11 -11
- package/dist/features/products/columns/index.js +11 -11
- package/dist/features/products/columns/productTableColumns.js +7 -7
- package/dist/features/products/components/AuctionsIndexListing.js +2 -2
- package/dist/features/products/components/BidHistory.js +4 -4
- package/dist/features/products/components/CompareOverlay.js +6 -5
- package/dist/features/products/components/CustomFieldsEditor.js +2 -2
- package/dist/features/products/components/CustomSectionTabContent.js +3 -2
- package/dist/features/products/components/CustomSectionsEditor.js +3 -3
- package/dist/features/products/components/GroupSettingsPanel.js +13 -5
- package/dist/features/products/components/MakeOfferButton.js +10 -6
- package/dist/features/products/components/MakeOfferForm.js +2 -2
- package/dist/features/products/components/MarketplaceBundleCard.js +7 -8
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +8 -7
- package/dist/features/products/components/NonRefundableConsentModal.js +2 -2
- package/dist/features/products/components/PlaceBidForm.js +2 -2
- package/dist/features/products/components/PrizeDrawCollage.js +20 -5
- package/dist/features/products/components/PrizeDrawDetailPageView.js +4 -2
- package/dist/features/products/components/PrizeDrawEntryActions.js +1 -1
- package/dist/features/products/components/PrizeDrawItemsEditor.js +9 -7
- package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -2
- package/dist/features/products/components/PrizeDrawsListingView.js +1 -1
- package/dist/features/products/components/PrizeDrawsSection.js +3 -1
- package/dist/features/products/components/PrizeRevealModal.js +5 -3
- package/dist/features/products/components/ProductCardMetadataSection.js +1 -1
- package/dist/features/products/components/ProductDetailActions.js +3 -1
- package/dist/features/products/components/ProductDetailPageView.js +30 -26
- package/dist/features/products/components/ProductDetailView.d.ts +4 -2
- package/dist/features/products/components/ProductDetailView.js +1 -1
- package/dist/features/products/components/ProductFeatureBadges.js +11 -9
- package/dist/features/products/components/ProductFeaturesSelector.js +4 -3
- package/dist/features/products/components/ProductForm.js +25 -6
- package/dist/features/products/components/ProductGalleryClient.js +6 -5
- package/dist/features/products/components/ProductGradingTab.js +3 -2
- package/dist/features/products/components/ProductGrid.js +35 -30
- package/dist/features/products/components/ProductInfo.js +2 -2
- package/dist/features/products/components/ProductTabs.js +2 -1
- package/dist/features/products/components/ProductTabsShell.js +2 -2
- package/dist/features/products/components/ProductsIndexListing.js +2 -2
- package/dist/features/products/components/ProductsIndexPageView.js +1 -1
- package/dist/features/products/components/RelatedProducts.js +3 -3
- package/dist/features/products/components/RelatedProductsCarousel.js +2 -2
- package/dist/features/products/components/ShowGroupSection.js +10 -9
- package/dist/features/products/components/SublistingCarouselSection.js +6 -4
- package/dist/features/products/components/SublistingCategorySelect.js +1 -1
- package/dist/features/products/hooks/useProductDetail.d.ts +1 -1
- package/dist/features/products/hooks/useRelatedProducts.d.ts +1 -1
- package/dist/features/products/repository/product-features.repository.d.ts +1 -1
- package/dist/features/products/repository/product-features.repository.js +6 -1
- package/dist/features/products/repository/products.repository.js +3 -0
- package/dist/features/products/schemas/index.d.ts +10 -10
- package/dist/features/products/schemas/product-features.validators.d.ts +6 -6
- package/dist/features/products/utils/listing-badge-variant.d.ts +10 -0
- package/dist/features/products/utils/listing-badge-variant.js +15 -0
- package/dist/features/products/utils/sanitize.d.ts +2 -2
- package/dist/features/products/utils/sanitize.js +0 -9
- package/dist/features/promotions/api/route.js +2 -0
- package/dist/features/promotions/components/CouponCard.d.ts +2 -1
- package/dist/features/promotions/components/CouponCard.js +10 -9
- package/dist/features/promotions/components/CouponsIndexListing.js +3 -3
- package/dist/features/promotions/components/PromotionsView.js +5 -5
- package/dist/features/promotions/hooks/useCouponValidate.d.ts +2 -1
- package/dist/features/promotions/hooks/usePromotions.d.ts +2 -2
- package/dist/features/promotions/repository/claimed-coupons.repository.js +5 -0
- package/dist/features/promotions/repository/coupons.repository.d.ts +9 -8
- package/dist/features/promotions/repository/coupons.repository.js +24 -9
- package/dist/features/promotions/schemas/index.d.ts +726 -10
- package/dist/features/promotions/schemas/index.js +111 -1
- package/dist/features/reviews/api/[id]/route.d.ts +1 -1
- package/dist/features/reviews/api/[id]/route.js +3 -1
- package/dist/features/reviews/api/route.js +3 -0
- package/dist/features/reviews/components/ReviewDetailPageView.js +2 -2
- package/dist/features/reviews/components/ReviewDetailShell.js +13 -9
- package/dist/features/reviews/components/ReviewModal.js +5 -5
- package/dist/features/reviews/components/ReviewSummary.js +8 -6
- package/dist/features/reviews/components/ReviewsIndexListing.js +3 -2
- package/dist/features/reviews/components/ReviewsIndexPageView.js +1 -1
- package/dist/features/reviews/components/ReviewsList.js +8 -7
- package/dist/features/reviews/hooks/useReviews.d.ts +2 -2
- package/dist/features/reviews/repository/reviews.repository.d.ts +1 -0
- package/dist/features/reviews/repository/reviews.repository.js +13 -0
- package/dist/features/reviews/schemas/index.d.ts +194 -0
- package/dist/features/reviews/schemas/index.js +41 -0
- package/dist/features/scams/components/ScamAwarenessModal.js +4 -3
- package/dist/features/scams/components/ScamProfileView.js +12 -9
- package/dist/features/scams/components/ScamRegistryView.js +7 -7
- package/dist/features/scams/repository/scammer.repository.js +5 -0
- package/dist/features/scams/schemas/index.d.ts +375 -0
- package/dist/features/scams/schemas/index.js +139 -0
- package/dist/features/search/api/route.js +2 -0
- package/dist/features/search/components/Search.js +15 -11
- package/dist/features/search/components/SearchFiltersRow.js +5 -3
- package/dist/features/search/components/SearchResultsSection.js +6 -6
- package/dist/features/search/components/SearchView.js +3 -3
- package/dist/features/search/hooks/useNavSuggestions.js +2 -0
- package/dist/features/search/hooks/useSearch.d.ts +2 -2
- package/dist/features/search/schemas/index.d.ts +2 -2
- package/dist/features/seller/actions/seller-actions.d.ts +3 -2
- package/dist/features/seller/actions/seller-actions.js +2 -1
- package/dist/features/seller/components/PhysicalLocationModal.js +2 -0
- package/dist/features/seller/components/PrintCenterView.js +2 -2
- package/dist/features/seller/components/QuickProductForm.js +3 -2
- package/dist/features/seller/components/SellerAddressesView.js +14 -6
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +12 -8
- package/dist/features/seller/components/SellerAnalyticsView.js +1 -1
- package/dist/features/seller/components/SellerBidsView.js +10 -8
- package/dist/features/seller/components/SellerBundlesView.js +7 -8
- package/dist/features/seller/components/SellerClassifiedView.js +7 -11
- package/dist/features/seller/components/SellerCouponEditorView.js +7 -5
- package/dist/features/seller/components/SellerCouponsView.js +5 -3
- package/dist/features/seller/components/SellerDashboardView.js +2 -2
- package/dist/features/seller/components/SellerDigitalCodesView.js +8 -10
- package/dist/features/seller/components/SellerFeaturesView.js +5 -2
- package/dist/features/seller/components/SellerGoogleReviewsView.js +6 -3
- package/dist/features/seller/components/SellerGroupedListingsView.js +6 -6
- package/dist/features/seller/components/SellerLiveView.js +9 -11
- package/dist/features/seller/components/SellerOffersPanel.js +7 -3
- package/dist/features/seller/components/SellerOrdersView.js +18 -9
- package/dist/features/seller/components/SellerPayoutMethodsView.js +6 -6
- package/dist/features/seller/components/SellerPayoutRequestView.js +5 -3
- package/dist/features/seller/components/SellerPayoutSettingsView.js +7 -5
- package/dist/features/seller/components/SellerPreOrdersView.js +6 -6
- package/dist/features/seller/components/SellerPrizeDrawsView.js +6 -6
- package/dist/features/seller/components/SellerProductShell.js +20 -5
- package/dist/features/seller/components/SellerProductsCards.js +14 -5
- package/dist/features/seller/components/SellerProductsFilterDrawer.js +3 -4
- package/dist/features/seller/components/SellerProductsView.js +15 -11
- package/dist/features/seller/components/SellerReviewsView.js +10 -5
- package/dist/features/seller/components/SellerShippingConfigsView.js +11 -9
- package/dist/features/seller/components/SellerShippingView.js +5 -3
- package/dist/features/seller/components/SellerSidebar.js +12 -12
- package/dist/features/seller/components/SellerStoreCategoriesView.js +6 -7
- package/dist/features/seller/components/SellerStoreSetupView.js +1 -1
- package/dist/features/seller/components/SellerStorefrontView.js +1 -1
- package/dist/features/seller/components/SellerTemplatesView.d.ts +2 -1
- package/dist/features/seller/components/SellerTemplatesView.js +10 -7
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +1 -1
- package/dist/features/seller/components/analytics/SellerRevenueChart.js +4 -2
- package/dist/features/seller/components/analytics/SellerTopProducts.js +4 -2
- package/dist/features/seller/hooks/useSellerListingData.d.ts +2 -1
- package/dist/features/seller/hooks/useSellerListingData.js +5 -0
- package/dist/features/seller/hooks/useSellerPayouts.d.ts +3 -3
- package/dist/features/seller/hooks/useSellerStore.d.ts +6 -6
- package/dist/features/seller/hooks/useSellerStorefront.d.ts +2 -2
- package/dist/features/seller/repository/offer.repository.js +1 -0
- package/dist/features/seller/schemas/index.d.ts +4 -4
- package/dist/features/server-errors/repository/server-errors.repository.d.ts +19 -0
- package/dist/features/server-errors/repository/server-errors.repository.js +80 -0
- package/dist/features/server-errors/schemas/firestore.d.ts +42 -0
- package/dist/features/server-errors/schemas/firestore.js +18 -0
- package/dist/features/server-errors/schemas/index.d.ts +47 -0
- package/dist/features/server-errors/schemas/index.js +22 -0
- package/dist/features/shell/FormShell.d.ts +7 -1
- package/dist/features/shell/FormShell.js +14 -7
- package/dist/features/shell/QuickFormDrawer.d.ts +14 -5
- package/dist/features/shell/QuickFormDrawer.js +25 -7
- package/dist/features/shell/StepForm.d.ts +4 -3
- package/dist/features/shell/StepForm.js +10 -8
- package/dist/features/site-settings/components/ActionPermissionsManager.js +11 -11
- package/dist/features/site-settings/components/NavPermissionsManager.js +5 -3
- package/dist/features/site-settings/components/ThemeManagerView.d.ts +17 -0
- package/dist/features/site-settings/components/ThemeManagerView.js +169 -0
- package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.d.ts +1 -0
- package/dist/features/site-settings/components/__tests__/ThemeManagerView.test.js +37 -0
- package/dist/features/store-extensions/schemas/firestore.d.ts +3 -2
- package/dist/features/store-extensions/schemas/firestore.js +0 -20
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +2 -0
- package/dist/features/stores/api/[storeSlug]/products/route.js +2 -0
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +3 -0
- package/dist/features/stores/api/[storeSlug]/route.d.ts +1 -1
- package/dist/features/stores/api/[storeSlug]/route.js +3 -1
- package/dist/features/stores/api/route.js +2 -0
- package/dist/features/stores/components/InteractiveStoreCard.js +3 -4
- package/dist/features/stores/components/StoreAboutView.js +6 -5
- package/dist/features/stores/components/StoreAuctionsListing.js +3 -3
- package/dist/features/stores/components/StoreCapabilitiesGuideView.js +8 -8
- package/dist/features/stores/components/StoreDetailLayoutView.js +2 -2
- package/dist/features/stores/components/StoreFinanceGuideView.js +8 -7
- package/dist/features/stores/components/StoreGuideHubView.js +7 -7
- package/dist/features/stores/components/StoreHeader.js +9 -7
- package/dist/features/stores/components/StoreListingsGuideView.js +16 -15
- package/dist/features/stores/components/StoreNavTabs.js +1 -1
- package/dist/features/stores/components/StoreOrdersGuideView.js +14 -14
- package/dist/features/stores/components/StorePreOrdersListing.js +3 -3
- package/dist/features/stores/components/StoreProductsListing.js +3 -3
- package/dist/features/stores/components/StoreProductsView.js +1 -1
- package/dist/features/stores/components/StoreReviewsListing.js +3 -2
- package/dist/features/stores/components/StoreScopedSearch.js +3 -1
- package/dist/features/stores/components/StoreSettingsGuideView.js +9 -8
- package/dist/features/stores/components/StoresIndexListing.js +4 -3
- package/dist/features/stores/components/StoresIndexPageView.js +1 -1
- package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +1 -1
- package/dist/features/stores/hooks/useStores.d.ts +6 -6
- package/dist/features/stores/repository/store.repository.js +3 -2
- package/dist/features/stores/schemas/index.d.ts +570 -0
- package/dist/features/stores/schemas/index.js +98 -0
- package/dist/features/support/repository/support.repository.js +4 -0
- package/dist/features/support/schemas/index.d.ts +238 -0
- package/dist/features/support/schemas/index.js +64 -0
- package/dist/features/whatsapp-bot/api/send-status/route.js +2 -0
- package/dist/features/whatsapp-bot/api/webhook/route.js +2 -0
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +12 -13
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +1 -1
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +2 -0
- package/dist/features/wishlist/components/WishlistPage.js +6 -7
- package/dist/features/wishlist/components/WishlistToggleButton.js +11 -9
- package/dist/features/wishlist/components/WishlistView.js +2 -2
- package/dist/features/wishlist/hooks/useUserWishlist.d.ts +17 -16
- package/dist/features/wishlist/hooks/useWishlist.d.ts +1 -1
- package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
- package/dist/features/wishlist/repository/user-wishlist.repository.js +2 -0
- package/dist/http/ApiClient.d.ts +8 -7
- package/dist/http/ApiClient.js +12 -4
- package/dist/index.d.ts +50 -3
- package/dist/index.js +77 -5
- package/dist/instrumentation/index.d.ts +3 -3
- package/dist/instrumentation/index.js +3 -3
- package/dist/jobs.d.ts +2 -0
- package/dist/jobs.js +5 -0
- package/dist/monitoring/analytics.d.ts +3 -2
- package/dist/monitoring/analytics.js +5 -0
- package/dist/monitoring/client-logger.d.ts +3 -2
- package/dist/monitoring/client-logger.js +31 -11
- package/dist/monitoring/error-tracking.d.ts +2 -1
- package/dist/monitoring/error-tracking.js +1 -0
- package/dist/monitoring/performance.js +1 -0
- package/dist/monitoring/server-logger.d.ts +2 -1
- package/dist/monitoring/server-logger.js +53 -28
- package/dist/next/ErrorBoundary.js +1 -2
- package/dist/next/IAuthVerifier.d.ts +6 -5
- package/dist/next/IAuthVerifier.js +0 -22
- package/dist/next/api/api-response.d.ts +4 -3
- package/dist/next/api/api-response.js +4 -1
- package/dist/next/api/apiHandler.js +7 -1
- package/dist/next/api/errorHandler.d.ts +6 -6
- package/dist/next/api/errorHandler.js +9 -6
- package/dist/next/api/parseJsonBody.d.ts +16 -0
- package/dist/next/api/parseJsonBody.js +36 -0
- package/dist/next/api/routeHandler.d.ts +24 -41
- package/dist/next/api/routeHandler.js +157 -44
- package/dist/next/cache-middleware.d.ts +2 -2
- package/dist/next/cache-middleware.js +5 -3
- package/dist/next/components/ErrorView.js +3 -3
- package/dist/next/components/GlobalError.js +3 -3
- package/dist/next/components/NotFoundView.js +2 -19
- package/dist/next/components/UnauthorizedView.js +2 -15
- package/dist/next/middleware/chain.d.ts +5 -5
- package/dist/next/middleware/chain.js +8 -5
- package/dist/next/middleware/pii-redactor.d.ts +4 -4
- package/dist/next/middleware/pii-redactor.js +4 -4
- package/dist/next/middleware/pii-scrubber.js +2 -0
- package/dist/providers/auth-firebase/browser-stub.js +0 -1
- package/dist/providers/auth-firebase/helpers.js +3 -6
- package/dist/providers/auth-firebase/provider.js +2 -1
- package/dist/providers/auth-firebase/session.js +1 -1
- package/dist/providers/db-firebase/admin-app-lite.js +0 -3
- package/dist/providers/db-firebase/admin.js +1 -4
- package/dist/providers/db-firebase/base.d.ts +1 -1
- package/dist/providers/db-firebase/base.js +5 -1
- package/dist/providers/db-firebase/base.repository.d.ts +6 -5
- package/dist/providers/db-firebase/base.repository.js +14 -0
- package/dist/providers/db-firebase/browser-stub.js +0 -1
- package/dist/providers/db-firebase/field-ops.js +2 -0
- package/dist/providers/db-firebase/helpers.d.ts +2 -2
- package/dist/providers/db-firebase/helpers.js +7 -2
- package/dist/providers/db-firebase/index.d.ts +1 -1
- package/dist/providers/db-firebase/index.js +1 -1
- package/dist/providers/db-firebase/realtime.d.ts +1 -1
- package/dist/providers/db-firebase/realtime.js +16 -4
- package/dist/providers/db-firebase/sieve.d.ts +5 -5
- package/dist/providers/db-firebase/sieve.js +13 -7
- package/dist/providers/email-resend/provider.d.ts +3 -3
- package/dist/providers/email-resend/provider.js +3 -3
- package/dist/providers/payment-razorpay/index.d.ts +7 -6
- package/dist/providers/payment-razorpay/index.js +8 -5
- package/dist/providers/shipping-shiprocket/index.d.ts +3 -3
- package/dist/providers/shipping-shiprocket/index.js +4 -3
- package/dist/providers/storage-firebase/client.js +9 -0
- package/dist/providers/storage-firebase/index.d.ts +1 -1
- package/dist/providers/storage-firebase/index.js +1 -1
- package/dist/providers/storage-firebase/provider.d.ts +3 -3
- package/dist/providers/storage-firebase/provider.js +3 -3
- package/dist/react/contexts/SessionContext.d.ts +4 -3
- package/dist/react/contexts/SessionContext.js +6 -0
- package/dist/react/contexts/index.d.ts +0 -2
- package/dist/react/contexts/index.js +2 -1
- package/dist/react/hooks/use-action-dispatch.d.ts +2 -1
- package/dist/react/hooks/use-action-dispatch.js +2 -0
- package/dist/react/hooks/useBreakpoint.d.ts +1 -1
- package/dist/react/hooks/useBreakpoint.js +1 -1
- package/dist/react/hooks/useBulkAction.d.ts +4 -4
- package/dist/react/hooks/useBulkAction.js +2 -0
- package/dist/react/hooks/useCamera.js +2 -0
- package/dist/react/hooks/useClickOutside.d.ts +3 -3
- package/dist/react/hooks/useClickOutside.js +3 -3
- package/dist/react/hooks/useContainerGrid.d.ts +5 -5
- package/dist/react/hooks/useContainerGrid.js +5 -5
- package/dist/react/hooks/useCountdown.js +1 -0
- package/dist/react/hooks/useEntityDelete.js +2 -0
- package/dist/react/hooks/useFormStatePreservation.d.ts +2 -1
- package/dist/react/hooks/useGesture.d.ts +3 -3
- package/dist/react/hooks/useGesture.js +3 -3
- package/dist/react/hooks/useInlineRowEdit.js +3 -0
- package/dist/react/hooks/useKeyPress.d.ts +2 -2
- package/dist/react/hooks/useKeyPress.js +2 -2
- package/dist/react/hooks/usePendingFilters.d.ts +10 -10
- package/dist/react/hooks/usePendingFilters.js +10 -10
- package/dist/react/hooks/usePendingTable.d.ts +1 -1
- package/dist/react/hooks/usePendingTable.js +1 -1
- package/dist/react/hooks/usePullToRefresh.d.ts +5 -5
- package/dist/react/hooks/usePullToRefresh.js +5 -5
- package/dist/react/hooks/useRealtimeEvent.d.ts +2 -1
- package/dist/react/hooks/useRealtimeEvent.js +2 -0
- package/dist/react/hooks/useSwipe.d.ts +3 -3
- package/dist/react/hooks/useSwipe.js +3 -3
- package/dist/react/hooks/useUrlTable.js +2 -2
- package/dist/react/index.d.ts +0 -2
- package/dist/react/index.js +2 -2
- package/dist/react/useModalStack.d.ts +1 -1
- package/dist/react/useModalStack.js +1 -1
- package/dist/schemas/api-routes.d.ts +7 -0
- package/dist/schemas/api-routes.js +66 -0
- package/dist/schemas/firestore-helpers.d.ts +35 -0
- package/dist/schemas/firestore-helpers.js +29 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.js +6 -0
- package/dist/schemas/registry.d.ts +6719 -0
- package/dist/schemas/registry.js +174 -0
- package/dist/schemas/sieve.d.ts +45 -0
- package/dist/schemas/sieve.js +55 -0
- package/dist/schemas/types.d.ts +61 -0
- package/dist/schemas/types.js +10 -0
- package/dist/schemas/webhooks/google-oauth.d.ts +83 -0
- package/dist/schemas/webhooks/google-oauth.js +39 -0
- package/dist/schemas/webhooks/razorpay.d.ts +2634 -0
- package/dist/schemas/webhooks/razorpay.js +104 -0
- package/dist/schemas/webhooks/shiprocket.d.ts +30 -0
- package/dist/schemas/webhooks/shiprocket.js +22 -0
- package/dist/security/authorization.d.ts +5 -4
- package/dist/security/authorization.js +1 -0
- package/dist/security/csp.d.ts +1 -1
- package/dist/security/csp.js +1 -1
- package/dist/security/pii-encrypt.d.ts +9 -9
- package/dist/security/pii-encrypt.js +15 -10
- package/dist/security/pii-redact.js +3 -0
- package/dist/security/rate-limit.d.ts +4 -0
- package/dist/security/rate-limit.js +1 -0
- package/dist/security/settings-encryption.js +0 -2
- package/dist/seed/cart-seed-data.js +1 -1
- package/dist/seed/categories-seed-data.js +145 -201
- package/dist/seed/factories/homepage-section.factory.d.ts +2 -1
- package/dist/seed/grouped-listings-seed-data.js +2 -2
- package/dist/seed/index.js +0 -2
- package/dist/seed/manifest.js +6 -1
- package/dist/seed/products-prize-draws-seed-data.js +38 -37
- package/dist/seed/products-standard-seed-data.js +5 -122
- package/dist/seed/runner.js +2 -0
- package/dist/seed/stores-seed-data.js +0 -29
- package/dist/seed/test-utils.d.ts +4 -3
- package/dist/seed/test-utils.js +2 -2
- package/dist/seed/users-seed-data.js +0 -30
- package/dist/seo/json-ld.d.ts +20 -11
- package/dist/seo/json-ld.js +2 -2
- package/dist/server.d.ts +15 -0
- package/dist/server.js +29 -0
- package/dist/stores/panel-store.d.ts +3 -2
- package/dist/styles.css +258 -7
- package/dist/tailwind-utilities.css +1 -1
- package/dist/theme/index.d.ts +14 -0
- package/dist/theme/index.js +12 -0
- package/dist/tokens/index.d.ts +2 -534
- package/dist/tokens/index.js +16 -109
- package/dist/tokens/themes/default-dark.d.ts +10 -0
- package/dist/tokens/themes/default-dark.js +84 -0
- package/dist/tokens/themes/default-light.d.ts +10 -0
- package/dist/tokens/themes/default-light.js +87 -0
- package/dist/tokens/themes/index.d.ts +15 -0
- package/dist/tokens/themes/index.js +17 -0
- package/dist/tokens/themes/required.d.ts +15 -0
- package/dist/tokens/themes/required.js +89 -0
- package/dist/tokens/themes/types.d.ts +37 -0
- package/dist/tokens/themes/types.js +1 -0
- package/dist/tokens/tokens.css +108 -6
- package/dist/ui/DataTable.js +5 -5
- package/dist/ui/components/Anchor.d.ts +40 -0
- package/dist/ui/components/Anchor.js +40 -0
- package/dist/ui/components/Badge.d.ts +5 -1
- package/dist/ui/components/Badge.js +7 -2
- package/dist/ui/components/BaseListingCard.js +2 -1
- package/dist/ui/components/Button.d.ts +25 -1
- package/dist/ui/components/Button.js +100 -8
- package/dist/ui/components/Card.d.ts +5 -2
- package/dist/ui/components/Card.js +13 -1
- package/dist/ui/components/Card.style.css +33 -0
- package/dist/ui/components/ConfirmDeleteModal.d.ts +5 -5
- package/dist/ui/components/ConfirmDeleteModal.js +5 -5
- package/dist/ui/components/DescriptionField.d.ts +2 -2
- package/dist/ui/components/DescriptionField.js +2 -2
- package/dist/ui/components/DetailViewShell.d.ts +4 -2
- package/dist/ui/components/DetailViewShell.js +1 -1
- package/dist/ui/components/Details.d.ts +29 -0
- package/dist/ui/components/Details.js +28 -0
- package/dist/ui/components/Dialog.d.ts +26 -0
- package/dist/ui/components/Dialog.js +42 -0
- package/dist/ui/components/Div.d.ts +24 -0
- package/dist/ui/components/Div.js +82 -1
- package/dist/ui/components/FallbackShell.d.ts +31 -0
- package/dist/ui/components/FallbackShell.js +71 -0
- package/dist/ui/components/Fieldset.d.ts +19 -0
- package/dist/ui/components/Fieldset.js +26 -0
- package/dist/ui/components/FilterChipGroup.d.ts +4 -4
- package/dist/ui/components/FlowDiagram.js +6 -2
- package/dist/ui/components/Form.d.ts +37 -4
- package/dist/ui/components/Form.js +38 -3
- package/dist/ui/components/FormGrid.d.ts +3 -3
- package/dist/ui/components/FormGrid.js +3 -3
- package/dist/ui/components/HorizontalRule.d.ts +21 -0
- package/dist/ui/components/HorizontalRule.js +21 -0
- package/dist/ui/components/HotspotMarker.d.ts +34 -0
- package/dist/ui/components/HotspotMarker.js +80 -0
- package/dist/ui/components/IconBox.d.ts +21 -0
- package/dist/ui/components/IconBox.js +32 -0
- package/dist/ui/components/IconButton.d.ts +1 -1
- package/dist/ui/components/IconButton.js +1 -1
- package/dist/ui/components/Iframe.d.ts +21 -0
- package/dist/ui/components/Iframe.js +21 -0
- package/dist/ui/components/ImageGallery.js +10 -2
- package/dist/ui/components/ImageLightbox.js +4 -2
- package/dist/ui/components/Input.js +2 -2
- package/dist/ui/components/Kbd.d.ts +10 -0
- package/dist/ui/components/Kbd.js +17 -0
- package/dist/ui/components/Layout.d.ts +88 -18
- package/dist/ui/components/Layout.js +80 -8
- package/dist/ui/components/Layout.style.css +50 -0
- package/dist/ui/components/ListingToolbar.js +3 -3
- package/dist/ui/components/Motion.js +3 -1
- package/dist/ui/components/NavbarChevron.d.ts +5 -0
- package/dist/ui/components/NavbarChevron.js +20 -0
- package/dist/ui/components/PaginatedSelect.d.ts +5 -2
- package/dist/ui/components/PaginatedSelect.js +2 -2
- package/dist/ui/components/PasswordStrengthIndicator.js +4 -4
- package/dist/ui/components/Quote.d.ts +11 -0
- package/dist/ui/components/Quote.js +18 -0
- package/dist/ui/components/Responsive.d.ts +26 -0
- package/dist/ui/components/Responsive.js +79 -0
- package/dist/ui/components/Scrim.d.ts +25 -0
- package/dist/ui/components/Scrim.js +27 -0
- package/dist/ui/components/Semantic.d.ts +170 -29
- package/dist/ui/components/Semantic.js +398 -31
- package/dist/ui/components/SideDrawer.d.ts +1 -1
- package/dist/ui/components/SideDrawer.js +1 -1
- package/dist/ui/components/SideModal.js +1 -1
- package/dist/ui/components/SiteLogo.d.ts +20 -19
- package/dist/ui/components/SiteLogo.js +46 -16
- package/dist/ui/components/SlottedListingView.js +1 -1
- package/dist/ui/components/StackedViewShell.js +1 -1
- package/dist/ui/components/StickyToolbar.d.ts +29 -0
- package/dist/ui/components/StickyToolbar.js +34 -0
- package/dist/ui/components/TabStrip.d.ts +7 -7
- package/dist/ui/components/TabStrip.js +7 -7
- package/dist/ui/components/TextLink.d.ts +19 -1
- package/dist/ui/components/TextLink.js +47 -2
- package/dist/ui/components/Textarea.js +1 -1
- package/dist/ui/components/Toast.d.ts +15 -2
- package/dist/ui/components/Toast.js +29 -5
- package/dist/ui/components/Tooltip.d.ts +1 -1
- package/dist/ui/components/Tooltip.js +5 -2
- package/dist/ui/components/Typography.d.ts +119 -10
- package/dist/ui/components/Typography.js +209 -7
- package/dist/ui/components/Typography.style.css +66 -0
- package/dist/ui/components/UnsavedChangesModal.js +3 -1
- package/dist/ui/components/__tests__/new-primitives.test.d.ts +1 -0
- package/dist/ui/components/__tests__/new-primitives.test.js +187 -0
- package/dist/ui/components/surface-tokens.d.ts +166 -10
- package/dist/ui/components/surface-tokens.js +170 -10
- package/dist/ui/forms/ColorPickerField.d.ts +21 -0
- package/dist/ui/forms/ColorPickerField.js +36 -0
- package/dist/ui/forms/FieldTextarea.d.ts +13 -0
- package/dist/ui/forms/FieldTextarea.js +25 -0
- package/dist/ui/forms/FormShell.d.ts +28 -6
- package/dist/ui/forms/FormShell.js +32 -2
- package/dist/ui/forms/FormShell.style.css +7 -0
- package/dist/ui/forms/index.d.ts +5 -1
- package/dist/ui/forms/index.js +3 -1
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/rich-text/RichText.d.ts +8 -8
- package/dist/ui/rich-text/RichText.js +1 -0
- package/dist/utils/action-response.js +1 -0
- package/dist/utils/action-result.d.ts +11 -0
- package/dist/utils/action-result.js +10 -0
- package/dist/utils/auth-error.d.ts +1 -8
- package/dist/utils/auth-error.js +5 -20
- package/dist/utils/date.formatter.js +1 -0
- package/dist/utils/event-manager.js +0 -2
- package/dist/utils/filter.helper.d.ts +3 -3
- package/dist/utils/filter.helper.js +3 -3
- package/dist/utils/media-url.d.ts +9 -0
- package/dist/utils/media-url.js +9 -1
- package/dist/utils/object.helper.d.ts +5 -5
- package/dist/utils/object.helper.js +2 -0
- package/dist/utils/schema-ui.d.ts +2 -2
- package/dist/utils/schema-ui.js +3 -35
- package/dist/utils/type.converter.d.ts +2 -1
- package/dist/validation/input.validator.js +1 -0
- package/dist/validation/schemas.js +6 -3
- package/package.json +4 -3
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
3
4
|
import React from "react";
|
|
4
|
-
import {
|
|
5
|
-
import { Alert, Button, Div, Form, FormActions, Input, StackedViewShell, Text, Toggle, useToast
|
|
5
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
import { Alert, Button, Div, Form, FormActions, Input, Row, Stack, StackedViewShell, Text, Toggle, useToast } from "../../../ui";
|
|
6
7
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
7
8
|
import { apiClient } from "../../../http";
|
|
8
9
|
const __O = {
|
|
@@ -41,10 +42,10 @@ const CATEGORY_TYPE_FLAGS = [
|
|
|
41
42
|
];
|
|
42
43
|
function AccordionSection({ title, defaultOpen = true, children }) {
|
|
43
44
|
const [open, setOpen] = React.useState(defaultOpen);
|
|
44
|
-
return (_jsxs(Div, { className:
|
|
45
|
+
return (_jsxs(Div, { className: `${__O.hidden}`, rounded: "lg", border: "default", children: [_jsxs("button", { type: "button", onClick: () => setOpen((v) => !v), className: "w-full flex items-center justify-between px-4 py-3 bg-zinc-50 dark:bg-zinc-800/60 text-left", "aria-expanded": open, children: [_jsx(Text, { className: "tracking-widest", color: "muted", size: "xs", weight: "semibold", transform: "uppercase", children: title }), _jsx("svg", { className: `h-4 w-4 text-zinc-400 transition-transform ${open ? "rotate-180" : ""}`, fill: "none", stroke: "currentColor", strokeWidth: 2, viewBox: "0 0 24 24", "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })] }), open && (_jsx(Div, { className: "divide-y divide-zinc-100 dark:divide-zinc-800", children: children }))] }));
|
|
45
46
|
}
|
|
46
47
|
function FlagRow({ label, desc, checked, onChange, rollout, onRolloutChange, showRollout }) {
|
|
47
|
-
return (_jsxs(
|
|
48
|
+
return (_jsxs(Row, { surface: "default", padding: "inline", align: "center", justify: "between", gap: "md", children: [_jsxs(Div, { className: "flex-1 min-w-0", children: [_jsx(Toggle, { checked: checked, onChange: onChange, label: label }), _jsx(Text, { className: "mt-0.5 ml-10 truncate", color: "faint", size: "xs", children: desc })] }), showRollout && (_jsxs(Stack, { className: "w-28 shrink-0", gap: "xs", children: [_jsx(Text, { size: "xs", color: "muted", children: "Rollout %" }), _jsx(Input, { type: "number", min: 0, max: 100, value: rollout ?? 100, onChange: (e) => onRolloutChange?.(Math.min(100, Math.max(0, Number(e.target.value)))), disabled: !checked, className: "w-full" })] }))] }));
|
|
48
49
|
}
|
|
49
50
|
export function AdminFeatureFlagsView({ labels = {}, renderFlags, ...rest }) {
|
|
50
51
|
const queryClient = useQueryClient();
|
|
@@ -82,7 +83,7 @@ export function AdminFeatureFlagsView({ labels = {}, renderFlags, ...rest }) {
|
|
|
82
83
|
...prev,
|
|
83
84
|
categoryTypes: { ...(prev.categoryTypes ?? {}), [key]: val },
|
|
84
85
|
}));
|
|
85
|
-
const saveFlags =
|
|
86
|
+
const saveFlags = useApiMutation({
|
|
86
87
|
mutationFn: async () => {
|
|
87
88
|
await apiClient.put(ADMIN_ENDPOINTS.FEATURE_FLAGS, { flags, rollouts });
|
|
88
89
|
},
|
|
@@ -97,7 +98,7 @@ export function AdminFeatureFlagsView({ labels = {}, renderFlags, ...rest }) {
|
|
|
97
98
|
const defaultFlags = () => (_jsxs(Form, { onSubmit: (event) => {
|
|
98
99
|
event.preventDefault();
|
|
99
100
|
saveFlags.mutate();
|
|
100
|
-
},
|
|
101
|
+
}, spacing: "md", children: [_jsx(AccordionSection, { title: "Platform Features", children: PLATFORM_FLAGS.map(({ key, label, desc }) => (_jsx(FlagRow, { label: label, desc: desc, checked: getPlatformFlag(key), onChange: (val) => setPlatformFlag(key, val), rollout: rollouts[key], onRolloutChange: (val) => setRollouts((prev) => ({ ...prev, [key]: val })), showRollout: true }, key))) }), _jsx(AccordionSection, { title: "Listing Types", children: LISTING_TYPE_FLAGS.map(({ key, label, desc }) => (_jsx(FlagRow, { label: label, desc: desc, checked: getListingTypeFlag(key), onChange: (val) => setListingTypeFlag(key, val), showRollout: false }, key))) }), _jsx(AccordionSection, { title: "Category Types", children: CATEGORY_TYPE_FLAGS.map(({ key, label, desc }) => (_jsx(FlagRow, { label: label, desc: desc, checked: getCategoryTypeFlag(key), onChange: (val) => setCategoryTypeFlag(key, val), showRollout: false }, key))) }), _jsxs(FormActions, { align: "right", children: [_jsx(Button, { type: "button", variant: "secondary", onClick: () => {
|
|
101
102
|
setFlags(data?.flags ?? {});
|
|
102
103
|
setRollouts(data?.rollouts ?? {});
|
|
103
104
|
}, disabled: saveFlags.isPending, children: "Reset" }), _jsx(Button, { type: "submit", isLoading: saveFlags.isPending, disabled: saveFlags.isPending, children: "Save All Flags" })] })] }));
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
* @example
|
|
11
11
|
* ```tsx
|
|
12
12
|
* <AdminFilterBar
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
13
|
+
* deferred
|
|
14
|
+
* onApply={filters.apply}
|
|
15
|
+
* onReset={filters.reset}
|
|
16
|
+
* pendingCount={filters.pendingCount}
|
|
17
|
+
* labels={{ apply: "Apply", reset: "Reset", applyCount: "Apply" }}
|
|
18
|
+
* themeConfig={{ cardPadding: "p-4", flexEnd: "flex justify-end" }}
|
|
19
19
|
* >
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* <Input placeholder="Search users..." />
|
|
21
|
+
* <Select>...</Select>
|
|
22
22
|
* </AdminFilterBar>
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
@@ -7,7 +7,7 @@ export function AdminFilterBar({ children, columns = 3, className = "", withCard
|
|
|
7
7
|
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 2xl:grid-cols-4",
|
|
8
8
|
4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-4 2xl:grid-cols-4",
|
|
9
9
|
};
|
|
10
|
-
const innerContent = (_jsxs(_Fragment, { children: [_jsx(Div, {
|
|
10
|
+
const innerContent = (_jsxs(_Fragment, { children: [_jsx(Div, { layout: "grid", gap: "4", className: `${gridCols[columns]}`, children: children }), deferred && (_jsxs(Div, { gap: "2", className: `${themeConfig.flexEnd} mt-3`, children: [pendingCount > 0 && (_jsx(Button, { variant: "ghost", size: "sm", onClick: onReset, children: labels.reset })), _jsx(Button, { variant: "primary", size: "sm", onClick: onApply, children: pendingCount > 0
|
|
11
11
|
? `${labels.applyCount || labels.apply} (${pendingCount})`
|
|
12
12
|
: labels.apply })] }))] }));
|
|
13
13
|
// If Card component is provided in config, use it; otherwise wrap in plain div
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Users, Package, Store, ShoppingBag, FileText, Settings, Shield, BarChart2, AlertTriangle, BookOpen, } from "lucide-react";
|
|
3
|
-
import { Div, Heading,
|
|
3
|
+
import { Alert, Div, Heading, Row, Section, Stack, Text } from "../../../ui";
|
|
4
4
|
import { ROUTES } from "../../../next/routing/route-map";
|
|
5
5
|
const CLS_WARN_PANEL = "rounded-2xl border border-amber-200 bg-warning-surface dark:border-amber-800 p-6";
|
|
6
6
|
const CLS_WARN_HEAD = "font-semibold text-amber-800 dark:text-amber-300 mb-1";
|
|
@@ -74,9 +74,9 @@ export function AdminGuideHubView({ permissions = [], isFullAdmin = false }) {
|
|
|
74
74
|
const hasPermission = (perm) => isFullAdmin || permissions.includes(perm);
|
|
75
75
|
const visibleCards = GUIDE_CARDS.filter((c) => hasPermission(c.permission));
|
|
76
76
|
const hasAny = visibleCards.length > 0;
|
|
77
|
-
return (_jsxs(
|
|
78
|
-
background: "linear-gradient(135deg,var(--appkit-color-primary-700
|
|
79
|
-
}, children: [_jsxs(
|
|
80
|
-
background: "linear-gradient(135deg,var(--appkit-color-primary-700
|
|
81
|
-
}, children: _jsx(Icon, { className: "w-4 h-4 text-white" }) }), _jsx(Text, { className: "
|
|
77
|
+
return (_jsxs(Stack, { gap: "xl", padding: "b-2xl", children: [_jsx(Section, { className: "overflow-hidden border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)]", rounded: "2xl", shadow: "sm", children: _jsxs(Div, { paddingX: "x-md-xl", paddingY: "y-xl", style: {
|
|
78
|
+
background: "linear-gradient(135deg,var(--appkit-color-primary-700) 0%,var(--appkit-color-cobalt) 60%,var(--appkit-color-secondary-400) 100%)",
|
|
79
|
+
}, children: [_jsxs(Row, { className: "mb-3", align: "center", gap: "3", children: [_jsx(Row, { className: "flex-shrink-0 w-10 h-10", surface: "default", align: "center", justify: "center", rounded: "xl", children: _jsx(BookOpen, { className: "w-5 h-5 text-white" }) }), _jsx(Text, { color: "inverse", className: "/80 tracking-widest", size: "sm", weight: "semibold", transform: "uppercase", children: "Admin & Employee Guide" })] }), _jsx(Heading, { color: "inverse", level: 1, className: "mb-2", mdSize: "3xl", size: "2xl", weight: "bold", children: "LetItRip Internal Guide" }), _jsx(Text, { color: "inverse", className: "/80", size: "base", children: "Everything you need to operate and manage LetItRip \u2014 India's largest collectibles marketplace." })] }) }), _jsx(Alert, { variant: "info", compact: true, children: "These guides describe expected platform behaviour. Real access to each section is enforced independently by the permission system \u2014 this page is reference only." }), !hasAny && (_jsx(Alert, { variant: "info", title: "Limited access", children: "Your permission set doesn't include read access to any admin sections yet. Contact your admin to request the permissions you need." })), hasAny && (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "text-[var(--appkit-color-text)] mb-4", size: "lg", weight: "semibold", children: "Guides" }), _jsx(Div, { layout: "grid", gap: "4", className: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3", children: visibleCards.map(({ Icon, title, description, href }) => (_jsxs("a", { href: href, className: "group flex flex-col gap-3 rounded-xl border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] p-5 hover:border-[var(--appkit-color-primary)] hover:shadow-md transition-all", children: [_jsxs(Row, { align: "center", gap: "3", children: [_jsx(Row, { className: "flex-shrink-0 w-9 h-9", align: "center", justify: "center", rounded: "lg", style: {
|
|
80
|
+
background: "linear-gradient(135deg,var(--appkit-color-primary-700) 0%,var(--appkit-color-cobalt) 100%)",
|
|
81
|
+
}, children: _jsx(Icon, { className: "w-4 h-4 text-white" }) }), _jsx(Text, { className: "text-[var(--appkit-color-text)] group-hover:text-[var(--appkit-color-primary)] transition-colors", weight: "semibold", children: title })] }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)] leading-relaxed", size: "sm", children: description }), _jsx(Text, { className: "text-[var(--appkit-color-primary)] mt-auto", size: "xs", weight: "medium", children: "Read guide \u2192" })] }, title))) })] })), _jsx(Section, { className: CLS_WARN_PANEL, children: _jsxs(Row, { align: "start", gap: "3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-warning flex-shrink-0 mt-0.5" }), _jsxs(Div, { children: [_jsx(Text, { className: CLS_WARN_HEAD, children: "Remember: with great access comes responsibility" }), _jsx(Text, { className: CLS_WARN_BODY, children: "Admin actions are logged. Never access user PII (email, phone) without a legitimate support reason. Never grant capabilities or permissions without documented approval. When in doubt, escalate to a senior admin." })] })] }) })] }));
|
|
82
82
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
|
-
import { Alert, Button, Div, Input, Select, StackedViewShell, Text, useToast
|
|
4
|
+
import { Alert, Button, Div, Input, Row, Select, Stack, StackedViewShell, Text, useToast } from "../../../ui";
|
|
5
|
+
import { normalizeError } from "../../../errors/normalize";
|
|
5
6
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
6
7
|
import { MediaUploadField, MediaUploadList, useMediaCleanup, useMediaUpload, } from "../../media";
|
|
7
8
|
const __P = {
|
|
@@ -45,6 +46,7 @@ function MediaBrowser({ onCopy }) {
|
|
|
45
46
|
setNextPageToken(data.data.nextPageToken ?? null);
|
|
46
47
|
}
|
|
47
48
|
catch (err) {
|
|
49
|
+
void normalizeError(err);
|
|
48
50
|
setError(err instanceof Error ? err.message : "Failed to load");
|
|
49
51
|
}
|
|
50
52
|
finally {
|
|
@@ -61,15 +63,17 @@ function MediaBrowser({ onCopy }) {
|
|
|
61
63
|
return files;
|
|
62
64
|
return files.filter((f) => f.name.toLowerCase().includes(q));
|
|
63
65
|
}, [files, search]);
|
|
64
|
-
return (_jsxs(
|
|
66
|
+
return (_jsxs(Stack, { className: `${__P.p4}`, gap: "3", rounded: "xl", surface: "default", border: "default", children: [_jsx(Text, { size: "sm", weight: "semibold", color: "primary", children: "Browse existing media" }), _jsxs(Row, { align: "center", gap: "sm", wrap: true, children: [_jsx(Select, { value: prefix, onChange: (e) => setPrefix(e.target.value), options: PREFIX_OPTIONS, "aria-label": "Prefix filter", className: "min-w-[140px]" }), _jsx(Input, { type: "text", placeholder: "Search filename\u2026", value: search, onChange: (e) => setSearch(e.target.value), className: "flex-1 min-w-[160px]" })] }), error && (_jsx(Alert, { variant: "error", title: "Load failed", children: error })), _jsxs(Div, { layout: "grid", gap: "2", className: "grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6", children: [filtered.map((f) => {
|
|
65
67
|
const isImage = (f.contentType ?? "").startsWith("image/");
|
|
66
|
-
return (_jsxs(Div, { className: "group
|
|
68
|
+
return (_jsxs(Div, { className: "group overflow-hidden", surface: "muted", rounded: "lg", border: "default", children: [_jsx(Row, { color: "muted", textSize: "xs", className: "aspect-square", surface: "subtle", align: "center", justify: "center", children: isImage ? (
|
|
67
69
|
// eslint-disable-next-line @next/next/no-img-element
|
|
68
|
-
_jsx("img", { src: f.downloadURL, alt: f.name, className: "h-full w-full object-cover", loading: "lazy" })) : (
|
|
69
|
-
|
|
70
|
+
_jsx("img", { src: f.downloadURL, alt: f.name, className: "h-full w-full object-cover", loading: "lazy" })) : (
|
|
71
|
+
// audit-variant-ok: file label — px-2 horizontal nudge + break-all; Text lacks paddingX variant
|
|
72
|
+
_jsx(Text, { align: "center", className: "px-2 break-all", children: f.contentType ?? "file" })) }), _jsxs(Div, { className: "p-1.5", children: [_jsx(Text, { className: "truncate text-[10px] font-mono", color: "muted", children: f.name.split("/").pop() }), _jsx(Button, { type: "button", variant: "ghost", textSize: "xs", className: "mt-1 w-full", onClick: () => onCopy(f.downloadURL), children: ACTIONS.MEDIA["copy-url"].label })] })] }, f.name));
|
|
73
|
+
}), filtered.length === 0 && !isLoading && (_jsx(Text, { paddingY: "lg", className: "col-span-full", color: "muted", size: "sm", align: "center", children: "No files found." }))] }), _jsxs(Row, { align: "center", justify: "between", children: [_jsxs(Text, { size: "xs", color: "muted", children: [filtered.length, " file(s)", nextPageToken ? " · more available" : ""] }), nextPageToken && (_jsx(Button, { type: "button", variant: "outline", onClick: () => void load(nextPageToken), disabled: isLoading, children: isLoading ? "Loading…" : "Load more" }))] })] }));
|
|
70
74
|
}
|
|
71
75
|
function MediaUploaderPanel({ onUpload, isUploadPending, isCleanupPending, heroAssetUrl, setHeroAssetUrl, galleryAssets, setGalleryAssets, stagedUrls, setHeroStagedUrls, setGalleryStagedUrls, handleAbort, copiedUrl, onCopy, onClearPreviews, onDiscardStaged, }) {
|
|
72
|
-
return (_jsxs(
|
|
76
|
+
return (_jsxs(Stack, { surface: "default", rounded: "xl", padding: "md", border: "default", gap: "5", children: [_jsx(Text, { size: "sm", weight: "semibold", color: "primary", children: "Upload & Copy URL" }), _jsx(MediaUploadField, { label: "Primary media asset", value: heroAssetUrl, onChange: setHeroAssetUrl, onUpload: onUpload, helperText: "Uploads via signed URL (sign \u2192 PUT \u2192 finalize) and previews the returned URL.", onAbort: handleAbort, onStagedUrlsChange: setHeroStagedUrls }), heroAssetUrl && (_jsxs(Row, { surface: "muted", padding: "inlineSm", align: "center", gap: "sm", rounded: "lg", border: "default", children: [_jsx(Text, { className: "flex-1 truncate font-mono", color: "muted", size: "xs", children: heroAssetUrl }), _jsx(Button, { type: "button", variant: "outline", onClick: () => onCopy(heroAssetUrl), children: copiedUrl === heroAssetUrl ? "Copied!" : ACTIONS.MEDIA["copy-url"].label })] })), _jsx(MediaUploadList, { label: "Gallery assets", value: galleryAssets, onChange: setGalleryAssets, onUpload: onUpload, helperText: "Attach multiple images or videos for batch checks.", onAbort: handleAbort, onStagedUrlsChange: setGalleryStagedUrls, maxItems: 12 }), galleryAssets.length > 0 && (_jsxs(Stack, { gap: "xs", children: [_jsx(Text, { size: "xs", weight: "medium", color: "muted", children: "Gallery URLs" }), galleryAssets.map((asset, i) => (_jsxs(Row, { paddingY: "y-2xs", padding: "x-xs", surface: "muted", rounded: "default", align: "center", gap: "sm", border: "default", children: [_jsx(Text, { className: "flex-1 truncate font-mono", color: "muted", size: "xs", children: asset.url }), _jsx(Button, { type: "button", variant: "ghost", onClick: () => onCopy(asset.url), children: copiedUrl === asset.url ? "Copied!" : "Copy" })] }, i)))] })), _jsxs(Row, { align: "center", gap: "sm", wrap: true, children: [_jsx(Button, { type: "button", variant: "outline", onClick: onClearPreviews, disabled: isUploadPending || isCleanupPending, children: ACTIONS.MEDIA["clear-previews"].label }), _jsx(Button, { type: "button", variant: "outline", onClick: onDiscardStaged, disabled: isUploadPending || isCleanupPending || stagedUrls.length === 0, children: isCleanupPending ? "Discarding…" : ACTIONS.MEDIA["discard-staged"].label }), _jsxs(Text, { size: "xs", color: "muted", children: [stagedUrls.length, " staged upload(s)"] })] })] }));
|
|
73
77
|
}
|
|
74
78
|
export function AdminMediaView({ labels = {}, children, ...rest }) {
|
|
75
79
|
const hasChildren = React.Children.count(children) > 0;
|
|
@@ -105,6 +109,7 @@ export function AdminMediaView({ labels = {}, children, ...rest }) {
|
|
|
105
109
|
showToast("Staged uploads cleared.", "success");
|
|
106
110
|
}
|
|
107
111
|
catch (err) {
|
|
112
|
+
void normalizeError(err);
|
|
108
113
|
setOperationMessage("Failed to discard staged media uploads.");
|
|
109
114
|
showToast(err instanceof Error ? err.message : "Failed to clear uploads.", "error");
|
|
110
115
|
}
|
|
@@ -117,6 +122,7 @@ export function AdminMediaView({ labels = {}, children, ...rest }) {
|
|
|
117
122
|
showToast("Copied!", "success");
|
|
118
123
|
}
|
|
119
124
|
catch (err) {
|
|
125
|
+
void normalizeError(err);
|
|
120
126
|
setOperationMessage("Could not copy URL to clipboard.");
|
|
121
127
|
showToast(err instanceof Error ? err.message : "Failed to copy.", "error");
|
|
122
128
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
3
4
|
import React from "react";
|
|
4
|
-
import { useMutation } from "@tanstack/react-query";
|
|
5
5
|
import { Button, Form, FormActions, Input, Select, SideDrawer, Toggle, useToast, } from "../../../ui";
|
|
6
6
|
import { apiClient } from "../../../http";
|
|
7
7
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
@@ -48,7 +48,7 @@ export function AdminNavEditorView({ open, onClose, onSaved, item, parentOptions
|
|
|
48
48
|
}
|
|
49
49
|
}, [open, item]);
|
|
50
50
|
const { showToast } = useToast();
|
|
51
|
-
const saveMutation =
|
|
51
|
+
const saveMutation = useApiMutation({
|
|
52
52
|
mutationFn: async () => {
|
|
53
53
|
const payload = {
|
|
54
54
|
label,
|
|
@@ -80,5 +80,5 @@ export function AdminNavEditorView({ open, onClose, onSaved, item, parentOptions
|
|
|
80
80
|
return (_jsx(SideDrawer, { isOpen: open, onClose: onClose, title: isEdit ? "Edit Nav Item" : "New Nav Item", children: _jsxs(Form, { onSubmit: (e) => {
|
|
81
81
|
e.preventDefault();
|
|
82
82
|
saveMutation.mutate();
|
|
83
|
-
},
|
|
83
|
+
}, spacing: "md", padding: "md", children: [_jsx(Input, { label: "Label", value: label, onChange: (e) => setLabel(e.target.value), required: true, placeholder: "e.g. Products" }), _jsx(Input, { label: "URL / href", value: href, onChange: (e) => setHref(e.target.value), required: true, placeholder: "/products", helperText: "Use relative paths (e.g. /products) or full URLs." }), _jsx(Select, { label: "Icon (optional)", options: ICON_OPTIONS, value: icon, onValueChange: setIcon }), parentOptions.length > 0 && (_jsx(Select, { label: "Parent item (for nested nav)", options: parentSelectOptions, value: parentId, onValueChange: setParentId })), _jsx(Input, { label: "Order", value: String(order), onChange: (e) => setOrder(parseInt(e.target.value, 10) || 0), type: "number", min: 0, helperText: "Lower numbers appear first." }), _jsx(Toggle, { label: "Visible in navigation", checked: isVisible, onChange: setIsVisible }), _jsxs(FormActions, { align: "right", children: [_jsx(Button, { type: "button", variant: "secondary", onClick: onClose, children: "Cancel" }), _jsx(Button, { type: "submit", isLoading: saveMutation.isPending, disabled: !canSave || saveMutation.isPending, children: isEdit ? "Save changes" : "Create item" })] })] }) }));
|
|
84
84
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
3
4
|
import React from "react";
|
|
4
|
-
import {
|
|
5
|
-
import { Alert, Button, ConfirmDeleteModal, Div, RowActionMenu, Span, StackedViewShell, Text, Toggle, useToast } from "../../../ui";
|
|
5
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
import { Alert, Button, ConfirmDeleteModal, Div, Row, RowActionMenu, Span, Stack, StackedViewShell, Text, Toggle, useToast } from "../../../ui";
|
|
6
7
|
import { apiClient } from "../../../http";
|
|
7
8
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
8
9
|
import { AdminNavEditorView } from "./AdminNavEditorView";
|
|
@@ -11,7 +12,7 @@ const __O = {
|
|
|
11
12
|
hidden: "overflow-hidden",
|
|
12
13
|
};
|
|
13
14
|
function NavItemRow({ item, idx, total, reorderPending, onMoveUp, onMoveDown, onVisibilityChange, onEdit, onDelete, }) {
|
|
14
|
-
return (_jsxs(
|
|
15
|
+
return (_jsxs(Row, { surface: "default", padding: "inline", align: "center", gap: "3", children: [_jsxs(Stack, { className: "gap-0.5 shrink-0", children: [_jsx(Button, { variant: "ghost", type: "button", onClick: () => onMoveUp(idx), disabled: idx === 0 || reorderPending, className: "text-zinc-400 hover:text-zinc-700 dark:hover:text-zinc-200 disabled:opacity-30 leading-none text-xs p-0 min-h-0 h-auto rounded-none", "aria-label": "Move up", children: "\u25B2" }), _jsx(Button, { variant: "ghost", type: "button", onClick: () => onMoveDown(idx), disabled: idx >= total - 1 || reorderPending, className: "text-zinc-400 hover:text-zinc-700 dark:hover:text-zinc-200 disabled:opacity-30 leading-none text-xs p-0 min-h-0 h-auto rounded-none", "aria-label": "Move down", children: "\u25BC" })] }), _jsxs(Div, { className: "flex-1 min-w-0", children: [_jsxs(Text, { className: "truncate", color: "primary", size: "sm", weight: "medium", children: [item.parentId ? _jsx(Span, { className: "mr-1", color: "faint", children: "\u21B3" }) : null, item.label] }), _jsx(Text, { className: "truncate", color: "muted", size: "xs", children: item.href })] }), _jsx(Toggle, { checked: item.isVisible ?? true, onChange: (val) => onVisibilityChange(item.id, val), label: "" }), _jsx(RowActionMenu, { actions: [
|
|
15
16
|
{ label: ROW_ACTION_META[ROW_ACTION_ID.EDIT].label, onClick: () => onEdit(item) },
|
|
16
17
|
{ label: ROW_ACTION_META[ROW_ACTION_ID.DELETE].label, destructive: true, onClick: () => onDelete(item) },
|
|
17
18
|
] })] }));
|
|
@@ -32,7 +33,7 @@ export function AdminNavigationView({ labels = {}, ...rest }) {
|
|
|
32
33
|
});
|
|
33
34
|
const items = data?.items ?? [];
|
|
34
35
|
const sorted = [...items].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
35
|
-
const visibilityMutation =
|
|
36
|
+
const visibilityMutation = useApiMutation({
|
|
36
37
|
mutationFn: async ({ id, isVisible }) => {
|
|
37
38
|
await apiClient.patch(ADMIN_ENDPOINTS.NAVIGATION_BY_ID(id), { isVisible });
|
|
38
39
|
},
|
|
@@ -41,7 +42,7 @@ export function AdminNavigationView({ labels = {}, ...rest }) {
|
|
|
41
42
|
},
|
|
42
43
|
onError: () => showToast("Failed to update visibility.", "error"),
|
|
43
44
|
});
|
|
44
|
-
const reorderMutation =
|
|
45
|
+
const reorderMutation = useApiMutation({
|
|
45
46
|
mutationFn: async ({ id, newOrder }) => {
|
|
46
47
|
await apiClient.patch(ADMIN_ENDPOINTS.NAVIGATION_BY_ID(id), { order: newOrder });
|
|
47
48
|
},
|
|
@@ -50,7 +51,7 @@ export function AdminNavigationView({ labels = {}, ...rest }) {
|
|
|
50
51
|
},
|
|
51
52
|
onError: () => showToast("Failed to reorder.", "error"),
|
|
52
53
|
});
|
|
53
|
-
const deleteMutation =
|
|
54
|
+
const deleteMutation = useApiMutation({
|
|
54
55
|
mutationFn: async (id) => {
|
|
55
56
|
await apiClient.delete(ADMIN_ENDPOINTS.NAVIGATION_BY_ID(id));
|
|
56
57
|
},
|
|
@@ -81,11 +82,11 @@ export function AdminNavigationView({ labels = {}, ...rest }) {
|
|
|
81
82
|
return (_jsxs(_Fragment, { children: [_jsx(StackedViewShell, { portal: "admin", ...rest, title: labels.title ?? "Navigation", sections: [
|
|
82
83
|
isLoading ? (_jsx(Alert, { variant: "info", title: "Loading", children: "Fetching nav items\u2026" }, "loading")) : null,
|
|
83
84
|
error ? (_jsx(Alert, { variant: "error", title: "Load failed", children: error instanceof Error ? error.message : "Unknown error" }, "error")) : null,
|
|
84
|
-
_jsxs(
|
|
85
|
+
_jsxs(Row, { className: "mb-4", align: "center", justify: "between", children: [_jsxs(Text, { size: "sm", color: "muted", children: [sorted.length, " nav item", sorted.length !== 1 ? "s" : ""] }), _jsx(Button, { onClick: () => {
|
|
85
86
|
setEditing(null);
|
|
86
87
|
setDrawerOpen(true);
|
|
87
88
|
}, children: "+ New item" })] }, "header"),
|
|
88
|
-
sorted.length === 0 && !isLoading ? (_jsx(Text, {
|
|
89
|
-
_jsx(Div, { className: `divide-y divide-zinc-200 dark:divide-zinc-700
|
|
89
|
+
sorted.length === 0 && !isLoading ? (_jsx(Text, { paddingY: "xl", color: "faint", size: "sm", align: "center", children: "No nav items yet. Click \"New item\" to add one." }, "empty")) : null,
|
|
90
|
+
_jsx(Div, { className: `divide-y divide-zinc-200 dark:divide-zinc-700 ${__O.hidden}`, rounded: "lg", border: "default", children: sorted.map((item, idx) => (_jsx(NavItemRow, { item: item, idx: idx, total: sorted.length, reorderPending: reorderMutation.isPending, onMoveUp: handleMoveUp, onMoveDown: handleMoveDown, onVisibilityChange: (id, isVisible) => visibilityMutation.mutate({ id, isVisible }), onEdit: (i) => { setEditing(i); setDrawerOpen(true); }, onDelete: setDeleteTarget }, item.id))) }, "list"),
|
|
90
91
|
] }), _jsx(AdminNavEditorView, { open: drawerOpen, onClose: () => setDrawerOpen(false), onSaved: () => queryClient.invalidateQueries({ queryKey: ["admin", "navigation"] }), item: editing, parentOptions: parentOptions }), _jsx(ConfirmDeleteModal, { isOpen: Boolean(deleteTarget), onClose: () => setDeleteTarget(null), onConfirm: () => deleteMutation.mutate(deleteTarget.id), isDeleting: deleteMutation.isPending, title: "Delete nav item", message: `Remove "${deleteTarget?.label}" from navigation? This cannot be undone.` })] }));
|
|
91
92
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
3
4
|
import { sieveFilter, SIEVE_OP } from "@mohasinac/appkit";
|
|
4
5
|
import { sortBy } from "@mohasinac/appkit";
|
|
5
6
|
import React, { useCallback, useState } from "react";
|
|
6
|
-
import {
|
|
7
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
7
8
|
import { Button, ConfirmDeleteModal, FilterChipGroup, ListingLayout, RowActionMenu, useToast } from "../../../ui";
|
|
8
9
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
9
10
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
@@ -17,7 +18,7 @@ export function AdminNewsletterView({ children, onBulkUnsubscribe, ...props }) {
|
|
|
17
18
|
const { showToast } = useToast();
|
|
18
19
|
const [unsubscribeOpen, setUnsubscribeOpen] = useState(false);
|
|
19
20
|
const [selectedRow, setSelectedRow] = useState(null);
|
|
20
|
-
const unsubscribeMutation =
|
|
21
|
+
const unsubscribeMutation = useApiMutation({
|
|
21
22
|
mutationFn: async (id) => {
|
|
22
23
|
await apiClient.delete(ADMIN_ENDPOINTS.NEWSLETTER_BY_ID(id));
|
|
23
24
|
},
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
4
|
+
import { Row, SIEVE_OP, Stack, sieveFilter } from "@mohasinac/appkit";
|
|
4
5
|
import { sortBy } from "@mohasinac/appkit";
|
|
5
6
|
import React, { useState } from "react";
|
|
6
|
-
import {
|
|
7
|
-
import { ConfirmDeleteModal,
|
|
7
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
8
|
+
import { ConfirmDeleteModal, ListingLayout, RowActionMenu, Text, useToast } from "../../../ui";
|
|
8
9
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
9
10
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
10
11
|
import { ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
|
|
@@ -18,7 +19,7 @@ export function AdminNotificationsView({ children, ...props }) {
|
|
|
18
19
|
const queryClient = useQueryClient();
|
|
19
20
|
const { showToast } = useToast();
|
|
20
21
|
const [deleteTarget, setDeleteTarget] = useState(null);
|
|
21
|
-
const deleteMutation =
|
|
22
|
+
const deleteMutation = useApiMutation({
|
|
22
23
|
mutationFn: async (id) => {
|
|
23
24
|
await apiClient.delete(ADMIN_ENDPOINTS.ADMIN_NOTIFICATION_BY_ID(id));
|
|
24
25
|
},
|
|
@@ -31,7 +32,7 @@ export function AdminNotificationsView({ children, ...props }) {
|
|
|
31
32
|
showToast(err?.message ?? "Failed to delete notification.", "error");
|
|
32
33
|
},
|
|
33
34
|
});
|
|
34
|
-
const resendMutation =
|
|
35
|
+
const resendMutation = useApiMutation({
|
|
35
36
|
mutationFn: async (id) => {
|
|
36
37
|
await apiClient.post(ADMIN_ENDPOINTS.ADMIN_NOTIFICATION_RESEND(id), {});
|
|
37
38
|
},
|
|
@@ -96,7 +97,7 @@ export function AdminNotificationsView({ children, ...props }) {
|
|
|
96
97
|
onClick: () => setDeleteTarget(row),
|
|
97
98
|
},
|
|
98
99
|
] })),
|
|
99
|
-
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(
|
|
100
|
+
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(Stack, { gap: "sm", children: [_jsx(Text, { className: "tracking-widest", color: "muted", size: "xs", weight: "semibold", transform: "uppercase", children: "Type" }), _jsx(Row, { wrap: true, gap: "sm", children: NOTIF_TYPES.map((opt) => (_jsx("button", { type: "button", onClick: () => setPendingFilters((p) => ({ ...p, type: opt === "All" ? "" : opt })), className: `rounded-full px-3 py-1 text-xs font-medium border transition-colors ${(pendingFilters.type || "All") === opt
|
|
100
101
|
? "bg-primary text-white border-primary"
|
|
101
102
|
: "border-zinc-300 dark:border-slate-600 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-50 dark:hover:bg-slate-800"}`, children: opt }, opt))) })] })),
|
|
102
103
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useApiMutation } from "@mohasinac/appkit/client";
|
|
3
4
|
import React from "react";
|
|
4
|
-
import {
|
|
5
|
-
import { Button,
|
|
5
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
import { Button, Form, FormActions, Input, Label, Select, SideDrawer, Stack, useToast } from "../../../ui";
|
|
6
7
|
import { apiClient } from "../../../http";
|
|
7
8
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
8
9
|
const STATUS_OPTIONS = [
|
|
@@ -41,7 +42,7 @@ export function AdminOrderEditorView({ open, onClose, orderId, orderLabel, curre
|
|
|
41
42
|
setRefundAmount("");
|
|
42
43
|
}
|
|
43
44
|
}, [open, currentStatus]);
|
|
44
|
-
const saveMutation =
|
|
45
|
+
const saveMutation = useApiMutation({
|
|
45
46
|
mutationFn: async () => {
|
|
46
47
|
const payload = {
|
|
47
48
|
status,
|
|
@@ -70,5 +71,5 @@ export function AdminOrderEditorView({ open, onClose, orderId, orderLabel, curre
|
|
|
70
71
|
return (_jsx(SideDrawer, { isOpen: open, onClose: onClose, title: orderLabel ? `Order: ${orderLabel}` : "Update Order", children: _jsxs(Form, { onSubmit: (e) => {
|
|
71
72
|
e.preventDefault();
|
|
72
73
|
saveMutation.mutate();
|
|
73
|
-
},
|
|
74
|
+
}, spacing: "md", padding: "md", children: [_jsx(Select, { label: "Order status", options: STATUS_OPTIONS, value: status, onValueChange: setStatus }), _jsx(Input, { label: "Tracking number (optional)", value: trackingNumber, onChange: (e) => setTrackingNumber(e.target.value), placeholder: "e.g. DEL1234567890IN" }), _jsx(Select, { label: "Carrier (optional)", options: CARRIER_OPTIONS, value: carrier, onValueChange: setCarrier }), _jsxs(Stack, { gap: "xs", children: [_jsx(Label, { size: "sm", weight: "medium", color: "primary", children: "Internal note (optional)" }), _jsx("textarea", { value: notes, onChange: (e) => setNotes(e.target.value), rows: 3, placeholder: "Reason for status change, escalation notes\u2026", className: "w-full rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-3 py-2 text-sm text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-primary-500" })] }), (status === "refunded" || status === "return_requested") && (_jsx(Input, { label: "Refund amount \u20B9 (optional)", type: "number", min: "0", step: "0.01", value: refundAmount, onChange: (e) => setRefundAmount(e.target.value), placeholder: "e.g. 499.00" })), _jsxs(FormActions, { align: "right", children: [_jsx(Button, { type: "button", variant: "secondary", onClick: onClose, children: "Cancel" }), _jsx(Button, { type: "submit", isLoading: saveMutation.isPending, disabled: !orderId || saveMutation.isPending, children: "Save changes" })] })] }) }));
|
|
74
75
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { ShoppingBag, Hash, Scale, Wallet, RotateCcw, DollarSign, Gavel } from "lucide-react";
|
|
3
|
-
import { Div, Heading, Span, Text,
|
|
3
|
+
import { Code, Div, Heading, Li, Row, Section, Span, Stack, Text, Ul } from "../../../ui";
|
|
4
4
|
import { GC } from "../../_guide-cls";
|
|
5
5
|
export function AdminOrdersGuideView() {
|
|
6
|
-
return (_jsxs(
|
|
6
|
+
return (_jsxs(Stack, { className: "max-w-3xl mx-auto", padding: "b-2xl", gap: "xl", children: [_jsxs(Section, { children: [_jsxs(Row, { className: "mb-2", align: "center", gap: "3", children: [_jsx(Row, { className: "flex-shrink-0 w-10 h-10", align: "center", justify: "center", rounded: "xl", style: { background: "linear-gradient(135deg,var(--appkit-color-primary-700) 0%,var(--appkit-color-cobalt) 100%)" }, children: _jsx(ShoppingBag, { className: "w-5 h-5 text-white" }) }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)] tracking-widest", size: "sm", weight: "semibold", transform: "uppercase", children: "Admin Guide" })] }), _jsx(Heading, { level: 1, className: "text-[var(--appkit-color-text)] mb-2", mdSize: "3xl", size: "2xl", weight: "bold", children: "Orders & Finance" }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", children: "Order statuses, payouts, disputes, returns, and commission math on LetItRip." })] }), [
|
|
7
7
|
{
|
|
8
8
|
Icon: ShoppingBag, title: "Order Statuses",
|
|
9
|
-
content: (_jsxs(
|
|
9
|
+
content: (_jsxs(Stack, { textSize: "sm", gap: "sm", children: [[
|
|
10
10
|
["PENDING", "Payment received. Can still be cancelled by buyer or admin."],
|
|
11
11
|
["PROCESSING", "Seller has acknowledged and is packing."],
|
|
12
12
|
["SHIPPED", "Dispatched. Tracking number provided by seller."],
|
|
@@ -14,31 +14,31 @@ export function AdminOrdersGuideView() {
|
|
|
14
14
|
["RETURN_REQUESTED", "Buyer opened a return. Seller has 3 days to respond."],
|
|
15
15
|
["REFUNDED", "Return accepted and refund issued via Razorpay."],
|
|
16
16
|
["CANCELLED", "Cancelled before shipping. Payment returned."],
|
|
17
|
-
].map(([status, note]) => (_jsxs(
|
|
17
|
+
].map(([status, note]) => (_jsxs(Row, { gap: "3", children: [_jsx(Text, { className: "flex-shrink-0 font-mono text-[var(--appkit-color-primary)] w-40", size: "xs", weight: "semibold", children: status }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", children: note })] }, status))), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)] pt-2", size: "sm", children: "Admin-only transitions: force-cancel (any status before DELIVERED), force-refund (post-DELIVERED dispute)." })] })),
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
Icon: Hash, title: "Order ID Format",
|
|
21
|
-
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: "text-
|
|
21
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: "text-[var(--appkit-color-text-muted)] mb-3", size: "sm", children: ["Format: ", _jsx(Code, { size: "xs", padding: "inline", rounded: "default", surface: "subtle", children: "order-{itemCount}-{YYYYMMDD}-{rand6}" })] }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["The item count in the ID enables quick triage \u2014 a ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "order-8-..." }), " is a large multi-item order that needs more careful handling than a ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "order-1-..." }), ". Search by order ID in the admin panel using the full ID string."] })] })),
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
Icon: Scale, title: "Intervening in a Dispute",
|
|
25
|
-
content: (_jsxs(
|
|
25
|
+
content: (_jsxs(Ul, { className: GC.listMuted, children: [_jsx(Li, { children: "Admin steps in when: seller is unresponsive for 3+ days on a return, or buyer escalates via support ticket." }), _jsxs(Li, { children: ["Admin dispute tools: ", _jsx(Span, { weight: "bold", children: "force-accept return" }), " (moves to REFUNDED and withholds seller payout), ", _jsx(Span, { weight: "bold", children: "platform credit" }), " (future feature)."] }), _jsx(Li, { children: "Document your reasoning in the support ticket before taking any force action." })] })),
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
Icon: Wallet, title: "Payouts",
|
|
29
|
-
content: (_jsxs(
|
|
29
|
+
content: (_jsxs(Ul, { className: GC.listMuted, children: [_jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "Payout cycle" }), ": Weekly. All DELIVERED orders (minus platform commission) are batched into a single payout per store."] }), _jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "Status flow" }), ": PENDING \u2192 PROCESSING \u2192 PAID / FAILED."] }), _jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "FAILED payout" }), ": Check the store's ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "payoutDetails" }), " \u2014 UPI VPA or bank details may be stale. Contact the seller via their store email before retrying."] }), _jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "ordersIncluded" }), ": Array of order IDs bundled in this payout batch \u2014 use to audit which orders are covered."] })] })),
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
Icon: RotateCcw, title: "Return Requests",
|
|
33
|
-
content: (_jsxs(
|
|
33
|
+
content: (_jsxs(Ul, { className: GC.listMuted, children: [_jsx(Li, { children: "Admin can view the return reason and attached photos on the order detail page." }), _jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "When to override a seller rejection" }), ": Only when photographic evidence clearly supports the buyer's claim of a significant not-as-described defect. Do not override for buyer's remorse."] }), _jsx(Li, { children: "After admin override: refund is issued automatically via Razorpay (3\u20137 business days for card, 1\u20132 for UPI). Seller payout for that order is withheld." })] })),
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
Icon: DollarSign, title: "Commission & Settlement Math",
|
|
37
|
-
content: (_jsxs(
|
|
37
|
+
content: (_jsxs(Ul, { className: GC.listMuted, children: [_jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "platformFee" }), ": Set in ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "siteSettings.fees.platformFee" }), " (percentage). Applied to the order's item subtotal."] }), _jsxs(Li, { children: [_jsx(Span, { weight: "bold", children: "customCommissionRate" }), ": Stored on ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "StoreDocument" }), " for stores with the ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "lower_commission_rate" }), " capability. Overrides the platform default for that store."] }), _jsx(Li, { children: "Payout = order subtotal \u00D7 (1 \u2212 commission rate). Shipping fees are passed through to the seller at cost." })] })),
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
Icon: Gavel, title: "Auction Settlement",
|
|
41
|
-
content: (_jsxs(
|
|
41
|
+
content: (_jsxs(Ul, { className: GC.listMuted, children: [_jsx(Li, { children: "When an auction ends and the winner does not pay within 48 hours: the order auto-cancels and the system notifies the next-highest bidder." }), _jsx(Li, { children: "If the auto-cancel system fails (rare), admin can manually cancel from the order detail page and trigger the next-bidder flow via a support action." }), _jsxs(Li, { children: ["Repeat non-paying winners can receive a ", _jsx(Code, { size: "xs", padding: "xs", rounded: "default", surface: "subtle", children: "place_bids" }), " soft ban from the Trust & Safety section."] })] })),
|
|
42
42
|
},
|
|
43
|
-
].map(({ Icon, title, content }) => (_jsxs(Section, { className: "
|
|
43
|
+
].map(({ Icon, title, content }) => (_jsxs(Section, { className: "border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] overflow-hidden", rounded: "2xl", children: [_jsxs(Row, { className: "border-b border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface-2,var(--appkit-color-border))]/20", padding: "inlineLg", align: "center", gap: "3", children: [_jsx(Icon, { className: "w-5 h-5 text-[var(--appkit-color-primary)]" }), _jsx(Heading, { level: 2, size: "base", weight: "semibold", children: title })] }), _jsx(Div, { paddingY: "y-md-lg", padding: "x-lg", children: content })] }, title)))] }));
|
|
44
44
|
}
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
* @example
|
|
10
10
|
* ```tsx
|
|
11
11
|
* <AdminPageHeader
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
12
|
+
* title="User Management"
|
|
13
|
+
* subtitle="Manage user accounts and permissions"
|
|
14
|
+
* actionLabel="Add User"
|
|
15
|
+
* onAction={() => setShowUserDrawer(true)}
|
|
16
|
+
* themeConfig={{
|
|
17
|
+
* gradient: "bg-info-surface",
|
|
18
|
+
* titleClass: "text-3xl font-bold",
|
|
19
|
+
* subtitleClass: "text-lg text-gray-600"
|
|
20
|
+
* }}
|
|
21
21
|
* />
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Div, Heading, Nav,
|
|
2
|
+
import { Button, Div, Heading, Nav, Row, Span, Stack, Text } from "@mohasinac/appkit/ui";
|
|
3
3
|
import { ChevronRight } from "lucide-react";
|
|
4
4
|
const __P = {
|
|
5
5
|
p6: "p-6",
|
|
6
6
|
};
|
|
7
7
|
export function AdminPageHeader({ title, subtitle, description, badge, breadcrumb, actionLabel, onAction, actionIcon, actionDisabled = false, className = "", themeConfig = {
|
|
8
|
-
gradient: "bg-
|
|
8
|
+
gradient: "bg-info-surface",
|
|
9
9
|
titleClass: "text-3xl font-bold",
|
|
10
10
|
subtitleClass: "text-lg text-gray-700",
|
|
11
11
|
spacingClass: "space-y-1",
|
|
12
12
|
}, }) {
|
|
13
|
-
return (_jsxs(Div, { className: `${themeConfig.gradient} ${__P.p6} ${className}`, children: [breadcrumb && breadcrumb.length > 0 && (_jsx(Nav, { "aria-label": "Breadcrumb",
|
|
13
|
+
return (_jsxs(Div, { className: `${themeConfig.gradient} ${__P.p6} ${className}`, children: [breadcrumb && breadcrumb.length > 0 && (_jsx(Nav, { "aria-label": "Breadcrumb", layout: "flex", gap: "xs", textSize: "sm", color: "muted", className: "mb-3", children: breadcrumb.map((crumb, index) => (_jsxs(Span, { layout: "flex", gap: "xs", children: [index > 0 && _jsx(ChevronRight, { className: "w-3 h-3 flex-shrink-0" }), crumb.href && themeConfig.TextLink ? (_jsx(themeConfig.TextLink, { href: crumb.href, className: "hover:text-zinc-700 dark:hover:text-zinc-200 transition-colors", children: crumb.label })) : (_jsx(Span, { weight: "medium", color: "primary", children: crumb.label }))] }, index))) })), _jsxs(Stack, { direction: "sm-row", align: "center", justify: "between", gap: "md", children: [_jsxs(Div, { className: themeConfig.spacingClass, children: [_jsxs(Row, { gap: "sm", wrap: true, children: [_jsx(Heading, { level: 2, className: themeConfig.titleClass, children: title }), badge && _jsx(Span, { className: "flex-shrink-0", children: badge })] }), subtitle && (_jsx(Text, { className: themeConfig.subtitleClass, children: subtitle })), description && (_jsx(Text, { className: "mt-1", color: "muted", size: "sm", children: description }))] }), actionLabel && onAction && (_jsxs(Button, { variant: "primary", onClick: onAction, disabled: actionDisabled, className: "flex-shrink-0", children: [actionIcon, actionLabel] }))] })] }));
|
|
14
14
|
}
|