@mohasinac/appkit 4.30.19 → 4.31.1
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/layout/useSidebarSearch.d.ts +21 -5
- package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -87
- package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
- package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
- package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
- package/dist/_internal/server/features/auth/permissions.js +3 -2
- package/dist/_internal/server/features/categories/data.js +15 -4
- package/dist/_internal/server/features/classified/index.d.ts +0 -1
- package/dist/_internal/server/features/classified/index.js +0 -1
- package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
- package/dist/_internal/server/features/digital-code/index.js +0 -1
- package/dist/_internal/server/features/live/index.d.ts +0 -1
- package/dist/_internal/server/features/live/index.js +0 -1
- package/dist/_internal/server/features/products/data.js +15 -5
- package/dist/_internal/server/features/products/list-public.d.ts +9 -0
- package/dist/_internal/server/features/products/list-public.js +95 -7
- package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
- package/dist/_internal/server/features/site-settings/adapters.js +8 -5
- package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
- package/dist/_internal/server/features/tester/visibility.js +2 -2
- package/dist/_internal/server/functions/scheduled.d.ts +3 -1
- package/dist/_internal/server/functions/scheduled.js +27 -1
- package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
- package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +69 -22
- package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
- package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
- package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
- package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
- package/dist/_internal/shared/features/layout/types.d.ts +37 -1
- package/dist/_internal/shared/features/layout/types.js +19 -1
- package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
- package/dist/_internal/shared/features/notifications/action-url.js +47 -0
- package/dist/_internal/shared/features/offers/config.d.ts +65 -0
- package/dist/_internal/shared/features/offers/config.js +73 -2
- package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
- package/dist/_internal/shared/features/orders/schema.js +22 -2
- package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
- package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
- package/dist/_internal/shared/listing-types/capabilities.js +6 -1
- package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
- package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
- package/dist/client.d.ts +37 -20
- package/dist/client.js +36 -14
- package/dist/configs/next.js +10 -2
- package/dist/constants/api-endpoints.d.ts +18 -54
- package/dist/constants/api-endpoints.js +6 -26
- package/dist/constants/field-names.d.ts +6 -24
- package/dist/constants/field-names.js +10 -27
- package/dist/constants/geo/countries.d.ts +50 -0
- package/dist/constants/geo/countries.js +129 -0
- package/dist/constants/geo/subdivisions.d.ts +13 -0
- package/dist/constants/geo/subdivisions.js +104 -0
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -2
- package/dist/constants/table-keys.d.ts +24 -0
- package/dist/constants/table-keys.js +28 -0
- package/dist/contracts/extend.d.ts +0 -9
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/realtime-session.js +7 -0
- package/dist/core/browser.d.ts +1 -1
- package/dist/core/browser.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/site-config.d.ts +0 -3
- package/dist/core/site-config.js +0 -3
- package/dist/errors/messages.d.ts +0 -8
- package/dist/errors/messages.js +0 -9
- package/dist/features/about/schemas/index.d.ts +8 -8
- package/dist/features/account/components/AddressFilters.js +32 -11
- package/dist/features/account/components/AddressForm.d.ts +26 -25
- package/dist/features/account/components/AddressForm.js +81 -103
- package/dist/features/account/components/AddressesIndexListing.js +8 -4
- package/dist/features/account/components/UserSidebar.d.ts +3 -4
- package/dist/features/account/components/UserSupportView.js +89 -58
- package/dist/features/account/components/index.d.ts +1 -7
- package/dist/features/account/components/index.js +0 -3
- package/dist/features/account/hooks/useAddresses.d.ts +4 -3
- package/dist/features/account/hooks/useAddresses.js +4 -6
- package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
- package/dist/features/account/hooks/useCollapsedSections.js +211 -38
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +0 -3
- package/dist/features/account/index.js +0 -3
- package/dist/features/account/schemas/index.d.ts +0 -92
- package/dist/features/account/schemas/index.js +42 -20
- package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
- package/dist/features/addresses/components/AddressLocationFields.js +41 -0
- package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
- package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
- package/dist/features/addresses/schemas/address-form.d.ts +423 -0
- package/dist/features/addresses/schemas/address-form.js +212 -0
- package/dist/features/addresses/schemas/index.d.ts +1 -0
- package/dist/features/addresses/schemas/index.js +8 -0
- package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
- package/dist/features/admin/actions/index.d.ts +0 -1
- package/dist/features/admin/actions/index.js +0 -1
- package/dist/features/admin/actions/notification-actions.js +1 -41
- package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
- package/dist/features/admin/components/AdminActionIndexView.js +128 -0
- package/dist/features/admin/components/AdminAdEditorView.js +159 -163
- package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
- package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
- package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
- package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
- package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
- package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
- package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
- package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
- package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
- package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
- package/dist/features/admin/components/AdminNavEditorView.js +69 -44
- package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
- package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
- package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
- package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
- package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
- package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
- package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
- package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
- package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
- package/dist/features/admin/components/index.d.ts +2 -2
- package/dist/features/admin/components/index.js +1 -1
- package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
- package/dist/features/admin/constants/site-settings-tabs.js +152 -0
- package/dist/features/admin/index.d.ts +0 -3
- package/dist/features/admin/index.js +0 -2
- package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
- package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
- package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
- package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
- package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
- package/dist/features/admin/schemas/admin-user-form.js +7 -0
- package/dist/features/admin/schemas/firestore.d.ts +48 -95
- package/dist/features/admin/schemas/firestore.js +15 -151
- package/dist/features/admin/schemas/nav-item-form.js +9 -2
- package/dist/features/admin/server.d.ts +0 -4
- package/dist/features/admin/server.js +0 -2
- package/dist/features/admin/types/index.d.ts +0 -7
- package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
- package/dist/features/analytics/repository/page-views.repository.js +24 -0
- package/dist/features/auth/actions/index.d.ts +0 -1
- package/dist/features/auth/actions/index.js +0 -1
- package/dist/features/auth/actions/realtime-token-actions.js +1 -12
- package/dist/features/auth/auth-helpers.js +5 -7
- package/dist/features/auth/components/Guards.js +2 -1
- package/dist/features/auth/components/LoginForm.d.ts +0 -2
- package/dist/features/auth/components/LoginForm.js +1 -3
- package/dist/features/auth/components/RegisterForm.js +62 -19
- package/dist/features/auth/permissions/constants.d.ts +27 -1
- package/dist/features/auth/role-predicates.d.ts +75 -7
- package/dist/features/auth/role-predicates.js +28 -2
- package/dist/features/auth/schemas/firestore.d.ts +22 -0
- package/dist/features/auth/schemas/index.d.ts +1 -1
- package/dist/features/auth/schemas/index.js +44 -8
- package/dist/features/auth/types/index.d.ts +14 -1
- package/dist/features/blog/api/route.js +10 -2
- package/dist/features/blog/components/BlogIndexListing.js +1 -1
- package/dist/features/blog/hooks/useBlog.js +2 -2
- package/dist/features/blog/schemas/index.d.ts +4 -0
- package/dist/features/blog/schemas/index.js +2 -0
- package/dist/features/blog/types/index.d.ts +1 -1
- package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
- package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
- package/dist/features/catalogue/schemas/validation.d.ts +4 -4
- package/dist/features/catalogue/schemas/validation.js +47 -10
- package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
- package/dist/features/categories/schemas/bundle-form.js +149 -0
- package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
- package/dist/features/classified/components/ClassifiedDetailPageView.js +37 -16
- package/dist/features/consultation/components/ConsultationForm.js +1 -1
- package/dist/features/consultation/schemas/index.js +34 -10
- package/dist/features/corporate/schemas/index.js +36 -15
- package/dist/features/filters/FilterPanel.js +3 -3
- package/dist/features/filters/RangeFilter.d.ts +10 -0
- package/dist/features/filters/RangeFilter.js +41 -4
- package/dist/features/homepage/components/MarketplaceHomepageView.js +24 -5
- package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
- package/dist/features/layout/BottomActions.js +84 -11
- package/dist/features/layout/BottomActionsContext.d.ts +1 -6
- package/dist/features/layout/BottomActionsContext.js +1 -1
- package/dist/features/layout/hooks/useBottomActions.js +2 -2
- package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
- package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
- package/dist/features/lottery/schemas/config-write.d.ts +9 -5
- package/dist/features/lottery/schemas/config-write.js +69 -9
- package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
- package/dist/features/orders/schemas/buyer-forms.js +31 -3
- package/dist/features/orders/schemas/index.d.ts +2 -2
- package/dist/features/products/components/GroupSettingsPanel.js +3 -1
- package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
- package/dist/features/products/components/MakeOfferButton.js +33 -11
- package/dist/features/products/components/ProductDetailActions.js +0 -1
- package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
- package/dist/features/products/components/ProductDetailPageView.js +8 -5
- package/dist/features/products/constants/action-defs.d.ts +1 -2
- package/dist/features/products/constants/action-defs.js +40 -43
- package/dist/features/products/repository/products.repository.d.ts +5 -1
- package/dist/features/products/repository/products.repository.js +23 -1
- package/dist/features/products/schemas/firestore.d.ts +7 -3
- package/dist/features/products/schemas/product-features.validators.js +3 -0
- package/dist/features/promotions/components/CouponCard.js +8 -7
- package/dist/features/scams/schemas/firestore.d.ts +15 -1
- package/dist/features/scams/schemas/report-form.d.ts +5 -5
- package/dist/features/scams/schemas/report-form.js +18 -3
- package/dist/features/search/action-index/derive.d.ts +49 -0
- package/dist/features/search/action-index/derive.js +121 -0
- package/dist/features/search/action-index/repository.d.ts +42 -0
- package/dist/features/search/action-index/repository.js +100 -0
- package/dist/features/search/action-index/settings-entries.d.ts +41 -0
- package/dist/features/search/action-index/settings-entries.js +268 -0
- package/dist/features/search/action-index/types.d.ts +81 -0
- package/dist/features/search/action-index/types.js +102 -0
- package/dist/features/search/action-index/validate-entry.d.ts +34 -0
- package/dist/features/search/action-index/validate-entry.js +114 -0
- package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
- package/dist/features/search/hooks/useNavSuggestions.js +23 -3
- package/dist/features/search/repository/search.repository.js +3 -1
- package/dist/features/seller/actions/offer-actions.js +43 -24
- package/dist/features/seller/actions/seller-actions.js +29 -5
- package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
- package/dist/features/seller/components/CategoryChipPicker.js +12 -0
- package/dist/features/seller/components/SellerAddressesView.js +5 -1
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
- package/dist/features/seller/components/SellerArtView.d.ts +14 -7
- package/dist/features/seller/components/SellerArtView.js +4 -119
- package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
- package/dist/features/seller/components/SellerClassifiedView.js +4 -124
- package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
- package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
- package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
- package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
- package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
- package/dist/features/seller/components/SellerListingTypeView.js +277 -0
- package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
- package/dist/features/seller/components/SellerLiveView.js +4 -126
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
- package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
- package/dist/features/seller/components/SellerStickersView.js +4 -119
- package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
- package/dist/features/seller/components/SellerSupportView.js +100 -0
- package/dist/features/seller/components/index.d.ts +4 -8
- package/dist/features/seller/components/index.js +2 -4
- package/dist/features/seller/index.d.ts +0 -1
- package/dist/features/seller/index.js +0 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
- package/dist/features/seller/schemas/coupon-form.js +155 -23
- package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
- package/dist/features/seller/schemas/offer-forms.js +28 -12
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +2 -2
- package/dist/features/shell/SectionForm.d.ts +19 -1
- package/dist/features/shell/SectionForm.js +104 -17
- package/dist/features/shell/build-sections.d.ts +23 -0
- package/dist/features/shell/build-sections.js +106 -8
- package/dist/features/shell/field-ui-meta.d.ts +44 -0
- package/dist/features/shell/field-ui-meta.js +14 -7
- package/dist/features/shell/form-sections.d.ts +46 -0
- package/dist/features/shell/form-sections.js +114 -0
- package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
- package/dist/features/shipments/schemas/validation.d.ts +2 -2
- package/dist/features/shipments/schemas/validation.js +44 -13
- package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
- package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
- package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
- package/dist/features/stores/actions/store-query-actions.js +3 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
- package/dist/features/support/repository/support.repository.d.ts +21 -0
- package/dist/features/support/repository/support.repository.js +63 -0
- package/dist/features/support/schemas/firestore.d.ts +27 -2
- package/dist/features/support/schemas/firestore.js +2 -0
- package/dist/features/support/schemas/ticket-create-form.js +7 -0
- package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
- package/dist/features/tester/schemas/checklist-item-form.js +109 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
- package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
- package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +275 -29
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +48 -12
- package/dist/http/api-handler.js +2 -1
- package/dist/index.d.ts +24 -103
- package/dist/index.js +33 -141
- package/dist/jobs.d.ts +1 -1
- package/dist/jobs.js +1 -1
- package/dist/monitoring/browser.d.ts +0 -2
- package/dist/monitoring/browser.js +12 -1
- package/dist/monitoring/index.d.ts +0 -2
- package/dist/monitoring/index.js +0 -1
- package/dist/next/api/routeHandler.js +6 -3
- package/dist/next/index.d.ts +7 -2
- package/dist/next/index.js +36 -1
- package/dist/next/middleware/index.d.ts +0 -2
- package/dist/next/middleware/index.js +0 -1
- package/dist/next/routing/route-map.d.ts +8 -7
- package/dist/next/routing/route-map.js +10 -3
- package/dist/providers/db-firebase/admin.js +15 -1
- package/dist/providers/db-firebase/sieve.d.ts +22 -0
- package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
- package/dist/react/hooks/useListingTypeFlags.js +1 -1
- package/dist/react/hooks/usePendingFilters.js +5 -3
- package/dist/react/hooks/usePendingTable.js +15 -3
- package/dist/repositories/index.d.ts +0 -1
- package/dist/repositories/index.js +0 -1
- package/dist/schemas/registry.d.ts +197 -232
- package/dist/schemas/registry.js +5 -6
- package/dist/schemas/webhooks/razorpay.d.ts +50 -50
- package/dist/security/authorization.d.ts +9 -0
- package/dist/security/authorization.js +16 -2
- package/dist/security/browser.d.ts +1 -3
- package/dist/security/browser.js +5 -2
- package/dist/security/index.d.ts +1 -3
- package/dist/security/index.js +19 -2
- package/dist/security/pii-encrypt.js +16 -0
- package/dist/security/pii-schemas.d.ts +0 -14
- package/dist/security/pii-schemas.js +7 -15
- package/dist/seed/_helpers/category-forest.js +2 -2
- package/dist/seed/_helpers/media.d.ts +19 -0
- package/dist/seed/_helpers/media.js +75 -0
- package/dist/seed/blog-posts-seed-data.js +17 -17
- package/dist/seed/carousel-slides-seed-data.js +7 -7
- package/dist/seed/cart-seed-data.js +13 -13
- package/dist/seed/categories-seed-data.js +10 -10
- package/dist/seed/events-seed-data.js +24 -24
- package/dist/seed/factories/product.factory.js +4 -4
- package/dist/seed/factories/store.factory.js +3 -3
- package/dist/seed/factories/user.factory.js +2 -2
- package/dist/seed/grouped-listings-seed-data.js +11 -11
- package/dist/seed/homepage-sections-seed-data.js +2 -2
- package/dist/seed/index.d.ts +0 -1
- package/dist/seed/index.js +0 -1
- package/dist/seed/manifest.d.ts +1 -1
- package/dist/seed/manifest.js +0 -5
- package/dist/seed/notifications-seed-data.js +20 -1
- package/dist/seed/orders-seed-data.js +2 -2
- package/dist/seed/products-art-seed-data.js +16 -16
- package/dist/seed/products-auctions-seed-data.js +34 -34
- package/dist/seed/products-classifieds-seed-data.js +35 -37
- package/dist/seed/products-digital-codes-seed-data.js +20 -20
- package/dist/seed/products-live-items-seed-data.js +11 -11
- package/dist/seed/products-preorders-seed-data.js +13 -13
- package/dist/seed/products-prize-draws-seed-data.js +43 -43
- package/dist/seed/products-standard-seed-data.js +54 -54
- package/dist/seed/products-stickers-seed-data.js +15 -15
- package/dist/seed/reviews-seed-data.js +4 -4
- package/dist/seed/scammers-seed-data.js +3 -3
- package/dist/seed/site-settings-seed-data.js +11 -24
- package/dist/seed/store-extensions-seed-data.js +10 -10
- package/dist/seed/stores-seed-data.js +11 -11
- package/dist/seed/support-tickets-seed-data.d.ts +14 -0
- package/dist/seed/support-tickets-seed-data.js +20 -1
- package/dist/seed/users-seed-data.js +20 -20
- package/dist/server-entry.d.ts +0 -1
- package/dist/server-entry.js +0 -1
- package/dist/server.d.ts +9 -6
- package/dist/server.js +7 -13
- package/dist/styles.css +248 -68
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +2 -2
- package/dist/tokens/themes/default-light.js +2 -2
- package/dist/tokens/tokens.css +24 -4
- package/dist/ui/components/ActionRow.d.ts +50 -0
- package/dist/ui/components/ActionRow.js +53 -0
- package/dist/ui/components/ActionRow.style.css +145 -0
- package/dist/ui/components/Drawer.d.ts +10 -0
- package/dist/ui/components/Drawer.js +2 -1
- package/dist/ui/components/FilterDrawer.js +4 -1
- package/dist/ui/components/FilterDrawer.style.css +6 -12
- package/dist/ui/components/FormActionBar.js +14 -1
- package/dist/ui/components/FormActionBar.style.css +12 -11
- package/dist/ui/components/ListingLayout.js +8 -1
- package/dist/ui/components/ListingLayout.style.css +6 -13
- package/dist/ui/components/Modal.d.ts +15 -1
- package/dist/ui/components/Modal.js +17 -3
- package/dist/ui/components/QuickCreateModal.js +2 -2
- package/dist/ui/components/QuickCreateModal.style.css +78 -84
- package/dist/ui/components/RecordDetailModal.js +2 -2
- package/dist/ui/components/SideDrawer.d.ts +8 -0
- package/dist/ui/components/SideDrawer.js +2 -1
- package/dist/ui/components/SideDrawer.style.css +6 -3
- package/dist/ui/components/SideModal.d.ts +11 -1
- package/dist/ui/components/SideModal.js +3 -2
- package/dist/ui/components/SideModal.style.css +14 -0
- package/dist/ui/components/Typography.style.css +33 -24
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/forms/FormShell.style.css +260 -311
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/schemas.d.ts +0 -19
- package/dist/validation/schemas.js +8 -19
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +3 -6
package/dist/next/index.js
CHANGED
|
@@ -19,7 +19,6 @@ export { withCache, invalidateCache } from "./cache-middleware";
|
|
|
19
19
|
// PII-aware composable middleware chain (Phase 21)
|
|
20
20
|
export { createApiMiddleware, runChain, buildBaseContext, } from "./middleware/chain";
|
|
21
21
|
export { piiScrubberMiddleware } from "./middleware/pii-scrubber";
|
|
22
|
-
export { createPiiRedactorMiddleware } from "./middleware/pii-redactor";
|
|
23
22
|
// Standardized API response helpers
|
|
24
23
|
export { successResponse, errorResponse, ApiErrors } from "./api/api-response";
|
|
25
24
|
// Error UI view components
|
|
@@ -28,3 +27,39 @@ export { ErrorView } from "./components/ErrorView";
|
|
|
28
27
|
export { NotFoundView } from "./components/NotFoundView";
|
|
29
28
|
export { UnauthorizedView } from "./components/UnauthorizedView";
|
|
30
29
|
export { ErrorBoundary } from "./ErrorBoundary";
|
|
30
|
+
/*
|
|
31
|
+
* Pure, isomorphic nav helpers — deliberately re-exported HERE as well as from
|
|
32
|
+
* the main and client entries.
|
|
33
|
+
*
|
|
34
|
+
* 🛑 `src/constants/navigation.tsx` CALLS `navItemId()` at module scope and is
|
|
35
|
+
* imported by BOTH server code (the locale and store layouts, the action index)
|
|
36
|
+
* and client code (every sidebar). That leaves it nowhere to import from:
|
|
37
|
+
*
|
|
38
|
+
* - `@mohasinac/appkit/client` is `"use client"`, so on the server the binding
|
|
39
|
+
* is a client-reference proxy and calling it throws (Root Cause #76). It did
|
|
40
|
+
* — "Attempted to call navItemId() from the server" failed the Vercel build.
|
|
41
|
+
* - the bare `@mohasinac/appkit` entry then trips
|
|
42
|
+
* `audit-client-server-only-leak` on all 57 client components that reach
|
|
43
|
+
* navigation.tsx transitively (Root Cause #6).
|
|
44
|
+
*
|
|
45
|
+
* The two audits pull in opposite directions, and both are right. `./next` is
|
|
46
|
+
* the third door: not `"use client"`, and not a path to firebase-admin — so it
|
|
47
|
+
* satisfies both. This is the same reasoning that keeps `/ui` and `/tokens`
|
|
48
|
+
* separate entries.
|
|
49
|
+
*/
|
|
50
|
+
export { navItemId } from "../_internal/shared/features/layout/types";
|
|
51
|
+
export { matchesNavQuery } from "../_internal/shared/features/layout/matchesNavQuery";
|
|
52
|
+
/*
|
|
53
|
+
* The action-index derivation — same reasoning as the nav helpers above.
|
|
54
|
+
*
|
|
55
|
+
* `src/constants/action-index.ts` calls `buildActionIndexBase()` at module
|
|
56
|
+
* scope and is imported by `GET /api/action-index` (a server route) as well as
|
|
57
|
+
* by `LayoutShellClient` (a client component). Neither the `"use client"` entry
|
|
58
|
+
* nor the bare one works for both; `./next` does.
|
|
59
|
+
*
|
|
60
|
+
* Found by `audit-client-entry-in-server`'s R2 the first time it ran — the same
|
|
61
|
+
* defect as navItemId, one file over, and the next build failure in line.
|
|
62
|
+
*/
|
|
63
|
+
export { buildActionIndexBase, deriveNavEntries, deriveQuickActionEntries, } from "../features/search/action-index/derive";
|
|
64
|
+
export { deriveSettingsEntries } from "../features/search/action-index/settings-entries";
|
|
65
|
+
export { mergeActionIndex, projectActionIndexForViewer, } from "../features/search/action-index/types";
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export type { BaseRequestContext, AuthRequestContext, Middleware, } from "./types";
|
|
2
2
|
export { piiScrubberMiddleware } from "./pii-scrubber";
|
|
3
|
-
export { createPiiRedactorMiddleware } from "./pii-redactor";
|
|
4
|
-
export type { PiiRedactionRule } from "./pii-redactor";
|
|
5
3
|
export { createApiMiddleware, runChain, buildBaseContext } from "./chain";
|
|
6
4
|
export type { CreateApiMiddlewareConfig } from "./chain";
|
|
@@ -149,7 +149,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
149
149
|
readonly ORDER_INVOICE: (id: string) => string;
|
|
150
150
|
readonly ORDER_PAYMENT: (id: string) => string;
|
|
151
151
|
readonly NOTIFICATIONS: "/user/notifications";
|
|
152
|
-
readonly MESSAGES: "/user/messages";
|
|
153
152
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
154
153
|
readonly CLAIMED_COUPONS: "/user/coupons";
|
|
155
154
|
readonly BECOME_SELLER: "/user/become-seller";
|
|
@@ -175,7 +174,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
175
174
|
};
|
|
176
175
|
readonly STORE: {
|
|
177
176
|
readonly DASHBOARD: "/store";
|
|
178
|
-
readonly MESSAGES: "/store/messages";
|
|
179
177
|
readonly PRODUCTS: "/store/products";
|
|
180
178
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
181
179
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -211,6 +209,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
211
209
|
readonly FEATURES_NEW: "/store/features/new";
|
|
212
210
|
readonly FEATURES_EDIT: (id: string) => string;
|
|
213
211
|
readonly SLUG: "/store/slug";
|
|
212
|
+
/** Tickets raised ABOUT this store (W11). Read-only for the seller. */
|
|
213
|
+
readonly SUPPORT: "/store/support";
|
|
214
214
|
readonly BUNDLES: "/store/bundles";
|
|
215
215
|
readonly BUNDLES_NEW: "/store/bundles/new";
|
|
216
216
|
readonly BUNDLES_EDIT: (id: string) => string;
|
|
@@ -282,6 +282,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
282
282
|
readonly CAROUSELS_EDIT: (id: string) => string;
|
|
283
283
|
readonly SECTIONS: "/admin/sections";
|
|
284
284
|
readonly NAVIGATION: "/admin/navigation";
|
|
285
|
+
readonly ACTION_INDEX: "/admin/action-index";
|
|
285
286
|
readonly NAVIGATION_NEW: "/admin/navigation/new";
|
|
286
287
|
readonly NAVIGATION_EDIT: (id: string) => string;
|
|
287
288
|
readonly CATEGORIES: "/admin/categories";
|
|
@@ -333,7 +334,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
333
334
|
readonly EVENT_ENTRIES: (id: string) => string;
|
|
334
335
|
readonly STORES: "/admin/stores";
|
|
335
336
|
readonly STORE_DETAIL: (id: string) => string;
|
|
336
|
-
readonly FEATURE_FLAGS: "/admin/feature-flags";
|
|
337
337
|
readonly COPILOT: "/admin/copilot";
|
|
338
338
|
readonly ADS: "/admin/ads";
|
|
339
339
|
readonly ADS_NEW: "/admin/ads/new";
|
|
@@ -552,7 +552,6 @@ export declare const ROUTES: {
|
|
|
552
552
|
readonly ORDER_INVOICE: (id: string) => string;
|
|
553
553
|
readonly ORDER_PAYMENT: (id: string) => string;
|
|
554
554
|
readonly NOTIFICATIONS: "/user/notifications";
|
|
555
|
-
readonly MESSAGES: "/user/messages";
|
|
556
555
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
557
556
|
readonly CLAIMED_COUPONS: "/user/coupons";
|
|
558
557
|
readonly BECOME_SELLER: "/user/become-seller";
|
|
@@ -578,7 +577,6 @@ export declare const ROUTES: {
|
|
|
578
577
|
};
|
|
579
578
|
readonly STORE: {
|
|
580
579
|
readonly DASHBOARD: "/store";
|
|
581
|
-
readonly MESSAGES: "/store/messages";
|
|
582
580
|
readonly PRODUCTS: "/store/products";
|
|
583
581
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
584
582
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -614,6 +612,8 @@ export declare const ROUTES: {
|
|
|
614
612
|
readonly FEATURES_NEW: "/store/features/new";
|
|
615
613
|
readonly FEATURES_EDIT: (id: string) => string;
|
|
616
614
|
readonly SLUG: "/store/slug";
|
|
615
|
+
/** Tickets raised ABOUT this store (W11). Read-only for the seller. */
|
|
616
|
+
readonly SUPPORT: "/store/support";
|
|
617
617
|
readonly BUNDLES: "/store/bundles";
|
|
618
618
|
readonly BUNDLES_NEW: "/store/bundles/new";
|
|
619
619
|
readonly BUNDLES_EDIT: (id: string) => string;
|
|
@@ -685,6 +685,7 @@ export declare const ROUTES: {
|
|
|
685
685
|
readonly CAROUSELS_EDIT: (id: string) => string;
|
|
686
686
|
readonly SECTIONS: "/admin/sections";
|
|
687
687
|
readonly NAVIGATION: "/admin/navigation";
|
|
688
|
+
readonly ACTION_INDEX: "/admin/action-index";
|
|
688
689
|
readonly NAVIGATION_NEW: "/admin/navigation/new";
|
|
689
690
|
readonly NAVIGATION_EDIT: (id: string) => string;
|
|
690
691
|
readonly CATEGORIES: "/admin/categories";
|
|
@@ -736,7 +737,6 @@ export declare const ROUTES: {
|
|
|
736
737
|
readonly EVENT_ENTRIES: (id: string) => string;
|
|
737
738
|
readonly STORES: "/admin/stores";
|
|
738
739
|
readonly STORE_DETAIL: (id: string) => string;
|
|
739
|
-
readonly FEATURE_FLAGS: "/admin/feature-flags";
|
|
740
740
|
readonly COPILOT: "/admin/copilot";
|
|
741
741
|
readonly ADS: "/admin/ads";
|
|
742
742
|
readonly ADS_NEW: "/admin/ads/new";
|
|
@@ -818,7 +818,6 @@ export declare const ROUTES: {
|
|
|
818
818
|
/** @deprecated Use ROUTES.STORE instead */
|
|
819
819
|
export declare const SELLER_ROUTES: {
|
|
820
820
|
readonly DASHBOARD: "/store";
|
|
821
|
-
readonly MESSAGES: "/store/messages";
|
|
822
821
|
readonly PRODUCTS: "/store/products";
|
|
823
822
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
824
823
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -854,6 +853,8 @@ export declare const SELLER_ROUTES: {
|
|
|
854
853
|
readonly FEATURES_NEW: "/store/features/new";
|
|
855
854
|
readonly FEATURES_EDIT: (id: string) => string;
|
|
856
855
|
readonly SLUG: "/store/slug";
|
|
856
|
+
/** Tickets raised ABOUT this store (W11). Read-only for the seller. */
|
|
857
|
+
readonly SUPPORT: "/store/support";
|
|
857
858
|
readonly BUNDLES: "/store/bundles";
|
|
858
859
|
readonly BUNDLES_NEW: "/store/bundles/new";
|
|
859
860
|
readonly BUNDLES_EDIT: (id: string) => string;
|
|
@@ -153,7 +153,6 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
153
153
|
ORDER_INVOICE: (id) => `/user/orders/${id}/invoice`,
|
|
154
154
|
ORDER_PAYMENT: (id) => `/user/orders/${id}/payment`,
|
|
155
155
|
NOTIFICATIONS: "/user/notifications",
|
|
156
|
-
MESSAGES: "/user/messages",
|
|
157
156
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
158
157
|
CLAIMED_COUPONS: "/user/coupons",
|
|
159
158
|
BECOME_SELLER: "/user/become-seller",
|
|
@@ -179,7 +178,6 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
179
178
|
},
|
|
180
179
|
STORE: {
|
|
181
180
|
DASHBOARD: "/store",
|
|
182
|
-
MESSAGES: "/store/messages",
|
|
183
181
|
PRODUCTS: "/store/products",
|
|
184
182
|
PRODUCTS_NEW: "/store/products/new",
|
|
185
183
|
PRODUCTS_EDIT: (id) => `/store/products/${id}/edit`,
|
|
@@ -215,6 +213,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
215
213
|
FEATURES_NEW: "/store/features/new",
|
|
216
214
|
FEATURES_EDIT: (id) => `/store/features/${id}/edit`,
|
|
217
215
|
SLUG: "/store/slug",
|
|
216
|
+
/** Tickets raised ABOUT this store (W11). Read-only for the seller. */
|
|
217
|
+
SUPPORT: "/store/support",
|
|
218
218
|
// SB1-J — bundles + prize draws
|
|
219
219
|
BUNDLES: "/store/bundles",
|
|
220
220
|
BUNDLES_NEW: "/store/bundles/new",
|
|
@@ -296,6 +296,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
296
296
|
CAROUSELS_EDIT: (id) => `/admin/carousels/${id}/edit`,
|
|
297
297
|
SECTIONS: "/admin/sections",
|
|
298
298
|
NAVIGATION: "/admin/navigation",
|
|
299
|
+
/*
|
|
300
|
+
* The action index (W7 / D7) — one control plane for every page, setting
|
|
301
|
+
* and toggle a user can reach. It supersedes NAVIGATION and
|
|
302
|
+
* SETTINGS_NAVIGATION, neither of whose data ever reached a sidebar:
|
|
303
|
+
* `filterNavItems` short-circuits on a missing `id`, and no nav item had
|
|
304
|
+
* one until W6.
|
|
305
|
+
*/
|
|
306
|
+
ACTION_INDEX: "/admin/action-index",
|
|
299
307
|
NAVIGATION_NEW: "/admin/navigation/new",
|
|
300
308
|
NAVIGATION_EDIT: (id) => `/admin/navigation/${id}/edit`,
|
|
301
309
|
CATEGORIES: "/admin/categories",
|
|
@@ -348,7 +356,6 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
348
356
|
EVENT_ENTRIES: (id) => `/admin/events/${id}/entries`,
|
|
349
357
|
STORES: "/admin/stores",
|
|
350
358
|
STORE_DETAIL: (id) => `/admin/stores/${id}/view`,
|
|
351
|
-
FEATURE_FLAGS: "/admin/feature-flags",
|
|
352
359
|
COPILOT: "/admin/copilot",
|
|
353
360
|
ADS: "/admin/ads",
|
|
354
361
|
ADS_NEW: "/admin/ads/new",
|
|
@@ -64,7 +64,21 @@ export function getAdminApp() {
|
|
|
64
64
|
return existing;
|
|
65
65
|
}
|
|
66
66
|
const keyPath = nodePath().join(nodeCwd(), "firebase-admin-key.json");
|
|
67
|
-
|
|
67
|
+
/*
|
|
68
|
+
* 🛑 `||`, not `??`.
|
|
69
|
+
*
|
|
70
|
+
* A Vercel env var that EXISTS but is empty yields `""`, and `""` is not
|
|
71
|
+
* nullish — so `??` short-circuits, the NEXT_PUBLIC fallback never runs, and
|
|
72
|
+
* `...(storageBucket && …)` then drops the key entirely. The app initialises
|
|
73
|
+
* with NO bucket and every own-bucket media request 500s with
|
|
74
|
+
* "Bucket name not specified".
|
|
75
|
+
*
|
|
76
|
+
* Invisible locally: `.env.local` does not define FIREBASE_ADMIN_STORAGE_BUCKET
|
|
77
|
+
* at all, so the fallback always runs here. `scripts/test-storage-flow.mjs`
|
|
78
|
+
* and `scripts/test-storage.mjs` both already use `||` for this same
|
|
79
|
+
* expression — this was the odd one out.
|
|
80
|
+
*/
|
|
81
|
+
const storageBucket = process.env.FIREBASE_ADMIN_STORAGE_BUCKET?.trim() ||
|
|
68
82
|
process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET?.trim();
|
|
69
83
|
let app;
|
|
70
84
|
try {
|
|
@@ -117,6 +117,28 @@ export interface SieveOptions {
|
|
|
117
117
|
*/
|
|
118
118
|
aliases?: SieveFilterAliases;
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* 🛑 THE canonical list envelope. Every repository returns this shape.
|
|
122
|
+
*
|
|
123
|
+
* A list endpoint should emit it unchanged — `return successResponse(result)` —
|
|
124
|
+
* and a listing view should read `response.items`. Where a route instead
|
|
125
|
+
* destructures `result.items` and re-emits it as `products` / `orders` /
|
|
126
|
+
* `tickets`, the view has to rename it back in `mapRows`, and the two renames
|
|
127
|
+
* are a pair that can drift. Fifteen such keys exist; `audit-list-envelope`
|
|
128
|
+
* names them and refuses a sixteenth.
|
|
129
|
+
*
|
|
130
|
+
* Nothing type-errors when they drift, which is why they accumulated:
|
|
131
|
+
* `ListingViewConfig<TResponse, TRow>` treats `TResponse` as opaque and
|
|
132
|
+
* delegates the read to a per-view callback.
|
|
133
|
+
*
|
|
134
|
+
* **`pageSize`, never `perPage`.** Three other spellings existed and all three
|
|
135
|
+
* were dead on 2026-08-31 — `GenericListResponse` (which declared BOTH, each
|
|
136
|
+
* optional, so a value could supply neither), appkit's `AdminListResponse`, and
|
|
137
|
+
* the whole `pagination.helper.ts` module. All deleted. `PagedResult` in
|
|
138
|
+
* contracts/repository.ts still spells it `perPage` and is genuinely live in 14
|
|
139
|
+
* repositories via `IReadRepository.findAll`; converging that is a change to the
|
|
140
|
+
* repository contract itself, not to an envelope.
|
|
141
|
+
*/
|
|
120
142
|
export interface SieveResult<T> {
|
|
121
143
|
items: T[];
|
|
122
144
|
total: number;
|
|
@@ -3,7 +3,7 @@ import type { ListingType } from "../../features/products/types/index";
|
|
|
3
3
|
* W1-43 — useListingTypeFlags
|
|
4
4
|
*
|
|
5
5
|
* Returns the enabled-state for each listing type as configured in
|
|
6
|
-
* `siteSettings.
|
|
6
|
+
* `siteSettings.listings.listingTypes`. Consumers should hide nav items,
|
|
7
7
|
* filter TypeDropdown options, and reject API requests for disabled types.
|
|
8
8
|
*
|
|
9
9
|
* Defaults to all-enabled when settings haven't loaded yet — match the
|
|
@@ -3,7 +3,7 @@ import { useSiteSettings } from "../../core/hooks/useSiteSettings";
|
|
|
3
3
|
import { ALL_LISTING_TYPES } from "../../_internal/shared/listing-types/feature-flags";
|
|
4
4
|
export function useListingTypeFlags() {
|
|
5
5
|
const { data } = useSiteSettings();
|
|
6
|
-
const lt = data?.
|
|
6
|
+
const lt = data?.listings?.listingTypes;
|
|
7
7
|
// A type is disabled only when EXPLICITLY set to false — a missing flag (or
|
|
8
8
|
// settings that haven't loaded) means enabled.
|
|
9
9
|
const flags = Object.fromEntries(ALL_LISTING_TYPES.map((type) => [type, lt?.[type] !== false]));
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
|
3
|
+
import { joinFilterValues, splitFilterValues } from "../../constants/table-keys";
|
|
3
4
|
/**
|
|
4
5
|
* usePendingFilters
|
|
5
6
|
*
|
|
@@ -30,8 +31,9 @@ import { useCallback, useMemo, useState } from "react";
|
|
|
30
31
|
*/
|
|
31
32
|
export function usePendingFilters({ table, keys, }) {
|
|
32
33
|
const parseValues = useCallback((key) => {
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
// `|`, not `,` — see FILTER_VALUE_DELIMITER. Splitting on a comma
|
|
35
|
+
// made a 3-value selection one element, so the badge read 1.
|
|
36
|
+
return splitFilterValues(table.get(key));
|
|
35
37
|
}, [table]);
|
|
36
38
|
const [pending, setPending] = useState(() => Object.fromEntries(keys.map((k) => [k, parseValues(k)])));
|
|
37
39
|
const applied = useMemo(() => Object.fromEntries(keys.map((k) => [k, parseValues(k)])), [keys, parseValues]);
|
|
@@ -50,7 +52,7 @@ export function usePendingFilters({ table, keys, }) {
|
|
|
50
52
|
const apply = useCallback((extras) => {
|
|
51
53
|
const updates = { page: "1", ...extras };
|
|
52
54
|
for (const k of keys) {
|
|
53
|
-
updates[k] = (pending[k] ?? [])
|
|
55
|
+
updates[k] = joinFilterValues(pending[k] ?? []);
|
|
54
56
|
}
|
|
55
57
|
table.setMany(updates);
|
|
56
58
|
}, [keys, pending, table]);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { usePendingFilters } from "./usePendingFilters";
|
|
4
|
+
import { joinFilterValues, splitFilterValues } from "../../constants/table-keys";
|
|
4
5
|
/**
|
|
5
6
|
* usePendingTable
|
|
6
7
|
*
|
|
@@ -24,14 +25,25 @@ import { usePendingFilters } from "./usePendingFilters";
|
|
|
24
25
|
*/
|
|
25
26
|
export function usePendingTable(table, keys) {
|
|
26
27
|
const filters = usePendingFilters({ table, keys });
|
|
28
|
+
/*
|
|
29
|
+
* `PendingTable` is a one-string-per-key view over an array-per-key buffer,
|
|
30
|
+
* so both directions have to go through the delimiter.
|
|
31
|
+
*
|
|
32
|
+
* `get` was `filters.pending[key]?.[0]` and `set` wrapped the whole string in
|
|
33
|
+
* a single-element array. That round-tripped a pipe-joined multi-select ONLY
|
|
34
|
+
* because `usePendingFilters` was splitting on a comma, which never divided
|
|
35
|
+
* it — `["a|b|c"]` in, `"a|b|c"` out. The moment that split became `|` (as it
|
|
36
|
+
* had to, for the badge to count), `[0]` would have started returning `"a"`
|
|
37
|
+
* and silently dropped every value after the first.
|
|
38
|
+
*/
|
|
27
39
|
const pendingTable = useMemo(() => ({
|
|
28
|
-
get: (key) => filters.pending[key]
|
|
40
|
+
get: (key) => joinFilterValues(filters.pending[key] ?? []),
|
|
29
41
|
set: (key, value) => {
|
|
30
|
-
filters.set(key, value
|
|
42
|
+
filters.set(key, splitFilterValues(value));
|
|
31
43
|
},
|
|
32
44
|
setMany: (updates) => {
|
|
33
45
|
for (const [k, v] of Object.entries(updates)) {
|
|
34
|
-
filters.set(k, v
|
|
46
|
+
filters.set(k, splitFilterValues(v));
|
|
35
47
|
}
|
|
36
48
|
},
|
|
37
49
|
}), [filters.pending, filters.set]);
|
|
@@ -20,7 +20,6 @@ export { siteSettingsRepository } from "../features/admin/repository/site-settin
|
|
|
20
20
|
export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
|
|
21
21
|
export type { AnalyticsRollupDocument } from "../features/admin/repository/analytics-rollup.repository";
|
|
22
22
|
export { notificationRepository } from "../features/admin/repository/notification.repository";
|
|
23
|
-
export { chatRepository } from "../features/admin/repository/chat.repository";
|
|
24
23
|
export { carouselRepository } from "../features/homepage/repository/carousel.repository";
|
|
25
24
|
export { carouselsRepository, CarouselsRepository } from "../features/homepage/repository/carousels.repository";
|
|
26
25
|
export { homepageSectionsRepository } from "../features/homepage/repository/homepage-sections.repository";
|
|
@@ -26,7 +26,6 @@ export { StoreRepository, storeRepository, } from "../features/stores/repository
|
|
|
26
26
|
export { siteSettingsRepository } from "../features/admin/repository/site-settings.repository";
|
|
27
27
|
export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
|
|
28
28
|
export { notificationRepository } from "../features/admin/repository/notification.repository";
|
|
29
|
-
export { chatRepository } from "../features/admin/repository/chat.repository";
|
|
30
29
|
export { carouselRepository } from "../features/homepage/repository/carousel.repository";
|
|
31
30
|
export { carouselsRepository, CarouselsRepository } from "../features/homepage/repository/carousels.repository";
|
|
32
31
|
export { homepageSectionsRepository } from "../features/homepage/repository/homepage-sections.repository";
|