@mohasinac/appkit 2.7.59 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/filters/filter-load-options.d.ts +4 -5
- package/dist/_internal/server/features/auctions/og.js +8 -32
- package/dist/_internal/server/features/blog/og.js +10 -49
- package/dist/_internal/server/features/checkout/actions.js +6 -0
- package/dist/_internal/server/features/classified/og.js +9 -51
- package/dist/_internal/server/features/digital-code/actions.d.ts +11 -0
- package/dist/_internal/server/features/digital-code/actions.js +30 -0
- package/dist/_internal/server/features/digital-code/index.d.ts +1 -0
- package/dist/_internal/server/features/digital-code/index.js +1 -0
- package/dist/_internal/server/features/digital-code/og.js +9 -51
- package/dist/_internal/server/features/events/og.js +10 -49
- package/dist/_internal/server/features/item-requests/data.d.ts +17 -0
- package/dist/_internal/server/features/item-requests/data.js +20 -0
- package/dist/_internal/server/features/item-requests/index.d.ts +2 -0
- package/dist/_internal/server/features/item-requests/index.js +2 -0
- package/dist/_internal/server/features/item-requests/og.d.ts +40 -0
- package/dist/_internal/server/features/item-requests/og.js +136 -0
- package/dist/_internal/server/features/live/actions.d.ts +5 -0
- package/dist/_internal/server/features/live/actions.js +24 -0
- package/dist/_internal/server/features/live/index.d.ts +1 -0
- package/dist/_internal/server/features/live/index.js +1 -0
- package/dist/_internal/server/features/live/og.js +9 -51
- package/dist/_internal/server/features/media/contextGuards.js +19 -8
- package/dist/_internal/server/features/pre-orders/og.js +8 -32
- package/dist/_internal/server/features/prize-draws/data.d.ts +17 -0
- package/dist/_internal/server/features/prize-draws/data.js +20 -0
- package/dist/_internal/server/features/prize-draws/index.d.ts +2 -0
- package/dist/_internal/server/features/prize-draws/index.js +2 -0
- package/dist/_internal/server/features/prize-draws/og.d.ts +30 -0
- package/dist/_internal/server/features/prize-draws/og.js +50 -0
- package/dist/_internal/server/features/products/og.js +8 -33
- package/dist/_internal/server/features/seo/og-layout.d.ts +42 -0
- package/dist/_internal/server/features/seo/og-layout.js +69 -0
- package/dist/_internal/server/features/stores/og.js +8 -41
- package/dist/_internal/server/features/sublisting-categories/og.js +11 -42
- package/dist/client.d.ts +10 -6
- package/dist/client.js +7 -3
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/notification-types.d.ts +20 -0
- package/dist/constants/notification-types.js +37 -0
- package/dist/constants/pagination-presets.d.ts +39 -0
- package/dist/constants/pagination-presets.js +38 -0
- package/dist/errors/messages.d.ts +0 -4
- package/dist/errors/messages.js +0 -4
- package/dist/features/account/components/UserOffersPanel.js +1 -1
- package/dist/features/account/components/UserSupportView.d.ts +1 -2
- package/dist/features/account/components/UserSupportView.js +9 -1
- package/dist/features/admin/actions/admin-actions.js +16 -1
- package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +2 -3
- package/dist/features/admin/components/AdminAllEventEntriesView.js +50 -83
- package/dist/features/admin/components/AdminBidsView.d.ts +2 -3
- package/dist/features/admin/components/AdminBidsView.js +64 -98
- package/dist/features/admin/components/AdminBlogView.d.ts +3 -7
- package/dist/features/admin/components/AdminBlogView.js +53 -83
- package/dist/features/admin/components/AdminBrandsView.d.ts +2 -3
- package/dist/features/admin/components/AdminBrandsView.js +84 -83
- package/dist/features/admin/components/AdminBundlesView.js +82 -125
- package/dist/features/admin/components/AdminCarouselView.d.ts +2 -2
- package/dist/features/admin/components/AdminCarouselView.js +17 -52
- package/dist/features/admin/components/AdminCartsView.d.ts +2 -3
- package/dist/features/admin/components/AdminCartsView.js +39 -88
- package/dist/features/admin/components/AdminCategoriesView.d.ts +3 -3
- package/dist/features/admin/components/AdminCategoriesView.js +98 -92
- package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
- package/dist/features/admin/components/AdminClassifiedView.d.ts +3 -0
- package/dist/features/admin/components/AdminClassifiedView.js +44 -0
- package/dist/features/admin/components/AdminContactView.d.ts +2 -2
- package/dist/features/admin/components/AdminContactView.js +104 -111
- package/dist/features/admin/components/AdminCouponsView.d.ts +3 -6
- package/dist/features/admin/components/AdminCouponsView.js +66 -86
- package/dist/features/admin/components/AdminDigitalCodesView.d.ts +3 -0
- package/dist/features/admin/components/AdminDigitalCodesView.js +51 -0
- package/dist/features/admin/components/AdminFaqsView.d.ts +4 -4
- package/dist/features/admin/components/AdminFaqsView.js +77 -33
- package/dist/features/admin/components/AdminFeaturesView.d.ts +2 -3
- package/dist/features/admin/components/AdminFeaturesView.js +57 -70
- package/dist/features/admin/components/AdminGroupedListingsView.d.ts +3 -0
- package/dist/features/admin/components/AdminGroupedListingsView.js +43 -0
- package/dist/features/admin/components/AdminHistoryView.d.ts +2 -3
- package/dist/features/admin/components/AdminHistoryView.js +35 -52
- package/dist/features/admin/components/AdminListingScaffold.d.ts +2 -2
- package/dist/features/admin/components/AdminListingScaffold.js +3 -3
- package/dist/features/admin/components/AdminLiveView.d.ts +3 -0
- package/dist/features/admin/components/AdminLiveView.js +50 -0
- package/dist/features/admin/components/AdminNewsletterView.d.ts +2 -2
- package/dist/features/admin/components/AdminNewsletterView.js +67 -97
- package/dist/features/admin/components/AdminNotificationsView.d.ts +2 -3
- package/dist/features/admin/components/AdminNotificationsView.js +67 -93
- package/dist/features/admin/components/AdminOrderEditorView.js +10 -10
- package/dist/features/admin/components/AdminOrdersView.d.ts +2 -3
- package/dist/features/admin/components/AdminOrdersView.js +93 -107
- package/dist/features/admin/components/AdminPayoutsView.d.ts +2 -3
- package/dist/features/admin/components/AdminPayoutsView.js +51 -91
- package/dist/features/admin/components/AdminPrizeDrawsView.d.ts +2 -3
- package/dist/features/admin/components/AdminPrizeDrawsView.js +39 -76
- package/dist/features/admin/components/AdminProductEditorView.js +3 -3
- package/dist/features/admin/components/AdminProductsView.d.ts +4 -4
- package/dist/features/admin/components/AdminProductsView.js +167 -163
- package/dist/features/admin/components/AdminReturnRequestsView.d.ts +1 -1
- package/dist/features/admin/components/AdminReturnRequestsView.js +64 -66
- package/dist/features/admin/components/AdminReviewsView.d.ts +3 -7
- package/dist/features/admin/components/AdminReviewsView.js +94 -110
- package/dist/features/admin/components/AdminScammersView.d.ts +2 -3
- package/dist/features/admin/components/AdminScammersView.js +53 -97
- package/dist/features/admin/components/AdminSectionsView.js +1 -1
- package/dist/features/admin/components/AdminSessionsView.d.ts +2 -3
- package/dist/features/admin/components/AdminSessionsView.js +62 -89
- package/dist/features/admin/components/AdminStoreAddressesView.d.ts +1 -1
- package/dist/features/admin/components/AdminStoreAddressesView.js +39 -53
- package/dist/features/admin/components/AdminStoreEditorView.js +21 -8
- package/dist/features/admin/components/AdminStoresView.d.ts +2 -3
- package/dist/features/admin/components/AdminStoresView.js +67 -99
- package/dist/features/admin/components/AdminSublistingCategoriesView.d.ts +1 -1
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +28 -44
- package/dist/features/admin/components/AdminSupportTicketDetailView.d.ts +10 -1
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +191 -5
- package/dist/features/admin/components/AdminSupportTicketsView.d.ts +2 -3
- package/dist/features/admin/components/AdminSupportTicketsView.js +65 -96
- package/dist/features/admin/components/AdminTeamView.d.ts +2 -2
- package/dist/features/admin/components/AdminTeamView.js +40 -74
- package/dist/features/admin/components/AdminUserEditorView.d.ts +11 -1
- package/dist/features/admin/components/AdminUserEditorView.js +80 -6
- package/dist/features/admin/components/AdminUsersView.d.ts +2 -3
- package/dist/features/admin/components/AdminUsersView.js +108 -100
- package/dist/features/admin/components/AdminViewCards.d.ts +1 -1
- package/dist/features/admin/components/AdminWishlistsView.d.ts +2 -3
- package/dist/features/admin/components/AdminWishlistsView.js +36 -62
- package/dist/features/admin/components/DataListingView.d.ts +122 -0
- package/dist/features/admin/components/DataListingView.js +66 -0
- package/dist/features/admin/components/index.d.ts +10 -4
- package/dist/features/admin/components/index.js +6 -2
- package/dist/features/admin/constants/filter-tabs.d.ts +23 -17
- package/dist/features/admin/constants/filter-tabs.js +21 -17
- package/dist/features/admin/hooks/useAdminListing.d.ts +1 -0
- package/dist/features/admin/hooks/useAdminListing.js +1 -1
- package/dist/features/admin/schemas/firestore.js +6 -7
- package/dist/features/auctions/server.d.ts +0 -1
- package/dist/features/auctions/server.js +0 -1
- package/dist/features/auth/actions/realtime-token-actions.js +1 -1
- package/dist/features/auth/repository/user.repository.js +1 -1
- package/dist/features/cart/repository/cart.repository.d.ts +4 -1
- package/dist/features/cart/repository/cart.repository.js +12 -0
- package/dist/features/checkout/hooks/useCheckoutApi.d.ts +0 -2
- package/dist/features/checkout/index.d.ts +1 -1
- package/dist/features/events/components/AdminEventsView.d.ts +3 -3
- package/dist/features/events/components/AdminEventsView.js +50 -86
- package/dist/features/events/components/EventOfferCard.d.ts +19 -0
- package/dist/features/events/components/EventOfferCard.js +29 -0
- package/dist/features/events/components/EventRaffleEntryForm.d.ts +25 -0
- package/dist/features/events/components/EventRaffleEntryForm.js +37 -0
- package/dist/features/events/components/EventRafflesSection.d.ts +1 -4
- package/dist/features/events/components/EventRafflesSection.js +17 -6
- package/dist/features/events/components/EventSaleBanner.d.ts +21 -0
- package/dist/features/events/components/EventSaleBanner.js +18 -0
- package/dist/features/events/components/index.d.ts +6 -0
- package/dist/features/events/components/index.js +4 -0
- package/dist/features/events/repository/event-entry.repository.d.ts +5 -0
- package/dist/features/events/repository/event-entry.repository.js +7 -0
- package/dist/features/filters/AsyncFacetSection.d.ts +1 -1
- package/dist/features/homepage/components/FAQSection.d.ts +0 -5
- package/dist/features/homepage/lib/live-stats.js +1 -1
- package/dist/features/homepage/schemas/firestore.d.ts +0 -2
- package/dist/features/layout/index.d.ts +0 -2
- package/dist/features/layout/index.js +0 -1
- package/dist/features/pre-orders/server.d.ts +0 -1
- package/dist/features/pre-orders/server.js +0 -1
- package/dist/features/products/components/GroupSettingsPanel.js +2 -2
- package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
- package/dist/features/products/components/PrizeDrawsSection.d.ts +1 -4
- package/dist/features/products/components/PrizeDrawsSection.js +17 -6
- package/dist/features/products/components/PrizeRevealModal.js +1 -1
- package/dist/features/products/components/ProductCardMetadataSection.d.ts +11 -0
- package/dist/features/products/components/ProductCardMetadataSection.js +25 -0
- package/dist/features/products/components/ProductDetailPageView.js +3 -1
- package/dist/features/products/components/ProductFeaturesSelector.js +1 -1
- package/dist/features/products/components/ProductGradingTab.d.ts +13 -0
- package/dist/features/products/components/ProductGradingTab.js +25 -0
- package/dist/features/products/components/ProductGrid.js +14 -2
- package/dist/features/products/components/ProductTabsShell.d.ts +5 -1
- package/dist/features/products/components/ProductTabsShell.js +6 -1
- package/dist/features/products/components/index.d.ts +4 -0
- package/dist/features/products/components/index.js +3 -0
- package/dist/features/products/constants/action-defs.d.ts +5 -0
- package/dist/features/products/constants/action-defs.js +52 -32
- package/dist/features/products/constants/sieve.d.ts +24 -4
- package/dist/features/products/constants/sieve.js +20 -11
- package/dist/features/products/schemas/firestore.d.ts +17 -0
- package/dist/features/products/schemas/product-features.validators.d.ts +2 -2
- package/dist/features/products/schemas/product-templates.d.ts +2 -4
- package/dist/features/products/types/index.d.ts +4 -0
- package/dist/features/promotions/server.d.ts +0 -1
- package/dist/features/promotions/server.js +0 -1
- package/dist/features/search/api/route.js +44 -1
- package/dist/features/search/components/Search.js +2 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
- package/dist/features/search/hooks/useNavSuggestions.js +31 -4
- package/dist/features/seller/components/BrandInlineSelect.js +2 -2
- package/dist/features/seller/components/CategoryInlineSelect.js +2 -2
- package/dist/features/seller/components/SellerAddressesView.js +1 -1
- package/dist/features/seller/components/SellerAuctionsView.d.ts +3 -3
- package/dist/features/seller/components/SellerAuctionsView.js +60 -90
- package/dist/features/seller/components/SellerBidsView.js +1 -1
- package/dist/features/seller/components/SellerBundlesView.js +64 -89
- package/dist/features/seller/components/SellerClassifiedView.js +67 -90
- package/dist/features/seller/components/SellerCouponEditorView.js +1 -1
- package/dist/features/seller/components/SellerCouponsView.d.ts +2 -2
- package/dist/features/seller/components/SellerCouponsView.js +45 -84
- package/dist/features/seller/components/SellerDigitalCodesView.js +63 -88
- package/dist/features/seller/components/SellerGroupedListingsView.js +33 -49
- package/dist/features/seller/components/SellerLiveView.js +63 -84
- package/dist/features/seller/components/SellerOffersPanel.js +1 -1
- package/dist/features/seller/components/SellerOffersView.d.ts +2 -2
- package/dist/features/seller/components/SellerOffersView.js +37 -69
- package/dist/features/seller/components/SellerOrdersView.d.ts +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +4 -4
- package/dist/features/seller/components/SellerPayoutMethodsView.js +1 -1
- package/dist/features/seller/components/SellerPayoutsView.d.ts +2 -2
- package/dist/features/seller/components/SellerPayoutsView.js +34 -68
- package/dist/features/seller/components/SellerPreOrdersView.d.ts +2 -2
- package/dist/features/seller/components/SellerPreOrdersView.js +49 -82
- package/dist/features/seller/components/SellerPrizeDrawsView.d.ts +2 -2
- package/dist/features/seller/components/SellerPrizeDrawsView.js +49 -82
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductsView.d.ts +2 -2
- package/dist/features/seller/components/SellerProductsView.js +15 -10
- package/dist/features/seller/components/SellerShippingConfigsView.js +1 -1
- package/dist/features/seller/components/SellerSidebar.d.ts +0 -4
- package/dist/features/seller/components/SellerSidebar.js +0 -2
- package/dist/features/seller/components/SellerStoreCategoriesView.js +1 -1
- package/dist/features/seller/components/SellerTemplatesView.js +2 -2
- package/dist/features/seller/components/SellersListView.d.ts +1 -2
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.d.ts +5 -0
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +2 -8
- package/dist/features/seller/components/index.d.ts +0 -3
- package/dist/features/seller/components/index.js +0 -2
- package/dist/features/seller/server.d.ts +0 -1
- package/dist/features/seller/server.js +0 -1
- package/dist/features/shell/FormShell.d.ts +1 -1
- package/dist/features/shell/FormShell.js +4 -1
- package/dist/features/shell/field-groups/ImageFieldGroup.d.ts +18 -0
- package/dist/features/shell/field-groups/ImageFieldGroup.js +15 -0
- package/dist/features/shell/field-groups/SeoFieldGroup.d.ts +22 -0
- package/dist/features/shell/field-groups/SeoFieldGroup.js +16 -0
- package/dist/features/shell/field-groups/StatusFieldGroup.d.ts +35 -0
- package/dist/features/shell/field-groups/StatusFieldGroup.js +16 -0
- package/dist/features/shell/field-groups/TitleDescriptionGroup.d.ts +40 -0
- package/dist/features/shell/field-groups/TitleDescriptionGroup.js +16 -0
- package/dist/features/shell/field-groups/index.d.ts +13 -0
- package/dist/features/shell/field-groups/index.js +9 -0
- package/dist/features/shell/index.d.ts +2 -0
- package/dist/features/shell/index.js +1 -0
- package/dist/features/stores/components/StoreCapabilitiesGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreFinanceGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreHeader.js +2 -1
- package/dist/features/stores/components/StoreListingsGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreOrdersGuideView.d.ts +1 -2
- package/dist/features/stores/components/StoreScopedSearch.d.ts +16 -0
- package/dist/features/stores/components/StoreScopedSearch.js +27 -0
- package/dist/features/stores/components/StoreSettingsGuideView.d.ts +1 -2
- package/dist/features/stores/server.d.ts +0 -1
- package/dist/features/stores/server.js +0 -1
- package/dist/features/support/schemas/firestore.d.ts +22 -1
- package/dist/features/support/schemas/firestore.js +10 -0
- package/dist/features/wishlist/server.d.ts +0 -1
- package/dist/features/wishlist/server.js +0 -1
- package/dist/index.d.ts +9 -27
- package/dist/index.js +14 -50
- package/dist/next/routing/route-map.d.ts +8 -0
- package/dist/next/routing/route-map.js +4 -0
- package/dist/react/hooks/useListingTypeFlags.d.ts +32 -0
- package/dist/react/hooks/useListingTypeFlags.js +19 -0
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/pii-redact.d.ts +8 -0
- package/dist/security/pii-redact.js +10 -1
- package/dist/seed/grouped-listings-seed-data.d.ts +4 -0
- package/dist/seed/products-preorders-seed-data.d.ts +4 -0
- package/dist/seed/products-prize-draws-seed-data.js +3 -0
- package/dist/seed/site-settings-seed-data.js +5 -5
- package/dist/seed/sub-listings-seed-data.d.ts +4 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +4 -0
- package/dist/styles.css +54 -395
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/BaseListingCard.d.ts +10 -0
- package/dist/ui/components/BaseListingCard.js +17 -1
- package/dist/ui/components/DetailPageGallery.d.ts +32 -0
- package/dist/ui/components/DetailPageGallery.js +47 -0
- package/dist/ui/components/DetailPageHero.d.ts +30 -0
- package/dist/ui/components/DetailPageHero.js +22 -0
- package/dist/ui/components/DetailPageTabs.d.ts +34 -0
- package/dist/ui/components/DetailPageTabs.js +38 -0
- package/dist/ui/components/HorizontalScroller.style.css +15 -2
- package/dist/ui/components/ListingLayout.d.ts +11 -2
- package/dist/ui/components/ListingLayout.js +12 -6
- package/dist/ui/components/PaginatedSelect.d.ts +66 -0
- package/dist/ui/components/PaginatedSelect.js +201 -0
- package/dist/ui/components/PaginatedSelect.style.css +254 -0
- package/dist/ui/components/Semantic.d.ts +0 -4
- package/dist/ui/components/Semantic.js +0 -2
- package/dist/ui/components/SettingsSection.d.ts +47 -0
- package/dist/ui/components/SettingsSection.js +38 -0
- package/dist/ui/components/index.style.css +1 -4
- package/dist/ui/index.d.ts +12 -14
- package/dist/ui/index.js +6 -7
- package/dist/utils/id-generators.d.ts +1 -18
- package/dist/utils/id-generators.js +51 -18
- package/dist/validation/schemas.d.ts +25 -0
- package/dist/validation/schemas.js +28 -0
- package/package.json +1 -1
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import React, { useState, useCallback } from "react";
|
|
4
4
|
import { useEntityDelete } from "../../../react/hooks/useEntityDelete";
|
|
5
|
-
import {
|
|
6
|
-
import { useBulkSelection } from "../../../react/hooks/useBulkSelection";
|
|
7
|
-
import { Alert, Badge, ConfirmDeleteModal, Div, FilterChipGroup, ListingFilterDrawer, ListingToolbar, ListingViewShell, Pagination, RowActionMenu, Text } from "../../../ui";
|
|
5
|
+
import { Badge, ConfirmDeleteModal, FilterChipGroup, ListingLayout, RowActionMenu, Text } from "../../../ui";
|
|
8
6
|
import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
9
7
|
import { SELLER_PRE_ORDER_STATUS_TABS } from "../../admin/constants/filter-tabs";
|
|
10
8
|
import { ROUTES } from "../../../constants";
|
|
11
9
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
12
|
-
import { toRecordArray, toRelativeDate, toRupees, toStringValue,
|
|
13
|
-
import {
|
|
10
|
+
import { toRecordArray, toRelativeDate, toRupees, toStringValue, } from "../../admin/hooks/useAdminListingData";
|
|
11
|
+
import { DataListingView } from "../../admin/components/DataListingView";
|
|
14
12
|
import { useActionDispatch } from "../../../react/hooks/use-action-dispatch";
|
|
15
|
-
const PAGE_SIZE = 25;
|
|
16
|
-
const FILTER_KEYS = ["status"];
|
|
17
|
-
const DEFAULT_SORT = "-createdAt";
|
|
18
|
-
// Hardcoded sieve clause — this view only ever shows pre-orders.
|
|
19
|
-
const LISTING_TYPE_FILTER = "listingType==pre-order";
|
|
20
|
-
const SORT_OPTIONS = [
|
|
21
|
-
{ value: "-createdAt", label: "Newest" },
|
|
22
|
-
{ value: "createdAt", label: "Oldest" },
|
|
23
|
-
{ value: "title", label: "Title A–Z" },
|
|
24
|
-
{ value: "preorderAvailableDate", label: "Delivery Soon" },
|
|
25
|
-
];
|
|
26
|
-
const STATUS_OPTIONS = SELLER_PRE_ORDER_STATUS_TABS;
|
|
27
13
|
const PRE_ORDER_COLUMNS = [
|
|
28
14
|
{
|
|
29
15
|
key: "thumbnail",
|
|
@@ -71,8 +57,6 @@ const PRE_ORDER_COLUMNS = [
|
|
|
71
57
|
},
|
|
72
58
|
];
|
|
73
59
|
export function SellerPreOrdersView({ children, onDelete, ...props }) {
|
|
74
|
-
const hasChildren = React.Children.count(children) > 0;
|
|
75
|
-
const [view, setView] = useState("table");
|
|
76
60
|
const dispatch = useActionDispatch();
|
|
77
61
|
const [deleteTargetId, setDeleteTargetId] = useState(null);
|
|
78
62
|
const { deletingId, handleDelete: performDelete } = useEntityDelete({
|
|
@@ -81,47 +65,29 @@ export function SellerPreOrdersView({ children, onDelete, ...props }) {
|
|
|
81
65
|
successMessage: "Pre-order deleted.",
|
|
82
66
|
fetchOptions: { credentials: "include" },
|
|
83
67
|
});
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}, [pendingFilters, table]);
|
|
99
|
-
const clearFilters = useCallback(() => {
|
|
100
|
-
setPendingFilters(Object.fromEntries(FILTER_KEYS.map((k) => [k, ""])));
|
|
101
|
-
}, []);
|
|
102
|
-
const resetAll = useCallback(() => {
|
|
103
|
-
const updates = { q: "", sort: "" };
|
|
104
|
-
for (const k of FILTER_KEYS)
|
|
105
|
-
updates[k] = "";
|
|
106
|
-
table.setMany(updates);
|
|
107
|
-
setSearchInput("");
|
|
108
|
-
}, [table]);
|
|
109
|
-
const commitSearch = useCallback(() => {
|
|
110
|
-
table.set("q", searchInput.trim());
|
|
111
|
-
}, [searchInput, table]);
|
|
112
|
-
const activeFilterCount = FILTER_KEYS.filter((k) => !!table.get(k)).length;
|
|
113
|
-
const hasActiveState = !!table.get("q") || table.get("sort") !== DEFAULT_SORT || activeFilterCount > 0;
|
|
114
|
-
const statusRaw = table.get("status");
|
|
115
|
-
const statusFilter = statusRaw && statusRaw !== "All" ? `status==${statusRaw}` : undefined;
|
|
116
|
-
const filters = [LISTING_TYPE_FILTER, statusFilter].filter(Boolean).join(",");
|
|
117
|
-
const { rows, total, isLoading, errorMessage } = useSellerListingData({
|
|
68
|
+
const handleDelete = useCallback(async (id) => {
|
|
69
|
+
await performDelete(id);
|
|
70
|
+
setDeleteTargetId(null);
|
|
71
|
+
}, [performDelete]);
|
|
72
|
+
if (React.Children.count(children) > 0) {
|
|
73
|
+
return (_jsx(ListingLayout, { portal: "seller", ...props, children: children }));
|
|
74
|
+
}
|
|
75
|
+
const config = {
|
|
76
|
+
portal: "seller",
|
|
77
|
+
title: "Pre-Orders",
|
|
78
|
+
searchPlaceholder: "Search pre-orders by name…",
|
|
79
|
+
emptyLabel: "No pre-orders listed yet",
|
|
80
|
+
filterKeys: ["status"],
|
|
81
|
+
defaultSort: "-createdAt",
|
|
118
82
|
queryKey: ["seller", "pre-orders", "listing"],
|
|
119
83
|
endpoint: SELLER_ENDPOINTS.PRODUCTS,
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
84
|
+
sortOptions: [
|
|
85
|
+
{ value: "-createdAt", label: "Newest" },
|
|
86
|
+
{ value: "createdAt", label: "Oldest" },
|
|
87
|
+
{ value: "title", label: "Title A–Z" },
|
|
88
|
+
{ value: "preorderAvailableDate", label: "Delivery Soon" },
|
|
89
|
+
],
|
|
90
|
+
columns: PRE_ORDER_COLUMNS,
|
|
125
91
|
mapRows: (response) => toRecordArray(response.products).map((item, index) => {
|
|
126
92
|
const priceRaw = typeof item.price === "number" ? item.price : 0;
|
|
127
93
|
return {
|
|
@@ -138,27 +104,28 @@ export function SellerPreOrdersView({ children, onDelete, ...props }) {
|
|
|
138
104
|
};
|
|
139
105
|
}),
|
|
140
106
|
getTotal: (response, mappedRows) => typeof response.meta?.total === "number" ? response.meta.total : mappedRows.length,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
107
|
+
buildFilters: (state) => {
|
|
108
|
+
const status = state.status && state.status !== "All" ? `status==${state.status}` : null;
|
|
109
|
+
return ["listingType==pre-order", status].filter(Boolean).join(",");
|
|
110
|
+
},
|
|
111
|
+
getRowHref: (row) => String(ROUTES.STORE.PRE_ORDERS_EDIT(row.id)),
|
|
112
|
+
renderRowActions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
113
|
+
{
|
|
114
|
+
label: ACTIONS.STORE["edit-listing"].label,
|
|
115
|
+
onClick: () => void dispatch({ type: "NAVIGATE", href: String(ROUTES.STORE.PRE_ORDERS_EDIT(row.id)) }),
|
|
116
|
+
},
|
|
117
|
+
...(onDelete
|
|
118
|
+
? [
|
|
119
|
+
{
|
|
120
|
+
label: ACTIONS.STORE["delete-listing"].label,
|
|
121
|
+
destructive: true,
|
|
122
|
+
onClick: () => setDeleteTargetId(row.id),
|
|
123
|
+
disabled: deletingId === row.id,
|
|
124
|
+
},
|
|
125
|
+
]
|
|
126
|
+
: []),
|
|
127
|
+
] })),
|
|
128
|
+
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsx(FilterChipGroup, { label: "Status", tabs: SELLER_PRE_ORDER_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) })),
|
|
129
|
+
};
|
|
130
|
+
return (_jsxs(_Fragment, { children: [_jsx(DataListingView, { config: config }), deleteTargetId && (_jsx(ConfirmDeleteModal, { isOpen: true, title: "Delete Pre-Order", message: "Are you sure you want to delete this pre-order listing? This cannot be undone.", onConfirm: () => handleDelete(deleteTargetId), onClose: () => setDeleteTargetId(null), isDeleting: deletingId === deleteTargetId }))] }));
|
|
164
131
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface SellerPrizeDrawsViewProps extends
|
|
1
|
+
import type { ListingLayoutProps } from "../../../ui";
|
|
2
|
+
export interface SellerPrizeDrawsViewProps extends ListingLayoutProps {
|
|
3
3
|
onDelete?: (id: string) => Promise<void>;
|
|
4
4
|
}
|
|
5
5
|
export declare function SellerPrizeDrawsView({ children, onDelete, ...props }: SellerPrizeDrawsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import React, { useState, useCallback } from "react";
|
|
4
4
|
import { useEntityDelete } from "../../../react/hooks/useEntityDelete";
|
|
5
|
-
import {
|
|
6
|
-
import { useBulkSelection } from "../../../react/hooks/useBulkSelection";
|
|
7
|
-
import { Alert, Badge, ConfirmDeleteModal, Div, FilterChipGroup, ListingFilterDrawer, ListingToolbar, ListingViewShell, Pagination, RowActionMenu, Text } from "../../../ui";
|
|
5
|
+
import { Badge, ConfirmDeleteModal, FilterChipGroup, ListingLayout, RowActionMenu, Text } from "../../../ui";
|
|
8
6
|
import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
9
7
|
import { SELLER_PRIZE_DRAW_STATUS_TABS } from "../../admin/constants/filter-tabs";
|
|
10
8
|
import { ROUTES } from "../../../constants";
|
|
11
9
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
12
|
-
import { toRecordArray, toRelativeDate, toRupees, toStringValue,
|
|
13
|
-
import {
|
|
10
|
+
import { toRecordArray, toRelativeDate, toRupees, toStringValue, } from "../../admin/hooks/useAdminListingData";
|
|
11
|
+
import { DataListingView } from "../../admin/components/DataListingView";
|
|
14
12
|
import { useActionDispatch } from "../../../react/hooks/use-action-dispatch";
|
|
15
|
-
const PAGE_SIZE = 25;
|
|
16
|
-
const FILTER_KEYS = ["status"];
|
|
17
|
-
const DEFAULT_SORT = "-createdAt";
|
|
18
|
-
// Hardcoded sieve clause — this view only ever shows prize draws.
|
|
19
|
-
const LISTING_TYPE_FILTER = "listingType==prize-draw";
|
|
20
|
-
const SORT_OPTIONS = [
|
|
21
|
-
{ value: "-createdAt", label: "Newest" },
|
|
22
|
-
{ value: "createdAt", label: "Oldest" },
|
|
23
|
-
{ value: "title", label: "Title A–Z" },
|
|
24
|
-
{ value: "prizeDrawEndDate", label: "Draw Date Soon" },
|
|
25
|
-
];
|
|
26
|
-
const STATUS_OPTIONS = SELLER_PRIZE_DRAW_STATUS_TABS;
|
|
27
13
|
const STATUS_VARIANT = {
|
|
28
14
|
active: "success",
|
|
29
15
|
draft: "default",
|
|
@@ -68,8 +54,6 @@ const PRIZE_DRAW_COLUMNS = [
|
|
|
68
54
|
},
|
|
69
55
|
];
|
|
70
56
|
export function SellerPrizeDrawsView({ children, onDelete, ...props }) {
|
|
71
|
-
const hasChildren = React.Children.count(children) > 0;
|
|
72
|
-
const [view, setView] = useState("table");
|
|
73
57
|
const dispatch = useActionDispatch();
|
|
74
58
|
const [deleteTargetId, setDeleteTargetId] = useState(null);
|
|
75
59
|
const { deletingId, handleDelete: performDelete } = useEntityDelete({
|
|
@@ -78,47 +62,29 @@ export function SellerPrizeDrawsView({ children, onDelete, ...props }) {
|
|
|
78
62
|
successMessage: "Prize draw deleted.",
|
|
79
63
|
fetchOptions: { credentials: "include" },
|
|
80
64
|
});
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}, [pendingFilters, table]);
|
|
96
|
-
const clearFilters = useCallback(() => {
|
|
97
|
-
setPendingFilters(Object.fromEntries(FILTER_KEYS.map((k) => [k, ""])));
|
|
98
|
-
}, []);
|
|
99
|
-
const resetAll = useCallback(() => {
|
|
100
|
-
const updates = { q: "", sort: "" };
|
|
101
|
-
for (const k of FILTER_KEYS)
|
|
102
|
-
updates[k] = "";
|
|
103
|
-
table.setMany(updates);
|
|
104
|
-
setSearchInput("");
|
|
105
|
-
}, [table]);
|
|
106
|
-
const commitSearch = useCallback(() => {
|
|
107
|
-
table.set("q", searchInput.trim());
|
|
108
|
-
}, [searchInput, table]);
|
|
109
|
-
const activeFilterCount = FILTER_KEYS.filter((k) => !!table.get(k)).length;
|
|
110
|
-
const hasActiveState = !!table.get("q") || table.get("sort") !== DEFAULT_SORT || activeFilterCount > 0;
|
|
111
|
-
const statusRaw = table.get("status");
|
|
112
|
-
const statusFilter = statusRaw && statusRaw !== "All" ? `status==${statusRaw}` : undefined;
|
|
113
|
-
const filters = [LISTING_TYPE_FILTER, statusFilter].filter(Boolean).join(",");
|
|
114
|
-
const { rows, total, isLoading, errorMessage } = useSellerListingData({
|
|
65
|
+
const handleDelete = useCallback(async (id) => {
|
|
66
|
+
await performDelete(id);
|
|
67
|
+
setDeleteTargetId(null);
|
|
68
|
+
}, [performDelete]);
|
|
69
|
+
if (React.Children.count(children) > 0) {
|
|
70
|
+
return (_jsx(ListingLayout, { portal: "seller", ...props, children: children }));
|
|
71
|
+
}
|
|
72
|
+
const config = {
|
|
73
|
+
portal: "seller",
|
|
74
|
+
title: "Prize Draws",
|
|
75
|
+
searchPlaceholder: "Search prize draws by name…",
|
|
76
|
+
emptyLabel: "No prize draws listed yet",
|
|
77
|
+
filterKeys: ["status"],
|
|
78
|
+
defaultSort: "-createdAt",
|
|
115
79
|
queryKey: ["seller", "prize-draws", "listing"],
|
|
116
80
|
endpoint: SELLER_ENDPOINTS.PRODUCTS,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
81
|
+
sortOptions: [
|
|
82
|
+
{ value: "-createdAt", label: "Newest" },
|
|
83
|
+
{ value: "createdAt", label: "Oldest" },
|
|
84
|
+
{ value: "title", label: "Title A–Z" },
|
|
85
|
+
{ value: "prizeDrawEndDate", label: "Draw Date Soon" },
|
|
86
|
+
],
|
|
87
|
+
columns: PRIZE_DRAW_COLUMNS,
|
|
122
88
|
mapRows: (response) => toRecordArray(response.products).map((item, index) => {
|
|
123
89
|
const priceRaw = typeof item.price === "number" ? item.price : 0;
|
|
124
90
|
return {
|
|
@@ -135,27 +101,28 @@ export function SellerPrizeDrawsView({ children, onDelete, ...props }) {
|
|
|
135
101
|
};
|
|
136
102
|
}),
|
|
137
103
|
getTotal: (response, mappedRows) => typeof response.meta?.total === "number" ? response.meta.total : mappedRows.length,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
104
|
+
buildFilters: (state) => {
|
|
105
|
+
const status = state.status && state.status !== "All" ? `status==${state.status}` : null;
|
|
106
|
+
return ["listingType==prize-draw", status].filter(Boolean).join(",");
|
|
107
|
+
},
|
|
108
|
+
getRowHref: (row) => String(ROUTES.STORE.PRIZE_DRAWS_EDIT(row.id)),
|
|
109
|
+
renderRowActions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
110
|
+
{
|
|
111
|
+
label: ACTIONS.STORE["edit-listing"].label,
|
|
112
|
+
onClick: () => void dispatch({ type: "NAVIGATE", href: String(ROUTES.STORE.PRIZE_DRAWS_EDIT(row.id)) }),
|
|
113
|
+
},
|
|
114
|
+
...(onDelete
|
|
115
|
+
? [
|
|
116
|
+
{
|
|
117
|
+
label: ACTIONS.STORE["delete-listing"].label,
|
|
118
|
+
destructive: true,
|
|
119
|
+
onClick: () => setDeleteTargetId(row.id),
|
|
120
|
+
disabled: deletingId === row.id,
|
|
121
|
+
},
|
|
122
|
+
]
|
|
123
|
+
: []),
|
|
124
|
+
] })),
|
|
125
|
+
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsx(FilterChipGroup, { label: "Status", tabs: SELLER_PRIZE_DRAW_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) })),
|
|
126
|
+
};
|
|
127
|
+
return (_jsxs(_Fragment, { children: [_jsx(DataListingView, { config: config }), deleteTargetId && (_jsx(ConfirmDeleteModal, { isOpen: true, title: "Delete Prize Draw", message: "Are you sure you want to delete this prize draw listing? This cannot be undone.", onConfirm: () => handleDelete(deleteTargetId), onClose: () => setDeleteTargetId(null), isDeleting: deletingId === deleteTargetId }))] }));
|
|
161
128
|
}
|
|
@@ -70,7 +70,7 @@ export interface SellerProductShellProps {
|
|
|
70
70
|
onDiscard?: () => void;
|
|
71
71
|
isLoading?: boolean;
|
|
72
72
|
storeSlug?: string;
|
|
73
|
-
/** Render a custom category selector (e.g.
|
|
73
|
+
/** Render a custom category selector (e.g. PaginatedSelect with createLabel). */
|
|
74
74
|
renderCategorySelector?: (props: {
|
|
75
75
|
value: string;
|
|
76
76
|
onChange: (v: string) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface SellerProductsViewProps extends
|
|
1
|
+
import type { ListingLayoutProps } from "../../../ui";
|
|
2
|
+
export interface SellerProductsViewProps extends ListingLayoutProps {
|
|
3
3
|
onDeleteProduct?: (id: string) => Promise<void>;
|
|
4
4
|
/** S-STORE-2-E — "New Listing" toolbar button. */
|
|
5
5
|
onCreateClick?: () => void;
|
|
@@ -7,7 +7,7 @@ import { Eye, EyeOff, Pencil, Trash2, Printer, MapPin } from "lucide-react";
|
|
|
7
7
|
import { PhysicalLocationModal } from "./PhysicalLocationModal";
|
|
8
8
|
import { useUrlTable } from "../../../react/hooks/useUrlTable";
|
|
9
9
|
import { useBulkSelection } from "../../../react/hooks/useBulkSelection";
|
|
10
|
-
import { Alert, Badge, BulkActionBar, Button, Div, ListingToolbar,
|
|
10
|
+
import { Alert, Badge, BulkActionBar, Button, Div, ListingToolbar, ListingLayout, Pagination, Row, Span, Text, useToast } from "../../../ui";
|
|
11
11
|
import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
12
12
|
import { SELLER_PRODUCT_STATUS_TABS } from "../../admin/constants/filter-tabs";
|
|
13
13
|
import { ROUTES } from "../../../constants";
|
|
@@ -16,6 +16,7 @@ import { toRecordArray, toRelativeDate, toStringValue, useSellerListingData, } f
|
|
|
16
16
|
import { DataTable } from "../../admin/components/DataTable";
|
|
17
17
|
import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
|
|
18
18
|
import { buildBulkAction } from "../../../_internal/shared/actions/bulk-helpers";
|
|
19
|
+
import { useListingTypeFlags } from "../../../react/hooks/useListingTypeFlags";
|
|
19
20
|
import { SellerProductsCards } from "./SellerProductsCards";
|
|
20
21
|
import { SellerProductsFilterDrawer } from "./SellerProductsFilterDrawer";
|
|
21
22
|
import { KIND_BADGE_VARIANT } from "./seller-products-styles";
|
|
@@ -44,17 +45,21 @@ const STATUS_OPTIONS = SELLER_PRODUCT_STATUS_TABS;
|
|
|
44
45
|
// S-STORE-2-A — `<TypeDropdown>` replaces the legacy chip strip. Same width on
|
|
45
46
|
// mobile, narrower on desktop. Drives the `?listingType=` query param.
|
|
46
47
|
function TypeDropdown({ active, onChange, }) {
|
|
48
|
+
const flags = useListingTypeFlags();
|
|
49
|
+
// W1-43 — hide disabled types so the seller can't filter for an
|
|
50
|
+
// inactive listing surface. Bundle is a categoryType (not a listingType)
|
|
51
|
+
// and stays unconditionally available.
|
|
47
52
|
const options = [
|
|
48
53
|
{ value: "all", label: "All listings" },
|
|
49
|
-
{ value: "standard", label: "Standard" },
|
|
50
|
-
{ value: "auction", label: "Auction" },
|
|
51
|
-
{ value: "pre-order", label: "Pre-order" },
|
|
52
|
-
{ value: "prize-draw", label: "Prize Draw" },
|
|
54
|
+
flags.standard && { value: "standard", label: "Standard" },
|
|
55
|
+
flags.auction && { value: "auction", label: "Auction" },
|
|
56
|
+
flags["pre-order"] && { value: "pre-order", label: "Pre-order" },
|
|
57
|
+
flags["prize-draw"] && { value: "prize-draw", label: "Prize Draw" },
|
|
53
58
|
{ value: "bundle", label: "Bundle" },
|
|
54
|
-
{ value: "classified", label: "Classified" },
|
|
55
|
-
{ value: "digital-code", label: "Digital Code" },
|
|
56
|
-
{ value: "live", label: "Live" },
|
|
57
|
-
];
|
|
59
|
+
flags.classified && { value: "classified", label: "Classified" },
|
|
60
|
+
flags["digital-code"] && { value: "digital-code", label: "Digital Code" },
|
|
61
|
+
flags.live && { value: "live", label: "Live" },
|
|
62
|
+
].filter(Boolean);
|
|
58
63
|
return (_jsxs(Row, { className: "gap-2 px-3 lg:px-4 py-2 border-b border-[var(--appkit-color-border)]", children: [_jsx(Text, { className: "text-xs font-semibold uppercase tracking-wide text-[var(--appkit-color-text-muted)]", children: "Listing type" }), _jsx("select", { value: active, onChange: (e) => onChange(e.target.value), className: "rounded border border-[var(--appkit-color-border)] bg-transparent px-2 py-1 text-sm sm:max-w-xs", "aria-label": "Filter by listing type", children: options.map((o) => (_jsx("option", { value: o.value, children: o.label }, o.value))) })] }));
|
|
59
64
|
}
|
|
60
65
|
const PRODUCT_COLUMNS = [
|
|
@@ -207,7 +212,7 @@ export function SellerProductsView({ onDeleteProduct, onCreateClick, children, .
|
|
|
207
212
|
.map((r) => statusOverrides.has(r.id) ? { ...r, status: statusOverrides.get(r.id) } : r);
|
|
208
213
|
const selection = useBulkSelection({ items: visibleRows, keyExtractor: (r) => r.id });
|
|
209
214
|
if (hasChildren) {
|
|
210
|
-
return (_jsx(
|
|
215
|
+
return (_jsx(ListingLayout, { portal: "seller", ...props, children: children }));
|
|
211
216
|
}
|
|
212
217
|
const handleEdit = (row) => {
|
|
213
218
|
const href = row.listingKind === "auction"
|
|
@@ -123,7 +123,7 @@ export function SellerShippingConfigsView({ onCreateClick, onEditClick, onDelete
|
|
|
123
123
|
window.location.href = String(ROUTES.STORE.SHIPPING_CONFIGS_EDIT(id));
|
|
124
124
|
}
|
|
125
125
|
}, [onEditClick]);
|
|
126
|
-
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: 0, searchValue: searchInput, searchPlaceholder: "Search shipping configs...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: table.get(TABLE_KEYS.SORT) || DEFAULT_SORT, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: handleCreate, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Config" })] }) }), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-
|
|
126
|
+
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: 0, searchValue: searchInput, searchPlaceholder: "Search shipping configs...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: table.get(TABLE_KEYS.SORT) || DEFAULT_SORT, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: handleCreate, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Config" })] }) }), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-error/20 bg-error-surface px-4 py-3 text-sm text-error", children: errorMessage })), isLoading ? (_jsx(Div, { className: "space-y-2", children: Array.from({ length: 3 }).map((_, i) => (_jsx(Div, { className: "h-14 animate-pulse rounded-xl border border-zinc-100 dark:border-slate-700 bg-zinc-50 dark:bg-slate-800" }, i))) })) : rows.length === 0 ? (_jsxs(Div, { className: "py-16 text-center", children: [_jsx(Text, { className: "text-zinc-400 dark:text-zinc-400", children: "No shipping configs yet \u2014 define your first shipping rule" }), _jsx("div", { className: "mt-4", children: _jsx(Button, { size: "sm", onClick: handleCreate, children: "Add shipping config" }) })] })) : (_jsx(DataTable, { columns: COLUMNS, data: rows, keyExtractor: (r) => r.id, actions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
127
127
|
{
|
|
128
128
|
label: ACTIONS.STORE["edit-listing"].label,
|
|
129
129
|
onClick: () => handleEdit(row.id),
|
|
@@ -25,8 +25,4 @@ interface StoreSidebarProps {
|
|
|
25
25
|
className?: string;
|
|
26
26
|
}
|
|
27
27
|
export declare function StoreSidebar({ items, groups, activeHref, storeName, storeLogoURL, mobileOpen, desktopOpen, variant, onCloseMobile, onToggle, }: StoreSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
/** @deprecated Use StoreSidebar */
|
|
29
|
-
export declare const SellerSidebar: typeof StoreSidebar;
|
|
30
|
-
/** @deprecated Use StoreNavItem */
|
|
31
|
-
export type SellerNavItem = StoreNavItem;
|
|
32
28
|
export {};
|
|
@@ -62,5 +62,3 @@ export function StoreSidebar({ items, groups, activeHref, storeName, storeLogoUR
|
|
|
62
62
|
return (_jsxs(_Fragment, { children: [mounted && mobileOpen &&
|
|
63
63
|
createPortal(_jsx(DrawerPanel, { title: panelTitle, onClose: close, children: navContent }), document.body), _jsx("div", { className: "md:hidden", children: _jsx(BottomSheet, { open: mobileOpen, onClose: close, title: panelTitle, children: groups ? (_jsx(GroupsContent, { groups: groups, activeHref: activeHref, storeName: storeName, storeLogoURL: storeLogoURL, onItemClick: close })) : (_jsx(FlatContent, { items: items, activeHref: activeHref, storeName: storeName, storeLogoURL: storeLogoURL, onItemClick: close })) }) })] }));
|
|
64
64
|
}
|
|
65
|
-
/** @deprecated Use StoreSidebar */
|
|
66
|
-
export const SellerSidebar = StoreSidebar;
|
|
@@ -94,7 +94,7 @@ export function SellerStoreCategoriesView({ onCreateClick, onEditClick, onDelete
|
|
|
94
94
|
window.location.href = String(ROUTES.STORE.STORE_CATEGORIES_NEW);
|
|
95
95
|
};
|
|
96
96
|
useBottomActions(selection.selectedCount > 0 ? { bulk: { selectedCount: selection.selectedCount, onClearSelection: selection.clearSelection, actions: bulkActions } } : {});
|
|
97
|
-
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: 0, searchValue: searchInput, searchPlaceholder: "Search categories by label...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: table.get(TABLE_KEYS.SORT) || DEFAULT_SORT, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, showTableView: true, view: "table", onViewChange: () => { }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: handleNavigateNew, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Category" })] }) }), totalPages > 1 && (_jsx("div", { className: "sticky top-[calc(var(--header-height,0px)+44px)] z-10 flex justify-center bg-white/95 dark:bg-slate-900/95 backdrop-blur-sm border-b border-zinc-200 dark:border-slate-700 px-3 py-1.5", children: _jsx(Pagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: (p) => table.setPage(p) }) })), selection.selectedCount > 0 && (_jsx(BulkActionBar, { selectedCount: selection.selectedCount, actions: bulkActions, onClearSelection: selection.clearSelection })), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-
|
|
97
|
+
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: 0, searchValue: searchInput, searchPlaceholder: "Search categories by label...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: table.get(TABLE_KEYS.SORT) || DEFAULT_SORT, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, showTableView: true, view: "table", onViewChange: () => { }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: handleNavigateNew, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Category" })] }) }), totalPages > 1 && (_jsx("div", { className: "sticky top-[calc(var(--header-height,0px)+44px)] z-10 flex justify-center bg-white/95 dark:bg-slate-900/95 backdrop-blur-sm border-b border-zinc-200 dark:border-slate-700 px-3 py-1.5", children: _jsx(Pagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: (p) => table.setPage(p) }) })), selection.selectedCount > 0 && (_jsx(BulkActionBar, { selectedCount: selection.selectedCount, actions: bulkActions, onClearSelection: selection.clearSelection })), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-error/20 bg-error-surface px-4 py-3 text-sm text-error", children: errorMessage })), isLoading ? (_jsx(Div, { className: "space-y-2", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Div, { className: "h-14 animate-pulse rounded-xl border border-zinc-100 dark:border-slate-700 bg-zinc-50 dark:bg-slate-800" }, i))) })) : rows.length === 0 ? (_jsx(Div, { className: "py-16 text-center", children: _jsx(Text, { className: "text-zinc-400 dark:text-zinc-400", children: "No categories yet \u2014 add your first storefront category" }) })) : (_jsx(DataTable, { columns: COLUMNS, data: rows, keyExtractor: (r) => r.id, selectable: bulkActions.length > 0, selectedIds: selection.selectedIds, onSelectionChange: (ids) => selection.setSelectedIds(ids), actions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
98
98
|
{
|
|
99
99
|
label: ACTIONS.STORE["edit-listing"].label,
|
|
100
100
|
onClick: () => onEditClick
|
|
@@ -241,7 +241,7 @@ export function SellerTemplatesView({ onDelete, onBulkDelete, onDuplicate, }) {
|
|
|
241
241
|
}),
|
|
242
242
|
];
|
|
243
243
|
useBottomActions(selection.selectedCount > 0 ? { bulk: { selectedCount: selection.selectedCount, onClearSelection: selection.clearSelection, actions: bulkActions } } : {});
|
|
244
|
-
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: filterActiveCount, onFiltersClick: openFilters, searchValue: searchInput, searchPlaceholder: "Search templates by name...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: sort, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, showTableView: true, view: "table", onViewChange: () => { }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: openCreate, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Template" })] }) }), totalPages > 1 && (_jsx("div", { className: "sticky top-[calc(var(--header-height,0px)+44px)] z-10 flex justify-center bg-white/95 dark:bg-slate-900/95 backdrop-blur-sm border-b border-zinc-200 dark:border-slate-700 px-3 py-1.5", children: _jsx(Pagination, { currentPage: safePage, totalPages: totalPages, onPageChange: (p) => table.setPage(p) }) })), selection.selectedCount > 0 && (_jsx(BulkActionBar, { selectedCount: selection.selectedCount, actions: bulkActions, onClearSelection: selection.clearSelection })), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-
|
|
244
|
+
return (_jsxs("div", { className: "min-h-screen", children: [_jsx(ListingToolbar, { filterCount: filterActiveCount, onFiltersClick: openFilters, searchValue: searchInput, searchPlaceholder: "Search templates by name...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, sortValue: sort, sortOptions: SORT_OPTIONS, onSortChange: (v) => { table.set(TABLE_KEYS.SORT, v); }, showTableView: true, view: "table", onViewChange: () => { }, onResetAll: resetAll, hasActiveState: hasActiveState, extra: _jsxs(Button, { size: "sm", onClick: openCreate, className: "flex items-center gap-1.5", children: [_jsx(Plus, { className: "h-4 w-4" }), _jsx("span", { children: "New Template" })] }) }), totalPages > 1 && (_jsx("div", { className: "sticky top-[calc(var(--header-height,0px)+44px)] z-10 flex justify-center bg-white/95 dark:bg-slate-900/95 backdrop-blur-sm border-b border-zinc-200 dark:border-slate-700 px-3 py-1.5", children: _jsx(Pagination, { currentPage: safePage, totalPages: totalPages, onPageChange: (p) => table.setPage(p) }) })), selection.selectedCount > 0 && (_jsx(BulkActionBar, { selectedCount: selection.selectedCount, actions: bulkActions, onClearSelection: selection.clearSelection })), _jsxs("div", { className: "py-4 px-3 sm:px-4", children: [errorMessage && (_jsx(Div, { className: "mb-4 rounded-xl border border-error/20 bg-error-surface px-4 py-3 text-sm text-error", children: errorMessage })), isLoading ? (_jsx(Div, { className: "space-y-2", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Div, { className: "h-14 animate-pulse rounded-xl border border-zinc-100 dark:border-slate-700 bg-zinc-50 dark:bg-slate-800" }, i))) })) : pageRows.length === 0 ? (_jsx(Div, { className: "py-16 text-center", children: _jsx(Text, { className: "text-zinc-400 dark:text-zinc-400", children: q || conditionFilter
|
|
245
245
|
? "No templates match your search or filters"
|
|
246
246
|
: "No templates yet — add your first product template" }) })) : (_jsx(DataTable, { columns: COLUMNS, data: pageRows, keyExtractor: (r) => r.id, selectable: bulkActions.length > 0, selectedIds: selection.selectedIds, onSelectionChange: (ids) => selection.setSelectedIds(ids), actions: (row) => (_jsx(RowActionMenu, { actions: [
|
|
247
247
|
{
|
|
@@ -259,5 +259,5 @@ export function SellerTemplatesView({ onDelete, onBulkDelete, onDuplicate, }) {
|
|
|
259
259
|
onClick: () => setDeleteTargetId(row.id),
|
|
260
260
|
disabled: deletingId === row.id,
|
|
261
261
|
},
|
|
262
|
-
] })) }))] }), _jsx(FilterDrawer, { open: filterOpen, onOpen: openFilters, onClose: () => setFilterOpen(false), onApply: applyFilters, onReset: () => setPendingCondition(""), activeCount: filterActiveCount, hideTrigger: true, children: _jsx(Div, { className: "space-y-4 p-4", children: _jsxs(Div, { children: [_jsx("label", { className: "mb-1.5 block text-sm font-medium text-zinc-700 dark:text-zinc-300", children: "Condition" }), _jsx(Select, { value: pendingCondition, onValueChange: setPendingCondition, options: CONDITION_OPTIONS })] }) }) }), _jsx(SideDrawer, { isOpen: drawerOpen, onClose: closeDrawer, title: drawerMode === "create" ? "New Template" : "Edit Template", mode: drawerMode, isDirty: draft.name !== "" || draft.category !== "" || draft.brand !== "", footer: _jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx(Button, { size: "sm", variant: "ghost", onClick: closeDrawer, disabled: saving, children: "Cancel" }), _jsx(Button, { size: "sm", isLoading: saving, onClick: handleSave, children: drawerMode === "create" ? "Create Template" : "Save Changes" })] }), children: _jsxs(Stack, { gap: "md", children: [savingError && (_jsx(Div, { className: "rounded-lg border border-
|
|
262
|
+
] })) }))] }), _jsx(FilterDrawer, { open: filterOpen, onOpen: openFilters, onClose: () => setFilterOpen(false), onApply: applyFilters, onReset: () => setPendingCondition(""), activeCount: filterActiveCount, hideTrigger: true, children: _jsx(Div, { className: "space-y-4 p-4", children: _jsxs(Div, { children: [_jsx("label", { className: "mb-1.5 block text-sm font-medium text-zinc-700 dark:text-zinc-300", children: "Condition" }), _jsx(Select, { value: pendingCondition, onValueChange: setPendingCondition, options: CONDITION_OPTIONS })] }) }) }), _jsx(SideDrawer, { isOpen: drawerOpen, onClose: closeDrawer, title: drawerMode === "create" ? "New Template" : "Edit Template", mode: drawerMode, isDirty: draft.name !== "" || draft.category !== "" || draft.brand !== "", footer: _jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx(Button, { size: "sm", variant: "ghost", onClick: closeDrawer, disabled: saving, children: "Cancel" }), _jsx(Button, { size: "sm", isLoading: saving, onClick: handleSave, children: drawerMode === "create" ? "Create Template" : "Save Changes" })] }), children: _jsxs(Stack, { gap: "md", children: [savingError && (_jsx(Div, { className: "rounded-lg border border-error/20 bg-error-surface px-3 py-2 text-sm text-error", children: savingError })), _jsx(Input, { id: "tpl-name", label: "Template Name", value: draft.name, onChange: (e) => setDraft((d) => ({ ...d, name: e.target.value })), placeholder: "e.g. Pok\u00E9mon Card Standard", required: true, autoComplete: "off" }), _jsx(Input, { id: "tpl-description", label: "Description (optional)", value: draft.description, onChange: (e) => setDraft((d) => ({ ...d, description: e.target.value })), placeholder: "Short note about when to use this template", autoComplete: "off" }), _jsx(Input, { id: "tpl-category", label: "Category (optional)", value: draft.category, onChange: (e) => setDraft((d) => ({ ...d, category: e.target.value })), placeholder: "e.g. trading-cards", autoComplete: "off" }), _jsx(Input, { id: "tpl-brand", label: "Brand (optional)", value: draft.brand, onChange: (e) => setDraft((d) => ({ ...d, brand: e.target.value })), placeholder: "e.g. Pok\u00E9mon Company", autoComplete: "off" }), _jsx(Select, { label: "Condition (optional)", name: "tpl-condition", value: draft.condition, onValueChange: (v) => setDraft((d) => ({ ...d, condition: v })), options: CONDITION_OPTIONS })] }) }), deleteTargetId && (_jsx(ConfirmDeleteModal, { isOpen: true, title: "Delete Template", message: "Are you sure you want to delete this template? This cannot be undone.", onConfirm: () => handleDelete(deleteTargetId), onClose: () => setDeleteTargetId(null), isDeleting: deletingId === deleteTargetId }))] }));
|
|
263
263
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { SlottedListingViewProps } from "../../../ui";
|
|
2
|
-
export
|
|
3
|
-
}
|
|
2
|
+
export type SellersListViewProps = SlottedListingViewProps;
|
|
4
3
|
export declare function SellersListView(props: SellersListViewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { SellerAnalyticsSummary } from "../../types";
|
|
2
|
+
/**
|
|
3
|
+
* W1-32 — SellerAnalyticsStats now composes AdminStatCard (the only live
|
|
4
|
+
* stat-card primitive after W1-30) instead of redefining its own inline
|
|
5
|
+
* StatCard. Same gradient presets, same visual identity.
|
|
6
|
+
*/
|
|
2
7
|
export interface SellerAnalyticsStatsLabels {
|
|
3
8
|
totalRevenue?: string;
|
|
4
9
|
totalOrders?: string;
|
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { TrendingUp, ShoppingBag, Package, CheckCircle } from "lucide-react";
|
|
4
4
|
import { Div } from "../../../../ui";
|
|
5
|
-
|
|
6
|
-
const BRAND_GRAD = "linear-gradient(135deg,var(--appkit-color-primary-700,#1343de) 0%,var(--appkit-color-cobalt,#3570fc) 55%,var(--appkit-color-secondary-400,#84e122) 100%)";
|
|
7
|
-
const AMBER_GRAD = "linear-gradient(135deg,var(--appkit-color-amber-500,#f59e0b) 0%,var(--appkit-color-amber-600,#d97706) 100%)";
|
|
8
|
-
const BLUE_GRAD = "linear-gradient(135deg,var(--appkit-color-primary-700,#1343de) 0%,var(--appkit-color-cobalt,#3570fc) 100%)";
|
|
9
|
-
function StatCard({ label, value, gradient, Icon }) {
|
|
10
|
-
return (_jsxs(Div, { className: "relative rounded-xl border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] overflow-hidden shadow-sm hover:shadow-md transition-shadow", children: [_jsx("div", { className: "absolute top-0 left-0 right-0 h-[3px]", style: { background: gradient }, "aria-hidden": "true" }), _jsxs(Div, { className: "px-5 pb-5 pt-6 flex items-start justify-between gap-3", children: [_jsxs(Div, { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-[11px] font-semibold uppercase tracking-widest text-[var(--appkit-color-text-muted)]", children: label }), _jsx("div", { className: "mt-2 text-2xl font-bold text-[var(--appkit-color-text)] tabular-nums leading-none", children: value })] }), _jsx("div", { className: "flex-shrink-0 w-10 h-10 rounded-lg flex items-center justify-center", style: { background: gradient }, children: _jsx(Icon, { className: "w-5 h-5 text-white" }) })] })] }));
|
|
11
|
-
}
|
|
5
|
+
import { AdminStatCard } from "../../../admin/components/analytics/AdminStatCard";
|
|
12
6
|
export function SellerAnalyticsStats({ summary, labels = {}, formatRevenue = (amount) => String(amount), className = "", }) {
|
|
13
|
-
return (_jsxs(Div, { className: `grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 ${className}`, children: [_jsx(
|
|
7
|
+
return (_jsxs(Div, { className: `grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 ${className}`, children: [_jsx(AdminStatCard, { label: labels.totalRevenue ?? "Total Revenue", value: formatRevenue(summary.totalRevenue), gradient: "green", icon: _jsx(TrendingUp, { className: "w-5 h-5 text-white" }) }), _jsx(AdminStatCard, { label: labels.totalOrders ?? "Total Orders", value: String(summary.totalOrders), gradient: "brand", icon: _jsx(ShoppingBag, { className: "w-5 h-5 text-white" }) }), _jsx(AdminStatCard, { label: labels.totalProducts ?? "Total Products", value: String(summary.totalProducts), gradient: "amber", icon: _jsx(Package, { className: "w-5 h-5 text-white" }) }), _jsx(AdminStatCard, { label: labels.publishedProducts ?? "Published", value: String(summary.publishedProducts), gradient: "blue", icon: _jsx(CheckCircle, { className: "w-5 h-5 text-white" }) })] }));
|
|
14
8
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export { SellerStatCard } from "./SellerStatCard";
|
|
2
|
-
export { SellerSidebar } from "./SellerSidebar";
|
|
3
|
-
export type { SellerNavItem } from "./SellerSidebar";
|
|
4
1
|
export { SellerDashboardView } from "./SellerDashboardView";
|
|
5
2
|
export type { SellerDashboardViewProps } from "./SellerDashboardView";
|
|
6
3
|
export { SellerProductsView } from "./SellerProductsView";
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { SellerStatCard } from "./SellerStatCard";
|
|
2
|
-
export { SellerSidebar } from "./SellerSidebar";
|
|
3
1
|
export { SellerDashboardView } from "./SellerDashboardView";
|
|
4
2
|
export { SellerProductsView } from "./SellerProductsView";
|
|
5
3
|
export { SellerAuctionsView } from "./SellerAuctionsView";
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Server-only entry point for seller repositories and API route handlers.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./actions";
|
|
7
|
-
export { SellerRepository, PayoutsRepository, } from "./repository/seller.repository";
|
|
8
7
|
export { OfferRepository, offerRepository, } from "./repository/offer.repository";
|
|
9
8
|
export { GET as sellerProductsGET } from "./api/products/route";
|
|
10
9
|
export { GET as sellerStoreGET } from "./api/store/route";
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Server-only entry point for seller repositories and API route handlers.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./actions";
|
|
7
|
-
export { SellerRepository, PayoutsRepository, } from "./repository/seller.repository";
|
|
8
7
|
export { OfferRepository, offerRepository, } from "./repository/offer.repository";
|
|
9
8
|
export { GET as sellerProductsGET } from "./api/products/route";
|
|
10
9
|
export { GET as sellerStoreGET } from "./api/store/route";
|
|
@@ -40,4 +40,4 @@ export interface UseFormShellResult {
|
|
|
40
40
|
markClean: () => void;
|
|
41
41
|
}
|
|
42
42
|
export declare function useFormShell(): UseFormShellResult;
|
|
43
|
-
export declare function FormShell({ isOpen, onClose, title, breadcrumb, isDirty, isLoading, sections, onSaveDraft, onPublish, saveLabel, publishLabel, renderBottomBar, previewSlot, splitPreview, children, }: FormShellProps): import("react/jsx-runtime").JSX.Element | null;
|
|
43
|
+
export declare function FormShell({ isOpen, onClose, title, breadcrumb, isDirty, isLoading, sections, onSaveDraft, onPublish, saveLabel, publishLabel, renderBottomBar, previewSlot, splitPreview: splitPreviewProp, children, }: FormShellProps): import("react/jsx-runtime").JSX.Element | null;
|