@voyantjs/products-react 0.2.0 → 0.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.
Files changed (67) hide show
  1. package/dist/hooks/index.d.ts +14 -0
  2. package/dist/hooks/index.d.ts.map +1 -1
  3. package/dist/hooks/index.js +14 -0
  4. package/dist/hooks/use-option-unit-mutation.d.ts +60 -0
  5. package/dist/hooks/use-option-unit-mutation.d.ts.map +1 -0
  6. package/dist/hooks/use-option-unit-mutation.js +41 -0
  7. package/dist/hooks/use-option-unit.d.ts +21 -0
  8. package/dist/hooks/use-option-unit.d.ts.map +1 -0
  9. package/dist/hooks/use-option-unit.js +12 -0
  10. package/dist/hooks/use-option-units.d.ts +27 -0
  11. package/dist/hooks/use-option-units.d.ts.map +1 -0
  12. package/dist/hooks/use-option-units.js +12 -0
  13. package/dist/hooks/use-product-categories.d.ts +22 -0
  14. package/dist/hooks/use-product-categories.d.ts.map +1 -0
  15. package/dist/hooks/use-product-categories.js +29 -0
  16. package/dist/hooks/use-product-category-mutation.d.ts +43 -0
  17. package/dist/hooks/use-product-category-mutation.d.ts.map +1 -0
  18. package/dist/hooks/use-product-category-mutation.js +39 -0
  19. package/dist/hooks/use-product-category.d.ts +16 -0
  20. package/dist/hooks/use-product-category.d.ts.map +1 -0
  21. package/dist/hooks/use-product-category.js +18 -0
  22. package/dist/hooks/use-product-mutation.d.ts +2 -2
  23. package/dist/hooks/use-product-option-mutation.d.ts +49 -0
  24. package/dist/hooks/use-product-option-mutation.d.ts.map +1 -0
  25. package/dist/hooks/use-product-option-mutation.js +39 -0
  26. package/dist/hooks/use-product-option.d.ts +18 -0
  27. package/dist/hooks/use-product-option.d.ts.map +1 -0
  28. package/dist/hooks/use-product-option.js +12 -0
  29. package/dist/hooks/use-product-options.d.ts +24 -0
  30. package/dist/hooks/use-product-options.d.ts.map +1 -0
  31. package/dist/hooks/use-product-options.js +12 -0
  32. package/dist/hooks/use-product-tag-mutation.d.ts +25 -0
  33. package/dist/hooks/use-product-tag-mutation.d.ts.map +1 -0
  34. package/dist/hooks/use-product-tag-mutation.js +39 -0
  35. package/dist/hooks/use-product-tag.d.ts +10 -0
  36. package/dist/hooks/use-product-tag.d.ts.map +1 -0
  37. package/dist/hooks/use-product-tag.js +18 -0
  38. package/dist/hooks/use-product-tags.d.ts +16 -0
  39. package/dist/hooks/use-product-tags.d.ts.map +1 -0
  40. package/dist/hooks/use-product-tags.js +25 -0
  41. package/dist/hooks/use-product-type-mutation.d.ts +50 -0
  42. package/dist/hooks/use-product-type-mutation.d.ts.map +1 -0
  43. package/dist/hooks/use-product-type-mutation.js +47 -0
  44. package/dist/hooks/use-product-type.d.ts +15 -0
  45. package/dist/hooks/use-product-type.d.ts.map +1 -0
  46. package/dist/hooks/use-product-type.js +12 -0
  47. package/dist/hooks/use-product-types.d.ts +1 -1
  48. package/dist/hooks/use-product-types.d.ts.map +1 -1
  49. package/dist/hooks/use-product-types.js +4 -22
  50. package/dist/hooks/use-product.d.ts +1 -1
  51. package/dist/hooks/use-products.d.ts +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -0
  55. package/dist/provider.d.ts +1 -13
  56. package/dist/provider.d.ts.map +1 -1
  57. package/dist/provider.js +1 -16
  58. package/dist/query-keys.d.ts +36 -0
  59. package/dist/query-keys.d.ts.map +1 -1
  60. package/dist/query-keys.js +12 -0
  61. package/dist/query-options.d.ts +771 -0
  62. package/dist/query-options.d.ts.map +1 -0
  63. package/dist/query-options.js +174 -0
  64. package/dist/schemas.d.ts +215 -3
  65. package/dist/schemas.d.ts.map +1 -1
  66. package/dist/schemas.js +57 -0
  67. package/package.json +7 -3
@@ -1,5 +1,19 @@
1
+ export * from "./use-option-unit.js";
2
+ export * from "./use-option-unit-mutation.js";
3
+ export * from "./use-option-units.js";
1
4
  export * from "./use-product.js";
5
+ export * from "./use-product-categories.js";
6
+ export * from "./use-product-category.js";
7
+ export * from "./use-product-category-mutation.js";
2
8
  export * from "./use-product-mutation.js";
9
+ export * from "./use-product-option.js";
10
+ export * from "./use-product-option-mutation.js";
11
+ export * from "./use-product-options.js";
12
+ export * from "./use-product-tag.js";
13
+ export * from "./use-product-tag-mutation.js";
14
+ export * from "./use-product-tags.js";
15
+ export * from "./use-product-type.js";
16
+ export * from "./use-product-type-mutation.js";
3
17
  export * from "./use-product-types.js";
4
18
  export * from "./use-products.js";
5
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,oCAAoC,CAAA;AAClD,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
@@ -1,4 +1,18 @@
1
+ export * from "./use-option-unit.js";
2
+ export * from "./use-option-unit-mutation.js";
3
+ export * from "./use-option-units.js";
1
4
  export * from "./use-product.js";
5
+ export * from "./use-product-categories.js";
6
+ export * from "./use-product-category.js";
7
+ export * from "./use-product-category-mutation.js";
2
8
  export * from "./use-product-mutation.js";
9
+ export * from "./use-product-option.js";
10
+ export * from "./use-product-option-mutation.js";
11
+ export * from "./use-product-options.js";
12
+ export * from "./use-product-tag.js";
13
+ export * from "./use-product-tag-mutation.js";
14
+ export * from "./use-product-tags.js";
15
+ export * from "./use-product-type.js";
16
+ export * from "./use-product-type-mutation.js";
3
17
  export * from "./use-product-types.js";
4
18
  export * from "./use-products.js";
@@ -0,0 +1,60 @@
1
+ export interface CreateOptionUnitInput {
2
+ optionId: string;
3
+ name: string;
4
+ code?: string | null;
5
+ description?: string | null;
6
+ unitType?: "person" | "group" | "room" | "vehicle" | "service" | "other";
7
+ minQuantity?: number | null;
8
+ maxQuantity?: number | null;
9
+ minAge?: number | null;
10
+ maxAge?: number | null;
11
+ occupancyMin?: number | null;
12
+ occupancyMax?: number | null;
13
+ isRequired?: boolean;
14
+ isHidden?: boolean;
15
+ sortOrder?: number;
16
+ }
17
+ export type UpdateOptionUnitInput = Omit<Partial<CreateOptionUnitInput>, "optionId">;
18
+ export declare function useOptionUnitMutation(): {
19
+ create: import("@tanstack/react-query").UseMutationResult<{
20
+ id: string;
21
+ optionId: string;
22
+ name: string;
23
+ code: string | null;
24
+ description: string | null;
25
+ unitType: "person" | "group" | "room" | "vehicle" | "service" | "other";
26
+ minQuantity: number | null;
27
+ maxQuantity: number | null;
28
+ minAge: number | null;
29
+ maxAge: number | null;
30
+ occupancyMin: number | null;
31
+ occupancyMax: number | null;
32
+ isRequired: boolean;
33
+ isHidden: boolean;
34
+ sortOrder: number;
35
+ }, Error, CreateOptionUnitInput, unknown>;
36
+ update: import("@tanstack/react-query").UseMutationResult<{
37
+ id: string;
38
+ optionId: string;
39
+ name: string;
40
+ code: string | null;
41
+ description: string | null;
42
+ unitType: "person" | "group" | "room" | "vehicle" | "service" | "other";
43
+ minQuantity: number | null;
44
+ maxQuantity: number | null;
45
+ minAge: number | null;
46
+ maxAge: number | null;
47
+ occupancyMin: number | null;
48
+ occupancyMax: number | null;
49
+ isRequired: boolean;
50
+ isHidden: boolean;
51
+ sortOrder: number;
52
+ }, Error, {
53
+ id: string;
54
+ input: UpdateOptionUnitInput;
55
+ }, unknown>;
56
+ remove: import("@tanstack/react-query").UseMutationResult<{
57
+ success: boolean;
58
+ }, Error, string, unknown>;
59
+ };
60
+ //# sourceMappingURL=use-option-unit-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-option-unit-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-option-unit-mutation.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IACxE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,CAAA;AAIpF,wBAAgB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuBO,MAAM;eAAS,qBAAqB;;;;;EA6B/E"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { z } from "zod";
4
+ import { fetchWithValidation } from "../client.js";
5
+ import { useVoyantProductsContext } from "../provider.js";
6
+ import { productsQueryKeys } from "../query-keys.js";
7
+ import { optionUnitSingleResponse } from "../schemas.js";
8
+ const deleteResponseSchema = z.object({ success: z.boolean() });
9
+ export function useOptionUnitMutation() {
10
+ const { baseUrl, fetcher } = useVoyantProductsContext();
11
+ const queryClient = useQueryClient();
12
+ const create = useMutation({
13
+ mutationFn: async ({ optionId, ...input }) => {
14
+ const { data } = await fetchWithValidation(`/v1/products/options/${optionId}/units`, optionUnitSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
15
+ return data;
16
+ },
17
+ onSuccess: (data) => {
18
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.optionUnits() });
19
+ void queryClient.invalidateQueries({
20
+ queryKey: productsQueryKeys.productOption(data.optionId),
21
+ });
22
+ },
23
+ });
24
+ const update = useMutation({
25
+ mutationFn: async ({ id, input }) => {
26
+ const { data } = await fetchWithValidation(`/v1/products/units/${id}`, optionUnitSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
27
+ return data;
28
+ },
29
+ onSuccess: (data) => {
30
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.optionUnits() });
31
+ queryClient.setQueryData(productsQueryKeys.optionUnit(data.id), data);
32
+ },
33
+ });
34
+ const remove = useMutation({
35
+ mutationFn: async (id) => fetchWithValidation(`/v1/products/units/${id}`, deleteResponseSchema, { baseUrl, fetcher }, { method: "DELETE" }),
36
+ onSuccess: () => {
37
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.optionUnits() });
38
+ },
39
+ });
40
+ return { create, update, remove };
41
+ }
@@ -0,0 +1,21 @@
1
+ export interface UseOptionUnitOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useOptionUnit(id: string | undefined, options?: UseOptionUnitOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ id: string;
6
+ optionId: string;
7
+ name: string;
8
+ code: string | null;
9
+ description: string | null;
10
+ unitType: "person" | "group" | "room" | "vehicle" | "service" | "other";
11
+ minQuantity: number | null;
12
+ maxQuantity: number | null;
13
+ minAge: number | null;
14
+ maxAge: number | null;
15
+ occupancyMin: number | null;
16
+ occupancyMax: number | null;
17
+ isRequired: boolean;
18
+ isHidden: boolean;
19
+ sortOrder: number;
20
+ }, Error>;
21
+ //# sourceMappingURL=use-option-unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-option-unit.d.ts","sourceRoot":"","sources":["../../src/hooks/use-option-unit.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,oBAAyB;;;;;;;;;;;;;;;;UAQvF"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantProductsContext } from "../provider.js";
4
+ import { getOptionUnitQueryOptions } from "../query-options.js";
5
+ export function useOptionUnit(id, options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantProductsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getOptionUnitQueryOptions({ baseUrl, fetcher }, id, options),
10
+ enabled: enabled && !!id,
11
+ });
12
+ }
@@ -0,0 +1,27 @@
1
+ import type { OptionUnitsListFilters } from "../query-keys.js";
2
+ export interface UseOptionUnitsOptions extends OptionUnitsListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useOptionUnits(options?: UseOptionUnitsOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ id: string;
8
+ optionId: string;
9
+ name: string;
10
+ code: string | null;
11
+ description: string | null;
12
+ unitType: "person" | "group" | "room" | "vehicle" | "service" | "other";
13
+ minQuantity: number | null;
14
+ maxQuantity: number | null;
15
+ minAge: number | null;
16
+ maxAge: number | null;
17
+ occupancyMin: number | null;
18
+ occupancyMax: number | null;
19
+ isRequired: boolean;
20
+ isHidden: boolean;
21
+ sortOrder: number;
22
+ }[];
23
+ total: number;
24
+ limit: number;
25
+ offset: number;
26
+ }, Error>;
27
+ //# sourceMappingURL=use-option-units.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-option-units.d.ts","sourceRoot":"","sources":["../../src/hooks/use-option-units.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAG9D,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;;;;;;;;;;;;;;UAQjE"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantProductsContext } from "../provider.js";
4
+ import { getOptionUnitsQueryOptions } from "../query-options.js";
5
+ export function useOptionUnits(options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantProductsContext();
7
+ const { enabled = true, ...filters } = options;
8
+ return useQuery({
9
+ ...getOptionUnitsQueryOptions({ baseUrl, fetcher }, filters),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,22 @@
1
+ import { type ProductCategoriesListFilters } from "../query-keys.js";
2
+ export interface UseProductCategoriesOptions extends ProductCategoriesListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useProductCategories(options?: UseProductCategoriesOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ id: string;
8
+ parentId: string | null;
9
+ name: string;
10
+ slug: string;
11
+ description: string | null;
12
+ sortOrder: number;
13
+ active: boolean;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ metadata?: Record<string, unknown> | null | undefined;
17
+ }[];
18
+ total: number;
19
+ limit: number;
20
+ offset: number;
21
+ }, Error>;
22
+ //# sourceMappingURL=use-product-categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-categories.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-categories.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,4BAA4B,EAAqB,MAAM,kBAAkB,CAAA;AAGvF,MAAM,WAAW,2BAA4B,SAAQ,4BAA4B;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC;;;;;;;;;;;;;;;;UAsB7E"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantProductsContext } from "../provider.js";
5
+ import { productsQueryKeys } from "../query-keys.js";
6
+ import { productCategoryListResponse } from "../schemas.js";
7
+ export function useProductCategories(options = {}) {
8
+ const { baseUrl, fetcher } = useVoyantProductsContext();
9
+ const { enabled = true, ...filters } = options;
10
+ return useQuery({
11
+ queryKey: productsQueryKeys.productCategoriesList(filters),
12
+ queryFn: () => {
13
+ const params = new URLSearchParams();
14
+ if (filters.parentId)
15
+ params.set("parentId", filters.parentId);
16
+ if (filters.active !== undefined)
17
+ params.set("active", String(filters.active));
18
+ if (filters.search)
19
+ params.set("search", filters.search);
20
+ if (filters.limit !== undefined)
21
+ params.set("limit", String(filters.limit));
22
+ if (filters.offset !== undefined)
23
+ params.set("offset", String(filters.offset));
24
+ const qs = params.toString();
25
+ return fetchWithValidation(`/v1/products/product-categories${qs ? `?${qs}` : ""}`, productCategoryListResponse, { baseUrl, fetcher });
26
+ },
27
+ enabled,
28
+ });
29
+ }
@@ -0,0 +1,43 @@
1
+ export interface CreateProductCategoryInput {
2
+ name: string;
3
+ slug: string;
4
+ parentId?: string | null;
5
+ description?: string | null;
6
+ sortOrder?: number;
7
+ active?: boolean;
8
+ metadata?: Record<string, unknown> | null;
9
+ }
10
+ export type UpdateProductCategoryInput = Partial<CreateProductCategoryInput>;
11
+ export declare function useProductCategoryMutation(): {
12
+ create: import("@tanstack/react-query").UseMutationResult<{
13
+ id: string;
14
+ parentId: string | null;
15
+ name: string;
16
+ slug: string;
17
+ description: string | null;
18
+ sortOrder: number;
19
+ active: boolean;
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ metadata?: Record<string, unknown> | null | undefined;
23
+ }, Error, CreateProductCategoryInput, unknown>;
24
+ update: import("@tanstack/react-query").UseMutationResult<{
25
+ id: string;
26
+ parentId: string | null;
27
+ name: string;
28
+ slug: string;
29
+ description: string | null;
30
+ sortOrder: number;
31
+ active: boolean;
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ metadata?: Record<string, unknown> | null | undefined;
35
+ }, Error, {
36
+ id: string;
37
+ input: UpdateProductCategoryInput;
38
+ }, unknown>;
39
+ remove: import("@tanstack/react-query").UseMutationResult<{
40
+ success: boolean;
41
+ }, Error, string, unknown>;
42
+ };
43
+ //# sourceMappingURL=use-product-category-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-category-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-category-mutation.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAI5E,wBAAgB,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;YAoBE,MAAM;eAAS,0BAA0B;;;;;EA8BpF"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { z } from "zod";
4
+ import { fetchWithValidation } from "../client.js";
5
+ import { useVoyantProductsContext } from "../provider.js";
6
+ import { productsQueryKeys } from "../query-keys.js";
7
+ import { productCategorySingleResponse } from "../schemas.js";
8
+ const deleteResponseSchema = z.object({ success: z.boolean() });
9
+ export function useProductCategoryMutation() {
10
+ const { baseUrl, fetcher } = useVoyantProductsContext();
11
+ const queryClient = useQueryClient();
12
+ const create = useMutation({
13
+ mutationFn: async (input) => {
14
+ const { data } = await fetchWithValidation("/v1/products/product-categories", productCategorySingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
15
+ return data;
16
+ },
17
+ onSuccess: () => {
18
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productCategories() });
19
+ },
20
+ });
21
+ const update = useMutation({
22
+ mutationFn: async ({ id, input }) => {
23
+ const { data } = await fetchWithValidation(`/v1/products/product-categories/${id}`, productCategorySingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
24
+ return data;
25
+ },
26
+ onSuccess: (data) => {
27
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productCategories() });
28
+ queryClient.setQueryData(productsQueryKeys.productCategory(data.id), data);
29
+ },
30
+ });
31
+ const remove = useMutation({
32
+ mutationFn: async (id) => fetchWithValidation(`/v1/products/product-categories/${id}`, deleteResponseSchema, { baseUrl, fetcher }, { method: "DELETE" }),
33
+ onSuccess: (_data, id) => {
34
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productCategories() });
35
+ queryClient.removeQueries({ queryKey: productsQueryKeys.productCategory(id) });
36
+ },
37
+ });
38
+ return { create, update, remove };
39
+ }
@@ -0,0 +1,16 @@
1
+ export interface UseProductCategoryOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useProductCategory(id: string | null | undefined, options?: UseProductCategoryOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ id: string;
6
+ parentId: string | null;
7
+ name: string;
8
+ slug: string;
9
+ description: string | null;
10
+ sortOrder: number;
11
+ active: boolean;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ metadata?: Record<string, unknown> | null | undefined;
15
+ }, Error>;
16
+ //# sourceMappingURL=use-product-category.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-category.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-category.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,OAAO,GAAE,yBAA8B;;;;;;;;;;;UAiBxC"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantProductsContext } from "../provider.js";
5
+ import { productsQueryKeys } from "../query-keys.js";
6
+ import { productCategorySingleResponse } from "../schemas.js";
7
+ export function useProductCategory(id, options = {}) {
8
+ const { baseUrl, fetcher } = useVoyantProductsContext();
9
+ const { enabled = true } = options;
10
+ return useQuery({
11
+ queryKey: productsQueryKeys.productCategory(id ?? "__missing__"),
12
+ queryFn: async () => {
13
+ const { data } = await fetchWithValidation(`/v1/products/product-categories/${id}`, productCategorySingleResponse, { baseUrl, fetcher });
14
+ return data;
15
+ },
16
+ enabled: enabled && Boolean(id),
17
+ });
18
+ }
@@ -26,7 +26,7 @@ export declare function useProductMutation(): {
26
26
  name: string;
27
27
  status: "draft" | "active" | "archived";
28
28
  description: string | null;
29
- bookingMode: "date" | "date_time" | "open" | "stay" | "transfer" | "itinerary" | "other";
29
+ bookingMode: "other" | "date" | "date_time" | "open" | "stay" | "transfer" | "itinerary";
30
30
  capacityMode: "free_sale" | "limited" | "on_request";
31
31
  timezone: string | null;
32
32
  visibility: "public" | "private" | "hidden";
@@ -50,7 +50,7 @@ export declare function useProductMutation(): {
50
50
  name: string;
51
51
  status: "draft" | "active" | "archived";
52
52
  description: string | null;
53
- bookingMode: "date" | "date_time" | "open" | "stay" | "transfer" | "itinerary" | "other";
53
+ bookingMode: "other" | "date" | "date_time" | "open" | "stay" | "transfer" | "itinerary";
54
54
  capacityMode: "free_sale" | "limited" | "on_request";
55
55
  timezone: string | null;
56
56
  visibility: "public" | "private" | "hidden";
@@ -0,0 +1,49 @@
1
+ export interface CreateProductOptionInput {
2
+ productId: string;
3
+ name: string;
4
+ code?: string | null;
5
+ description?: string | null;
6
+ status?: "draft" | "active" | "archived";
7
+ isDefault?: boolean;
8
+ sortOrder?: number;
9
+ availableFrom?: string | null;
10
+ availableTo?: string | null;
11
+ }
12
+ export type UpdateProductOptionInput = Omit<Partial<CreateProductOptionInput>, "productId">;
13
+ export declare function useProductOptionMutation(): {
14
+ create: import("@tanstack/react-query").UseMutationResult<{
15
+ id: string;
16
+ productId: string;
17
+ name: string;
18
+ code: string | null;
19
+ description: string | null;
20
+ status: "draft" | "active" | "archived";
21
+ isDefault: boolean;
22
+ sortOrder: number;
23
+ availableFrom: string | null;
24
+ availableTo: string | null;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ }, Error, CreateProductOptionInput, unknown>;
28
+ update: import("@tanstack/react-query").UseMutationResult<{
29
+ id: string;
30
+ productId: string;
31
+ name: string;
32
+ code: string | null;
33
+ description: string | null;
34
+ status: "draft" | "active" | "archived";
35
+ isDefault: boolean;
36
+ sortOrder: number;
37
+ availableFrom: string | null;
38
+ availableTo: string | null;
39
+ createdAt: string;
40
+ updatedAt: string;
41
+ }, Error, {
42
+ id: string;
43
+ input: UpdateProductOptionInput;
44
+ }, unknown>;
45
+ remove: import("@tanstack/react-query").UseMutationResult<{
46
+ success: boolean;
47
+ }, Error, string, unknown>;
48
+ };
49
+ //# sourceMappingURL=use-product-option-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-option-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-option-mutation.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,CAAC,CAAA;AAI3F,wBAAgB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqBI,MAAM;eAAS,wBAAwB;;;;;EA6BlF"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { z } from "zod";
4
+ import { fetchWithValidation } from "../client.js";
5
+ import { useVoyantProductsContext } from "../provider.js";
6
+ import { productsQueryKeys } from "../query-keys.js";
7
+ import { productOptionSingleResponse } from "../schemas.js";
8
+ const deleteResponseSchema = z.object({ success: z.boolean() });
9
+ export function useProductOptionMutation() {
10
+ const { baseUrl, fetcher } = useVoyantProductsContext();
11
+ const queryClient = useQueryClient();
12
+ const create = useMutation({
13
+ mutationFn: async ({ productId, ...input }) => {
14
+ const { data } = await fetchWithValidation(`/v1/products/${productId}/options`, productOptionSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
15
+ return data;
16
+ },
17
+ onSuccess: (data) => {
18
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productOptions() });
19
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.product(data.productId) });
20
+ },
21
+ });
22
+ const update = useMutation({
23
+ mutationFn: async ({ id, input }) => {
24
+ const { data } = await fetchWithValidation(`/v1/products/options/${id}`, productOptionSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
25
+ return data;
26
+ },
27
+ onSuccess: (data) => {
28
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productOptions() });
29
+ queryClient.setQueryData(productsQueryKeys.productOption(data.id), data);
30
+ },
31
+ });
32
+ const remove = useMutation({
33
+ mutationFn: async (id) => fetchWithValidation(`/v1/products/options/${id}`, deleteResponseSchema, { baseUrl, fetcher }, { method: "DELETE" }),
34
+ onSuccess: () => {
35
+ void queryClient.invalidateQueries({ queryKey: productsQueryKeys.productOptions() });
36
+ },
37
+ });
38
+ return { create, update, remove };
39
+ }
@@ -0,0 +1,18 @@
1
+ export interface UseProductOptionOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useProductOption(id: string | null | undefined, options?: UseProductOptionOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ id: string;
6
+ productId: string;
7
+ name: string;
8
+ code: string | null;
9
+ description: string | null;
10
+ status: "draft" | "active" | "archived";
11
+ isDefault: boolean;
12
+ sortOrder: number;
13
+ availableFrom: string | null;
14
+ availableTo: string | null;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ }, Error>;
18
+ //# sourceMappingURL=use-product-option.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-option.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-option.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,OAAO,GAAE,uBAA4B;;;;;;;;;;;;;UAStC"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantProductsContext } from "../provider.js";
4
+ import { getProductOptionQueryOptions } from "../query-options.js";
5
+ export function useProductOption(id, options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantProductsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getProductOptionQueryOptions({ baseUrl, fetcher }, id, options),
10
+ enabled: enabled && Boolean(id),
11
+ });
12
+ }
@@ -0,0 +1,24 @@
1
+ import type { ProductOptionsListFilters } from "../query-keys.js";
2
+ export interface UseProductOptionsListOptions extends ProductOptionsListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useProductOptions(options?: UseProductOptionsListOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ id: string;
8
+ productId: string;
9
+ name: string;
10
+ code: string | null;
11
+ description: string | null;
12
+ status: "draft" | "active" | "archived";
13
+ isDefault: boolean;
14
+ sortOrder: number;
15
+ availableFrom: string | null;
16
+ availableTo: string | null;
17
+ createdAt: string;
18
+ updatedAt: string;
19
+ }[];
20
+ total: number;
21
+ limit: number;
22
+ offset: number;
23
+ }, Error>;
24
+ //# sourceMappingURL=use-product-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-options.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-options.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAGjE,MAAM,WAAW,4BAA6B,SAAQ,yBAAyB;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,4BAAiC;;;;;;;;;;;;;;;;;;UAQ3E"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantProductsContext } from "../provider.js";
4
+ import { getProductOptionsQueryOptions } from "../query-options.js";
5
+ export function useProductOptions(options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantProductsContext();
7
+ const { enabled = true, ...filters } = options;
8
+ return useQuery({
9
+ ...getProductOptionsQueryOptions({ baseUrl, fetcher }, filters),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,25 @@
1
+ export interface CreateProductTagInput {
2
+ name: string;
3
+ }
4
+ export type UpdateProductTagInput = Partial<CreateProductTagInput>;
5
+ export declare function useProductTagMutation(): {
6
+ create: import("@tanstack/react-query").UseMutationResult<{
7
+ id: string;
8
+ name: string;
9
+ createdAt: string;
10
+ updatedAt: string;
11
+ }, Error, CreateProductTagInput, unknown>;
12
+ update: import("@tanstack/react-query").UseMutationResult<{
13
+ id: string;
14
+ name: string;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ }, Error, {
18
+ id: string;
19
+ input: UpdateProductTagInput;
20
+ }, unknown>;
21
+ remove: import("@tanstack/react-query").UseMutationResult<{
22
+ success: boolean;
23
+ }, Error, string, unknown>;
24
+ };
25
+ //# sourceMappingURL=use-product-tag-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-product-tag-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-product-tag-mutation.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAIlE,wBAAgB,qBAAqB;;;;;;;;;;;;;YAoBO,MAAM;eAAS,qBAAqB;;;;;EA8B/E"}