@mohasinac/appkit 2.1.1 → 2.2.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/README.md +36 -65
- package/dist/cli/index.d.ts +6 -9
- package/dist/cli/index.js +167 -141
- package/dist/client.d.ts +15 -0
- package/dist/client.js +15 -0
- package/dist/constants/api-endpoint-resolver.d.ts +34 -0
- package/dist/constants/api-endpoint-resolver.js +38 -0
- package/dist/constants/api-endpoints.d.ts +388 -0
- package/dist/constants/api-endpoints.js +342 -0
- package/dist/constants/cache-invalidation.d.ts +18 -0
- package/dist/constants/cache-invalidation.js +33 -0
- package/dist/constants/index.d.ts +14 -0
- package/dist/constants/index.js +14 -0
- package/dist/contracts/auth.d.ts +58 -0
- package/dist/contracts/auth.js +2 -0
- package/dist/contracts/client-auth.d.ts +22 -0
- package/dist/contracts/client-auth.js +17 -0
- package/dist/contracts/client-payment-gateway.d.ts +65 -0
- package/dist/contracts/client-payment-gateway.js +25 -0
- package/dist/contracts/client-realtime.d.ts +24 -0
- package/dist/contracts/client-realtime.js +18 -0
- package/dist/contracts/client-session.d.ts +37 -0
- package/dist/contracts/client-session.js +22 -0
- package/dist/contracts/config.d.ts +53 -0
- package/dist/contracts/config.js +2 -0
- package/dist/contracts/email.d.ts +30 -0
- package/dist/contracts/email.js +2 -0
- package/dist/contracts/extend.d.ts +270 -0
- package/dist/contracts/extend.js +75 -0
- package/dist/contracts/feature.d.ts +53 -0
- package/dist/contracts/feature.js +2 -0
- package/dist/contracts/field-ops.d.ts +31 -0
- package/dist/contracts/field-ops.js +35 -0
- package/dist/contracts/form.d.ts +89 -0
- package/dist/contracts/form.js +80 -0
- package/dist/contracts/index.d.ts +32 -728
- package/dist/contracts/index.js +13 -4
- package/dist/contracts/infra.d.ts +43 -0
- package/dist/contracts/infra.js +2 -0
- package/dist/contracts/payment.d.ts +39 -0
- package/dist/contracts/payment.js +2 -0
- package/dist/contracts/registry.d.ts +26 -0
- package/dist/contracts/registry.js +14 -0
- package/dist/contracts/repository.d.ts +127 -0
- package/dist/contracts/repository.js +28 -0
- package/dist/contracts/search.d.ts +44 -0
- package/dist/contracts/search.js +2 -0
- package/dist/contracts/shipping.d.ts +64 -0
- package/dist/contracts/shipping.js +2 -0
- package/dist/contracts/storage.d.ts +27 -0
- package/dist/contracts/storage.js +2 -0
- package/dist/contracts/style.d.ts +23 -0
- package/dist/contracts/style.js +2 -0
- package/dist/contracts/table.d.ts +104 -0
- package/dist/contracts/table.js +68 -0
- package/dist/core/CacheManager.d.ts +31 -0
- package/dist/core/CacheManager.js +63 -0
- package/dist/core/EventBus.d.ts +27 -0
- package/dist/core/EventBus.js +75 -0
- package/dist/core/Logger.d.ts +60 -0
- package/dist/core/Logger.js +153 -0
- package/dist/core/Queue.d.ts +43 -0
- package/dist/core/Queue.js +92 -0
- package/dist/core/StorageManager.d.ts +36 -0
- package/dist/core/StorageManager.js +159 -0
- package/dist/core/baseline-resolver.d.ts +52 -0
- package/dist/core/baseline-resolver.js +74 -0
- package/dist/core/browser.d.ts +18 -0
- package/dist/core/browser.js +9 -0
- package/dist/core/copilot-log.repository.d.ts +44 -0
- package/dist/core/copilot-log.repository.js +61 -0
- package/dist/core/hooks/useSiteSettings.d.ts +1 -0
- package/dist/core/hooks/useSiteSettings.js +11 -0
- package/dist/core/index.d.ts +31 -326
- package/dist/core/index.js +21 -7
- package/dist/core/integration-keys.d.ts +30 -0
- package/dist/core/integration-keys.js +55 -0
- package/dist/core/mutation-events.d.ts +147 -0
- package/dist/core/mutation-events.js +193 -0
- package/dist/core/newsletter-actions.d.ts +20 -0
- package/dist/core/newsletter-actions.js +28 -0
- package/dist/core/newsletter.repository.d.ts +55 -0
- package/dist/core/newsletter.repository.js +109 -0
- package/dist/core/server-action.d.ts +114 -0
- package/dist/core/server-action.js +119 -0
- package/dist/core/site-config.d.ts +33 -0
- package/dist/core/site-config.js +74 -0
- package/dist/core/unit-of-work.d.ts +32 -0
- package/dist/core/unit-of-work.js +114 -0
- package/dist/errors/api-error.d.ts +4 -0
- package/dist/errors/api-error.js +6 -0
- package/dist/errors/authentication-error.d.ts +4 -0
- package/dist/errors/authentication-error.js +6 -0
- package/dist/errors/authorization-error.d.ts +4 -0
- package/dist/errors/authorization-error.js +6 -0
- package/dist/errors/base-error.d.ts +14 -0
- package/dist/errors/base-error.js +22 -0
- package/dist/errors/database-error.d.ts +4 -0
- package/dist/errors/database-error.js +6 -0
- package/dist/errors/error-codes.d.ts +43 -0
- package/dist/errors/error-codes.js +93 -0
- package/dist/errors/error-handler.d.ts +16 -0
- package/dist/errors/error-handler.js +57 -0
- package/dist/errors/index.d.ts +11 -96
- package/dist/errors/index.js +15 -4
- package/dist/errors/messages.d.ts +469 -0
- package/dist/errors/messages.js +503 -0
- package/dist/errors/not-found-error.d.ts +4 -0
- package/dist/errors/not-found-error.js +6 -0
- package/dist/errors/validation-error.d.ts +4 -0
- package/dist/errors/validation-error.js +6 -0
- package/dist/features/about/components/AboutView.d.ts +38 -0
- package/dist/features/about/components/AboutView.js +5 -0
- package/dist/features/about/index.d.ts +2 -42
- package/dist/features/about/index.js +1 -280
- package/dist/features/account/actions/address-actions.d.ts +7 -0
- package/dist/features/account/actions/address-actions.js +24 -0
- package/dist/features/account/actions/index.d.ts +1 -0
- package/dist/features/account/actions/index.js +1 -0
- package/dist/features/account/address-validation.d.ts +20 -0
- package/dist/features/account/address-validation.js +35 -0
- package/dist/features/account/api/[userId]/addresses/route.d.ts +21 -0
- package/dist/features/account/api/[userId]/addresses/route.js +91 -0
- package/dist/features/account/api/[userId]/route.d.ts +23 -0
- package/dist/features/account/api/[userId]/route.js +67 -0
- package/dist/features/account/columns/index.d.ts +17 -0
- package/dist/features/account/columns/index.js +39 -0
- package/dist/features/account/components/AddressBook.d.ts +39 -0
- package/dist/features/account/components/AddressBook.js +14 -0
- package/dist/features/account/components/AddressForm.d.ts +39 -0
- package/dist/features/account/components/AddressForm.js +55 -0
- package/dist/features/account/components/AddressSelectorCreate.d.ts +16 -0
- package/dist/features/account/components/AddressSelectorCreate.js +40 -0
- package/dist/features/account/components/BecomeSellerView.d.ts +17 -0
- package/dist/features/account/components/BecomeSellerView.js +5 -0
- package/dist/features/account/components/ChatList.d.ts +14 -0
- package/dist/features/account/components/ChatList.js +10 -0
- package/dist/features/account/components/ChatWindow.d.ts +17 -0
- package/dist/features/account/components/ChatWindow.js +6 -0
- package/dist/features/account/components/MessagesView.d.ts +16 -0
- package/dist/features/account/components/MessagesView.js +5 -0
- package/dist/features/account/components/NotificationBell.d.ts +32 -0
- package/dist/features/account/components/NotificationBell.js +80 -0
- package/dist/features/account/components/OrderDetailView.d.ts +18 -0
- package/dist/features/account/components/OrderDetailView.js +12 -0
- package/dist/features/account/components/ProfileView.d.ts +12 -0
- package/dist/features/account/components/ProfileView.js +5 -0
- package/dist/features/account/components/UserAccountHubView.d.ts +13 -0
- package/dist/features/account/components/UserAccountHubView.js +5 -0
- package/dist/features/account/components/UserAddressesView.d.ts +13 -0
- package/dist/features/account/components/UserAddressesView.js +5 -0
- package/dist/features/account/components/UserNotificationsView.d.ts +15 -0
- package/dist/features/account/components/UserNotificationsView.js +12 -0
- package/dist/features/account/components/UserOffersView.d.ts +10 -0
- package/dist/features/account/components/UserOffersView.js +5 -0
- package/dist/features/account/components/UserOrderTrackView.d.ts +16 -0
- package/dist/features/account/components/UserOrderTrackView.js +8 -0
- package/dist/features/account/components/UserOrdersView.d.ts +12 -0
- package/dist/features/account/components/UserOrdersView.js +5 -0
- package/dist/features/account/components/UserSettingsView.d.ts +15 -0
- package/dist/features/account/components/UserSettingsView.js +12 -0
- package/dist/features/account/components/index.d.ts +34 -0
- package/dist/features/account/components/index.js +17 -0
- package/dist/features/account/constants/addresses.d.ts +13 -0
- package/dist/features/account/constants/addresses.js +43 -0
- package/dist/features/account/hooks/useAccount.d.ts +13 -0
- package/dist/features/account/hooks/useAccount.js +19 -0
- package/dist/features/account/hooks/useAddressForm.d.ts +24 -0
- package/dist/features/account/hooks/useAddressForm.js +58 -0
- package/dist/features/account/hooks/useAddressSelector.d.ts +25 -0
- package/dist/features/account/hooks/useAddressSelector.js +30 -0
- package/dist/features/account/hooks/useAddresses.d.ts +59 -0
- package/dist/features/account/hooks/useAddresses.js +73 -0
- package/dist/features/account/hooks/useNotifications.d.ts +23 -0
- package/dist/features/account/hooks/useNotifications.js +31 -0
- package/dist/features/account/hooks/useProfile.d.ts +25 -0
- package/dist/features/account/hooks/useProfile.js +24 -0
- package/dist/features/account/hooks/useProfileStats.d.ts +6 -0
- package/dist/features/account/hooks/useProfileStats.js +21 -0
- package/dist/features/account/hooks/usePublicProfile.d.ts +78 -0
- package/dist/features/account/hooks/usePublicProfile.js +51 -0
- package/dist/features/account/index.d.ts +15 -555
- package/dist/features/account/index.js +15 -1003
- package/dist/features/account/manifest.d.ts +2 -0
- package/dist/features/account/manifest.js +27 -0
- package/dist/features/account/messages/en.json +12 -0
- package/dist/features/account/repository/account.repository.d.ts +11 -0
- package/dist/features/account/repository/account.repository.js +20 -0
- package/dist/features/account/repository/address.repository.d.ts +17 -0
- package/dist/features/account/repository/address.repository.js +185 -0
- package/dist/features/account/schemas/firestore.d.ts +48 -0
- package/dist/features/account/schemas/firestore.js +59 -0
- package/dist/features/account/schemas/index.d.ts +198 -0
- package/dist/features/account/schemas/index.js +51 -0
- package/dist/features/account/server.d.ts +9 -0
- package/dist/features/account/server.js +9 -0
- package/dist/features/account/types/index.d.ts +83 -0
- package/dist/features/account/types/index.js +2 -0
- package/dist/features/admin/actions/admin-actions.d.ts +35 -0
- package/dist/features/admin/actions/admin-actions.js +174 -0
- package/dist/features/admin/actions/admin-coupon-actions.d.ts +17 -0
- package/dist/features/admin/actions/admin-coupon-actions.js +87 -0
- package/dist/features/admin/actions/admin-read-actions.d.ts +105 -0
- package/dist/features/admin/actions/admin-read-actions.js +172 -0
- package/dist/features/admin/actions/chat-actions.d.ts +29 -0
- package/dist/features/admin/actions/chat-actions.js +97 -0
- package/dist/features/admin/actions/index.d.ts +6 -0
- package/dist/features/admin/actions/index.js +6 -0
- package/dist/features/admin/actions/notification-actions.d.ts +31 -0
- package/dist/features/admin/actions/notification-actions.js +42 -0
- package/dist/features/admin/actions/site-settings-actions.d.ts +8 -0
- package/dist/features/admin/actions/site-settings-actions.js +16 -0
- package/dist/features/admin/api/bids/route.d.ts +14 -0
- package/dist/features/admin/api/bids/route.js +53 -0
- package/dist/features/admin/api/coupons/route.d.ts +14 -0
- package/dist/features/admin/api/coupons/route.js +53 -0
- package/dist/features/admin/api/products/route.d.ts +14 -0
- package/dist/features/admin/api/products/route.js +54 -0
- package/dist/features/admin/api/reviews/route.d.ts +14 -0
- package/dist/features/admin/api/reviews/route.js +53 -0
- package/dist/features/admin/components/AdminAnalyticsView.d.ts +29 -0
- package/dist/features/admin/components/AdminAnalyticsView.js +15 -0
- package/dist/features/admin/components/AdminBidsView.d.ts +4 -0
- package/dist/features/admin/components/AdminBidsView.js +5 -0
- package/dist/features/admin/components/AdminBlogView.d.ts +4 -0
- package/dist/features/admin/components/AdminBlogView.js +5 -0
- package/dist/features/admin/components/AdminCarouselView.d.ts +9 -0
- package/dist/features/admin/components/AdminCarouselView.js +5 -0
- package/dist/features/admin/components/AdminCategoriesView.d.ts +9 -0
- package/dist/features/admin/components/AdminCategoriesView.js +5 -0
- package/dist/features/admin/components/AdminCouponsView.d.ts +4 -0
- package/dist/features/admin/components/AdminCouponsView.js +5 -0
- package/dist/features/admin/components/AdminDashboardView.d.ts +16 -0
- package/dist/features/admin/components/AdminDashboardView.js +11 -0
- package/dist/features/admin/components/AdminFaqsView.d.ts +4 -0
- package/dist/features/admin/components/AdminFaqsView.js +5 -0
- package/dist/features/admin/components/AdminFeatureFlagsView.d.ts +9 -0
- package/dist/features/admin/components/AdminFeatureFlagsView.js +5 -0
- package/dist/features/admin/components/AdminFilterBar.d.ts +65 -0
- package/dist/features/admin/components/AdminFilterBar.js +22 -0
- package/dist/features/admin/components/AdminMediaView.d.ts +9 -0
- package/dist/features/admin/components/AdminMediaView.js +5 -0
- package/dist/features/admin/components/AdminNavigationView.d.ts +9 -0
- package/dist/features/admin/components/AdminNavigationView.js +5 -0
- package/dist/features/admin/components/AdminOrdersView.d.ts +4 -0
- package/dist/features/admin/components/AdminOrdersView.js +5 -0
- package/dist/features/admin/components/AdminPageHeader.d.ts +53 -0
- package/dist/features/admin/components/AdminPageHeader.js +12 -0
- package/dist/features/admin/components/AdminPayoutsView.d.ts +4 -0
- package/dist/features/admin/components/AdminPayoutsView.js +5 -0
- package/dist/features/admin/components/AdminProductsView.d.ts +4 -0
- package/dist/features/admin/components/AdminProductsView.js +5 -0
- package/dist/features/admin/components/AdminReviewsView.d.ts +7 -0
- package/dist/features/admin/components/AdminReviewsView.js +5 -0
- package/dist/features/admin/components/AdminSectionsView.d.ts +9 -0
- package/dist/features/admin/components/AdminSectionsView.js +5 -0
- package/dist/features/admin/components/AdminSessionsManager.d.ts +9 -0
- package/dist/features/admin/components/AdminSessionsManager.js +5 -0
- package/dist/features/admin/components/AdminSidebar.d.ts +9 -0
- package/dist/features/admin/components/AdminSidebar.js +6 -0
- package/dist/features/admin/components/AdminSiteView.d.ts +10 -0
- package/dist/features/admin/components/AdminSiteView.js +5 -0
- package/dist/features/admin/components/AdminStoresView.d.ts +4 -0
- package/dist/features/admin/components/AdminStoresView.js +5 -0
- package/dist/features/admin/components/AdminTopBar.d.ts +8 -0
- package/dist/features/admin/components/AdminTopBar.js +8 -0
- package/dist/features/admin/components/AdminUsersView.d.ts +4 -0
- package/dist/features/admin/components/AdminUsersView.js +5 -0
- package/dist/features/admin/components/DashboardStats.d.ts +8 -0
- package/dist/features/admin/components/DashboardStats.js +21 -0
- package/dist/features/admin/components/DataTable.d.ts +19 -0
- package/dist/features/admin/components/DataTable.js +7 -0
- package/dist/features/admin/components/DemoSeedView.d.ts +11 -0
- package/dist/features/admin/components/DemoSeedView.js +5 -0
- package/dist/features/admin/components/DrawerFormFooter.d.ts +54 -0
- package/dist/features/admin/components/DrawerFormFooter.js +6 -0
- package/dist/features/admin/components/QuickActionsPanel.d.ts +15 -0
- package/dist/features/admin/components/QuickActionsPanel.js +6 -0
- package/dist/features/admin/components/analytics/AdminAnalyticsCharts.d.ts +17 -0
- package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +33 -0
- package/dist/features/admin/components/analytics/AdminStatCard.d.ts +8 -0
- package/dist/features/admin/components/analytics/AdminStatCard.js +6 -0
- package/dist/features/admin/components/analytics/AdminTopProductsTable.d.ts +16 -0
- package/dist/features/admin/components/analytics/AdminTopProductsTable.js +6 -0
- package/dist/features/admin/components/analytics/index.d.ts +3 -0
- package/dist/features/admin/components/analytics/index.js +3 -0
- package/dist/features/admin/components/index.d.ts +62 -0
- package/dist/features/admin/components/index.js +32 -0
- package/dist/features/admin/hooks/useAdmin.d.ts +9 -0
- package/dist/features/admin/hooks/useAdmin.js +14 -0
- package/dist/features/admin/hooks/useChat.d.ts +24 -0
- package/dist/features/admin/hooks/useChat.js +97 -0
- package/dist/features/admin/index.d.ts +8 -554
- package/dist/features/admin/index.js +7 -2703
- package/dist/features/admin/manifest.d.ts +2 -0
- package/dist/features/admin/manifest.js +13 -0
- package/dist/features/admin/messages/en.json +13 -0
- package/dist/features/admin/permission-map.d.ts +3 -0
- package/dist/features/admin/permission-map.js +24 -0
- package/dist/features/admin/repository/chat.repository.d.ts +70 -0
- package/dist/features/admin/repository/chat.repository.js +216 -0
- package/dist/features/admin/repository/notification.repository.d.ts +64 -0
- package/dist/features/admin/repository/notification.repository.js +225 -0
- package/dist/features/admin/repository/site-settings.repository.d.ts +118 -0
- package/dist/features/admin/repository/site-settings.repository.js +214 -0
- package/dist/features/admin/schemas/firestore.d.ts +311 -0
- package/dist/features/admin/schemas/firestore.js +246 -0
- package/dist/features/admin/schemas/index.d.ts +1 -0
- package/dist/features/admin/schemas/index.js +1 -0
- package/dist/features/admin/server.d.ts +15 -0
- package/dist/features/admin/server.js +14 -0
- package/dist/features/admin/types/index.d.ts +61 -0
- package/dist/features/admin/types/index.js +1 -0
- package/dist/features/admin/types/product.types.d.ts +78 -0
- package/dist/features/admin/types/product.types.js +13 -0
- package/dist/features/auctions/actions/bid-actions.d.ts +22 -0
- package/dist/features/auctions/actions/bid-actions.js +106 -0
- package/dist/features/auctions/actions/index.d.ts +1 -0
- package/dist/features/auctions/actions/index.js +1 -0
- package/dist/features/auctions/api/route.d.ts +14 -0
- package/dist/features/auctions/api/route.js +67 -0
- package/dist/features/auctions/columns/index.d.ts +14 -0
- package/dist/features/auctions/columns/index.js +63 -0
- package/dist/features/auctions/components/AuctionCard.d.ts +26 -0
- package/dist/features/auctions/components/AuctionCard.js +35 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +56 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +112 -0
- package/dist/features/auctions/components/MarketplaceAuctionGrid.d.ts +22 -0
- package/dist/features/auctions/components/MarketplaceAuctionGrid.js +37 -0
- package/dist/features/auctions/components/index.d.ts +3 -0
- package/dist/features/auctions/components/index.js +3 -0
- package/dist/features/auctions/hooks/useAuctions.d.ts +50 -0
- package/dist/features/auctions/hooks/useAuctions.js +93 -0
- package/dist/features/auctions/hooks/usePlaceBid.d.ts +24 -0
- package/dist/features/auctions/hooks/usePlaceBid.js +29 -0
- package/dist/features/auctions/hooks/useRealtimeBids.d.ts +38 -0
- package/dist/features/auctions/hooks/useRealtimeBids.js +66 -0
- package/dist/features/auctions/index.d.ts +8 -513
- package/dist/features/auctions/index.js +8 -1194
- package/dist/features/auctions/manifest.d.ts +2 -0
- package/dist/features/auctions/manifest.js +17 -0
- package/dist/features/auctions/messages/en.json +18 -0
- package/dist/features/auctions/repository/auctions.repository.d.ts +12 -0
- package/dist/features/auctions/repository/auctions.repository.js +42 -0
- package/dist/features/auctions/repository/bid.repository.d.ts +145 -0
- package/dist/features/auctions/repository/bid.repository.js +370 -0
- package/dist/features/auctions/schemas/firestore.d.ts +48 -0
- package/dist/features/auctions/schemas/firestore.js +50 -0
- package/dist/features/auctions/schemas/index.d.ts +155 -0
- package/dist/features/auctions/schemas/index.js +64 -0
- package/dist/features/auctions/server.d.ts +10 -0
- package/dist/features/auctions/server.js +10 -0
- package/dist/features/auctions/types/index.d.ts +73 -0
- package/dist/features/auctions/types/index.js +1 -0
- package/dist/features/auth/actions/index.d.ts +2 -0
- package/dist/features/auth/actions/index.js +2 -0
- package/dist/features/auth/actions/profile-actions.d.ts +27 -0
- package/dist/features/auth/actions/profile-actions.js +50 -0
- package/dist/features/auth/actions/realtime-token-actions.d.ts +11 -0
- package/dist/features/auth/actions/realtime-token-actions.js +31 -0
- package/dist/features/auth/api/route.d.ts +22 -0
- package/dist/features/auth/api/route.js +48 -0
- package/dist/features/auth/auth-helpers.d.ts +14 -0
- package/dist/features/auth/auth-helpers.js +68 -0
- package/dist/features/auth/components/AuthStatusPanel.d.ts +10 -0
- package/dist/features/auth/components/AuthStatusPanel.js +22 -0
- package/dist/features/auth/components/ForgotPasswordView.d.ts +18 -0
- package/dist/features/auth/components/ForgotPasswordView.js +15 -0
- package/dist/features/auth/components/Guards.d.ts +86 -0
- package/dist/features/auth/components/Guards.js +91 -0
- package/dist/features/auth/components/LoginForm.d.ts +36 -0
- package/dist/features/auth/components/LoginForm.js +18 -0
- package/dist/features/auth/components/RegisterForm.d.ts +36 -0
- package/dist/features/auth/components/RegisterForm.js +27 -0
- package/dist/features/auth/components/ResetPasswordView.d.ts +23 -0
- package/dist/features/auth/components/ResetPasswordView.js +22 -0
- package/dist/features/auth/components/SocialAuthButtons.d.ts +8 -0
- package/dist/features/auth/components/SocialAuthButtons.js +6 -0
- package/dist/features/auth/components/VerifyEmailView.d.ts +20 -0
- package/dist/features/auth/components/VerifyEmailView.js +8 -0
- package/dist/features/auth/components/index.d.ts +14 -0
- package/dist/features/auth/components/index.js +8 -0
- package/dist/features/auth/consent-otp.d.ts +52 -0
- package/dist/features/auth/consent-otp.js +120 -0
- package/dist/features/auth/hooks/useAuth.d.ts +81 -0
- package/dist/features/auth/hooks/useAuth.js +164 -0
- package/dist/features/auth/hooks/useAuthEvent.d.ts +22 -0
- package/dist/features/auth/hooks/useAuthEvent.js +31 -0
- package/dist/features/auth/hooks/useLogout.d.ts +16 -0
- package/dist/features/auth/hooks/useLogout.js +22 -0
- package/dist/features/auth/hooks/useRBAC.d.ts +38 -0
- package/dist/features/auth/hooks/useRBAC.js +80 -0
- package/dist/features/auth/index.d.ts +10 -315
- package/dist/features/auth/index.js +10 -1874
- package/dist/features/auth/manifest.d.ts +2 -0
- package/dist/features/auth/manifest.js +21 -0
- package/dist/features/auth/messages/en.json +13 -0
- package/dist/features/auth/repository/index.d.ts +4 -0
- package/dist/features/auth/repository/index.js +4 -0
- package/dist/features/auth/repository/session.repository.d.ts +44 -0
- package/dist/features/auth/repository/session.repository.js +246 -0
- package/dist/features/auth/repository/sms-counter.repository.d.ts +15 -0
- package/dist/features/auth/repository/sms-counter.repository.js +54 -0
- package/dist/features/auth/repository/token.repository.d.ts +38 -0
- package/dist/features/auth/repository/token.repository.js +186 -0
- package/dist/features/auth/repository/user.repository.d.ts +46 -0
- package/dist/features/auth/repository/user.repository.js +233 -0
- package/dist/features/auth/schemas/firestore.d.ts +351 -0
- package/dist/features/auth/schemas/firestore.js +272 -0
- package/dist/features/auth/schemas/index.d.ts +72 -0
- package/dist/features/auth/schemas/index.js +41 -0
- package/dist/features/auth/server.d.ts +15 -18
- package/dist/features/auth/server.js +21 -529
- package/dist/features/auth/token-helpers.d.ts +7 -0
- package/dist/features/auth/token-helpers.js +37 -0
- package/dist/features/auth/token-store.d.ts +39 -0
- package/dist/features/auth/token-store.js +120 -0
- package/dist/features/auth/types/index.d.ts +30 -0
- package/dist/features/auth/types/index.js +1 -0
- package/dist/features/before-after/api/[id]/route.d.ts +26 -0
- package/dist/features/before-after/api/[id]/route.js +88 -0
- package/dist/features/before-after/api/route.d.ts +13 -0
- package/dist/features/before-after/api/route.js +79 -0
- package/dist/features/before-after/columns/index.d.ts +17 -0
- package/dist/features/before-after/columns/index.js +50 -0
- package/dist/features/before-after/components/BeforeAfterGallery.d.ts +7 -0
- package/dist/features/before-after/components/BeforeAfterGallery.js +8 -0
- package/dist/features/before-after/components/BeforeAfterSlider.d.ts +7 -0
- package/dist/features/before-after/components/BeforeAfterSlider.js +27 -0
- package/dist/features/before-after/components/index.d.ts +2 -0
- package/dist/features/before-after/components/index.js +2 -0
- package/dist/features/before-after/hooks/useBeforeAfter.d.ts +15 -0
- package/dist/features/before-after/hooks/useBeforeAfter.js +25 -0
- package/dist/features/before-after/index.d.ts +6 -128
- package/dist/features/before-after/index.js +6 -546
- package/dist/features/before-after/manifest.d.ts +2 -0
- package/dist/features/before-after/manifest.js +10 -0
- package/dist/features/before-after/messages/en.json +8 -0
- package/dist/features/before-after/repository/before-after.repository.d.ts +13 -0
- package/dist/features/before-after/repository/before-after.repository.js +36 -0
- package/dist/features/before-after/schemas/index.d.ts +48 -0
- package/dist/features/before-after/schemas/index.js +24 -0
- package/dist/features/before-after/server.d.ts +7 -0
- package/dist/features/before-after/server.js +7 -0
- package/dist/features/before-after/types/index.d.ts +18 -0
- package/dist/features/before-after/types/index.js +1 -0
- package/dist/features/blog/actions/blog-actions.d.ts +302 -0
- package/dist/features/blog/actions/blog-actions.js +119 -0
- package/dist/features/blog/actions/index.d.ts +1 -0
- package/dist/features/blog/actions/index.js +1 -0
- package/dist/features/blog/api/[slug]/route.d.ts +23 -0
- package/dist/features/blog/api/[slug]/route.js +40 -0
- package/dist/features/blog/api/route.d.ts +12 -0
- package/dist/features/blog/api/route.js +64 -0
- package/dist/features/blog/columns/index.d.ts +27 -0
- package/dist/features/blog/columns/index.js +54 -0
- package/dist/features/blog/components/BlogFeaturedCard.d.ts +17 -0
- package/dist/features/blog/components/BlogFeaturedCard.js +24 -0
- package/dist/features/blog/components/BlogFilters.d.ts +106 -0
- package/dist/features/blog/components/BlogFilters.js +67 -0
- package/dist/features/blog/components/BlogListView.d.ts +29 -0
- package/dist/features/blog/components/BlogListView.js +38 -0
- package/dist/features/blog/components/BlogPostForm.d.ts +56 -0
- package/dist/features/blog/components/BlogPostForm.js +24 -0
- package/dist/features/blog/components/BlogPostView.d.ts +32 -0
- package/dist/features/blog/components/BlogPostView.js +39 -0
- package/dist/features/blog/components/index.d.ts +9 -0
- package/dist/features/blog/components/index.js +5 -0
- package/dist/features/blog/hooks/useBlog.d.ts +27 -0
- package/dist/features/blog/hooks/useBlog.js +51 -0
- package/dist/features/blog/index.d.ts +6 -492
- package/dist/features/blog/index.js +6 -4062
- package/dist/features/blog/manifest.d.ts +2 -0
- package/dist/features/blog/manifest.js +14 -0
- package/dist/features/blog/messages/en.json +14 -0
- package/dist/features/blog/repository/blog.repository.d.ts +79 -0
- package/dist/features/blog/repository/blog.repository.js +130 -0
- package/dist/features/blog/schemas/firestore.d.ts +87 -0
- package/dist/features/blog/schemas/firestore.js +99 -0
- package/dist/features/blog/schemas/index.d.ts +207 -0
- package/dist/features/blog/schemas/index.js +71 -0
- package/dist/features/blog/server.d.ts +8 -71
- package/dist/features/blog/server.js +10 -180
- package/dist/features/blog/types/index.d.ts +47 -0
- package/dist/features/blog/types/index.js +1 -0
- package/dist/features/cart/actions/cart-actions.d.ts +16 -0
- package/dist/features/cart/actions/cart-actions.js +52 -0
- package/dist/features/cart/actions/index.d.ts +1 -0
- package/dist/features/cart/actions/index.js +1 -0
- package/dist/features/cart/api/[id]/route.d.ts +21 -0
- package/dist/features/cart/api/[id]/route.js +62 -0
- package/dist/features/cart/api/route.d.ts +13 -0
- package/dist/features/cart/api/route.js +79 -0
- package/dist/features/cart/columns/index.d.ts +17 -0
- package/dist/features/cart/columns/index.js +53 -0
- package/dist/features/cart/components/CartDrawer.d.ts +27 -0
- package/dist/features/cart/components/CartDrawer.js +14 -0
- package/dist/features/cart/components/CartSummary.d.ts +19 -0
- package/dist/features/cart/components/CartSummary.js +5 -0
- package/dist/features/cart/components/CartView.d.ts +17 -0
- package/dist/features/cart/components/CartView.js +7 -0
- package/dist/features/cart/components/CheckoutAddressStep.d.ts +20 -0
- package/dist/features/cart/components/CheckoutAddressStep.js +12 -0
- package/dist/features/cart/components/CheckoutOtpModal.d.ts +15 -0
- package/dist/features/cart/components/CheckoutOtpModal.js +12 -0
- package/dist/features/cart/components/CheckoutSuccessView.d.ts +12 -0
- package/dist/features/cart/components/CheckoutSuccessView.js +9 -0
- package/dist/features/cart/components/CheckoutView.d.ts +15 -0
- package/dist/features/cart/components/CheckoutView.js +18 -0
- package/dist/features/cart/components/index.d.ts +13 -0
- package/dist/features/cart/components/index.js +7 -0
- package/dist/features/cart/hooks/useAddToCart.d.ts +27 -0
- package/dist/features/cart/hooks/useAddToCart.js +52 -0
- package/dist/features/cart/hooks/useCart.d.ts +17 -0
- package/dist/features/cart/hooks/useCart.js +24 -0
- package/dist/features/cart/hooks/useCartCount.d.ts +7 -0
- package/dist/features/cart/hooks/useCartCount.js +19 -0
- package/dist/features/cart/hooks/useCartQuery.d.ts +8 -0
- package/dist/features/cart/hooks/useCartQuery.js +11 -0
- package/dist/features/cart/hooks/useCheckoutReadQueries.d.ts +14 -0
- package/dist/features/cart/hooks/useCheckoutReadQueries.js +18 -0
- package/dist/features/cart/hooks/useGuestCart.d.ts +18 -0
- package/dist/features/cart/hooks/useGuestCart.js +32 -0
- package/dist/features/cart/hooks/useGuestCartMerge.d.ts +15 -0
- package/dist/features/cart/hooks/useGuestCartMerge.js +50 -0
- package/dist/features/cart/hooks/useOrder.d.ts +13 -0
- package/dist/features/cart/hooks/useOrder.js +24 -0
- package/dist/features/cart/index.d.ts +14 -451
- package/dist/features/cart/index.js +14 -1064
- package/dist/features/cart/manifest.d.ts +2 -0
- package/dist/features/cart/manifest.js +10 -0
- package/dist/features/cart/messages/en.json +10 -0
- package/dist/features/cart/repository/cart.repository.d.ts +23 -0
- package/dist/features/cart/repository/cart.repository.js +210 -0
- package/dist/features/cart/schemas/firestore.d.ts +83 -0
- package/dist/features/cart/schemas/firestore.js +36 -0
- package/dist/features/cart/schemas/index.d.ts +184 -0
- package/dist/features/cart/schemas/index.js +35 -0
- package/dist/features/cart/server.d.ts +8 -0
- package/dist/features/cart/server.js +8 -0
- package/dist/features/cart/types/index.d.ts +27 -0
- package/dist/features/cart/types/index.js +1 -0
- package/dist/features/cart/utils/guest-cart.d.ts +26 -0
- package/dist/features/cart/utils/guest-cart.js +83 -0
- package/dist/features/categories/actions/category-actions.d.ts +17 -0
- package/dist/features/categories/actions/category-actions.js +63 -0
- package/dist/features/categories/actions/index.d.ts +1 -0
- package/dist/features/categories/actions/index.js +1 -0
- package/dist/features/categories/api/[id]/route.d.ts +23 -0
- package/dist/features/categories/api/[id]/route.js +98 -0
- package/dist/features/categories/api/route.d.ts +19 -0
- package/dist/features/categories/api/route.js +200 -0
- package/dist/features/categories/columns/index.d.ts +15 -0
- package/dist/features/categories/columns/index.js +38 -0
- package/dist/features/categories/components/BreadcrumbTrail.d.ts +47 -0
- package/dist/features/categories/components/BreadcrumbTrail.js +36 -0
- package/dist/features/categories/components/CategoriesListView.d.ts +31 -0
- package/dist/features/categories/components/CategoriesListView.js +27 -0
- package/dist/features/categories/components/CategoryFilters.d.ts +68 -0
- package/dist/features/categories/components/CategoryFilters.js +75 -0
- package/dist/features/categories/components/CategoryForm.d.ts +24 -0
- package/dist/features/categories/components/CategoryForm.js +42 -0
- package/dist/features/categories/components/CategoryGrid.d.ts +14 -0
- package/dist/features/categories/components/CategoryGrid.js +14 -0
- package/dist/features/categories/components/CategoryProductsView.d.ts +49 -0
- package/dist/features/categories/components/CategoryProductsView.js +21 -0
- package/dist/features/categories/components/CategorySelectorCreate.d.ts +17 -0
- package/dist/features/categories/components/CategorySelectorCreate.js +57 -0
- package/dist/features/categories/components/CategorySortSelect.d.ts +9 -0
- package/dist/features/categories/components/CategorySortSelect.js +8 -0
- package/dist/features/categories/components/CategoryTableColumns.d.ts +30 -0
- package/dist/features/categories/components/CategoryTableColumns.js +54 -0
- package/dist/features/categories/components/CategoryTree.d.ts +15 -0
- package/dist/features/categories/components/CategoryTree.js +49 -0
- package/dist/features/categories/components/ConcernCard.d.ts +8 -0
- package/dist/features/categories/components/ConcernCard.js +5 -0
- package/dist/features/categories/components/ConcernGrid.d.ts +8 -0
- package/dist/features/categories/components/ConcernGrid.js +8 -0
- package/dist/features/categories/components/index.d.ts +22 -0
- package/dist/features/categories/components/index.js +12 -0
- package/dist/features/categories/hooks/useCategories.d.ts +26 -0
- package/dist/features/categories/hooks/useCategories.js +50 -0
- package/dist/features/categories/hooks/useCategorySelector.d.ts +26 -0
- package/dist/features/categories/hooks/useCategorySelector.js +42 -0
- package/dist/features/categories/index.d.ts +7 -461
- package/dist/features/categories/index.js +7 -2031
- package/dist/features/categories/manifest.d.ts +2 -0
- package/dist/features/categories/manifest.js +20 -0
- package/dist/features/categories/messages/en.json +14 -0
- package/dist/features/categories/repository/categories.repository.d.ts +31 -0
- package/dist/features/categories/repository/categories.repository.js +399 -0
- package/dist/features/categories/schemas/firestore.d.ts +140 -0
- package/dist/features/categories/schemas/firestore.js +189 -0
- package/dist/features/categories/schemas/index.d.ts +207 -0
- package/dist/features/categories/schemas/index.js +67 -0
- package/dist/features/categories/server.d.ts +7 -44
- package/dist/features/categories/server.js +10 -789
- package/dist/features/categories/types/index.d.ts +80 -0
- package/dist/features/categories/types/index.js +13 -0
- package/dist/features/checkout/actions/checkout-actions.d.ts +14 -0
- package/dist/features/checkout/actions/checkout-actions.js +91 -0
- package/dist/features/checkout/actions/index.d.ts +1 -0
- package/dist/features/checkout/actions/index.js +1 -0
- package/dist/features/checkout/components/CheckoutStepper.d.ts +10 -0
- package/dist/features/checkout/components/CheckoutStepper.js +15 -0
- package/dist/features/checkout/components/index.d.ts +1 -0
- package/dist/features/checkout/components/index.js +1 -0
- package/dist/features/checkout/hooks/useCheckout.d.ts +9 -0
- package/dist/features/checkout/hooks/useCheckout.js +24 -0
- package/dist/features/checkout/hooks/useCheckoutApi.d.ts +74 -0
- package/dist/features/checkout/hooks/useCheckoutApi.js +48 -0
- package/dist/features/checkout/hooks/usePaymentCheckout.d.ts +78 -0
- package/dist/features/checkout/hooks/usePaymentCheckout.js +178 -0
- package/dist/features/checkout/index.d.ts +8 -70
- package/dist/features/checkout/index.js +7 -192
- package/dist/features/checkout/manifest.d.ts +2 -0
- package/dist/features/checkout/manifest.js +17 -0
- package/dist/features/checkout/messages/en.json +10 -0
- package/dist/features/checkout/repository/failed-checkout.repository.d.ts +18 -0
- package/dist/features/checkout/repository/failed-checkout.repository.js +29 -0
- package/dist/features/checkout/schemas/firestore.d.ts +33 -0
- package/dist/features/checkout/schemas/firestore.js +6 -0
- package/dist/features/checkout/schemas/index.d.ts +1 -0
- package/dist/features/checkout/schemas/index.js +1 -0
- package/dist/features/checkout/server.d.ts +8 -0
- package/dist/features/checkout/server.js +8 -0
- package/dist/features/checkout/types/index.d.ts +46 -0
- package/dist/features/checkout/types/index.js +2 -0
- package/dist/features/cms/index.d.ts +1 -2
- package/dist/features/cms/index.js +5 -4
- package/dist/features/collections/api/[slug]/route.d.ts +26 -0
- package/dist/features/collections/api/[slug]/route.js +102 -0
- package/dist/features/collections/api/route.d.ts +13 -0
- package/dist/features/collections/api/route.js +79 -0
- package/dist/features/collections/columns/index.d.ts +17 -0
- package/dist/features/collections/columns/index.js +55 -0
- package/dist/features/collections/components/CollectionCard.d.ts +12 -0
- package/dist/features/collections/components/CollectionCard.js +9 -0
- package/dist/features/collections/components/index.d.ts +1 -0
- package/dist/features/collections/components/index.js +1 -0
- package/dist/features/collections/hooks/useCollections.d.ts +7 -0
- package/dist/features/collections/hooks/useCollections.js +34 -0
- package/dist/features/collections/index.d.ts +6 -148
- package/dist/features/collections/index.js +6 -378
- package/dist/features/collections/manifest.d.ts +2 -0
- package/dist/features/collections/manifest.js +16 -0
- package/dist/features/collections/messages/en.json +10 -0
- package/dist/features/collections/repository/collections.repository.d.ts +8 -0
- package/dist/features/collections/repository/collections.repository.js +16 -0
- package/dist/features/collections/schemas/index.d.ts +76 -0
- package/dist/features/collections/schemas/index.js +34 -0
- package/dist/features/collections/server.d.ts +7 -0
- package/dist/features/collections/server.js +7 -0
- package/dist/features/collections/types/index.d.ts +25 -0
- package/dist/features/collections/types/index.js +1 -0
- package/dist/features/consultation/api/[id]/route.d.ts +26 -0
- package/dist/features/consultation/api/[id]/route.js +88 -0
- package/dist/features/consultation/api/route.d.ts +13 -0
- package/dist/features/consultation/api/route.js +79 -0
- package/dist/features/consultation/columns/index.d.ts +17 -0
- package/dist/features/consultation/columns/index.js +54 -0
- package/dist/features/consultation/components/ConsultationForm.d.ts +8 -0
- package/dist/features/consultation/components/ConsultationForm.js +51 -0
- package/dist/features/consultation/components/index.d.ts +1 -0
- package/dist/features/consultation/components/index.js +1 -0
- package/dist/features/consultation/hooks/useBookConsultation.d.ts +8 -0
- package/dist/features/consultation/hooks/useBookConsultation.js +16 -0
- package/dist/features/consultation/index.d.ts +6 -172
- package/dist/features/consultation/index.js +6 -1084
- package/dist/features/consultation/manifest.d.ts +2 -0
- package/dist/features/consultation/manifest.js +12 -0
- package/dist/features/consultation/messages/en.json +25 -0
- package/dist/features/consultation/repository/consultations.repository.d.ts +12 -0
- package/dist/features/consultation/repository/consultations.repository.js +28 -0
- package/dist/features/consultation/schemas/index.d.ts +87 -0
- package/dist/features/consultation/schemas/index.js +47 -0
- package/dist/features/consultation/server.d.ts +7 -0
- package/dist/features/consultation/server.js +7 -0
- package/dist/features/consultation/types/index.d.ts +33 -0
- package/dist/features/consultation/types/index.js +1 -0
- package/dist/features/contact/components/ContactForm.d.ts +32 -0
- package/dist/features/contact/components/ContactForm.js +58 -0
- package/dist/features/contact/components/ContactInfoSidebar.d.ts +20 -0
- package/dist/features/contact/components/ContactInfoSidebar.js +6 -0
- package/dist/features/contact/components/index.d.ts +4 -0
- package/dist/features/contact/components/index.js +2 -0
- package/dist/features/contact/email.d.ts +61 -0
- package/dist/features/contact/email.js +345 -0
- package/dist/features/contact/hooks/useContactSubmit.d.ts +4 -0
- package/dist/features/contact/hooks/useContactSubmit.js +7 -0
- package/dist/features/contact/index.d.ts +2 -56
- package/dist/features/contact/index.js +2 -586
- package/dist/features/contact/server.d.ts +7 -0
- package/dist/features/contact/server.js +7 -0
- package/dist/features/copilot/components/AdminCopilotView.d.ts +21 -0
- package/dist/features/copilot/components/AdminCopilotView.js +29 -0
- package/dist/features/copilot/components/index.d.ts +2 -0
- package/dist/features/copilot/components/index.js +1 -0
- package/dist/features/copilot/hooks/useCopilotChat.d.ts +22 -0
- package/dist/features/copilot/hooks/useCopilotChat.js +57 -0
- package/dist/features/copilot/hooks/useCopilotFeedback.d.ts +15 -0
- package/dist/features/copilot/hooks/useCopilotFeedback.js +16 -0
- package/dist/features/copilot/index.d.ts +3 -47
- package/dist/features/copilot/index.js +3 -681
- package/dist/features/corporate/api/[id]/route.d.ts +26 -0
- package/dist/features/corporate/api/[id]/route.js +88 -0
- package/dist/features/corporate/api/route.d.ts +13 -0
- package/dist/features/corporate/api/route.js +79 -0
- package/dist/features/corporate/columns/index.d.ts +17 -0
- package/dist/features/corporate/columns/index.js +54 -0
- package/dist/features/corporate/components/CorporateInquiryForm.d.ts +7 -0
- package/dist/features/corporate/components/CorporateInquiryForm.js +36 -0
- package/dist/features/corporate/components/index.d.ts +1 -0
- package/dist/features/corporate/components/index.js +1 -0
- package/dist/features/corporate/hooks/useSubmitCorporateInquiry.d.ts +8 -0
- package/dist/features/corporate/hooks/useSubmitCorporateInquiry.js +16 -0
- package/dist/features/corporate/index.d.ts +6 -183
- package/dist/features/corporate/index.js +6 -782
- package/dist/features/corporate/manifest.d.ts +2 -0
- package/dist/features/corporate/manifest.js +12 -0
- package/dist/features/corporate/messages/en.json +26 -0
- package/dist/features/corporate/repository/corporate.repository.d.ts +12 -0
- package/dist/features/corporate/repository/corporate.repository.js +28 -0
- package/dist/features/corporate/schemas/index.d.ts +95 -0
- package/dist/features/corporate/schemas/index.js +50 -0
- package/dist/features/corporate/server.d.ts +7 -0
- package/dist/features/corporate/server.js +7 -0
- package/dist/features/corporate/types/index.d.ts +37 -0
- package/dist/features/corporate/types/index.js +1 -0
- package/dist/features/cron/firebase-adapters.d.ts +70 -0
- package/dist/features/cron/firebase-adapters.js +68 -0
- package/dist/features/cron/index.d.ts +5 -0
- package/dist/features/cron/index.js +7 -0
- package/dist/features/cron/jobs/auction-expiry.job.d.ts +27 -0
- package/dist/features/cron/jobs/auction-expiry.job.js +38 -0
- package/dist/features/cron/jobs/preorder-reminder.job.d.ts +14 -0
- package/dist/features/cron/jobs/preorder-reminder.job.js +40 -0
- package/dist/features/cron/registry.d.ts +45 -0
- package/dist/features/cron/registry.js +86 -0
- package/dist/features/cron/types.d.ts +66 -0
- package/dist/features/cron/types.js +9 -0
- package/dist/features/events/actions/event-actions.d.ts +92 -0
- package/dist/features/events/actions/event-actions.js +253 -0
- package/dist/features/events/actions/index.d.ts +1 -0
- package/dist/features/events/actions/index.js +1 -0
- package/dist/features/events/api/[id]/route.d.ts +24 -0
- package/dist/features/events/api/[id]/route.js +83 -0
- package/dist/features/events/api/route.d.ts +12 -0
- package/dist/features/events/api/route.js +88 -0
- package/dist/features/events/columns/index.d.ts +22 -0
- package/dist/features/events/columns/index.js +41 -0
- package/dist/features/events/components/AdminEventEntriesView.d.ts +17 -0
- package/dist/features/events/components/AdminEventEntriesView.js +10 -0
- package/dist/features/events/components/AdminEventsView.d.ts +11 -0
- package/dist/features/events/components/AdminEventsView.js +5 -0
- package/dist/features/events/components/EventBanner.d.ts +13 -0
- package/dist/features/events/components/EventBanner.js +48 -0
- package/dist/features/events/components/EventCard.d.ts +13 -0
- package/dist/features/events/components/EventCard.js +21 -0
- package/dist/features/events/components/EventDetailView.d.ts +15 -0
- package/dist/features/events/components/EventDetailView.js +11 -0
- package/dist/features/events/components/EventFilters.d.ts +105 -0
- package/dist/features/events/components/EventFilters.js +73 -0
- package/dist/features/events/components/EventFormDrawer.d.ts +22 -0
- package/dist/features/events/components/EventFormDrawer.js +6 -0
- package/dist/features/events/components/EventLeaderboard.d.ts +23 -0
- package/dist/features/events/components/EventLeaderboard.js +18 -0
- package/dist/features/events/components/EventParticipateView.d.ts +19 -0
- package/dist/features/events/components/EventParticipateView.js +13 -0
- package/dist/features/events/components/EventStatusBadge.d.ts +7 -0
- package/dist/features/events/components/EventStatusBadge.js +12 -0
- package/dist/features/events/components/EventsListView.d.ts +16 -0
- package/dist/features/events/components/EventsListView.js +21 -0
- package/dist/features/events/components/index.d.ts +19 -0
- package/dist/features/events/components/index.js +11 -0
- package/dist/features/events/hooks/useBulkEvent.d.ts +19 -0
- package/dist/features/events/hooks/useBulkEvent.js +36 -0
- package/dist/features/events/hooks/useEvent.d.ts +43 -0
- package/dist/features/events/hooks/useEvent.js +55 -0
- package/dist/features/events/hooks/useEvents.d.ts +27 -0
- package/dist/features/events/hooks/useEvents.js +38 -0
- package/dist/features/events/index.d.ts +8 -841
- package/dist/features/events/index.js +8 -1453
- package/dist/features/events/manifest.d.ts +2 -0
- package/dist/features/events/manifest.js +24 -0
- package/dist/features/events/messages/en.json +28 -0
- package/dist/features/events/repository/event-entry.repository.d.ts +17 -0
- package/dist/features/events/repository/event-entry.repository.js +115 -0
- package/dist/features/events/repository/events.repository.d.ts +18 -0
- package/dist/features/events/repository/events.repository.js +128 -0
- package/dist/features/events/schemas/firestore.d.ts +115 -0
- package/dist/features/events/schemas/firestore.js +77 -0
- package/dist/features/events/schemas/index.d.ts +383 -0
- package/dist/features/events/schemas/index.js +87 -0
- package/dist/features/events/server.d.ts +8 -37
- package/dist/features/events/server.js +11 -195
- package/dist/features/events/types/index.d.ts +133 -0
- package/dist/features/events/types/index.js +1 -0
- package/dist/features/faq/actions/faq-actions.d.ts +191 -0
- package/dist/features/faq/actions/faq-actions.js +103 -0
- package/dist/features/faq/actions/index.d.ts +1 -0
- package/dist/features/faq/actions/index.js +1 -0
- package/dist/features/faq/api/route.d.ts +11 -0
- package/dist/features/faq/api/route.js +50 -0
- package/dist/features/faq/columns/index.d.ts +15 -0
- package/dist/features/faq/columns/index.js +47 -0
- package/dist/features/faq/components/ContactCTA.d.ts +16 -0
- package/dist/features/faq/components/ContactCTA.js +6 -0
- package/dist/features/faq/components/FAQAccordion.d.ts +20 -0
- package/dist/features/faq/components/FAQAccordion.js +17 -0
- package/dist/features/faq/components/FAQCategorySidebar.d.ts +24 -0
- package/dist/features/faq/components/FAQCategorySidebar.js +15 -0
- package/dist/features/faq/components/FAQHelpfulButtons.d.ts +19 -0
- package/dist/features/faq/components/FAQHelpfulButtons.js +46 -0
- package/dist/features/faq/components/FAQPageContent.d.ts +54 -0
- package/dist/features/faq/components/FAQPageContent.js +67 -0
- package/dist/features/faq/components/FAQSortDropdown.d.ts +13 -0
- package/dist/features/faq/components/FAQSortDropdown.js +11 -0
- package/dist/features/faq/components/RelatedFAQs.d.ts +10 -0
- package/dist/features/faq/components/RelatedFAQs.js +9 -0
- package/dist/features/faq/components/index.d.ts +9 -0
- package/dist/features/faq/components/index.js +7 -0
- package/dist/features/faq/hooks/useFAQs.d.ts +22 -0
- package/dist/features/faq/hooks/useFAQs.js +42 -0
- package/dist/features/faq/hooks/useFaqList.d.ts +194 -0
- package/dist/features/faq/hooks/useFaqList.js +35 -0
- package/dist/features/faq/hooks/useFaqVote.d.ts +14 -0
- package/dist/features/faq/hooks/useFaqVote.js +10 -0
- package/dist/features/faq/index.d.ts +8 -619
- package/dist/features/faq/index.js +8 -1685
- package/dist/features/faq/manifest.d.ts +2 -0
- package/dist/features/faq/manifest.js +10 -0
- package/dist/features/faq/messages/en.json +14 -0
- package/dist/features/faq/repository/faqs.repository.d.ts +43 -0
- package/dist/features/faq/repository/faqs.repository.js +300 -0
- package/dist/features/faq/schemas/firestore.d.ts +63 -0
- package/dist/features/faq/schemas/firestore.js +115 -0
- package/dist/features/faq/schemas/index.d.ts +157 -0
- package/dist/features/faq/schemas/index.js +62 -0
- package/dist/features/faq/server.d.ts +9 -0
- package/dist/features/faq/server.js +9 -0
- package/dist/features/faq/types/index.d.ts +52 -0
- package/dist/features/faq/types/index.js +1 -0
- package/dist/features/filters/FilterFacetSection.d.ts +23 -0
- package/dist/features/filters/FilterFacetSection.js +39 -0
- package/dist/features/filters/FilterPanel.d.ts +61 -0
- package/dist/features/filters/FilterPanel.js +40 -0
- package/dist/features/filters/RangeFilter.d.ts +23 -0
- package/dist/features/filters/RangeFilter.js +28 -0
- package/dist/features/filters/SwitchFilter.d.ts +12 -0
- package/dist/features/filters/SwitchFilter.js +19 -0
- package/dist/features/filters/filterUtils.d.ts +11 -0
- package/dist/features/filters/filterUtils.js +13 -0
- package/dist/features/filters/index.d.ts +10 -136
- package/dist/features/filters/index.js +6 -1061
- package/dist/features/forms/Checkbox.d.ts +8 -0
- package/dist/features/forms/Checkbox.js +15 -0
- package/dist/features/forms/Form.d.ts +25 -0
- package/dist/features/forms/Form.js +38 -0
- package/dist/features/forms/Input.d.ts +10 -0
- package/dist/features/forms/Input.js +23 -0
- package/dist/features/forms/Radio.d.ts +17 -0
- package/dist/features/forms/Radio.js +19 -0
- package/dist/features/forms/Select.d.ts +13 -0
- package/dist/features/forms/Select.js +8 -0
- package/dist/features/forms/Slider.d.ts +20 -0
- package/dist/features/forms/Slider.js +22 -0
- package/dist/features/forms/Textarea.d.ts +8 -0
- package/dist/features/forms/Textarea.js +15 -0
- package/dist/features/forms/Toggle.d.ts +15 -0
- package/dist/features/forms/Toggle.js +48 -0
- package/dist/features/forms/index.d.ts +17 -129
- package/dist/features/forms/index.js +11 -915
- package/dist/features/forms/utils.d.ts +10 -0
- package/dist/features/forms/utils.js +13 -0
- package/dist/features/homepage/actions/carousel-actions.d.ts +37 -0
- package/dist/features/homepage/actions/carousel-actions.js +54 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +46 -0
- package/dist/features/homepage/actions/homepage-section-actions.js +55 -0
- package/dist/features/homepage/actions/index.d.ts +2 -0
- package/dist/features/homepage/actions/index.js +2 -0
- package/dist/features/homepage/api/[id]/route.d.ts +23 -0
- package/dist/features/homepage/api/[id]/route.js +100 -0
- package/dist/features/homepage/api/carousel/[id]/route.d.ts +23 -0
- package/dist/features/homepage/api/carousel/[id]/route.js +122 -0
- package/dist/features/homepage/api/carousel/route.d.ts +15 -0
- package/dist/features/homepage/api/carousel/route.js +154 -0
- package/dist/features/homepage/api/route.d.ts +14 -0
- package/dist/features/homepage/api/route.js +136 -0
- package/dist/features/homepage/api/sections/[id]/route.d.ts +26 -0
- package/dist/features/homepage/api/sections/[id]/route.js +88 -0
- package/dist/features/homepage/api/sections/route.d.ts +13 -0
- package/dist/features/homepage/api/sections/route.js +79 -0
- package/dist/features/homepage/components/AdvertisementBanner.d.ts +13 -0
- package/dist/features/homepage/components/AdvertisementBanner.js +23 -0
- package/dist/features/homepage/components/BeforeAfterCard.d.ts +10 -0
- package/dist/features/homepage/components/BeforeAfterCard.js +54 -0
- package/dist/features/homepage/components/CharacterHotspot.d.ts +24 -0
- package/dist/features/homepage/components/CharacterHotspot.js +373 -0
- package/dist/features/homepage/components/CharacterHotspotForm.d.ts +26 -0
- package/dist/features/homepage/components/CharacterHotspotForm.js +309 -0
- package/dist/features/homepage/components/CustomerReviewsSection.d.ts +13 -0
- package/dist/features/homepage/components/CustomerReviewsSection.js +14 -0
- package/dist/features/homepage/components/FAQSection.d.ts +26 -0
- package/dist/features/homepage/components/FAQSection.js +20 -0
- package/dist/features/homepage/components/FeaturedResultsSection.d.ts +17 -0
- package/dist/features/homepage/components/FeaturedResultsSection.js +18 -0
- package/dist/features/homepage/components/HeroBanner.d.ts +7 -0
- package/dist/features/homepage/components/HeroBanner.js +93 -0
- package/dist/features/homepage/components/HeroCarousel.d.ts +12 -0
- package/dist/features/homepage/components/HeroCarousel.js +157 -0
- package/dist/features/homepage/components/HeroSection.d.ts +7 -0
- package/dist/features/homepage/components/HeroSection.js +12 -0
- package/dist/features/homepage/components/HomepageSkeleton.d.ts +2 -0
- package/dist/features/homepage/components/HomepageSkeleton.js +14 -0
- package/dist/features/homepage/components/HomepageView.d.ts +25 -0
- package/dist/features/homepage/components/HomepageView.js +5 -0
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +36 -0
- package/dist/features/homepage/components/HowItWorksInfoView.js +8 -0
- package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -0
- package/dist/features/homepage/components/HowItWorksSection.js +36 -0
- package/dist/features/homepage/components/NewsletterBanner.d.ts +22 -0
- package/dist/features/homepage/components/NewsletterBanner.js +34 -0
- package/dist/features/homepage/components/NewsletterSection.d.ts +10 -0
- package/dist/features/homepage/components/NewsletterSection.js +8 -0
- package/dist/features/homepage/components/PromoGrid.d.ts +9 -0
- package/dist/features/homepage/components/PromoGrid.js +35 -0
- package/dist/features/homepage/components/SectionCarousel.d.ts +75 -0
- package/dist/features/homepage/components/SectionCarousel.js +39 -0
- package/dist/features/homepage/components/SecurityHighlightsSection.d.ts +21 -0
- package/dist/features/homepage/components/SecurityHighlightsSection.js +36 -0
- package/dist/features/homepage/components/SiteFeaturesSection.d.ts +13 -0
- package/dist/features/homepage/components/SiteFeaturesSection.js +9 -0
- package/dist/features/homepage/components/StatsCounterSection.d.ts +14 -0
- package/dist/features/homepage/components/StatsCounterSection.js +32 -0
- package/dist/features/homepage/components/TestimonialsCarousel.d.ts +9 -0
- package/dist/features/homepage/components/TestimonialsCarousel.js +30 -0
- package/dist/features/homepage/components/TrustBadges.d.ts +5 -0
- package/dist/features/homepage/components/TrustBadges.js +54 -0
- package/dist/features/homepage/components/TrustFeaturesSection.d.ts +16 -0
- package/dist/features/homepage/components/TrustFeaturesSection.js +41 -0
- package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +11 -0
- package/dist/features/homepage/components/TrustIndicatorsSection.js +9 -0
- package/dist/features/homepage/components/WelcomeSection.d.ts +20 -0
- package/dist/features/homepage/components/WelcomeSection.js +12 -0
- package/dist/features/homepage/components/WhatsAppCommunitySection.d.ts +15 -0
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +21 -0
- package/dist/features/homepage/components/index.d.ts +52 -0
- package/dist/features/homepage/components/index.js +27 -0
- package/dist/features/homepage/hooks/useBlogArticles.d.ts +12 -0
- package/dist/features/homepage/hooks/useBlogArticles.js +31 -0
- package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +2 -0
- package/dist/features/homepage/hooks/useFeaturedAuctions.js +26 -0
- package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +2 -0
- package/dist/features/homepage/hooks/useFeaturedPreOrders.js +26 -0
- package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +4 -0
- package/dist/features/homepage/hooks/useFeaturedProducts.js +32 -0
- package/dist/features/homepage/hooks/useHeroCarousel.d.ts +9 -0
- package/dist/features/homepage/hooks/useHeroCarousel.js +17 -0
- package/dist/features/homepage/hooks/useHomepage.d.ts +11 -0
- package/dist/features/homepage/hooks/useHomepage.js +18 -0
- package/dist/features/homepage/hooks/useHomepageReviews.d.ts +7 -0
- package/dist/features/homepage/hooks/useHomepageReviews.js +16 -0
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +2 -0
- package/dist/features/homepage/hooks/useHomepageSections.js +11 -0
- package/dist/features/homepage/hooks/useNewsletter.d.ts +14 -0
- package/dist/features/homepage/hooks/useNewsletter.js +10 -0
- package/dist/features/homepage/hooks/useTopBrands.d.ts +2 -0
- package/dist/features/homepage/hooks/useTopBrands.js +12 -0
- package/dist/features/homepage/hooks/useTopCategories.d.ts +4 -0
- package/dist/features/homepage/hooks/useTopCategories.js +13 -0
- package/dist/features/homepage/index.d.ts +13 -846
- package/dist/features/homepage/index.js +13 -6279
- package/dist/features/homepage/manifest.d.ts +2 -0
- package/dist/features/homepage/manifest.js +14 -0
- package/dist/features/homepage/messages/en.json +6 -0
- package/dist/features/homepage/repository/carousel.repository.d.ts +101 -0
- package/dist/features/homepage/repository/carousel.repository.js +252 -0
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +27 -0
- package/dist/features/homepage/repository/homepage-sections.repository.js +174 -0
- package/dist/features/homepage/repository/homepage.repository.d.ts +11 -0
- package/dist/features/homepage/repository/homepage.repository.js +25 -0
- package/dist/features/homepage/schemas/firestore.d.ts +251 -0
- package/dist/features/homepage/schemas/firestore.js +83 -0
- package/dist/features/homepage/schemas/index.d.ts +1 -0
- package/dist/features/homepage/schemas/index.js +1 -0
- package/dist/features/homepage/server.d.ts +10 -121
- package/dist/features/homepage/server.js +10 -1024
- package/dist/features/homepage/types/index.d.ts +163 -0
- package/dist/features/homepage/types/index.js +1 -0
- package/dist/features/layout/AutoBreadcrumbs.d.ts +15 -0
- package/dist/features/layout/AutoBreadcrumbs.js +84 -0
- package/dist/features/layout/BackToTop.d.ts +16 -0
- package/dist/features/layout/BackToTop.js +26 -0
- package/dist/features/layout/BottomActions.d.ts +1 -0
- package/dist/features/layout/BottomActions.js +153 -0
- package/dist/features/layout/BottomActionsContext.d.ts +107 -0
- package/dist/features/layout/BottomActionsContext.js +114 -0
- package/dist/features/layout/BottomNavItem.d.ts +28 -0
- package/dist/features/layout/BottomNavItem.js +28 -0
- package/dist/features/layout/BottomNavLayout.d.ts +14 -0
- package/dist/features/layout/BottomNavLayout.js +12 -0
- package/dist/features/layout/BottomNavbar.d.ts +46 -0
- package/dist/features/layout/BottomNavbar.js +19 -0
- package/dist/features/layout/BottomSheet.d.ts +29 -0
- package/dist/features/layout/BottomSheet.js +40 -0
- package/dist/features/layout/Breadcrumbs.d.ts +26 -0
- package/dist/features/layout/Breadcrumbs.js +25 -0
- package/dist/features/layout/DashboardNavContext.d.ts +19 -0
- package/dist/features/layout/DashboardNavContext.js +36 -0
- package/dist/features/layout/FooterLayout.d.ts +39 -0
- package/dist/features/layout/FooterLayout.js +12 -0
- package/dist/features/layout/LayoutClient.d.ts +11 -0
- package/dist/features/layout/LayoutClient.js +7 -0
- package/dist/features/layout/ListingLayout.d.ts +35 -0
- package/dist/features/layout/ListingLayout.js +104 -0
- package/dist/features/layout/LocaleSwitcher.d.ts +22 -0
- package/dist/features/layout/LocaleSwitcher.js +12 -0
- package/dist/features/layout/MainNavbar.d.ts +32 -0
- package/dist/features/layout/MainNavbar.js +29 -0
- package/dist/features/layout/NavItem.d.ts +19 -0
- package/dist/features/layout/NavItem.js +35 -0
- package/dist/features/layout/NavbarLayout.d.ts +27 -0
- package/dist/features/layout/NavbarLayout.js +23 -0
- package/dist/features/layout/SidebarLayout.d.ts +24 -0
- package/dist/features/layout/SidebarLayout.js +29 -0
- package/dist/features/layout/TitleBar.d.ts +18 -0
- package/dist/features/layout/TitleBar.js +19 -0
- package/dist/features/layout/TitleBarLayout.d.ts +48 -0
- package/dist/features/layout/TitleBarLayout.js +17 -0
- package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
- package/dist/features/layout/hooks/useBottomActions.js +28 -0
- package/dist/features/layout/index.d.ts +41 -315
- package/dist/features/layout/index.js +23 -1745
- package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +12 -0
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +36 -0
- package/dist/features/loyalty/api/balance/route.d.ts +12 -0
- package/dist/features/loyalty/api/balance/route.js +39 -0
- package/dist/features/loyalty/api/earn/route.d.ts +12 -0
- package/dist/features/loyalty/api/earn/route.js +36 -0
- package/dist/features/loyalty/api/history/route.d.ts +12 -0
- package/dist/features/loyalty/api/history/route.js +56 -0
- package/dist/features/loyalty/api/redeem/route.d.ts +12 -0
- package/dist/features/loyalty/api/redeem/route.js +36 -0
- package/dist/features/loyalty/columns/index.d.ts +17 -0
- package/dist/features/loyalty/columns/index.js +40 -0
- package/dist/features/loyalty/components/CoinsDisplay.d.ts +11 -0
- package/dist/features/loyalty/components/CoinsDisplay.js +9 -0
- package/dist/features/loyalty/components/index.d.ts +1 -0
- package/dist/features/loyalty/components/index.js +1 -0
- package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +4 -0
- package/dist/features/loyalty/hooks/useLoyaltyBalance.js +18 -0
- package/dist/features/loyalty/index.d.ts +6 -174
- package/dist/features/loyalty/index.js +6 -332
- package/dist/features/loyalty/manifest.d.ts +2 -0
- package/dist/features/loyalty/manifest.js +16 -0
- package/dist/features/loyalty/messages/en.json +19 -0
- package/dist/features/loyalty/repository/loyalty.repository.d.ts +8 -0
- package/dist/features/loyalty/repository/loyalty.repository.js +22 -0
- package/dist/features/loyalty/schemas/index.d.ts +85 -0
- package/dist/features/loyalty/schemas/index.js +40 -0
- package/dist/features/loyalty/server.d.ts +7 -0
- package/dist/features/loyalty/server.js +7 -0
- package/dist/features/loyalty/types/index.d.ts +31 -0
- package/dist/features/loyalty/types/index.js +1 -0
- package/dist/features/loyalty/types/loyalty-config.d.ts +7 -0
- package/dist/features/loyalty/types/loyalty-config.js +1 -0
- package/dist/features/loyalty/types/loyalty-math.d.ts +9 -0
- package/dist/features/loyalty/types/loyalty-math.js +27 -0
- package/dist/features/media/AvatarUpload.d.ts +22 -0
- package/dist/features/media/AvatarUpload.js +133 -0
- package/dist/features/media/MediaAvatar.d.ts +12 -0
- package/dist/features/media/MediaAvatar.js +13 -0
- package/dist/features/media/MediaImage.d.ts +28 -0
- package/dist/features/media/MediaImage.js +35 -0
- package/dist/features/media/MediaLightbox.d.ts +32 -0
- package/dist/features/media/MediaLightbox.js +245 -0
- package/dist/features/media/MediaVideo.d.ts +22 -0
- package/dist/features/media/MediaVideo.js +38 -0
- package/dist/features/media/components/MediaSlider.d.ts +10 -0
- package/dist/features/media/components/MediaSlider.js +12 -0
- package/dist/features/media/finalize.d.ts +11 -0
- package/dist/features/media/finalize.js +70 -0
- package/dist/features/media/hooks/useMedia.d.ts +198 -0
- package/dist/features/media/hooks/useMedia.js +78 -0
- package/dist/features/media/index.d.ts +30 -425
- package/dist/features/media/index.js +21 -3593
- package/dist/features/media/messages/en.json +63 -0
- package/dist/features/media/modals/ImageCropModal.d.ts +16 -0
- package/dist/features/media/modals/ImageCropModal.js +99 -0
- package/dist/features/media/modals/VideoThumbnailSelector.d.ts +10 -0
- package/dist/features/media/modals/VideoThumbnailSelector.js +51 -0
- package/dist/features/media/modals/VideoTrimModal.d.ts +11 -0
- package/dist/features/media/modals/VideoTrimModal.js +73 -0
- package/dist/features/media/server.d.ts +2 -0
- package/dist/features/media/server.js +2 -0
- package/dist/features/media/types/index.d.ts +29 -0
- package/dist/features/media/types/index.js +43 -0
- package/dist/features/media/upload/CameraCapture.d.ts +8 -0
- package/dist/features/media/upload/CameraCapture.js +59 -0
- package/dist/features/media/upload/ImageUpload.d.ts +14 -0
- package/dist/features/media/upload/ImageUpload.js +132 -0
- package/dist/features/media/upload/MediaUploadField.d.ts +31 -0
- package/dist/features/media/upload/MediaUploadField.js +204 -0
- package/dist/features/media/upload/MediaUploadList.d.ts +26 -0
- package/dist/features/media/upload/MediaUploadList.js +104 -0
- package/dist/features/orders/actions/index.d.ts +2 -0
- package/dist/features/orders/actions/index.js +2 -0
- package/dist/features/orders/actions/order-actions.d.ts +16 -0
- package/dist/features/orders/actions/order-actions.js +46 -0
- package/dist/features/orders/actions/refund-actions.d.ts +16 -0
- package/dist/features/orders/actions/refund-actions.js +88 -0
- package/dist/features/orders/api/track/[trackingId]/route.d.ts +17 -0
- package/dist/features/orders/api/track/[trackingId]/route.js +30 -0
- package/dist/features/orders/columns/index.d.ts +15 -0
- package/dist/features/orders/columns/index.js +34 -0
- package/dist/features/orders/components/MarketplaceOrderCard.d.ts +37 -0
- package/dist/features/orders/components/MarketplaceOrderCard.js +52 -0
- package/dist/features/orders/components/OrderFilters.d.ts +82 -0
- package/dist/features/orders/components/OrderFilters.js +106 -0
- package/dist/features/orders/components/OrdersList.d.ts +18 -0
- package/dist/features/orders/components/OrdersList.js +37 -0
- package/dist/features/orders/components/index.d.ts +4 -0
- package/dist/features/orders/components/index.js +3 -0
- package/dist/features/orders/hooks/useOrders.d.ts +32 -0
- package/dist/features/orders/hooks/useOrders.js +57 -0
- package/dist/features/orders/index.d.ts +7 -370
- package/dist/features/orders/index.js +7 -863
- package/dist/features/orders/manifest.d.ts +2 -0
- package/dist/features/orders/manifest.js +18 -0
- package/dist/features/orders/messages/en.json +15 -0
- package/dist/features/orders/repository/orders.repository.d.ts +188 -0
- package/dist/features/orders/repository/orders.repository.js +300 -0
- package/dist/features/orders/schemas/firestore.d.ts +129 -0
- package/dist/features/orders/schemas/firestore.js +96 -0
- package/dist/features/orders/schemas/index.d.ts +217 -0
- package/dist/features/orders/schemas/index.js +76 -0
- package/dist/features/orders/server.d.ts +9 -0
- package/dist/features/orders/server.js +10 -0
- package/dist/features/orders/types/index.d.ts +69 -0
- package/dist/features/orders/types/index.js +2 -0
- package/dist/features/orders/utils/order-splitter.d.ts +14 -0
- package/dist/features/orders/utils/order-splitter.js +29 -0
- package/dist/features/payments/columns/index.d.ts +17 -0
- package/dist/features/payments/columns/index.js +45 -0
- package/dist/features/payments/hooks/usePaymentEvent.d.ts +17 -0
- package/dist/features/payments/hooks/usePaymentEvent.js +26 -0
- package/dist/features/payments/hooks/usePayments.d.ts +10 -0
- package/dist/features/payments/hooks/usePayments.js +19 -0
- package/dist/features/payments/index.d.ts +6 -141
- package/dist/features/payments/index.js +6 -331
- package/dist/features/payments/manifest.d.ts +2 -0
- package/dist/features/payments/manifest.js +12 -0
- package/dist/features/payments/messages/en.json +11 -0
- package/dist/features/payments/repository/payments.repository.d.ts +15 -0
- package/dist/features/payments/repository/payments.repository.js +36 -0
- package/dist/features/payments/repository/payout.repository.d.ts +111 -0
- package/dist/features/payments/repository/payout.repository.js +202 -0
- package/dist/features/payments/schemas/firestore.d.ts +74 -0
- package/dist/features/payments/schemas/firestore.js +65 -0
- package/dist/features/payments/schemas/index.d.ts +77 -0
- package/dist/features/payments/schemas/index.js +67 -0
- package/dist/features/payments/server.d.ts +8 -0
- package/dist/features/payments/server.js +8 -0
- package/dist/features/payments/types/index.d.ts +36 -0
- package/dist/features/payments/types/index.js +2 -0
- package/dist/features/pre-orders/api/[id]/route.d.ts +26 -0
- package/dist/features/pre-orders/api/[id]/route.js +88 -0
- package/dist/features/pre-orders/api/[slug]/route.d.ts +16 -0
- package/dist/features/pre-orders/api/[slug]/route.js +41 -0
- package/dist/features/pre-orders/api/admin/[id]/route.d.ts +21 -0
- package/dist/features/pre-orders/api/admin/[id]/route.js +65 -0
- package/dist/features/pre-orders/api/admin/route.d.ts +12 -0
- package/dist/features/pre-orders/api/admin/route.js +56 -0
- package/dist/features/pre-orders/api/route.d.ts +13 -0
- package/dist/features/pre-orders/api/route.js +77 -0
- package/dist/features/pre-orders/columns/index.d.ts +17 -0
- package/dist/features/pre-orders/columns/index.js +68 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +24 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +53 -0
- package/dist/features/pre-orders/components/PreOrderBadge.d.ts +14 -0
- package/dist/features/pre-orders/components/PreOrderBadge.js +17 -0
- package/dist/features/pre-orders/components/PreorderCard.d.ts +12 -0
- package/dist/features/pre-orders/components/PreorderCard.js +27 -0
- package/dist/features/pre-orders/components/index.d.ts +2 -0
- package/dist/features/pre-orders/components/index.js +2 -0
- package/dist/features/pre-orders/hooks/usePreOrders.d.ts +7 -0
- package/dist/features/pre-orders/hooks/usePreOrders.js +34 -0
- package/dist/features/pre-orders/index.d.ts +6 -170
- package/dist/features/pre-orders/index.js +6 -538
- package/dist/features/pre-orders/manifest.d.ts +2 -0
- package/dist/features/pre-orders/manifest.js +17 -0
- package/dist/features/pre-orders/messages/en.json +13 -0
- package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +14 -0
- package/dist/features/pre-orders/repository/pre-orders.repository.js +44 -0
- package/dist/features/pre-orders/repository/preorders.repository.d.ts +8 -0
- package/dist/features/pre-orders/repository/preorders.repository.js +21 -0
- package/dist/features/pre-orders/schemas/index.d.ts +79 -0
- package/dist/features/pre-orders/schemas/index.js +27 -0
- package/dist/features/pre-orders/server.d.ts +5 -14
- package/dist/features/pre-orders/server.js +8 -106
- package/dist/features/pre-orders/types/index.d.ts +29 -0
- package/dist/features/pre-orders/types/index.js +12 -0
- package/dist/features/products/actions/index.d.ts +1 -0
- package/dist/features/products/actions/index.js +1 -0
- package/dist/features/products/actions/product-actions.d.ts +26 -0
- package/dist/features/products/actions/product-actions.js +111 -0
- package/dist/features/products/api/[id]/route.d.ts +29 -0
- package/dist/features/products/api/[id]/route.js +137 -0
- package/dist/features/products/api/route.d.ts +19 -0
- package/dist/features/products/api/route.js +214 -0
- package/dist/features/products/columns/index.d.ts +64 -0
- package/dist/features/products/columns/index.js +85 -0
- package/dist/features/products/columns/productTableColumns.d.ts +27 -0
- package/dist/features/products/columns/productTableColumns.js +88 -0
- package/dist/features/products/components/AuctionDetailView.d.ts +13 -0
- package/dist/features/products/components/AuctionDetailView.js +9 -0
- package/dist/features/products/components/AuctionsView.d.ts +6 -0
- package/dist/features/products/components/AuctionsView.js +5 -0
- package/dist/features/products/components/BidHistory.d.ts +28 -0
- package/dist/features/products/components/BidHistory.js +18 -0
- package/dist/features/products/components/BuyBar.d.ts +21 -0
- package/dist/features/products/components/BuyBar.js +20 -0
- package/dist/features/products/components/InteractiveProductCard.d.ts +19 -0
- package/dist/features/products/components/InteractiveProductCard.js +18 -0
- package/dist/features/products/components/MakeOfferForm.d.ts +20 -0
- package/dist/features/products/components/MakeOfferForm.js +8 -0
- package/dist/features/products/components/PlaceBidForm.d.ts +20 -0
- package/dist/features/products/components/PlaceBidForm.js +6 -0
- package/dist/features/products/components/PreOrderDetailView.d.ts +14 -0
- package/dist/features/products/components/PreOrderDetailView.js +9 -0
- package/dist/features/products/components/PreOrdersView.d.ts +6 -0
- package/dist/features/products/components/PreOrdersView.js +5 -0
- package/dist/features/products/components/ProductDetailView.d.ts +11 -0
- package/dist/features/products/components/ProductDetailView.js +9 -0
- package/dist/features/products/components/ProductFeatureBadges.d.ts +32 -0
- package/dist/features/products/components/ProductFeatureBadges.js +103 -0
- package/dist/features/products/components/ProductFilters.d.ts +90 -0
- package/dist/features/products/components/ProductFilters.js +105 -0
- package/dist/features/products/components/ProductForm.d.ts +47 -0
- package/dist/features/products/components/ProductForm.js +120 -0
- package/dist/features/products/components/ProductGrid.d.ts +69 -0
- package/dist/features/products/components/ProductGrid.js +92 -0
- package/dist/features/products/components/ProductInfo.d.ts +20 -0
- package/dist/features/products/components/ProductInfo.js +4 -0
- package/dist/features/products/components/ProductTabs.d.ts +21 -0
- package/dist/features/products/components/ProductTabs.js +22 -0
- package/dist/features/products/components/ProductsView.d.ts +6 -0
- package/dist/features/products/components/ProductsView.js +5 -0
- package/dist/features/products/components/RelatedProducts.d.ts +16 -0
- package/dist/features/products/components/RelatedProducts.js +12 -0
- package/dist/features/products/components/index.d.ts +34 -0
- package/dist/features/products/components/index.js +18 -0
- package/dist/features/products/hooks/useBrands.d.ts +9 -0
- package/dist/features/products/hooks/useBrands.js +15 -0
- package/dist/features/products/hooks/useProductDetail.d.ts +15 -0
- package/dist/features/products/hooks/useProductDetail.js +29 -0
- package/dist/features/products/hooks/useProducts.d.ts +43 -0
- package/dist/features/products/hooks/useProducts.js +67 -0
- package/dist/features/products/hooks/useRelatedProducts.d.ts +2 -0
- package/dist/features/products/hooks/useRelatedProducts.js +17 -0
- package/dist/features/products/index.d.ts +10 -1066
- package/dist/features/products/index.js +10 -2475
- package/dist/features/products/manifest.d.ts +2 -0
- package/dist/features/products/manifest.js +16 -0
- package/dist/features/products/messages/en.json +11 -0
- package/dist/features/products/repository/products.repository.d.ts +213 -0
- package/dist/features/products/repository/products.repository.js +300 -0
- package/dist/features/products/schemas/firestore.d.ts +125 -0
- package/dist/features/products/schemas/firestore.js +149 -0
- package/dist/features/products/schemas/index.d.ts +400 -0
- package/dist/features/products/schemas/index.js +173 -0
- package/dist/features/products/server.d.ts +7 -49
- package/dist/features/products/server.js +10 -803
- package/dist/features/products/types/index.d.ts +122 -0
- package/dist/features/products/types/index.js +1 -0
- package/dist/features/products/utils/listing-type.d.ts +2 -0
- package/dist/features/products/utils/listing-type.js +9 -0
- package/dist/features/promotions/actions/coupon-actions.d.ts +28 -0
- package/dist/features/promotions/actions/coupon-actions.js +23 -0
- package/dist/features/promotions/actions/index.d.ts +3 -0
- package/dist/features/promotions/actions/index.js +3 -0
- package/dist/features/promotions/actions/promotions-actions.d.ts +18 -0
- package/dist/features/promotions/actions/promotions-actions.js +37 -0
- package/dist/features/promotions/actions/seller-coupon-actions.d.ts +41 -0
- package/dist/features/promotions/actions/seller-coupon-actions.js +92 -0
- package/dist/features/promotions/api/route.d.ts +21 -0
- package/dist/features/promotions/api/route.js +85 -0
- package/dist/features/promotions/columns/index.d.ts +12 -0
- package/dist/features/promotions/columns/index.js +45 -0
- package/dist/features/promotions/components/CouponCard.d.ts +16 -0
- package/dist/features/promotions/components/CouponCard.js +20 -0
- package/dist/features/promotions/components/PromotionsView.d.ts +43 -0
- package/dist/features/promotions/components/PromotionsView.js +10 -0
- package/dist/features/promotions/components/index.d.ts +3 -0
- package/dist/features/promotions/components/index.js +2 -0
- package/dist/features/promotions/hooks/useCouponValidate.d.ts +22 -0
- package/dist/features/promotions/hooks/useCouponValidate.js +10 -0
- package/dist/features/promotions/hooks/usePromotions.d.ts +21 -0
- package/dist/features/promotions/hooks/usePromotions.js +49 -0
- package/dist/features/promotions/index.d.ts +7 -301
- package/dist/features/promotions/index.js +7 -957
- package/dist/features/promotions/manifest.d.ts +2 -0
- package/dist/features/promotions/manifest.js +14 -0
- package/dist/features/promotions/messages/en.json +20 -0
- package/dist/features/promotions/repository/coupons.repository.d.ts +224 -0
- package/dist/features/promotions/repository/coupons.repository.js +539 -0
- package/dist/features/promotions/repository/promotions.repository.d.ts +14 -0
- package/dist/features/promotions/repository/promotions.repository.js +43 -0
- package/dist/features/promotions/schemas/firestore.d.ts +105 -0
- package/dist/features/promotions/schemas/firestore.js +124 -0
- package/dist/features/promotions/schemas/index.d.ts +117 -0
- package/dist/features/promotions/schemas/index.js +58 -0
- package/dist/features/promotions/server.d.ts +10 -0
- package/dist/features/promotions/server.js +10 -0
- package/dist/features/promotions/types/index.d.ts +51 -0
- package/dist/features/promotions/types/index.js +2 -0
- package/dist/features/reviews/actions/index.d.ts +1 -0
- package/dist/features/reviews/actions/index.js +1 -0
- package/dist/features/reviews/actions/review-actions.d.ts +40 -0
- package/dist/features/reviews/actions/review-actions.js +182 -0
- package/dist/features/reviews/api/[id]/route.d.ts +23 -0
- package/dist/features/reviews/api/[id]/route.js +109 -0
- package/dist/features/reviews/api/route.d.ts +21 -0
- package/dist/features/reviews/api/route.js +171 -0
- package/dist/features/reviews/columns/index.d.ts +15 -0
- package/dist/features/reviews/columns/index.js +44 -0
- package/dist/features/reviews/components/ReviewFilters.d.ts +74 -0
- package/dist/features/reviews/components/ReviewFilters.js +60 -0
- package/dist/features/reviews/components/ReviewModal.d.ts +11 -0
- package/dist/features/reviews/components/ReviewModal.js +25 -0
- package/dist/features/reviews/components/ReviewSummary.d.ts +16 -0
- package/dist/features/reviews/components/ReviewSummary.js +20 -0
- package/dist/features/reviews/components/ReviewsList.d.ts +15 -0
- package/dist/features/reviews/components/ReviewsList.js +25 -0
- package/dist/features/reviews/components/ReviewsListView.d.ts +31 -0
- package/dist/features/reviews/components/ReviewsListView.js +16 -0
- package/dist/features/reviews/components/index.d.ts +10 -0
- package/dist/features/reviews/components/index.js +5 -0
- package/dist/features/reviews/hooks/useCreateReview.d.ts +12 -0
- package/dist/features/reviews/hooks/useCreateReview.js +20 -0
- package/dist/features/reviews/hooks/useReviews.d.ts +34 -0
- package/dist/features/reviews/hooks/useReviews.js +49 -0
- package/dist/features/reviews/index.d.ts +7 -434
- package/dist/features/reviews/index.js +7 -2297
- package/dist/features/reviews/manifest.d.ts +2 -0
- package/dist/features/reviews/manifest.js +10 -0
- package/dist/features/reviews/messages/en.json +10 -0
- package/dist/features/reviews/repository/reviews.repository.d.ts +103 -0
- package/dist/features/reviews/repository/reviews.repository.js +214 -0
- package/dist/features/reviews/schemas/firestore.d.ts +67 -0
- package/dist/features/reviews/schemas/firestore.js +59 -0
- package/dist/features/reviews/schemas/index.d.ts +183 -0
- package/dist/features/reviews/schemas/index.js +68 -0
- package/dist/features/reviews/server.d.ts +7 -46
- package/dist/features/reviews/server.js +10 -769
- package/dist/features/reviews/types/index.d.ts +62 -0
- package/dist/features/reviews/types/index.js +1 -0
- package/dist/features/search/actions/index.d.ts +1 -0
- package/dist/features/search/actions/index.js +1 -0
- package/dist/features/search/actions/search-actions.d.ts +18 -0
- package/dist/features/search/actions/search-actions.js +43 -0
- package/dist/features/search/api/route.d.ts +22 -0
- package/dist/features/search/api/route.js +79 -0
- package/dist/features/search/columns/index.d.ts +17 -0
- package/dist/features/search/columns/index.js +49 -0
- package/dist/features/search/components/Search.d.ts +41 -0
- package/dist/features/search/components/Search.js +263 -0
- package/dist/features/search/components/SearchFiltersRow.d.ts +22 -0
- package/dist/features/search/components/SearchFiltersRow.js +21 -0
- package/dist/features/search/components/SearchResultsSection.d.ts +53 -0
- package/dist/features/search/components/SearchResultsSection.js +36 -0
- package/dist/features/search/components/SearchView.d.ts +29 -0
- package/dist/features/search/components/SearchView.js +8 -0
- package/dist/features/search/components/index.d.ts +8 -0
- package/dist/features/search/components/index.js +4 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +11 -0
- package/dist/features/search/hooks/useNavSuggestions.js +32 -0
- package/dist/features/search/hooks/useSearch.d.ts +21 -0
- package/dist/features/search/hooks/useSearch.js +34 -0
- package/dist/features/search/index.d.ts +7 -298
- package/dist/features/search/index.js +7 -1351
- package/dist/features/search/manifest.d.ts +2 -0
- package/dist/features/search/manifest.js +10 -0
- package/dist/features/search/messages/en.json +15 -0
- package/dist/features/search/repository/search.repository.d.ts +14 -0
- package/dist/features/search/repository/search.repository.js +59 -0
- package/dist/features/search/schemas/index.d.ts +70 -0
- package/dist/features/search/schemas/index.js +34 -0
- package/dist/features/search/server.d.ts +5 -83
- package/dist/features/search/server.js +5 -149
- package/dist/features/search/types/index.d.ts +46 -0
- package/dist/features/search/types/index.js +2 -0
- package/dist/features/seller/actions/index.d.ts +2 -0
- package/dist/features/seller/actions/index.js +2 -0
- package/dist/features/seller/actions/offer-actions.d.ts +32 -0
- package/dist/features/seller/actions/offer-actions.js +266 -0
- package/dist/features/seller/actions/seller-actions.d.ts +172 -0
- package/dist/features/seller/actions/seller-actions.js +480 -0
- package/dist/features/seller/api/coupons/route.d.ts +17 -0
- package/dist/features/seller/api/coupons/route.js +47 -0
- package/dist/features/seller/api/offers/route.d.ts +17 -0
- package/dist/features/seller/api/offers/route.js +63 -0
- package/dist/features/seller/api/products/route.d.ts +17 -0
- package/dist/features/seller/api/products/route.js +64 -0
- package/dist/features/seller/api/store/route.d.ts +17 -0
- package/dist/features/seller/api/store/route.js +34 -0
- package/dist/features/seller/columns/index.d.ts +22 -0
- package/dist/features/seller/columns/index.js +73 -0
- package/dist/features/seller/components/SellerAddressesView.d.ts +13 -0
- package/dist/features/seller/components/SellerAddressesView.js +5 -0
- package/dist/features/seller/components/SellerAnalyticsView.d.ts +13 -0
- package/dist/features/seller/components/SellerAnalyticsView.js +17 -0
- package/dist/features/seller/components/SellerAuctionsView.d.ts +6 -0
- package/dist/features/seller/components/SellerAuctionsView.js +5 -0
- package/dist/features/seller/components/SellerCouponsView.d.ts +6 -0
- package/dist/features/seller/components/SellerCouponsView.js +5 -0
- package/dist/features/seller/components/SellerCreateProductView.d.ts +11 -0
- package/dist/features/seller/components/SellerCreateProductView.js +5 -0
- package/dist/features/seller/components/SellerDashboardView.d.ts +14 -0
- package/dist/features/seller/components/SellerDashboardView.js +11 -0
- package/dist/features/seller/components/SellerEditProductView.d.ts +11 -0
- package/dist/features/seller/components/SellerEditProductView.js +5 -0
- package/dist/features/seller/components/SellerGuideView.d.ts +12 -0
- package/dist/features/seller/components/SellerGuideView.js +5 -0
- package/dist/features/seller/components/SellerOffersView.d.ts +4 -0
- package/dist/features/seller/components/SellerOffersView.js +5 -0
- package/dist/features/seller/components/SellerOrdersView.d.ts +4 -0
- package/dist/features/seller/components/SellerOrdersView.js +5 -0
- package/dist/features/seller/components/SellerPayoutHistoryTable.d.ts +14 -0
- package/dist/features/seller/components/SellerPayoutHistoryTable.js +10 -0
- package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +11 -0
- package/dist/features/seller/components/SellerPayoutSettingsView.js +5 -0
- package/dist/features/seller/components/SellerPayoutStats.d.ts +8 -0
- package/dist/features/seller/components/SellerPayoutStats.js +9 -0
- package/dist/features/seller/components/SellerPayoutsView.d.ts +18 -0
- package/dist/features/seller/components/SellerPayoutsView.js +11 -0
- package/dist/features/seller/components/SellerProductsView.d.ts +6 -0
- package/dist/features/seller/components/SellerProductsView.js +5 -0
- package/dist/features/seller/components/SellerShippingView.d.ts +12 -0
- package/dist/features/seller/components/SellerShippingView.js +5 -0
- package/dist/features/seller/components/SellerSidebar.d.ts +16 -0
- package/dist/features/seller/components/SellerSidebar.js +11 -0
- package/dist/features/seller/components/SellerStatCard.d.ts +14 -0
- package/dist/features/seller/components/SellerStatCard.js +5 -0
- package/dist/features/seller/components/SellerStoreSetupView.d.ts +12 -0
- package/dist/features/seller/components/SellerStoreSetupView.js +8 -0
- package/dist/features/seller/components/SellerStoreView.d.ts +8 -0
- package/dist/features/seller/components/SellerStoreView.js +8 -0
- package/dist/features/seller/components/SellerStorefrontView.d.ts +13 -0
- package/dist/features/seller/components/SellerStorefrontView.js +10 -0
- package/dist/features/seller/components/SellersListView.d.ts +4 -0
- package/dist/features/seller/components/SellersListView.js +5 -0
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.d.ts +14 -0
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +9 -0
- package/dist/features/seller/components/analytics/SellerRevenueChart.d.ts +13 -0
- package/dist/features/seller/components/analytics/SellerRevenueChart.js +28 -0
- package/dist/features/seller/components/analytics/SellerTopProducts.d.ts +17 -0
- package/dist/features/seller/components/analytics/SellerTopProducts.js +6 -0
- package/dist/features/seller/components/analytics/index.d.ts +3 -0
- package/dist/features/seller/components/analytics/index.js +3 -0
- package/dist/features/seller/components/index.d.ts +44 -0
- package/dist/features/seller/components/index.js +23 -0
- package/dist/features/seller/hooks/useBecomeSeller.d.ts +12 -0
- package/dist/features/seller/hooks/useBecomeSeller.js +26 -0
- package/dist/features/seller/hooks/useSellerPayouts.d.ts +25 -0
- package/dist/features/seller/hooks/useSellerPayouts.js +42 -0
- package/dist/features/seller/hooks/useSellerStore.d.ts +28 -0
- package/dist/features/seller/hooks/useSellerStore.js +48 -0
- package/dist/features/seller/hooks/useSellerStorefront.d.ts +16 -0
- package/dist/features/seller/hooks/useSellerStorefront.js +57 -0
- package/dist/features/seller/index.d.ts +10 -926
- package/dist/features/seller/index.js +10 -2029
- package/dist/features/seller/manifest.d.ts +2 -0
- package/dist/features/seller/manifest.js +74 -0
- package/dist/features/seller/messages/en.json +32 -0
- package/dist/features/seller/permission-map.d.ts +3 -0
- package/dist/features/seller/permission-map.js +15 -0
- package/dist/features/seller/repository/offer.repository.d.ts +66 -0
- package/dist/features/seller/repository/offer.repository.js +210 -0
- package/dist/features/seller/repository/seller.repository.d.ts +22 -0
- package/dist/features/seller/repository/seller.repository.js +72 -0
- package/dist/features/seller/schemas/firestore.d.ts +76 -0
- package/dist/features/seller/schemas/firestore.js +57 -0
- package/dist/features/seller/schemas/index.d.ts +244 -0
- package/dist/features/seller/schemas/index.js +100 -0
- package/dist/features/seller/server.d.ts +13 -0
- package/dist/features/seller/server.js +13 -0
- package/dist/features/seller/types/index.d.ts +147 -0
- package/dist/features/seller/types/index.js +2 -0
- package/dist/features/stores/actions/index.d.ts +2 -0
- package/dist/features/stores/actions/index.js +2 -0
- package/dist/features/stores/actions/store-address-actions.d.ts +11 -0
- package/dist/features/stores/actions/store-address-actions.js +54 -0
- package/dist/features/stores/actions/store-query-actions.d.ts +34 -0
- package/dist/features/stores/actions/store-query-actions.js +113 -0
- package/dist/features/stores/api/[storeSlug]/auctions/route.d.ts +23 -0
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +92 -0
- package/dist/features/stores/api/[storeSlug]/products/route.d.ts +23 -0
- package/dist/features/stores/api/[storeSlug]/products/route.js +97 -0
- package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +23 -0
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +101 -0
- package/dist/features/stores/api/[storeSlug]/route.d.ts +21 -0
- package/dist/features/stores/api/[storeSlug]/route.js +66 -0
- package/dist/features/stores/api/route.d.ts +12 -0
- package/dist/features/stores/api/route.js +101 -0
- package/dist/features/stores/columns/index.d.ts +16 -0
- package/dist/features/stores/columns/index.js +45 -0
- package/dist/features/stores/components/InteractiveStoreCard.d.ts +20 -0
- package/dist/features/stores/components/InteractiveStoreCard.js +16 -0
- package/dist/features/stores/components/StoreAboutView.d.ts +21 -0
- package/dist/features/stores/components/StoreAboutView.js +12 -0
- package/dist/features/stores/components/StoreAddressSelectorCreate.d.ts +16 -0
- package/dist/features/stores/components/StoreAddressSelectorCreate.js +40 -0
- package/dist/features/stores/components/StoreAuctionsView.d.ts +17 -0
- package/dist/features/stores/components/StoreAuctionsView.js +5 -0
- package/dist/features/stores/components/StoreHeader.d.ts +15 -0
- package/dist/features/stores/components/StoreHeader.js +8 -0
- package/dist/features/stores/components/StoreNavTabs.d.ts +15 -0
- package/dist/features/stores/components/StoreNavTabs.js +14 -0
- package/dist/features/stores/components/StoreProductsView.d.ts +30 -0
- package/dist/features/stores/components/StoreProductsView.js +11 -0
- package/dist/features/stores/components/StoreReviewsView.d.ts +17 -0
- package/dist/features/stores/components/StoreReviewsView.js +9 -0
- package/dist/features/stores/components/StoresListView.d.ts +19 -0
- package/dist/features/stores/components/StoresListView.js +24 -0
- package/dist/features/stores/components/index.d.ts +16 -0
- package/dist/features/stores/components/index.js +9 -0
- package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +23 -0
- package/dist/features/stores/hooks/useStoreAddressSelector.js +30 -0
- package/dist/features/stores/hooks/useStores.d.ts +58 -0
- package/dist/features/stores/hooks/useStores.js +96 -0
- package/dist/features/stores/index.d.ts +7 -536
- package/dist/features/stores/index.js +7 -1911
- package/dist/features/stores/manifest.d.ts +2 -0
- package/dist/features/stores/manifest.js +35 -0
- package/dist/features/stores/messages/en.json +21 -0
- package/dist/features/stores/repository/store-address.repository.d.ts +55 -0
- package/dist/features/stores/repository/store-address.repository.js +188 -0
- package/dist/features/stores/repository/store.repository.d.ts +67 -0
- package/dist/features/stores/repository/store.repository.js +181 -0
- package/dist/features/stores/repository/stores.repository.d.ts +11 -0
- package/dist/features/stores/repository/stores.repository.js +34 -0
- package/dist/features/stores/schemas/firestore.d.ts +117 -0
- package/dist/features/stores/schemas/firestore.js +109 -0
- package/dist/features/stores/schemas/index.d.ts +85 -0
- package/dist/features/stores/schemas/index.js +48 -0
- package/dist/features/stores/server.d.ts +12 -103
- package/dist/features/stores/server.js +15 -444
- package/dist/features/stores/types/index.d.ts +102 -0
- package/dist/features/stores/types/index.js +2 -0
- package/dist/features/whatsapp-bot/api/send-status/route.d.ts +12 -0
- package/dist/features/whatsapp-bot/api/send-status/route.js +36 -0
- package/dist/features/whatsapp-bot/api/webhook/route.d.ts +12 -0
- package/dist/features/whatsapp-bot/api/webhook/route.js +41 -0
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.d.ts +8 -0
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +7 -0
- package/dist/features/whatsapp-bot/components/index.d.ts +1 -0
- package/dist/features/whatsapp-bot/components/index.js +1 -0
- package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +21 -0
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +125 -0
- package/dist/features/whatsapp-bot/index.d.ts +3 -85
- package/dist/features/whatsapp-bot/index.js +3 -154
- package/dist/features/whatsapp-bot/manifest.d.ts +2 -0
- package/dist/features/whatsapp-bot/manifest.js +13 -0
- package/dist/features/whatsapp-bot/messages/en.json +7 -0
- package/dist/features/whatsapp-bot/server.d.ts +7 -0
- package/dist/features/whatsapp-bot/server.js +7 -0
- package/dist/features/whatsapp-bot/types/index.d.ts +50 -0
- package/dist/features/whatsapp-bot/types/index.js +1 -0
- package/dist/features/wishlist/actions/index.d.ts +1 -0
- package/dist/features/wishlist/actions/index.js +1 -0
- package/dist/features/wishlist/actions/wishlist-actions.d.ts +20 -0
- package/dist/features/wishlist/actions/wishlist-actions.js +29 -0
- package/dist/features/wishlist/columns/index.d.ts +17 -0
- package/dist/features/wishlist/columns/index.js +42 -0
- package/dist/features/wishlist/components/WishlistPage.d.ts +16 -0
- package/dist/features/wishlist/components/WishlistPage.js +17 -0
- package/dist/features/wishlist/components/WishlistToggleButton.d.ts +12 -0
- package/dist/features/wishlist/components/WishlistToggleButton.js +21 -0
- package/dist/features/wishlist/components/WishlistView.d.ts +33 -0
- package/dist/features/wishlist/components/WishlistView.js +41 -0
- package/dist/features/wishlist/components/index.d.ts +4 -0
- package/dist/features/wishlist/components/index.js +3 -0
- package/dist/features/wishlist/hooks/useUserWishlist.d.ts +187 -0
- package/dist/features/wishlist/hooks/useUserWishlist.js +17 -0
- package/dist/features/wishlist/hooks/useWishlist.d.ts +16 -0
- package/dist/features/wishlist/hooks/useWishlist.js +23 -0
- package/dist/features/wishlist/hooks/useWishlistToggle.d.ts +10 -0
- package/dist/features/wishlist/hooks/useWishlistToggle.js +32 -0
- package/dist/features/wishlist/index.d.ts +9 -360
- package/dist/features/wishlist/index.js +8 -888
- package/dist/features/wishlist/manifest.d.ts +2 -0
- package/dist/features/wishlist/manifest.js +12 -0
- package/dist/features/wishlist/messages/en.json +7 -0
- package/dist/features/wishlist/repository/user-wishlist.repository.d.ts +14 -0
- package/dist/features/wishlist/repository/user-wishlist.repository.js +91 -0
- package/dist/features/wishlist/repository/wishlist.repository.d.ts +13 -0
- package/dist/features/wishlist/repository/wishlist.repository.js +31 -0
- package/dist/features/wishlist/schemas/index.d.ts +46 -0
- package/dist/features/wishlist/schemas/index.js +24 -0
- package/dist/features/wishlist/server.d.ts +9 -0
- package/dist/features/wishlist/server.js +9 -0
- package/dist/features/wishlist/types/index.d.ts +16 -0
- package/dist/features/wishlist/types/index.js +1 -0
- package/dist/http/ApiClient.d.ts +59 -0
- package/dist/http/ApiClient.js +149 -0
- package/dist/http/api-handler.d.ts +33 -0
- package/dist/http/api-handler.js +89 -0
- package/dist/http/index.d.ts +6 -58
- package/dist/http/index.js +8 -4
- package/dist/index.d.ts +1 -17
- package/dist/index.js +1 -13
- package/dist/instrumentation/index.d.ts +4 -6
- package/dist/instrumentation/index.js +54 -14
- package/dist/monitoring/analytics.d.ts +79 -0
- package/dist/monitoring/analytics.js +171 -0
- package/dist/monitoring/browser.d.ts +10 -0
- package/dist/monitoring/browser.js +6 -0
- package/dist/monitoring/cache-metrics.d.ts +24 -0
- package/dist/monitoring/cache-metrics.js +83 -0
- package/dist/monitoring/client-logger.d.ts +29 -0
- package/dist/monitoring/client-logger.js +127 -0
- package/dist/monitoring/error-tracking.d.ts +50 -0
- package/dist/monitoring/error-tracking.js +54 -0
- package/dist/monitoring/index.d.ts +12 -181
- package/dist/monitoring/index.js +7 -8
- package/dist/monitoring/performance.d.ts +31 -0
- package/dist/monitoring/performance.js +34 -0
- package/dist/monitoring/runtime.d.ts +17 -0
- package/dist/monitoring/runtime.js +28 -0
- package/dist/monitoring/server-logger.d.ts +37 -0
- package/dist/monitoring/server-logger.js +289 -0
- package/dist/next/ErrorBoundary.d.ts +19 -0
- package/dist/next/ErrorBoundary.js +35 -0
- package/dist/next/IAuthVerifier.d.ts +54 -0
- package/dist/next/IAuthVerifier.js +23 -0
- package/dist/next/api/api-response.d.ts +29 -0
- package/dist/next/api/api-response.js +31 -0
- package/dist/next/api/apiHandler.d.ts +48 -0
- package/dist/next/api/apiHandler.js +87 -0
- package/dist/next/api/errorHandler.d.ts +57 -0
- package/dist/next/api/errorHandler.js +72 -0
- package/dist/next/api/routeHandler.d.ts +60 -0
- package/dist/next/api/routeHandler.js +113 -0
- package/dist/next/cache-middleware.d.ts +35 -0
- package/dist/next/cache-middleware.js +77 -0
- package/dist/next/components/ErrorView.d.ts +13 -0
- package/dist/next/components/ErrorView.js +32 -0
- package/dist/next/components/GlobalError.d.ts +7 -0
- package/dist/next/components/GlobalError.js +43 -0
- package/dist/next/components/NotFoundView.d.ts +28 -0
- package/dist/next/components/NotFoundView.js +25 -0
- package/dist/next/components/UnauthorizedView.d.ts +28 -0
- package/dist/next/components/UnauthorizedView.js +22 -0
- package/dist/next/index.d.ts +34 -776
- package/dist/next/index.js +30 -646
- package/dist/next/middleware/chain.d.ts +47 -0
- package/dist/next/middleware/chain.js +80 -0
- package/dist/next/middleware/index.d.ts +6 -0
- package/dist/next/middleware/index.js +3 -0
- package/dist/next/middleware/pii-redactor.d.ts +32 -0
- package/dist/next/middleware/pii-redactor.js +82 -0
- package/dist/next/middleware/pii-scrubber.d.ts +11 -0
- package/dist/next/middleware/pii-scrubber.js +43 -0
- package/dist/next/middleware/types.d.ts +18 -0
- package/dist/next/middleware/types.js +1 -0
- package/dist/next/request-helpers.d.ts +25 -0
- package/dist/next/request-helpers.js +52 -0
- package/dist/next/routing/route-map.d.ts +272 -0
- package/dist/next/routing/route-map.js +202 -0
- package/dist/providers/auth-firebase/browser-stub.d.ts +24 -0
- package/dist/providers/auth-firebase/browser-stub.js +28 -0
- package/dist/providers/auth-firebase/helpers.d.ts +83 -0
- package/dist/providers/auth-firebase/helpers.js +205 -0
- package/dist/providers/auth-firebase/index.d.ts +7 -133
- package/dist/providers/auth-firebase/index.js +16 -370
- package/dist/providers/auth-firebase/provider.d.ts +8 -0
- package/dist/providers/auth-firebase/provider.js +118 -0
- package/dist/providers/auth-firebase/session.d.ts +19 -0
- package/dist/providers/auth-firebase/session.js +86 -0
- package/dist/providers/db-firebase/admin-app-lite.d.ts +6 -0
- package/dist/providers/db-firebase/admin-app-lite.js +50 -0
- package/dist/providers/db-firebase/admin-auth-lite.d.ts +5 -0
- package/dist/providers/db-firebase/admin-auth-lite.js +10 -0
- package/dist/providers/db-firebase/admin-storage-lite.d.ts +6 -0
- package/dist/providers/db-firebase/admin-storage-lite.js +11 -0
- package/dist/providers/db-firebase/admin.d.ts +29 -0
- package/dist/providers/db-firebase/admin.js +163 -0
- package/dist/providers/db-firebase/base.d.ts +44 -0
- package/dist/providers/db-firebase/base.js +180 -0
- package/dist/providers/db-firebase/base.repository.d.ts +34 -0
- package/dist/providers/db-firebase/base.repository.js +235 -0
- package/dist/providers/db-firebase/browser-stub.d.ts +37 -0
- package/dist/providers/db-firebase/browser-stub.js +56 -0
- package/dist/providers/db-firebase/client-config.d.ts +22 -0
- package/dist/providers/db-firebase/client-config.js +30 -0
- package/dist/providers/db-firebase/field-ops.d.ts +7 -0
- package/dist/providers/db-firebase/field-ops.js +13 -0
- package/dist/providers/db-firebase/helpers.d.ts +23 -0
- package/dist/providers/db-firebase/helpers.js +67 -0
- package/dist/providers/db-firebase/index.d.ts +16 -250
- package/dist/providers/db-firebase/index.js +42 -498
- package/dist/providers/db-firebase/realtime.d.ts +43 -0
- package/dist/providers/db-firebase/realtime.js +122 -0
- package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
- package/dist/providers/db-firebase/rtdb-paths.js +12 -0
- package/dist/providers/db-firebase/sieve.d.ts +76 -0
- package/dist/providers/db-firebase/sieve.js +83 -0
- package/dist/providers/email-resend/index.d.ts +6 -64
- package/dist/providers/email-resend/index.js +14 -56
- package/dist/providers/email-resend/provider.d.ts +43 -0
- package/dist/providers/email-resend/provider.js +75 -0
- package/dist/providers/firebase-client/auth.d.ts +12 -0
- package/dist/providers/firebase-client/auth.js +30 -0
- package/dist/providers/firebase-client/index.d.ts +9 -0
- package/dist/providers/firebase-client/index.js +9 -0
- package/dist/providers/firebase-client/realtime.d.ts +18 -0
- package/dist/providers/firebase-client/realtime.js +39 -0
- package/dist/providers/payment-razorpay/index.d.ts +66 -69
- package/dist/providers/payment-razorpay/index.js +201 -97
- package/dist/providers/shipping-shiprocket/index.d.ts +69 -33
- package/dist/providers/shipping-shiprocket/index.js +135 -122
- package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +46 -0
- package/dist/providers/shipping-shiprocket/shiprocket-provider.js +152 -0
- package/dist/providers/storage-firebase/client.d.ts +56 -0
- package/dist/providers/storage-firebase/client.js +141 -0
- package/dist/providers/storage-firebase/index.d.ts +6 -43
- package/dist/providers/storage-firebase/index.js +16 -153
- package/dist/providers/storage-firebase/provider.d.ts +23 -0
- package/dist/providers/storage-firebase/provider.js +103 -0
- package/dist/react/ErrorBoundary.d.ts +31 -0
- package/dist/react/ErrorBoundary.js +68 -0
- package/dist/react/contexts/SessionContext.d.ts +80 -0
- package/dist/react/contexts/SessionContext.js +350 -0
- package/dist/react/contexts/ThemeContext.d.ts +14 -0
- package/dist/react/contexts/ThemeContext.js +65 -0
- package/dist/react/contexts/index.d.ts +4 -0
- package/dist/react/contexts/index.js +2 -0
- package/dist/react/hooks/useBreakpoint.d.ts +29 -0
- package/dist/react/hooks/useBreakpoint.js +37 -0
- package/dist/react/hooks/useBulkAction.d.ts +65 -0
- package/dist/react/hooks/useBulkAction.js +69 -0
- package/dist/react/hooks/useBulkSelection.d.ts +40 -0
- package/dist/react/hooks/useBulkSelection.js +58 -0
- package/dist/react/hooks/useCamera.d.ts +34 -0
- package/dist/react/hooks/useCamera.js +147 -0
- package/dist/react/hooks/useClickOutside.d.ts +37 -0
- package/dist/react/hooks/useClickOutside.js +57 -0
- package/dist/react/hooks/useContainerGrid.d.ts +39 -0
- package/dist/react/hooks/useContainerGrid.js +47 -0
- package/dist/react/hooks/useCountdown.d.ts +26 -0
- package/dist/react/hooks/useCountdown.js +49 -0
- package/dist/react/hooks/useGesture.d.ts +51 -0
- package/dist/react/hooks/useGesture.js +181 -0
- package/dist/react/hooks/useKeyPress.d.ts +48 -0
- package/dist/react/hooks/useKeyPress.js +62 -0
- package/dist/react/hooks/useLongPress.d.ts +26 -0
- package/dist/react/hooks/useLongPress.js +55 -0
- package/dist/react/hooks/useMediaQuery.d.ts +17 -0
- package/dist/react/hooks/useMediaQuery.js +34 -0
- package/dist/react/hooks/useMessage.d.ts +11 -0
- package/dist/react/hooks/useMessage.js +45 -0
- package/dist/react/hooks/usePendingFilters.d.ts +58 -0
- package/dist/react/hooks/usePendingFilters.js +79 -0
- package/dist/react/hooks/usePendingTable.d.ts +49 -0
- package/dist/react/hooks/usePendingTable.js +45 -0
- package/dist/react/hooks/usePullToRefresh.d.ts +38 -0
- package/dist/react/hooks/usePullToRefresh.js +82 -0
- package/dist/react/hooks/useRealtimeEvent.d.ts +53 -0
- package/dist/react/hooks/useRealtimeEvent.js +124 -0
- package/dist/react/hooks/useSwipe.d.ts +55 -0
- package/dist/react/hooks/useSwipe.js +165 -0
- package/dist/react/hooks/useUnsavedChanges.d.ts +44 -0
- package/dist/react/hooks/useUnsavedChanges.js +55 -0
- package/dist/react/hooks/useUrlTable.d.ts +31 -0
- package/dist/react/hooks/useUrlTable.js +137 -0
- package/dist/react/hooks/useVisibleItems.d.ts +37 -0
- package/dist/react/hooks/useVisibleItems.js +59 -0
- package/dist/react/index.d.ts +49 -787
- package/dist/react/index.js +47 -1665
- package/dist/react/useModalStack.d.ts +33 -0
- package/dist/react/useModalStack.js +61 -0
- package/dist/repositories/index.d.ts +38 -0
- package/dist/repositories/index.js +40 -0
- package/dist/security/authorization.d.ts +24 -0
- package/dist/security/authorization.js +73 -0
- package/dist/security/browser.d.ts +7 -0
- package/dist/security/browser.js +5 -0
- package/dist/security/csp.d.ts +16 -0
- package/dist/security/csp.js +44 -0
- package/dist/security/index.d.ts +11 -309
- package/dist/security/index.js +8 -5
- package/dist/security/pii-encrypt.d.ts +121 -0
- package/dist/security/pii-encrypt.js +351 -0
- package/dist/security/pii-redact.d.ts +20 -0
- package/dist/security/pii-redact.js +129 -0
- package/dist/security/pii-schemas.d.ts +38 -0
- package/dist/security/pii-schemas.js +62 -0
- package/dist/security/rate-limit.d.ts +70 -0
- package/dist/security/rate-limit.js +107 -0
- package/dist/security/rbac/Can.d.ts +31 -0
- package/dist/security/rbac/Can.js +24 -0
- package/dist/security/rbac/default-roles.d.ts +2 -0
- package/dist/security/rbac/default-roles.js +83 -0
- package/dist/security/rbac/hook.d.ts +20 -0
- package/dist/security/rbac/hook.js +30 -0
- package/dist/security/rbac/index.d.ts +8 -0
- package/dist/security/rbac/index.js +6 -0
- package/dist/security/rbac/middleware.d.ts +51 -0
- package/dist/security/rbac/middleware.js +51 -0
- package/dist/security/rbac/resolver.d.ts +5 -0
- package/dist/security/rbac/resolver.js +38 -0
- package/dist/security/rbac/server.d.ts +24 -0
- package/dist/security/rbac/server.js +42 -0
- package/dist/security/rbac/types.d.ts +22 -0
- package/dist/security/rbac/types.js +2 -0
- package/dist/security/settings-encryption.d.ts +5 -0
- package/dist/security/settings-encryption.js +48 -0
- package/dist/seed/actions/demo-seed-actions.d.ts +31 -0
- package/dist/seed/actions/demo-seed-actions.js +36 -0
- package/dist/seed/actions/index.d.ts +1 -0
- package/dist/seed/actions/index.js +1 -0
- package/dist/seed/addresses-seed-data.d.ts +19 -0
- package/dist/seed/addresses-seed-data.js +418 -0
- package/dist/seed/bids-seed-data.d.ts +7 -0
- package/dist/seed/bids-seed-data.js +1168 -0
- package/dist/seed/blog-posts-seed-data.d.ts +7 -0
- package/dist/seed/blog-posts-seed-data.js +215 -0
- package/dist/seed/carousel-slides-seed-data.d.ts +7 -0
- package/dist/seed/carousel-slides-seed-data.js +283 -0
- package/dist/seed/cart-seed-data.d.ts +20 -0
- package/dist/seed/cart-seed-data.js +179 -0
- package/dist/seed/categories-seed-data.d.ts +7 -0
- package/dist/seed/categories-seed-data.js +1220 -0
- package/dist/seed/coupons-seed-data.d.ts +7 -0
- package/dist/seed/coupons-seed-data.js +508 -0
- package/dist/seed/defaults/categories.d.ts +2 -0
- package/dist/seed/defaults/categories.js +12 -0
- package/dist/seed/defaults/faqs.d.ts +2 -0
- package/dist/seed/defaults/faqs.js +40 -0
- package/dist/seed/defaults/homepage-sections.d.ts +2 -0
- package/dist/seed/defaults/homepage-sections.js +59 -0
- package/dist/seed/events-seed-data.d.ts +8 -0
- package/dist/seed/events-seed-data.js +662 -0
- package/dist/seed/factories/address.factory.d.ts +21 -0
- package/dist/seed/factories/address.factory.js +44 -0
- package/dist/seed/factories/bid.factory.d.ts +15 -0
- package/dist/seed/factories/bid.factory.js +33 -0
- package/dist/seed/factories/blog-post.factory.d.ts +15 -0
- package/dist/seed/factories/blog-post.factory.js +22 -0
- package/dist/seed/factories/carousel.factory.d.ts +11 -0
- package/dist/seed/factories/carousel.factory.js +16 -0
- package/dist/seed/factories/cart.factory.d.ts +26 -0
- package/dist/seed/factories/cart.factory.js +35 -0
- package/dist/seed/factories/category.factory.d.ts +11 -0
- package/dist/seed/factories/category.factory.js +16 -0
- package/dist/seed/factories/coupon.factory.d.ts +21 -0
- package/dist/seed/factories/coupon.factory.js +43 -0
- package/dist/seed/factories/faq.factory.d.ts +10 -0
- package/dist/seed/factories/faq.factory.js +15 -0
- package/dist/seed/factories/homepage-section.factory.d.ts +9 -0
- package/dist/seed/factories/homepage-section.factory.js +13 -0
- package/dist/seed/factories/notification.factory.d.ts +17 -0
- package/dist/seed/factories/notification.factory.js +39 -0
- package/dist/seed/factories/order.factory.d.ts +20 -0
- package/dist/seed/factories/order.factory.js +20 -0
- package/dist/seed/factories/payout.factory.d.ts +21 -0
- package/dist/seed/factories/payout.factory.js +38 -0
- package/dist/seed/factories/product.factory.d.ts +27 -0
- package/dist/seed/factories/product.factory.js +111 -0
- package/dist/seed/factories/review.factory.d.ts +14 -0
- package/dist/seed/factories/review.factory.js +52 -0
- package/dist/seed/factories/session.factory.d.ts +15 -0
- package/dist/seed/factories/session.factory.js +31 -0
- package/dist/seed/factories/store.factory.d.ts +23 -0
- package/dist/seed/factories/store.factory.js +46 -0
- package/dist/seed/factories/user.factory.d.ts +19 -0
- package/dist/seed/factories/user.factory.js +55 -0
- package/dist/seed/faq-seed-data.d.ts +47 -0
- package/dist/seed/faq-seed-data.js +2320 -0
- package/dist/seed/firestore-indexes.d.ts +13 -0
- package/dist/seed/firestore-indexes.js +32 -0
- package/dist/seed/homepage-sections-seed-data.d.ts +18 -0
- package/dist/seed/homepage-sections-seed-data.js +339 -0
- package/dist/seed/index.d.ts +68 -397
- package/dist/seed/index.js +49 -1040
- package/dist/seed/notifications-seed-data.d.ts +7 -0
- package/dist/seed/notifications-seed-data.js +494 -0
- package/dist/seed/orders-seed-data.d.ts +7 -0
- package/dist/seed/orders-seed-data.js +578 -0
- package/dist/seed/payouts-seed-data.d.ts +7 -0
- package/dist/seed/payouts-seed-data.js +202 -0
- package/dist/seed/products-seed-data.d.ts +7 -0
- package/dist/seed/products-seed-data.js +2477 -0
- package/dist/seed/reviews-seed-data.d.ts +7 -0
- package/dist/seed/reviews-seed-data.js +618 -0
- package/dist/seed/runner.d.ts +3 -0
- package/dist/seed/runner.js +38 -0
- package/dist/seed/seed-market-config.d.ts +49 -0
- package/dist/seed/seed-market-config.js +198 -0
- package/dist/seed/sessions-seed-data.d.ts +17 -0
- package/dist/seed/sessions-seed-data.js +355 -0
- package/dist/seed/site-settings-seed-data.d.ts +7 -0
- package/dist/seed/site-settings-seed-data.js +236 -0
- package/dist/seed/store-addresses-seed-data.d.ts +19 -0
- package/dist/seed/store-addresses-seed-data.js +106 -0
- package/dist/seed/stores-seed-data.d.ts +14 -0
- package/dist/seed/stores-seed-data.js +127 -0
- package/dist/seed/test-utils.d.ts +49 -0
- package/dist/seed/test-utils.js +107 -0
- package/dist/seed/types.d.ts +33 -0
- package/dist/seed/types.js +1 -0
- package/dist/seed/users-seed-data.d.ts +7 -0
- package/dist/seed/users-seed-data.js +727 -0
- package/dist/seo/index.d.ts +2 -150
- package/dist/seo/index.js +2 -4
- package/dist/seo/json-ld.d.ts +69 -0
- package/dist/seo/json-ld.js +166 -0
- package/dist/seo/metadata.d.ts +77 -0
- package/dist/seo/metadata.js +157 -0
- package/dist/server.d.ts +109 -0
- package/dist/server.js +110 -0
- package/dist/style/tailwind/index.d.ts +5 -7
- package/dist/style/tailwind/index.js +54 -33
- package/dist/style/vanilla/index.d.ts +5 -7
- package/dist/style/vanilla/index.js +45 -33
- package/dist/tokens/index.d.ts +23 -24
- package/dist/tokens/index.js +786 -4
- package/dist/tokens/tokens.css +221 -0
- package/dist/ui/DataTable.d.ts +78 -0
- package/dist/ui/DataTable.js +157 -0
- package/dist/ui/DataTable.style.css +190 -0
- package/dist/ui/animation.helper.d.ts +17 -0
- package/dist/ui/animation.helper.js +17 -0
- package/dist/ui/color.helper.d.ts +12 -0
- package/dist/ui/color.helper.js +31 -0
- package/dist/ui/columns/build-columns.d.ts +21 -0
- package/dist/ui/columns/build-columns.js +33 -0
- package/dist/ui/columns/column-renderers.d.ts +33 -0
- package/dist/ui/columns/column-renderers.js +64 -0
- package/dist/ui/columns/index.d.ts +6 -0
- package/dist/ui/columns/index.js +5 -0
- package/dist/ui/components/Accordion.d.ts +27 -0
- package/dist/ui/components/Accordion.js +57 -0
- package/dist/ui/components/Accordion.style.css +82 -0
- package/dist/ui/components/ActiveFilterChips.d.ts +13 -0
- package/dist/ui/components/ActiveFilterChips.js +9 -0
- package/dist/ui/components/ActiveFilterChips.style.css +66 -0
- package/dist/ui/components/Alert.d.ts +43 -0
- package/dist/ui/components/Alert.js +47 -0
- package/dist/ui/components/Alert.style.css +187 -0
- package/dist/ui/components/Avatar.d.ts +18 -0
- package/dist/ui/components/Avatar.js +42 -0
- package/dist/ui/components/Avatar.style.css +73 -0
- package/dist/ui/components/AvatarDisplay.d.ts +10 -0
- package/dist/ui/components/AvatarDisplay.js +56 -0
- package/dist/ui/components/AvatarDisplay.style.css +46 -0
- package/dist/ui/components/BackgroundRenderer.d.ts +15 -0
- package/dist/ui/components/BackgroundRenderer.js +42 -0
- package/dist/ui/components/BackgroundRenderer.style.css +31 -0
- package/dist/ui/components/Badge.d.ts +33 -0
- package/dist/ui/components/Badge.js +34 -0
- package/dist/ui/components/Badge.style.css +114 -0
- package/dist/ui/components/BaseListingCard.d.ts +39 -0
- package/dist/ui/components/BaseListingCard.js +56 -0
- package/dist/ui/components/BaseListingCard.style.css +84 -0
- package/dist/ui/components/Breadcrumb.d.ts +15 -0
- package/dist/ui/components/Breadcrumb.js +12 -0
- package/dist/ui/components/Breadcrumb.style.css +60 -0
- package/dist/ui/components/BulkActionBar.d.ts +34 -0
- package/dist/ui/components/BulkActionBar.js +86 -0
- package/dist/ui/components/BulkActionBar.style.css +196 -0
- package/dist/ui/components/Button.d.ts +31 -0
- package/dist/ui/components/Button.js +29 -0
- package/dist/ui/components/Button.style.css +160 -0
- package/dist/ui/components/Card.d.ts +21 -0
- package/dist/ui/components/Card.js +51 -0
- package/dist/ui/components/Card.style.css +192 -0
- package/dist/ui/components/Checkbox.d.ts +8 -0
- package/dist/ui/components/Checkbox.js +38 -0
- package/dist/ui/components/Checkbox.style.css +113 -0
- package/dist/ui/components/ConfirmDeleteModal.d.ts +33 -0
- package/dist/ui/components/ConfirmDeleteModal.js +74 -0
- package/dist/ui/components/ConfirmDeleteModal.style.css +89 -0
- package/dist/ui/components/CountdownDisplay.d.ts +14 -0
- package/dist/ui/components/CountdownDisplay.js +50 -0
- package/dist/ui/components/CountdownDisplay.style.css +4 -0
- package/dist/ui/components/DashboardStatsCard.d.ts +15 -0
- package/dist/ui/components/DashboardStatsCard.js +28 -0
- package/dist/ui/components/DashboardStatsCard.style.css +70 -0
- package/dist/ui/components/DescriptionField.d.ts +23 -0
- package/dist/ui/components/DescriptionField.js +28 -0
- package/dist/ui/components/DescriptionField.style.css +36 -0
- package/dist/ui/components/DetailViewShell.d.ts +51 -0
- package/dist/ui/components/DetailViewShell.js +50 -0
- package/dist/ui/components/Div.d.ts +20 -0
- package/dist/ui/components/Div.js +19 -0
- package/dist/ui/components/Div.style.css +6 -0
- package/dist/ui/components/Divider.d.ts +12 -0
- package/dist/ui/components/Divider.js +11 -0
- package/dist/ui/components/Divider.style.css +39 -0
- package/dist/ui/components/Drawer.d.ts +21 -0
- package/dist/ui/components/Drawer.js +72 -0
- package/dist/ui/components/Drawer.style.css +146 -0
- package/dist/ui/components/Dropdown.d.ts +36 -0
- package/dist/ui/components/Dropdown.js +142 -0
- package/dist/ui/components/Dropdown.style.css +112 -0
- package/dist/ui/components/DynamicSelect.d.ts +24 -0
- package/dist/ui/components/DynamicSelect.js +78 -0
- package/dist/ui/components/DynamicSelect.style.css +101 -0
- package/dist/ui/components/EmptyState.d.ts +12 -0
- package/dist/ui/components/EmptyState.js +17 -0
- package/dist/ui/components/EmptyState.style.css +30 -0
- package/dist/ui/components/FilterDrawer.d.ts +16 -0
- package/dist/ui/components/FilterDrawer.js +39 -0
- package/dist/ui/components/FilterDrawer.style.css +61 -0
- package/dist/ui/components/FlowDiagram.d.ts +33 -0
- package/dist/ui/components/FlowDiagram.js +15 -0
- package/dist/ui/components/FlowDiagram.style.css +77 -0
- package/dist/ui/components/Form.d.ts +27 -0
- package/dist/ui/components/Form.js +48 -0
- package/dist/ui/components/Form.style.css +27 -0
- package/dist/ui/components/FormField.d.ts +26 -0
- package/dist/ui/components/FormField.js +25 -0
- package/dist/ui/components/FormField.style.css +30 -0
- package/dist/ui/components/FormGrid.d.ts +46 -0
- package/dist/ui/components/FormGrid.js +42 -0
- package/dist/ui/components/FormGrid.style.css +32 -0
- package/dist/ui/components/HorizontalScroller.d.ts +33 -0
- package/dist/ui/components/HorizontalScroller.js +47 -0
- package/dist/ui/components/HorizontalScroller.style.css +109 -0
- package/dist/ui/components/IconButton.d.ts +32 -0
- package/dist/ui/components/IconButton.js +31 -0
- package/dist/ui/components/IconButton.style.css +103 -0
- package/dist/ui/components/ImageGallery.d.ts +17 -0
- package/dist/ui/components/ImageGallery.js +108 -0
- package/dist/ui/components/ImageGallery.style.css +163 -0
- package/dist/ui/components/ImageLightbox.d.ts +24 -0
- package/dist/ui/components/ImageLightbox.js +61 -0
- package/dist/ui/components/ImageLightbox.style.css +58 -0
- package/dist/ui/components/Input.d.ts +12 -0
- package/dist/ui/components/Input.js +29 -0
- package/dist/ui/components/Input.style.css +28 -0
- package/dist/ui/components/ItemRow.d.ts +10 -0
- package/dist/ui/components/ItemRow.js +7 -0
- package/dist/ui/components/ItemRow.style.css +33 -0
- package/dist/ui/components/Layout.d.ts +282 -0
- package/dist/ui/components/Layout.js +184 -0
- package/dist/ui/components/Layout.style.css +212 -0
- package/dist/ui/components/ListingLayout.d.ts +60 -0
- package/dist/ui/components/ListingLayout.js +121 -0
- package/dist/ui/components/ListingLayout.style.css +527 -0
- package/dist/ui/components/ListingViewShell.d.ts +38 -0
- package/dist/ui/components/ListingViewShell.js +11 -0
- package/dist/ui/components/Menu.d.ts +29 -0
- package/dist/ui/components/Menu.js +19 -0
- package/dist/ui/components/Menu.style.css +6 -0
- package/dist/ui/components/Modal.d.ts +18 -0
- package/dist/ui/components/Modal.js +79 -0
- package/dist/ui/components/Modal.style.css +102 -0
- package/dist/ui/components/Pagination.d.ts +25 -0
- package/dist/ui/components/Pagination.js +56 -0
- package/dist/ui/components/Pagination.style.css +76 -0
- package/dist/ui/components/PasswordStrengthIndicator.d.ts +12 -0
- package/dist/ui/components/PasswordStrengthIndicator.js +35 -0
- package/dist/ui/components/PasswordStrengthIndicator.style.css +56 -0
- package/dist/ui/components/PriceDisplay.d.ts +8 -0
- package/dist/ui/components/PriceDisplay.js +28 -0
- package/dist/ui/components/PriceDisplay.style.css +47 -0
- package/dist/ui/components/Progress.d.ts +23 -0
- package/dist/ui/components/Progress.js +32 -0
- package/dist/ui/components/Progress.style.css +81 -0
- package/dist/ui/components/Radio.d.ts +18 -0
- package/dist/ui/components/Radio.js +64 -0
- package/dist/ui/components/Radio.style.css +155 -0
- package/dist/ui/components/RatingDisplay.d.ts +8 -0
- package/dist/ui/components/RatingDisplay.js +15 -0
- package/dist/ui/components/RatingDisplay.style.css +50 -0
- package/dist/ui/components/ResponsiveView.d.ts +12 -0
- package/dist/ui/components/ResponsiveView.js +9 -0
- package/dist/ui/components/ResponsiveView.style.css +69 -0
- package/dist/ui/components/RoleBadge.d.ts +7 -0
- package/dist/ui/components/RoleBadge.js +21 -0
- package/dist/ui/components/RoleBadge.style.css +7 -0
- package/dist/ui/components/RowActionMenu.d.ts +13 -0
- package/dist/ui/components/RowActionMenu.js +17 -0
- package/dist/ui/components/RowActionMenu.style.css +91 -0
- package/dist/ui/components/SectionTabs.d.ts +19 -0
- package/dist/ui/components/SectionTabs.js +66 -0
- package/dist/ui/components/SectionTabs.style.css +163 -0
- package/dist/ui/components/Select.d.ts +19 -0
- package/dist/ui/components/Select.js +27 -0
- package/dist/ui/components/Select.style.css +177 -0
- package/dist/ui/components/Semantic.d.ts +154 -0
- package/dist/ui/components/Semantic.js +32 -0
- package/dist/ui/components/Semantic.style.css +14 -0
- package/dist/ui/components/SideDrawer.d.ts +28 -0
- package/dist/ui/components/SideDrawer.js +151 -0
- package/dist/ui/components/SideDrawer.style.css +214 -0
- package/dist/ui/components/SideModal.d.ts +25 -0
- package/dist/ui/components/SideModal.js +61 -0
- package/dist/ui/components/SideModal.style.css +77 -0
- package/dist/ui/components/Skeleton.d.ts +14 -0
- package/dist/ui/components/Skeleton.js +22 -0
- package/dist/ui/components/Skeleton.style.css +55 -0
- package/dist/ui/components/SkipToMain.d.ts +6 -0
- package/dist/ui/components/SkipToMain.js +6 -0
- package/dist/ui/components/SkipToMain.style.css +34 -0
- package/dist/ui/components/Slider.d.ts +17 -0
- package/dist/ui/components/Slider.js +38 -0
- package/dist/ui/components/Slider.style.css +17 -0
- package/dist/ui/components/SlottedListingView.d.ts +62 -0
- package/dist/ui/components/SlottedListingView.js +41 -0
- package/dist/ui/components/SortDropdown.d.ts +15 -0
- package/dist/ui/components/SortDropdown.js +8 -0
- package/dist/ui/components/SortDropdown.style.css +12 -0
- package/dist/ui/components/Spinner.d.ts +13 -0
- package/dist/ui/components/Spinner.js +15 -0
- package/dist/ui/components/Spinner.style.css +76 -0
- package/dist/ui/components/StackedViewShell.d.ts +50 -0
- package/dist/ui/components/StackedViewShell.js +39 -0
- package/dist/ui/components/StarRating.d.ts +17 -0
- package/dist/ui/components/StarRating.js +29 -0
- package/dist/ui/components/StarRating.style.css +44 -0
- package/dist/ui/components/StatsGrid.d.ts +18 -0
- package/dist/ui/components/StatsGrid.js +17 -0
- package/dist/ui/components/StatsGrid.style.css +96 -0
- package/dist/ui/components/StatusBadge.d.ts +18 -0
- package/dist/ui/components/StatusBadge.js +60 -0
- package/dist/ui/components/StatusBadge.style.css +5 -0
- package/dist/ui/components/StepperNav.d.ts +10 -0
- package/dist/ui/components/StepperNav.js +23 -0
- package/dist/ui/components/StepperNav.style.css +110 -0
- package/dist/ui/components/SummaryCard.d.ts +21 -0
- package/dist/ui/components/SummaryCard.js +15 -0
- package/dist/ui/components/SummaryCard.style.css +82 -0
- package/dist/ui/components/TabStrip.d.ts +34 -0
- package/dist/ui/components/TabStrip.js +57 -0
- package/dist/ui/components/TabStrip.style.css +97 -0
- package/dist/ui/components/TablePagination.d.ts +21 -0
- package/dist/ui/components/TablePagination.js +32 -0
- package/dist/ui/components/TablePagination.style.css +89 -0
- package/dist/ui/components/Tabs.d.ts +28 -0
- package/dist/ui/components/Tabs.js +41 -0
- package/dist/ui/components/Tabs.style.css +46 -0
- package/dist/ui/components/TagInput.d.ts +10 -0
- package/dist/ui/components/TagInput.js +60 -0
- package/dist/ui/components/TagInput.style.css +121 -0
- package/dist/ui/components/TextLink.d.ts +42 -0
- package/dist/ui/components/TextLink.js +48 -0
- package/dist/ui/components/TextLink.style.css +94 -0
- package/dist/ui/components/Textarea.d.ts +9 -0
- package/dist/ui/components/Textarea.js +21 -0
- package/dist/ui/components/Textarea.style.css +30 -0
- package/dist/ui/components/Toast.d.ts +15 -0
- package/dist/ui/components/Toast.js +61 -0
- package/dist/ui/components/Toast.style.css +114 -0
- package/dist/ui/components/Toggle.d.ts +12 -0
- package/dist/ui/components/Toggle.js +47 -0
- package/dist/ui/components/Toggle.style.css +107 -0
- package/dist/ui/components/Tooltip.d.ts +34 -0
- package/dist/ui/components/Tooltip.js +110 -0
- package/dist/ui/components/Tooltip.style.css +114 -0
- package/dist/ui/components/Typography.d.ts +50 -0
- package/dist/ui/components/Typography.js +103 -0
- package/dist/ui/components/Typography.style.css +178 -0
- package/dist/ui/components/UnsavedChangesModal.d.ts +17 -0
- package/dist/ui/components/UnsavedChangesModal.js +52 -0
- package/dist/ui/components/UnsavedChangesModal.style.css +33 -0
- package/dist/ui/components/ViewToggle.d.ts +15 -0
- package/dist/ui/components/ViewToggle.js +29 -0
- package/dist/ui/components/ViewToggle.style.css +50 -0
- package/dist/ui/components/index.style.css +76 -0
- package/dist/ui/index.d.ts +165 -1644
- package/dist/ui/index.js +87 -4784
- package/dist/ui/rich-text/RichText.d.ts +46 -0
- package/dist/ui/rich-text/RichText.js +172 -0
- package/dist/ui/rich-text/RichText.style.css +5 -0
- package/dist/ui/rich-text/index.d.ts +2 -0
- package/dist/ui/rich-text/index.js +1 -0
- package/dist/ui/style.helper.d.ts +7 -0
- package/dist/ui/style.helper.js +12 -0
- package/dist/utils/animation.helper.d.ts +19 -0
- package/dist/utils/animation.helper.js +19 -0
- package/dist/utils/array.helper.d.ts +17 -0
- package/dist/utils/array.helper.js +53 -0
- package/dist/utils/business-day.d.ts +47 -0
- package/dist/utils/business-day.js +68 -0
- package/dist/utils/client.d.ts +1 -0
- package/dist/utils/client.js +1 -0
- package/dist/utils/color.helper.d.ts +32 -0
- package/dist/utils/color.helper.js +51 -0
- package/dist/utils/cookie.converter.d.ts +7 -0
- package/dist/utils/cookie.converter.js +32 -0
- package/dist/utils/date.formatter.d.ts +22 -0
- package/dist/utils/date.formatter.js +194 -0
- package/dist/utils/event-manager.d.ts +45 -0
- package/dist/utils/event-manager.js +185 -0
- package/dist/utils/filter.helper.d.ts +18 -0
- package/dist/utils/filter.helper.js +21 -0
- package/dist/utils/id-generators.d.ts +243 -0
- package/dist/utils/id-generators.js +360 -0
- package/dist/utils/index.d.ts +17 -545
- package/dist/utils/index.js +18 -4
- package/dist/utils/media-field.d.ts +2 -0
- package/dist/utils/media-field.js +1 -0
- package/dist/utils/number.formatter.d.ts +13 -0
- package/dist/utils/number.formatter.js +100 -0
- package/dist/utils/object.helper.d.ts +16 -0
- package/dist/utils/object.helper.js +82 -0
- package/dist/utils/pagination.helper.d.ts +23 -0
- package/dist/utils/pagination.helper.js +24 -0
- package/dist/utils/schema-ui.d.ts +83 -0
- package/dist/utils/schema-ui.js +185 -0
- package/dist/utils/sorting.helper.d.ts +7 -0
- package/dist/utils/sorting.helper.js +16 -0
- package/dist/utils/string.formatter.d.ts +19 -0
- package/dist/utils/string.formatter.js +140 -0
- package/dist/utils/type.converter.d.ts +14 -0
- package/dist/utils/type.converter.js +61 -0
- package/dist/validation/ZodSetup.d.ts +5 -0
- package/dist/validation/ZodSetup.js +11 -0
- package/dist/validation/email.validator.d.ts +7 -0
- package/dist/validation/email.validator.js +33 -0
- package/dist/validation/index.d.ts +9 -126
- package/dist/validation/index.js +8 -4
- package/dist/validation/input.validator.d.ts +11 -0
- package/dist/validation/input.validator.js +33 -0
- package/dist/validation/password.validator.d.ts +21 -0
- package/dist/validation/password.validator.js +77 -0
- package/dist/validation/phone.validator.d.ts +9 -0
- package/dist/validation/phone.validator.js +41 -0
- package/dist/validation/schemas.d.ts +267 -0
- package/dist/validation/schemas.js +176 -0
- package/dist/validation/url.validator.d.ts +7 -0
- package/dist/validation/url.validator.js +44 -0
- package/dist/validation/zod-error-map.d.ts +17 -0
- package/dist/validation/zod-error-map.js +85 -0
- package/dist/values/index.d.ts +6 -0
- package/dist/values/index.js +6 -0
- package/dist/values/success-messages.d.ts +242 -0
- package/dist/values/success-messages.js +272 -0
- package/package.json +87 -445
- package/dist/chunk-2NMEKWO5.js +0 -35
- package/dist/chunk-2NMEKWO5.js.map +0 -1
- package/dist/chunk-6344OTT4.js +0 -329
- package/dist/chunk-6344OTT4.js.map +0 -1
- package/dist/chunk-7HUFI4MW.cjs +0 -941
- package/dist/chunk-7HUFI4MW.cjs.map +0 -1
- package/dist/chunk-AZ2XDBYA.cjs +0 -150
- package/dist/chunk-AZ2XDBYA.cjs.map +0 -1
- package/dist/chunk-CI4ZFLS7.js +0 -1162
- package/dist/chunk-CI4ZFLS7.js.map +0 -1
- package/dist/chunk-DSCHV5OD.js +0 -620
- package/dist/chunk-DSCHV5OD.js.map +0 -1
- package/dist/chunk-EEMSMWIZ.js +0 -566
- package/dist/chunk-EEMSMWIZ.js.map +0 -1
- package/dist/chunk-EPJNBIKL.js +0 -916
- package/dist/chunk-EPJNBIKL.js.map +0 -1
- package/dist/chunk-FJEY6LN2.cjs +0 -64
- package/dist/chunk-FJEY6LN2.cjs.map +0 -1
- package/dist/chunk-GZXXRVTM.cjs +0 -343
- package/dist/chunk-GZXXRVTM.cjs.map +0 -1
- package/dist/chunk-IE5L2QHV.js +0 -204
- package/dist/chunk-IE5L2QHV.js.map +0 -1
- package/dist/chunk-JPHORBTI.cjs +0 -366
- package/dist/chunk-JPHORBTI.cjs.map +0 -1
- package/dist/chunk-K4C5Z22R.js +0 -146
- package/dist/chunk-K4C5Z22R.js.map +0 -1
- package/dist/chunk-PAHR3D5L.js +0 -56
- package/dist/chunk-PAHR3D5L.js.map +0 -1
- package/dist/chunk-PE44UBFV.js +0 -324
- package/dist/chunk-PE44UBFV.js.map +0 -1
- package/dist/chunk-RNELVIKK.cjs +0 -1287
- package/dist/chunk-RNELVIKK.cjs.map +0 -1
- package/dist/chunk-S367Y35J.cjs +0 -39
- package/dist/chunk-S367Y35J.cjs.map +0 -1
- package/dist/chunk-ULLW73KN.cjs +0 -217
- package/dist/chunk-ULLW73KN.cjs.map +0 -1
- package/dist/chunk-UNYFAUWW.cjs +0 -630
- package/dist/chunk-UNYFAUWW.cjs.map +0 -1
- package/dist/chunk-V55QYTXF.js +0 -259
- package/dist/chunk-V55QYTXF.js.map +0 -1
- package/dist/chunk-WKVCFDEA.cjs +0 -599
- package/dist/chunk-WKVCFDEA.cjs.map +0 -1
- package/dist/chunk-YT4QVIBP.cjs +0 -292
- package/dist/chunk-YT4QVIBP.cjs.map +0 -1
- package/dist/cli/index.cjs +0 -155
- package/dist/cli/index.cjs.map +0 -1
- package/dist/cli/index.d.cts +0 -41
- package/dist/cli/index.js.map +0 -1
- package/dist/contracts/index.cjs +0 -37
- package/dist/contracts/index.cjs.map +0 -1
- package/dist/contracts/index.d.cts +0 -728
- package/dist/contracts/index.js.map +0 -1
- package/dist/core/index.cjs +0 -84
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.d.cts +0 -329
- package/dist/core/index.js.map +0 -1
- package/dist/errors/index.cjs +0 -57
- package/dist/errors/index.cjs.map +0 -1
- package/dist/errors/index.d.cts +0 -96
- package/dist/errors/index.js.map +0 -1
- package/dist/extend-D57fwPSu.d.cts +0 -122
- package/dist/extend-D57fwPSu.d.ts +0 -122
- package/dist/extend-D_0wzsse.d.cts +0 -79
- package/dist/extend-D_0wzsse.d.ts +0 -79
- package/dist/extend-jcOQfU2G.d.cts +0 -162
- package/dist/extend-jcOQfU2G.d.ts +0 -162
- package/dist/feature-C8mVv66I.d.cts +0 -84
- package/dist/feature-C8mVv66I.d.ts +0 -84
- package/dist/feature-DENiK3vd.d.cts +0 -55
- package/dist/feature-DENiK3vd.d.ts +0 -55
- package/dist/feature-RWXQ_lnf.d.cts +0 -41
- package/dist/feature-RWXQ_lnf.d.ts +0 -41
- package/dist/features/about/index.cjs +0 -286
- package/dist/features/about/index.cjs.map +0 -1
- package/dist/features/about/index.d.cts +0 -42
- package/dist/features/about/index.js.map +0 -1
- package/dist/features/account/index.cjs +0 -1032
- package/dist/features/account/index.cjs.map +0 -1
- package/dist/features/account/index.d.cts +0 -555
- package/dist/features/account/index.js.map +0 -1
- package/dist/features/admin/index.cjs +0 -2747
- package/dist/features/admin/index.cjs.map +0 -1
- package/dist/features/admin/index.d.cts +0 -554
- package/dist/features/admin/index.js.map +0 -1
- package/dist/features/auctions/index.cjs +0 -1219
- package/dist/features/auctions/index.cjs.map +0 -1
- package/dist/features/auctions/index.d.cts +0 -513
- package/dist/features/auctions/index.js.map +0 -1
- package/dist/features/auth/index.cjs +0 -1897
- package/dist/features/auth/index.cjs.map +0 -1
- package/dist/features/auth/index.d.cts +0 -315
- package/dist/features/auth/index.js.map +0 -1
- package/dist/features/auth/server.cjs +0 -531
- package/dist/features/auth/server.cjs.map +0 -1
- package/dist/features/auth/server.d.cts +0 -24
- package/dist/features/auth/server.js.map +0 -1
- package/dist/features/before-after/index.cjs +0 -559
- package/dist/features/before-after/index.cjs.map +0 -1
- package/dist/features/before-after/index.d.cts +0 -128
- package/dist/features/before-after/index.js.map +0 -1
- package/dist/features/blog/index.cjs +0 -4088
- package/dist/features/blog/index.cjs.map +0 -1
- package/dist/features/blog/index.d.cts +0 -492
- package/dist/features/blog/index.js.map +0 -1
- package/dist/features/blog/server.cjs +0 -184
- package/dist/features/blog/server.cjs.map +0 -1
- package/dist/features/blog/server.d.cts +0 -74
- package/dist/features/blog/server.js.map +0 -1
- package/dist/features/cart/index.cjs +0 -1097
- package/dist/features/cart/index.cjs.map +0 -1
- package/dist/features/cart/index.d.cts +0 -451
- package/dist/features/cart/index.js.map +0 -1
- package/dist/features/categories/index.cjs +0 -2062
- package/dist/features/categories/index.cjs.map +0 -1
- package/dist/features/categories/index.d.cts +0 -461
- package/dist/features/categories/index.js.map +0 -1
- package/dist/features/categories/server.cjs +0 -796
- package/dist/features/categories/server.cjs.map +0 -1
- package/dist/features/categories/server.d.cts +0 -47
- package/dist/features/categories/server.js.map +0 -1
- package/dist/features/checkout/index.cjs +0 -200
- package/dist/features/checkout/index.cjs.map +0 -1
- package/dist/features/checkout/index.d.cts +0 -70
- package/dist/features/checkout/index.js.map +0 -1
- package/dist/features/cms/index.cjs +0 -5
- package/dist/features/cms/index.cjs.map +0 -1
- package/dist/features/cms/index.d.cts +0 -2
- package/dist/features/cms/index.js.map +0 -1
- package/dist/features/collections/index.cjs +0 -394
- package/dist/features/collections/index.cjs.map +0 -1
- package/dist/features/collections/index.d.cts +0 -148
- package/dist/features/collections/index.js.map +0 -1
- package/dist/features/consultation/index.cjs +0 -1099
- package/dist/features/consultation/index.cjs.map +0 -1
- package/dist/features/consultation/index.d.cts +0 -172
- package/dist/features/consultation/index.js.map +0 -1
- package/dist/features/contact/index.cjs +0 -593
- package/dist/features/contact/index.cjs.map +0 -1
- package/dist/features/contact/index.d.cts +0 -56
- package/dist/features/contact/index.js.map +0 -1
- package/dist/features/copilot/index.cjs +0 -688
- package/dist/features/copilot/index.cjs.map +0 -1
- package/dist/features/copilot/index.d.cts +0 -47
- package/dist/features/copilot/index.js.map +0 -1
- package/dist/features/corporate/index.cjs +0 -796
- package/dist/features/corporate/index.cjs.map +0 -1
- package/dist/features/corporate/index.d.cts +0 -183
- package/dist/features/corporate/index.js.map +0 -1
- package/dist/features/events/index.cjs +0 -1486
- package/dist/features/events/index.cjs.map +0 -1
- package/dist/features/events/index.d.cts +0 -841
- package/dist/features/events/index.js.map +0 -1
- package/dist/features/events/server.cjs +0 -199
- package/dist/features/events/server.cjs.map +0 -1
- package/dist/features/events/server.d.cts +0 -40
- package/dist/features/events/server.js.map +0 -1
- package/dist/features/faq/index.cjs +0 -1714
- package/dist/features/faq/index.cjs.map +0 -1
- package/dist/features/faq/index.d.cts +0 -619
- package/dist/features/faq/index.js.map +0 -1
- package/dist/features/filters/index.cjs +0 -1073
- package/dist/features/filters/index.cjs.map +0 -1
- package/dist/features/filters/index.d.cts +0 -136
- package/dist/features/filters/index.js.map +0 -1
- package/dist/features/forms/index.cjs +0 -936
- package/dist/features/forms/index.cjs.map +0 -1
- package/dist/features/forms/index.d.cts +0 -129
- package/dist/features/forms/index.js.map +0 -1
- package/dist/features/homepage/index.cjs +0 -6321
- package/dist/features/homepage/index.cjs.map +0 -1
- package/dist/features/homepage/index.d.cts +0 -846
- package/dist/features/homepage/index.js.map +0 -1
- package/dist/features/homepage/server.cjs +0 -1038
- package/dist/features/homepage/server.cjs.map +0 -1
- package/dist/features/homepage/server.d.cts +0 -121
- package/dist/features/homepage/server.js.map +0 -1
- package/dist/features/layout/index.cjs +0 -1766
- package/dist/features/layout/index.cjs.map +0 -1
- package/dist/features/layout/index.d.cts +0 -315
- package/dist/features/layout/index.js.map +0 -1
- package/dist/features/loyalty/index.cjs +0 -352
- package/dist/features/loyalty/index.cjs.map +0 -1
- package/dist/features/loyalty/index.d.cts +0 -174
- package/dist/features/loyalty/index.js.map +0 -1
- package/dist/features/media/index.cjs +0 -3620
- package/dist/features/media/index.cjs.map +0 -1
- package/dist/features/media/index.d.cts +0 -425
- package/dist/features/media/index.js.map +0 -1
- package/dist/features/orders/index.cjs +0 -882
- package/dist/features/orders/index.cjs.map +0 -1
- package/dist/features/orders/index.d.cts +0 -370
- package/dist/features/orders/index.js.map +0 -1
- package/dist/features/payments/index.cjs +0 -341
- package/dist/features/payments/index.cjs.map +0 -1
- package/dist/features/payments/index.d.cts +0 -141
- package/dist/features/payments/index.js.map +0 -1
- package/dist/features/pre-orders/index.cjs +0 -558
- package/dist/features/pre-orders/index.cjs.map +0 -1
- package/dist/features/pre-orders/index.d.cts +0 -170
- package/dist/features/pre-orders/index.js.map +0 -1
- package/dist/features/pre-orders/server.cjs +0 -111
- package/dist/features/pre-orders/server.cjs.map +0 -1
- package/dist/features/pre-orders/server.d.cts +0 -17
- package/dist/features/pre-orders/server.js.map +0 -1
- package/dist/features/products/index.cjs +0 -2513
- package/dist/features/products/index.cjs.map +0 -1
- package/dist/features/products/index.d.cts +0 -1066
- package/dist/features/products/index.js.map +0 -1
- package/dist/features/products/server.cjs +0 -809
- package/dist/features/products/server.cjs.map +0 -1
- package/dist/features/products/server.d.cts +0 -52
- package/dist/features/products/server.js.map +0 -1
- package/dist/features/promotions/index.cjs +0 -977
- package/dist/features/promotions/index.cjs.map +0 -1
- package/dist/features/promotions/index.d.cts +0 -301
- package/dist/features/promotions/index.js.map +0 -1
- package/dist/features/reviews/index.cjs +0 -2324
- package/dist/features/reviews/index.cjs.map +0 -1
- package/dist/features/reviews/index.d.cts +0 -434
- package/dist/features/reviews/index.js.map +0 -1
- package/dist/features/reviews/server.cjs +0 -776
- package/dist/features/reviews/server.cjs.map +0 -1
- package/dist/features/reviews/server.d.cts +0 -49
- package/dist/features/reviews/server.js.map +0 -1
- package/dist/features/search/index.cjs +0 -1368
- package/dist/features/search/index.cjs.map +0 -1
- package/dist/features/search/index.d.cts +0 -298
- package/dist/features/search/index.js.map +0 -1
- package/dist/features/search/server.cjs +0 -154
- package/dist/features/search/server.cjs.map +0 -1
- package/dist/features/search/server.d.cts +0 -83
- package/dist/features/search/server.js.map +0 -1
- package/dist/features/seller/index.cjs +0 -2086
- package/dist/features/seller/index.cjs.map +0 -1
- package/dist/features/seller/index.d.cts +0 -926
- package/dist/features/seller/index.js.map +0 -1
- package/dist/features/stores/index.cjs +0 -1942
- package/dist/features/stores/index.cjs.map +0 -1
- package/dist/features/stores/index.d.cts +0 -536
- package/dist/features/stores/index.js.map +0 -1
- package/dist/features/stores/server.cjs +0 -451
- package/dist/features/stores/server.cjs.map +0 -1
- package/dist/features/stores/server.d.cts +0 -106
- package/dist/features/stores/server.js.map +0 -1
- package/dist/features/whatsapp-bot/index.cjs +0 -168
- package/dist/features/whatsapp-bot/index.cjs.map +0 -1
- package/dist/features/whatsapp-bot/index.d.cts +0 -85
- package/dist/features/whatsapp-bot/index.js.map +0 -1
- package/dist/features/wishlist/index.cjs +0 -904
- package/dist/features/wishlist/index.cjs.map +0 -1
- package/dist/features/wishlist/index.d.cts +0 -360
- package/dist/features/wishlist/index.js.map +0 -1
- package/dist/http/index.cjs +0 -21
- package/dist/http/index.cjs.map +0 -1
- package/dist/http/index.d.cts +0 -61
- package/dist/http/index.js.map +0 -1
- package/dist/index-B6T9NNcG.d.cts +0 -9
- package/dist/index-B6T9NNcG.d.ts +0 -9
- package/dist/index-CakUKzrE.d.cts +0 -10
- package/dist/index-CakUKzrE.d.ts +0 -10
- package/dist/index-D0Fxv9Z8.d.cts +0 -32
- package/dist/index-D0Fxv9Z8.d.ts +0 -32
- package/dist/index-Dh42RtMY.d.cts +0 -54
- package/dist/index-Dh42RtMY.d.ts +0 -54
- package/dist/index.cjs +0 -1182
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -17
- package/dist/index.js.map +0 -1
- package/dist/instrumentation/index.cjs +0 -17
- package/dist/instrumentation/index.cjs.map +0 -1
- package/dist/instrumentation/index.d.cts +0 -66
- package/dist/instrumentation/index.js.map +0 -1
- package/dist/monitoring/index.cjs +0 -141
- package/dist/monitoring/index.cjs.map +0 -1
- package/dist/monitoring/index.d.cts +0 -181
- package/dist/monitoring/index.js.map +0 -1
- package/dist/next/index.cjs +0 -693
- package/dist/next/index.cjs.map +0 -1
- package/dist/next/index.d.cts +0 -777
- package/dist/next/index.js.map +0 -1
- package/dist/providers/auth-firebase/index.cjs +0 -400
- package/dist/providers/auth-firebase/index.cjs.map +0 -1
- package/dist/providers/auth-firebase/index.d.cts +0 -137
- package/dist/providers/auth-firebase/index.js.map +0 -1
- package/dist/providers/db-firebase/index.cjs +0 -533
- package/dist/providers/db-firebase/index.cjs.map +0 -1
- package/dist/providers/db-firebase/index.d.cts +0 -265
- package/dist/providers/db-firebase/index.js.map +0 -1
- package/dist/providers/email-resend/index.cjs +0 -58
- package/dist/providers/email-resend/index.cjs.map +0 -1
- package/dist/providers/email-resend/index.d.cts +0 -73
- package/dist/providers/email-resend/index.js.map +0 -1
- package/dist/providers/payment-razorpay/index.cjs +0 -111
- package/dist/providers/payment-razorpay/index.cjs.map +0 -1
- package/dist/providers/payment-razorpay/index.d.cts +0 -96
- package/dist/providers/payment-razorpay/index.js.map +0 -1
- package/dist/providers/search-algolia/index.cjs +0 -301
- package/dist/providers/search-algolia/index.cjs.map +0 -1
- package/dist/providers/search-algolia/index.d.cts +0 -251
- package/dist/providers/search-algolia/index.d.ts +0 -251
- package/dist/providers/search-algolia/index.js +0 -280
- package/dist/providers/search-algolia/index.js.map +0 -1
- package/dist/providers/shipping-shiprocket/index.cjs +0 -147
- package/dist/providers/shipping-shiprocket/index.cjs.map +0 -1
- package/dist/providers/shipping-shiprocket/index.d.cts +0 -236
- package/dist/providers/shipping-shiprocket/index.js.map +0 -1
- package/dist/providers/storage-firebase/index.cjs +0 -176
- package/dist/providers/storage-firebase/index.cjs.map +0 -1
- package/dist/providers/storage-firebase/index.d.cts +0 -53
- package/dist/providers/storage-firebase/index.js.map +0 -1
- package/dist/react/index.cjs +0 -1687
- package/dist/react/index.cjs.map +0 -1
- package/dist/react/index.d.cts +0 -788
- package/dist/react/index.js.map +0 -1
- package/dist/repository-BO60jtdT.d.cts +0 -61
- package/dist/repository-BO60jtdT.d.ts +0 -61
- package/dist/repository-jKU_Ji1P.d.cts +0 -44
- package/dist/repository-jKU_Ji1P.d.ts +0 -44
- package/dist/security/index.cjs +0 -138
- package/dist/security/index.cjs.map +0 -1
- package/dist/security/index.d.cts +0 -309
- package/dist/security/index.js.map +0 -1
- package/dist/seed/index.cjs +0 -1085
- package/dist/seed/index.cjs.map +0 -1
- package/dist/seed/index.d.cts +0 -397
- package/dist/seed/index.js.map +0 -1
- package/dist/seo/index.cjs +0 -81
- package/dist/seo/index.cjs.map +0 -1
- package/dist/seo/index.d.cts +0 -150
- package/dist/seo/index.js.map +0 -1
- package/dist/style/tailwind/index.cjs +0 -40
- package/dist/style/tailwind/index.cjs.map +0 -1
- package/dist/style/tailwind/index.d.cts +0 -34
- package/dist/style/tailwind/index.js.map +0 -1
- package/dist/style/vanilla/index.cjs +0 -40
- package/dist/style/vanilla/index.cjs.map +0 -1
- package/dist/style/vanilla/index.d.cts +0 -26
- package/dist/style/vanilla/index.js.map +0 -1
- package/dist/style-BSlM-eWG.d.cts +0 -25
- package/dist/style-BSlM-eWG.d.ts +0 -25
- package/dist/tokens/index.cjs +0 -45
- package/dist/tokens/index.cjs.map +0 -1
- package/dist/tokens/index.d.cts +0 -734
- package/dist/tokens/index.js.map +0 -1
- package/dist/ui/index.cjs +0 -4870
- package/dist/ui/index.cjs.map +0 -1
- package/dist/ui/index.d.cts +0 -1644
- package/dist/ui/index.js.map +0 -1
- package/dist/utils/index.cjs +0 -505
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.d.cts +0 -545
- package/dist/utils/index.js.map +0 -1
- package/dist/validation/index.cjs +0 -153
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.d.cts +0 -126
- package/dist/validation/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/http/ApiClient.ts","../../../src/features/events/hooks/useEvents.ts","../../../src/features/events/hooks/useEvent.ts","../../../src/ui/components/Semantic.tsx","../../../src/ui/components/Div.tsx","../../../src/ui/components/Typography.tsx","../../../node_modules/shared/src/utils/mergeClasses.ts","../../../node_modules/shared/src/utils/toKebabCase.ts","../../../node_modules/shared/src/utils/toCamelCase.ts","../../../node_modules/shared/src/utils/toPascalCase.ts","../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/shared/src/utils/hasA11yProp.ts","../../../node_modules/lucide-react/src/context.ts","../../../node_modules/lucide-react/src/Icon.ts","../../../node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/lucide-react/src/icons/loader-circle.ts","../../../src/ui/components/Button.tsx","../../../src/ui/components/Accordion.tsx","../../../src/contracts/registry.ts","../../../src/contracts/table.ts","../../../src/ui/components/Pagination.tsx","../../../src/features/events/components/EventStatusBadge.tsx","../../../src/utils/string.formatter.ts","../../../src/features/events/components/EventCard.tsx","../../../src/features/events/components/EventsListView.tsx","../../../src/features/events/components/EventDetailView.tsx","../../../src/features/events/components/EventParticipateView.tsx","../../../src/features/events/components/EventLeaderboard.tsx","../../../src/features/events/components/AdminEventsView.tsx","../../../src/features/events/components/AdminEventEntriesView.tsx","../../../src/features/events/components/EventFormDrawer.tsx","../../../src/features/media/types/index.ts","../../../src/features/events/schemas/index.ts","../../../src/features/events/columns/index.ts","../../../src/features/events/repository/events.repository.ts","../../../src/features/events/manifest.ts","../../../src/features/events/api/route.ts","../../../src/features/events/api/%5Bid%5D/route.ts"],"names":["useQuery","React","jsx","_a","createElement","_b","forwardRef","jsxs","createContext","Fragment","z","GET","NextResponse"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ApiClient — @mohasinac/http\n *\n * Centralized HTTP client with consistent error handling,\n * timeout management, abort controller, and JSON parsing.\n *\n * Stripped of app-specific `API_ENDPOINTS` dependency from the original\n * `src/lib/api-client.ts`. The constructor accepts a `baseURL` option\n * instead of reading `process.env.NEXT_PUBLIC_API_URL` directly.\n *\n * Usage:\n * ```ts\n * import { ApiClient, ApiClientError } from \"@mohasinac/http\";\n *\n * const client = new ApiClient({ baseURL: process.env.NEXT_PUBLIC_APP_URL });\n * const data = await client.get(\"/api/products\");\n * ```\n */\n\nexport class ApiClientError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n public readonly data?: unknown,\n ) {\n super(message);\n this.name = \"ApiClientError\";\n }\n}\n\nexport interface RequestConfig extends RequestInit {\n params?: Record<string, string | number | boolean>;\n timeout?: number;\n}\n\nexport interface ApiResponse<T = unknown> {\n success: boolean;\n data?: T;\n error?: string;\n message?: string;\n}\n\nexport interface ApiClientOptions {\n /**\n * Base URL for relative endpoint resolution.\n * Falls back to `window.location.origin` in browsers or\n * `process.env.NEXT_PUBLIC_APP_URL` / `http://localhost:3000` on the server.\n */\n baseURL?: string;\n /** Default request timeout in milliseconds. Default: 120000 (2 min). */\n defaultTimeout?: number;\n}\n\nexport class ApiClient {\n private readonly baseURL: string;\n private readonly defaultTimeout: number;\n\n constructor(options?: ApiClientOptions) {\n this.baseURL = options?.baseURL ?? process.env.NEXT_PUBLIC_APP_URL ?? \"\";\n this.defaultTimeout = options?.defaultTimeout ?? 120_000;\n }\n\n private buildURL(\n endpoint: string,\n params?: Record<string, string | number | boolean>,\n ): string {\n const origin =\n this.baseURL ||\n (typeof window !== \"undefined\"\n ? window.location.origin\n : (process.env.NEXT_PUBLIC_APP_URL ?? \"http://localhost:3000\"));\n const url = new URL(endpoint, origin);\n if (params) {\n Object.entries(params).forEach(([key, value]) =>\n url.searchParams.append(key, String(value)),\n );\n }\n return url.toString();\n }\n\n private async getHeaders(\n method: string,\n customHeaders?: HeadersInit,\n ): Promise<HeadersInit> {\n const hasBody = ![\"GET\", \"HEAD\", \"DELETE\"].includes(method.toUpperCase());\n return {\n ...(hasBody ? { \"Content-Type\": \"application/json\" } : {}),\n ...customHeaders,\n };\n }\n\n private async request<T>(\n endpoint: string,\n config: RequestConfig = {},\n ): Promise<T> {\n const {\n params,\n timeout = this.defaultTimeout,\n headers: customHeaders,\n signal: externalSignal,\n ...fetchConfig\n } = config;\n const method = (fetchConfig.method ?? \"GET\").toUpperCase();\n\n const url = this.buildURL(endpoint, params);\n const headers = await this.getHeaders(method, customHeaders);\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n let onAbort: (() => void) | null = null;\n if (externalSignal) {\n if (externalSignal.aborted) {\n controller.abort();\n } else {\n onAbort = () => controller.abort();\n externalSignal.addEventListener(\"abort\", onAbort);\n }\n }\n\n try {\n const response = await fetch(url, {\n ...fetchConfig,\n headers,\n signal: controller.signal,\n credentials: \"include\",\n });\n\n clearTimeout(timeoutId);\n\n const data: ApiResponse<T> = await response.json().catch(() => ({\n success: false,\n error: \"Invalid JSON response\",\n }));\n\n if (!response.ok) {\n throw new ApiClientError(\n data.error ??\n data.message ??\n `Request failed with status ${response.status}`,\n response.status,\n data,\n );\n }\n\n if (!data.success) {\n throw new ApiClientError(\n data.error ?? data.message ?? \"Request failed\",\n response.status,\n data,\n );\n }\n\n return data.data as T;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error && error.name === \"AbortError\") {\n if (externalSignal?.aborted) throw error;\n throw new ApiClientError(\"Request timeout\", 408);\n }\n\n if (error instanceof TypeError) {\n throw new ApiClientError(\n \"Network error. Please check your connection.\",\n 0,\n );\n }\n\n if (error instanceof ApiClientError) throw error;\n\n throw new ApiClientError(\n error instanceof Error ? error.message : \"An unexpected error occurred\",\n 500,\n );\n } finally {\n if (onAbort) externalSignal?.removeEventListener(\"abort\", onAbort);\n }\n }\n\n async get<T = unknown>(endpoint: string, config?: RequestConfig): Promise<T> {\n return this.request<T>(endpoint, { ...config, method: \"GET\" });\n }\n\n async post<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: RequestConfig,\n ): Promise<T> {\n return this.request<T>(endpoint, {\n ...config,\n method: \"POST\",\n body: data != null ? JSON.stringify(data) : undefined,\n });\n }\n\n async put<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: RequestConfig,\n ): Promise<T> {\n return this.request<T>(endpoint, {\n ...config,\n method: \"PUT\",\n body: data != null ? JSON.stringify(data) : undefined,\n });\n }\n\n async patch<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: RequestConfig,\n ): Promise<T> {\n return this.request<T>(endpoint, {\n ...config,\n method: \"PATCH\",\n body: data != null ? JSON.stringify(data) : undefined,\n });\n }\n\n async delete<T = unknown>(\n endpoint: string,\n config?: RequestConfig,\n ): Promise<T> {\n return this.request<T>(endpoint, { ...config, method: \"DELETE\" });\n }\n\n async upload<T = unknown>(\n endpoint: string,\n formData: FormData,\n config?: RequestConfig,\n ): Promise<T> {\n const { headers, ...restConfig } = config ?? {};\n const uploadHeaders = await this.getHeaders(\"POST\", headers);\n // Remove Content-Type so browser can set it with multipart boundary\n delete (uploadHeaders as Record<string, string>)[\"Content-Type\"];\n return this.request<T>(endpoint, {\n ...restConfig,\n method: \"POST\",\n body: formData,\n headers: uploadHeaders,\n });\n }\n}\n\n/** Default singleton instance — reads NEXT_PUBLIC_APP_URL from env */\nexport const apiClient = new ApiClient();\n","\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { apiClient } from \"@mohasinac/http\";\nimport type { EventItem, EventListResponse, EventListParams } from \"../types\";\n\ninterface UseEventsOptions<T extends EventItem = EventItem> {\n enabled?: boolean;\n initialData?: EventListResponse;\n /**\n * Map each API item to a richer app-level type.\n * The API always returns `EventItem`; use this to project it to your own\n * extended type without forking the package.\n *\n * @example\n * const { events } = useEvents<EventDocument>(params, {\n * transform: (raw) => ({ ...raw, localizedTitle: t(raw.title) }),\n * });\n */\n transform?: (item: EventItem) => T;\n}\n\nexport function useEvents<T extends EventItem = EventItem>(\n params: EventListParams = {},\n opts?: UseEventsOptions<T>,\n) {\n const sp = new URLSearchParams();\n if (params.status) sp.set(\"status\", params.status);\n if (params.type) sp.set(\"type\", params.type);\n if (params.page) sp.set(\"page\", String(params.page));\n if (params.pageSize) sp.set(\"pageSize\", String(params.pageSize));\n if (params.sort) sp.set(\"sorts\", params.sort);\n if (params.filters) sp.set(\"filters\", params.filters);\n\n const qs = sp.toString();\n\n const { data, isLoading, error, refetch } = useQuery<EventListResponse>({\n queryKey: [\"events\", qs],\n queryFn: () =>\n apiClient.get<EventListResponse>(`/api/events${qs ? `?${qs}` : \"\"}`),\n enabled: opts?.enabled ?? true,\n initialData: opts?.initialData,\n });\n\n const rawItems = data?.items ?? [];\n const events = (\n opts?.transform ? rawItems.map(opts.transform) : rawItems\n ) as T[];\n\n return {\n events,\n total: data?.total ?? 0,\n totalPages: data?.totalPages ?? 0,\n hasMore: data?.hasMore ?? false,\n isLoading,\n error: error instanceof Error ? error.message : null,\n refetch,\n };\n}\n","\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { apiClient } from \"@mohasinac/http\";\nimport type {\n EventItem,\n EventEntryListResponse,\n LeaderboardEntry,\n} from \"../types\";\n\ninterface UseEventOptions<T extends EventItem = EventItem> {\n enabled?: boolean;\n initialData?: EventItem;\n /**\n * Map the API item to a richer app-level type without forking the package.\n * @example\n * const { event } = useEvent<EventDocument>(id, {\n * transform: (raw) => ({ ...raw, registrationCount: 0 }),\n * });\n */\n transform?: (item: EventItem) => T;\n}\n\nexport function useEvent<T extends EventItem = EventItem>(\n id: string,\n opts?: UseEventOptions<T>,\n) {\n const { data, isLoading, error, refetch } = useQuery<EventItem | null>({\n queryKey: [\"event\", id],\n queryFn: () => apiClient.get<EventItem>(`/api/events/${id}`),\n enabled: (opts?.enabled ?? true) && !!id,\n initialData: opts?.initialData,\n });\n\n const event =\n data && opts?.transform ? opts.transform(data) : (data as T | null);\n\n return {\n event: event ?? null,\n isLoading,\n error: error instanceof Error ? error.message : null,\n refetch,\n };\n}\n\nexport function useEventEntries(\n eventId: string,\n params: { page?: number; pageSize?: number; reviewStatus?: string } = {},\n opts?: { enabled?: boolean },\n) {\n const sp = new URLSearchParams();\n if (params.page) sp.set(\"page\", String(params.page));\n if (params.pageSize) sp.set(\"pageSize\", String(params.pageSize));\n if (params.reviewStatus) sp.set(\"reviewStatus\", params.reviewStatus);\n const qs = sp.toString();\n\n const { data, isLoading, error, refetch } = useQuery<EventEntryListResponse>({\n queryKey: [\"event-entries\", eventId, qs],\n queryFn: () =>\n apiClient.get<EventEntryListResponse>(\n `/api/events/${eventId}/entries${qs ? `?${qs}` : \"\"}`,\n ),\n enabled: (opts?.enabled ?? true) && !!eventId,\n });\n\n return {\n entries: data?.items ?? [],\n total: data?.total ?? 0,\n isLoading,\n error: error instanceof Error ? error.message : null,\n refetch,\n };\n}\n\nexport function useEventLeaderboard(\n eventId: string,\n limit = 10,\n opts?: { enabled?: boolean },\n) {\n const { data, isLoading, error } = useQuery<LeaderboardEntry[]>({\n queryKey: [\"event-leaderboard\", eventId, limit],\n queryFn: () =>\n apiClient.get<LeaderboardEntry[]>(\n `/api/events/${eventId}/leaderboard?limit=${limit}`,\n ),\n enabled: (opts?.enabled ?? true) && !!eventId,\n });\n\n return {\n leaderboard: data ?? [],\n isLoading,\n error: error instanceof Error ? error.message : null,\n };\n}\n","import React from \"react\";\n\n/**\n * Semantic HTML Wrapper Components\n *\n * Thin wrappers around HTML5 semantic elements.\n * Using these instead of raw tags enables:\n * - Future one-place theming (add default padding/colour here, it applies everywhere)\n * - Enforced accessibility attributes (Nav requires aria-label)\n * - Consistent documentation / IDE autocomplete\n * - Clean migration path if element defaults change\n *\n * All components pass through every standard HTML attribute via `...props`.\n * Style via `className` using Tailwind CSS classes.\n *\n * @example\n * ```tsx\n * import { Section, Article, Main, Aside, Nav, Ul, Ol, Li } from '@mohasinac/ui';\n *\n * <Main className=\"max-w-7xl mx-auto px-4\">\n * <Section className=\"py-12\">\n * <Article>...</Article>\n * </Section>\n * <Aside className=\"w-64 shrink-0\">...</Aside>\n * </Main>\n *\n * <Nav aria-label=\"Main navigation\">\n * <Ul className=\"flex gap-4\">\n * <Li>Products</Li>\n * </Ul>\n * </Nav>\n * ```\n */\n\n// ─── Section ─────────────────────────────────────────────────────────────────\n/**\n * Semantic `<section>` element.\n * Use for thematically grouped content that would appear in an outline.\n * Prefer this over a plain `<div>` when the block has a heading.\n */\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport const Section = React.forwardRef<HTMLElement, SectionProps>(\n ({ className = \"\", children, ...props }, ref) => (\n <section className={className} ref={ref} {...props}>\n {children}\n </section>\n ),\n);\nSection.displayName = \"Section\";\n\n// ─── Article ─────────────────────────────────────────────────────────────────\n/**\n * Semantic `<article>` element.\n * Use for self-contained compositions: blog posts, product cards, reviews, forum posts.\n */\nexport interface ArticleProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\nexport function Article({ className = \"\", children, ...props }: ArticleProps) {\n return (\n <article className={className} {...props}>\n {children}\n </article>\n );\n}\n\n// ─── Main ─────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<main>` element.\n * Wraps the primary content of the document. Should appear only once per page.\n */\nexport interface MainProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport function Main({ className = \"\", children, ...props }: MainProps) {\n return (\n <main className={className} {...props}>\n {children}\n </main>\n );\n}\n\n// ─── Aside ────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<aside>` element.\n * Use for supplementary content tangentially related to the main content:\n * sidebars, callout boxes, related-link panels.\n */\nexport interface AsideProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport const Aside = React.forwardRef<HTMLElement, AsideProps>(\n ({ className = \"\", children, ...props }, ref) => (\n <aside className={className} ref={ref} {...props}>\n {children}\n </aside>\n ),\n);\nAside.displayName = \"Aside\";\n\n// ─── Nav ─────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<nav>` element with enforced `aria-label`.\n *\n * Every `<nav>` on a page MUST have a unique `aria-label` so assistive\n * technologies can distinguish between multiple navigation landmarks.\n *\n * @example\n * ```tsx\n * <Nav aria-label=\"Breadcrumb\">...</Nav>\n * <Nav aria-label=\"Product categories\">...</Nav>\n * ```\n */\nexport interface NavProps extends React.HTMLAttributes<HTMLElement> {\n /** REQUIRED — describes the purpose of this navigation region for screen readers. */\n \"aria-label\": string;\n children: React.ReactNode;\n}\n\nexport function Nav({ className = \"\", children, ...props }: NavProps) {\n return (\n <nav className={className} {...props}>\n {children}\n </nav>\n );\n}\n\n// ─── Header (block-level) ─────────────────────────────────────────────────────\n/**\n * Semantic `<header>` element for block-level component headers.\n * Use inside `Section`, `Article`, or card bodies — NOT as the page-level header.\n *\n * @example\n * ```tsx\n * <Article>\n * <BlockHeader className=\"mb-4\">\n * <Heading level={2}>Post title</Heading>\n * </BlockHeader>\n * </Article>\n * ```\n */\nexport interface BlockHeaderProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport function BlockHeader({\n className = \"\",\n children,\n ...props\n}: BlockHeaderProps) {\n return (\n <header className={className} {...props}>\n {children}\n </header>\n );\n}\n\n// ─── Footer (block-level) ─────────────────────────────────────────────────────\n/**\n * Semantic `<footer>` element for block-level component footers.\n * Use inside `Section`, `Article`, or card bodies — NOT as the page-level footer.\n */\nexport interface BlockFooterProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport function BlockFooter({\n className = \"\",\n children,\n ...props\n}: BlockFooterProps) {\n return (\n <footer className={className} {...props}>\n {children}\n </footer>\n );\n}\n\n// ─── Ul ──────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<ul>` (unordered list) element.\n *\n * @example\n * ```tsx\n * <Ul className=\"space-y-2\">\n * <Li>Item one</Li>\n * <Li>Item two</Li>\n * </Ul>\n * ```\n */\nexport interface UlProps extends React.HTMLAttributes<HTMLUListElement> {\n children: React.ReactNode;\n}\n\nexport function Ul({ className = \"\", children, ...props }: UlProps) {\n return (\n <ul className={className} {...props}>\n {children}\n </ul>\n );\n}\n\n// ─── Ol ──────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<ol>` (ordered list) element.\n *\n * @example\n * ```tsx\n * <Ol className=\"list-decimal pl-4 space-y-1\">\n * <Li>Step one</Li>\n * <Li>Step two</Li>\n * </Ol>\n * ```\n */\nexport interface OlProps extends React.HTMLAttributes<HTMLOListElement> {\n children: React.ReactNode;\n}\n\nexport function Ol({ className = \"\", children, ...props }: OlProps) {\n return (\n <ol className={className} {...props}>\n {children}\n </ol>\n );\n}\n\n// ─── Li ──────────────────────────────────────────────────────────────────────\n/**\n * Semantic `<li>` (list item) element. Use inside `Ul` or `Ol`.\n */\nexport interface LiProps extends React.LiHTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n}\n\nexport function Li({ className = \"\", children, ...props }: LiProps) {\n return (\n <li className={className} {...props}>\n {children}\n </li>\n );\n}\n\n// ─── Header / Footer — convenience aliases ────────────────────────────────────\n/**\n * Aliases for `BlockHeader` and `BlockFooter`.\n * Use when importing from the standard `<Header>` / `<Footer>` names.\n */\nexport type HeaderProps = BlockHeaderProps;\nexport const Header = BlockHeader;\nexport type FooterProps = BlockFooterProps;\nexport const Footer = BlockFooter;\n","import React from \"react\";\r\n\r\nexport interface DivProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Semantic `<div>` wrapper for general-purpose layout containers.\r\n *\r\n * Use when no more specific semantic element applies\r\n * (`<Section>`, `<Article>`, `<Main>`, `<Aside>` etc). Enables\r\n * future one-place theming and consistent import from `@mohasinac/appkit/ui`.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Div className=\"flex items-center gap-4\">\r\n * <Badge>New</Badge>\r\n * <Text>Product title</Text>\r\n * </Div>\r\n * ```\r\n */\r\nexport const Div = React.forwardRef<HTMLDivElement, DivProps>(\r\n ({ className = \"\", children, ...props }, ref) => (\r\n <div ref={ref} className={className} {...props}>\r\n {children}\r\n </div>\r\n ),\r\n);\r\nDiv.displayName = \"Div\";\r\n","import React from \"react\";\n\n/**\n * UI_THEME — inlined subset of the app-level THEME_CONSTANTS.\n * Consumer apps can override by passing `className` on each component.\n * Full THEME_CONSTANTS lives in the host app (`@/constants`).\n */\nconst UI_THEME = {\n typography: {\n h1: \"text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight font-display\",\n h2: \"text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight font-display\",\n h3: \"text-xl md:text-2xl lg:text-3xl font-bold tracking-tight font-display\",\n h4: \"text-lg md:text-xl lg:text-2xl font-bold font-display\",\n h5: \"text-base md:text-lg lg:text-xl font-medium\",\n h6: \"text-sm md:text-base lg:text-lg font-medium\",\n body: \"text-base lg:text-lg\",\n small: \"text-sm lg:text-base\",\n xs: \"text-xs lg:text-sm\",\n },\n themed: {\n textPrimary: \"text-zinc-900 dark:text-zinc-50\",\n textSecondary: \"text-zinc-500 dark:text-zinc-400\",\n textMuted: \"text-zinc-400 dark:text-zinc-500\",\n textError: \"text-red-600 dark:text-red-400\",\n textSuccess: \"text-emerald-600 dark:text-emerald-400\",\n },\n colors: {\n form: {\n required: \"text-red-500\",\n },\n },\n} as const;\n\n// ─── Heading ─────────────────────────────────────────────────────────────────\n\ninterface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n variant?: \"primary\" | \"secondary\" | \"muted\" | \"none\";\n children: React.ReactNode;\n}\n\nexport function Heading({\n level = 1,\n variant = \"primary\",\n className = \"\",\n children,\n ...props\n}: HeadingProps) {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n const { typography, themed } = UI_THEME;\n\n const sizeClasses = {\n 1: typography.h1,\n 2: typography.h2,\n 3: typography.h3,\n 4: typography.h4,\n 5: typography.h5,\n 6: typography.h6,\n };\n\n const variantClasses = {\n primary: themed.textPrimary,\n secondary: themed.textSecondary,\n muted: themed.textMuted,\n none: \"\",\n };\n\n return (\n <Tag\n className={`${sizeClasses[level]} ${variantClasses[variant]} ${className}`}\n {...props}\n >\n {children}\n </Tag>\n );\n}\n\n// ─── Text ─────────────────────────────────────────────────────────────────────\n\ninterface TextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n variant?: \"primary\" | \"secondary\" | \"muted\" | \"error\" | \"success\" | \"none\";\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\";\n weight?: \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n /** Override the rendered element. Defaults to `p`. */\n as?: React.ElementType;\n children: React.ReactNode;\n}\n\nexport function Text({\n variant = \"primary\",\n size = \"base\",\n weight = \"normal\",\n className = \"\",\n as: Tag = \"p\",\n children,\n ...props\n}: TextProps) {\n const { typography, themed } = UI_THEME;\n\n const sizeClasses = {\n xs: typography.xs,\n sm: typography.small,\n base: typography.body,\n lg: \"text-lg\",\n xl: \"text-xl\",\n };\n\n const weightClasses = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n };\n\n const variantClasses = {\n primary: themed.textPrimary,\n secondary: themed.textSecondary,\n muted: themed.textMuted,\n error: themed.textError,\n success: themed.textSuccess,\n none: \"\",\n };\n\n return (\n <Tag\n className={`${sizeClasses[size]} ${weightClasses[weight]} ${variantClasses[variant]} ${className}`}\n {...props}\n >\n {children}\n </Tag>\n );\n}\n\n// ─── Label ────────────────────────────────────────────────────────────────────\n\ninterface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n children: React.ReactNode;\n}\n\nexport function Label({\n required,\n className = \"\",\n children,\n ...props\n}: LabelProps) {\n const { themed, typography, colors } = UI_THEME;\n return (\n <label\n className={`block ${typography.small} font-medium ${themed.textSecondary} mb-1.5 ${className}`}\n {...props}\n >\n {children}\n {required && <span className={`${colors.form.required} ml-1`}>*</span>}\n </label>\n );\n}\n\n// ─── Caption ─────────────────────────────────────────────────────────────────\n\ninterface CaptionProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** \"default\" — muted grey (default); \"accent\" — indigo, semibold; \"inverse\" — light indigo for use on dark indigo backgrounds */\n variant?: \"default\" | \"accent\" | \"inverse\";\n children: React.ReactNode;\n}\n\nexport function Caption({\n variant = \"default\",\n className = \"\",\n children,\n ...props\n}: CaptionProps) {\n const { themed, typography } = UI_THEME;\n\n const variantClasses = {\n default: themed.textMuted,\n accent: \"text-primary font-semibold\",\n inverse: \"text-primary/40\",\n };\n\n return (\n <span\n className={`${typography.xs} ${variantClasses[variant]} ${className}`}\n {...props}\n >\n {children}\n </span>\n );\n}\n\n// ─── Span ─────────────────────────────────────────────────────────────────────\n/**\n * Inline wrapper for styled text fragments. Use instead of a raw `<span>`.\n * When `variant` is \"inherit\" (default) the element carries no colour classes\n * so it blends with its parent — perfect for purely structural/CSS wrappers.\n *\n * @example\n * ```tsx\n * <Span className=\"bg-gradient-to-r from-indigo-500 to-purple-500 bg-clip-text text-transparent\">\n * Highlighted\n * </Span>\n *\n * <Span variant=\"error\" weight=\"semibold\">Required</Span>\n * ```\n */\ninterface SpanProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Colour variant. \"inherit\" (default) applies no colour class. */\n variant?:\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"muted\"\n | \"error\"\n | \"success\"\n | \"accent\";\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\";\n weight?: \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n children?: React.ReactNode;\n}\n\nexport function Span({\n variant = \"inherit\",\n size,\n weight,\n className = \"\",\n children,\n ...props\n}: SpanProps) {\n const { themed, typography } = UI_THEME;\n\n const variantClasses: Record<NonNullable<SpanProps[\"variant\"]>, string> = {\n inherit: \"\",\n primary: themed.textPrimary,\n secondary: themed.textSecondary,\n muted: themed.textMuted,\n error: themed.textError,\n success: themed.textSuccess,\n accent: \"text-primary\",\n };\n\n const sizeClasses: Record<NonNullable<SpanProps[\"size\"]>, string> = {\n xs: typography.xs,\n sm: typography.small,\n base: typography.body,\n lg: \"text-lg\",\n xl: \"text-xl\",\n };\n\n const weightClasses: Record<NonNullable<SpanProps[\"weight\"]>, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n };\n\n const classes = [\n size ? sizeClasses[size] : \"\",\n weight ? weightClasses[weight] : \"\",\n variantClasses[variant],\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n}\n","/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n","/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n","import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n","'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n absoluteStrokeWidth: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n","'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\nimport { useLucideContext } from './context';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n { color, size, strokeWidth, absoluteStrokeWidth, className = '', children, iconNode, ...rest },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const calculatedStrokeWidth =\n absoluteStrokeWidth ?? contextAbsoluteStrokeWidth\n ? (Number(strokeWidth ?? contextStrokeWidth) * 24) / Number(size ?? contextSize)\n : strokeWidth ?? contextStrokeWidth;\n\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses('lucide', contextClass, className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('loader-circle', __iconNode);\n\nexport default LoaderCircle;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Loader2 } from \"lucide-react\";\n\n/**\n * Button — versatile button with multiple variants, sizes, and loading state.\n *\n * Extracted from src/components/ui/Button.tsx for @mohasinac/ui.\n * Theme values inlined from THEME_CONSTANTS.button and THEME_CONSTANTS.colors.button.\n */\n\n// Inlined from THEME_CONSTANTS\nconst UI_BUTTON = {\n base: \"inline-flex items-center justify-center font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\",\n active: \"active:scale-95\",\n variants: {\n primary:\n \"bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 shadow-sm focus:ring-primary-500/30 dark:bg-secondary-500 dark:text-white dark:hover:bg-secondary-400 dark:active:bg-secondary-600 dark:focus:ring-secondary-400/30\",\n secondary:\n \"bg-primary-700 text-white hover:bg-primary-600 active:bg-primary-800 shadow-md focus:ring-primary-500 dark:bg-secondary-700 dark:text-white dark:hover:bg-secondary-600 dark:active:bg-secondary-800 dark:focus:ring-secondary-500\",\n outline:\n \"border border-zinc-200 dark:border-slate-700 bg-white dark:bg-transparent text-zinc-900 dark:text-zinc-100 hover:bg-zinc-50 dark:hover:bg-slate-800 focus:ring-zinc-400\",\n ghost:\n \"text-zinc-700 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-slate-800 focus:ring-zinc-400\",\n danger:\n \"bg-red-600 text-white hover:bg-red-500 active:bg-red-700 shadow-sm shadow-red-600/10 focus:ring-red-500\",\n warning:\n \"bg-amber-500 text-white hover:bg-amber-400 active:bg-amber-600 shadow-sm shadow-amber-500/10 focus:ring-amber-500\",\n },\n sizes: {\n sm: \"px-2.5 py-1.5 text-xs sm:px-3 sm:text-sm gap-1.5 min-h-[36px]\",\n md: \"px-3 py-2 text-sm sm:px-4 sm:py-2.5 sm:text-base gap-2 min-h-[44px]\",\n lg: \"px-4 py-2.5 text-base sm:px-6 sm:py-3 sm:text-lg gap-2.5 min-h-[44px]\",\n },\n} as const;\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: keyof typeof UI_BUTTON.variants;\n size?: keyof typeof UI_BUTTON.sizes;\n isLoading?: boolean;\n children?: React.ReactNode;\n}\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n className = \"\",\n isLoading = false,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n return (\n <button\n className={twMerge(\n UI_BUTTON.base,\n UI_BUTTON.active,\n UI_BUTTON.variants[variant],\n UI_BUTTON.sizes[size],\n className,\n )}\n disabled={disabled || isLoading}\n aria-busy={isLoading || undefined}\n {...props}\n >\n {isLoading && (\n <Loader2\n className=\"w-4 h-4 animate-spin flex-shrink-0\"\n aria-hidden=\"true\"\n />\n )}\n {isLoading ? <span className=\"opacity-70\">{children}</span> : children}\n </button>\n );\n}\n","\"use client\";\r\n\r\nimport React, { createContext, useContext, useMemo, useState } from \"react\";\r\nimport { Button } from \"./Button\";\r\nimport { Div } from \"./Div\";\r\nimport { Span } from \"./Typography\";\r\n\r\ninterface AccordionContextValue {\r\n type: \"single\" | \"multiple\";\r\n openValues: string[];\r\n toggle: (value: string) => void;\r\n}\r\n\r\nconst AccordionContext = createContext<AccordionContextValue | null>(null);\r\n\r\nexport interface AccordionProps {\r\n /** Legacy simple mode: renders a native details/summary accordion */\r\n title?: React.ReactNode;\r\n /** Legacy simple mode open state */\r\n open?: boolean;\r\n /** Legacy simple mode title styling */\r\n titleClassName?: string;\r\n /** Legacy simple mode content styling */\r\n contentClassName?: string;\r\n\r\n /** Controlled/list mode: single or multiple expanded items */\r\n type?: \"single\" | \"multiple\";\r\n defaultValue?: string | string[];\r\n value?: string | string[];\r\n onChange?: (value: string | string[]) => void;\r\n\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface AccordionItemProps {\r\n value: string;\r\n title: React.ReactNode;\r\n disabled?: boolean;\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction toArray(value?: string | string[]): string[] {\r\n if (!value) return [];\r\n return Array.isArray(value) ? value : [value];\r\n}\r\n\r\nfunction renderLegacyAccordion({\r\n title,\r\n children,\r\n open,\r\n className = \"\",\r\n titleClassName = \"\",\r\n contentClassName = \"\",\r\n}: {\r\n title: React.ReactNode;\r\n children?: React.ReactNode;\r\n open: boolean;\r\n className?: string;\r\n titleClassName?: string;\r\n contentClassName?: string;\r\n}) {\r\n return (\r\n <details\r\n open={open}\r\n className={`group border-b border-zinc-200 dark:border-zinc-700 ${className}`}\r\n >\r\n <summary\r\n className={`flex cursor-pointer select-none list-none items-center justify-between py-3 text-sm font-medium text-zinc-900 dark:text-zinc-100 ${titleClassName}`}\r\n >\r\n {title}\r\n <span\r\n className=\"ml-2 flex-shrink-0 text-zinc-400 transition-transform duration-200 group-open:rotate-180\"\r\n aria-hidden=\"true\"\r\n >\r\n ▾\r\n </span>\r\n </summary>\r\n <div\r\n className={`pb-4 text-sm text-zinc-600 dark:text-zinc-400 ${contentClassName}`}\r\n >\r\n {children}\r\n </div>\r\n </details>\r\n );\r\n}\r\n\r\nexport function Accordion({\r\n title,\r\n children,\r\n open = false,\r\n className = \"\",\r\n titleClassName = \"\",\r\n contentClassName = \"\",\r\n type = \"single\",\r\n defaultValue,\r\n value,\r\n onChange,\r\n}: AccordionProps) {\r\n // Backward-compatible simple details mode.\r\n if (title !== undefined) {\r\n return renderLegacyAccordion({\r\n title,\r\n children,\r\n open,\r\n className,\r\n titleClassName,\r\n contentClassName,\r\n });\r\n }\r\n\r\n const initialOpen = useMemo(() => {\r\n if (value !== undefined) return toArray(value);\r\n return toArray(defaultValue);\r\n }, [defaultValue, value]);\r\n\r\n const [internalOpenValues, setInternalOpenValues] =\r\n useState<string[]>(initialOpen);\r\n\r\n const activeOpenValues =\r\n value !== undefined ? toArray(value) : internalOpenValues;\r\n\r\n const toggle = (itemValue: string) => {\r\n const nextOpenValues =\r\n type === \"single\"\r\n ? activeOpenValues.includes(itemValue)\r\n ? []\r\n : [itemValue]\r\n : activeOpenValues.includes(itemValue)\r\n ? activeOpenValues.filter((v) => v !== itemValue)\r\n : [...activeOpenValues, itemValue];\r\n\r\n if (value === undefined) {\r\n setInternalOpenValues(nextOpenValues);\r\n }\r\n\r\n onChange?.(type === \"single\" ? (nextOpenValues[0] ?? \"\") : nextOpenValues);\r\n };\r\n\r\n return (\r\n <AccordionContext.Provider\r\n value={{ type, openValues: activeOpenValues, toggle }}\r\n >\r\n <Div className={className}>{children}</Div>\r\n </AccordionContext.Provider>\r\n );\r\n}\r\n\r\nexport function AccordionItem({\r\n value,\r\n title,\r\n disabled = false,\r\n className = \"\",\r\n children,\r\n}: AccordionItemProps) {\r\n const ctx = useContext(AccordionContext);\r\n if (!ctx) {\r\n throw new Error(\"AccordionItem must be used within Accordion.\");\r\n }\r\n\r\n const isOpen = ctx.openValues.includes(value);\r\n\r\n return (\r\n <Div\r\n className={`border-b border-gray-200 dark:border-gray-700 ${className}`}\r\n >\r\n <Button\r\n type=\"button\"\r\n disabled={disabled}\r\n aria-expanded={isOpen}\r\n onClick={() => ctx.toggle(value)}\r\n className=\"w-full flex items-center justify-between py-3 px-1 text-left text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed\"\r\n >\r\n <Span>{title}</Span>\r\n <Span\r\n className={`transition-transform duration-200 ${isOpen ? \"rotate-180\" : \"\"}`}\r\n >\r\n ▾\r\n </Span>\r\n </Button>\r\n {isOpen && (\r\n <Div className=\"pb-3 px-1 text-sm text-gray-600 dark:text-gray-400\">\r\n {children}\r\n </Div>\r\n )}\r\n </Div>\r\n );\r\n}\r\n","import type { IAuthProvider, ISessionProvider } from \"./auth.js\";\nimport type { IEmailProvider } from \"./email.js\";\nimport type { IStorageProvider } from \"./storage.js\";\nimport type { IPaymentProvider } from \"./payment.js\";\nimport type { IShippingProvider } from \"./shipping.js\";\nimport type { ISearchProvider } from \"./search.js\";\nimport type { ICacheProvider, IQueueProvider, IEventBus } from \"./infra.js\";\nimport type { IStyleAdapter } from \"./style.js\";\nimport type { IDbProvider } from \"./repository.js\";\n\nexport interface ProviderRegistry {\n auth: IAuthProvider;\n session: ISessionProvider;\n email: IEmailProvider;\n storage: IStorageProvider;\n style: IStyleAdapter;\n db?: IDbProvider;\n payment?: IPaymentProvider;\n shipping?: IShippingProvider;\n search?: ISearchProvider;\n cache?: ICacheProvider;\n queue?: IQueueProvider;\n eventBus?: IEventBus;\n}\n\nlet _registry: ProviderRegistry | null = null;\n\nexport function registerProviders(registry: ProviderRegistry): void {\n _registry = registry;\n}\n\nexport function getProviders(): ProviderRegistry {\n if (!_registry) {\n throw new Error(\n \"[contracts] Call registerProviders() before getProviders(). \" +\n \"Ensure providers.config.ts is imported at app startup.\",\n );\n }\n return _registry;\n}\n\nexport function _resetProviders(): void {\n _registry = null;\n}","/**\r\n * Table, pagination and sticky-header configuration types.\r\n *\r\n * Every table/list view in every feat-* package accepts these config objects.\r\n * Apps can spread-merge over the exported defaults to override only what they need:\r\n *\r\n * @example\r\n * // App-level base config (one file, reused everywhere)\r\n * import { DEFAULT_TABLE_CONFIG, DEFAULT_PAGINATION_CONFIG } from \"@mohasinac/contracts\";\r\n *\r\n * export const myTableConfig: TableConfig = {\r\n * ...DEFAULT_TABLE_CONFIG,\r\n * pageSize: 10,\r\n * showViewToggle: true,\r\n * };\r\n *\r\n * export const myPaginationConfig: PaginationConfig = {\r\n * ...DEFAULT_PAGINATION_CONFIG,\r\n * perPage: 10,\r\n * showPageSizeSelector: true,\r\n * pageSizeOptions: [10, 25, 50],\r\n * };\r\n *\r\n * // In a component\r\n * <DataTable tableConfig={myTableConfig} paginationConfig={myPaginationConfig} ... />\r\n *\r\n * // In a hook\r\n * const { products } = useProducts(params, { paginationConfig: myPaginationConfig });\r\n */\r\n\r\n// ─── Pagination ────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Composable pagination configuration.\r\n * All fields are optional so apps can spread-merge over the defaults.\r\n */\r\nexport interface PaginationConfig {\r\n /** Items per page sent to the API. Default: 20 */\r\n perPage?: number;\r\n /** Hard cap on perPage (for page-size selector). Default: 100 */\r\n maxPerPage?: number;\r\n /** Show a page-size selector UI element. Default: false */\r\n showPageSizeSelector?: boolean;\r\n /** Options for the page-size selector. Default: [10, 20, 50, 100] */\r\n pageSizeOptions?: number[];\r\n /** Show first / last page buttons. Default: true */\r\n showFirstLast?: boolean;\r\n /** Show previous / next buttons. Default: true */\r\n showPrevNext?: boolean;\r\n /** Max visible page number buttons before ellipsis. Default: 7 */\r\n maxVisible?: number;\r\n /** Size variant for pagination button sizing. Default: \"md\" */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport const DEFAULT_PAGINATION_CONFIG: Required<PaginationConfig> = {\r\n perPage: 20,\r\n maxPerPage: 100,\r\n showPageSizeSelector: false,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n showFirstLast: true,\r\n showPrevNext: true,\r\n maxVisible: 7,\r\n size: \"md\",\r\n};\r\n\r\n// ─── Sticky header ─────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Sticky header configuration for data tables.\r\n * When `enabled` is true the thead is pinned while the tbody scrolls.\r\n */\r\nexport interface StickyConfig {\r\n /** Pin the header while the body scrolls. Default: false */\r\n enabled?: boolean;\r\n /** Tailwind `top-*` class applied to the sticky thead. Default: \"top-0\" */\r\n topOffset?: string;\r\n /** Max height of the scrollable container. Default: \"600px\" */\r\n maxHeight?: string;\r\n /** z-index of the sticky header. Default: 10 */\r\n zIndex?: number;\r\n}\r\n\r\nexport const DEFAULT_STICKY_CONFIG: Required<StickyConfig> = {\r\n enabled: false,\r\n topOffset: \"top-0\",\r\n maxHeight: \"600px\",\r\n zIndex: 10,\r\n};\r\n\r\n// ─── Table ─────────────────────────────────────────────────────────────────────\r\n\r\n/** View mode options for DataTable. */\r\nexport type TableViewMode = \"table\" | \"grid\" | \"list\";\r\n\r\n/**\r\n * Composable table configuration.\r\n * Pass a Partial<TableConfig> to any DataTable / admin-list hook; values are\r\n * deep-merged with DEFAULT_TABLE_CONFIG at the use site.\r\n */\r\nexport interface TableConfig {\r\n /** Items shown per page (internal pagination). Default: 20 */\r\n pageSize?: number;\r\n /** Sticky header behaviour. Default: disabled */\r\n sticky?: StickyConfig;\r\n /** Alternate row background colour. Default: false */\r\n striped?: boolean;\r\n /** Enable row checkbox selection. Default: false */\r\n selectable?: boolean;\r\n /** Show view-mode toggle (table / grid / list). Default: false */\r\n showViewToggle?: boolean;\r\n /** Default view mode. Default: \"table\" */\r\n defaultViewMode?: TableViewMode;\r\n /** Pagination widget configuration. */\r\n pagination?: PaginationConfig;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: {\r\n pageSize: number;\r\n sticky: Required<StickyConfig>;\r\n striped: boolean;\r\n selectable: boolean;\r\n showViewToggle: boolean;\r\n defaultViewMode: TableViewMode;\r\n pagination: Required<PaginationConfig>;\r\n} = {\r\n pageSize: DEFAULT_PAGINATION_CONFIG.perPage,\r\n sticky: DEFAULT_STICKY_CONFIG,\r\n striped: false,\r\n selectable: false,\r\n showViewToggle: false,\r\n defaultViewMode: \"table\",\r\n pagination: DEFAULT_PAGINATION_CONFIG,\r\n};\r\n\r\n/**\r\n * Utility: merge a Partial<TableConfig> over the defaults.\r\n * Performs a shallow merge at the top level and deep merge for nested objects.\r\n */\r\nexport function mergeTableConfig(override?: Partial<TableConfig>): typeof DEFAULT_TABLE_CONFIG {\r\n if (!override) return DEFAULT_TABLE_CONFIG;\r\n return {\r\n ...DEFAULT_TABLE_CONFIG,\r\n ...override,\r\n sticky: { ...DEFAULT_STICKY_CONFIG, ...override.sticky },\r\n pagination: { ...DEFAULT_PAGINATION_CONFIG, ...override.pagination },\r\n };\r\n}\r\n","\"use client\";\n\nimport React from \"react\";\nimport type { PaginationConfig } from \"@mohasinac/contracts\";\nimport { DEFAULT_PAGINATION_CONFIG } from \"@mohasinac/contracts\";\n\n/**\n * Pagination — smart ellipsis pagination with prev/next chevrons.\n *\n * Accepts either individual props OR a `paginationConfig` object\n * (merged with DEFAULT_PAGINATION_CONFIG). Individual props take precedence.\n */\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n /**\n * Composable pagination config. Merged with DEFAULT_PAGINATION_CONFIG.\n * Individual flat props override this.\n */\n paginationConfig?: Partial<PaginationConfig>;\n /** Max visible page buttons before ellipsis kicks in. Default: 7 */\n maxVisible?: number;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nfunction getPageNumbers(\n currentPage: number,\n totalPages: number,\n maxVisible: number,\n): (number | \"...\")[] {\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | \"...\")[] = [];\n const halfVisible = Math.floor(maxVisible / 2);\n\n let startPage = Math.max(1, currentPage - halfVisible);\n let endPage = Math.min(totalPages, currentPage + halfVisible);\n\n if (currentPage <= halfVisible) endPage = maxVisible;\n if (currentPage >= totalPages - halfVisible)\n startPage = totalPages - maxVisible + 1;\n\n if (startPage > 1) {\n pages.push(1);\n if (startPage > 2) pages.push(\"...\");\n }\n for (let i = startPage; i <= endPage; i++) pages.push(i);\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) pages.push(\"...\");\n pages.push(totalPages);\n }\n return pages;\n}\n\nconst SIZE_CLASSES = {\n sm: \"text-xs px-2 py-1 min-w-[28px]\",\n md: \"text-sm px-3 py-1.5 min-w-[36px]\",\n lg: \"text-base px-4 py-2 min-w-[44px]\",\n} as const;\n\nexport function Pagination({\n currentPage,\n totalPages,\n onPageChange,\n paginationConfig,\n maxVisible: maxVisibleProp,\n showFirstLast: showFirstLastProp,\n showPrevNext: showPrevNextProp,\n disabled = false,\n size: sizeProp,\n className = \"\",\n}: PaginationProps) {\n const resolved = { ...DEFAULT_PAGINATION_CONFIG, ...paginationConfig };\n const maxVisible = maxVisibleProp ?? resolved.maxVisible;\n const showFirstLast = showFirstLastProp ?? resolved.showFirstLast;\n const showPrevNext = showPrevNextProp ?? resolved.showPrevNext;\n const size = sizeProp ?? resolved.size;\n const handle = (page: number) => {\n if (disabled || page < 1 || page > totalPages || page === currentPage)\n return;\n onPageChange(page);\n };\n\n const btnClass = (active: boolean, off: boolean) => {\n const base = `${SIZE_CLASSES[size]} rounded border font-medium transition-colors`;\n if (off)\n return `${base} bg-zinc-100 dark:bg-slate-800 opacity-50 text-zinc-400 dark:text-zinc-500 border-zinc-200 dark:border-slate-700 cursor-not-allowed`;\n if (active)\n return `${base} bg-primary-600 text-white border-primary-600 cursor-default`;\n return `${base} bg-white dark:bg-slate-900 text-zinc-700 dark:text-zinc-300 border-zinc-200 dark:border-slate-700 hover:bg-zinc-50 dark:hover:bg-slate-800 hover:border-zinc-300 dark:hover:border-slate-600 cursor-pointer`;\n };\n\n const pages = getPageNumbers(currentPage, totalPages, maxVisible);\n\n return (\n <nav\n className={`flex items-center gap-1 ${className}`}\n aria-label=\"Pagination\"\n >\n {showFirstLast && (\n <button\n type=\"button\"\n className={btnClass(false, disabled || currentPage === 1)}\n onClick={() => handle(1)}\n disabled={disabled || currentPage === 1}\n aria-label=\"First page\"\n >\n «\n </button>\n )}\n {showPrevNext && (\n <button\n type=\"button\"\n className={btnClass(false, disabled || currentPage === 1)}\n onClick={() => handle(currentPage - 1)}\n disabled={disabled || currentPage === 1}\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n )}\n\n {pages.map((page, i) =>\n page === \"...\" ? (\n <span\n key={`ellipsis-${i}`}\n className={`${SIZE_CLASSES[size]} text-zinc-400 dark:text-zinc-500 text-center`}\n aria-hidden=\"true\"\n >\n …\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n className={btnClass(\n page === currentPage,\n disabled && page !== currentPage,\n )}\n onClick={() => handle(page)}\n disabled={disabled}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? \"page\" : undefined}\n >\n {page}\n </button>\n ),\n )}\n\n {showPrevNext && (\n <button\n type=\"button\"\n className={btnClass(false, disabled || currentPage === totalPages)}\n onClick={() => handle(currentPage + 1)}\n disabled={disabled || currentPage === totalPages}\n aria-label=\"Next page\"\n >\n ›\n </button>\n )}\n {showFirstLast && (\n <button\n type=\"button\"\n className={btnClass(false, disabled || currentPage === totalPages)}\n onClick={() => handle(totalPages)}\n disabled={disabled || currentPage === totalPages}\n aria-label=\"Last page\"\n >\n »\n </button>\n )}\n </nav>\n );\n}\n","import React from \"react\";\nimport { Span } from \"@mohasinac/ui\";\nimport type { EventStatus } from \"../types\";\n\nconst STATUS_MAP: Record<EventStatus, { label: string; color: string }> = {\n draft: { label: \"Draft\", color: \"bg-gray-100 text-gray-700\" },\n active: { label: \"Active\", color: \"bg-green-100 text-green-700\" },\n paused: { label: \"Paused\", color: \"bg-yellow-100 text-yellow-700\" },\n ended: { label: \"Ended\", color: \"bg-red-100 text-red-600\" },\n};\n\ninterface EventStatusBadgeProps {\n status: EventStatus;\n className?: string;\n}\n\nexport function EventStatusBadge({\n status,\n className = \"\",\n}: EventStatusBadgeProps) {\n const { label, color } = STATUS_MAP[status] ?? STATUS_MAP.draft;\n return (\n <Span\n className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${color} ${className}`}\n >\n {label}\n </Span>\n );\n}\n","/**\n * String Formatting and Manipulation Utilities\n */\n\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n}\n\nexport function capitalizeWords(str: string): string {\n return str\n .split(\" \")\n .map((word) => capitalize(word))\n .join(\" \");\n}\n\nexport function truncate(\n str: string,\n maxLength: number,\n suffix: string = \"...\",\n): string {\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength - suffix.length) + suffix;\n}\n\nexport function truncateWords(\n str: string,\n wordCount: number,\n suffix: string = \"...\",\n): string {\n const words = str.split(\" \");\n if (words.length <= wordCount) return str;\n return words.slice(0, wordCount).join(\" \") + suffix;\n}\n\nexport function stripHtml(html: string): string {\n return html.replace(/<[^>]*>/g, \"\");\n}\n\n/** Escapes HTML special characters to prevent XSS attacks. */\nexport function escapeHtml(str: string): string {\n const map: Record<string, string> = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\",\n };\n return str.replace(/[&<>\"'/]/g, (char) => map[char]);\n}\n\nexport function slugify(str: string): string {\n return str\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nexport function maskString(\n str: string,\n visibleStart: number = 4,\n visibleEnd: number = 4,\n maskChar: string = \"*\",\n): string {\n if (str.length <= visibleStart + visibleEnd) return str;\n const start = str.slice(0, visibleStart);\n const end = str.slice(-visibleEnd);\n const masked = maskChar.repeat(str.length - visibleStart - visibleEnd);\n return start + masked + end;\n}\n\nexport function randomString(length: number = 10): string {\n const chars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const indices = new Uint8Array(length);\n globalThis.crypto.getRandomValues(indices);\n return Array.from(indices, (i) => chars[i % chars.length]).join(\"\");\n}\n\nexport function isEmptyString(str: string | null | undefined): boolean {\n return !str || str.trim().length === 0;\n}\n\n// ─── ProseMirror / TipTap JSON → HTML ────────────────────────────────────────\n\ninterface ProseMirrorMark {\n type: string;\n attrs?: Record<string, string | number | boolean | null>;\n}\n\ninterface ProseMirrorNode {\n type: string;\n text?: string;\n attrs?: Record<string, string | number | boolean | null>;\n marks?: ProseMirrorMark[];\n content?: ProseMirrorNode[];\n}\n\nfunction renderProseMirrorNodes(nodes: ProseMirrorNode[]): string {\n return nodes.map(renderProseMirrorNode).join(\"\");\n}\n\nfunction renderProseMirrorNode(node: ProseMirrorNode): string {\n switch (node.type) {\n case \"doc\":\n return renderProseMirrorNodes(node.content ?? []);\n case \"paragraph\": {\n const inner = renderProseMirrorNodes(node.content ?? []);\n return inner ? `<p>${inner}</p>` : \"<p></p>\";\n }\n case \"text\": {\n let text = escapeHtml(node.text ?? \"\");\n if (node.marks) {\n for (const mark of node.marks) {\n if (mark.type === \"bold\") text = `<strong>${text}</strong>`;\n else if (mark.type === \"italic\") text = `<em>${text}</em>`;\n else if (mark.type === \"underline\") text = `<u>${text}</u>`;\n else if (mark.type === \"strike\") text = `<s>${text}</s>`;\n else if (mark.type === \"code\") text = `<code>${text}</code>`;\n else if (mark.type === \"link\") {\n const rawHref = String(mark.attrs?.href ?? \"#\").trim();\n const safe = /^(https?:\\/\\/|mailto:|\\/|#)/i.test(rawHref)\n ? rawHref\n : \"#\";\n const href = safe.replace(\n /[&\"<>]/g,\n (c) =>\n ({ \"&\": \"&\", '\"': \""\", \"<\": \"<\", \">\": \">\" })[\n c\n ] ?? c,\n );\n text = `<a href=\"${href}\" rel=\"noopener noreferrer\">${text}</a>`;\n }\n }\n }\n return text;\n }\n case \"heading\": {\n const level = (node.attrs?.level as number) ?? 2;\n return `<h${level}>${renderProseMirrorNodes(node.content ?? [])}</h${level}>`;\n }\n case \"bulletList\":\n return `<ul>${renderProseMirrorNodes(node.content ?? [])}</ul>`;\n case \"orderedList\":\n return `<ol>${renderProseMirrorNodes(node.content ?? [])}</ol>`;\n case \"listItem\":\n return `<li>${renderProseMirrorNodes(node.content ?? [])}</li>`;\n case \"blockquote\":\n return `<blockquote>${renderProseMirrorNodes(node.content ?? [])}</blockquote>`;\n case \"codeBlock\":\n return `<pre><code>${renderProseMirrorNodes(node.content ?? [])}</code></pre>`;\n case \"hardBreak\":\n return \"<br>\";\n case \"horizontalRule\":\n return \"<hr>\";\n default:\n return renderProseMirrorNodes(node.content ?? []);\n }\n}\n\n/**\n * Converts a ProseMirror/TipTap JSON document string to HTML.\n * Falls back to returning the value unchanged if it is not a ProseMirror doc.\n */\nexport function proseMirrorToHtml(value: string): string {\n if (!value) return value;\n try {\n const parsed = JSON.parse(value) as ProseMirrorNode;\n if (parsed?.type === \"doc\") {\n return renderProseMirrorNodes(parsed.content ?? []);\n }\n return value;\n } catch {\n return value;\n }\n}\n","import React from \"react\";\nimport { Article, Button, Div, Heading, Span, Text } from \"@mohasinac/ui\";\nimport { stripHtml } from \"../../../utils/string.formatter\";\nimport type { EventItem, EventType } from \"../types\";\nimport { EventStatusBadge } from \"./EventStatusBadge\";\n\nconst TYPE_ICONS: Record<EventType, string> = {\n sale: \"🏷️\",\n offer: \"🎁\",\n poll: \"📊\",\n survey: \"📝\",\n feedback: \"💬\",\n};\n\ninterface EventCardProps {\n event: EventItem;\n labels?: {\n participate?: string;\n viewResults?: string;\n entries?: string;\n };\n onParticipate?: (event: EventItem) => void;\n className?: string;\n}\n\nexport function EventCard({\n event,\n labels = {},\n onParticipate,\n className = \"\",\n}: EventCardProps) {\n const now = new Date();\n const endsAt = new Date(event.endsAt);\n const msLeft = endsAt.getTime() - now.getTime();\n const daysLeft = Math.max(0, Math.ceil(msLeft / (1000 * 60 * 60 * 24)));\n\n return (\n <Article\n className={`flex flex-col h-full rounded-xl border border-gray-200 bg-white overflow-hidden shadow-sm hover:shadow-md transition-shadow ${className}`}\n >\n {event.coverImageUrl && (\n <Div className=\"aspect-video overflow-hidden\">\n <Div\n role=\"img\"\n aria-label={event.title}\n className=\"h-full w-full bg-cover bg-center\"\n style={{ backgroundImage: `url(${event.coverImageUrl})` }}\n />\n </Div>\n )}\n <Div className=\"p-4 flex-1 flex flex-col\">\n <Div className=\"flex items-start justify-between gap-2 mb-2\">\n <Span className=\"text-lg\" aria-hidden=\"true\">\n {TYPE_ICONS[event.type]}\n </Span>\n <EventStatusBadge status={event.status} />\n </Div>\n <Heading\n level={3}\n className=\"font-semibold text-gray-900 text-base leading-snug mb-1\"\n >\n {event.title}\n </Heading>\n <Text className=\"text-sm text-gray-500 line-clamp-2 mb-3\">\n {stripHtml(event.description ?? \"\")}\n </Text>\n\n <Div className=\"flex items-center justify-between text-xs text-gray-400 mb-3\">\n {event.status === \"active\" && daysLeft > 0 && (\n <Span>{daysLeft}d remaining</Span>\n )}\n <Span>\n {event.stats.totalEntries} {labels.entries ?? \"entries\"}\n </Span>\n </Div>\n\n {event.status === \"active\" && onParticipate && (\n <Button\n type=\"button\"\n onClick={() => onParticipate(event)}\n className=\"w-full rounded-lg bg-orange-500 py-2 text-sm font-medium text-white hover:bg-orange-600 transition-colors\"\n >\n {labels.participate ?? \"Participate\"}\n </Button>\n )}\n </Div>\n </Article>\n );\n}\n","import React from \"react\";\nimport { Div, Pagination, Text } from \"@mohasinac/ui\";\nimport type { LayoutSlots } from \"@mohasinac/contracts\";\nimport type { EventItem } from \"../types\";\nimport { EventCard } from \"./EventCard\";\n\ninterface EventsListViewProps<T extends EventItem = EventItem> {\n events: T[];\n isLoading?: boolean;\n totalPages?: number;\n currentPage?: number;\n total?: number;\n onPageChange?: (page: number) => void;\n onParticipate?: (event: T) => void;\n emptyLabel?: string;\n /** Render-prop slot overrides — pass via `FeatureExtension.slots`. */\n slots?: LayoutSlots<T>;\n}\n\nexport function EventsListView<T extends EventItem = EventItem>({\n events,\n isLoading,\n totalPages = 1,\n currentPage = 1,\n total = 0,\n onPageChange,\n onParticipate,\n emptyLabel = \"No events found\",\n slots,\n}: EventsListViewProps<T>) {\n if (isLoading) {\n return (\n <Div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {Array.from({ length: 6 }).map((_, i) => (\n <Div\n key={i}\n className=\"animate-pulse overflow-hidden rounded-xl border border-neutral-200 bg-neutral-100\"\n >\n <Div className=\"aspect-video bg-neutral-200\" />\n <Div className=\"space-y-2 p-4\">\n <Div className=\"h-4 w-16 rounded bg-neutral-200\" />\n <Div className=\"h-5 w-full rounded bg-neutral-200\" />\n <Div className=\"h-4 w-3/4 rounded bg-neutral-200\" />\n </Div>\n </Div>\n ))}\n </Div>\n );\n }\n\n if (events.length === 0) {\n if (slots?.renderEmptyState) {\n return <>{slots.renderEmptyState() as React.ReactNode}</>;\n }\n return (\n <Text className=\"py-12 text-center text-sm text-neutral-500\">\n {emptyLabel}\n </Text>\n );\n }\n\n return (\n <Div className=\"space-y-8\">\n {slots?.renderHeader\n ? (slots.renderHeader({ total }) as React.ReactNode)\n : null}\n <Div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {events.map((event, i) =>\n slots?.renderCard ? (\n <React.Fragment key={event.id}>\n {slots.renderCard(event, i) as React.ReactNode}\n </React.Fragment>\n ) : (\n <EventCard\n key={event.id}\n event={event as EventItem}\n onParticipate={\n onParticipate ? (e) => onParticipate(e as T) : undefined\n }\n />\n ),\n )}\n </Div>\n {slots?.renderFooter ? (\n (slots.renderFooter({\n page: currentPage,\n totalPages,\n }) as React.ReactNode)\n ) : totalPages > 1 && onPageChange ? (\n <Div className=\"flex justify-center\">\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={onPageChange}\n />\n </Div>\n ) : null}\n </Div>\n );\n}\n","import React from \"react\";\r\n\r\nexport interface EventDetailViewProps {\r\n isLoading?: boolean;\r\n /** Render the cover image */\r\n renderCoverImage?: () => React.ReactNode;\r\n /** Render status badge + basic header (title, dates) */\r\n renderHeader?: () => React.ReactNode;\r\n /** Render the type-specific interactive section (poll / survey / feedback / offer CTA) */\r\n renderContent?: () => React.ReactNode;\r\n /** Render an optional leaderboard section */\r\n renderLeaderboard?: () => React.ReactNode;\r\n /** Render a \"participate\" / \"enter now\" call-to-action when the event is active */\r\n renderParticipateAction?: () => React.ReactNode;\r\n /** Loading skeleton — provided by caller for brand-consistent skeleton */\r\n renderSkeleton?: () => React.ReactNode;\r\n /** Not-found / error state */\r\n renderNotFound?: () => React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function EventDetailView({\r\n isLoading = false,\r\n renderCoverImage,\r\n renderHeader,\r\n renderContent,\r\n renderLeaderboard,\r\n renderParticipateAction,\r\n renderSkeleton,\r\n renderNotFound,\r\n className = \"\",\r\n}: EventDetailViewProps) {\r\n if (isLoading) {\r\n if (renderSkeleton) return <>{renderSkeleton()}</>;\r\n return <div className=\"flex justify-center py-20\">Loading…</div>;\r\n }\r\n\r\n if (renderNotFound) {\r\n return <>{renderNotFound()}</>;\r\n }\r\n\r\n return (\r\n <div className={`max-w-3xl mx-auto space-y-6 ${className}`}>\r\n {renderCoverImage?.()}\r\n {renderHeader?.()}\r\n {renderContent?.()}\r\n {renderParticipateAction?.()}\r\n {renderLeaderboard?.()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface EventParticipateViewProps {\r\n isLoading?: boolean;\r\n isSubmitted?: boolean;\r\n /** Render the event title / summary at the top of the form */\r\n renderEventInfo?: () => React.ReactNode;\r\n /** Render the participation form fields (survey, poll options, etc.) */\r\n renderForm?: () => React.ReactNode;\r\n /** Render the submit button / action row */\r\n renderAction?: () => React.ReactNode;\r\n /** Render the success confirmation after submission */\r\n renderSuccess?: () => React.ReactNode;\r\n /** Loading skeleton */\r\n renderSkeleton?: () => React.ReactNode;\r\n /** Redirect/gate when user is not authenticated */\r\n renderAuthGate?: () => React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function EventParticipateView({\r\n isLoading = false,\r\n isSubmitted = false,\r\n renderEventInfo,\r\n renderForm,\r\n renderAction,\r\n renderSuccess,\r\n renderSkeleton,\r\n renderAuthGate,\r\n className = \"\",\r\n}: EventParticipateViewProps) {\r\n if (isLoading) {\r\n if (renderSkeleton) return <>{renderSkeleton()}</>;\r\n return <div className=\"flex justify-center py-20\">Loading…</div>;\r\n }\r\n\r\n if (renderAuthGate) return <>{renderAuthGate()}</>;\r\n\r\n if (isSubmitted && renderSuccess) return <>{renderSuccess()}</>;\r\n\r\n return (\r\n <div className={`max-w-xl mx-auto space-y-6 ${className}`}>\r\n {renderEventInfo?.()}\r\n {renderForm?.()}\r\n {renderAction?.()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Span, Text } from \"@mohasinac/ui\";\r\nimport type { LeaderboardEntry } from \"../types\";\r\n\r\nexport interface EventLeaderboardProps {\r\n isLoading?: boolean;\r\n isEmpty?: boolean;\r\n /** Render the full ranked list — caller provides entries via hook */\r\n renderList?: () => React.ReactNode;\r\n /** Render a single row; used when caller wants item-level control */\r\n renderEntry?: (entry: LeaderboardEntry, index: number) => React.ReactNode;\r\n /** Entries — used only when renderEntry is provided */\r\n entries?: LeaderboardEntry[];\r\n /** Empty state node */\r\n renderEmpty?: () => React.ReactNode;\r\n /** Loading spinner / skeleton */\r\n renderSkeleton?: () => React.ReactNode;\r\n labels?: {\r\n title?: string;\r\n noEntries?: string;\r\n points?: string;\r\n };\r\n className?: string;\r\n}\r\n\r\nexport function EventLeaderboard({\r\n isLoading = false,\r\n isEmpty = false,\r\n renderList,\r\n renderEntry,\r\n entries = [],\r\n renderEmpty,\r\n renderSkeleton,\r\n labels = {},\r\n className = \"\",\r\n}: EventLeaderboardProps) {\r\n if (isLoading) {\r\n if (renderSkeleton) return <>{renderSkeleton()}</>;\r\n return <div className=\"flex justify-center py-8\">Loading…</div>;\r\n }\r\n\r\n if (isEmpty) {\r\n if (renderEmpty) return <>{renderEmpty()}</>;\r\n return (\r\n <Text variant=\"secondary\" size=\"sm\" className=\"text-center py-4\">\r\n {labels.noEntries ?? \"No entries yet.\"}\r\n </Text>\r\n );\r\n }\r\n\r\n if (renderList) return <div className={className}>{renderList()}</div>;\r\n\r\n return (\r\n <div className={`space-y-2 ${className}`}>\r\n {entries.map((entry, i) =>\r\n renderEntry ? (\r\n <React.Fragment key={entry.userId}>\r\n {renderEntry(entry, i)}\r\n </React.Fragment>\r\n ) : (\r\n <div\r\n key={entry.userId}\r\n className=\"flex items-center justify-between p-3 rounded-xl border\"\r\n >\r\n <Span className=\"font-medium\">\r\n #{entry.rank} {entry.userDisplayName}\r\n </Span>\r\n <Span>\r\n {entry.points} {labels.points ?? \"pts\"}\r\n </Span>\r\n </div>\r\n ),\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface AdminEventsViewProps {\r\n /** Toolbar: search + sort controls */\r\n renderToolbar?: () => React.ReactNode;\r\n /** Filter sidebar / drawer content */\r\n renderFilters?: () => React.ReactNode;\r\n /** Active filter chips row */\r\n renderActiveFilters?: () => React.ReactNode;\r\n /** Data table / grid */\r\n renderTable: () => React.ReactNode;\r\n /** Pagination footer */\r\n renderPagination?: () => React.ReactNode;\r\n /** Create / edit event form drawer */\r\n renderFormDrawer?: () => React.ReactNode;\r\n /** Page header (title + \"New Event\" button) */\r\n renderHeader?: () => React.ReactNode;\r\n /** Bulk action bar — shown when rows are selected */\r\n renderBulkActions?: () => React.ReactNode;\r\n isLoading?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function AdminEventsView({\r\n renderToolbar,\r\n renderFilters,\r\n renderActiveFilters,\r\n renderTable,\r\n renderPagination,\r\n renderFormDrawer,\r\n renderHeader,\r\n renderBulkActions,\r\n className = \"\",\r\n}: AdminEventsViewProps) {\r\n return (\r\n <div className={`space-y-4 ${className}`}>\r\n {renderHeader?.()}\r\n {renderToolbar?.()}\r\n {renderFilters?.()}\r\n {renderActiveFilters?.()}\r\n {renderBulkActions?.()}\r\n {renderTable()}\r\n {renderPagination?.()}\r\n {renderFormDrawer?.()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface AdminEventEntriesViewProps {\r\n /** Back-link and event title header */\r\n renderHeader?: () => React.ReactNode;\r\n /** Stats banner (total / approved / flagged counts) */\r\n renderStats?: () => React.ReactNode;\r\n /** Filter bar (status dropdown, sort, search) */\r\n renderFilters?: () => React.ReactNode;\r\n /** Entries data table */\r\n renderTable: () => React.ReactNode;\r\n /** Pagination footer */\r\n renderPagination?: () => React.ReactNode;\r\n /** Entry review side-drawer */\r\n renderReviewDrawer?: () => React.ReactNode;\r\n isLoading?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function AdminEventEntriesView({\r\n renderHeader,\r\n renderStats,\r\n renderFilters,\r\n renderTable,\r\n renderPagination,\r\n renderReviewDrawer,\r\n className = \"\",\r\n}: AdminEventEntriesViewProps) {\r\n return (\r\n <div className={`space-y-4 ${className}`}>\r\n {renderHeader?.()}\r\n {renderStats?.()}\r\n {renderFilters?.()}\r\n {renderTable()}\r\n {renderPagination?.()}\r\n {renderReviewDrawer?.()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport type { EventType } from \"../types\";\r\n\r\nexport interface EventFormDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n mode?: \"create\" | \"edit\";\r\n eventType?: EventType;\r\n /** Render the drawer header (title and close button) */\r\n renderHeader?: () => React.ReactNode;\r\n /** Render the base fields (title, description, dates, cover image) */\r\n renderBaseFields?: () => React.ReactNode;\r\n /** Render the media fields (cover, gallery, winners, additional) */\r\n renderMediaFields?: () => React.ReactNode;\r\n /** Render the type-specific config form */\r\n renderTypeConfig?: () => React.ReactNode;\r\n /** Render the type selector (shown only in create mode) */\r\n renderTypeSelector?: () => React.ReactNode;\r\n /** Render the footer actions (save/cancel) */\r\n renderFooter?: () => React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function EventFormDrawer({\r\n isOpen,\r\n onClose,\r\n renderHeader,\r\n renderBaseFields,\r\n renderMediaFields,\r\n renderTypeConfig,\r\n renderTypeSelector,\r\n renderFooter,\r\n className = \"\",\r\n}: EventFormDrawerProps) {\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <div className={`space-y-6 ${className}`}>\r\n {renderHeader?.()}\r\n {renderTypeSelector?.()}\r\n {renderBaseFields?.()}\r\n {renderMediaFields?.()}\r\n {renderTypeConfig?.()}\r\n {renderFooter?.()}\r\n </div>\r\n );\r\n}\r\n","import { z } from \"zod\";\r\n\r\nexport type MediaFieldType = \"image\" | \"video\" | \"file\";\r\n\r\nexport type MediaFieldInput = MediaField | string | null | undefined;\r\n\r\nexport interface MediaField {\r\n url: string;\r\n type: MediaFieldType;\r\n alt?: string;\r\n thumbnailUrl?: string;\r\n}\r\n\r\nexport const mediaFieldSchema = z.object({\r\n url: z.string().url(),\r\n type: z.enum([\"image\", \"video\", \"file\"]),\r\n alt: z.string().optional(),\r\n thumbnailUrl: z.string().url().optional(),\r\n});\r\n\r\nexport function coerceMediaField(\r\n value: MediaFieldInput,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n if (typeof value === \"string\") {\r\n return {\r\n url: value,\r\n type: fallbackType,\r\n };\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function coerceMediaFieldArray(\r\n values: Array<MediaField | string> | null | undefined,\r\n fallbackType: MediaFieldType = \"image\",\r\n): MediaField[] {\r\n if (!values || values.length === 0) {\r\n return [];\r\n }\r\n\r\n return values\r\n .map((value) => coerceMediaField(value, fallbackType))\r\n .filter((value): value is MediaField => value !== null);\r\n}\r\n\r\nexport function getMediaUrl(value: MediaFieldInput): string | undefined {\r\n return coerceMediaField(value)?.url;\r\n}\r\n\r\nexport function inferMediaTypeFromMime(\r\n mimeType?: string,\r\n url?: string,\r\n): MediaFieldType {\r\n if (mimeType?.startsWith(\"image/\")) return \"image\";\r\n if (mimeType?.startsWith(\"video/\")) return \"video\";\r\n\r\n if (url) {\r\n if (/\\.(jpe?g|png|gif|webp|svg)(\\?|$)/i.test(url)) return \"image\";\r\n if (/\\.(mp4|webm|ogg|mov|avi)(\\?|$)/i.test(url)) return \"video\";\r\n }\r\n\r\n return \"file\";\r\n}\r\n","import { z } from \"zod\";\r\nimport { mediaFieldSchema } from \"../../media/types/index.js\";\r\n\r\nconst eventCoverImageSchema = z\r\n .union([\r\n mediaFieldSchema,\r\n z.string().url().transform((url) => ({ url, type: \"image\" as const })),\r\n ])\r\n .nullable()\r\n .optional()\r\n .transform((value) => value ?? null);\r\n\r\n// ─── Sub-schemas ──────────────────────────────────────────────────────────────\r\n\r\nexport const eventTypeSchema = z.enum([\r\n \"sale\",\r\n \"offer\",\r\n \"poll\",\r\n \"survey\",\r\n \"feedback\",\r\n]);\r\n\r\nexport const eventStatusSchema = z.enum([\r\n \"draft\",\r\n \"active\",\r\n \"paused\",\r\n \"ended\",\r\n]);\r\n\r\nexport const saleConfigSchema = z.object({\r\n discountPercent: z.number(),\r\n bannerText: z.string().optional(),\r\n affectedCategories: z.array(z.string()).optional(),\r\n});\r\n\r\nexport const offerConfigSchema = z.object({\r\n couponId: z.string(),\r\n displayCode: z.string(),\r\n bannerText: z.string().optional(),\r\n});\r\n\r\nexport const pollConfigSchema = z.object({\r\n allowMultiSelect: z.boolean(),\r\n allowComment: z.boolean(),\r\n options: z.array(z.object({ id: z.string(), label: z.string() })),\r\n resultsVisibility: z.enum([\"always\", \"after_vote\", \"after_end\"]),\r\n});\r\n\r\n// ─── Base item schema ─────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Base Zod schema for an event item.\r\n * Apps can extend this to add their own fields:\r\n *\r\n * @example\r\n * import { eventItemSchema } from \"@mohasinac/feat-events\";\r\n *\r\n * const myEventSchema = eventItemSchema.extend({\r\n * brandId: z.string().optional(),\r\n * rewardPoints: z.number().optional(),\r\n * });\r\n * type MyEvent = z.infer<typeof myEventSchema>;\r\n */\r\nexport const eventItemSchema = z.object({\r\n id: z.string(),\r\n type: eventTypeSchema,\r\n title: z.string(),\r\n description: z.string(),\r\n status: eventStatusSchema,\r\n startsAt: z.string(),\r\n endsAt: z.string(),\r\n coverImage: eventCoverImageSchema,\r\n coverImageUrl: z.string().optional(),\r\n eventImages: z.array(mediaFieldSchema).max(10).optional().default([]),\r\n winnerImages: z.array(mediaFieldSchema).max(5).optional().default([]),\r\n additionalImages: z.array(mediaFieldSchema).max(10).optional().default([]),\r\n saleConfig: saleConfigSchema.optional(),\r\n offerConfig: offerConfigSchema.optional(),\r\n pollConfig: pollConfigSchema.optional(),\r\n stats: z.object({\r\n totalEntries: z.number(),\r\n approvedEntries: z.number(),\r\n flaggedEntries: z.number(),\r\n }),\r\n createdBy: z.string(),\r\n createdAt: z.string(),\r\n updatedAt: z.string(),\r\n});\r\n\r\n/** Base Zod schema for list-query parameters. */\r\nexport const eventListParamsSchema = z.object({\r\n type: eventTypeSchema.optional(),\r\n status: eventStatusSchema.optional(),\r\n q: z.string().optional(),\r\n page: z.coerce.number().optional(),\r\n perPage: z.coerce.number().optional(),\r\n sort: z.string().optional(),\r\n});\r\n","import type { TableColumn, ColumnExtensionOpts } from \"@mohasinac/contracts\";\r\nimport type { EventItem } from \"../types\";\r\n\r\n/**\r\n * Default admin column definitions for an event table.\r\n *\r\n * @example\r\n * const columns = buildEventColumns<MyEvent>({\r\n * overrides: { title: { render: (e) => <Link href={e.id}>{e.title}</Link> } },\r\n * extras: [{ key: \"brandId\", header: \"Brand\", render: (e) => e.brandId ?? \"—\" }],\r\n * });\r\n */\r\nexport const eventAdminColumns: TableColumn<EventItem>[] = [\r\n { key: \"title\", header: \"Title\", sortable: true },\r\n { key: \"type\", header: \"Type\", sortable: true },\r\n { key: \"status\", header: \"Status\", sortable: true },\r\n { key: \"startsAt\", header: \"Starts At\", sortable: true },\r\n { key: \"endsAt\", header: \"Ends At\", sortable: true },\r\n {\r\n key: \"totalEntries\",\r\n header: \"Entries\",\r\n sortable: true,\r\n render: (e) => e.stats.totalEntries.toLocaleString(),\r\n },\r\n {\r\n key: \"flaggedEntries\",\r\n header: \"Flagged\",\r\n render: (e) => e.stats.flaggedEntries.toLocaleString(),\r\n },\r\n { key: \"createdAt\", header: \"Created\", sortable: true },\r\n];\r\n\r\n/**\r\n * Build a merged column list from the base event columns.\r\n *\r\n * @example\r\n * const cols = buildEventColumns<MyEvent>({\r\n * omit: [\"flaggedEntries\"],\r\n * extras: [{ key: \"rewardPoints\", header: \"Points\", render: (e) => e.rewardPoints }],\r\n * });\r\n */\r\nexport function buildEventColumns<T extends EventItem = EventItem>(\r\n opts?: ColumnExtensionOpts<T>,\r\n): TableColumn<T>[] {\r\n const base = eventAdminColumns as TableColumn<T>[];\r\n const omit = new Set(opts?.omit ?? []);\r\n const cols = base\r\n .filter((col) => !omit.has(col.key))\r\n .map((col) => {\r\n const ovr = opts?.overrides?.[col.key];\r\n return ovr ? { ...col, ...ovr } : col;\r\n });\r\n return opts?.extras ? [...cols, ...opts.extras] : cols;\r\n}\r\n","import type {\n IRepository,\n PagedResult,\n SieveQuery,\n} from \"@mohasinac/contracts\";\nimport type { EventItem, EventEntryItem } from \"../types\";\n\nexport class EventsRepository {\n constructor(private readonly repo: IRepository<EventItem>) {}\n\n async findAll(query?: SieveQuery): Promise<PagedResult<EventItem>> {\n return this.repo.findAll(query ?? {});\n }\n\n async findById(id: string): Promise<EventItem | null> {\n return this.repo.findById(id);\n }\n\n async findActive(): Promise<EventItem[]> {\n const result = await this.repo.findAll({\n filters: \"status==active\",\n sort: \"startsAt\",\n });\n return result.data;\n }\n\n async findByType(\n type: string,\n page = 1,\n perPage = 20,\n ): Promise<PagedResult<EventItem>> {\n return this.repo.findAll({\n filters: `type==${type},status==active`,\n sort: \"-startsAt\",\n page,\n perPage,\n });\n }\n\n async create(\n data: Omit<EventItem, \"id\" | \"createdAt\" | \"updatedAt\">,\n ): Promise<EventItem> {\n return this.repo.create(data);\n }\n\n async update(id: string, data: Partial<EventItem>): Promise<EventItem> {\n return this.repo.update(id, data);\n }\n\n async delete(id: string): Promise<void> {\n return this.repo.delete(id);\n }\n}\n\nexport class EventEntriesRepository {\n constructor(private readonly repo: IRepository<EventEntryItem>) {}\n\n async findByEvent(\n eventId: string,\n page = 1,\n perPage = 50,\n ): Promise<PagedResult<EventEntryItem>> {\n return this.repo.findAll({\n filters: `eventId==${eventId}`,\n sort: \"-submittedAt\",\n page,\n perPage,\n });\n }\n\n async findPending(eventId: string): Promise<EventEntryItem[]> {\n const result = await this.repo.findAll({\n filters: `eventId==${eventId},reviewStatus==pending`,\n sort: \"submittedAt\",\n });\n return result.data;\n }\n\n async findLeaderboard(\n eventId: string,\n limit = 10,\n ): Promise<EventEntryItem[]> {\n const result = await this.repo.findAll({\n filters: `eventId==${eventId},reviewStatus==approved`,\n sort: \"-points\",\n perPage: limit,\n });\n return result.data;\n }\n\n async create(data: Omit<EventEntryItem, \"id\">): Promise<EventEntryItem> {\n return this.repo.create(\n data as Omit<EventEntryItem, \"id\" | \"createdAt\" | \"updatedAt\">,\n );\n }\n\n async updateReviewStatus(\n id: string,\n status: \"approved\" | \"flagged\",\n reviewedBy: string,\n note?: string,\n ): Promise<EventEntryItem> {\n return this.repo.update(id, {\n reviewStatus: status,\n reviewedBy,\n reviewedAt: new Date().toISOString(),\n reviewNote: note,\n });\n }\n}\n","import type { FeatureManifest } from \"@mohasinac/contracts\";\n\nexport const manifest: FeatureManifest = {\n name: \"events\",\n i18nNamespace: \"events\",\n envKeys: [],\n routes: [\n { segment: \"[locale]/events\", exports: { default: \"EventsListView\" } },\n {\n segment: \"[locale]/events/[id]\",\n exports: { default: \"EventDetailView\" },\n },\n {\n segment: \"[locale]/events/[id]/participate\",\n exports: { default: \"EventParticipateView\" },\n },\n ],\n apiRoutes: [\n { segment: \"api/events\", methods: [\"GET\"] },\n { segment: \"api/events/[id]\", methods: [\"GET\"] },\n { segment: \"api/events/[id]/entries\", methods: [\"GET\", \"POST\"] },\n { segment: \"api/admin/events\", methods: [\"GET\", \"POST\"] },\n { segment: \"api/admin/events/[id]\", methods: [\"GET\", \"PATCH\", \"DELETE\"] },\n { segment: \"api/admin/events/[id]/entries\", methods: [\"GET\", \"PATCH\"] },\n ],\n};\n","/**\r\n * feat-events — Next.js App Router API handler (GET /api/events)\r\n *\r\n * Consuming projects can create a 2-line stub:\r\n *\r\n * ```ts\r\n * // app/api/events/route.ts\r\n * export { GET } from \"@mohasinac/feat-events\";\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport type { EventItem, EventListResponse } from \"../types/index.js\";\r\n\r\nfunction param(url: URL, key: string): string | null {\r\n return url.searchParams.get(key);\r\n}\r\n\r\nfunction numParam(url: URL, key: string, fallback: number): number {\r\n const v = url.searchParams.get(key);\r\n const n = v !== null ? Number(v) : NaN;\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n\r\nconst SAFE_EVENT_FILTER_FIELDS = new Set([\r\n \"status\",\r\n \"title\",\r\n \"type\",\r\n \"startsAt\",\r\n \"endsAt\",\r\n \"createdAt\",\r\n]);\r\n\r\nfunction validateSieveFilters(\r\n raw: string,\r\n allowedFields: ReadonlySet<string>,\r\n): string {\r\n return raw\r\n .split(\",\")\r\n .map((c) => c.trim())\r\n .filter((c) => {\r\n const m = c.match(/^([^<>=!@]+)\\s*(?:==|!=|<=|>=|<|>|@=\\*?)/);\r\n return m ? allowedFields.has(m[1].trim()) : false;\r\n })\r\n .join(\",\");\r\n}\r\n\r\n// ——— GET /api/events ————————————————————————————————\r\nexport async function GET(request: Request): Promise<NextResponse> {\r\n try {\r\n const url = new URL(request.url);\r\n const page = numParam(url, \"page\", 1);\r\n const pageSize = numParam(url, \"pageSize\", 24);\r\n const sort = param(url, \"sorts\") ?? param(url, \"sort\") ?? \"-startsAt\";\r\n\r\n const parts: string[] = [\"status==active\"];\r\n const q = param(url, \"q\");\r\n if (q) parts.push(`title@=*${q}`);\r\n const raw = param(url, \"filters\");\r\n if (raw) {\r\n const safe = validateSieveFilters(raw, SAFE_EVENT_FILTER_FIELDS);\r\n if (safe) parts.push(safe);\r\n }\r\n const filters = parts.join(\",\");\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const repo = db.getRepository<EventItem>(\"events\");\r\n const result = await repo.findAll({\r\n filters,\r\n sort,\r\n page,\r\n perPage: pageSize,\r\n });\r\n\r\n const totalPages = Math.max(1, Math.ceil(result.total / pageSize));\r\n\r\n // Strip internal fields (createdBy) before returning\r\n const items = result.data.map((event) => {\r\n const { createdBy: _createdBy, ...publicEvent } = event as EventItem & {\r\n createdBy?: string;\r\n };\r\n return publicEvent as EventItem;\r\n });\r\n\r\n const body: EventListResponse = {\r\n items: items as EventItem[],\r\n total: result.total,\r\n page: result.page,\r\n pageSize,\r\n totalPages,\r\n hasMore: result.page < totalPages,\r\n };\r\n\r\n return NextResponse.json({ success: true, data: body });\r\n } catch (error) {\r\n console.error(\"[feat-events] GET /api/events failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch events\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n","/**\r\n * feat-events — single event detail (GET /api/events/[id])\r\n *\r\n * 2-line stub:\r\n * ```ts\r\n * // app/api/events/[id]/route.ts\r\n * export { eventIdGET as GET } from \"@mohasinac/feat-events\";\r\n * ```\r\n *\r\n * Returns a single active or ended event (draft/paused → 404).\r\n * For poll events with resultsVisibility='always': includes live vote counts.\r\n * For survey events with hasLeaderboard: includes top-10 leaderboard (PII stripped).\r\n *\r\n * Requires `db` registered in providers.config via `registerProviders()`.\r\n * Collections: \"events\", \"eventEntries\"\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport type { EventItem, EventEntryItem } from \"../../types/index.js\";\r\n\r\ntype RouteContext = { params: Promise<{ id: string }> };\r\n\r\n// ─── GET /api/events/[id] ─────────────────────────────────────────────────────\r\nexport async function GET(\r\n _request: Request,\r\n context: RouteContext,\r\n): Promise<NextResponse> {\r\n try {\r\n const { id } = await context.params;\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const eventsRepo = db.getRepository<EventItem>(\"events\");\r\n const event = await eventsRepo.findById(id);\r\n\r\n if (!event || event.status === \"draft\" || event.status === \"paused\") {\r\n return NextResponse.json(\r\n { success: false, error: \"Event not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n // Strip internal field\r\n const { createdBy: _createdBy, ...publicEvent } = event as EventItem & {\r\n createdBy?: string;\r\n };\r\n\r\n const entriesRepo = db.getRepository<EventEntryItem>(\"eventEntries\");\r\n\r\n // For poll events with resultsVisibility='always': compute live vote tallies\r\n let pollResults: {\r\n optionId: string;\r\n label: string;\r\n count: number;\r\n percent: number;\r\n }[] = [];\r\n if (\r\n event.type === \"poll\" &&\r\n event.pollConfig?.resultsVisibility === \"always\"\r\n ) {\r\n const allEntries = await entriesRepo.findAll({\r\n filters: `eventId==${id}`,\r\n perPage: 1000,\r\n });\r\n\r\n const voteCounts: Record<string, number> = {};\r\n for (const entry of allEntries.data) {\r\n for (const optionId of entry.pollVotes ?? []) {\r\n voteCounts[optionId] = (voteCounts[optionId] ?? 0) + 1;\r\n }\r\n }\r\n\r\n const total = allEntries.total || 1;\r\n pollResults = (event.pollConfig.options ?? []).map((opt) => ({\r\n optionId: opt.id,\r\n label: opt.label,\r\n count: voteCounts[opt.id] ?? 0,\r\n percent: Math.round(((voteCounts[opt.id] ?? 0) / total) * 100),\r\n }));\r\n }\r\n\r\n // For survey events with leaderboard: top-10 approved entries, PII stripped\r\n let leaderboard: unknown[] = [];\r\n if (event.type === \"survey\" && event.surveyConfig?.hasLeaderboard) {\r\n const leaderboardResult = await entriesRepo.findAll({\r\n filters: `eventId==${id},reviewStatus==approved`,\r\n sort: \"points\",\r\n order: \"desc\",\r\n perPage: 10,\r\n });\r\n\r\n leaderboard = leaderboardResult.data.map((entry) => {\r\n const {\r\n userId: _userId,\r\n userEmail: _userEmail,\r\n ...rest\r\n } = entry as EventEntryItem & {\r\n userId?: string;\r\n userEmail?: string;\r\n };\r\n return rest;\r\n });\r\n }\r\n\r\n return NextResponse.json({\r\n success: true,\r\n data: { ...publicEvent, pollResults, leaderboard },\r\n });\r\n } catch (error) {\r\n console.error(\"[feat-events] GET /api/events/[id] failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch event\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var server_js = require('next/server.js');
|
|
4
|
-
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __defProps = Object.defineProperties;
|
|
7
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
8
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
-
var __spreadValues = (a, b) => {
|
|
13
|
-
for (var prop in b || (b = {}))
|
|
14
|
-
if (__hasOwnProp.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
if (__getOwnPropSymbols)
|
|
17
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
-
if (__propIsEnum.call(b, prop))
|
|
19
|
-
__defNormalProp(a, prop, b[prop]);
|
|
20
|
-
}
|
|
21
|
-
return a;
|
|
22
|
-
};
|
|
23
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
24
|
-
var __objRest = (source, exclude) => {
|
|
25
|
-
var target = {};
|
|
26
|
-
for (var prop in source)
|
|
27
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
28
|
-
target[prop] = source[prop];
|
|
29
|
-
if (source != null && __getOwnPropSymbols)
|
|
30
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
31
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
32
|
-
target[prop] = source[prop];
|
|
33
|
-
}
|
|
34
|
-
return target;
|
|
35
|
-
};
|
|
36
|
-
function getProviders() {
|
|
37
|
-
{
|
|
38
|
-
throw new Error(
|
|
39
|
-
"[contracts] Call registerProviders() before getProviders(). Ensure providers.config.ts is imported at app startup."
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// src/features/events/api/route.ts
|
|
45
|
-
function param(url, key) {
|
|
46
|
-
return url.searchParams.get(key);
|
|
47
|
-
}
|
|
48
|
-
function numParam(url, key, fallback) {
|
|
49
|
-
const v = url.searchParams.get(key);
|
|
50
|
-
const n = v !== null ? Number(v) : NaN;
|
|
51
|
-
return Number.isFinite(n) ? n : fallback;
|
|
52
|
-
}
|
|
53
|
-
var SAFE_EVENT_FILTER_FIELDS = /* @__PURE__ */ new Set([
|
|
54
|
-
"status",
|
|
55
|
-
"title",
|
|
56
|
-
"type",
|
|
57
|
-
"startsAt",
|
|
58
|
-
"endsAt",
|
|
59
|
-
"createdAt"
|
|
60
|
-
]);
|
|
61
|
-
function validateSieveFilters(raw, allowedFields) {
|
|
62
|
-
return raw.split(",").map((c) => c.trim()).filter((c) => {
|
|
63
|
-
const m = c.match(/^([^<>=!@]+)\s*(?:==|!=|<=|>=|<|>|@=\*?)/);
|
|
64
|
-
return m ? allowedFields.has(m[1].trim()) : false;
|
|
65
|
-
}).join(",");
|
|
66
|
-
}
|
|
67
|
-
async function GET(request) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
try {
|
|
70
|
-
const url = new URL(request.url);
|
|
71
|
-
const page = numParam(url, "page", 1);
|
|
72
|
-
const pageSize = numParam(url, "pageSize", 24);
|
|
73
|
-
const sort = (_b = (_a = param(url, "sorts")) != null ? _a : param(url, "sort")) != null ? _b : "-startsAt";
|
|
74
|
-
const parts = ["status==active"];
|
|
75
|
-
const q = param(url, "q");
|
|
76
|
-
if (q) parts.push(`title@=*${q}`);
|
|
77
|
-
const raw = param(url, "filters");
|
|
78
|
-
if (raw) {
|
|
79
|
-
const safe = validateSieveFilters(raw, SAFE_EVENT_FILTER_FIELDS);
|
|
80
|
-
if (safe) parts.push(safe);
|
|
81
|
-
}
|
|
82
|
-
const filters = parts.join(",");
|
|
83
|
-
const { db } = getProviders();
|
|
84
|
-
if (!db) {
|
|
85
|
-
return server_js.NextResponse.json(
|
|
86
|
-
{ success: false, error: "Database provider not registered" },
|
|
87
|
-
{ status: 503 }
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
const repo = db.getRepository("events");
|
|
91
|
-
const result = await repo.findAll({
|
|
92
|
-
filters,
|
|
93
|
-
sort,
|
|
94
|
-
page,
|
|
95
|
-
perPage: pageSize
|
|
96
|
-
});
|
|
97
|
-
const totalPages = Math.max(1, Math.ceil(result.total / pageSize));
|
|
98
|
-
const items = result.data.map((event) => {
|
|
99
|
-
const _a2 = event, { createdBy: _createdBy } = _a2, publicEvent = __objRest(_a2, ["createdBy"]);
|
|
100
|
-
return publicEvent;
|
|
101
|
-
});
|
|
102
|
-
const body = {
|
|
103
|
-
items,
|
|
104
|
-
total: result.total,
|
|
105
|
-
page: result.page,
|
|
106
|
-
pageSize,
|
|
107
|
-
totalPages,
|
|
108
|
-
hasMore: result.page < totalPages
|
|
109
|
-
};
|
|
110
|
-
return server_js.NextResponse.json({ success: true, data: body });
|
|
111
|
-
} catch (error) {
|
|
112
|
-
console.error("[feat-events] GET /api/events failed", error);
|
|
113
|
-
return server_js.NextResponse.json(
|
|
114
|
-
{ success: false, error: "Failed to fetch events" },
|
|
115
|
-
{ status: 500 }
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async function GET2(_request, context) {
|
|
120
|
-
var _b, _c, _d, _e, _f;
|
|
121
|
-
try {
|
|
122
|
-
const { id } = await context.params;
|
|
123
|
-
const { db } = getProviders();
|
|
124
|
-
if (!db) {
|
|
125
|
-
return server_js.NextResponse.json(
|
|
126
|
-
{ success: false, error: "Database provider not registered" },
|
|
127
|
-
{ status: 503 }
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
const eventsRepo = db.getRepository("events");
|
|
131
|
-
const event = await eventsRepo.findById(id);
|
|
132
|
-
if (!event || event.status === "draft" || event.status === "paused") {
|
|
133
|
-
return server_js.NextResponse.json(
|
|
134
|
-
{ success: false, error: "Event not found" },
|
|
135
|
-
{ status: 404 }
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
const _a = event, { createdBy: _createdBy } = _a, publicEvent = __objRest(_a, ["createdBy"]);
|
|
139
|
-
const entriesRepo = db.getRepository("eventEntries");
|
|
140
|
-
let pollResults = [];
|
|
141
|
-
if (event.type === "poll" && ((_b = event.pollConfig) == null ? void 0 : _b.resultsVisibility) === "always") {
|
|
142
|
-
const allEntries = await entriesRepo.findAll({
|
|
143
|
-
filters: `eventId==${id}`,
|
|
144
|
-
perPage: 1e3
|
|
145
|
-
});
|
|
146
|
-
const voteCounts = {};
|
|
147
|
-
for (const entry of allEntries.data) {
|
|
148
|
-
for (const optionId of (_c = entry.pollVotes) != null ? _c : []) {
|
|
149
|
-
voteCounts[optionId] = ((_d = voteCounts[optionId]) != null ? _d : 0) + 1;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const total = allEntries.total || 1;
|
|
153
|
-
pollResults = ((_e = event.pollConfig.options) != null ? _e : []).map((opt) => {
|
|
154
|
-
var _a2, _b2;
|
|
155
|
-
return {
|
|
156
|
-
optionId: opt.id,
|
|
157
|
-
label: opt.label,
|
|
158
|
-
count: (_a2 = voteCounts[opt.id]) != null ? _a2 : 0,
|
|
159
|
-
percent: Math.round(((_b2 = voteCounts[opt.id]) != null ? _b2 : 0) / total * 100)
|
|
160
|
-
};
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
let leaderboard = [];
|
|
164
|
-
if (event.type === "survey" && ((_f = event.surveyConfig) == null ? void 0 : _f.hasLeaderboard)) {
|
|
165
|
-
const leaderboardResult = await entriesRepo.findAll({
|
|
166
|
-
filters: `eventId==${id},reviewStatus==approved`,
|
|
167
|
-
sort: "points",
|
|
168
|
-
order: "desc",
|
|
169
|
-
perPage: 10
|
|
170
|
-
});
|
|
171
|
-
leaderboard = leaderboardResult.data.map((entry) => {
|
|
172
|
-
const _a2 = entry, {
|
|
173
|
-
userId: _userId,
|
|
174
|
-
userEmail: _userEmail
|
|
175
|
-
} = _a2, rest = __objRest(_a2, [
|
|
176
|
-
"userId",
|
|
177
|
-
"userEmail"
|
|
178
|
-
]);
|
|
179
|
-
return rest;
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
return server_js.NextResponse.json({
|
|
183
|
-
success: true,
|
|
184
|
-
data: __spreadProps(__spreadValues({}, publicEvent), { pollResults, leaderboard })
|
|
185
|
-
});
|
|
186
|
-
} catch (error) {
|
|
187
|
-
console.error("[feat-events] GET /api/events/[id] failed", error);
|
|
188
|
-
return server_js.NextResponse.json(
|
|
189
|
-
{ success: false, error: "Failed to fetch event" },
|
|
190
|
-
{ status: 500 }
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
exports.GET = GET;
|
|
196
|
-
exports.eventIdGET = GET2;
|
|
197
|
-
exports.eventsGET = GET;
|
|
198
|
-
//# sourceMappingURL=server.cjs.map
|
|
199
|
-
//# sourceMappingURL=server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/contracts/registry.ts","../../../src/features/events/api/route.ts","../../../src/features/events/api/%5Bid%5D/route.ts"],"names":["NextResponse","_a","GET","_b"],"mappings":"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","file":"server.cjs","sourcesContent":["import type { IAuthProvider, ISessionProvider } from \"./auth.js\";\nimport type { IEmailProvider } from \"./email.js\";\nimport type { IStorageProvider } from \"./storage.js\";\nimport type { IPaymentProvider } from \"./payment.js\";\nimport type { IShippingProvider } from \"./shipping.js\";\nimport type { ISearchProvider } from \"./search.js\";\nimport type { ICacheProvider, IQueueProvider, IEventBus } from \"./infra.js\";\nimport type { IStyleAdapter } from \"./style.js\";\nimport type { IDbProvider } from \"./repository.js\";\n\nexport interface ProviderRegistry {\n auth: IAuthProvider;\n session: ISessionProvider;\n email: IEmailProvider;\n storage: IStorageProvider;\n style: IStyleAdapter;\n db?: IDbProvider;\n payment?: IPaymentProvider;\n shipping?: IShippingProvider;\n search?: ISearchProvider;\n cache?: ICacheProvider;\n queue?: IQueueProvider;\n eventBus?: IEventBus;\n}\n\nlet _registry: ProviderRegistry | null = null;\n\nexport function registerProviders(registry: ProviderRegistry): void {\n _registry = registry;\n}\n\nexport function getProviders(): ProviderRegistry {\n if (!_registry) {\n throw new Error(\n \"[contracts] Call registerProviders() before getProviders(). \" +\n \"Ensure providers.config.ts is imported at app startup.\",\n );\n }\n return _registry;\n}\n\nexport function _resetProviders(): void {\n _registry = null;\n}","/**\r\n * feat-events — Next.js App Router API handler (GET /api/events)\r\n *\r\n * Consuming projects can create a 2-line stub:\r\n *\r\n * ```ts\r\n * // app/api/events/route.ts\r\n * export { GET } from \"@mohasinac/feat-events\";\r\n * ```\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport type { EventItem, EventListResponse } from \"../types/index.js\";\r\n\r\nfunction param(url: URL, key: string): string | null {\r\n return url.searchParams.get(key);\r\n}\r\n\r\nfunction numParam(url: URL, key: string, fallback: number): number {\r\n const v = url.searchParams.get(key);\r\n const n = v !== null ? Number(v) : NaN;\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n\r\nconst SAFE_EVENT_FILTER_FIELDS = new Set([\r\n \"status\",\r\n \"title\",\r\n \"type\",\r\n \"startsAt\",\r\n \"endsAt\",\r\n \"createdAt\",\r\n]);\r\n\r\nfunction validateSieveFilters(\r\n raw: string,\r\n allowedFields: ReadonlySet<string>,\r\n): string {\r\n return raw\r\n .split(\",\")\r\n .map((c) => c.trim())\r\n .filter((c) => {\r\n const m = c.match(/^([^<>=!@]+)\\s*(?:==|!=|<=|>=|<|>|@=\\*?)/);\r\n return m ? allowedFields.has(m[1].trim()) : false;\r\n })\r\n .join(\",\");\r\n}\r\n\r\n// ——— GET /api/events ————————————————————————————————\r\nexport async function GET(request: Request): Promise<NextResponse> {\r\n try {\r\n const url = new URL(request.url);\r\n const page = numParam(url, \"page\", 1);\r\n const pageSize = numParam(url, \"pageSize\", 24);\r\n const sort = param(url, \"sorts\") ?? param(url, \"sort\") ?? \"-startsAt\";\r\n\r\n const parts: string[] = [\"status==active\"];\r\n const q = param(url, \"q\");\r\n if (q) parts.push(`title@=*${q}`);\r\n const raw = param(url, \"filters\");\r\n if (raw) {\r\n const safe = validateSieveFilters(raw, SAFE_EVENT_FILTER_FIELDS);\r\n if (safe) parts.push(safe);\r\n }\r\n const filters = parts.join(\",\");\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const repo = db.getRepository<EventItem>(\"events\");\r\n const result = await repo.findAll({\r\n filters,\r\n sort,\r\n page,\r\n perPage: pageSize,\r\n });\r\n\r\n const totalPages = Math.max(1, Math.ceil(result.total / pageSize));\r\n\r\n // Strip internal fields (createdBy) before returning\r\n const items = result.data.map((event) => {\r\n const { createdBy: _createdBy, ...publicEvent } = event as EventItem & {\r\n createdBy?: string;\r\n };\r\n return publicEvent as EventItem;\r\n });\r\n\r\n const body: EventListResponse = {\r\n items: items as EventItem[],\r\n total: result.total,\r\n page: result.page,\r\n pageSize,\r\n totalPages,\r\n hasMore: result.page < totalPages,\r\n };\r\n\r\n return NextResponse.json({ success: true, data: body });\r\n } catch (error) {\r\n console.error(\"[feat-events] GET /api/events failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch events\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n","/**\r\n * feat-events — single event detail (GET /api/events/[id])\r\n *\r\n * 2-line stub:\r\n * ```ts\r\n * // app/api/events/[id]/route.ts\r\n * export { eventIdGET as GET } from \"@mohasinac/feat-events\";\r\n * ```\r\n *\r\n * Returns a single active or ended event (draft/paused → 404).\r\n * For poll events with resultsVisibility='always': includes live vote counts.\r\n * For survey events with hasLeaderboard: includes top-10 leaderboard (PII stripped).\r\n *\r\n * Requires `db` registered in providers.config via `registerProviders()`.\r\n * Collections: \"events\", \"eventEntries\"\r\n */\r\n\r\nimport { NextResponse } from \"next/server.js\";\r\nimport { getProviders } from \"@mohasinac/contracts\";\r\nimport type { EventItem, EventEntryItem } from \"../../types/index.js\";\r\n\r\ntype RouteContext = { params: Promise<{ id: string }> };\r\n\r\n// ─── GET /api/events/[id] ─────────────────────────────────────────────────────\r\nexport async function GET(\r\n _request: Request,\r\n context: RouteContext,\r\n): Promise<NextResponse> {\r\n try {\r\n const { id } = await context.params;\r\n\r\n const { db } = getProviders();\r\n if (!db) {\r\n return NextResponse.json(\r\n { success: false, error: \"Database provider not registered\" },\r\n { status: 503 },\r\n );\r\n }\r\n\r\n const eventsRepo = db.getRepository<EventItem>(\"events\");\r\n const event = await eventsRepo.findById(id);\r\n\r\n if (!event || event.status === \"draft\" || event.status === \"paused\") {\r\n return NextResponse.json(\r\n { success: false, error: \"Event not found\" },\r\n { status: 404 },\r\n );\r\n }\r\n\r\n // Strip internal field\r\n const { createdBy: _createdBy, ...publicEvent } = event as EventItem & {\r\n createdBy?: string;\r\n };\r\n\r\n const entriesRepo = db.getRepository<EventEntryItem>(\"eventEntries\");\r\n\r\n // For poll events with resultsVisibility='always': compute live vote tallies\r\n let pollResults: {\r\n optionId: string;\r\n label: string;\r\n count: number;\r\n percent: number;\r\n }[] = [];\r\n if (\r\n event.type === \"poll\" &&\r\n event.pollConfig?.resultsVisibility === \"always\"\r\n ) {\r\n const allEntries = await entriesRepo.findAll({\r\n filters: `eventId==${id}`,\r\n perPage: 1000,\r\n });\r\n\r\n const voteCounts: Record<string, number> = {};\r\n for (const entry of allEntries.data) {\r\n for (const optionId of entry.pollVotes ?? []) {\r\n voteCounts[optionId] = (voteCounts[optionId] ?? 0) + 1;\r\n }\r\n }\r\n\r\n const total = allEntries.total || 1;\r\n pollResults = (event.pollConfig.options ?? []).map((opt) => ({\r\n optionId: opt.id,\r\n label: opt.label,\r\n count: voteCounts[opt.id] ?? 0,\r\n percent: Math.round(((voteCounts[opt.id] ?? 0) / total) * 100),\r\n }));\r\n }\r\n\r\n // For survey events with leaderboard: top-10 approved entries, PII stripped\r\n let leaderboard: unknown[] = [];\r\n if (event.type === \"survey\" && event.surveyConfig?.hasLeaderboard) {\r\n const leaderboardResult = await entriesRepo.findAll({\r\n filters: `eventId==${id},reviewStatus==approved`,\r\n sort: \"points\",\r\n order: \"desc\",\r\n perPage: 10,\r\n });\r\n\r\n leaderboard = leaderboardResult.data.map((entry) => {\r\n const {\r\n userId: _userId,\r\n userEmail: _userEmail,\r\n ...rest\r\n } = entry as EventEntryItem & {\r\n userId?: string;\r\n userEmail?: string;\r\n };\r\n return rest;\r\n });\r\n }\r\n\r\n return NextResponse.json({\r\n success: true,\r\n data: { ...publicEvent, pollResults, leaderboard },\r\n });\r\n } catch (error) {\r\n console.error(\"[feat-events] GET /api/events/[id] failed\", error);\r\n return NextResponse.json(\r\n { success: false, error: \"Failed to fetch event\" },\r\n { status: 500 },\r\n );\r\n }\r\n}\r\n"]}
|