@voyantjs/products-ui 0.101.1 → 0.101.2

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 (121) hide show
  1. package/dist/components/product-detail/date-picker.d.ts +44 -0
  2. package/dist/components/product-detail/date-picker.d.ts.map +1 -0
  3. package/dist/components/product-detail/date-picker.js +125 -0
  4. package/dist/components/product-detail/host.d.ts +53 -0
  5. package/dist/components/product-detail/host.d.ts.map +1 -0
  6. package/dist/components/product-detail/host.js +24 -0
  7. package/dist/components/product-detail/index.d.ts +6 -0
  8. package/dist/components/product-detail/index.d.ts.map +1 -0
  9. package/dist/components/product-detail/index.js +5 -0
  10. package/dist/components/product-detail/product-activity-section.d.ts +4 -0
  11. package/dist/components/product-detail/product-activity-section.d.ts.map +1 -0
  12. package/dist/components/product-detail/product-activity-section.js +37 -0
  13. package/dist/components/product-detail/product-day-sheet.d.ts +14 -0
  14. package/dist/components/product-detail/product-day-sheet.d.ts.map +1 -0
  15. package/dist/components/product-detail/product-day-sheet.js +75 -0
  16. package/dist/components/product-detail/product-day-translation.d.ts +41 -0
  17. package/dist/components/product-detail/product-day-translation.d.ts.map +1 -0
  18. package/dist/components/product-detail/product-day-translation.js +111 -0
  19. package/dist/components/product-detail/product-departure-dialog.d.ts +11 -0
  20. package/dist/components/product-detail/product-departure-dialog.d.ts.map +1 -0
  21. package/dist/components/product-detail/product-departure-dialog.js +10 -0
  22. package/dist/components/product-detail/product-departure-form.d.ts +25 -0
  23. package/dist/components/product-detail/product-departure-form.d.ts.map +1 -0
  24. package/dist/components/product-detail/product-departure-form.js +217 -0
  25. package/dist/components/product-detail/product-departure-pricing-override-dialog.d.ts +8 -0
  26. package/dist/components/product-detail/product-departure-pricing-override-dialog.d.ts.map +1 -0
  27. package/dist/components/product-detail/product-departure-pricing-override-dialog.js +125 -0
  28. package/dist/components/product-detail/product-detail-day-row.d.ts +14 -0
  29. package/dist/components/product-detail/product-detail-day-row.d.ts.map +1 -0
  30. package/dist/components/product-detail/product-detail-day-row.js +43 -0
  31. package/dist/components/product-detail/product-detail-dialog.d.ts +10 -0
  32. package/dist/components/product-detail/product-detail-dialog.d.ts.map +1 -0
  33. package/dist/components/product-detail/product-detail-dialog.js +10 -0
  34. package/dist/components/product-detail/product-detail-form.d.ts +19 -0
  35. package/dist/components/product-detail/product-detail-form.d.ts.map +1 -0
  36. package/dist/components/product-detail/product-detail-form.js +177 -0
  37. package/dist/components/product-detail/product-detail-header.d.ts +12 -0
  38. package/dist/components/product-detail/product-detail-header.d.ts.map +1 -0
  39. package/dist/components/product-detail/product-detail-header.js +19 -0
  40. package/dist/components/product-detail/product-detail-itinerary-section.d.ts +4 -0
  41. package/dist/components/product-detail/product-detail-itinerary-section.d.ts.map +1 -0
  42. package/dist/components/product-detail/product-detail-itinerary-section.js +201 -0
  43. package/dist/components/product-detail/product-detail-page.d.ts +4 -0
  44. package/dist/components/product-detail/product-detail-page.d.ts.map +1 -0
  45. package/dist/components/product-detail/product-detail-page.js +97 -0
  46. package/dist/components/product-detail/product-detail-sections.d.ts +63 -0
  47. package/dist/components/product-detail/product-detail-sections.d.ts.map +1 -0
  48. package/dist/components/product-detail/product-detail-sections.js +143 -0
  49. package/dist/components/product-detail/product-detail-shared.d.ts +264 -0
  50. package/dist/components/product-detail/product-detail-shared.d.ts.map +1 -0
  51. package/dist/components/product-detail/product-detail-shared.js +157 -0
  52. package/dist/components/product-detail/product-detail-skeleton.d.ts +9 -0
  53. package/dist/components/product-detail/product-detail-skeleton.d.ts.map +1 -0
  54. package/dist/components/product-detail/product-detail-skeleton.js +53 -0
  55. package/dist/components/product-detail/product-extras-section.d.ts +4 -0
  56. package/dist/components/product-detail/product-extras-section.d.ts.map +1 -0
  57. package/dist/components/product-detail/product-extras-section.js +141 -0
  58. package/dist/components/product-detail/product-itinerary-form.d.ts +16 -0
  59. package/dist/components/product-detail/product-itinerary-form.d.ts.map +1 -0
  60. package/dist/components/product-detail/product-itinerary-form.js +38 -0
  61. package/dist/components/product-detail/product-market-rules-section.d.ts +6 -0
  62. package/dist/components/product-detail/product-market-rules-section.d.ts.map +1 -0
  63. package/dist/components/product-detail/product-market-rules-section.js +81 -0
  64. package/dist/components/product-detail/product-media-gallery.d.ts +19 -0
  65. package/dist/components/product-detail/product-media-gallery.d.ts.map +1 -0
  66. package/dist/components/product-detail/product-media-gallery.js +114 -0
  67. package/dist/components/product-detail/product-option-price-rule-dialog.d.ts +12 -0
  68. package/dist/components/product-detail/product-option-price-rule-dialog.d.ts.map +1 -0
  69. package/dist/components/product-detail/product-option-price-rule-dialog.js +10 -0
  70. package/dist/components/product-detail/product-option-price-rule-form.d.ts +29 -0
  71. package/dist/components/product-detail/product-option-price-rule-form.d.ts.map +1 -0
  72. package/dist/components/product-detail/product-option-price-rule-form.js +125 -0
  73. package/dist/components/product-detail/product-options-pricing.d.ts +6 -0
  74. package/dist/components/product-detail/product-options-pricing.d.ts.map +1 -0
  75. package/dist/components/product-detail/product-options-pricing.js +363 -0
  76. package/dist/components/product-detail/product-options-shared.d.ts +609 -0
  77. package/dist/components/product-detail/product-options-shared.d.ts.map +1 -0
  78. package/dist/components/product-detail/product-options-shared.js +34 -0
  79. package/dist/components/product-detail/product-payment-policy-section.d.ts +17 -0
  80. package/dist/components/product-detail/product-payment-policy-section.d.ts.map +1 -0
  81. package/dist/components/product-detail/product-payment-policy-section.js +58 -0
  82. package/dist/components/product-detail/product-schedule-dialog.d.ts +11 -0
  83. package/dist/components/product-detail/product-schedule-dialog.d.ts.map +1 -0
  84. package/dist/components/product-detail/product-schedule-dialog.js +10 -0
  85. package/dist/components/product-detail/product-schedule-form.d.ts +17 -0
  86. package/dist/components/product-detail/product-schedule-form.d.ts.map +1 -0
  87. package/dist/components/product-detail/product-schedule-form.js +222 -0
  88. package/dist/components/product-detail/product-service-dialog.d.ts +12 -0
  89. package/dist/components/product-detail/product-service-dialog.d.ts.map +1 -0
  90. package/dist/components/product-detail/product-service-dialog.js +10 -0
  91. package/dist/components/product-detail/product-service-form.d.ts +22 -0
  92. package/dist/components/product-detail/product-service-form.d.ts.map +1 -0
  93. package/dist/components/product-detail/product-service-form.js +154 -0
  94. package/dist/components/product-detail/product-translation-popover.d.ts +91 -0
  95. package/dist/components/product-detail/product-translation-popover.d.ts.map +1 -0
  96. package/dist/components/product-detail/product-translation-popover.js +217 -0
  97. package/dist/components/product-detail/product-unit-dialog.d.ts +12 -0
  98. package/dist/components/product-detail/product-unit-dialog.d.ts.map +1 -0
  99. package/dist/components/product-detail/product-unit-dialog.js +10 -0
  100. package/dist/components/product-detail/product-unit-form.d.ts +26 -0
  101. package/dist/components/product-detail/product-unit-form.d.ts.map +1 -0
  102. package/dist/components/product-detail/product-unit-form.js +109 -0
  103. package/dist/components/product-detail/product-unit-price-rule-dialog.d.ts +16 -0
  104. package/dist/components/product-detail/product-unit-price-rule-dialog.d.ts.map +1 -0
  105. package/dist/components/product-detail/product-unit-price-rule-dialog.js +10 -0
  106. package/dist/components/product-detail/product-unit-price-rule-form.d.ts +28 -0
  107. package/dist/components/product-detail/product-unit-price-rule-form.d.ts.map +1 -0
  108. package/dist/components/product-detail/product-unit-price-rule-form.js +126 -0
  109. package/dist/components/product-detail/timezone-options.d.ts +9 -0
  110. package/dist/components/product-detail/timezone-options.d.ts.map +1 -0
  111. package/dist/components/product-detail/timezone-options.js +28 -0
  112. package/dist/components/product-detail/use-product-detail-data.d.ts +41 -0
  113. package/dist/components/product-detail/use-product-detail-data.d.ts.map +1 -0
  114. package/dist/components/product-detail/use-product-detail-data.js +143 -0
  115. package/dist/components/product-detail/use-product-detail-dialogs.d.ts +24 -0
  116. package/dist/components/product-detail/use-product-detail-dialogs.d.ts.map +1 -0
  117. package/dist/components/product-detail/use-product-detail-dialogs.js +40 -0
  118. package/dist/components/product-detail/zod-resolver.d.ts +4 -0
  119. package/dist/components/product-detail/zod-resolver.d.ts.map +1 -0
  120. package/dist/components/product-detail/zod-resolver.js +39 -0
  121. package/package.json +38 -19
@@ -0,0 +1,609 @@
1
+ import { type VoyantProductsContextValue } from "@voyantjs/products-react";
2
+ /**
3
+ * The same configured `{ baseUrl, fetcher }` client (from `useVoyantProductsContext()`)
4
+ * drives both the products and pricing query-options — they hit the same API and
5
+ * auth. Callers pass it in so this module stays free of app-specific fetchers.
6
+ */
7
+ export type OptionsClient = VoyantProductsContextValue;
8
+ export declare const optionStatusVariant: Record<string, "default" | "secondary" | "outline" | "destructive">;
9
+ export declare function getProductOptionsQueryOptions(client: OptionsClient, productId: string): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
10
+ data: {
11
+ id: string;
12
+ productId: string;
13
+ name: string;
14
+ code: string | null;
15
+ description: string | null;
16
+ status: "active" | "draft" | "archived";
17
+ isDefault: boolean;
18
+ sortOrder: number;
19
+ availableFrom: string | null;
20
+ availableTo: string | null;
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ }[];
24
+ total: number;
25
+ limit: number;
26
+ offset: number;
27
+ }, Error, {
28
+ data: {
29
+ id: string;
30
+ productId: string;
31
+ name: string;
32
+ code: string | null;
33
+ description: string | null;
34
+ status: "active" | "draft" | "archived";
35
+ isDefault: boolean;
36
+ sortOrder: number;
37
+ availableFrom: string | null;
38
+ availableTo: string | null;
39
+ createdAt: string;
40
+ updatedAt: string;
41
+ }[];
42
+ total: number;
43
+ limit: number;
44
+ offset: number;
45
+ }, readonly ["voyant", "products", "product-options", "list", import("@voyantjs/products-react/query-keys").ProductOptionsListFilters]>, "queryFn"> & {
46
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
47
+ data: {
48
+ id: string;
49
+ productId: string;
50
+ name: string;
51
+ code: string | null;
52
+ description: string | null;
53
+ status: "active" | "draft" | "archived";
54
+ isDefault: boolean;
55
+ sortOrder: number;
56
+ availableFrom: string | null;
57
+ availableTo: string | null;
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ }[];
61
+ total: number;
62
+ limit: number;
63
+ offset: number;
64
+ }, readonly ["voyant", "products", "product-options", "list", import("@voyantjs/products-react/query-keys").ProductOptionsListFilters], never> | undefined;
65
+ } & {
66
+ queryKey: readonly ["voyant", "products", "product-options", "list", import("@voyantjs/products-react/query-keys").ProductOptionsListFilters] & {
67
+ [dataTagSymbol]: {
68
+ data: {
69
+ id: string;
70
+ productId: string;
71
+ name: string;
72
+ code: string | null;
73
+ description: string | null;
74
+ status: "active" | "draft" | "archived";
75
+ isDefault: boolean;
76
+ sortOrder: number;
77
+ availableFrom: string | null;
78
+ availableTo: string | null;
79
+ createdAt: string;
80
+ updatedAt: string;
81
+ }[];
82
+ total: number;
83
+ limit: number;
84
+ offset: number;
85
+ };
86
+ [dataTagErrorSymbol]: Error;
87
+ };
88
+ };
89
+ export declare function getOptionUnitsQueryOptions(client: OptionsClient, optionId: string): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
90
+ data: {
91
+ id: string;
92
+ optionId: string;
93
+ name: string;
94
+ code: string | null;
95
+ description: string | null;
96
+ unitType: "service" | "other" | "person" | "group" | "room" | "vehicle";
97
+ minQuantity: number | null;
98
+ maxQuantity: number | null;
99
+ minAge: number | null;
100
+ maxAge: number | null;
101
+ occupancyMin: number | null;
102
+ occupancyMax: number | null;
103
+ isRequired: boolean;
104
+ isHidden: boolean;
105
+ sortOrder: number;
106
+ }[];
107
+ total: number;
108
+ limit: number;
109
+ offset: number;
110
+ }, Error, {
111
+ data: {
112
+ id: string;
113
+ optionId: string;
114
+ name: string;
115
+ code: string | null;
116
+ description: string | null;
117
+ unitType: "service" | "other" | "person" | "group" | "room" | "vehicle";
118
+ minQuantity: number | null;
119
+ maxQuantity: number | null;
120
+ minAge: number | null;
121
+ maxAge: number | null;
122
+ occupancyMin: number | null;
123
+ occupancyMax: number | null;
124
+ isRequired: boolean;
125
+ isHidden: boolean;
126
+ sortOrder: number;
127
+ }[];
128
+ total: number;
129
+ limit: number;
130
+ offset: number;
131
+ }, readonly ["voyant", "products", "option-units", "list", import("@voyantjs/products-react/query-keys").OptionUnitsListFilters]>, "queryFn"> & {
132
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
133
+ data: {
134
+ id: string;
135
+ optionId: string;
136
+ name: string;
137
+ code: string | null;
138
+ description: string | null;
139
+ unitType: "service" | "other" | "person" | "group" | "room" | "vehicle";
140
+ minQuantity: number | null;
141
+ maxQuantity: number | null;
142
+ minAge: number | null;
143
+ maxAge: number | null;
144
+ occupancyMin: number | null;
145
+ occupancyMax: number | null;
146
+ isRequired: boolean;
147
+ isHidden: boolean;
148
+ sortOrder: number;
149
+ }[];
150
+ total: number;
151
+ limit: number;
152
+ offset: number;
153
+ }, readonly ["voyant", "products", "option-units", "list", import("@voyantjs/products-react/query-keys").OptionUnitsListFilters], never> | undefined;
154
+ } & {
155
+ queryKey: readonly ["voyant", "products", "option-units", "list", import("@voyantjs/products-react/query-keys").OptionUnitsListFilters] & {
156
+ [dataTagSymbol]: {
157
+ data: {
158
+ id: string;
159
+ optionId: string;
160
+ name: string;
161
+ code: string | null;
162
+ description: string | null;
163
+ unitType: "service" | "other" | "person" | "group" | "room" | "vehicle";
164
+ minQuantity: number | null;
165
+ maxQuantity: number | null;
166
+ minAge: number | null;
167
+ maxAge: number | null;
168
+ occupancyMin: number | null;
169
+ occupancyMax: number | null;
170
+ isRequired: boolean;
171
+ isHidden: boolean;
172
+ sortOrder: number;
173
+ }[];
174
+ total: number;
175
+ limit: number;
176
+ offset: number;
177
+ };
178
+ [dataTagErrorSymbol]: Error;
179
+ };
180
+ };
181
+ export declare function getOptionPriceRulesQueryOptions(client: OptionsClient, optionId: string): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
182
+ data: {
183
+ id: string;
184
+ productId: string;
185
+ optionId: string;
186
+ priceCatalogId: string;
187
+ priceScheduleId: string | null;
188
+ cancellationPolicyId: string | null;
189
+ code: string | null;
190
+ name: string;
191
+ description: string | null;
192
+ pricingMode: "on_request" | "per_booking" | "per_person" | "free" | "starting_from";
193
+ baseSellAmountCents: number | null;
194
+ baseCostAmountCents: number | null;
195
+ minPerBooking: number | null;
196
+ maxPerBooking: number | null;
197
+ allPricingCategories: boolean;
198
+ isDefault: boolean;
199
+ active: boolean;
200
+ notes: string | null;
201
+ }[];
202
+ total: number;
203
+ limit: number;
204
+ offset: number;
205
+ }, Error, {
206
+ data: {
207
+ id: string;
208
+ productId: string;
209
+ optionId: string;
210
+ priceCatalogId: string;
211
+ priceScheduleId: string | null;
212
+ cancellationPolicyId: string | null;
213
+ code: string | null;
214
+ name: string;
215
+ description: string | null;
216
+ pricingMode: "on_request" | "per_booking" | "per_person" | "free" | "starting_from";
217
+ baseSellAmountCents: number | null;
218
+ baseCostAmountCents: number | null;
219
+ minPerBooking: number | null;
220
+ maxPerBooking: number | null;
221
+ allPricingCategories: boolean;
222
+ isDefault: boolean;
223
+ active: boolean;
224
+ notes: string | null;
225
+ }[];
226
+ total: number;
227
+ limit: number;
228
+ offset: number;
229
+ }, readonly ["voyant", "pricing", "option-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionPriceRulesListFilters]>, "queryFn"> & {
230
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
231
+ data: {
232
+ id: string;
233
+ productId: string;
234
+ optionId: string;
235
+ priceCatalogId: string;
236
+ priceScheduleId: string | null;
237
+ cancellationPolicyId: string | null;
238
+ code: string | null;
239
+ name: string;
240
+ description: string | null;
241
+ pricingMode: "on_request" | "per_booking" | "per_person" | "free" | "starting_from";
242
+ baseSellAmountCents: number | null;
243
+ baseCostAmountCents: number | null;
244
+ minPerBooking: number | null;
245
+ maxPerBooking: number | null;
246
+ allPricingCategories: boolean;
247
+ isDefault: boolean;
248
+ active: boolean;
249
+ notes: string | null;
250
+ }[];
251
+ total: number;
252
+ limit: number;
253
+ offset: number;
254
+ }, readonly ["voyant", "pricing", "option-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionPriceRulesListFilters], never> | undefined;
255
+ } & {
256
+ queryKey: readonly ["voyant", "pricing", "option-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionPriceRulesListFilters] & {
257
+ [dataTagSymbol]: {
258
+ data: {
259
+ id: string;
260
+ productId: string;
261
+ optionId: string;
262
+ priceCatalogId: string;
263
+ priceScheduleId: string | null;
264
+ cancellationPolicyId: string | null;
265
+ code: string | null;
266
+ name: string;
267
+ description: string | null;
268
+ pricingMode: "on_request" | "per_booking" | "per_person" | "free" | "starting_from";
269
+ baseSellAmountCents: number | null;
270
+ baseCostAmountCents: number | null;
271
+ minPerBooking: number | null;
272
+ maxPerBooking: number | null;
273
+ allPricingCategories: boolean;
274
+ isDefault: boolean;
275
+ active: boolean;
276
+ notes: string | null;
277
+ }[];
278
+ total: number;
279
+ limit: number;
280
+ offset: number;
281
+ };
282
+ [dataTagErrorSymbol]: Error;
283
+ };
284
+ };
285
+ export declare function getPricingCategoriesQueryOptions(client: OptionsClient): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
286
+ data: {
287
+ id: string;
288
+ productId: string | null;
289
+ optionId: string | null;
290
+ unitId: string | null;
291
+ code: string | null;
292
+ name: string;
293
+ categoryType: "service" | "child" | "other" | "group" | "room" | "vehicle" | "adult" | "infant" | "senior";
294
+ seatOccupancy: number;
295
+ groupSize: number | null;
296
+ isAgeQualified: boolean;
297
+ minAge: number | null;
298
+ maxAge: number | null;
299
+ internalUseOnly: boolean;
300
+ active: boolean;
301
+ sortOrder: number;
302
+ createdAt: string;
303
+ updatedAt: string;
304
+ metadata?: Record<string, unknown> | null | undefined;
305
+ }[];
306
+ total: number;
307
+ limit: number;
308
+ offset: number;
309
+ }, Error, {
310
+ data: {
311
+ id: string;
312
+ productId: string | null;
313
+ optionId: string | null;
314
+ unitId: string | null;
315
+ code: string | null;
316
+ name: string;
317
+ categoryType: "service" | "child" | "other" | "group" | "room" | "vehicle" | "adult" | "infant" | "senior";
318
+ seatOccupancy: number;
319
+ groupSize: number | null;
320
+ isAgeQualified: boolean;
321
+ minAge: number | null;
322
+ maxAge: number | null;
323
+ internalUseOnly: boolean;
324
+ active: boolean;
325
+ sortOrder: number;
326
+ createdAt: string;
327
+ updatedAt: string;
328
+ metadata?: Record<string, unknown> | null | undefined;
329
+ }[];
330
+ total: number;
331
+ limit: number;
332
+ offset: number;
333
+ }, readonly ["voyant", "pricing", "pricing-categories", "list", import("@voyantjs/pricing-react/query-keys").PricingCategoriesListFilters]>, "queryFn"> & {
334
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
335
+ data: {
336
+ id: string;
337
+ productId: string | null;
338
+ optionId: string | null;
339
+ unitId: string | null;
340
+ code: string | null;
341
+ name: string;
342
+ categoryType: "service" | "child" | "other" | "group" | "room" | "vehicle" | "adult" | "infant" | "senior";
343
+ seatOccupancy: number;
344
+ groupSize: number | null;
345
+ isAgeQualified: boolean;
346
+ minAge: number | null;
347
+ maxAge: number | null;
348
+ internalUseOnly: boolean;
349
+ active: boolean;
350
+ sortOrder: number;
351
+ createdAt: string;
352
+ updatedAt: string;
353
+ metadata?: Record<string, unknown> | null | undefined;
354
+ }[];
355
+ total: number;
356
+ limit: number;
357
+ offset: number;
358
+ }, readonly ["voyant", "pricing", "pricing-categories", "list", import("@voyantjs/pricing-react/query-keys").PricingCategoriesListFilters], never> | undefined;
359
+ } & {
360
+ queryKey: readonly ["voyant", "pricing", "pricing-categories", "list", import("@voyantjs/pricing-react/query-keys").PricingCategoriesListFilters] & {
361
+ [dataTagSymbol]: {
362
+ data: {
363
+ id: string;
364
+ productId: string | null;
365
+ optionId: string | null;
366
+ unitId: string | null;
367
+ code: string | null;
368
+ name: string;
369
+ categoryType: "service" | "child" | "other" | "group" | "room" | "vehicle" | "adult" | "infant" | "senior";
370
+ seatOccupancy: number;
371
+ groupSize: number | null;
372
+ isAgeQualified: boolean;
373
+ minAge: number | null;
374
+ maxAge: number | null;
375
+ internalUseOnly: boolean;
376
+ active: boolean;
377
+ sortOrder: number;
378
+ createdAt: string;
379
+ updatedAt: string;
380
+ metadata?: Record<string, unknown> | null | undefined;
381
+ }[];
382
+ total: number;
383
+ limit: number;
384
+ offset: number;
385
+ };
386
+ [dataTagErrorSymbol]: Error;
387
+ };
388
+ };
389
+ export declare function getOptionUnitPriceRulesQueryOptions(client: OptionsClient, optionPriceRuleId: string): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
390
+ data: {
391
+ id: string;
392
+ optionPriceRuleId: string;
393
+ optionId: string;
394
+ unitId: string;
395
+ pricingCategoryId: string | null;
396
+ pricingMode: "on_request" | "per_booking" | "per_person" | "included" | "free" | "per_unit";
397
+ sellAmountCents: number | null;
398
+ costAmountCents: number | null;
399
+ minQuantity: number | null;
400
+ maxQuantity: number | null;
401
+ sortOrder: number;
402
+ active: boolean;
403
+ notes: string | null;
404
+ }[];
405
+ total: number;
406
+ limit: number;
407
+ offset: number;
408
+ }, Error, {
409
+ data: {
410
+ id: string;
411
+ optionPriceRuleId: string;
412
+ optionId: string;
413
+ unitId: string;
414
+ pricingCategoryId: string | null;
415
+ pricingMode: "on_request" | "per_booking" | "per_person" | "included" | "free" | "per_unit";
416
+ sellAmountCents: number | null;
417
+ costAmountCents: number | null;
418
+ minQuantity: number | null;
419
+ maxQuantity: number | null;
420
+ sortOrder: number;
421
+ active: boolean;
422
+ notes: string | null;
423
+ }[];
424
+ total: number;
425
+ limit: number;
426
+ offset: number;
427
+ }, readonly ["voyant", "pricing", "option-unit-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionUnitPriceRulesListFilters]>, "queryFn"> & {
428
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
429
+ data: {
430
+ id: string;
431
+ optionPriceRuleId: string;
432
+ optionId: string;
433
+ unitId: string;
434
+ pricingCategoryId: string | null;
435
+ pricingMode: "on_request" | "per_booking" | "per_person" | "included" | "free" | "per_unit";
436
+ sellAmountCents: number | null;
437
+ costAmountCents: number | null;
438
+ minQuantity: number | null;
439
+ maxQuantity: number | null;
440
+ sortOrder: number;
441
+ active: boolean;
442
+ notes: string | null;
443
+ }[];
444
+ total: number;
445
+ limit: number;
446
+ offset: number;
447
+ }, readonly ["voyant", "pricing", "option-unit-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionUnitPriceRulesListFilters], never> | undefined;
448
+ } & {
449
+ queryKey: readonly ["voyant", "pricing", "option-unit-price-rules", "list", import("@voyantjs/pricing-react/query-keys").OptionUnitPriceRulesListFilters] & {
450
+ [dataTagSymbol]: {
451
+ data: {
452
+ id: string;
453
+ optionPriceRuleId: string;
454
+ optionId: string;
455
+ unitId: string;
456
+ pricingCategoryId: string | null;
457
+ pricingMode: "on_request" | "per_booking" | "per_person" | "included" | "free" | "per_unit";
458
+ sellAmountCents: number | null;
459
+ costAmountCents: number | null;
460
+ minQuantity: number | null;
461
+ maxQuantity: number | null;
462
+ sortOrder: number;
463
+ active: boolean;
464
+ notes: string | null;
465
+ }[];
466
+ total: number;
467
+ limit: number;
468
+ offset: number;
469
+ };
470
+ [dataTagErrorSymbol]: Error;
471
+ };
472
+ };
473
+ export declare function getPriceCatalogsQueryOptions(client: OptionsClient): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
474
+ data: {
475
+ id: string;
476
+ code: string;
477
+ name: string;
478
+ currencyCode: string | null;
479
+ catalogType: "internal" | "other" | "public" | "contract" | "net" | "promo" | "gross";
480
+ isDefault: boolean;
481
+ active: boolean;
482
+ notes: string | null;
483
+ }[];
484
+ total: number;
485
+ limit: number;
486
+ offset: number;
487
+ }, Error, {
488
+ data: {
489
+ id: string;
490
+ code: string;
491
+ name: string;
492
+ currencyCode: string | null;
493
+ catalogType: "internal" | "other" | "public" | "contract" | "net" | "promo" | "gross";
494
+ isDefault: boolean;
495
+ active: boolean;
496
+ notes: string | null;
497
+ }[];
498
+ total: number;
499
+ limit: number;
500
+ offset: number;
501
+ }, readonly ["voyant", "pricing", "price-catalogs", "list", import("@voyantjs/pricing-react/query-keys").PriceCatalogsListFilters]>, "queryFn"> & {
502
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
503
+ data: {
504
+ id: string;
505
+ code: string;
506
+ name: string;
507
+ currencyCode: string | null;
508
+ catalogType: "internal" | "other" | "public" | "contract" | "net" | "promo" | "gross";
509
+ isDefault: boolean;
510
+ active: boolean;
511
+ notes: string | null;
512
+ }[];
513
+ total: number;
514
+ limit: number;
515
+ offset: number;
516
+ }, readonly ["voyant", "pricing", "price-catalogs", "list", import("@voyantjs/pricing-react/query-keys").PriceCatalogsListFilters], never> | undefined;
517
+ } & {
518
+ queryKey: readonly ["voyant", "pricing", "price-catalogs", "list", import("@voyantjs/pricing-react/query-keys").PriceCatalogsListFilters] & {
519
+ [dataTagSymbol]: {
520
+ data: {
521
+ id: string;
522
+ code: string;
523
+ name: string;
524
+ currencyCode: string | null;
525
+ catalogType: "internal" | "other" | "public" | "contract" | "net" | "promo" | "gross";
526
+ isDefault: boolean;
527
+ active: boolean;
528
+ notes: string | null;
529
+ }[];
530
+ total: number;
531
+ limit: number;
532
+ offset: number;
533
+ };
534
+ [dataTagErrorSymbol]: Error;
535
+ };
536
+ };
537
+ export declare function getDeparturePriceOverridesQueryOptions(client: OptionsClient, departureId: string): import("@tanstack/react-query").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
538
+ data: {
539
+ id: string;
540
+ departureId: string;
541
+ optionId: string;
542
+ optionUnitId: string;
543
+ priceCatalogId: string;
544
+ sellAmountCents: number;
545
+ costAmountCents: number | null;
546
+ notes: string | null;
547
+ active: boolean;
548
+ metadata?: Record<string, unknown> | null | undefined;
549
+ }[];
550
+ total: number;
551
+ limit: number;
552
+ offset: number;
553
+ }, Error, {
554
+ data: {
555
+ id: string;
556
+ departureId: string;
557
+ optionId: string;
558
+ optionUnitId: string;
559
+ priceCatalogId: string;
560
+ sellAmountCents: number;
561
+ costAmountCents: number | null;
562
+ notes: string | null;
563
+ active: boolean;
564
+ metadata?: Record<string, unknown> | null | undefined;
565
+ }[];
566
+ total: number;
567
+ limit: number;
568
+ offset: number;
569
+ }, readonly ["voyant", "pricing", "departure-price-overrides", "list", import("@voyantjs/pricing-react/query-keys").DeparturePriceOverridesListFilters]>, "queryFn"> & {
570
+ queryFn?: import("@tanstack/react-query").QueryFunction<{
571
+ data: {
572
+ id: string;
573
+ departureId: string;
574
+ optionId: string;
575
+ optionUnitId: string;
576
+ priceCatalogId: string;
577
+ sellAmountCents: number;
578
+ costAmountCents: number | null;
579
+ notes: string | null;
580
+ active: boolean;
581
+ metadata?: Record<string, unknown> | null | undefined;
582
+ }[];
583
+ total: number;
584
+ limit: number;
585
+ offset: number;
586
+ }, readonly ["voyant", "pricing", "departure-price-overrides", "list", import("@voyantjs/pricing-react/query-keys").DeparturePriceOverridesListFilters], never> | undefined;
587
+ } & {
588
+ queryKey: readonly ["voyant", "pricing", "departure-price-overrides", "list", import("@voyantjs/pricing-react/query-keys").DeparturePriceOverridesListFilters] & {
589
+ [dataTagSymbol]: {
590
+ data: {
591
+ id: string;
592
+ departureId: string;
593
+ optionId: string;
594
+ optionUnitId: string;
595
+ priceCatalogId: string;
596
+ sellAmountCents: number;
597
+ costAmountCents: number | null;
598
+ notes: string | null;
599
+ active: boolean;
600
+ metadata?: Record<string, unknown> | null | undefined;
601
+ }[];
602
+ total: number;
603
+ limit: number;
604
+ offset: number;
605
+ };
606
+ [dataTagErrorSymbol]: Error;
607
+ };
608
+ };
609
+ //# sourceMappingURL=product-options-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-options-shared.d.ts","sourceRoot":"","sources":["../../../src/components/product-detail/product-options-shared.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAA;AAEjC;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,0BAA0B,CAAA;AAEtD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,CAKpD,CAAA;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEtF;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErE;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM1B;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjE;AAED,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKhG"}
@@ -0,0 +1,34 @@
1
+ import { getDeparturePriceOverridesQueryOptions as getSharedDeparturePriceOverridesQueryOptions, getOptionPriceRulesQueryOptions as getSharedOptionPriceRulesQueryOptions, getOptionUnitPriceRulesQueryOptions as getSharedOptionUnitPriceRulesQueryOptions, getPriceCatalogsQueryOptions as getSharedPriceCatalogsQueryOptions, getPricingCategoriesQueryOptions as getSharedPricingCategoriesQueryOptions, } from "@voyantjs/pricing-react";
2
+ import { getOptionUnitsQueryOptions as getSharedOptionUnitsQueryOptions, getProductOptionsQueryOptions as getSharedProductOptionsQueryOptions, } from "@voyantjs/products-react";
3
+ export const optionStatusVariant = {
4
+ draft: "outline",
5
+ active: "default",
6
+ archived: "secondary",
7
+ };
8
+ export function getProductOptionsQueryOptions(client, productId) {
9
+ return getSharedProductOptionsQueryOptions(client, { productId, limit: 100 });
10
+ }
11
+ export function getOptionUnitsQueryOptions(client, optionId) {
12
+ return getSharedOptionUnitsQueryOptions(client, { optionId, limit: 100 });
13
+ }
14
+ export function getOptionPriceRulesQueryOptions(client, optionId) {
15
+ return getSharedOptionPriceRulesQueryOptions(client, { optionId, limit: 100 });
16
+ }
17
+ export function getPricingCategoriesQueryOptions(client) {
18
+ return getSharedPricingCategoriesQueryOptions(client, { limit: 100 });
19
+ }
20
+ export function getOptionUnitPriceRulesQueryOptions(client, optionPriceRuleId) {
21
+ return getSharedOptionUnitPriceRulesQueryOptions(client, {
22
+ optionPriceRuleId,
23
+ limit: 100,
24
+ });
25
+ }
26
+ export function getPriceCatalogsQueryOptions(client) {
27
+ return getSharedPriceCatalogsQueryOptions(client, { limit: 100 });
28
+ }
29
+ export function getDeparturePriceOverridesQueryOptions(client, departureId) {
30
+ return getSharedDeparturePriceOverridesQueryOptions(client, {
31
+ departureId,
32
+ limit: 100,
33
+ });
34
+ }
@@ -0,0 +1,17 @@
1
+ import { type ProductRecord } from "@voyantjs/products-react";
2
+ /**
3
+ * Per-listing customer payment policy override for a product.
4
+ *
5
+ * Wins over the product's category and supplier policies in the
6
+ * cascade — use this when a single product has stricter / looser
7
+ * terms than the rest of its catalog group (a luxury-tier offering,
8
+ * a flash sale, etc.).
9
+ *
10
+ * Inherit by default; flipping the toggle off saves an explicit
11
+ * policy on the product row.
12
+ */
13
+ export declare function ProductPaymentPolicySection({ product, onSuccess, }: {
14
+ product: ProductRecord;
15
+ onSuccess?: () => void;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=product-payment-policy-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-payment-policy-section.d.ts","sourceRoot":"","sources":["../../../src/components/product-detail/product-payment-policy-section.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAA;AAgBjC;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,aAAa,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB,2CAwFA"}