@viu/emporix-sdk-react 2.2.0 → 2.3.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/hooks.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { Customer, AuthContext, Product, PaginatedItems, Category, CategoryNode, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, OrderStatus, Order, SalesOrderPatch, Availability } from '@viu/emporix-sdk';
1
+ import { Customer, AuthContext, Product, PaginatedItems, ShoppingListItem, ShoppingListDraft, ShoppingList, Category, CategoryNode, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, OrderStatus, Order, SalesOrderPatch, Availability } from '@viu/emporix-sdk';
2
2
  import * as _tanstack_react_query from '@tanstack/react-query';
3
3
  import { UseQueryResult, UseInfiniteQueryResult, UseMutationResult } from '@tanstack/react-query';
4
4
  import { S as SiteContextValue } from './provider-BhvQWnnh.cjs';
@@ -81,6 +81,39 @@ declare function useProductsByCodes(codes: string[], options?: {
81
81
  chunkSize?: number;
82
82
  } & QueryOpts): UseQueryResult<Product[]>;
83
83
 
84
+ /** The caller's shopping lists (customer-only). Optionally filtered by name. */
85
+ declare function useShoppingLists(opts?: {
86
+ name?: string;
87
+ }): UseQueryResult<ShoppingList[]>;
88
+ /** Create a shopping list. */
89
+ declare function useCreateShoppingList(): UseMutationResult<{
90
+ id: string;
91
+ }, unknown, ShoppingListDraft>;
92
+ /** Delete a named list (or all the customer's lists when `name` is omitted). */
93
+ declare function useDeleteShoppingList(): UseMutationResult<void, unknown, {
94
+ customerId: string;
95
+ name?: string;
96
+ }>;
97
+ /** Add/replace an item in a list. */
98
+ declare function useAddToShoppingList(): UseMutationResult<void, unknown, {
99
+ customerId: string;
100
+ listName: string;
101
+ item: ShoppingListItem;
102
+ }>;
103
+ /** Remove an item from a list by productId. */
104
+ declare function useRemoveFromShoppingList(): UseMutationResult<void, unknown, {
105
+ customerId: string;
106
+ listName: string;
107
+ productId: string;
108
+ }>;
109
+ /** Set an item's quantity (0 removes it). */
110
+ declare function useSetShoppingListItemQuantity(): UseMutationResult<void, unknown, {
111
+ customerId: string;
112
+ listName: string;
113
+ productId: string;
114
+ quantity: number;
115
+ }>;
116
+
84
117
  type UseVariantChildrenOptions = QueryOpts & {
85
118
  pageSize?: number;
86
119
  };
@@ -579,4 +612,4 @@ interface UseAvailabilitiesOptions {
579
612
  */
580
613
  declare function useAvailabilities(productIds: string[], siteCode: string, options?: UseAvailabilitiesOptions): UseQueryResult<Availability[]>;
581
614
 
582
- export { type AddressMutationsApi, type CartMutationsApi, type CheckoutApi, type CompanySwitcherApi, type CustomerSessionApi, type PasswordResetApi, type UseAvailabilitiesOptions, type UseAvailabilityOptions, type UseCancelOrderVars, type UseMyOrdersInfiniteOptions, type UseMyOrdersOptions, type UseOrderOptions, type UseOrderTransitionVars, type UseReorderResult, type UseReorderVars, type UseUpdateSalesOrderVars, type UseVariantChildrenOptions, useActiveCart, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useReorder, useSalesOrder, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren };
615
+ export { type AddressMutationsApi, type CartMutationsApi, type CheckoutApi, type CompanySwitcherApi, type CustomerSessionApi, type PasswordResetApi, type UseAvailabilitiesOptions, type UseAvailabilityOptions, type UseCancelOrderVars, type UseMyOrdersInfiniteOptions, type UseMyOrdersOptions, type UseOrderOptions, type UseOrderTransitionVars, type UseReorderResult, type UseReorderVars, type UseUpdateSalesOrderVars, type UseVariantChildrenOptions, useActiveCart, useAddToShoppingList, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCreateShoppingList, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useDeleteShoppingList, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useRemoveFromShoppingList, useReorder, useSalesOrder, useSetShoppingListItemQuantity, useShoppingLists, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren };
package/dist/hooks.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Customer, AuthContext, Product, PaginatedItems, Category, CategoryNode, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, OrderStatus, Order, SalesOrderPatch, Availability } from '@viu/emporix-sdk';
1
+ import { Customer, AuthContext, Product, PaginatedItems, ShoppingListItem, ShoppingListDraft, ShoppingList, Category, CategoryNode, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, OrderStatus, Order, SalesOrderPatch, Availability } from '@viu/emporix-sdk';
2
2
  import * as _tanstack_react_query from '@tanstack/react-query';
3
3
  import { UseQueryResult, UseInfiniteQueryResult, UseMutationResult } from '@tanstack/react-query';
4
4
  import { S as SiteContextValue } from './provider-fvcYdqqX.js';
@@ -81,6 +81,39 @@ declare function useProductsByCodes(codes: string[], options?: {
81
81
  chunkSize?: number;
82
82
  } & QueryOpts): UseQueryResult<Product[]>;
83
83
 
84
+ /** The caller's shopping lists (customer-only). Optionally filtered by name. */
85
+ declare function useShoppingLists(opts?: {
86
+ name?: string;
87
+ }): UseQueryResult<ShoppingList[]>;
88
+ /** Create a shopping list. */
89
+ declare function useCreateShoppingList(): UseMutationResult<{
90
+ id: string;
91
+ }, unknown, ShoppingListDraft>;
92
+ /** Delete a named list (or all the customer's lists when `name` is omitted). */
93
+ declare function useDeleteShoppingList(): UseMutationResult<void, unknown, {
94
+ customerId: string;
95
+ name?: string;
96
+ }>;
97
+ /** Add/replace an item in a list. */
98
+ declare function useAddToShoppingList(): UseMutationResult<void, unknown, {
99
+ customerId: string;
100
+ listName: string;
101
+ item: ShoppingListItem;
102
+ }>;
103
+ /** Remove an item from a list by productId. */
104
+ declare function useRemoveFromShoppingList(): UseMutationResult<void, unknown, {
105
+ customerId: string;
106
+ listName: string;
107
+ productId: string;
108
+ }>;
109
+ /** Set an item's quantity (0 removes it). */
110
+ declare function useSetShoppingListItemQuantity(): UseMutationResult<void, unknown, {
111
+ customerId: string;
112
+ listName: string;
113
+ productId: string;
114
+ quantity: number;
115
+ }>;
116
+
84
117
  type UseVariantChildrenOptions = QueryOpts & {
85
118
  pageSize?: number;
86
119
  };
@@ -579,4 +612,4 @@ interface UseAvailabilitiesOptions {
579
612
  */
580
613
  declare function useAvailabilities(productIds: string[], siteCode: string, options?: UseAvailabilitiesOptions): UseQueryResult<Availability[]>;
581
614
 
582
- export { type AddressMutationsApi, type CartMutationsApi, type CheckoutApi, type CompanySwitcherApi, type CustomerSessionApi, type PasswordResetApi, type UseAvailabilitiesOptions, type UseAvailabilityOptions, type UseCancelOrderVars, type UseMyOrdersInfiniteOptions, type UseMyOrdersOptions, type UseOrderOptions, type UseOrderTransitionVars, type UseReorderResult, type UseReorderVars, type UseUpdateSalesOrderVars, type UseVariantChildrenOptions, useActiveCart, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useReorder, useSalesOrder, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren };
615
+ export { type AddressMutationsApi, type CartMutationsApi, type CheckoutApi, type CompanySwitcherApi, type CustomerSessionApi, type PasswordResetApi, type UseAvailabilitiesOptions, type UseAvailabilityOptions, type UseCancelOrderVars, type UseMyOrdersInfiniteOptions, type UseMyOrdersOptions, type UseOrderOptions, type UseOrderTransitionVars, type UseReorderResult, type UseReorderVars, type UseUpdateSalesOrderVars, type UseVariantChildrenOptions, useActiveCart, useAddToShoppingList, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCreateShoppingList, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useDeleteShoppingList, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useRemoveFromShoppingList, useReorder, useSalesOrder, useSetShoppingListItemQuantity, useShoppingLists, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren };
package/dist/hooks.js CHANGED
@@ -1,4 +1,4 @@
1
- export { useActiveCart, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useReorder, useSalesOrder, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren } from './chunk-P6QTUYBT.js';
1
+ export { useActiveCart, useAddToShoppingList, useAddressMutations, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateCart, useCreateCompany, useCreateLocation, useCreateShoppingList, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useDeleteShoppingList, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useRemoveFromShoppingList, useReorder, useSalesOrder, useSetShoppingListItemQuantity, useShoppingLists, useSiteContext, useSites, useUnassignContact, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useVariantChildren } from './chunk-AZDCAJLL.js';
2
2
  import './chunk-D43CSHK3.js';
3
3
  import './chunk-FBQY2N7S.js';
4
4
  //# sourceMappingURL=hooks.js.map
package/dist/index.cjs CHANGED
@@ -950,6 +950,63 @@ function useProductsByCodes(codes, options = {}) {
950
950
  staleTime: 3e4
951
951
  });
952
952
  }
953
+ var SHOPPING_LIST_STALE_TIME = 3e4;
954
+ var INVALIDATE_KEY = ["emporix", "shopping-lists"];
955
+ function useShoppingLists(opts = {}) {
956
+ const { client } = useEmporix();
957
+ const ctx = useCustomerOnlyCtx();
958
+ const { siteCode } = useReadSite();
959
+ return reactQuery.useQuery({
960
+ queryKey: emporixKey("shopping-lists", [opts.name ?? null], { tenant: client.tenant, authKind: ctx.kind, siteCode }),
961
+ queryFn: () => client.shoppingLists.list(ctx, opts),
962
+ staleTime: SHOPPING_LIST_STALE_TIME
963
+ });
964
+ }
965
+ function useCreateShoppingList() {
966
+ const { client } = useEmporix();
967
+ const ctx = useCustomerOnlyCtx();
968
+ const qc = reactQuery.useQueryClient();
969
+ return reactQuery.useMutation({
970
+ mutationFn: (draft) => client.shoppingLists.create(draft, ctx),
971
+ onSuccess: () => void qc.invalidateQueries({ queryKey: INVALIDATE_KEY })
972
+ });
973
+ }
974
+ function useDeleteShoppingList() {
975
+ const { client } = useEmporix();
976
+ const ctx = useCustomerOnlyCtx();
977
+ const qc = reactQuery.useQueryClient();
978
+ return reactQuery.useMutation({
979
+ mutationFn: ({ customerId, name }) => client.shoppingLists.delete(customerId, ctx, name !== void 0 ? { name } : {}),
980
+ onSuccess: () => void qc.invalidateQueries({ queryKey: INVALIDATE_KEY })
981
+ });
982
+ }
983
+ function useAddToShoppingList() {
984
+ const { client } = useEmporix();
985
+ const ctx = useCustomerOnlyCtx();
986
+ const qc = reactQuery.useQueryClient();
987
+ return reactQuery.useMutation({
988
+ mutationFn: ({ customerId, listName, item }) => client.shoppingLists.addItem(customerId, listName, item, ctx),
989
+ onSuccess: () => void qc.invalidateQueries({ queryKey: INVALIDATE_KEY })
990
+ });
991
+ }
992
+ function useRemoveFromShoppingList() {
993
+ const { client } = useEmporix();
994
+ const ctx = useCustomerOnlyCtx();
995
+ const qc = reactQuery.useQueryClient();
996
+ return reactQuery.useMutation({
997
+ mutationFn: ({ customerId, listName, productId }) => client.shoppingLists.removeItem(customerId, listName, productId, ctx),
998
+ onSuccess: () => void qc.invalidateQueries({ queryKey: INVALIDATE_KEY })
999
+ });
1000
+ }
1001
+ function useSetShoppingListItemQuantity() {
1002
+ const { client } = useEmporix();
1003
+ const ctx = useCustomerOnlyCtx();
1004
+ const qc = reactQuery.useQueryClient();
1005
+ return reactQuery.useMutation({
1006
+ mutationFn: ({ customerId, listName, productId, quantity }) => client.shoppingLists.setItemQuantity(customerId, listName, productId, quantity, ctx),
1007
+ onSuccess: () => void qc.invalidateQueries({ queryKey: INVALIDATE_KEY })
1008
+ });
1009
+ }
953
1010
  var VARIANT_CHILDREN_STALE_TIME = 6e4;
954
1011
  function useVariantChildren(parentVariantId, options = {}) {
955
1012
  const { client } = useEmporix();
@@ -1900,6 +1957,7 @@ exports.prefetchOrder = prefetchOrder;
1900
1957
  exports.prefetchProduct = prefetchProduct;
1901
1958
  exports.useActiveCart = useActiveCart;
1902
1959
  exports.useActiveCompany = useActiveCompany;
1960
+ exports.useAddToShoppingList = useAddToShoppingList;
1903
1961
  exports.useAddressMutations = useAddressMutations;
1904
1962
  exports.useAssignContact = useAssignContact;
1905
1963
  exports.useAvailabilities = useAvailabilities;
@@ -1921,11 +1979,13 @@ exports.useCompanySwitcher = useCompanySwitcher;
1921
1979
  exports.useCreateCart = useCreateCart;
1922
1980
  exports.useCreateCompany = useCreateCompany;
1923
1981
  exports.useCreateLocation = useCreateLocation;
1982
+ exports.useCreateShoppingList = useCreateShoppingList;
1924
1983
  exports.useCustomerAddresses = useCustomerAddresses;
1925
1984
  exports.useCustomerSession = useCustomerSession;
1926
1985
  exports.useDefaultSite = useDefaultSite;
1927
1986
  exports.useDeleteCompany = useDeleteCompany;
1928
1987
  exports.useDeleteLocation = useDeleteLocation;
1988
+ exports.useDeleteShoppingList = useDeleteShoppingList;
1929
1989
  exports.useEmporix = useEmporix;
1930
1990
  exports.useEmporixErrorHandler = useEmporixErrorHandler;
1931
1991
  exports.useEmporixTelemetry = useEmporixTelemetry;
@@ -1954,8 +2014,11 @@ exports.useProductsByCodes = useProductsByCodes;
1954
2014
  exports.useProductsInCategory = useProductsInCategory;
1955
2015
  exports.useProductsInCategoryInfinite = useProductsInCategoryInfinite;
1956
2016
  exports.useProductsInfinite = useProductsInfinite;
2017
+ exports.useRemoveFromShoppingList = useRemoveFromShoppingList;
1957
2018
  exports.useReorder = useReorder;
1958
2019
  exports.useSalesOrder = useSalesOrder;
2020
+ exports.useSetShoppingListItemQuantity = useSetShoppingListItemQuantity;
2021
+ exports.useShoppingLists = useShoppingLists;
1959
2022
  exports.useSiteContext = useSiteContext;
1960
2023
  exports.useSites = useSites;
1961
2024
  exports.useUnassignContact = useUnassignContact;