@voyantjs/availability-react 0.106.0 → 0.107.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 (72) hide show
  1. package/README.md +161 -1
  2. package/dist/admin/availability-index-host.d.ts +12 -0
  3. package/dist/admin/availability-index-host.d.ts.map +1 -0
  4. package/dist/admin/availability-index-host.js +125 -0
  5. package/dist/admin/availability-page-data.d.ts +9 -0
  6. package/dist/admin/availability-page-data.d.ts.map +1 -0
  7. package/dist/admin/availability-page-data.js +25 -0
  8. package/dist/admin/index.d.ts +69 -0
  9. package/dist/admin/index.d.ts.map +1 -0
  10. package/dist/admin/index.js +73 -0
  11. package/dist/admin/option-resource-templates-panel.d.ts +22 -0
  12. package/dist/admin/option-resource-templates-panel.d.ts.map +1 -0
  13. package/dist/admin/option-resource-templates-panel.js +251 -0
  14. package/dist/admin/rule-detail-host.d.ts +14 -0
  15. package/dist/admin/rule-detail-host.d.ts.map +1 -0
  16. package/dist/admin/rule-detail-host.js +27 -0
  17. package/dist/admin/slot-detail-host.d.ts +29 -0
  18. package/dist/admin/slot-detail-host.d.ts.map +1 -0
  19. package/dist/admin/slot-detail-host.js +110 -0
  20. package/dist/admin/start-time-detail-host.d.ts +15 -0
  21. package/dist/admin/start-time-detail-host.d.ts.map +1 -0
  22. package/dist/admin/start-time-detail-host.js +37 -0
  23. package/dist/components/availability-columns.d.ts +42 -0
  24. package/dist/components/availability-columns.d.ts.map +1 -0
  25. package/dist/components/availability-columns.js +182 -0
  26. package/dist/components/availability-dialogs.d.ts +236 -0
  27. package/dist/components/availability-dialogs.d.ts.map +1 -0
  28. package/dist/components/availability-dialogs.js +369 -0
  29. package/dist/components/availability-overview.d.ts +54 -0
  30. package/dist/components/availability-overview.d.ts.map +1 -0
  31. package/dist/components/availability-overview.js +50 -0
  32. package/dist/components/availability-page.d.ts +32 -0
  33. package/dist/components/availability-page.d.ts.map +1 -0
  34. package/dist/components/availability-page.js +128 -0
  35. package/dist/components/availability-rule-detail-page.d.ts +251 -0
  36. package/dist/components/availability-rule-detail-page.d.ts.map +1 -0
  37. package/dist/components/availability-rule-detail-page.js +74 -0
  38. package/dist/components/availability-section-header.d.ts +8 -0
  39. package/dist/components/availability-section-header.d.ts.map +1 -0
  40. package/dist/components/availability-section-header.js +7 -0
  41. package/dist/components/availability-skeletons.d.ts +6 -0
  42. package/dist/components/availability-skeletons.d.ts.map +1 -0
  43. package/dist/components/availability-skeletons.js +34 -0
  44. package/dist/components/availability-slot-detail-page.d.ts +974 -0
  45. package/dist/components/availability-slot-detail-page.d.ts.map +1 -0
  46. package/dist/components/availability-slot-detail-page.js +383 -0
  47. package/dist/components/availability-start-time-detail-page.d.ts +246 -0
  48. package/dist/components/availability-start-time-detail-page.d.ts.map +1 -0
  49. package/dist/components/availability-start-time-detail-page.js +83 -0
  50. package/dist/components/availability-tabs.d.ts +152 -0
  51. package/dist/components/availability-tabs.d.ts.map +1 -0
  52. package/dist/components/availability-tabs.js +192 -0
  53. package/dist/components/slot-status-tone.d.ts +15 -0
  54. package/dist/components/slot-status-tone.d.ts.map +1 -0
  55. package/dist/components/slot-status-tone.js +18 -0
  56. package/dist/form-resolver.d.ts +4 -0
  57. package/dist/form-resolver.d.ts.map +1 -0
  58. package/dist/form-resolver.js +40 -0
  59. package/dist/i18n/index.d.ts +2 -0
  60. package/dist/i18n/index.d.ts.map +1 -0
  61. package/dist/i18n/index.js +1 -0
  62. package/dist/i18n/provider.d.ts +2003 -0
  63. package/dist/i18n/provider.d.ts.map +1 -0
  64. package/dist/i18n/provider.js +102 -0
  65. package/dist/ui.d.ts +13 -0
  66. package/dist/ui.d.ts.map +1 -0
  67. package/dist/ui.js +12 -0
  68. package/dist/utils.d.ts +1 -0
  69. package/dist/utils.d.ts.map +1 -1
  70. package/dist/utils.js +3 -0
  71. package/package.json +92 -9
  72. package/src/styles.css +11 -0
@@ -0,0 +1,182 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Badge, Button } from "@voyantjs/ui/components";
4
+ import { DataTableColumnHeader } from "@voyantjs/ui/components/data-table-column-header";
5
+ import { cn } from "@voyantjs/ui/lib/utils";
6
+ import { ExternalLink, Pencil } from "lucide-react";
7
+ import { useAvailabilityUiMessagesOrDefault } from "../i18n/index.js";
8
+ import { productNameById, slotLocalEnd, slotLocalStart, slotStatusTone, } from "../index.js";
9
+ import { slotStatusToneClass } from "./slot-status-tone.js";
10
+ export function getSlotStatusLabel(status, messages) {
11
+ switch (status) {
12
+ case "open":
13
+ return messages.statusOpen;
14
+ case "closed":
15
+ return messages.statusClosed;
16
+ case "sold_out":
17
+ return messages.statusSoldOut;
18
+ case "cancelled":
19
+ return messages.statusCancelled;
20
+ }
21
+ }
22
+ function formatSlotLocalDateTime(value) {
23
+ return `${value.date} ${value.time}`;
24
+ }
25
+ function ViewButton({ label, onClick }) {
26
+ useAvailabilityUiMessagesOrDefault();
27
+ return (_jsxs(Button, { variant: "ghost", size: "sm", onClick: (event) => {
28
+ event.stopPropagation();
29
+ onClick();
30
+ }, children: [_jsx(ExternalLink, { className: "mr-2 h-4 w-4" }), label] }));
31
+ }
32
+ function EditButton({ label, onClick }) {
33
+ useAvailabilityUiMessagesOrDefault();
34
+ return (_jsxs(Button, { variant: "ghost", size: "sm", onClick: (event) => {
35
+ event.stopPropagation();
36
+ onClick();
37
+ }, children: [_jsx(Pencil, { className: "mr-2 h-4 w-4" }), label] }));
38
+ }
39
+ export const availabilityRuleColumns = (products, onView, messages) => [
40
+ {
41
+ accessorKey: "productId",
42
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
43
+ cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
44
+ },
45
+ {
46
+ accessorKey: "timezone",
47
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.timezoneLabel })),
48
+ },
49
+ {
50
+ accessorKey: "recurrenceRule",
51
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.recurrenceLabel })),
52
+ cell: ({ row }) => (_jsx("span", { className: "max-w-[380px] truncate font-mono text-xs", children: row.original.recurrenceRule })),
53
+ },
54
+ {
55
+ accessorKey: "maxCapacity",
56
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.maxPaxLabel }),
57
+ },
58
+ {
59
+ accessorKey: "active",
60
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.activeLabel }),
61
+ cell: ({ row }) => (_jsx(Badge, { variant: row.original.active ? "default" : "secondary", children: row.original.active ? messages.statusActive : messages.statusInactive })),
62
+ },
63
+ {
64
+ id: "view",
65
+ header: messages.viewLabel,
66
+ cell: ({ row }) => (_jsx(ViewButton, { label: messages.openLabel, onClick: () => onView(row.original.id) })),
67
+ },
68
+ ];
69
+ export const availabilityStartTimeColumns = (products, onView, messages) => [
70
+ {
71
+ accessorKey: "productId",
72
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
73
+ cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
74
+ },
75
+ {
76
+ accessorKey: "label",
77
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.labelLabel }),
78
+ cell: ({ row }) => row.original.label ?? messages.details.noValue,
79
+ },
80
+ {
81
+ accessorKey: "startTimeLocal",
82
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.startLabel }),
83
+ },
84
+ {
85
+ accessorKey: "durationMinutes",
86
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.durationLabel })),
87
+ cell: ({ row }) => row.original.durationMinutes == null
88
+ ? messages.details.noValue
89
+ : `${row.original.durationMinutes} min`,
90
+ },
91
+ {
92
+ accessorKey: "active",
93
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.statusLabel }),
94
+ cell: ({ row }) => (_jsx(Badge, { variant: row.original.active ? "default" : "secondary", children: row.original.active ? messages.statusActive : messages.statusInactive })),
95
+ },
96
+ {
97
+ id: "view",
98
+ header: messages.viewLabel,
99
+ cell: ({ row }) => (_jsx(ViewButton, { label: messages.openLabel, onClick: () => onView(row.original.id) })),
100
+ },
101
+ ];
102
+ export const availabilitySlotColumns = (products, onView, messages, onEdit) => [
103
+ {
104
+ accessorKey: "productId",
105
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
106
+ cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
107
+ },
108
+ {
109
+ accessorKey: "startsAt",
110
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.startsAtLabel })),
111
+ cell: ({ row }) => formatSlotLocalDateTime(slotLocalStart(row.original)),
112
+ },
113
+ {
114
+ accessorKey: "endsAt",
115
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.endsAtLabel }),
116
+ cell: ({ row }) => row.original.endsAt
117
+ ? formatSlotLocalDateTime(slotLocalEnd(row.original) ?? slotLocalStart(row.original))
118
+ : messages.details.noValue,
119
+ },
120
+ {
121
+ accessorKey: "initialPax",
122
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.totalPaxLabel })),
123
+ cell: ({ row }) => row.original.initialPax ?? messages.details.noValue,
124
+ },
125
+ {
126
+ accessorKey: "remainingPax",
127
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.remainingPaxLabel })),
128
+ cell: ({ row }) => row.original.remainingPax ?? messages.details.noValue,
129
+ },
130
+ {
131
+ accessorKey: "status",
132
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.statusLabel }),
133
+ cell: ({ row }) => (_jsx(Badge, { variant: "outline", className: cn("capitalize", slotStatusToneClass[slotStatusTone[row.original.status]]), children: getSlotStatusLabel(row.original.status, messages) })),
134
+ },
135
+ {
136
+ id: "actions",
137
+ header: () => _jsx("span", { className: "sr-only", children: messages.viewLabel }),
138
+ cell: ({ row }) => (_jsxs("div", { className: "flex items-center justify-end gap-1", children: [onEdit ? (_jsx(EditButton, { label: messages.editLabel, onClick: () => onEdit(row.original) })) : null, _jsx(ViewButton, { label: messages.openLabel, onClick: () => onView(row.original.id) })] })),
139
+ },
140
+ ];
141
+ export const availabilityCloseoutColumns = (products, messages) => [
142
+ {
143
+ accessorKey: "productId",
144
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
145
+ cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
146
+ },
147
+ {
148
+ accessorKey: "dateLocal",
149
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.dateLabel }),
150
+ },
151
+ {
152
+ accessorKey: "slotId",
153
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.slotLabel }),
154
+ cell: ({ row }) => row.original.slotId ?? messages.productLevelLabel,
155
+ },
156
+ {
157
+ accessorKey: "reason",
158
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.reasonLabel }),
159
+ cell: ({ row }) => row.original.reason ?? messages.details.noValue,
160
+ },
161
+ ];
162
+ export const availabilityPickupPointColumns = (products, messages) => [
163
+ {
164
+ accessorKey: "productId",
165
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.productLabel }),
166
+ cell: ({ row }) => productNameById(products, row.original.productId, row.original.productName),
167
+ },
168
+ {
169
+ accessorKey: "name",
170
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.nameLabel }),
171
+ },
172
+ {
173
+ accessorKey: "locationText",
174
+ header: ({ column }) => (_jsx(DataTableColumnHeader, { column: column, title: messages.locationLabel })),
175
+ cell: ({ row }) => row.original.locationText ?? messages.details.noValue,
176
+ },
177
+ {
178
+ accessorKey: "active",
179
+ header: ({ column }) => _jsx(DataTableColumnHeader, { column: column, title: messages.statusLabel }),
180
+ cell: ({ row }) => (_jsx(Badge, { variant: row.original.active ? "default" : "secondary", children: row.original.active ? messages.statusActive : messages.statusInactive })),
181
+ },
182
+ ];
@@ -0,0 +1,236 @@
1
+ import type { AvailabilityCloseoutRow, AvailabilityPickupPointRow, AvailabilityRuleRow, AvailabilitySlotRow, AvailabilityStartTimeRow, ProductOption } from "../index.js";
2
+ interface RuleDialogMessages {
3
+ validationProductRequired: string;
4
+ validationTimezoneRequired: string;
5
+ validationRecurrenceRequired: string;
6
+ editTitle: string;
7
+ newTitle: string;
8
+ productLabel: string;
9
+ selectProductPlaceholder: string;
10
+ timezoneLabel: string;
11
+ timezonePlaceholder: string;
12
+ maxCapacityLabel: string;
13
+ recurrenceRuleLabel: string;
14
+ recurrenceRulePlaceholder: string;
15
+ maxPickupCapacityLabel: string;
16
+ minimumTotalPaxLabel: string;
17
+ cutoffMinutesLabel: string;
18
+ earlyBookingLimitMinutesLabel: string;
19
+ activeTitle: string;
20
+ activeDescription: string;
21
+ cancel: string;
22
+ save: string;
23
+ create: string;
24
+ }
25
+ interface StartTimeDialogMessages {
26
+ validationProductRequired: string;
27
+ validationStartTimeRequired: string;
28
+ editTitle: string;
29
+ newTitle: string;
30
+ productLabel: string;
31
+ selectProductPlaceholder: string;
32
+ labelLabel: string;
33
+ labelPlaceholder: string;
34
+ startTimeLabel: string;
35
+ durationMinutesLabel: string;
36
+ sortOrderLabel: string;
37
+ activeTitle: string;
38
+ activeDescription: string;
39
+ cancel: string;
40
+ save: string;
41
+ create: string;
42
+ }
43
+ interface SlotDialogMessages {
44
+ validationProductRequired: string;
45
+ validationDateRequired: string;
46
+ validationStartsAtRequired: string;
47
+ validationTimezoneRequired: string;
48
+ editTitle: string;
49
+ newTitle: string;
50
+ productLabel: string;
51
+ selectProductPlaceholder: string;
52
+ ruleLabel: string;
53
+ optionalRulePlaceholder: string;
54
+ noRule: string;
55
+ startTimeLabel: string;
56
+ optionalStartTimePlaceholder: string;
57
+ noStartTime: string;
58
+ dateLabel: string;
59
+ timezoneLabel: string;
60
+ timezonePlaceholder: string;
61
+ startsAtLabel: string;
62
+ endsAtLabel: string;
63
+ statusLabel: string;
64
+ unlimitedLabel: string;
65
+ yes: string;
66
+ no: string;
67
+ initialPaxLabel: string;
68
+ remainingPaxLabel: string;
69
+ remainingResourcesLabel: string;
70
+ initialPickupsLabel: string;
71
+ remainingPickupsLabel: string;
72
+ pastCutoffTitle: string;
73
+ pastCutoffDescription: string;
74
+ tooEarlyTitle: string;
75
+ tooEarlyDescription: string;
76
+ notesLabel: string;
77
+ notesPlaceholder: string;
78
+ cancel: string;
79
+ save: string;
80
+ create: string;
81
+ }
82
+ interface CloseoutDialogMessages {
83
+ validationProductRequired: string;
84
+ validationDateRequired: string;
85
+ editTitle: string;
86
+ newTitle: string;
87
+ productLabel: string;
88
+ selectProductPlaceholder: string;
89
+ slotLabel: string;
90
+ optionalSlotPlaceholder: string;
91
+ productLevelOption: string;
92
+ dateLabel: string;
93
+ datePlaceholder: string;
94
+ reasonLabel: string;
95
+ reasonPlaceholder: string;
96
+ cancel: string;
97
+ save: string;
98
+ create: string;
99
+ }
100
+ interface PickupPointDialogMessages {
101
+ validationProductRequired: string;
102
+ validationNameRequired: string;
103
+ editTitle: string;
104
+ newTitle: string;
105
+ productLabel: string;
106
+ selectProductPlaceholder: string;
107
+ nameLabel: string;
108
+ namePlaceholder: string;
109
+ locationTextLabel: string;
110
+ locationTextPlaceholder: string;
111
+ descriptionLabel: string;
112
+ descriptionPlaceholder: string;
113
+ activeTitle: string;
114
+ activeDescription: string;
115
+ cancel: string;
116
+ save: string;
117
+ create: string;
118
+ }
119
+ export interface AvailabilityDialogMessages {
120
+ dialogs: {
121
+ rule: RuleDialogMessages;
122
+ startTime: StartTimeDialogMessages;
123
+ slot: SlotDialogMessages;
124
+ closeout: CloseoutDialogMessages;
125
+ pickupPoint: PickupPointDialogMessages;
126
+ };
127
+ statusOpen: string;
128
+ statusClosed: string;
129
+ statusSoldOut: string;
130
+ statusCancelled: string;
131
+ }
132
+ type SubmitContext = {
133
+ isEditing: boolean;
134
+ id?: string;
135
+ };
136
+ export type AvailabilityRuleSubmitPayload = {
137
+ productId: string;
138
+ timezone: string;
139
+ recurrenceRule: string;
140
+ maxCapacity: number;
141
+ maxPickupCapacity: number | null;
142
+ minTotalPax: number | null;
143
+ cutoffMinutes: number | null;
144
+ earlyBookingLimitMinutes: number | null;
145
+ active: boolean;
146
+ };
147
+ export type AvailabilityStartTimeSubmitPayload = {
148
+ productId: string;
149
+ label: string | null;
150
+ startTimeLocal: string;
151
+ durationMinutes: number | null;
152
+ sortOrder: number;
153
+ active: boolean;
154
+ };
155
+ export type AvailabilitySlotSubmitPayload = {
156
+ productId: string;
157
+ availabilityRuleId: string | null;
158
+ startTimeId: string | null;
159
+ dateLocal: string;
160
+ startsAt: string;
161
+ endsAt: string | null;
162
+ timezone: string;
163
+ status: AvailabilitySlotRow["status"];
164
+ unlimited: boolean;
165
+ initialPax: number | null;
166
+ remainingPax: number | null;
167
+ initialPickups: number | null;
168
+ remainingPickups: number | null;
169
+ remainingResources: number | null;
170
+ pastCutoff: boolean;
171
+ tooEarly: boolean;
172
+ notes: string | null;
173
+ };
174
+ export type AvailabilityCloseoutSubmitPayload = {
175
+ productId: string;
176
+ slotId: string | null;
177
+ dateLocal: string;
178
+ reason: string | null;
179
+ };
180
+ export type AvailabilityPickupPointSubmitPayload = {
181
+ productId: string;
182
+ name: string;
183
+ description: string | null;
184
+ locationText: string | null;
185
+ active: boolean;
186
+ };
187
+ export declare function AvailabilityRuleDialog(props: {
188
+ messages: AvailabilityDialogMessages;
189
+ open: boolean;
190
+ onOpenChange: (open: boolean) => void;
191
+ rule?: AvailabilityRuleRow;
192
+ products: ProductOption[];
193
+ onSubmit: (payload: AvailabilityRuleSubmitPayload, context: SubmitContext) => Promise<void>;
194
+ onSuccess: () => void;
195
+ }): import("react/jsx-runtime").JSX.Element;
196
+ export declare function AvailabilityStartTimeDialog(props: {
197
+ messages: AvailabilityDialogMessages;
198
+ open: boolean;
199
+ onOpenChange: (open: boolean) => void;
200
+ startTime?: AvailabilityStartTimeRow;
201
+ products: ProductOption[];
202
+ onSubmit: (payload: AvailabilityStartTimeSubmitPayload, context: SubmitContext) => Promise<void>;
203
+ onSuccess: () => void;
204
+ }): import("react/jsx-runtime").JSX.Element;
205
+ export declare function AvailabilitySlotDialog(props: {
206
+ messages: AvailabilityDialogMessages;
207
+ open: boolean;
208
+ onOpenChange: (open: boolean) => void;
209
+ slot?: AvailabilitySlotRow;
210
+ products: ProductOption[];
211
+ rules: AvailabilityRuleRow[];
212
+ startTimes: AvailabilityStartTimeRow[];
213
+ onSubmit: (payload: AvailabilitySlotSubmitPayload, context: SubmitContext) => Promise<void>;
214
+ onSuccess: () => void;
215
+ }): import("react/jsx-runtime").JSX.Element;
216
+ export declare function AvailabilityCloseoutDialog(props: {
217
+ messages: AvailabilityDialogMessages;
218
+ open: boolean;
219
+ onOpenChange: (open: boolean) => void;
220
+ closeout?: AvailabilityCloseoutRow;
221
+ products: ProductOption[];
222
+ slots: AvailabilitySlotRow[];
223
+ onSubmit: (payload: AvailabilityCloseoutSubmitPayload, context: SubmitContext) => Promise<void>;
224
+ onSuccess: () => void;
225
+ }): import("react/jsx-runtime").JSX.Element;
226
+ export declare function AvailabilityPickupPointDialog(props: {
227
+ messages: AvailabilityDialogMessages;
228
+ open: boolean;
229
+ onOpenChange: (open: boolean) => void;
230
+ pickupPoint?: AvailabilityPickupPointRow;
231
+ products: ProductOption[];
232
+ onSubmit: (payload: AvailabilityPickupPointSubmitPayload, context: SubmitContext) => Promise<void>;
233
+ onSuccess: () => void;
234
+ }): import("react/jsx-runtime").JSX.Element;
235
+ export {};
236
+ //# sourceMappingURL=availability-dialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"availability-dialogs.d.ts","sourceRoot":"","sources":["../../src/components/availability-dialogs.tsx"],"names":[],"mappings":"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"}