@mohasinac/appkit 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +54 -18
- package/dist/client.js +29 -10
- package/dist/constants/api-endpoints.d.ts +384 -22
- package/dist/constants/api-endpoints.js +68 -13
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/core/contact-submissions.repository.d.ts +32 -0
- package/dist/core/contact-submissions.repository.js +49 -0
- package/dist/core/hooks/useSyncManager.d.ts +1 -0
- package/dist/core/hooks/useSyncManager.js +83 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +1 -0
- package/dist/core/integration-keys.d.ts +4 -0
- package/dist/core/integration-keys.js +8 -0
- package/dist/features/about/components/FAQPageView.js +9 -11
- package/dist/features/about/components/HowPayoutsWorkView.js +1 -1
- package/dist/features/about/components/PolicyPageView.js +32 -11
- package/dist/features/about/components/PublicProfileView.js +77 -11
- package/dist/features/account/components/AddressFilters.d.ts +5 -0
- package/dist/features/account/components/AddressFilters.js +20 -0
- package/dist/features/account/components/AddressesIndexListing.d.ts +6 -0
- package/dist/features/account/components/AddressesIndexListing.js +76 -0
- package/dist/features/account/components/UserOffersPanel.d.ts +8 -0
- package/dist/features/account/components/UserOffersPanel.js +81 -0
- package/dist/features/account/components/UserSettingsView.d.ts +2 -1
- package/dist/features/account/components/UserSettingsView.js +2 -1
- package/dist/features/account/components/UserSidebar.d.ts +12 -3
- package/dist/features/account/components/UserSidebar.js +64 -10
- package/dist/features/account/components/index.d.ts +2 -0
- package/dist/features/account/components/index.js +1 -0
- package/dist/features/account/hooks/useAddresses.d.ts +7 -0
- package/dist/features/account/hooks/useAddresses.js +12 -1
- package/dist/features/admin/actions/admin-actions.d.ts +1 -1
- package/dist/features/admin/actions/admin-actions.js +13 -3
- package/dist/features/admin/actions/admin-read-actions.d.ts +12 -0
- package/dist/features/admin/actions/admin-read-actions.js +18 -0
- package/dist/features/admin/components/AdminAdEditorView.js +6 -7
- package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +4 -0
- package/dist/features/admin/components/AdminAllEventEntriesView.js +102 -0
- package/dist/features/admin/components/AdminBidsView.js +94 -8
- package/dist/features/admin/components/AdminBlogEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminBlogEditorView.js +162 -0
- package/dist/features/admin/components/AdminBlogView.d.ts +4 -1
- package/dist/features/admin/components/AdminBlogView.js +64 -10
- package/dist/features/admin/components/AdminBrandEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminBrandEditorView.js +104 -0
- package/dist/features/admin/components/AdminBrandsView.d.ts +4 -0
- package/dist/features/admin/components/AdminBrandsView.js +76 -0
- package/dist/features/admin/components/AdminCarouselEditorView.d.ts +8 -0
- package/dist/features/admin/components/AdminCarouselEditorView.js +204 -0
- package/dist/features/admin/components/AdminCarouselView.js +155 -20
- package/dist/features/admin/components/AdminCartsView.d.ts +4 -0
- package/dist/features/admin/components/AdminCartsView.js +82 -0
- package/dist/features/admin/components/AdminCategoriesView.d.ts +4 -1
- package/dist/features/admin/components/AdminCategoriesView.js +69 -26
- package/dist/features/admin/components/AdminCategoryEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminCategoryEditorView.js +115 -0
- package/dist/features/admin/components/AdminContactEditorView.d.ts +11 -0
- package/dist/features/admin/components/AdminContactEditorView.js +32 -0
- package/dist/features/admin/components/AdminContactView.d.ts +4 -0
- package/dist/features/admin/components/AdminContactView.js +141 -0
- package/dist/features/admin/components/AdminCouponEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminCouponEditorView.js +179 -0
- package/dist/features/admin/components/AdminCouponsView.d.ts +4 -1
- package/dist/features/admin/components/AdminCouponsView.js +57 -9
- package/dist/features/admin/components/AdminDashboardView.js +3 -0
- package/dist/features/admin/components/AdminFaqEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminFaqEditorView.js +128 -0
- package/dist/features/admin/components/AdminFaqsView.d.ts +4 -1
- package/dist/features/admin/components/AdminFaqsView.js +55 -6
- package/dist/features/admin/components/AdminFeatureFlagsView.js +33 -24
- package/dist/features/admin/components/AdminListingScaffold.d.ts +17 -2
- package/dist/features/admin/components/AdminListingScaffold.js +14 -3
- package/dist/features/admin/components/AdminMediaView.js +18 -8
- package/dist/features/admin/components/AdminNavEditorView.d.ts +20 -0
- package/dist/features/admin/components/AdminNavEditorView.js +84 -0
- package/dist/features/admin/components/AdminNavigationView.d.ts +1 -7
- package/dist/features/admin/components/AdminNavigationView.js +84 -72
- package/dist/features/admin/components/AdminNewsletterView.d.ts +4 -0
- package/dist/features/admin/components/AdminNewsletterView.js +132 -0
- package/dist/features/admin/components/AdminNotificationsView.d.ts +4 -0
- package/dist/features/admin/components/AdminNotificationsView.js +119 -0
- package/dist/features/admin/components/AdminOrderEditorView.d.ts +8 -0
- package/dist/features/admin/components/AdminOrderEditorView.js +74 -0
- package/dist/features/admin/components/AdminOrdersView.js +64 -8
- package/dist/features/admin/components/AdminPayoutsView.js +122 -13
- package/dist/features/admin/components/AdminProductEditorView.d.ts +7 -0
- package/dist/features/admin/components/AdminProductEditorView.js +143 -0
- package/dist/features/admin/components/AdminProductsView.d.ts +4 -1
- package/dist/features/admin/components/AdminProductsView.js +124 -7
- package/dist/features/admin/components/AdminReturnRequestsView.d.ts +5 -0
- package/dist/features/admin/components/AdminReturnRequestsView.js +101 -0
- package/dist/features/admin/components/AdminReviewsView.js +140 -6
- package/dist/features/admin/components/AdminSectionsView.js +361 -472
- package/dist/features/admin/components/AdminSessionsView.d.ts +4 -0
- package/dist/features/admin/components/AdminSessionsView.js +119 -0
- package/dist/features/admin/components/AdminSidebar.d.ts +18 -3
- package/dist/features/admin/components/AdminSidebar.js +51 -4
- package/dist/features/admin/components/AdminSiteSettingsView.d.ts +7 -0
- package/dist/features/admin/components/AdminSiteSettingsView.js +319 -0
- package/dist/features/admin/components/AdminStoreAddressesView.d.ts +5 -0
- package/dist/features/admin/components/AdminStoreAddressesView.js +52 -0
- package/dist/features/admin/components/AdminStoreEditorView.d.ts +9 -0
- package/dist/features/admin/components/AdminStoreEditorView.js +55 -0
- package/dist/features/admin/components/AdminStoresView.js +62 -5
- package/dist/features/admin/components/AdminUserEditorView.d.ts +10 -0
- package/dist/features/admin/components/AdminUserEditorView.js +72 -0
- package/dist/features/admin/components/AdminUsersView.js +73 -14
- package/dist/features/admin/components/AdminWishlistsView.d.ts +4 -0
- package/dist/features/admin/components/AdminWishlistsView.js +53 -0
- package/dist/features/admin/components/BrandQuickCreateForm.d.ts +5 -0
- package/dist/features/admin/components/BrandQuickCreateForm.js +36 -0
- package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +5 -0
- package/dist/features/admin/components/CategoryQuickCreateForm.js +35 -0
- package/dist/features/admin/components/DataTable.d.ts +5 -2
- package/dist/features/admin/components/DataTable.js +38 -4
- package/dist/features/admin/components/index.d.ts +53 -1
- package/dist/features/admin/components/index.js +26 -0
- package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +48 -0
- package/dist/features/admin/components/sections/adminSectionsBuildParse.js +653 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +298 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +278 -0
- package/dist/features/admin/hooks/useAdminListingData.d.ts +3 -1
- package/dist/features/admin/hooks/useAdminListingData.js +12 -7
- package/dist/features/admin/schemas/firestore.d.ts +26 -0
- package/dist/features/admin/schemas/firestore.js +1 -0
- package/dist/features/admin/server.d.ts +3 -0
- package/dist/features/admin/server.js +2 -0
- package/dist/features/admin/types/product.types.d.ts +2 -3
- package/dist/features/auctions/actions/bid-actions.js +6 -2
- package/dist/features/auctions/components/AuctionDetailPageView.d.ts +3 -1
- package/dist/features/auctions/components/AuctionDetailPageView.js +125 -53
- package/dist/features/auctions/components/AuctionFilters.d.ts +10 -0
- package/dist/features/auctions/components/AuctionFilters.js +16 -0
- package/dist/features/auctions/components/AuctionsListView.d.ts +6 -1
- package/dist/features/auctions/components/AuctionsListView.js +37 -5
- package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +7 -0
- package/dist/features/auctions/components/CollapsibleBidHistory.js +8 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +4 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +43 -9
- package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -0
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +18 -0
- package/dist/features/auctions/components/PlaceBidFormClient.js +33 -0
- package/dist/features/auctions/hooks/useAuctions.d.ts +1 -0
- package/dist/features/auctions/hooks/useAuctions.js +1 -0
- package/dist/features/auctions/schemas/index.d.ts +18 -8
- package/dist/features/auth/actions/profile-actions.d.ts +5 -3
- package/dist/features/auth/actions/profile-actions.js +30 -11
- package/dist/features/auth/auth-helpers.js +1 -0
- package/dist/features/auth/components/LoginForm.js +2 -1
- package/dist/features/auth/hooks/useAuth.js +16 -4
- package/dist/features/auth/permissions/constants.d.ts +63 -0
- package/dist/features/auth/permissions/constants.js +323 -0
- package/dist/features/auth/schemas/firestore.d.ts +20 -0
- package/dist/features/auth/schemas/index.d.ts +4 -4
- package/dist/features/auth/schemas/index.js +3 -2
- package/dist/features/auth/types/index.d.ts +1 -1
- package/dist/features/before-after/schemas/index.d.ts +2 -2
- package/dist/features/blog/actions/blog-actions.d.ts +15 -15
- package/dist/features/blog/components/BlogFeaturedCard.d.ts +1 -7
- package/dist/features/blog/components/BlogFeaturedCard.js +4 -5
- package/dist/features/blog/components/BlogFilters.js +2 -1
- package/dist/features/blog/components/BlogIndexListing.js +66 -9
- package/dist/features/blog/components/BlogIndexPageView.d.ts +6 -1
- package/dist/features/blog/components/BlogIndexPageView.js +24 -4
- package/dist/features/blog/components/BlogListView.d.ts +2 -1
- package/dist/features/blog/components/BlogListView.js +10 -3
- package/dist/features/blog/components/BlogPostForm.js +6 -2
- package/dist/features/blog/components/BlogPostView.js +2 -1
- package/dist/features/blog/hooks/useBlog.d.ts +2 -0
- package/dist/features/blog/hooks/useBlog.js +2 -0
- package/dist/features/blog/schemas/index.d.ts +46 -12
- package/dist/features/brands/actions/brand-actions.d.ts +2 -0
- package/dist/features/brands/actions/brand-actions.js +5 -0
- package/dist/features/brands/index.d.ts +3 -0
- package/dist/features/brands/index.js +3 -0
- package/dist/features/brands/repository/brands.repository.d.ts +13 -0
- package/dist/features/brands/repository/brands.repository.js +60 -0
- package/dist/features/brands/schemas/index.d.ts +33 -0
- package/dist/features/brands/schemas/index.js +15 -0
- package/dist/features/brands/server.d.ts +7 -0
- package/dist/features/brands/server.js +7 -0
- package/dist/features/cart/actions/cart-actions.js +2 -2
- package/dist/features/cart/components/CartDrawer.d.ts +5 -1
- package/dist/features/cart/components/CartDrawer.js +3 -3
- package/dist/features/cart/hooks/useCartCount.d.ts +3 -2
- package/dist/features/cart/hooks/useCartCount.js +4 -2
- package/dist/features/cart/hooks/useGuestCartMerge.js +1 -1
- package/dist/features/cart/index.d.ts +1 -0
- package/dist/features/cart/index.js +1 -0
- package/dist/features/cart/repository/cart.repository.d.ts +5 -1
- package/dist/features/cart/repository/cart.repository.js +36 -5
- package/dist/features/cart/schemas/firestore.d.ts +25 -6
- package/dist/features/cart/schemas/firestore.js +2 -2
- package/dist/features/cart/schemas/index.d.ts +9 -9
- package/dist/features/cart/schemas/index.js +1 -1
- package/dist/features/cart/types/index.d.ts +1 -1
- package/dist/features/cart/utils/pending-ops.d.ts +33 -0
- package/dist/features/cart/utils/pending-ops.js +102 -0
- package/dist/features/categories/components/BrandDetailPageView.d.ts +4 -0
- package/dist/features/categories/components/BrandDetailPageView.js +54 -0
- package/dist/features/categories/components/BrandDetailTabs.d.ts +10 -0
- package/dist/features/categories/components/BrandDetailTabs.js +22 -0
- package/dist/features/categories/components/CategoriesIndexListing.d.ts +3 -1
- package/dist/features/categories/components/CategoriesIndexListing.js +117 -38
- package/dist/features/categories/components/CategoriesIndexPageView.d.ts +6 -1
- package/dist/features/categories/components/CategoriesIndexPageView.js +41 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +47 -19
- package/dist/features/categories/components/CategoryDetailTabs.d.ts +11 -0
- package/dist/features/categories/components/CategoryDetailTabs.js +22 -0
- package/dist/features/categories/components/CategoryFilters.js +2 -1
- package/dist/features/categories/components/CategoryForm.js +10 -4
- package/dist/features/categories/components/CategoryGrid.d.ts +2 -1
- package/dist/features/categories/components/CategoryGrid.js +8 -6
- package/dist/features/categories/components/CategoryProductsListing.d.ts +4 -1
- package/dist/features/categories/components/CategoryProductsListing.js +53 -13
- package/dist/features/categories/components/ConcernCard.js +1 -1
- package/dist/features/categories/components/index.d.ts +2 -0
- package/dist/features/categories/components/index.js +1 -0
- package/dist/features/categories/hooks/useCategories.d.ts +20 -0
- package/dist/features/categories/hooks/useCategories.js +52 -1
- package/dist/features/categories/hooks/useCategoryTree.d.ts +17 -0
- package/dist/features/categories/hooks/useCategoryTree.js +65 -0
- package/dist/features/categories/repository/categories.repository.js +2 -3
- package/dist/features/categories/schemas/firestore.d.ts +23 -2
- package/dist/features/categories/schemas/firestore.js +8 -0
- package/dist/features/categories/schemas/index.d.ts +8 -8
- package/dist/features/categories/types/index.d.ts +1 -0
- package/dist/features/collections/schemas/index.d.ts +2 -2
- package/dist/features/events/components/AdminEventEditorView.d.ts +6 -0
- package/dist/features/events/components/AdminEventEditorView.js +203 -0
- package/dist/features/events/components/AdminEventsView.d.ts +4 -1
- package/dist/features/events/components/AdminEventsView.js +66 -14
- package/dist/features/events/components/EventCard.js +4 -2
- package/dist/features/events/components/EventFilters.js +2 -1
- package/dist/features/events/components/EventPollWidget.d.ts +12 -0
- package/dist/features/events/components/EventPollWidget.js +62 -0
- package/dist/features/events/components/EventsIndexListing.js +92 -10
- package/dist/features/events/components/EventsListPageView.d.ts +6 -1
- package/dist/features/events/components/EventsListPageView.js +40 -7
- package/dist/features/events/components/index.d.ts +4 -0
- package/dist/features/events/components/index.js +2 -0
- package/dist/features/events/hooks/useEvents.d.ts +1 -0
- package/dist/features/events/hooks/useEvents.js +3 -0
- package/dist/features/events/repository/events.repository.js +3 -0
- package/dist/features/events/schemas/firestore.d.ts +1 -0
- package/dist/features/events/schemas/index.d.ts +44 -0
- package/dist/features/events/types/index.d.ts +3 -0
- package/dist/features/faq/actions/faq-actions.d.ts +16 -16
- package/dist/features/faq/hooks/useFaqList.js +1 -1
- package/dist/features/faq/schemas/firestore.d.ts +2 -2
- package/dist/features/faq/schemas/firestore.js +2 -1
- package/dist/features/faq/schemas/index.d.ts +4 -4
- package/dist/features/filters/FilterFacetSection.d.ts +1 -0
- package/dist/features/filters/FilterFacetSection.js +13 -1
- package/dist/features/filters/SwitchFilter.js +1 -1
- package/dist/features/grouped/schemas/firestore.d.ts +32 -0
- package/dist/features/grouped/schemas/firestore.js +19 -0
- package/dist/features/homepage/components/AdSlot.d.ts +1 -3
- package/dist/features/homepage/components/AdSlot.js +15 -14
- package/dist/features/homepage/components/BlogArticlesSection.d.ts +3 -1
- package/dist/features/homepage/components/BlogArticlesSection.js +3 -3
- package/dist/features/homepage/components/BrandsSection.d.ts +3 -1
- package/dist/features/homepage/components/BrandsSection.js +4 -3
- package/dist/features/homepage/components/CustomCardsSection.d.ts +3 -0
- package/dist/features/homepage/components/CustomCardsSection.js +76 -0
- package/dist/features/homepage/components/EventsSection.d.ts +3 -1
- package/dist/features/homepage/components/EventsSection.js +3 -3
- package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +4 -1
- package/dist/features/homepage/components/FeaturedAuctionsSection.js +3 -3
- package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +4 -1
- package/dist/features/homepage/components/FeaturedPreOrdersSection.js +3 -3
- package/dist/features/homepage/components/FeaturedProductsSection.d.ts +4 -1
- package/dist/features/homepage/components/FeaturedProductsSection.js +8 -3
- package/dist/features/homepage/components/FeaturedStoresSection.d.ts +3 -1
- package/dist/features/homepage/components/FeaturedStoresSection.js +3 -3
- package/dist/features/homepage/components/GoogleReviewsSection.d.ts +3 -0
- package/dist/features/homepage/components/GoogleReviewsSection.js +65 -0
- package/dist/features/homepage/components/HeroCarousel.js +129 -85
- package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +2 -20
- package/dist/features/homepage/components/MarketplaceHomepageView.js +73 -220
- package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
- package/dist/features/homepage/components/SectionCarousel.js +6 -4
- package/dist/features/homepage/components/ShopByCategorySection.d.ts +3 -1
- package/dist/features/homepage/components/ShopByCategorySection.js +8 -4
- package/dist/features/homepage/components/SocialFeedSection.d.ts +3 -0
- package/dist/features/homepage/components/SocialFeedSection.js +86 -0
- package/dist/features/homepage/components/SocialPostCard.d.ts +7 -0
- package/dist/features/homepage/components/SocialPostCard.js +39 -0
- package/dist/features/homepage/components/StatsCounterSection.js +1 -1
- package/dist/features/homepage/components/WelcomeSection.js +1 -1
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
- package/dist/features/homepage/hooks/useActiveAd.d.ts +23 -0
- package/dist/features/homepage/hooks/useActiveAd.js +20 -0
- package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -0
- package/dist/features/homepage/hooks/useBlogArticles.js +10 -0
- package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +4 -1
- package/dist/features/homepage/hooks/useFeaturedAuctions.js +8 -4
- package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +4 -1
- package/dist/features/homepage/hooks/useFeaturedPreOrders.js +8 -4
- package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -0
- package/dist/features/homepage/hooks/useFeaturedProducts.js +6 -3
- package/dist/features/homepage/hooks/useFeaturedStores.d.ts +3 -1
- package/dist/features/homepage/hooks/useFeaturedStores.js +2 -1
- package/dist/features/homepage/hooks/useHomepageEvents.d.ts +3 -1
- package/dist/features/homepage/hooks/useHomepageEvents.js +2 -1
- package/dist/features/homepage/hooks/useTopBrands.d.ts +3 -1
- package/dist/features/homepage/hooks/useTopBrands.js +2 -1
- package/dist/features/homepage/index.d.ts +2 -0
- package/dist/features/homepage/index.js +1 -0
- package/dist/features/homepage/lib/google-reviews-fetcher.d.ts +14 -0
- package/dist/features/homepage/lib/google-reviews-fetcher.js +27 -0
- package/dist/features/homepage/lib/live-stats.d.ts +14 -0
- package/dist/features/homepage/lib/live-stats.js +62 -0
- package/dist/features/homepage/lib/section-defaults.d.ts +11 -0
- package/dist/features/homepage/lib/section-defaults.js +45 -0
- package/dist/features/homepage/lib/section-helpers.d.ts +5 -0
- package/dist/features/homepage/lib/section-helpers.js +25 -0
- package/dist/features/homepage/lib/section-renderer.d.ts +33 -0
- package/dist/features/homepage/lib/section-renderer.js +164 -0
- package/dist/features/homepage/lib/social-feed-fetcher.d.ts +5 -0
- package/dist/features/homepage/lib/social-feed-fetcher.js +193 -0
- package/dist/features/homepage/schemas/firestore.d.ts +180 -29
- package/dist/features/homepage/schemas/firestore.js +7 -1
- package/dist/features/homepage/types/index.d.ts +48 -19
- package/dist/features/layout/AppLayoutShell.d.ts +11 -2
- package/dist/features/layout/AppLayoutShell.js +30 -10
- package/dist/features/layout/BottomActions.js +1 -1
- package/dist/features/layout/BottomNavbar.d.ts +15 -1
- package/dist/features/layout/BottomNavbar.js +8 -2
- package/dist/features/layout/FooterLayout.d.ts +7 -1
- package/dist/features/layout/FooterLayout.js +3 -3
- package/dist/features/layout/ListingLayout.js +2 -2
- package/dist/features/layout/MainNavbar.d.ts +6 -14
- package/dist/features/layout/MainNavbar.js +4 -16
- package/dist/features/layout/NavItem.js +1 -1
- package/dist/features/layout/NavbarLayout.d.ts +3 -1
- package/dist/features/layout/NavbarLayout.js +5 -5
- package/dist/features/layout/TitleBar.d.ts +4 -2
- package/dist/features/layout/TitleBar.js +5 -3
- package/dist/features/layout/TitleBarLayout.d.ts +3 -1
- package/dist/features/layout/TitleBarLayout.js +2 -2
- package/dist/features/layout/index.d.ts +1 -1
- package/dist/features/media/MediaPickerModal.d.ts +30 -0
- package/dist/features/media/MediaPickerModal.js +72 -0
- package/dist/features/media/index.d.ts +3 -1
- package/dist/features/media/index.js +1 -0
- package/dist/features/media/types/index.d.ts +12 -0
- package/dist/features/media/types/index.js +4 -2
- package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
- package/dist/features/media/upload/MediaUploadField.js +56 -3
- package/dist/features/messages/schemas/firestore.d.ts +36 -0
- package/dist/features/messages/schemas/firestore.js +16 -0
- package/dist/features/orders/repository/orders.repository.d.ts +2 -2
- package/dist/features/orders/repository/orders.repository.js +2 -2
- package/dist/features/orders/schemas/firestore.d.ts +17 -4
- package/dist/features/orders/schemas/firestore.js +2 -2
- package/dist/features/orders/schemas/index.d.ts +18 -18
- package/dist/features/orders/schemas/index.js +3 -3
- package/dist/features/orders/types/index.d.ts +1 -1
- package/dist/features/orders/utils/order-splitter.d.ts +1 -1
- package/dist/features/orders/utils/order-splitter.js +2 -2
- package/dist/features/payments/repository/payout.repository.d.ts +4 -4
- package/dist/features/payments/repository/payout.repository.js +7 -7
- package/dist/features/payments/schemas/firestore.d.ts +6 -6
- package/dist/features/payments/schemas/firestore.js +6 -6
- package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +3 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +13 -8
- package/dist/features/pre-orders/components/PreOrderActionsClient.d.ts +11 -0
- package/dist/features/pre-orders/components/PreOrderActionsClient.js +28 -0
- package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +2 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +100 -14
- package/dist/features/pre-orders/components/PreOrderFilters.d.ts +10 -0
- package/dist/features/pre-orders/components/PreOrderFilters.js +24 -0
- package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +4 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +166 -11
- package/dist/features/pre-orders/components/PreOrdersListView.d.ts +6 -1
- package/dist/features/pre-orders/components/PreOrdersListView.js +26 -7
- package/dist/features/pre-orders/components/PreorderCard.js +1 -1
- package/dist/features/pre-orders/components/index.d.ts +2 -0
- package/dist/features/pre-orders/components/index.js +1 -0
- package/dist/features/pre-orders/schemas/index.d.ts +10 -0
- package/dist/features/products/actions/product-actions.d.ts +2 -2
- package/dist/features/products/actions/product-actions.js +5 -5
- package/dist/features/products/api/[id]/route.js +5 -2
- package/dist/features/products/api/route.js +10 -14
- package/dist/features/products/columns/productTableColumns.js +2 -2
- package/dist/features/products/components/AuctionDetailView.d.ts +2 -1
- package/dist/features/products/components/AuctionDetailView.js +2 -2
- package/dist/features/products/components/AuctionsIndexListing.d.ts +4 -1
- package/dist/features/products/components/AuctionsIndexListing.js +124 -10
- package/dist/features/products/components/BidHistory.d.ts +2 -1
- package/dist/features/products/components/BidHistory.js +18 -2
- package/dist/features/products/components/InteractiveProductCard.d.ts +2 -4
- package/dist/features/products/components/InteractiveProductCard.js +2 -2
- package/dist/features/products/components/MakeOfferButton.d.ts +10 -0
- package/dist/features/products/components/MakeOfferButton.js +68 -0
- package/dist/features/products/components/ProductDetailPageView.d.ts +11 -1
- package/dist/features/products/components/ProductDetailPageView.js +136 -26
- package/dist/features/products/components/ProductFilters.d.ts +13 -12
- package/dist/features/products/components/ProductFilters.js +8 -4
- package/dist/features/products/components/ProductForm.d.ts +19 -1
- package/dist/features/products/components/ProductForm.js +24 -6
- package/dist/features/products/components/ProductGrid.d.ts +16 -2
- package/dist/features/products/components/ProductGrid.js +80 -18
- package/dist/features/products/components/ProductTabsShell.d.ts +3 -11
- package/dist/features/products/components/ProductTabsShell.js +14 -14
- package/dist/features/products/components/ProductsIndexListing.js +160 -10
- package/dist/features/products/components/ProductsIndexPageView.d.ts +6 -1
- package/dist/features/products/components/ProductsIndexPageView.js +39 -6
- package/dist/features/products/components/RelatedProductsCarousel.d.ts +7 -0
- package/dist/features/products/components/RelatedProductsCarousel.js +11 -0
- package/dist/features/products/components/ShareButton.d.ts +7 -0
- package/dist/features/products/components/ShareButton.js +22 -0
- package/dist/features/products/components/index.d.ts +3 -0
- package/dist/features/products/components/index.js +2 -0
- package/dist/features/products/hooks/useProducts.d.ts +7 -0
- package/dist/features/products/hooks/useProducts.js +20 -2
- package/dist/features/products/repository/products.repository.d.ts +9 -5
- package/dist/features/products/repository/products.repository.js +19 -50
- package/dist/features/products/schemas/firestore.d.ts +11 -9
- package/dist/features/products/schemas/firestore.js +11 -3
- package/dist/features/products/schemas/index.d.ts +43 -42
- package/dist/features/products/schemas/index.js +2 -5
- package/dist/features/products/types/index.d.ts +24 -4
- package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
- package/dist/features/promotions/actions/coupon-actions.js +1 -1
- package/dist/features/promotions/actions/seller-coupon-actions.js +11 -6
- package/dist/features/promotions/api/route.js +3 -3
- package/dist/features/promotions/components/CouponCard.js +16 -7
- package/dist/features/promotions/components/CouponsIndexListing.d.ts +9 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +80 -0
- package/dist/features/promotions/components/PromotionsView.d.ts +11 -5
- package/dist/features/promotions/components/PromotionsView.js +6 -1
- package/dist/features/promotions/components/index.d.ts +4 -2
- package/dist/features/promotions/components/index.js +2 -1
- package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
- package/dist/features/promotions/hooks/usePromotions.js +2 -2
- package/dist/features/promotions/repository/coupons.repository.d.ts +21 -15
- package/dist/features/promotions/repository/coupons.repository.js +97 -125
- package/dist/features/promotions/schemas/firestore.d.ts +31 -2
- package/dist/features/promotions/schemas/firestore.js +29 -0
- package/dist/features/promotions/schemas/index.d.ts +9 -12
- package/dist/features/promotions/schemas/index.js +1 -2
- package/dist/features/promotions/types/index.d.ts +1 -2
- package/dist/features/reviews/actions/review-actions.js +3 -2
- package/dist/features/reviews/components/ReviewDetailPageView.d.ts +4 -0
- package/dist/features/reviews/components/ReviewDetailPageView.js +16 -0
- package/dist/features/reviews/components/ReviewDetailShell.d.ts +7 -0
- package/dist/features/reviews/components/ReviewDetailShell.js +80 -0
- package/dist/features/reviews/components/ReviewFilters.d.ts +3 -3
- package/dist/features/reviews/components/ReviewFilters.js +5 -4
- package/dist/features/reviews/components/ReviewsIndexListing.d.ts +4 -3
- package/dist/features/reviews/components/ReviewsIndexListing.js +86 -51
- package/dist/features/reviews/components/ReviewsIndexPageView.d.ts +6 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +49 -3
- package/dist/features/reviews/components/ReviewsList.js +9 -1
- package/dist/features/reviews/components/index.d.ts +1 -0
- package/dist/features/reviews/hooks/useReviews.d.ts +1 -0
- package/dist/features/reviews/hooks/useReviews.js +16 -1
- package/dist/features/reviews/repository/reviews.repository.d.ts +9 -4
- package/dist/features/reviews/repository/reviews.repository.js +18 -7
- package/dist/features/reviews/schemas/firestore.d.ts +5 -2
- package/dist/features/reviews/schemas/firestore.js +1 -0
- package/dist/features/reviews/schemas/index.d.ts +19 -16
- package/dist/features/reviews/schemas/index.js +3 -2
- package/dist/features/reviews/types/index.d.ts +9 -3
- package/dist/features/scams/actions/scam-actions.d.ts +29 -0
- package/dist/features/scams/actions/scam-actions.js +62 -0
- package/dist/features/scams/components/ScamProfileView.d.ts +7 -0
- package/dist/features/scams/components/ScamProfileView.js +49 -0
- package/dist/features/scams/components/ScamRegistryView.d.ts +6 -0
- package/dist/features/scams/components/ScamRegistryView.js +41 -0
- package/dist/features/scams/components/index.d.ts +4 -0
- package/dist/features/scams/components/index.js +2 -0
- package/dist/features/scams/constants/scam-types.d.ts +38 -0
- package/dist/features/scams/constants/scam-types.js +443 -0
- package/dist/features/scams/repository/scammer.repository.d.ts +67 -0
- package/dist/features/scams/repository/scammer.repository.js +160 -0
- package/dist/features/scams/schemas/firestore.d.ts +362 -0
- package/dist/features/scams/schemas/firestore.js +233 -0
- package/dist/features/search/components/Search.d.ts +12 -2
- package/dist/features/search/components/Search.js +26 -7
- package/dist/features/search/components/index.d.ts +1 -1
- package/dist/features/search/hooks/useNavSuggestions.d.ts +1 -1
- package/dist/features/search/hooks/useNavSuggestions.js +2 -2
- package/dist/features/search/schemas/index.d.ts +7 -7
- package/dist/features/seller/actions/offer-actions.js +52 -36
- package/dist/features/seller/actions/seller-actions.js +19 -13
- package/dist/features/seller/api/products/route.js +9 -4
- package/dist/features/seller/components/SellerAddressesView.d.ts +3 -12
- package/dist/features/seller/components/SellerAddressesView.js +144 -4
- package/dist/features/seller/components/SellerAuctionsView.js +58 -5
- package/dist/features/seller/components/SellerBidsView.d.ts +4 -0
- package/dist/features/seller/components/SellerBidsView.js +131 -0
- package/dist/features/seller/components/SellerCouponEditorView.d.ts +19 -0
- package/dist/features/seller/components/SellerCouponEditorView.js +67 -0
- package/dist/features/seller/components/SellerCouponsView.d.ts +5 -3
- package/dist/features/seller/components/SellerCouponsView.js +135 -13
- package/dist/features/seller/components/SellerCreateProductView.d.ts +4 -10
- package/dist/features/seller/components/SellerCreateProductView.js +4 -3
- package/dist/features/seller/components/SellerEditProductView.d.ts +4 -10
- package/dist/features/seller/components/SellerEditProductView.js +4 -3
- package/dist/features/seller/components/SellerOffersPanel.d.ts +20 -0
- package/dist/features/seller/components/SellerOffersPanel.js +138 -0
- package/dist/features/seller/components/SellerOffersView.js +56 -5
- package/dist/features/seller/components/SellerOrdersView.d.ts +2 -1
- package/dist/features/seller/components/SellerOrdersView.js +185 -16
- package/dist/features/seller/components/SellerPayoutRequestView.d.ts +7 -0
- package/dist/features/seller/components/SellerPayoutRequestView.js +63 -0
- package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +3 -10
- package/dist/features/seller/components/SellerPayoutSettingsView.js +89 -3
- package/dist/features/seller/components/SellerPayoutsView.js +56 -5
- package/dist/features/seller/components/SellerProductShell.d.ts +68 -0
- package/dist/features/seller/components/SellerProductShell.js +179 -0
- package/dist/features/seller/components/SellerProductsView.d.ts +2 -3
- package/dist/features/seller/components/SellerProductsView.js +194 -18
- package/dist/features/seller/components/SellerReviewsView.d.ts +5 -0
- package/dist/features/seller/components/SellerReviewsView.js +100 -0
- package/dist/features/seller/components/SellerShippingView.d.ts +3 -11
- package/dist/features/seller/components/SellerShippingView.js +87 -3
- package/dist/features/seller/components/SellerSidebar.d.ts +18 -6
- package/dist/features/seller/components/SellerSidebar.js +54 -8
- package/dist/features/seller/components/SellerStorefrontView.d.ts +26 -11
- package/dist/features/seller/components/SellerStorefrontView.js +45 -7
- package/dist/features/seller/components/index.d.ts +45 -1
- package/dist/features/seller/components/index.js +24 -0
- package/dist/features/seller/hooks/useSellerListingData.d.ts +3 -1
- package/dist/features/seller/hooks/useSellerListingData.js +6 -4
- package/dist/features/seller/hooks/useSellerStore.d.ts +2 -0
- package/dist/features/seller/hooks/useSellerStore.js +2 -0
- package/dist/features/seller/permission-map.d.ts +4 -2
- package/dist/features/seller/permission-map.js +16 -14
- package/dist/features/seller/repository/offer.repository.d.ts +3 -3
- package/dist/features/seller/repository/offer.repository.js +6 -6
- package/dist/features/seller/schemas/firestore.d.ts +7 -7
- package/dist/features/seller/schemas/firestore.js +4 -4
- package/dist/features/seller/schemas/index.d.ts +18 -18
- package/dist/features/shell/FormShell.d.ts +29 -0
- package/dist/features/shell/FormShell.js +103 -0
- package/dist/features/shell/QuickFormDrawer.d.ts +29 -0
- package/dist/features/shell/QuickFormDrawer.js +117 -0
- package/dist/features/shell/StepForm.d.ts +44 -0
- package/dist/features/shell/StepForm.js +81 -0
- package/dist/features/shell/index.d.ts +6 -0
- package/dist/features/shell/index.js +3 -0
- package/dist/features/stores/actions/store-query-actions.js +3 -3
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +1 -1
- package/dist/features/stores/api/[storeSlug]/products/route.js +1 -1
- package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +1 -1
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +25 -20
- package/dist/features/stores/components/InteractiveStoreCard.d.ts +2 -7
- package/dist/features/stores/components/InteractiveStoreCard.js +24 -10
- package/dist/features/stores/components/StoreAboutView.js +1 -1
- package/dist/features/stores/components/StoreAuctionsListing.d.ts +5 -2
- package/dist/features/stores/components/StoreAuctionsListing.js +103 -12
- package/dist/features/stores/components/StoreAuctionsPageView.js +8 -7
- package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -0
- package/dist/features/stores/components/StoreDetailLayoutView.js +30 -4
- package/dist/features/stores/components/StoreFilters.d.ts +5 -0
- package/dist/features/stores/components/StoreFilters.js +20 -0
- package/dist/features/stores/components/StoreHeader.js +3 -2
- package/dist/features/stores/components/StorePreOrdersListing.d.ts +7 -0
- package/dist/features/stores/components/StorePreOrdersListing.js +92 -0
- package/dist/features/stores/components/StorePreOrdersPageView.d.ts +4 -0
- package/dist/features/stores/components/StorePreOrdersPageView.js +22 -0
- package/dist/features/stores/components/StoreProductsListing.d.ts +5 -2
- package/dist/features/stores/components/StoreProductsListing.js +113 -14
- package/dist/features/stores/components/StoreProductsPageView.js +8 -7
- package/dist/features/stores/components/StoreReviewsListing.js +4 -9
- package/dist/features/stores/components/StoresIndexListing.js +106 -9
- package/dist/features/stores/components/StoresIndexPageView.d.ts +6 -1
- package/dist/features/stores/components/StoresIndexPageView.js +9 -2
- package/dist/features/stores/components/StoresListView.js +1 -1
- package/dist/features/stores/components/index.d.ts +3 -0
- package/dist/features/stores/components/index.js +1 -0
- package/dist/features/stores/hooks/useStores.d.ts +8 -1
- package/dist/features/stores/hooks/useStores.js +17 -3
- package/dist/features/stores/schemas/firestore.d.ts +34 -0
- package/dist/features/stores/schemas/index.d.ts +10 -10
- package/dist/features/stores/types/index.d.ts +3 -0
- package/dist/features/sublisting/schemas/firestore.d.ts +30 -0
- package/dist/features/sublisting/schemas/firestore.js +19 -0
- package/dist/features/support/schemas/firestore.d.ts +113 -0
- package/dist/features/support/schemas/firestore.js +95 -0
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +5 -0
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +143 -0
- package/dist/features/whatsapp-bot/components/index.d.ts +2 -0
- package/dist/features/whatsapp-bot/components/index.js +1 -0
- package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +23 -1
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +104 -0
- package/dist/features/whatsapp-bot/server.d.ts +1 -0
- package/dist/features/whatsapp-bot/server.js +1 -0
- package/dist/features/whatsapp-bot/types/index.d.ts +49 -0
- package/dist/features/wishlist/components/WishlistView.d.ts +0 -10
- package/dist/features/wishlist/components/WishlistView.js +13 -6
- package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +20 -0
- package/dist/features/wishlist/hooks/useGuestWishlist.js +49 -0
- package/dist/features/wishlist/hooks/useWishlist.js +2 -0
- package/dist/features/wishlist/hooks/useWishlistCount.d.ts +15 -0
- package/dist/features/wishlist/hooks/useWishlistCount.js +95 -0
- package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +56 -0
- package/dist/features/wishlist/hooks/useWishlistWithGuest.js +57 -0
- package/dist/features/wishlist/index.d.ts +3 -0
- package/dist/features/wishlist/index.js +3 -0
- package/dist/features/wishlist/schemas/index.d.ts +2 -2
- package/dist/features/wishlist/types/index.d.ts +16 -0
- package/dist/features/wishlist/utils/guest-wishlist.d.ts +22 -0
- package/dist/features/wishlist/utils/guest-wishlist.js +70 -0
- package/dist/http/api-handler.js +8 -1
- package/dist/index.d.ts +158 -13
- package/dist/index.js +188 -21
- package/dist/monitoring/server-logger.js +9 -3
- package/dist/next/routing/route-map.d.ts +184 -36
- package/dist/next/routing/route-map.js +81 -22
- package/dist/providers/db-firebase/realtime.d.ts +1 -1
- package/dist/react/contexts/SessionContext.js +17 -26
- package/dist/react/hooks/useBulkSelection.d.ts +7 -24
- package/dist/react/hooks/useBulkSelection.js +27 -34
- package/dist/react/hooks/useLongPress.d.ts +3 -16
- package/dist/react/hooks/useLongPress.js +6 -25
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.js +2 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.js +2 -0
- package/dist/seed/actions/demo-seed-actions.d.ts +2 -2
- package/dist/seed/actions/demo-seed-actions.js +1 -1
- package/dist/seed/addresses-seed-data.js +62 -261
- package/dist/seed/anime-figures-seed-data.d.ts +8 -0
- package/dist/seed/anime-figures-seed-data.js +1033 -0
- package/dist/seed/beyblade-seed-data.d.ts +7 -0
- package/dist/seed/beyblade-seed-data.js +1129 -0
- package/dist/seed/bids-seed-data.d.ts +4 -2
- package/dist/seed/bids-seed-data.js +343 -1067
- package/dist/seed/blog-posts-seed-data.d.ts +3 -2
- package/dist/seed/blog-posts-seed-data.js +258 -181
- package/dist/seed/brands-seed-data.d.ts +7 -0
- package/dist/seed/brands-seed-data.js +410 -0
- package/dist/seed/carousel-slides-seed-data.d.ts +3 -2
- package/dist/seed/carousel-slides-seed-data.js +177 -216
- package/dist/seed/cart-seed-data.d.ts +8 -8
- package/dist/seed/cart-seed-data.js +73 -74
- package/dist/seed/categories-seed-data.d.ts +4 -2
- package/dist/seed/categories-seed-data.js +720 -879
- package/dist/seed/conversations-seed-data.d.ts +8 -0
- package/dist/seed/conversations-seed-data.js +388 -0
- package/dist/seed/cosplay-accessories-seed-data.d.ts +8 -0
- package/dist/seed/cosplay-accessories-seed-data.js +647 -0
- package/dist/seed/coupon-usage-seed-data.d.ts +25 -0
- package/dist/seed/coupon-usage-seed-data.js +69 -0
- package/dist/seed/coupons-seed-data.d.ts +4 -2
- package/dist/seed/coupons-seed-data.js +204 -338
- package/dist/seed/events-seed-data.d.ts +4 -2
- package/dist/seed/events-seed-data.js +125 -588
- package/dist/seed/factories/cart.factory.d.ts +0 -1
- package/dist/seed/factories/cart.factory.js +2 -2
- package/dist/seed/faq-seed-data.d.ts +11 -41
- package/dist/seed/faq-seed-data.js +833 -1977
- package/dist/seed/grouped-listings-seed-data.d.ts +8 -0
- package/dist/seed/grouped-listings-seed-data.js +201 -0
- package/dist/seed/homepage-sections-seed-data.d.ts +3 -13
- package/dist/seed/homepage-sections-seed-data.js +228 -252
- package/dist/seed/hot-wheels-seed-data.d.ts +7 -0
- package/dist/seed/hot-wheels-seed-data.js +1612 -0
- package/dist/seed/index.d.ts +12 -6
- package/dist/seed/index.js +10 -7
- package/dist/seed/letitrip-official-seed-data.d.ts +8 -0
- package/dist/seed/letitrip-official-seed-data.js +399 -0
- package/dist/seed/manifest.d.ts +15 -0
- package/dist/seed/manifest.js +140 -0
- package/dist/seed/notifications-seed-data.d.ts +4 -2
- package/dist/seed/notifications-seed-data.js +117 -440
- package/dist/seed/orders-seed-data.d.ts +4 -2
- package/dist/seed/orders-seed-data.js +1090 -521
- package/dist/seed/payouts-seed-data.d.ts +4 -2
- package/dist/seed/payouts-seed-data.js +522 -145
- package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +4 -2
- package/dist/seed/pokemon-carousel-slides-seed-data.js +157 -268
- package/dist/seed/pokemon-categories-seed-data.d.ts +18 -21
- package/dist/seed/pokemon-categories-seed-data.js +445 -1025
- package/dist/seed/pokemon-coupons-seed-data.d.ts +6 -0
- package/dist/seed/pokemon-coupons-seed-data.js +465 -0
- package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +3 -2
- package/dist/seed/pokemon-homepage-sections-seed-data.js +120 -249
- package/dist/seed/pokemon-products-seed-data.d.ts +1 -1
- package/dist/seed/pokemon-products-seed-data.js +720 -48
- package/dist/seed/pokemon-seed-bundle.d.ts +36 -11
- package/dist/seed/pokemon-seed-bundle.js +60 -11
- package/dist/seed/pokemon-stores-seed-data.d.ts +2 -3
- package/dist/seed/pokemon-stores-seed-data.js +135 -34
- package/dist/seed/pokemon-users-seed-data.d.ts +2 -2
- package/dist/seed/pokemon-users-seed-data.js +344 -261
- package/dist/seed/products-auctions-seed-data.d.ts +10 -0
- package/dist/seed/products-auctions-seed-data.js +689 -0
- package/dist/seed/products-preorders-seed-data.d.ts +9 -0
- package/dist/seed/products-preorders-seed-data.js +483 -0
- package/dist/seed/products-seed-data.js +34 -13
- package/dist/seed/products-standard-seed-data.d.ts +8 -0
- package/dist/seed/products-standard-seed-data.js +4179 -0
- package/dist/seed/retro-gaming-seed-data.d.ts +8 -0
- package/dist/seed/retro-gaming-seed-data.js +801 -0
- package/dist/seed/reviews-seed-data.d.ts +4 -2
- package/dist/seed/reviews-seed-data.js +1005 -441
- package/dist/seed/scammers-seed-data.d.ts +17 -0
- package/dist/seed/scammers-seed-data.js +118 -0
- package/dist/seed/site-settings-seed-data.js +39 -16
- package/dist/seed/store-addresses-seed-data.js +187 -65
- package/dist/seed/stores-seed-data.d.ts +3 -9
- package/dist/seed/stores-seed-data.js +212 -102
- package/dist/seed/sublisting-categories-seed-data.d.ts +7 -0
- package/dist/seed/sublisting-categories-seed-data.js +315 -0
- package/dist/seed/transformers-seed-data.d.ts +7 -0
- package/dist/seed/transformers-seed-data.js +530 -0
- package/dist/seed/users-seed-data.d.ts +3 -2
- package/dist/seed/users-seed-data.js +531 -440
- package/dist/seed/wishlists-seed-data.d.ts +5 -1
- package/dist/seed/wishlists-seed-data.js +84 -6
- package/dist/server.d.ts +10 -2
- package/dist/server.js +14 -4
- package/dist/tokens/index.d.ts +6 -0
- package/dist/tokens/index.js +2 -0
- package/dist/tokens/tokens.css +76 -31
- package/dist/ui/components/Avatar.style.css +10 -12
- package/dist/ui/components/BaseListingCard.d.ts +8 -3
- package/dist/ui/components/BaseListingCard.js +39 -30
- package/dist/ui/components/BaseListingCard.style.css +8 -6
- package/dist/ui/components/BulkActionsBar.d.ts +16 -0
- package/dist/ui/components/BulkActionsBar.js +22 -0
- package/dist/ui/components/Button.style.css +23 -23
- package/dist/ui/components/Card.style.css +60 -62
- package/dist/ui/components/Checkbox.style.css +19 -21
- package/dist/ui/components/DashboardStatsCard.style.css +12 -14
- package/dist/ui/components/Drawer.style.css +18 -14
- package/dist/ui/components/Dropdown.style.css +25 -27
- package/dist/ui/components/EmptyState.style.css +2 -4
- package/dist/ui/components/HorizontalScroller.d.ts +3 -1
- package/dist/ui/components/HorizontalScroller.js +130 -21
- package/dist/ui/components/HorizontalScroller.style.css +2 -2
- package/dist/ui/components/ImageLightbox.d.ts +0 -9
- package/dist/ui/components/ImageLightbox.js +43 -9
- package/dist/ui/components/InlineCreateSelect.d.ts +38 -0
- package/dist/ui/components/InlineCreateSelect.js +70 -0
- package/dist/ui/components/ListingLayout.style.css +41 -77
- package/dist/ui/components/ListingToolbar.d.ts +54 -0
- package/dist/ui/components/ListingToolbar.js +34 -0
- package/dist/ui/components/Modal.style.css +14 -10
- package/dist/ui/components/PageLoader.d.ts +11 -0
- package/dist/ui/components/PageLoader.js +21 -0
- package/dist/ui/components/Radio.style.css +34 -36
- package/dist/ui/components/RichTextEditor.js +1 -1
- package/dist/ui/components/RowActionMenu.d.ts +1 -0
- package/dist/ui/components/RowActionMenu.js +4 -2
- package/dist/ui/components/SectionTabs.js +1 -1
- package/dist/ui/components/SectionTabs.style.css +1 -0
- package/dist/ui/components/SideDrawer.style.css +3 -11
- package/dist/ui/components/SideModal.style.css +4 -8
- package/dist/ui/components/Slider.style.css +2 -4
- package/dist/ui/components/Tabs.style.css +8 -10
- package/dist/ui/components/Toast.style.css +22 -24
- package/dist/ui/components/Toggle.style.css +11 -13
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/rich-text/RichText.js +21 -2
- package/dist/ui/rich-text/RichText.style.css +292 -5
- package/dist/ui/rich-text/RichTextRenderer.d.ts +15 -0
- package/dist/ui/rich-text/RichTextRenderer.js +15 -0
- package/dist/utils/id-generators.d.ts +10 -0
- package/dist/utils/id-generators.js +12 -0
- package/dist/validation/schemas.d.ts +9 -9
- package/package.json +5 -1
- package/README.md +0 -116
|
@@ -63,14 +63,14 @@ class OfferRepository extends BaseRepository {
|
|
|
63
63
|
hasMore: false,
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
async
|
|
66
|
+
async findByStore(storeId, model) {
|
|
67
67
|
if (model) {
|
|
68
68
|
return this.sieveQuery(model, OfferRepository.SIEVE_FIELDS, {
|
|
69
|
-
baseQuery: this.getCollection().where(OFFER_FIELDS.
|
|
69
|
+
baseQuery: this.getCollection().where(OFFER_FIELDS.STORE_ID, "==", storeId),
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
const snap = await this.getCollection()
|
|
73
|
-
.where(OFFER_FIELDS.
|
|
73
|
+
.where(OFFER_FIELDS.STORE_ID, "==", storeId)
|
|
74
74
|
.orderBy(OFFER_FIELDS.CREATED_AT, "desc")
|
|
75
75
|
.get();
|
|
76
76
|
const items = snap.docs.map((d) => this.mapDoc(d));
|
|
@@ -83,9 +83,9 @@ class OfferRepository extends BaseRepository {
|
|
|
83
83
|
hasMore: false,
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
-
async
|
|
86
|
+
async findPendingByStore(storeId) {
|
|
87
87
|
const snap = await this.getCollection()
|
|
88
|
-
.where(OFFER_FIELDS.
|
|
88
|
+
.where(OFFER_FIELDS.STORE_ID, "==", storeId)
|
|
89
89
|
.where(OFFER_FIELDS.STATUS, "==", "pending")
|
|
90
90
|
.orderBy(OFFER_FIELDS.CREATED_AT, "asc")
|
|
91
91
|
.get();
|
|
@@ -203,7 +203,7 @@ OfferRepository.SIEVE_FIELDS = {
|
|
|
203
203
|
status: { canFilter: true, canSort: false },
|
|
204
204
|
productId: { canFilter: true, canSort: false },
|
|
205
205
|
buyerUid: { canFilter: true, canSort: false },
|
|
206
|
-
|
|
206
|
+
storeId: { canFilter: true, canSort: false },
|
|
207
207
|
createdAt: { canFilter: false, canSort: true },
|
|
208
208
|
};
|
|
209
209
|
export const offerRepository = new OfferRepository();
|
|
@@ -22,8 +22,8 @@ export interface OfferDocument {
|
|
|
22
22
|
buyerUid: string;
|
|
23
23
|
buyerName: string;
|
|
24
24
|
buyerEmail: string;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
storeId: string;
|
|
26
|
+
storeName: string;
|
|
27
27
|
offerAmount: number;
|
|
28
28
|
listedPrice: number;
|
|
29
29
|
counterAmount?: number;
|
|
@@ -39,7 +39,7 @@ export interface OfferDocument {
|
|
|
39
39
|
updatedAt: Date;
|
|
40
40
|
}
|
|
41
41
|
export declare const OFFER_COLLECTION: "offers";
|
|
42
|
-
export declare const OFFER_INDEXED_FIELDS: readonly ["buyerUid", "
|
|
42
|
+
export declare const OFFER_INDEXED_FIELDS: readonly ["buyerUid", "storeId", "productId", "status", "createdAt", "expiresAt"];
|
|
43
43
|
export declare const OFFER_FIELDS: {
|
|
44
44
|
readonly ID: "id";
|
|
45
45
|
readonly PRODUCT_ID: "productId";
|
|
@@ -47,8 +47,8 @@ export declare const OFFER_FIELDS: {
|
|
|
47
47
|
readonly BUYER_UID: "buyerUid";
|
|
48
48
|
readonly BUYER_NAME: "buyerName";
|
|
49
49
|
readonly BUYER_EMAIL: "buyerEmail";
|
|
50
|
-
readonly
|
|
51
|
-
readonly
|
|
50
|
+
readonly STORE_ID: "storeId";
|
|
51
|
+
readonly STORE_NAME: "storeName";
|
|
52
52
|
readonly OFFER_AMOUNT: "offerAmount";
|
|
53
53
|
readonly LISTED_PRICE: "listedPrice";
|
|
54
54
|
readonly COUNTER_AMOUNT: "counterAmount";
|
|
@@ -63,11 +63,11 @@ export declare const OFFER_FIELDS: {
|
|
|
63
63
|
readonly CREATED_AT: "createdAt";
|
|
64
64
|
readonly UPDATED_AT: "updatedAt";
|
|
65
65
|
};
|
|
66
|
-
export type OfferCreateInput = Pick<OfferDocument, "productId" | "productTitle" | "productSlug" | "productImageUrl" | "buyerUid" | "buyerName" | "buyerEmail" | "
|
|
66
|
+
export type OfferCreateInput = Pick<OfferDocument, "productId" | "productTitle" | "productSlug" | "productImageUrl" | "buyerUid" | "buyerName" | "buyerEmail" | "storeId" | "storeName" | "offerAmount" | "listedPrice" | "currency" | "buyerNote">;
|
|
67
67
|
export type OfferUpdateInput = Partial<Pick<OfferDocument, "status" | "counterAmount" | "lockedPrice" | "sellerNote" | "acceptedAt" | "respondedAt" | "updatedAt">>;
|
|
68
68
|
export declare const offerQueryHelpers: {
|
|
69
69
|
readonly byBuyer: (buyerUid: string) => readonly ["buyerUid", "==", string];
|
|
70
|
-
readonly
|
|
70
|
+
readonly byStore: (storeId: string) => readonly ["storeId", "==", string];
|
|
71
71
|
readonly byProduct: (productId: string) => readonly ["productId", "==", string];
|
|
72
72
|
readonly byStatus: (status: OfferStatus) => readonly ["status", "==", OfferStatus];
|
|
73
73
|
readonly pending: () => readonly ["status", "==", "pending"];
|
|
@@ -15,7 +15,7 @@ export const OfferStatusValues = {
|
|
|
15
15
|
export const OFFER_COLLECTION = "offers";
|
|
16
16
|
export const OFFER_INDEXED_FIELDS = [
|
|
17
17
|
"buyerUid",
|
|
18
|
-
"
|
|
18
|
+
"storeId",
|
|
19
19
|
"productId",
|
|
20
20
|
"status",
|
|
21
21
|
"createdAt",
|
|
@@ -28,8 +28,8 @@ export const OFFER_FIELDS = {
|
|
|
28
28
|
BUYER_UID: "buyerUid",
|
|
29
29
|
BUYER_NAME: "buyerName",
|
|
30
30
|
BUYER_EMAIL: "buyerEmail",
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
STORE_ID: "storeId",
|
|
32
|
+
STORE_NAME: "storeName",
|
|
33
33
|
OFFER_AMOUNT: "offerAmount",
|
|
34
34
|
LISTED_PRICE: "listedPrice",
|
|
35
35
|
COUNTER_AMOUNT: "counterAmount",
|
|
@@ -46,7 +46,7 @@ export const OFFER_FIELDS = {
|
|
|
46
46
|
};
|
|
47
47
|
export const offerQueryHelpers = {
|
|
48
48
|
byBuyer: (buyerUid) => ["buyerUid", "==", buyerUid],
|
|
49
|
-
|
|
49
|
+
byStore: (storeId) => ["storeId", "==", storeId],
|
|
50
50
|
byProduct: (productId) => ["productId", "==", productId],
|
|
51
51
|
byStatus: (status) => ["status", "==", status],
|
|
52
52
|
pending: () => ["status", "==", "pending"],
|
|
@@ -9,14 +9,14 @@ export declare const socialLinksSchema: z.ZodObject<{
|
|
|
9
9
|
facebook: z.ZodOptional<z.ZodString>;
|
|
10
10
|
linkedin: z.ZodOptional<z.ZodString>;
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
twitter?: string | undefined;
|
|
13
12
|
instagram?: string | undefined;
|
|
14
13
|
facebook?: string | undefined;
|
|
14
|
+
twitter?: string | undefined;
|
|
15
15
|
linkedin?: string | undefined;
|
|
16
16
|
}, {
|
|
17
|
-
twitter?: string | undefined;
|
|
18
17
|
instagram?: string | undefined;
|
|
19
18
|
facebook?: string | undefined;
|
|
19
|
+
twitter?: string | undefined;
|
|
20
20
|
linkedin?: string | undefined;
|
|
21
21
|
}>;
|
|
22
22
|
/**
|
|
@@ -51,14 +51,14 @@ export declare const sellerStoreSchema: z.ZodObject<{
|
|
|
51
51
|
facebook: z.ZodOptional<z.ZodString>;
|
|
52
52
|
linkedin: z.ZodOptional<z.ZodString>;
|
|
53
53
|
}, "strip", z.ZodTypeAny, {
|
|
54
|
-
twitter?: string | undefined;
|
|
55
54
|
instagram?: string | undefined;
|
|
56
55
|
facebook?: string | undefined;
|
|
56
|
+
twitter?: string | undefined;
|
|
57
57
|
linkedin?: string | undefined;
|
|
58
58
|
}, {
|
|
59
|
-
twitter?: string | undefined;
|
|
60
59
|
instagram?: string | undefined;
|
|
61
60
|
facebook?: string | undefined;
|
|
61
|
+
twitter?: string | undefined;
|
|
62
62
|
linkedin?: string | undefined;
|
|
63
63
|
}>>;
|
|
64
64
|
returnPolicy: z.ZodOptional<z.ZodString>;
|
|
@@ -90,8 +90,8 @@ export declare const sellerStoreSchema: z.ZodObject<{
|
|
|
90
90
|
createdAt: string;
|
|
91
91
|
updatedAt: string;
|
|
92
92
|
storeName: string;
|
|
93
|
-
storeSlug: string;
|
|
94
93
|
ownerId: string;
|
|
94
|
+
storeSlug: string;
|
|
95
95
|
isPublic: boolean;
|
|
96
96
|
stats?: {
|
|
97
97
|
itemsSold: number;
|
|
@@ -101,18 +101,18 @@ export declare const sellerStoreSchema: z.ZodObject<{
|
|
|
101
101
|
} | undefined;
|
|
102
102
|
location?: string | undefined;
|
|
103
103
|
socialLinks?: {
|
|
104
|
-
twitter?: string | undefined;
|
|
105
104
|
instagram?: string | undefined;
|
|
106
105
|
facebook?: string | undefined;
|
|
106
|
+
twitter?: string | undefined;
|
|
107
107
|
linkedin?: string | undefined;
|
|
108
108
|
} | undefined;
|
|
109
|
-
bio?: string | undefined;
|
|
110
109
|
returnPolicy?: string | undefined;
|
|
111
|
-
|
|
110
|
+
website?: string | undefined;
|
|
111
|
+
bio?: string | undefined;
|
|
112
112
|
storeDescription?: string | undefined;
|
|
113
113
|
storeCategory?: string | undefined;
|
|
114
|
+
storeLogoURL?: string | undefined;
|
|
114
115
|
storeBannerURL?: string | undefined;
|
|
115
|
-
website?: string | undefined;
|
|
116
116
|
shippingPolicy?: string | undefined;
|
|
117
117
|
isVacationMode?: boolean | undefined;
|
|
118
118
|
vacationMessage?: string | undefined;
|
|
@@ -122,8 +122,8 @@ export declare const sellerStoreSchema: z.ZodObject<{
|
|
|
122
122
|
createdAt: string;
|
|
123
123
|
updatedAt: string;
|
|
124
124
|
storeName: string;
|
|
125
|
-
storeSlug: string;
|
|
126
125
|
ownerId: string;
|
|
126
|
+
storeSlug: string;
|
|
127
127
|
isPublic: boolean;
|
|
128
128
|
stats?: {
|
|
129
129
|
itemsSold: number;
|
|
@@ -133,18 +133,18 @@ export declare const sellerStoreSchema: z.ZodObject<{
|
|
|
133
133
|
} | undefined;
|
|
134
134
|
location?: string | undefined;
|
|
135
135
|
socialLinks?: {
|
|
136
|
-
twitter?: string | undefined;
|
|
137
136
|
instagram?: string | undefined;
|
|
138
137
|
facebook?: string | undefined;
|
|
138
|
+
twitter?: string | undefined;
|
|
139
139
|
linkedin?: string | undefined;
|
|
140
140
|
} | undefined;
|
|
141
|
-
bio?: string | undefined;
|
|
142
141
|
returnPolicy?: string | undefined;
|
|
143
|
-
|
|
142
|
+
website?: string | undefined;
|
|
143
|
+
bio?: string | undefined;
|
|
144
144
|
storeDescription?: string | undefined;
|
|
145
145
|
storeCategory?: string | undefined;
|
|
146
|
+
storeLogoURL?: string | undefined;
|
|
146
147
|
storeBannerURL?: string | undefined;
|
|
147
|
-
website?: string | undefined;
|
|
148
148
|
shippingPolicy?: string | undefined;
|
|
149
149
|
isVacationMode?: boolean | undefined;
|
|
150
150
|
vacationMessage?: string | undefined;
|
|
@@ -171,7 +171,6 @@ export declare const payoutRecordSchema: z.ZodObject<{
|
|
|
171
171
|
status: "pending" | "failed" | "processing" | "completed";
|
|
172
172
|
createdAt: string;
|
|
173
173
|
updatedAt: string;
|
|
174
|
-
sellerId: string;
|
|
175
174
|
requestedAt: string;
|
|
176
175
|
sellerName: string;
|
|
177
176
|
sellerEmail: string;
|
|
@@ -182,13 +181,13 @@ export declare const payoutRecordSchema: z.ZodObject<{
|
|
|
182
181
|
currency: string;
|
|
183
182
|
paymentMethod: "bank_transfer" | "upi";
|
|
184
183
|
orderIds: string[];
|
|
184
|
+
sellerId: string;
|
|
185
185
|
processedAt?: string | undefined;
|
|
186
186
|
}, {
|
|
187
187
|
id: string;
|
|
188
188
|
status: "pending" | "failed" | "processing" | "completed";
|
|
189
189
|
createdAt: string;
|
|
190
190
|
updatedAt: string;
|
|
191
|
-
sellerId: string;
|
|
192
191
|
requestedAt: string;
|
|
193
192
|
sellerName: string;
|
|
194
193
|
sellerEmail: string;
|
|
@@ -199,6 +198,7 @@ export declare const payoutRecordSchema: z.ZodObject<{
|
|
|
199
198
|
currency: string;
|
|
200
199
|
paymentMethod: "bank_transfer" | "upi";
|
|
201
200
|
orderIds: string[];
|
|
201
|
+
sellerId: string;
|
|
202
202
|
processedAt?: string | undefined;
|
|
203
203
|
}>;
|
|
204
204
|
export declare const sellerListParamsSchema: z.ZodObject<{
|
|
@@ -212,15 +212,15 @@ export declare const sellerListParamsSchema: z.ZodObject<{
|
|
|
212
212
|
sort?: string | undefined;
|
|
213
213
|
q?: string | undefined;
|
|
214
214
|
status?: "pending" | "active" | "rejected" | "suspended" | undefined;
|
|
215
|
-
page?: number | undefined;
|
|
216
215
|
category?: string | undefined;
|
|
216
|
+
page?: number | undefined;
|
|
217
217
|
perPage?: number | undefined;
|
|
218
218
|
}, {
|
|
219
219
|
sort?: string | undefined;
|
|
220
220
|
q?: string | undefined;
|
|
221
221
|
status?: "pending" | "active" | "rejected" | "suspended" | undefined;
|
|
222
|
-
page?: number | undefined;
|
|
223
222
|
category?: string | undefined;
|
|
223
|
+
page?: number | undefined;
|
|
224
224
|
perPage?: number | undefined;
|
|
225
225
|
}>;
|
|
226
226
|
export declare const payoutListParamsSchema: z.ZodObject<{
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface FormShellSection {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FormShellProps {
|
|
7
|
+
isOpen: boolean;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
title: string;
|
|
10
|
+
breadcrumb?: string;
|
|
11
|
+
isDirty?: boolean;
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
/** Left-nav anchor sections (section mode). Omit when using StepForm inside. */
|
|
14
|
+
sections?: FormShellSection[];
|
|
15
|
+
onSaveDraft?: () => void | Promise<void>;
|
|
16
|
+
onPublish?: () => void | Promise<void>;
|
|
17
|
+
saveLabel?: string;
|
|
18
|
+
publishLabel?: string;
|
|
19
|
+
/** Override the entire bottom action bar. */
|
|
20
|
+
renderBottomBar?: () => ReactNode;
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
export interface UseFormShellResult {
|
|
24
|
+
isDirty: boolean;
|
|
25
|
+
markDirty: () => void;
|
|
26
|
+
markClean: () => void;
|
|
27
|
+
}
|
|
28
|
+
export declare function useFormShell(): UseFormShellResult;
|
|
29
|
+
export declare function FormShell({ isOpen, onClose, title, breadcrumb, isDirty, isLoading, sections, onSaveDraft, onPublish, saveLabel, publishLabel, renderBottomBar, children, }: FormShellProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { X, AlertTriangle } from "lucide-react";
|
|
5
|
+
import { Button } from "../../ui/components/Button";
|
|
6
|
+
import { classNames } from "../../ui/style.helper";
|
|
7
|
+
export function useFormShell() {
|
|
8
|
+
const [isDirty, setIsDirty] = useState(false);
|
|
9
|
+
return {
|
|
10
|
+
isDirty,
|
|
11
|
+
markDirty: useCallback(() => setIsDirty(true), []),
|
|
12
|
+
markClean: useCallback(() => setIsDirty(false), []),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const FOCUSABLE = 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
16
|
+
export function FormShell({ isOpen, onClose, title, breadcrumb, isDirty = false, isLoading = false, sections, onSaveDraft, onPublish, saveLabel = "Save Draft", publishLabel = "Publish", renderBottomBar, children, }) {
|
|
17
|
+
const panelRef = useRef(null);
|
|
18
|
+
const bodyRef = useRef(null);
|
|
19
|
+
const [showUnsaved, setShowUnsaved] = useState(false);
|
|
20
|
+
const [savingDraft, setSavingDraft] = useState(false);
|
|
21
|
+
const [publishing, setPublishing] = useState(false);
|
|
22
|
+
const attemptClose = useCallback(() => {
|
|
23
|
+
if (isDirty) {
|
|
24
|
+
setShowUnsaved(true);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
onClose();
|
|
28
|
+
}
|
|
29
|
+
}, [isDirty, onClose]);
|
|
30
|
+
// Keyboard: Esc → attempt close; Tab → trap focus inside panel
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!isOpen)
|
|
33
|
+
return;
|
|
34
|
+
const handle = (e) => {
|
|
35
|
+
if (e.key === "Escape") {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
attemptClose();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (e.key === "Tab" && panelRef.current) {
|
|
41
|
+
const els = Array.from(panelRef.current.querySelectorAll(FOCUSABLE));
|
|
42
|
+
if (!els.length) {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (e.shiftKey) {
|
|
47
|
+
if (document.activeElement === els[0]) {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
els[els.length - 1].focus();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
if (document.activeElement === els[els.length - 1]) {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
els[0].focus();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
document.addEventListener("keydown", handle);
|
|
61
|
+
return () => document.removeEventListener("keydown", handle);
|
|
62
|
+
}, [isOpen, attemptClose]);
|
|
63
|
+
// Lock body scroll while open
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (isOpen) {
|
|
66
|
+
document.body.style.overflow = "hidden";
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
document.body.style.overflow = "";
|
|
70
|
+
}
|
|
71
|
+
return () => { document.body.style.overflow = ""; };
|
|
72
|
+
}, [isOpen]);
|
|
73
|
+
const scrollToSection = (id) => {
|
|
74
|
+
const el = bodyRef.current?.querySelector(`#${id}`);
|
|
75
|
+
if (el)
|
|
76
|
+
el.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
77
|
+
};
|
|
78
|
+
const handleSaveDraft = async () => {
|
|
79
|
+
if (!onSaveDraft)
|
|
80
|
+
return;
|
|
81
|
+
setSavingDraft(true);
|
|
82
|
+
try {
|
|
83
|
+
await onSaveDraft();
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
setSavingDraft(false);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const handlePublish = async () => {
|
|
90
|
+
if (!onPublish)
|
|
91
|
+
return;
|
|
92
|
+
setPublishing(true);
|
|
93
|
+
try {
|
|
94
|
+
await onPublish();
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
setPublishing(false);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
if (!isOpen)
|
|
101
|
+
return null;
|
|
102
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 bg-black/50 backdrop-blur-[2px]", style: { zIndex: "calc(var(--appkit-z-modal) - 1)" }, "aria-hidden": "true", onClick: attemptClose }), _jsxs("div", { ref: panelRef, role: "dialog", "aria-modal": "true", "aria-label": title, className: "fixed inset-0 flex flex-col bg-[var(--appkit-color-surface)] shadow-2xl", style: { zIndex: "var(--appkit-z-modal)" }, children: [_jsxs("div", { className: "flex-shrink-0 sticky top-0 z-10 border-b border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] px-4 py-3 flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: attemptClose, "aria-label": "Close", className: "rounded-lg p-1.5 text-[var(--appkit-color-text-muted)] hover:bg-[var(--appkit-color-border-subtle)] transition-colors flex-shrink-0", children: _jsx(X, { className: "w-5 h-5" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [breadcrumb && (_jsx("p", { className: "text-xs text-[var(--appkit-color-text-muted)] truncate mb-0.5", children: breadcrumb })), _jsx("p", { className: "text-sm font-semibold text-[var(--appkit-color-text)] truncate", children: title })] }), _jsxs("div", { className: "flex items-center gap-2 flex-shrink-0", children: [onSaveDraft && (_jsx(Button, { variant: "outline", size: "sm", onClick: handleSaveDraft, disabled: isLoading || savingDraft || publishing, isLoading: savingDraft, children: saveLabel })), onPublish && (_jsx(Button, { variant: "primary", size: "sm", onClick: handlePublish, disabled: isLoading || savingDraft || publishing, isLoading: publishing, children: publishLabel }))] })] }), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [sections && sections.length > 0 && (_jsx("nav", { "aria-label": "Form sections", className: "hidden lg:flex flex-col flex-shrink-0 w-48 border-r border-[var(--appkit-color-border)] py-4 px-3 gap-1 overflow-y-auto", children: sections.map((sec) => (_jsx("button", { type: "button", onClick: () => scrollToSection(sec.id), className: "text-left text-sm px-3 py-2 rounded-lg text-[var(--appkit-color-text-muted)] hover:text-[var(--appkit-color-text)] hover:bg-[var(--appkit-color-border-subtle)] transition-colors", children: sec.label }, sec.id))) })), sections && sections.length > 0 && (_jsx("div", { className: "lg:hidden fixed top-[var(--form-shell-topbar-h,57px)] left-0 right-0 z-10 flex overflow-x-auto gap-1 px-4 py-2 bg-[var(--appkit-color-surface)] border-b border-[var(--appkit-color-border)]", children: sections.map((sec) => (_jsx("button", { type: "button", onClick: () => scrollToSection(sec.id), className: "flex-shrink-0 text-xs px-3 py-1.5 rounded-full border border-[var(--appkit-color-border)] text-[var(--appkit-color-text-muted)] hover:border-[var(--appkit-color-primary)] hover:text-[var(--appkit-color-primary)] transition-colors whitespace-nowrap", children: sec.label }, sec.id))) })), _jsx("div", { ref: bodyRef, className: classNames("flex-1 overflow-y-auto", sections && sections.length > 0 ? "pt-0 lg:pt-0" : ""), children: _jsx("div", { className: "max-w-3xl mx-auto px-4 py-6 sm:px-6", children: children }) })] }), renderBottomBar ? (renderBottomBar()) : (onSaveDraft || onPublish) ? (_jsxs("div", { className: "flex-shrink-0 sticky bottom-0 z-10 border-t border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] px-4 py-3 flex items-center justify-between", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: attemptClose, disabled: isLoading, children: "Discard" }), _jsxs("div", { className: "flex items-center gap-2", children: [onSaveDraft && (_jsx(Button, { variant: "outline", size: "sm", onClick: handleSaveDraft, disabled: isLoading || savingDraft || publishing, isLoading: savingDraft, children: saveLabel })), onPublish && (_jsxs(Button, { variant: "primary", size: "sm", onClick: handlePublish, disabled: isLoading || savingDraft || publishing, isLoading: publishing, children: [publishLabel, " \u2192"] }))] })] })) : null] }), showUnsaved && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 bg-black/60", style: { zIndex: "calc(var(--appkit-z-modal) + 5)" }, onClick: () => setShowUnsaved(false) }), _jsxs("div", { className: "fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[90vw] max-w-sm bg-[var(--appkit-color-surface)] rounded-xl shadow-2xl p-6", style: { zIndex: "calc(var(--appkit-z-modal) + 5)" }, children: [_jsxs("div", { className: "flex gap-3 mb-4", children: [_jsx("span", { className: "flex-shrink-0 w-10 h-10 rounded-full bg-[var(--appkit-color-warning-surface)] flex items-center justify-center", children: _jsx(AlertTriangle, { className: "w-5 h-5 text-[var(--appkit-color-warning)]" }) }), _jsxs("div", { children: [_jsx("p", { className: "font-semibold text-[var(--appkit-color-text)]", children: "Unsaved changes" }), _jsx("p", { className: "text-sm text-[var(--appkit-color-text-muted)] mt-1", children: "You have unsaved changes. Leave without saving?" })] })] }), _jsxs("div", { className: "flex gap-2 justify-end", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => setShowUnsaved(false), children: "Stay" }), _jsx(Button, { variant: "danger", size: "sm", onClick: () => { setShowUnsaved(false); onClose(); }, children: "Leave" })] })] })] }))] }));
|
|
103
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type QuickFieldType = "text" | "number" | "select" | "toggle" | "date" | "textarea" | "email" | "url";
|
|
3
|
+
export interface QuickFieldDef {
|
|
4
|
+
name: string;
|
|
5
|
+
label: string;
|
|
6
|
+
type: QuickFieldType;
|
|
7
|
+
options?: {
|
|
8
|
+
value: string;
|
|
9
|
+
label: string;
|
|
10
|
+
}[];
|
|
11
|
+
required?: boolean;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
helperText?: string;
|
|
14
|
+
defaultValue?: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface QuickFormDrawerProps {
|
|
17
|
+
isOpen: boolean;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
title: string;
|
|
20
|
+
fields: QuickFieldDef[];
|
|
21
|
+
defaultValues?: Record<string, unknown>;
|
|
22
|
+
onSubmit: (values: Record<string, unknown>) => void | Promise<void>;
|
|
23
|
+
submitLabel?: string;
|
|
24
|
+
cancelLabel?: string;
|
|
25
|
+
isLoading?: boolean;
|
|
26
|
+
/** Extra content rendered below auto-generated fields. */
|
|
27
|
+
renderExtra?: (values: Record<string, unknown>, onChange: (name: string, value: unknown) => void) => ReactNode;
|
|
28
|
+
}
|
|
29
|
+
export declare function QuickFormDrawer({ isOpen, onClose, title, fields, defaultValues, onSubmit, submitLabel, cancelLabel, isLoading, renderExtra, }: QuickFormDrawerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { X } from "lucide-react";
|
|
5
|
+
import { Button } from "../../ui/components/Button";
|
|
6
|
+
import { FormField } from "../../ui/components/FormField";
|
|
7
|
+
import { Toggle } from "../../ui/components/Toggle";
|
|
8
|
+
function initValues(fields, defaults = {}) {
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const f of fields) {
|
|
11
|
+
out[f.name] =
|
|
12
|
+
f.name in defaults
|
|
13
|
+
? defaults[f.name]
|
|
14
|
+
: (f.defaultValue ?? (f.type === "toggle" ? false : ""));
|
|
15
|
+
}
|
|
16
|
+
return out;
|
|
17
|
+
}
|
|
18
|
+
const FOCUSABLE = 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
19
|
+
export function QuickFormDrawer({ isOpen, onClose, title, fields, defaultValues, onSubmit, submitLabel = "Save", cancelLabel = "Cancel", isLoading = false, renderExtra, }) {
|
|
20
|
+
const drawerRef = useRef(null);
|
|
21
|
+
const [values, setValues] = useState(() => initValues(fields, defaultValues));
|
|
22
|
+
const [errors, setErrors] = useState({});
|
|
23
|
+
const [submitting, setSubmitting] = useState(false);
|
|
24
|
+
// Re-initialise when defaultValues change (e.g. edit mode)
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (isOpen)
|
|
27
|
+
setValues(initValues(fields, defaultValues));
|
|
28
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
+
}, [isOpen]);
|
|
30
|
+
const set = (name, value) => {
|
|
31
|
+
setValues((prev) => ({ ...prev, [name]: value }));
|
|
32
|
+
if (errors[name])
|
|
33
|
+
setErrors((prev) => { const n = { ...prev }; delete n[name]; return n; });
|
|
34
|
+
};
|
|
35
|
+
const validate = () => {
|
|
36
|
+
const errs = {};
|
|
37
|
+
for (const f of fields) {
|
|
38
|
+
if (f.required) {
|
|
39
|
+
const v = values[f.name];
|
|
40
|
+
if (v === undefined || v === null || v === "") {
|
|
41
|
+
errs[f.name] = `${f.label} is required`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
setErrors(errs);
|
|
46
|
+
return Object.keys(errs).length === 0;
|
|
47
|
+
};
|
|
48
|
+
const handleSubmit = useCallback(async (e) => {
|
|
49
|
+
e?.preventDefault();
|
|
50
|
+
if (!validate())
|
|
51
|
+
return;
|
|
52
|
+
setSubmitting(true);
|
|
53
|
+
try {
|
|
54
|
+
await onSubmit(values);
|
|
55
|
+
setValues(initValues(fields, defaultValues));
|
|
56
|
+
setErrors({});
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
setSubmitting(false);
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
[values, fields, defaultValues, onSubmit]);
|
|
64
|
+
const handleClose = useCallback(() => {
|
|
65
|
+
setValues(initValues(fields, defaultValues));
|
|
66
|
+
setErrors({});
|
|
67
|
+
onClose();
|
|
68
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
|
+
}, [fields, defaultValues, onClose]);
|
|
70
|
+
// Keyboard: Esc → close; Tab → trap focus
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!isOpen)
|
|
73
|
+
return;
|
|
74
|
+
const handle = (e) => {
|
|
75
|
+
if (e.key === "Escape") {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
handleClose();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (e.key === "Tab" && drawerRef.current) {
|
|
81
|
+
const els = Array.from(drawerRef.current.querySelectorAll(FOCUSABLE));
|
|
82
|
+
if (!els.length) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (e.shiftKey) {
|
|
87
|
+
if (document.activeElement === els[0]) {
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
els[els.length - 1].focus();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (document.activeElement === els[els.length - 1]) {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
els[0].focus();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
document.addEventListener("keydown", handle);
|
|
101
|
+
return () => document.removeEventListener("keydown", handle);
|
|
102
|
+
}, [isOpen, handleClose]);
|
|
103
|
+
if (!isOpen)
|
|
104
|
+
return null;
|
|
105
|
+
const busy = submitting || isLoading;
|
|
106
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 bg-black/40 backdrop-blur-[2px]", style: { zIndex: "calc(var(--appkit-z-modal) + 1)" }, "aria-hidden": "true", onClick: handleClose }), _jsxs("div", { ref: drawerRef, role: "dialog", "aria-modal": "true", "aria-label": title, className: "fixed inset-y-0 right-0 flex flex-col bg-[var(--appkit-color-surface)] shadow-2xl w-full lg:w-[40%]", style: { zIndex: "calc(var(--appkit-z-modal) + 2)" }, children: [_jsxs("div", { className: "flex-shrink-0 flex items-center gap-3 px-4 py-4 border-b border-[var(--appkit-color-border)]", children: [_jsx("p", { className: "flex-1 text-base font-semibold text-[var(--appkit-color-text)]", children: title }), _jsx("button", { type: "button", onClick: handleClose, "aria-label": "Close", className: "rounded-lg p-1.5 text-[var(--appkit-color-text-muted)] hover:bg-[var(--appkit-color-border-subtle)] transition-colors", children: _jsx(X, { className: "w-5 h-5" }) })] }), _jsxs("form", { className: "flex-1 overflow-y-auto px-4 py-5 space-y-4", onSubmit: handleSubmit, noValidate: true, children: [fields.map((field) => {
|
|
107
|
+
const value = values[field.name];
|
|
108
|
+
if (field.type === "toggle") {
|
|
109
|
+
return (_jsxs("div", { className: "space-y-1", children: [_jsx(Toggle, { checked: !!value, onChange: (checked) => set(field.name, checked), label: field.label }), field.helperText && (_jsx("p", { className: "text-xs text-[var(--appkit-color-text-muted)]", children: field.helperText }))] }, field.name));
|
|
110
|
+
}
|
|
111
|
+
return (_jsxs("div", { children: [_jsx(FormField, { name: field.name, label: field.label, type: field.type === "textarea"
|
|
112
|
+
? "textarea"
|
|
113
|
+
: field.type === "select"
|
|
114
|
+
? "select"
|
|
115
|
+
: "text", value: String(value ?? ""), onChange: (v) => set(field.name, field.type === "number" ? Number(v) : v), options: field.options, placeholder: field.placeholder, disabled: busy, error: errors[field.name] }), field.helperText && !errors[field.name] && (_jsx("p", { className: "mt-1 text-xs text-[var(--appkit-color-text-muted)]", children: field.helperText }))] }, field.name));
|
|
116
|
+
}), renderExtra?.(values, set)] }), _jsxs("div", { className: "flex-shrink-0 flex items-center justify-between gap-2 px-4 py-4 border-t border-[var(--appkit-color-border)] bg-[var(--appkit-color-bg)]", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: handleClose, disabled: busy, children: cancelLabel }), _jsxs(Button, { variant: "primary", size: "sm", onClick: () => void handleSubmit(), disabled: busy, isLoading: busy, children: [submitLabel, " \u2192"] })] })] })] }));
|
|
117
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface StepDef<T extends object = Record<string, unknown>> {
|
|
3
|
+
label: string;
|
|
4
|
+
render: (props: {
|
|
5
|
+
values: T;
|
|
6
|
+
onChange: (partial: Partial<T>) => void;
|
|
7
|
+
errors: Record<string, string>;
|
|
8
|
+
}) => ReactNode;
|
|
9
|
+
/** Returns an error message string if invalid, or null/undefined if valid. */
|
|
10
|
+
validate?: (values: T) => string | null | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface StepFormProps<T extends object = Record<string, unknown>> {
|
|
13
|
+
steps: StepDef<T>[];
|
|
14
|
+
values: T;
|
|
15
|
+
onChange: (partial: Partial<T>) => void;
|
|
16
|
+
onComplete: () => void | Promise<void>;
|
|
17
|
+
completeLabel?: string;
|
|
18
|
+
isLoading?: boolean;
|
|
19
|
+
/** localStorage key to persist current step (optional). */
|
|
20
|
+
formId?: string;
|
|
21
|
+
/** Current step index (0-based). Controlled from outside. */
|
|
22
|
+
currentStep: number;
|
|
23
|
+
onStepChange: (step: number) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface StepFormActionsProps {
|
|
26
|
+
currentStep: number;
|
|
27
|
+
totalSteps: number;
|
|
28
|
+
onNext: () => void;
|
|
29
|
+
onPrev?: () => void;
|
|
30
|
+
completeLabel?: string;
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Standalone step nav bar — use as `renderBottomBar` in FormShell. */
|
|
35
|
+
export declare function StepFormActions({ currentStep, totalSteps, onNext, onPrev, completeLabel, isLoading, disabled, }: StepFormActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
/** Step indicator bar shown above step content. */
|
|
37
|
+
export declare function StepIndicator({ steps, currentStep, onStepClick, }: {
|
|
38
|
+
steps: {
|
|
39
|
+
label: string;
|
|
40
|
+
}[];
|
|
41
|
+
currentStep: number;
|
|
42
|
+
onStepClick?: (index: number) => void;
|
|
43
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export declare function StepForm<T extends object = Record<string, unknown>>({ steps, values, onChange, onComplete, completeLabel, isLoading, formId, currentStep, onStepChange, }: StepFormProps<T>): import("react/jsx-runtime").JSX.Element;
|