@voyantjs/crm-react 0.25.0 → 0.26.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.
@@ -3,5 +3,8 @@ export { type CreateOrganizationInput, type UpdateOrganizationInput, useOrganiza
3
3
  export { type UseOrganizationsOptions, useOrganizations } from "./use-organizations.js";
4
4
  export { type UsePeopleOptions, usePeople } from "./use-people.js";
5
5
  export { type UsePersonOptions, usePerson } from "./use-person.js";
6
- export { type CreatePersonInput, type UpdatePersonInput, usePersonMutation, } from "./use-person-mutation.js";
6
+ export { type CreatePersonDocumentFromPlaintextInput, type CreatePersonDocumentInput, type UpdatePersonDocumentFromPlaintextInput, type UpdatePersonDocumentInput, usePersonDocumentMutation, } from "./use-person-document-mutation.js";
7
+ export { type UsePersonDocumentsOptions, usePersonDocuments, } from "./use-person-documents.js";
8
+ export { type CreatePersonInput, type UpdatePersonInput, type UpdatePersonProfilePiiInput, usePersonMutation, } from "./use-person-mutation.js";
9
+ export { type UsePersonTravelSnapshotOptions, usePersonTravelSnapshot, } from "./use-person-travel-snapshot.js";
7
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,iBAAiB,GAClB,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EACL,KAAK,sCAAsC,EAC3C,KAAK,yBAAyB,EAC9B,KAAK,sCAAsC,EAC3C,KAAK,yBAAyB,EAC9B,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,KAAK,yBAAyB,EAC9B,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,iBAAiB,GAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,GACxB,MAAM,iCAAiC,CAAA"}
@@ -3,4 +3,7 @@ export { useOrganizationMutation, } from "./use-organization-mutation.js";
3
3
  export { useOrganizations } from "./use-organizations.js";
4
4
  export { usePeople } from "./use-people.js";
5
5
  export { usePerson } from "./use-person.js";
6
+ export { usePersonDocumentMutation, } from "./use-person-document-mutation.js";
7
+ export { usePersonDocuments, } from "./use-person-documents.js";
6
8
  export { usePersonMutation, } from "./use-person-mutation.js";
9
+ export { usePersonTravelSnapshot, } from "./use-person-travel-snapshot.js";
@@ -31,6 +31,18 @@ export declare function usePeople(options?: UsePeopleOptions): import("@tanstack
31
31
  email: string | null;
32
32
  phone: string | null;
33
33
  website: string | null;
34
+ accessibilityEncrypted?: {
35
+ enc: string;
36
+ } | null | undefined;
37
+ dietaryEncrypted?: {
38
+ enc: string;
39
+ } | null | undefined;
40
+ loyaltyEncrypted?: {
41
+ enc: string;
42
+ } | null | undefined;
43
+ insuranceEncrypted?: {
44
+ enc: string;
45
+ } | null | undefined;
34
46
  }[];
35
47
  total: number;
36
48
  limit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"use-people.d.ts","sourceRoot":"","sources":["../../src/hooks/use-people.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGvE,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAuBvD"}
1
+ {"version":3,"file":"use-people.d.ts","sourceRoot":"","sources":["../../src/hooks/use-people.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGvE,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAuBvD"}
@@ -0,0 +1,135 @@
1
+ import { type KmsEnvelopeRecord, type PersonDocumentType } from "../schemas.js";
2
+ export interface CreatePersonDocumentInput {
3
+ type: PersonDocumentType;
4
+ numberEncrypted?: KmsEnvelopeRecord;
5
+ issuingAuthority?: string | null;
6
+ issuingCountry?: string | null;
7
+ issueDate?: string | null;
8
+ expiryDate?: string | null;
9
+ attachmentId?: string | null;
10
+ isPrimary?: boolean;
11
+ notes?: string | null;
12
+ metadata?: Record<string, unknown> | null;
13
+ }
14
+ export type UpdatePersonDocumentInput = Partial<CreatePersonDocumentInput>;
15
+ export interface CreatePersonDocumentFromPlaintextInput {
16
+ type: PersonDocumentType;
17
+ /** Plaintext document number; the route encrypts server-side. */
18
+ number?: string | null;
19
+ issuingAuthority?: string | null;
20
+ issuingCountry?: string | null;
21
+ issueDate?: string | null;
22
+ expiryDate?: string | null;
23
+ attachmentId?: string | null;
24
+ isPrimary?: boolean;
25
+ notes?: string | null;
26
+ metadata?: Record<string, unknown> | null;
27
+ }
28
+ export type UpdatePersonDocumentFromPlaintextInput = Partial<CreatePersonDocumentFromPlaintextInput>;
29
+ /**
30
+ * Create / update / delete / set-primary mutations for person
31
+ * documents. Cache invalidation targets both the per-person list and
32
+ * the per-document detail key.
33
+ */
34
+ export declare function usePersonDocumentMutation(personId: string | undefined): {
35
+ create: import("@tanstack/react-query").UseMutationResult<{
36
+ id: string;
37
+ personId: string;
38
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
39
+ issuingAuthority: string | null;
40
+ issuingCountry: string | null;
41
+ issueDate: string | null;
42
+ expiryDate: string | null;
43
+ attachmentId: string | null;
44
+ isPrimary: boolean;
45
+ notes: string | null;
46
+ metadata: Record<string, unknown> | null;
47
+ createdAt: string;
48
+ updatedAt: string;
49
+ numberEncrypted?: {
50
+ enc: string;
51
+ } | null | undefined;
52
+ }, Error, CreatePersonDocumentInput, unknown>;
53
+ update: import("@tanstack/react-query").UseMutationResult<{
54
+ id: string;
55
+ personId: string;
56
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
57
+ issuingAuthority: string | null;
58
+ issuingCountry: string | null;
59
+ issueDate: string | null;
60
+ expiryDate: string | null;
61
+ attachmentId: string | null;
62
+ isPrimary: boolean;
63
+ notes: string | null;
64
+ metadata: Record<string, unknown> | null;
65
+ createdAt: string;
66
+ updatedAt: string;
67
+ numberEncrypted?: {
68
+ enc: string;
69
+ } | null | undefined;
70
+ }, Error, {
71
+ id: string;
72
+ input: UpdatePersonDocumentInput;
73
+ }, unknown>;
74
+ remove: import("@tanstack/react-query").UseMutationResult<{
75
+ success: boolean;
76
+ }, Error, string, unknown>;
77
+ setPrimary: import("@tanstack/react-query").UseMutationResult<{
78
+ id: string;
79
+ personId: string;
80
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
81
+ issuingAuthority: string | null;
82
+ issuingCountry: string | null;
83
+ issueDate: string | null;
84
+ expiryDate: string | null;
85
+ attachmentId: string | null;
86
+ isPrimary: boolean;
87
+ notes: string | null;
88
+ metadata: Record<string, unknown> | null;
89
+ createdAt: string;
90
+ updatedAt: string;
91
+ numberEncrypted?: {
92
+ enc: string;
93
+ } | null | undefined;
94
+ }, Error, string, unknown>;
95
+ createFromPlaintext: import("@tanstack/react-query").UseMutationResult<{
96
+ id: string;
97
+ personId: string;
98
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
99
+ issuingAuthority: string | null;
100
+ issuingCountry: string | null;
101
+ issueDate: string | null;
102
+ expiryDate: string | null;
103
+ attachmentId: string | null;
104
+ isPrimary: boolean;
105
+ notes: string | null;
106
+ metadata: Record<string, unknown> | null;
107
+ createdAt: string;
108
+ updatedAt: string;
109
+ numberEncrypted?: {
110
+ enc: string;
111
+ } | null | undefined;
112
+ }, Error, CreatePersonDocumentFromPlaintextInput, unknown>;
113
+ updateFromPlaintext: import("@tanstack/react-query").UseMutationResult<{
114
+ id: string;
115
+ personId: string;
116
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
117
+ issuingAuthority: string | null;
118
+ issuingCountry: string | null;
119
+ issueDate: string | null;
120
+ expiryDate: string | null;
121
+ attachmentId: string | null;
122
+ isPrimary: boolean;
123
+ notes: string | null;
124
+ metadata: Record<string, unknown> | null;
125
+ createdAt: string;
126
+ updatedAt: string;
127
+ numberEncrypted?: {
128
+ enc: string;
129
+ } | null | undefined;
130
+ }, Error, {
131
+ id: string;
132
+ input: UpdatePersonDocumentFromPlaintextInput;
133
+ }, unknown>;
134
+ };
135
+ //# sourceMappingURL=use-person-document-mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-person-document-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person-document-mutation.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAA;AAEtB,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAA;IACxB,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;AAE1E,MAAM,WAAW,sCAAsC;IACrD,IAAI,EAAE,kBAAkB,CAAA;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,MAAM,sCAAsC,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAA;AAIpG;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2B1B,MAAM;eAAS,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuE1E,MAAM;eACH,sCAAsC;;EAiBlD"}
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { z } from "zod";
4
+ import { fetchWithValidation } from "../client.js";
5
+ import { useVoyantContext } from "../provider.js";
6
+ import { crmQueryKeys } from "../query-keys.js";
7
+ import { personDocumentSingleResponse, } from "../schemas.js";
8
+ const deleteResponseSchema = z.object({ success: z.boolean() });
9
+ /**
10
+ * Create / update / delete / set-primary mutations for person
11
+ * documents. Cache invalidation targets both the per-person list and
12
+ * the per-document detail key.
13
+ */
14
+ export function usePersonDocumentMutation(personId) {
15
+ const { baseUrl, fetcher } = useVoyantContext();
16
+ const queryClient = useQueryClient();
17
+ const invalidate = () => {
18
+ if (personId) {
19
+ void queryClient.invalidateQueries({
20
+ queryKey: [...crmQueryKeys.person(personId), "documents"],
21
+ });
22
+ }
23
+ };
24
+ const create = useMutation({
25
+ mutationFn: async (input) => {
26
+ if (!personId)
27
+ throw new Error("usePersonDocumentMutation requires a personId");
28
+ const { data } = await fetchWithValidation(`/v1/crm/people/${personId}/documents`, personDocumentSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
29
+ return data;
30
+ },
31
+ onSuccess: invalidate,
32
+ });
33
+ const update = useMutation({
34
+ mutationFn: async ({ id, input }) => {
35
+ const { data } = await fetchWithValidation(`/v1/crm/person-documents/${id}`, personDocumentSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
36
+ return data;
37
+ },
38
+ onSuccess: (data) => {
39
+ invalidate();
40
+ queryClient.setQueryData(crmQueryKeys.personDocument(data.id), data);
41
+ },
42
+ });
43
+ const remove = useMutation({
44
+ mutationFn: async (id) => {
45
+ return fetchWithValidation(`/v1/crm/person-documents/${id}`, deleteResponseSchema, { baseUrl, fetcher }, { method: "DELETE" });
46
+ },
47
+ onSuccess: (_data, id) => {
48
+ invalidate();
49
+ queryClient.removeQueries({ queryKey: crmQueryKeys.personDocument(id) });
50
+ },
51
+ });
52
+ const setPrimary = useMutation({
53
+ mutationFn: async (id) => {
54
+ const { data } = await fetchWithValidation(`/v1/crm/person-documents/${id}/set-primary`, personDocumentSingleResponse, { baseUrl, fetcher }, { method: "POST" });
55
+ return data;
56
+ },
57
+ onSuccess: (data) => {
58
+ invalidate();
59
+ queryClient.setQueryData(crmQueryKeys.personDocument(data.id), data);
60
+ },
61
+ });
62
+ /**
63
+ * Plaintext create — caller passes `number` as cleartext, the route
64
+ * encrypts server-side. Used by the operator booking-traveler
65
+ * "Save to profile" affordance when a passport doc doesn't yet
66
+ * exist for the linked person.
67
+ */
68
+ const createFromPlaintext = useMutation({
69
+ mutationFn: async (input) => {
70
+ if (!personId)
71
+ throw new Error("usePersonDocumentMutation requires a personId");
72
+ const { data } = await fetchWithValidation(`/v1/crm/people/${personId}/documents/from-plaintext`, personDocumentSingleResponse, { baseUrl, fetcher }, { method: "POST", body: JSON.stringify(input) });
73
+ return data;
74
+ },
75
+ onSuccess: invalidate,
76
+ });
77
+ const updateFromPlaintext = useMutation({
78
+ mutationFn: async ({ id, input, }) => {
79
+ const { data } = await fetchWithValidation(`/v1/crm/person-documents/${id}/from-plaintext`, personDocumentSingleResponse, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
80
+ return data;
81
+ },
82
+ onSuccess: (data) => {
83
+ invalidate();
84
+ queryClient.setQueryData(crmQueryKeys.personDocument(data.id), data);
85
+ },
86
+ });
87
+ return { create, update, remove, setPrimary, createFromPlaintext, updateFromPlaintext };
88
+ }
@@ -0,0 +1,31 @@
1
+ import { type PersonDocumentsListFilters } from "../query-keys.js";
2
+ export interface UsePersonDocumentsOptions extends PersonDocumentsListFilters {
3
+ enabled?: boolean;
4
+ }
5
+ /**
6
+ * Lists identity documents for a person. The list includes encrypted
7
+ * passport/ID numbers as KMS envelopes — consumers display structured
8
+ * fields (type, expiry, country) and gate the decrypted number behind
9
+ * a separate request.
10
+ */
11
+ export declare function usePersonDocuments(personId: string | undefined, options?: UsePersonDocumentsOptions): import("@tanstack/react-query").UseQueryResult<{
12
+ data: {
13
+ id: string;
14
+ personId: string;
15
+ type: "passport" | "id_card" | "driver_license" | "visa" | "other";
16
+ issuingAuthority: string | null;
17
+ issuingCountry: string | null;
18
+ issueDate: string | null;
19
+ expiryDate: string | null;
20
+ attachmentId: string | null;
21
+ isPrimary: boolean;
22
+ notes: string | null;
23
+ metadata: Record<string, unknown> | null;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ numberEncrypted?: {
27
+ enc: string;
28
+ } | null | undefined;
29
+ }[];
30
+ }, Error>;
31
+ //# sourceMappingURL=use-person-documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-person-documents.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person-documents.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAGhF,MAAM,WAAW,yBAA0B,SAAQ,0BAA0B;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;UAuBxC"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantContext } from "../provider.js";
5
+ import { crmQueryKeys } from "../query-keys.js";
6
+ import { personDocumentListResponse } from "../schemas.js";
7
+ /**
8
+ * Lists identity documents for a person. The list includes encrypted
9
+ * passport/ID numbers as KMS envelopes — consumers display structured
10
+ * fields (type, expiry, country) and gate the decrypted number behind
11
+ * a separate request.
12
+ */
13
+ export function usePersonDocuments(personId, options = {}) {
14
+ const { baseUrl, fetcher } = useVoyantContext();
15
+ const { enabled = true, ...filters } = options;
16
+ return useQuery({
17
+ queryKey: crmQueryKeys.personDocuments(personId ?? "", filters),
18
+ queryFn: async () => {
19
+ if (!personId)
20
+ throw new Error("usePersonDocuments requires a personId");
21
+ const params = new URLSearchParams();
22
+ if (filters.type)
23
+ params.set("type", filters.type);
24
+ if (filters.expiringBefore)
25
+ params.set("expiringBefore", filters.expiringBefore);
26
+ if (filters.limit !== undefined)
27
+ params.set("limit", String(filters.limit));
28
+ if (filters.offset !== undefined)
29
+ params.set("offset", String(filters.offset));
30
+ const qs = params.toString();
31
+ return fetchWithValidation(`/v1/crm/people/${personId}/documents${qs ? `?${qs}` : ""}`, personDocumentListResponse, { baseUrl, fetcher });
32
+ },
33
+ enabled: enabled && Boolean(personId),
34
+ });
35
+ }
@@ -1,3 +1,4 @@
1
+ import { type KmsEnvelopeRecord } from "../schemas.js";
1
2
  export interface CreatePersonInput {
2
3
  firstName: string;
3
4
  lastName: string;
@@ -10,9 +11,19 @@ export interface CreatePersonInput {
10
11
  website?: string | null;
11
12
  tags?: string[];
12
13
  notes?: string | null;
14
+ accessibilityEncrypted?: KmsEnvelopeRecord;
15
+ dietaryEncrypted?: KmsEnvelopeRecord;
16
+ loyaltyEncrypted?: KmsEnvelopeRecord;
17
+ insuranceEncrypted?: KmsEnvelopeRecord;
13
18
  [key: string]: unknown;
14
19
  }
15
20
  export type UpdatePersonInput = Partial<CreatePersonInput>;
21
+ export interface UpdatePersonProfilePiiInput {
22
+ accessibility?: string | null;
23
+ dietary?: string | null;
24
+ loyalty?: string | null;
25
+ insurance?: string | null;
26
+ }
16
27
  /**
17
28
  * Create, update, and delete mutations for people. All three share a single
18
29
  * hook so the component can pick the action it needs. TanStack Query cache is
@@ -42,6 +53,18 @@ export declare function usePersonMutation(): {
42
53
  email: string | null;
43
54
  phone: string | null;
44
55
  website: string | null;
56
+ accessibilityEncrypted?: {
57
+ enc: string;
58
+ } | null | undefined;
59
+ dietaryEncrypted?: {
60
+ enc: string;
61
+ } | null | undefined;
62
+ loyaltyEncrypted?: {
63
+ enc: string;
64
+ } | null | undefined;
65
+ insuranceEncrypted?: {
66
+ enc: string;
67
+ } | null | undefined;
45
68
  }, Error, CreatePersonInput, unknown>;
46
69
  update: import("@tanstack/react-query").UseMutationResult<{
47
70
  id: string;
@@ -66,6 +89,18 @@ export declare function usePersonMutation(): {
66
89
  email: string | null;
67
90
  phone: string | null;
68
91
  website: string | null;
92
+ accessibilityEncrypted?: {
93
+ enc: string;
94
+ } | null | undefined;
95
+ dietaryEncrypted?: {
96
+ enc: string;
97
+ } | null | undefined;
98
+ loyaltyEncrypted?: {
99
+ enc: string;
100
+ } | null | undefined;
101
+ insuranceEncrypted?: {
102
+ enc: string;
103
+ } | null | undefined;
69
104
  }, Error, {
70
105
  id: string;
71
106
  input: UpdatePersonInput;
@@ -73,5 +108,11 @@ export declare function usePersonMutation(): {
73
108
  remove: import("@tanstack/react-query").UseMutationResult<{
74
109
  success: boolean;
75
110
  }, Error, string, unknown>;
111
+ updateProfilePii: import("@tanstack/react-query").UseMutationResult<{
112
+ success: boolean;
113
+ }, Error, {
114
+ personId: string;
115
+ input: UpdatePersonProfilePiiInput;
116
+ }, unknown>;
76
117
  };
77
118
  //# sourceMappingURL=use-person-mutation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-person-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person-mutation.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAI1D;;;;GAIG;AACH,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoBW,MAAM;eAAS,iBAAiB;;;;;EA+B3E"}
1
+ {"version":3,"file":"use-person-mutation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person-mutation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,eAAe,CAAA;AAE5E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,sBAAsB,CAAC,EAAE,iBAAiB,CAAA;IAC1C,gBAAgB,CAAC,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,CAAA;IACpC,kBAAkB,CAAC,EAAE,iBAAiB,CAAA;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoBW,MAAM;eAAS,iBAAiB;;;;;;;;kBAwC5D,MAAM;eACT,2BAA2B;;EAkBvC"}
@@ -6,6 +6,7 @@ import { useVoyantContext } from "../provider.js";
6
6
  import { crmQueryKeys } from "../query-keys.js";
7
7
  import { personSingleResponse } from "../schemas.js";
8
8
  const deleteResponseSchema = z.object({ success: z.boolean() });
9
+ const successResponseSchema = z.object({ success: z.boolean() });
9
10
  /**
10
11
  * Create, update, and delete mutations for people. All three share a single
11
12
  * hook so the component can pick the action it needs. TanStack Query cache is
@@ -42,5 +43,21 @@ export function usePersonMutation() {
42
43
  queryClient.removeQueries({ queryKey: crmQueryKeys.person(id) });
43
44
  },
44
45
  });
45
- return { create, update, remove };
46
+ /**
47
+ * Plaintext PATCH for the four free-text PII slots. Server-side
48
+ * encryption against the people KMS key. Used by the operator
49
+ * "Save to profile" affordance after a booking-traveler edit.
50
+ */
51
+ const updateProfilePii = useMutation({
52
+ mutationFn: async ({ personId, input, }) => {
53
+ return fetchWithValidation(`/v1/crm/people/${personId}/profile-pii`, successResponseSchema, { baseUrl, fetcher }, { method: "PATCH", body: JSON.stringify(input) });
54
+ },
55
+ onSuccess: (_data, variables) => {
56
+ void queryClient.invalidateQueries({ queryKey: crmQueryKeys.person(variables.personId) });
57
+ void queryClient.invalidateQueries({
58
+ queryKey: crmQueryKeys.personTravelSnapshot(variables.personId),
59
+ });
60
+ },
61
+ });
62
+ return { create, update, remove, updateProfilePii };
46
63
  }
@@ -0,0 +1,22 @@
1
+ export interface UsePersonTravelSnapshotOptions {
2
+ enabled?: boolean;
3
+ }
4
+ /**
5
+ * Decrypted snapshot of a person's primary passport + dietary +
6
+ * accessibility values. Used by the operator booking-traveler dialog
7
+ * to pre-fill snapshot fields when an operator picks an existing
8
+ * person.
9
+ */
10
+ export declare function usePersonTravelSnapshot(personId: string | undefined, options?: UsePersonTravelSnapshotOptions): import("@tanstack/react-query").UseQueryResult<{
11
+ data: {
12
+ dateOfBirth: string | null;
13
+ dietaryRequirements: string | null;
14
+ accessibilityNeeds: string | null;
15
+ passportNumber: string | null;
16
+ passportExpiry: string | null;
17
+ passportIssuingCountry: string | null;
18
+ passportIssuingAuthority: string | null;
19
+ passportPersonDocumentId: string | null;
20
+ };
21
+ }, Error>;
22
+ //# sourceMappingURL=use-person-travel-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-person-travel-snapshot.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person-travel-snapshot.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,8BAAmC;;;;;;;;;;;UAkB7C"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { fetchWithValidation } from "../client.js";
4
+ import { useVoyantContext } from "../provider.js";
5
+ import { crmQueryKeys } from "../query-keys.js";
6
+ import { personTravelSnapshotResponse } from "../schemas.js";
7
+ /**
8
+ * Decrypted snapshot of a person's primary passport + dietary +
9
+ * accessibility values. Used by the operator booking-traveler dialog
10
+ * to pre-fill snapshot fields when an operator picks an existing
11
+ * person.
12
+ */
13
+ export function usePersonTravelSnapshot(personId, options = {}) {
14
+ const { baseUrl, fetcher } = useVoyantContext();
15
+ const { enabled = true } = options;
16
+ return useQuery({
17
+ queryKey: crmQueryKeys.personTravelSnapshot(personId ?? ""),
18
+ queryFn: async () => {
19
+ if (!personId)
20
+ throw new Error("usePersonTravelSnapshot requires a personId");
21
+ return fetchWithValidation(`/v1/crm/people/${personId}/travel-snapshot`, personTravelSnapshotResponse, { baseUrl, fetcher });
22
+ },
23
+ enabled: enabled && Boolean(personId),
24
+ staleTime: 30_000,
25
+ });
26
+ }
@@ -29,5 +29,17 @@ export declare function usePerson(id: string | undefined, options?: UsePersonOpt
29
29
  email: string | null;
30
30
  phone: string | null;
31
31
  website: string | null;
32
+ accessibilityEncrypted?: {
33
+ enc: string;
34
+ } | null | undefined;
35
+ dietaryEncrypted?: {
36
+ enc: string;
37
+ } | null | undefined;
38
+ loyaltyEncrypted?: {
39
+ enc: string;
40
+ } | null | undefined;
41
+ insuranceEncrypted?: {
42
+ enc: string;
43
+ } | null | undefined;
32
44
  }, Error>;
33
45
  //# sourceMappingURL=use-person.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-person.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;UAgB/E"}
1
+ {"version":3,"file":"use-person.d.ts","sourceRoot":"","sources":["../../src/hooks/use-person.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAgB/E"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,10 @@ export { type CreateOrganizationInput, type UpdateOrganizationInput, useOrganiza
10
10
  export { type UseOrganizationsOptions, useOrganizations, } from "./hooks/use-organizations.js";
11
11
  export { type UsePeopleOptions, usePeople } from "./hooks/use-people.js";
12
12
  export { type UsePersonOptions, usePerson } from "./hooks/use-person.js";
13
- export { type CreatePersonInput, type UpdatePersonInput, usePersonMutation, } from "./hooks/use-person-mutation.js";
13
+ export { type CreatePersonDocumentFromPlaintextInput, type CreatePersonDocumentInput, type UpdatePersonDocumentFromPlaintextInput, type UpdatePersonDocumentInput, usePersonDocumentMutation, } from "./hooks/use-person-document-mutation.js";
14
+ export { type UsePersonDocumentsOptions, usePersonDocuments, } from "./hooks/use-person-documents.js";
15
+ export { type CreatePersonInput, type UpdatePersonInput, type UpdatePersonProfilePiiInput, usePersonMutation, } from "./hooks/use-person-mutation.js";
16
+ export { type UsePersonTravelSnapshotOptions, usePersonTravelSnapshot, } from "./hooks/use-person-travel-snapshot.js";
14
17
  export { type CreatePipelineInput, type CreateStageInput, type UpdatePipelineInput, type UpdateStageInput, usePipelineMutation, } from "./hooks/use-pipeline-mutation.js";
15
18
  export { type UsePipelineOptions, type UsePipelinesOptions, usePipeline, usePipelines, } from "./hooks/use-pipelines.js";
16
19
  export { type UseQuoteOptions, useQuote, useQuoteLines, } from "./hooks/use-quote.js";
@@ -18,7 +21,7 @@ export { type CreateQuoteInput, type CreateQuoteLineInput, type UpdateQuoteInput
18
21
  export { type UseQuotesOptions, useQuotes, } from "./hooks/use-quotes.js";
19
22
  export { type UseStageOptions, type UseStagesOptions, useStage, useStages, } from "./hooks/use-stages.js";
20
23
  export { useVoyantContext, type VoyantContextValue, VoyantProvider, type VoyantProviderProps, } from "./provider.js";
21
- export { type ActivitiesListFilters, crmQueryKeys, type OpportunitiesListFilters, type OrganizationsListFilters, type PeopleListFilters, type PipelinesListFilters, type QuotesListFilters, type StagesListFilters, } from "./query-keys.js";
24
+ export { type ActivitiesListFilters, crmQueryKeys, type OpportunitiesListFilters, type OrganizationsListFilters, type PeopleListFilters, type PersonDocumentsListFilters, type PipelinesListFilters, type QuotesListFilters, type StagesListFilters, } from "./query-keys.js";
22
25
  export { getActivitiesQueryOptions, getOpportunitiesQueryOptions, getOpportunityQueryOptions, getOrganizationQueryOptions, getOrganizationsQueryOptions, getPeopleQueryOptions, getPersonActivitiesQueryOptions, getPersonNotesQueryOptions, getPersonOpportunitiesQueryOptions, getPersonQueryOptions, getPipelineQueryOptions, getPipelinesQueryOptions, getQuoteLinesQueryOptions, getQuoteQueryOptions, getQuotesQueryOptions, getStageQueryOptions, getStagesQueryOptions, } from "./query-options.js";
23
- export { type ActivityLinkRecord, type ActivityRecord, activityLinkRecordSchema, activityRecordSchema, type OpportunityRecord, type OrganizationRecord, opportunityRecordSchema, organizationRecordSchema, type PersonNoteRecord, type PersonRecord, type PipelineRecord, personNoteRecordSchema, personRecordSchema, pipelineRecordSchema, type QuoteLineRecord, type QuoteRecord, quoteLineRecordSchema, quoteRecordSchema, type StageRecord, stageRecordSchema, } from "./schemas.js";
26
+ export { type ActivityLinkRecord, type ActivityRecord, activityLinkRecordSchema, activityRecordSchema, type KmsEnvelopeRecord, kmsEnvelopeRecordSchema, type OpportunityRecord, type OrganizationRecord, opportunityRecordSchema, organizationRecordSchema, type PersonDocumentRecord, type PersonDocumentType, type PersonNoteRecord, type PersonRecord, type PersonTravelSnapshotRecord, type PipelineRecord, personDocumentRecordSchema, personDocumentTypeSchema, personNoteRecordSchema, personRecordSchema, personTravelSnapshotSchema, pipelineRecordSchema, type QuoteLineRecord, type QuoteRecord, quoteLineRecordSchema, quoteRecordSchema, type StageRecord, stageRecordSchema, } from "./schemas.js";
24
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,7 +10,10 @@ export { useOrganizationMutation, } from "./hooks/use-organization-mutation.js";
10
10
  export { useOrganizations, } from "./hooks/use-organizations.js";
11
11
  export { usePeople } from "./hooks/use-people.js";
12
12
  export { usePerson } from "./hooks/use-person.js";
13
+ export { usePersonDocumentMutation, } from "./hooks/use-person-document-mutation.js";
14
+ export { usePersonDocuments, } from "./hooks/use-person-documents.js";
13
15
  export { usePersonMutation, } from "./hooks/use-person-mutation.js";
16
+ export { usePersonTravelSnapshot, } from "./hooks/use-person-travel-snapshot.js";
14
17
  export { usePipelineMutation, } from "./hooks/use-pipeline-mutation.js";
15
18
  export { usePipeline, usePipelines, } from "./hooks/use-pipelines.js";
16
19
  export { useQuote, useQuoteLines, } from "./hooks/use-quote.js";
@@ -20,4 +23,4 @@ export { useStage, useStages, } from "./hooks/use-stages.js";
20
23
  export { useVoyantContext, VoyantProvider, } from "./provider.js";
21
24
  export { crmQueryKeys, } from "./query-keys.js";
22
25
  export { getActivitiesQueryOptions, getOpportunitiesQueryOptions, getOpportunityQueryOptions, getOrganizationQueryOptions, getOrganizationsQueryOptions, getPeopleQueryOptions, getPersonActivitiesQueryOptions, getPersonNotesQueryOptions, getPersonOpportunitiesQueryOptions, getPersonQueryOptions, getPipelineQueryOptions, getPipelinesQueryOptions, getQuoteLinesQueryOptions, getQuoteQueryOptions, getQuotesQueryOptions, getStageQueryOptions, getStagesQueryOptions, } from "./query-options.js";
23
- export { activityLinkRecordSchema, activityRecordSchema, opportunityRecordSchema, organizationRecordSchema, personNoteRecordSchema, personRecordSchema, pipelineRecordSchema, quoteLineRecordSchema, quoteRecordSchema, stageRecordSchema, } from "./schemas.js";
26
+ export { activityLinkRecordSchema, activityRecordSchema, kmsEnvelopeRecordSchema, opportunityRecordSchema, organizationRecordSchema, personDocumentRecordSchema, personDocumentTypeSchema, personNoteRecordSchema, personRecordSchema, personTravelSnapshotSchema, pipelineRecordSchema, quoteLineRecordSchema, quoteRecordSchema, stageRecordSchema, } from "./schemas.js";
@@ -56,11 +56,20 @@ export interface QuotesListFilters {
56
56
  limit?: number | undefined;
57
57
  offset?: number | undefined;
58
58
  }
59
+ export interface PersonDocumentsListFilters {
60
+ type?: string | undefined;
61
+ expiringBefore?: string | undefined;
62
+ limit?: number | undefined;
63
+ offset?: number | undefined;
64
+ }
59
65
  export declare const crmQueryKeys: {
60
66
  readonly all: readonly ["voyant", "crm"];
61
67
  readonly people: () => readonly ["voyant", "crm", "people"];
62
68
  readonly peopleList: (filters: PeopleListFilters) => readonly ["voyant", "crm", "people", "list", PeopleListFilters];
63
69
  readonly person: (id: string) => readonly ["voyant", "crm", "people", "detail", string];
70
+ readonly personDocuments: (personId: string, filters?: PersonDocumentsListFilters) => readonly ["voyant", "crm", "people", "detail", string, "documents", PersonDocumentsListFilters];
71
+ readonly personDocument: (id: string) => readonly ["voyant", "crm", "person-documents", "detail", string];
72
+ readonly personTravelSnapshot: (personId: string) => readonly ["voyant", "crm", "people", "detail", string, "travel-snapshot"];
64
73
  readonly organizations: () => readonly ["voyant", "crm", "organizations"];
65
74
  readonly organizationsList: (filters: OrganizationsListFilters) => readonly ["voyant", "crm", "organizations", "list", OrganizationsListFilters];
66
75
  readonly organization: (id: string) => readonly ["voyant", "crm", "organizations", "detail", string];
@@ -1 +1 @@
1
- {"version":3,"file":"query-keys.d.ts","sourceRoot":"","sources":["../src/query-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-keys.d.ts","sourceRoot":"","sources":["../src/query-keys.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ export const crmQueryKeys = {
7
7
  people: () => [...crmQueryKeys.all, "people"],
8
8
  peopleList: (filters) => [...crmQueryKeys.people(), "list", filters],
9
9
  person: (id) => [...crmQueryKeys.people(), "detail", id],
10
+ personDocuments: (personId, filters = {}) => [...crmQueryKeys.person(personId), "documents", filters],
11
+ personDocument: (id) => [...crmQueryKeys.all, "person-documents", "detail", id],
12
+ personTravelSnapshot: (personId) => [...crmQueryKeys.person(personId), "travel-snapshot"],
10
13
  organizations: () => [...crmQueryKeys.all, "organizations"],
11
14
  organizationsList: (filters) => [...crmQueryKeys.organizations(), "list", filters],
12
15
  organization: (id) => [...crmQueryKeys.organizations(), "detail", id],
@@ -106,6 +106,18 @@ export declare function getPeopleQueryOptions(client: FetchWithValidationOptions
106
106
  email: string | null;
107
107
  phone: string | null;
108
108
  website: string | null;
109
+ accessibilityEncrypted?: {
110
+ enc: string;
111
+ } | null | undefined;
112
+ dietaryEncrypted?: {
113
+ enc: string;
114
+ } | null | undefined;
115
+ loyaltyEncrypted?: {
116
+ enc: string;
117
+ } | null | undefined;
118
+ insuranceEncrypted?: {
119
+ enc: string;
120
+ } | null | undefined;
109
121
  }[];
110
122
  total: number;
111
123
  limit: number;
@@ -134,6 +146,18 @@ export declare function getPeopleQueryOptions(client: FetchWithValidationOptions
134
146
  email: string | null;
135
147
  phone: string | null;
136
148
  website: string | null;
149
+ accessibilityEncrypted?: {
150
+ enc: string;
151
+ } | null | undefined;
152
+ dietaryEncrypted?: {
153
+ enc: string;
154
+ } | null | undefined;
155
+ loyaltyEncrypted?: {
156
+ enc: string;
157
+ } | null | undefined;
158
+ insuranceEncrypted?: {
159
+ enc: string;
160
+ } | null | undefined;
137
161
  }[];
138
162
  total: number;
139
163
  limit: number;
@@ -163,6 +187,18 @@ export declare function getPeopleQueryOptions(client: FetchWithValidationOptions
163
187
  email: string | null;
164
188
  phone: string | null;
165
189
  website: string | null;
190
+ accessibilityEncrypted?: {
191
+ enc: string;
192
+ } | null | undefined;
193
+ dietaryEncrypted?: {
194
+ enc: string;
195
+ } | null | undefined;
196
+ loyaltyEncrypted?: {
197
+ enc: string;
198
+ } | null | undefined;
199
+ insuranceEncrypted?: {
200
+ enc: string;
201
+ } | null | undefined;
166
202
  }[];
167
203
  total: number;
168
204
  limit: number;
@@ -194,6 +230,18 @@ export declare function getPeopleQueryOptions(client: FetchWithValidationOptions
194
230
  email: string | null;
195
231
  phone: string | null;
196
232
  website: string | null;
233
+ accessibilityEncrypted?: {
234
+ enc: string;
235
+ } | null | undefined;
236
+ dietaryEncrypted?: {
237
+ enc: string;
238
+ } | null | undefined;
239
+ loyaltyEncrypted?: {
240
+ enc: string;
241
+ } | null | undefined;
242
+ insuranceEncrypted?: {
243
+ enc: string;
244
+ } | null | undefined;
197
245
  }[];
198
246
  total: number;
199
247
  limit: number;
@@ -225,6 +273,18 @@ export declare function getPersonQueryOptions(client: FetchWithValidationOptions
225
273
  email: string | null;
226
274
  phone: string | null;
227
275
  website: string | null;
276
+ accessibilityEncrypted?: {
277
+ enc: string;
278
+ } | null | undefined;
279
+ dietaryEncrypted?: {
280
+ enc: string;
281
+ } | null | undefined;
282
+ loyaltyEncrypted?: {
283
+ enc: string;
284
+ } | null | undefined;
285
+ insuranceEncrypted?: {
286
+ enc: string;
287
+ } | null | undefined;
228
288
  }, Error, {
229
289
  id: string;
230
290
  organizationId: string | null;
@@ -248,6 +308,18 @@ export declare function getPersonQueryOptions(client: FetchWithValidationOptions
248
308
  email: string | null;
249
309
  phone: string | null;
250
310
  website: string | null;
311
+ accessibilityEncrypted?: {
312
+ enc: string;
313
+ } | null | undefined;
314
+ dietaryEncrypted?: {
315
+ enc: string;
316
+ } | null | undefined;
317
+ loyaltyEncrypted?: {
318
+ enc: string;
319
+ } | null | undefined;
320
+ insuranceEncrypted?: {
321
+ enc: string;
322
+ } | null | undefined;
251
323
  }, readonly ["voyant", "crm", "people", "detail", string]>, "queryFn"> & {
252
324
  queryFn?: import("@tanstack/react-query").QueryFunction<{
253
325
  id: string;
@@ -272,6 +344,18 @@ export declare function getPersonQueryOptions(client: FetchWithValidationOptions
272
344
  email: string | null;
273
345
  phone: string | null;
274
346
  website: string | null;
347
+ accessibilityEncrypted?: {
348
+ enc: string;
349
+ } | null | undefined;
350
+ dietaryEncrypted?: {
351
+ enc: string;
352
+ } | null | undefined;
353
+ loyaltyEncrypted?: {
354
+ enc: string;
355
+ } | null | undefined;
356
+ insuranceEncrypted?: {
357
+ enc: string;
358
+ } | null | undefined;
275
359
  }, readonly ["voyant", "crm", "people", "detail", string], never> | undefined;
276
360
  } & {
277
361
  queryKey: readonly ["voyant", "crm", "people", "detail", string] & {
@@ -298,6 +382,18 @@ export declare function getPersonQueryOptions(client: FetchWithValidationOptions
298
382
  email: string | null;
299
383
  phone: string | null;
300
384
  website: string | null;
385
+ accessibilityEncrypted?: {
386
+ enc: string;
387
+ } | null | undefined;
388
+ dietaryEncrypted?: {
389
+ enc: string;
390
+ } | null | undefined;
391
+ loyaltyEncrypted?: {
392
+ enc: string;
393
+ } | null | undefined;
394
+ insuranceEncrypted?: {
395
+ enc: string;
396
+ } | null | undefined;
301
397
  };
302
398
  [dataTagErrorSymbol]: Error;
303
399
  };
@@ -1 +1 @@
1
- {"version":3,"file":"query-options.d.ts","sourceRoot":"","sources":["../src/query-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-options.d.ts","sourceRoot":"","sources":["../src/query-options.ts"],"names":[],"mappings":"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"}
package/dist/schemas.d.ts CHANGED
@@ -25,6 +25,15 @@ export declare const successEnvelope: z.ZodObject<{
25
25
  * consumers to depend on the Drizzle type inference chain. The hooks expose
26
26
  * these as `z.infer` types; keep in sync with `packages/crm/src/schema.ts`.
27
27
  */
28
+ /**
29
+ * KMS-encrypted envelope shape — `{ enc: base64 }`. Mirrors the
30
+ * `kmsEnvelopeSchema` in `@voyantjs/db/schema/iam/kms` (kept inline
31
+ * here so crm-react has no server-side schema dep).
32
+ */
33
+ export declare const kmsEnvelopeRecordSchema: z.ZodNullable<z.ZodObject<{
34
+ enc: z.ZodString;
35
+ }, z.core.$strip>>;
36
+ export type KmsEnvelopeRecord = z.infer<typeof kmsEnvelopeRecordSchema>;
28
37
  export declare const personRecordSchema: z.ZodObject<{
29
38
  id: z.ZodString;
30
39
  organizationId: z.ZodNullable<z.ZodString>;
@@ -47,6 +56,18 @@ export declare const personRecordSchema: z.ZodObject<{
47
56
  tags: z.ZodArray<z.ZodString>;
48
57
  birthday: z.ZodNullable<z.ZodString>;
49
58
  notes: z.ZodNullable<z.ZodString>;
59
+ accessibilityEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
60
+ enc: z.ZodString;
61
+ }, z.core.$strip>>>;
62
+ dietaryEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
63
+ enc: z.ZodString;
64
+ }, z.core.$strip>>>;
65
+ loyaltyEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
66
+ enc: z.ZodString;
67
+ }, z.core.$strip>>>;
68
+ insuranceEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
69
+ enc: z.ZodString;
70
+ }, z.core.$strip>>>;
50
71
  createdAt: z.ZodString;
51
72
  updatedAt: z.ZodString;
52
73
  email: z.ZodNullable<z.ZodString>;
@@ -98,6 +119,18 @@ export declare const personListResponse: z.ZodObject<{
98
119
  tags: z.ZodArray<z.ZodString>;
99
120
  birthday: z.ZodNullable<z.ZodString>;
100
121
  notes: z.ZodNullable<z.ZodString>;
122
+ accessibilityEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
123
+ enc: z.ZodString;
124
+ }, z.core.$strip>>>;
125
+ dietaryEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
126
+ enc: z.ZodString;
127
+ }, z.core.$strip>>>;
128
+ loyaltyEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
129
+ enc: z.ZodString;
130
+ }, z.core.$strip>>>;
131
+ insuranceEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
132
+ enc: z.ZodString;
133
+ }, z.core.$strip>>>;
101
134
  createdAt: z.ZodString;
102
135
  updatedAt: z.ZodString;
103
136
  email: z.ZodNullable<z.ZodString>;
@@ -131,6 +164,18 @@ export declare const personSingleResponse: z.ZodObject<{
131
164
  tags: z.ZodArray<z.ZodString>;
132
165
  birthday: z.ZodNullable<z.ZodString>;
133
166
  notes: z.ZodNullable<z.ZodString>;
167
+ accessibilityEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
168
+ enc: z.ZodString;
169
+ }, z.core.$strip>>>;
170
+ dietaryEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
171
+ enc: z.ZodString;
172
+ }, z.core.$strip>>>;
173
+ loyaltyEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
174
+ enc: z.ZodString;
175
+ }, z.core.$strip>>>;
176
+ insuranceEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
177
+ enc: z.ZodString;
178
+ }, z.core.$strip>>>;
134
179
  createdAt: z.ZodString;
135
180
  updatedAt: z.ZodString;
136
181
  email: z.ZodNullable<z.ZodString>;
@@ -433,6 +478,114 @@ export declare const personNoteListResponse: z.ZodObject<{
433
478
  createdAt: z.ZodString;
434
479
  }, z.core.$strip>>;
435
480
  }, z.core.$strip>;
481
+ export declare const personDocumentTypeSchema: z.ZodEnum<{
482
+ passport: "passport";
483
+ id_card: "id_card";
484
+ driver_license: "driver_license";
485
+ visa: "visa";
486
+ other: "other";
487
+ }>;
488
+ export type PersonDocumentType = z.infer<typeof personDocumentTypeSchema>;
489
+ export declare const personDocumentRecordSchema: z.ZodObject<{
490
+ id: z.ZodString;
491
+ personId: z.ZodString;
492
+ type: z.ZodEnum<{
493
+ passport: "passport";
494
+ id_card: "id_card";
495
+ driver_license: "driver_license";
496
+ visa: "visa";
497
+ other: "other";
498
+ }>;
499
+ numberEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
500
+ enc: z.ZodString;
501
+ }, z.core.$strip>>>;
502
+ issuingAuthority: z.ZodNullable<z.ZodString>;
503
+ issuingCountry: z.ZodNullable<z.ZodString>;
504
+ issueDate: z.ZodNullable<z.ZodString>;
505
+ expiryDate: z.ZodNullable<z.ZodString>;
506
+ attachmentId: z.ZodNullable<z.ZodString>;
507
+ isPrimary: z.ZodBoolean;
508
+ notes: z.ZodNullable<z.ZodString>;
509
+ metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
510
+ createdAt: z.ZodString;
511
+ updatedAt: z.ZodString;
512
+ }, z.core.$strip>;
513
+ export type PersonDocumentRecord = z.infer<typeof personDocumentRecordSchema>;
514
+ export declare const personDocumentListResponse: z.ZodObject<{
515
+ data: z.ZodArray<z.ZodObject<{
516
+ id: z.ZodString;
517
+ personId: z.ZodString;
518
+ type: z.ZodEnum<{
519
+ passport: "passport";
520
+ id_card: "id_card";
521
+ driver_license: "driver_license";
522
+ visa: "visa";
523
+ other: "other";
524
+ }>;
525
+ numberEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
526
+ enc: z.ZodString;
527
+ }, z.core.$strip>>>;
528
+ issuingAuthority: z.ZodNullable<z.ZodString>;
529
+ issuingCountry: z.ZodNullable<z.ZodString>;
530
+ issueDate: z.ZodNullable<z.ZodString>;
531
+ expiryDate: z.ZodNullable<z.ZodString>;
532
+ attachmentId: z.ZodNullable<z.ZodString>;
533
+ isPrimary: z.ZodBoolean;
534
+ notes: z.ZodNullable<z.ZodString>;
535
+ metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
536
+ createdAt: z.ZodString;
537
+ updatedAt: z.ZodString;
538
+ }, z.core.$strip>>;
539
+ }, z.core.$strip>;
540
+ export declare const personDocumentSingleResponse: z.ZodObject<{
541
+ data: z.ZodObject<{
542
+ id: z.ZodString;
543
+ personId: z.ZodString;
544
+ type: z.ZodEnum<{
545
+ passport: "passport";
546
+ id_card: "id_card";
547
+ driver_license: "driver_license";
548
+ visa: "visa";
549
+ other: "other";
550
+ }>;
551
+ numberEncrypted: z.ZodOptional<z.ZodNullable<z.ZodObject<{
552
+ enc: z.ZodString;
553
+ }, z.core.$strip>>>;
554
+ issuingAuthority: z.ZodNullable<z.ZodString>;
555
+ issuingCountry: z.ZodNullable<z.ZodString>;
556
+ issueDate: z.ZodNullable<z.ZodString>;
557
+ expiryDate: z.ZodNullable<z.ZodString>;
558
+ attachmentId: z.ZodNullable<z.ZodString>;
559
+ isPrimary: z.ZodBoolean;
560
+ notes: z.ZodNullable<z.ZodString>;
561
+ metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
562
+ createdAt: z.ZodString;
563
+ updatedAt: z.ZodString;
564
+ }, z.core.$strip>;
565
+ }, z.core.$strip>;
566
+ export declare const personTravelSnapshotSchema: z.ZodObject<{
567
+ dateOfBirth: z.ZodNullable<z.ZodString>;
568
+ dietaryRequirements: z.ZodNullable<z.ZodString>;
569
+ accessibilityNeeds: z.ZodNullable<z.ZodString>;
570
+ passportNumber: z.ZodNullable<z.ZodString>;
571
+ passportExpiry: z.ZodNullable<z.ZodString>;
572
+ passportIssuingCountry: z.ZodNullable<z.ZodString>;
573
+ passportIssuingAuthority: z.ZodNullable<z.ZodString>;
574
+ passportPersonDocumentId: z.ZodNullable<z.ZodString>;
575
+ }, z.core.$strip>;
576
+ export type PersonTravelSnapshotRecord = z.infer<typeof personTravelSnapshotSchema>;
577
+ export declare const personTravelSnapshotResponse: z.ZodObject<{
578
+ data: z.ZodObject<{
579
+ dateOfBirth: z.ZodNullable<z.ZodString>;
580
+ dietaryRequirements: z.ZodNullable<z.ZodString>;
581
+ accessibilityNeeds: z.ZodNullable<z.ZodString>;
582
+ passportNumber: z.ZodNullable<z.ZodString>;
583
+ passportExpiry: z.ZodNullable<z.ZodString>;
584
+ passportIssuingCountry: z.ZodNullable<z.ZodString>;
585
+ passportIssuingAuthority: z.ZodNullable<z.ZodString>;
586
+ passportPersonDocumentId: z.ZodNullable<z.ZodString>;
587
+ }, z.core.$strip>;
588
+ }, z.core.$strip>;
436
589
  export declare const quoteRecordSchema: z.ZodObject<{
437
590
  id: z.ZodString;
438
591
  opportunityId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
package/dist/schemas.js CHANGED
@@ -19,6 +19,12 @@ export const successEnvelope = z.object({ success: z.boolean() });
19
19
  * consumers to depend on the Drizzle type inference chain. The hooks expose
20
20
  * these as `z.infer` types; keep in sync with `packages/crm/src/schema.ts`.
21
21
  */
22
+ /**
23
+ * KMS-encrypted envelope shape — `{ enc: base64 }`. Mirrors the
24
+ * `kmsEnvelopeSchema` in `@voyantjs/db/schema/iam/kms` (kept inline
25
+ * here so crm-react has no server-side schema dep).
26
+ */
27
+ export const kmsEnvelopeRecordSchema = z.object({ enc: z.string().min(1) }).nullable();
22
28
  export const personRecordSchema = z.object({
23
29
  id: z.string(),
24
30
  organizationId: z.string().nullable(),
@@ -37,6 +43,11 @@ export const personRecordSchema = z.object({
37
43
  tags: z.array(z.string()),
38
44
  birthday: z.string().nullable(),
39
45
  notes: z.string().nullable(),
46
+ // Encrypted PII slots (canonical store; documents live in /documents)
47
+ accessibilityEncrypted: kmsEnvelopeRecordSchema.optional(),
48
+ dietaryEncrypted: kmsEnvelopeRecordSchema.optional(),
49
+ loyaltyEncrypted: kmsEnvelopeRecordSchema.optional(),
50
+ insuranceEncrypted: kmsEnvelopeRecordSchema.optional(),
40
51
  createdAt: z.string(),
41
52
  updatedAt: z.string(),
42
53
  // Hydrated identity fields
@@ -154,6 +165,42 @@ export const personNoteRecordSchema = z.object({
154
165
  createdAt: z.string(),
155
166
  });
156
167
  export const personNoteListResponse = listEnvelope(personNoteRecordSchema);
168
+ export const personDocumentTypeSchema = z.enum([
169
+ "passport",
170
+ "id_card",
171
+ "driver_license",
172
+ "visa",
173
+ "other",
174
+ ]);
175
+ export const personDocumentRecordSchema = z.object({
176
+ id: z.string(),
177
+ personId: z.string(),
178
+ type: personDocumentTypeSchema,
179
+ numberEncrypted: kmsEnvelopeRecordSchema.optional(),
180
+ issuingAuthority: z.string().nullable(),
181
+ issuingCountry: z.string().nullable(),
182
+ issueDate: z.string().nullable(),
183
+ expiryDate: z.string().nullable(),
184
+ attachmentId: z.string().nullable(),
185
+ isPrimary: z.boolean(),
186
+ notes: z.string().nullable(),
187
+ metadata: z.record(z.string(), z.unknown()).nullable(),
188
+ createdAt: z.string(),
189
+ updatedAt: z.string(),
190
+ });
191
+ export const personDocumentListResponse = listEnvelope(personDocumentRecordSchema);
192
+ export const personDocumentSingleResponse = singleEnvelope(personDocumentRecordSchema);
193
+ export const personTravelSnapshotSchema = z.object({
194
+ dateOfBirth: z.string().nullable(),
195
+ dietaryRequirements: z.string().nullable(),
196
+ accessibilityNeeds: z.string().nullable(),
197
+ passportNumber: z.string().nullable(),
198
+ passportExpiry: z.string().nullable(),
199
+ passportIssuingCountry: z.string().nullable(),
200
+ passportIssuingAuthority: z.string().nullable(),
201
+ passportPersonDocumentId: z.string().nullable(),
202
+ });
203
+ export const personTravelSnapshotResponse = z.object({ data: personTravelSnapshotSchema });
157
204
  export const quoteRecordSchema = z.object({
158
205
  id: z.string(),
159
206
  opportunityId: z.string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/crm-react",
3
- "version": "0.25.0",
3
+ "version": "0.26.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,7 +41,7 @@
41
41
  "react": "^19.0.0",
42
42
  "react-dom": "^19.0.0",
43
43
  "zod": "^4.0.0",
44
- "@voyantjs/crm": "0.25.0"
44
+ "@voyantjs/crm": "0.26.1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@tanstack/react-query": "^5.96.2",
@@ -52,12 +52,12 @@
52
52
  "typescript": "^6.0.2",
53
53
  "vitest": "^4.1.2",
54
54
  "zod": "^4.3.6",
55
- "@voyantjs/crm": "0.25.0",
56
- "@voyantjs/react": "0.25.0",
55
+ "@voyantjs/crm": "0.26.1",
56
+ "@voyantjs/react": "0.26.1",
57
57
  "@voyantjs/voyant-typescript-config": "0.1.0"
58
58
  },
59
59
  "dependencies": {
60
- "@voyantjs/react": "0.25.0"
60
+ "@voyantjs/react": "0.26.1"
61
61
  },
62
62
  "files": [
63
63
  "dist"