@voyantjs/bookings-react 0.4.5 → 0.6.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 (55) hide show
  1. package/dist/hooks/index.d.ts +12 -0
  2. package/dist/hooks/index.d.ts.map +1 -1
  3. package/dist/hooks/index.js +12 -0
  4. package/dist/hooks/use-booking-cancel-mutation.d.ts +25 -0
  5. package/dist/hooks/use-booking-cancel-mutation.d.ts.map +1 -0
  6. package/dist/hooks/use-booking-cancel-mutation.js +24 -0
  7. package/dist/hooks/use-booking-convert-mutation.d.ts +31 -0
  8. package/dist/hooks/use-booking-convert-mutation.d.ts.map +1 -0
  9. package/dist/hooks/use-booking-convert-mutation.js +24 -0
  10. package/dist/hooks/use-booking-documents.d.ts +41 -0
  11. package/dist/hooks/use-booking-documents.d.ts.map +1 -0
  12. package/dist/hooks/use-booking-documents.js +36 -0
  13. package/dist/hooks/use-booking-group-for-booking.d.ts +24 -0
  14. package/dist/hooks/use-booking-group-for-booking.d.ts.map +1 -0
  15. package/dist/hooks/use-booking-group-for-booking.js +12 -0
  16. package/dist/hooks/use-booking-group-member-mutation.d.ts +27 -0
  17. package/dist/hooks/use-booking-group-member-mutation.d.ts.map +1 -0
  18. package/dist/hooks/use-booking-group-member-mutation.js +38 -0
  19. package/dist/hooks/use-booking-group-mutation.d.ts +40 -0
  20. package/dist/hooks/use-booking-group-mutation.d.ts.map +1 -0
  21. package/dist/hooks/use-booking-group-mutation.js +32 -0
  22. package/dist/hooks/use-booking-group.d.ts +41 -0
  23. package/dist/hooks/use-booking-group.d.ts.map +1 -0
  24. package/dist/hooks/use-booking-group.js +12 -0
  25. package/dist/hooks/use-booking-groups.d.ts +21 -0
  26. package/dist/hooks/use-booking-groups.d.ts.map +1 -0
  27. package/dist/hooks/use-booking-groups.js +12 -0
  28. package/dist/hooks/use-booking-item-mutation.d.ts +77 -0
  29. package/dist/hooks/use-booking-item-mutation.d.ts.map +1 -0
  30. package/dist/hooks/use-booking-item-mutation.js +42 -0
  31. package/dist/hooks/use-booking-item-participants.d.ts +32 -0
  32. package/dist/hooks/use-booking-item-participants.d.ts.map +1 -0
  33. package/dist/hooks/use-booking-item-participants.js +41 -0
  34. package/dist/hooks/use-booking-items.d.ts +31 -0
  35. package/dist/hooks/use-booking-items.d.ts.map +1 -0
  36. package/dist/hooks/use-booking-items.js +12 -0
  37. package/dist/hooks/use-booking-primary-product.d.ts +28 -0
  38. package/dist/hooks/use-booking-primary-product.d.ts.map +1 -0
  39. package/dist/hooks/use-booking-primary-product.js +20 -0
  40. package/dist/index.d.ts +2 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +2 -1
  43. package/dist/query-keys.d.ts +15 -0
  44. package/dist/query-keys.d.ts.map +1 -1
  45. package/dist/query-keys.js +8 -0
  46. package/dist/query-options.d.ts +522 -0
  47. package/dist/query-options.d.ts.map +1 -1
  48. package/dist/query-options.js +57 -1
  49. package/dist/schemas.d.ts +501 -0
  50. package/dist/schemas.d.ts.map +1 -1
  51. package/dist/schemas.js +119 -0
  52. package/dist/status-presentation.d.ts +34 -0
  53. package/dist/status-presentation.d.ts.map +1 -0
  54. package/dist/status-presentation.js +37 -0
  55. package/package.json +5 -5
@@ -1,8 +1,20 @@
1
1
  export { type UseBookingOptions, useBooking } from "./use-booking.js";
2
2
  export { type UseBookingActivityOptions, useBookingActivity } from "./use-booking-activity.js";
3
+ export { type CancelBookingInput, useBookingCancelMutation, } from "./use-booking-cancel-mutation.js";
4
+ export { type ConvertProductToBookingInput, useBookingConvertMutation, } from "./use-booking-convert-mutation.js";
5
+ export { type CreateBookingDocumentInput, type UseBookingDocumentsOptions, useBookingDocumentMutation, useBookingDocuments, } from "./use-booking-documents.js";
6
+ export { type UseBookingGroupOptions, useBookingGroup } from "./use-booking-group.js";
7
+ export { type UseBookingGroupForBookingOptions, useBookingGroupForBooking, } from "./use-booking-group-for-booking.js";
8
+ export { type AddBookingGroupMemberInput, useBookingGroupMemberMutation, } from "./use-booking-group-member-mutation.js";
9
+ export { type CreateBookingGroupInput, type UpdateBookingGroupInput, useBookingGroupMutation, } from "./use-booking-group-mutation.js";
10
+ export { type UseBookingGroupsOptions, useBookingGroups } from "./use-booking-groups.js";
11
+ export { type CreateBookingItemInput, type UpdateBookingItemInput, useBookingItemMutation, } from "./use-booking-item-mutation.js";
12
+ export { type AddItemParticipantInput, type UseBookingItemParticipantsOptions, useBookingItemParticipantMutation, useBookingItemParticipants, } from "./use-booking-item-participants.js";
13
+ export { type UseBookingItemsOptions, useBookingItems } from "./use-booking-items.js";
3
14
  export { type CreateBookingInput, type UpdateBookingInput, useBookingMutation, } from "./use-booking-mutation.js";
4
15
  export { type CreateBookingNoteInput, useBookingNoteMutation, } from "./use-booking-note-mutation.js";
5
16
  export { type UseBookingNotesOptions, useBookingNotes } from "./use-booking-notes.js";
17
+ export { type UseBookingPrimaryProductOptions, type UseBookingPrimaryProductResult, useBookingPrimaryProduct, } from "./use-booking-primary-product.js";
6
18
  export { type UpdateBookingStatusInput, useBookingStatusMutation, } from "./use-booking-status-mutation.js";
7
19
  export { type UseBookingsOptions, useBookings } from "./use-bookings.js";
8
20
  export { type CreatePassengerInput, type UpdatePassengerInput, usePassengerMutation, } from "./use-passenger-mutation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,KAAK,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,sBAAsB,EAC3B,sBAAsB,GACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EACL,KAAK,wBAAwB,EAC7B,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,oBAAoB,GACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,mCAAmC,EAAE,MAAM,+CAA+C,CAAA;AACnG,OAAO,EACL,KAAK,mCAAmC,EACxC,4BAA4B,GAC7B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,KAAK,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,KAAK,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,KAAK,4BAA4B,EACjC,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EACL,KAAK,gCAAgC,EACrC,yBAAyB,GAC1B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,KAAK,0BAA0B,EAC/B,6BAA6B,GAC9B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACxF,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,sBAAsB,GACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EACtC,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,sBAAsB,EAC3B,sBAAsB,GACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,KAAK,wBAAwB,EAC7B,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,oBAAoB,GACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,mCAAmC,EAAE,MAAM,+CAA+C,CAAA;AACnG,OAAO,EACL,KAAK,mCAAmC,EACxC,4BAA4B,GAC7B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,KAAK,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -1,8 +1,20 @@
1
1
  export { useBooking } from "./use-booking.js";
2
2
  export { useBookingActivity } from "./use-booking-activity.js";
3
+ export { useBookingCancelMutation, } from "./use-booking-cancel-mutation.js";
4
+ export { useBookingConvertMutation, } from "./use-booking-convert-mutation.js";
5
+ export { useBookingDocumentMutation, useBookingDocuments, } from "./use-booking-documents.js";
6
+ export { useBookingGroup } from "./use-booking-group.js";
7
+ export { useBookingGroupForBooking, } from "./use-booking-group-for-booking.js";
8
+ export { useBookingGroupMemberMutation, } from "./use-booking-group-member-mutation.js";
9
+ export { useBookingGroupMutation, } from "./use-booking-group-mutation.js";
10
+ export { useBookingGroups } from "./use-booking-groups.js";
11
+ export { useBookingItemMutation, } from "./use-booking-item-mutation.js";
12
+ export { useBookingItemParticipantMutation, useBookingItemParticipants, } from "./use-booking-item-participants.js";
13
+ export { useBookingItems } from "./use-booking-items.js";
3
14
  export { useBookingMutation, } from "./use-booking-mutation.js";
4
15
  export { useBookingNoteMutation, } from "./use-booking-note-mutation.js";
5
16
  export { useBookingNotes } from "./use-booking-notes.js";
17
+ export { useBookingPrimaryProduct, } from "./use-booking-primary-product.js";
6
18
  export { useBookingStatusMutation, } from "./use-booking-status-mutation.js";
7
19
  export { useBookings } from "./use-bookings.js";
8
20
  export { usePassengerMutation, } from "./use-passenger-mutation.js";
@@ -0,0 +1,25 @@
1
+ export interface CancelBookingInput {
2
+ note?: string | null;
3
+ }
4
+ /**
5
+ * Cancels a booking via POST /v1/bookings/:id/cancel.
6
+ * The backend releases allocations, cancels items, and logs a status-change activity.
7
+ */
8
+ export declare function useBookingCancelMutation(bookingId: string): import("@tanstack/react-query").UseMutationResult<{
9
+ id: string;
10
+ bookingNumber: string;
11
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
12
+ personId: string | null;
13
+ organizationId: string | null;
14
+ sellCurrency: string;
15
+ sellAmountCents: number | null;
16
+ costAmountCents: number | null;
17
+ marginPercent: number | null;
18
+ startDate: string | null;
19
+ endDate: string | null;
20
+ pax: number | null;
21
+ internalNotes: string | null;
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ }, Error, CancelBookingInput, unknown>;
25
+ //# sourceMappingURL=use-booking-cancel-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-cancel-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-cancel-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;uCAmBzD"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantBookingsContext } from "../provider.js";
5
+ import { bookingsQueryKeys } from "../query-keys.js";
6
+ import { bookingSingleResponse } from "../schemas.js";
7
+ /**
8
+ * Cancels a booking via POST /v1/bookings/:id/cancel.
9
+ * The backend releases allocations, cancels items, and logs a status-change activity.
10
+ */
11
+ export function useBookingCancelMutation(bookingId) {
12
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
13
+ const queryClient = useQueryClient();
14
+ return useMutation({
15
+ mutationFn: async (input) => {
16
+ const { data } = await fetchWithValidation(`/v1/bookings/${bookingId}/cancel`, bookingSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input ?? {}) });
17
+ return data;
18
+ },
19
+ onSuccess: () => {
20
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.booking(bookingId) });
21
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.activity(bookingId) });
22
+ },
23
+ });
24
+ }
@@ -0,0 +1,31 @@
1
+ export interface ConvertProductToBookingInput {
2
+ productId: string;
3
+ bookingNumber: string;
4
+ optionId?: string | null;
5
+ personId?: string | null;
6
+ organizationId?: string | null;
7
+ internalNotes?: string | null;
8
+ }
9
+ /**
10
+ * Creates a draft booking from a product via POST /v1/bookings/from-product.
11
+ * Purpose-built for the operator quick-book flow — the backend seeds items,
12
+ * dates, and pricing from the product definition.
13
+ */
14
+ export declare function useBookingConvertMutation(): import("@tanstack/react-query").UseMutationResult<{
15
+ id: string;
16
+ bookingNumber: string;
17
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
18
+ personId: string | null;
19
+ organizationId: string | null;
20
+ sellCurrency: string;
21
+ sellAmountCents: number | null;
22
+ costAmountCents: number | null;
23
+ marginPercent: number | null;
24
+ startDate: string | null;
25
+ endDate: string | null;
26
+ pax: number | null;
27
+ internalNotes: string | null;
28
+ createdAt: string;
29
+ updatedAt: string;
30
+ }, Error, ConvertProductToBookingInput, unknown>;
31
+ //# sourceMappingURL=use-booking-convert-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-convert-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-convert-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB;;;;;;;;;;;;;;;;iDAkBxC"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantBookingsContext } from "../provider.js";
5
+ import { bookingsQueryKeys } from "../query-keys.js";
6
+ import { bookingSingleResponse } from "../schemas.js";
7
+ /**
8
+ * Creates a draft booking from a product via POST /v1/bookings/from-product.
9
+ * Purpose-built for the operator quick-book flow — the backend seeds items,
10
+ * dates, and pricing from the product definition.
11
+ */
12
+ export function useBookingConvertMutation() {
13
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
14
+ const queryClient = useQueryClient();
15
+ return useMutation({
16
+ mutationFn: async (input) => {
17
+ const { data } = await fetchWithValidation("/v1/bookings/from-product", bookingSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
18
+ return data;
19
+ },
20
+ onSuccess: () => {
21
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.bookings() });
22
+ },
23
+ });
24
+ }
@@ -0,0 +1,41 @@
1
+ export interface UseBookingDocumentsOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useBookingDocuments(bookingId: string | null | undefined, options?: UseBookingDocumentsOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ data: {
6
+ id: string;
7
+ bookingId: string;
8
+ participantId: string | null;
9
+ type: "other" | "visa" | "insurance" | "health" | "passport_copy";
10
+ fileName: string;
11
+ fileUrl: string;
12
+ expiresAt: string | null;
13
+ notes: string | null;
14
+ createdAt: string;
15
+ }[];
16
+ }, Error>;
17
+ export interface CreateBookingDocumentInput {
18
+ type: string;
19
+ fileName: string;
20
+ fileUrl: string;
21
+ participantId?: string | null;
22
+ expiresAt?: string | null;
23
+ notes?: string | null;
24
+ }
25
+ export declare function useBookingDocumentMutation(bookingId: string): {
26
+ create: import("@tanstack/react-query").UseMutationResult<{
27
+ id: string;
28
+ bookingId: string;
29
+ participantId: string | null;
30
+ type: "other" | "visa" | "insurance" | "health" | "passport_copy";
31
+ fileName: string;
32
+ fileUrl: string;
33
+ expiresAt: string | null;
34
+ notes: string | null;
35
+ createdAt: string;
36
+ }, Error, CreateBookingDocumentInput, unknown>;
37
+ remove: import("@tanstack/react-query").UseMutationResult<{
38
+ success: boolean;
39
+ }, Error, string, unknown>;
40
+ };
41
+ //# sourceMappingURL=use-booking-documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-documents.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-documents.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,GAAE,0BAA+B;;;;;;;;;;;;UASzC;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;EAmC3D"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantBookingsContext } from "../provider.js";
5
+ import { bookingsQueryKeys } from "../query-keys.js";
6
+ import { getBookingDocumentsQueryOptions } from "../query-options.js";
7
+ import { bookingDocumentsResponse, bookingSingleResponse, successEnvelope } from "../schemas.js";
8
+ export function useBookingDocuments(bookingId, options = {}) {
9
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
10
+ const { enabled = true } = options;
11
+ return useQuery({
12
+ ...getBookingDocumentsQueryOptions({ baseUrl, fetcher }, bookingId),
13
+ enabled: enabled && Boolean(bookingId),
14
+ });
15
+ }
16
+ export function useBookingDocumentMutation(bookingId) {
17
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
18
+ const queryClient = useQueryClient();
19
+ const invalidate = () => {
20
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.documents(bookingId) });
21
+ };
22
+ const create = useMutation({
23
+ mutationFn: async (input) => {
24
+ const { data } = await fetchWithValidation(`/v1/bookings/${bookingId}/documents`, bookingSingleResponse.extend({
25
+ data: bookingDocumentsResponse.shape.data.element,
26
+ }), { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
27
+ return data;
28
+ },
29
+ onSuccess: invalidate,
30
+ });
31
+ const remove = useMutation({
32
+ mutationFn: async (documentId) => fetchWithValidation(`/v1/bookings/${bookingId}/documents/${documentId}`, successEnvelope, { baseUrl, fetcher }, { method: "DELETE" }),
33
+ onSuccess: invalidate,
34
+ });
35
+ return { create, remove };
36
+ }
@@ -0,0 +1,24 @@
1
+ export interface UseBookingGroupForBookingOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useBookingGroupForBooking(bookingId: string | null | undefined, options?: UseBookingGroupForBookingOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ data: {
6
+ id: string;
7
+ kind: "other" | "shared_room";
8
+ label: string;
9
+ primaryBookingId: string | null;
10
+ productId: string | null;
11
+ optionUnitId: string | null;
12
+ metadata: Record<string, unknown> | null;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ membership: {
16
+ id: string;
17
+ groupId: string;
18
+ bookingId: string;
19
+ role: "primary" | "shared";
20
+ createdAt: string;
21
+ };
22
+ } | null;
23
+ }, Error>;
24
+ //# sourceMappingURL=use-booking-group-for-booking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-group-for-booking.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-group-for-booking.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,GAAE,gCAAqC;;;;;;;;;;;;;;;;;;;UAS/C"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantBookingsContext } from "../provider.js";
4
+ import { getBookingGroupForBookingQueryOptions } from "../query-options.js";
5
+ export function useBookingGroupForBooking(bookingId, options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getBookingGroupForBookingQueryOptions({ baseUrl, fetcher }, bookingId),
10
+ enabled: enabled && Boolean(bookingId),
11
+ });
12
+ }
@@ -0,0 +1,27 @@
1
+ export interface AddBookingGroupMemberInput {
2
+ groupId: string;
3
+ bookingId: string;
4
+ role?: "primary" | "shared";
5
+ }
6
+ export interface RemoveBookingGroupMemberInput {
7
+ groupId: string;
8
+ bookingId: string;
9
+ }
10
+ /**
11
+ * Add or remove a booking from a group. Accepts the group id per-call so the
12
+ * same hook instance can be reused across flows (e.g. create-then-add, where
13
+ * the target group id isn't known at hook construction time).
14
+ */
15
+ export declare function useBookingGroupMemberMutation(): {
16
+ add: import("@tanstack/react-query").UseMutationResult<{
17
+ id: string;
18
+ groupId: string;
19
+ bookingId: string;
20
+ role: "primary" | "shared";
21
+ createdAt: string;
22
+ }, Error, AddBookingGroupMemberInput, unknown>;
23
+ remove: import("@tanstack/react-query").UseMutationResult<{
24
+ success: boolean;
25
+ }, Error, RemoveBookingGroupMemberInput, unknown>;
26
+ };
27
+ //# sourceMappingURL=use-booking-group-member-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-group-member-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-group-member-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B;;;;;;;;;;;EAyC5C"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantBookingsContext } from "../provider.js";
5
+ import { bookingsQueryKeys } from "../query-keys.js";
6
+ import { bookingGroupMemberSingleResponse, successEnvelope } from "../schemas.js";
7
+ /**
8
+ * Add or remove a booking from a group. Accepts the group id per-call so the
9
+ * same hook instance can be reused across flows (e.g. create-then-add, where
10
+ * the target group id isn't known at hook construction time).
11
+ */
12
+ export function useBookingGroupMemberMutation() {
13
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
14
+ const queryClient = useQueryClient();
15
+ const invalidate = (groupId, bookingId) => {
16
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.group(groupId) });
17
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.groupMembers(groupId) });
18
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.groups() });
19
+ void queryClient.invalidateQueries({
20
+ queryKey: bookingsQueryKeys.groupForBooking(bookingId),
21
+ });
22
+ };
23
+ const add = useMutation({
24
+ mutationFn: async (input) => {
25
+ const { data } = await fetchWithValidation(`/v1/bookings/groups/${input.groupId}/members`, bookingGroupMemberSingleResponse, { baseUrl, fetcher }, {
26
+ method: "POST",
27
+ body: JSON.stringify({ bookingId: input.bookingId, role: input.role }),
28
+ });
29
+ return data;
30
+ },
31
+ onSuccess: (_, variables) => invalidate(variables.groupId, variables.bookingId),
32
+ });
33
+ const remove = useMutation({
34
+ mutationFn: async (input) => fetchWithValidation(`/v1/bookings/groups/${input.groupId}/members/${input.bookingId}`, successEnvelope, { baseUrl, fetcher }, { method: "DELETE" }),
35
+ onSuccess: (_, variables) => invalidate(variables.groupId, variables.bookingId),
36
+ });
37
+ return { add, remove };
38
+ }
@@ -0,0 +1,40 @@
1
+ export interface CreateBookingGroupInput {
2
+ kind?: "shared_room" | "other";
3
+ label: string;
4
+ primaryBookingId?: string | null;
5
+ productId?: string | null;
6
+ optionUnitId?: string | null;
7
+ metadata?: Record<string, unknown> | null;
8
+ }
9
+ export type UpdateBookingGroupInput = Partial<CreateBookingGroupInput>;
10
+ export declare function useBookingGroupMutation(): {
11
+ create: import("@tanstack/react-query").UseMutationResult<{
12
+ id: string;
13
+ kind: "other" | "shared_room";
14
+ label: string;
15
+ primaryBookingId: string | null;
16
+ productId: string | null;
17
+ optionUnitId: string | null;
18
+ metadata: Record<string, unknown> | null;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }, Error, CreateBookingGroupInput, unknown>;
22
+ update: import("@tanstack/react-query").UseMutationResult<{
23
+ id: string;
24
+ kind: "other" | "shared_room";
25
+ label: string;
26
+ primaryBookingId: string | null;
27
+ productId: string | null;
28
+ optionUnitId: string | null;
29
+ metadata: Record<string, unknown> | null;
30
+ createdAt: string;
31
+ updatedAt: string;
32
+ }, Error, {
33
+ id: string;
34
+ input: UpdateBookingGroupInput;
35
+ }, unknown>;
36
+ remove: import("@tanstack/react-query").UseMutationResult<{
37
+ success: boolean;
38
+ }, Error, string, unknown>;
39
+ };
40
+ //# sourceMappingURL=use-booking-group-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-group-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-group-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAEtE,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;YAsBK,MAAM;eAAS,uBAAuB;;;;;EAwBjF"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantBookingsContext } from "../provider.js";
5
+ import { bookingsQueryKeys } from "../query-keys.js";
6
+ import { bookingGroupSingleResponse, successEnvelope } from "../schemas.js";
7
+ export function useBookingGroupMutation() {
8
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
9
+ const queryClient = useQueryClient();
10
+ const invalidate = () => {
11
+ void queryClient.invalidateQueries({ queryKey: bookingsQueryKeys.groups() });
12
+ };
13
+ const create = useMutation({
14
+ mutationFn: async (input) => {
15
+ const { data } = await fetchWithValidation("/v1/bookings/groups", bookingGroupSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
16
+ return data;
17
+ },
18
+ onSuccess: invalidate,
19
+ });
20
+ const update = useMutation({
21
+ mutationFn: async ({ id, input }) => {
22
+ const { data } = await fetchWithValidation(`/v1/bookings/groups/${id}`, bookingGroupSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
23
+ return data;
24
+ },
25
+ onSuccess: invalidate,
26
+ });
27
+ const remove = useMutation({
28
+ mutationFn: async (id) => fetchWithValidation(`/v1/bookings/groups/${id}`, successEnvelope, { baseUrl, fetcher }, { method: "DELETE" }),
29
+ onSuccess: invalidate,
30
+ });
31
+ return { create, update, remove };
32
+ }
@@ -0,0 +1,41 @@
1
+ export interface UseBookingGroupOptions {
2
+ enabled?: boolean;
3
+ }
4
+ export declare function useBookingGroup(id: string | null | undefined, options?: UseBookingGroupOptions): import("@tanstack/react-query").UseQueryResult<{
5
+ data: {
6
+ id: string;
7
+ kind: "other" | "shared_room";
8
+ label: string;
9
+ primaryBookingId: string | null;
10
+ productId: string | null;
11
+ optionUnitId: string | null;
12
+ metadata: Record<string, unknown> | null;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ members: {
16
+ id: string;
17
+ groupId: string;
18
+ bookingId: string;
19
+ role: "primary" | "shared";
20
+ createdAt: string;
21
+ booking: {
22
+ id: string;
23
+ bookingNumber: string;
24
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
25
+ personId: string | null;
26
+ organizationId: string | null;
27
+ sellCurrency: string;
28
+ sellAmountCents: number | null;
29
+ costAmountCents: number | null;
30
+ marginPercent: number | null;
31
+ startDate: string | null;
32
+ endDate: string | null;
33
+ pax: number | null;
34
+ internalNotes: string | null;
35
+ createdAt: string;
36
+ updatedAt: string;
37
+ } | null;
38
+ }[];
39
+ };
40
+ }, Error>;
41
+ //# sourceMappingURL=use-booking-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-group.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-group.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,OAAO,GAAE,sBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UASrC"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantBookingsContext } from "../provider.js";
4
+ import { getBookingGroupQueryOptions } from "../query-options.js";
5
+ export function useBookingGroup(id, options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getBookingGroupQueryOptions({ baseUrl, fetcher }, id),
10
+ enabled: enabled && Boolean(id),
11
+ });
12
+ }
@@ -0,0 +1,21 @@
1
+ import type { BookingGroupsListFilters } from "../query-keys.js";
2
+ export interface UseBookingGroupsOptions extends BookingGroupsListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ export declare function useBookingGroups(options?: UseBookingGroupsOptions): import("@tanstack/react-query").UseQueryResult<{
6
+ data: {
7
+ id: string;
8
+ kind: "other" | "shared_room";
9
+ label: string;
10
+ primaryBookingId: string | null;
11
+ productId: string | null;
12
+ optionUnitId: string | null;
13
+ metadata: Record<string, unknown> | null;
14
+ createdAt: string;
15
+ updatedAt: string;
16
+ }[];
17
+ total: number;
18
+ limit: number;
19
+ offset: number;
20
+ }, Error>;
21
+ //# sourceMappingURL=use-booking-groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-groups.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-groups.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAGhE,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B;;;;;;;;;;;;;;;UAQrE"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { useVoyantBookingsContext } from "../provider.js";
4
+ import { getBookingGroupsQueryOptions } from "../query-options.js";
5
+ export function useBookingGroups(options = {}) {
6
+ const { baseUrl, fetcher } = useVoyantBookingsContext();
7
+ const { enabled = true } = options;
8
+ return useQuery({
9
+ ...getBookingGroupsQueryOptions({ baseUrl, fetcher }, options),
10
+ enabled,
11
+ });
12
+ }
@@ -0,0 +1,77 @@
1
+ export interface CreateBookingItemInput {
2
+ title: string;
3
+ itemType?: string;
4
+ status?: string;
5
+ quantity?: number;
6
+ sellCurrency: string;
7
+ unitSellAmountCents?: number | null;
8
+ totalSellAmountCents?: number | null;
9
+ costCurrency?: string | null;
10
+ unitCostAmountCents?: number | null;
11
+ totalCostAmountCents?: number | null;
12
+ serviceDate?: string | null;
13
+ startsAt?: string | null;
14
+ endsAt?: string | null;
15
+ description?: string | null;
16
+ notes?: string | null;
17
+ }
18
+ export type UpdateBookingItemInput = Partial<CreateBookingItemInput>;
19
+ export declare function useBookingItemMutation(bookingId: string): {
20
+ create: import("@tanstack/react-query").UseMutationResult<{
21
+ id: string;
22
+ bookingId: string;
23
+ title: string;
24
+ description: string | null;
25
+ itemType: "other" | "unit" | "extra" | "service" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
26
+ status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
27
+ serviceDate: string | null;
28
+ startsAt: string | null;
29
+ endsAt: string | null;
30
+ quantity: number;
31
+ sellCurrency: string;
32
+ unitSellAmountCents: number | null;
33
+ totalSellAmountCents: number | null;
34
+ costCurrency: string | null;
35
+ unitCostAmountCents: number | null;
36
+ totalCostAmountCents: number | null;
37
+ notes: string | null;
38
+ productId: string | null;
39
+ optionId: string | null;
40
+ optionUnitId: string | null;
41
+ pricingCategoryId: string | null;
42
+ createdAt: string;
43
+ updatedAt: string;
44
+ }, Error, CreateBookingItemInput, unknown>;
45
+ update: import("@tanstack/react-query").UseMutationResult<{
46
+ id: string;
47
+ bookingId: string;
48
+ title: string;
49
+ description: string | null;
50
+ itemType: "other" | "unit" | "extra" | "service" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
51
+ status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
52
+ serviceDate: string | null;
53
+ startsAt: string | null;
54
+ endsAt: string | null;
55
+ quantity: number;
56
+ sellCurrency: string;
57
+ unitSellAmountCents: number | null;
58
+ totalSellAmountCents: number | null;
59
+ costCurrency: string | null;
60
+ unitCostAmountCents: number | null;
61
+ totalCostAmountCents: number | null;
62
+ notes: string | null;
63
+ productId: string | null;
64
+ optionId: string | null;
65
+ optionUnitId: string | null;
66
+ pricingCategoryId: string | null;
67
+ createdAt: string;
68
+ updatedAt: string;
69
+ }, Error, {
70
+ id: string;
71
+ input: UpdateBookingItemInput;
72
+ }, unknown>;
73
+ remove: import("@tanstack/react-query").UseMutationResult<{
74
+ success: boolean;
75
+ }, Error, string, unknown>;
76
+ };
77
+ //# sourceMappingURL=use-booking-item-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-booking-item-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-booking-item-mutation.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAEpE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuBZ,MAAM;eAAS,sBAAsB;;;;;EAgChF"}