@voyantjs/allocation-ui 0.37.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.
@@ -0,0 +1,95 @@
1
+ "use client";
2
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
+ import { Badge, Card, CardContent, CardHeader, CardTitle, cn } from "@voyantjs/ui/components";
4
+ import { Accessibility, CircleAlert, Crown, History, UtensilsCrossed } from "lucide-react";
5
+ import { useState } from "react";
6
+ import { useAllocationUiMessagesOrDefault } from "../i18n/index.js";
7
+ import { flagString } from "./slot-allocation-model.js";
8
+ export function DropColumn({ id, icon, title, description, count, capacity, disabled, action, children, onDropTraveler, }) {
9
+ const [over, setOver] = useState(false);
10
+ function onDrop(event) {
11
+ event.preventDefault();
12
+ setOver(false);
13
+ if (disabled)
14
+ return;
15
+ const travelerId = event.dataTransfer.getData("text/plain");
16
+ if (travelerId)
17
+ onDropTraveler(travelerId);
18
+ }
19
+ return (_jsxs(Card, { id: id, className: cn("min-h-40 transition-colors", over && !disabled
20
+ ? "border-primary bg-primary/5" /* i18n-literal-ok CSS class token */
21
+ : null), onDragOver: (event) => {
22
+ event.preventDefault();
23
+ if (!disabled)
24
+ setOver(true);
25
+ }, onDragLeave: () => setOver(false), onDrop: onDrop, children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-3 space-y-0", children: [_jsxs("div", { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [icon, title] }), _jsx("p", { className: "text-xs text-muted-foreground", children: description })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Badge, { variant: count > capacity ? "destructive" : "outline", children: [count, "/", capacity] }), action] })] }), _jsx(CardContent, { className: "flex flex-col gap-2", children: children })] }));
26
+ }
27
+ export function TravelerTile({ traveler, sharingGroupLabel, renderActions, }) {
28
+ const messages = useAllocationUiMessagesOrDefault();
29
+ return (_jsxs("div", { draggable: true, role: "button", tabIndex: 0, onDragStart: (event) => {
30
+ event.dataTransfer.effectAllowed = "move";
31
+ event.dataTransfer.setData("text/plain", traveler.id);
32
+ }, className: "group flex cursor-grab items-start justify-between gap-3 rounded-md border bg-background p-3 text-sm shadow-sm active:cursor-grabbing", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-1.5", children: [traveler.isLeadTraveler ? (_jsx(Crown, { className: "size-3.5 text-amber-500", "aria-label": messages.lead })) : null, _jsx("span", { className: "truncate font-medium", children: traveler.fullName }), traveler.sharingGroupId ? (_jsx(Badge, { variant: "secondary", className: "max-w-full truncate text-[10px]", children: sharingGroupLabel ?? messages.sharingGroup })) : null] }), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx("span", { children: traveler.bookingNumber }), traveler.roomTypeId ? _jsx("span", { children: traveler.roomTypeId }) : null, traveler.bedPreference ? _jsx("span", { children: traveler.bedPreference }) : null, traveler.hasAccessibilityNeeds ? (_jsx(Accessibility, { className: "size-3.5", "aria-label": messages.accessibility })) : null, traveler.hasDietaryRequirements ? (_jsx(UtensilsCrossed, { className: "size-3.5", "aria-label": messages.dietary })) : null] })] }), renderActions ? _jsx("div", { className: "shrink-0", children: renderActions(traveler) }) : null] }));
33
+ }
34
+ export function ValidationSummary({ issues, resources, unallocatedCount, }) {
35
+ const messages = useAllocationUiMessagesOrDefault();
36
+ if (issues.length === 0) {
37
+ return (_jsxs("div", { className: "flex flex-wrap items-center gap-2 rounded-md border bg-muted/30 px-3 py-2 text-sm text-muted-foreground", children: [_jsx(Badge, { variant: "outline", children: messages.validationClear }), _jsxs("span", { children: [resources.length, " ", messages.resources.toLowerCase(), " \u00B7 ", unallocatedCount, " ", messages.unallocated.toLowerCase()] })] }));
38
+ }
39
+ return (_jsxs("div", { className: "rounded-md border border-amber-300/60 bg-amber-50 px-3 py-2 text-sm text-amber-950 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-100", children: [_jsxs("div", { className: "flex items-center gap-2 font-medium", children: [_jsx(CircleAlert, { className: "size-4", "aria-hidden": "true" }), messages.validationTitle] }), _jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: issues.map((issue) => (_jsx(Badge, { variant: "outline", className: "border-amber-300 bg-background/70", children: issue.label }, issue.id))) })] }));
40
+ }
41
+ export function ResourceFlagBadges({ resource }) {
42
+ const messages = useAllocationUiMessagesOrDefault();
43
+ const flags = resource.flags;
44
+ const badges = [];
45
+ if (flags.accessibilityNeeded === true)
46
+ badges.push(messages.accessibility);
47
+ if (flags.smokingAllowed === true)
48
+ badges.push(messages.smokingAllowed);
49
+ if (typeof flags.note === "string" && flags.note.trim())
50
+ badges.push(flags.note.trim());
51
+ if (badges.length === 0)
52
+ return null;
53
+ return (_jsx("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => (_jsx(Badge, { variant: "outline", className: "max-w-full truncate text-[10px]", children: badge }, badge))) }));
54
+ }
55
+ export function SeatPositionBadge({ seat }) {
56
+ const messages = useAllocationUiMessagesOrDefault();
57
+ const position = flagString(seat.flags.position);
58
+ if (!position)
59
+ return null;
60
+ const label = position === "window"
61
+ ? messages.windowSeat
62
+ : position === "aisle"
63
+ ? messages.aisleSeat
64
+ : position === "middle"
65
+ ? messages.middleSeat
66
+ : position;
67
+ return (_jsx(Badge, { variant: "outline", className: "text-[10px]", children: label }));
68
+ }
69
+ export function AuditLogCard({ entries }) {
70
+ const messages = useAllocationUiMessagesOrDefault();
71
+ if (entries.length === 0)
72
+ return null;
73
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-center gap-2 space-y-0 py-3", children: [_jsx(History, { className: "size-4 text-muted-foreground", "aria-hidden": "true" }), _jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: messages.auditLog }), _jsx("p", { className: "text-xs text-muted-foreground", children: messages.auditLogDescription })] })] }), _jsx(CardContent, { className: "flex flex-col gap-2", children: entries.slice(0, 8).map((entry) => (_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-xs", children: [_jsx("span", { className: "text-muted-foreground", children: new Date(entry.createdAt).toLocaleString() }), _jsx(Badge, { variant: "outline", children: messages.auditActions[entry.action] ?? entry.action }), _jsx("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: entryDetail(entry) })] }, entry.id))) })] }));
74
+ }
75
+ function entryDetail(entry) {
76
+ const after = entry.after ?? {};
77
+ if (entry.action === "auto-allocate") {
78
+ return `${after.kind ?? ""}: ${after.assigned ?? 0} assigned, ${after.skipped ?? 0} skipped`;
79
+ }
80
+ if (entry.action === "resources.materialize") {
81
+ return `${after.kind ?? ""}: ${after.created ?? 0} created`;
82
+ }
83
+ if (entry.action.startsWith("resource.")) {
84
+ return [after.kind, after.label, after.capacity ? `capacity ${after.capacity}` : null]
85
+ .filter(Boolean)
86
+ .join(" · ");
87
+ }
88
+ if (entry.action.startsWith("traveler.")) {
89
+ return [after.kind, after.resourceId, after.sharingGroupId].filter(Boolean).join(" · ");
90
+ }
91
+ if (entry.action.startsWith("sharing-group.")) {
92
+ return [after.sharingGroupId, after.label].filter(Boolean).join(" · ");
93
+ }
94
+ return JSON.stringify(after);
95
+ }
@@ -0,0 +1,2 @@
1
+ export { type AllocationUiMessageOverrides, type AllocationUiMessages, AllocationUiMessagesProvider, allocationUiEn, allocationUiMessageDefinitions, allocationUiRo, getAllocationUiI18n, resolveAllocationUiMessages, useAllocationUiI18n, useAllocationUiI18nOrDefault, useAllocationUiMessages, useAllocationUiMessagesOrDefault, } from "./provider.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,cAAc,EACd,8BAA8B,EAC9B,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,eAAe,CAAA"}
@@ -0,0 +1 @@
1
+ export { AllocationUiMessagesProvider, allocationUiEn, allocationUiMessageDefinitions, allocationUiRo, getAllocationUiI18n, resolveAllocationUiMessages, useAllocationUiI18n, useAllocationUiI18nOrDefault, useAllocationUiMessages, useAllocationUiMessagesOrDefault, } from "./provider.js";
@@ -0,0 +1,381 @@
1
+ import { type LocaleMessageOverrides, type PackageI18nValue } from "@voyantjs/i18n";
2
+ import type { ReactNode } from "react";
3
+ export type AllocationUiMessages = Record<string, unknown> & {
4
+ pageTitle: string;
5
+ loading: string;
6
+ empty: string;
7
+ back: string;
8
+ addRoom: string;
9
+ addResource: string;
10
+ generateRooms: string;
11
+ generatingRooms: string;
12
+ generateResources: string;
13
+ generatingResources: string;
14
+ autoAllocate: string;
15
+ autoAllocating: string;
16
+ exportPassengers: string;
17
+ exportRooming: string;
18
+ auditLog: string;
19
+ auditLogDescription: string;
20
+ auditActions: Record<string, string>;
21
+ roomLabel: string;
22
+ roomCapacity: string;
23
+ createRoom: string;
24
+ resourceLabel: string;
25
+ resourceCapacity: string;
26
+ createResource: string;
27
+ cancel: string;
28
+ unallocated: string;
29
+ unallocatedDescription: string;
30
+ rooms: string;
31
+ resources: string;
32
+ vehicleSeats: string;
33
+ vehicle: string;
34
+ seat: string;
35
+ cabins: string;
36
+ flightSeats: string;
37
+ travelers: string;
38
+ capacity: string;
39
+ lead: string;
40
+ sharingGroup: string;
41
+ accessibility: string;
42
+ dietary: string;
43
+ smokingAllowed: string;
44
+ remove: string;
45
+ overCapacity: string;
46
+ dropHere: string;
47
+ noRooms: string;
48
+ noResources: string;
49
+ noSeats: string;
50
+ windowSeat: string;
51
+ aisleSeat: string;
52
+ middleSeat: string;
53
+ validationTitle: string;
54
+ validationClear: string;
55
+ validationUnallocated: string;
56
+ validationOverCapacity: string;
57
+ validationSplitGroup: string;
58
+ allocationFailed: string;
59
+ createRoomFailed: string;
60
+ createResourceFailed: string;
61
+ generateRoomsFailed: string;
62
+ generateResourcesFailed: string;
63
+ autoAllocateFailed: string;
64
+ };
65
+ export declare const allocationUiEn: {
66
+ pageTitle: string;
67
+ loading: string;
68
+ empty: string;
69
+ back: string;
70
+ addRoom: string;
71
+ addResource: string;
72
+ generateRooms: string;
73
+ generatingRooms: string;
74
+ generateResources: string;
75
+ generatingResources: string;
76
+ autoAllocate: string;
77
+ autoAllocating: string;
78
+ exportPassengers: string;
79
+ exportRooming: string;
80
+ auditLog: string;
81
+ auditLogDescription: string;
82
+ auditActions: {
83
+ "resource.create": string;
84
+ "resource.update": string;
85
+ "resource.delete": string;
86
+ "traveler.assign": string;
87
+ "traveler.unassign": string;
88
+ "traveler.sharing-group.set": string;
89
+ "traveler.sharing-group.clear": string;
90
+ "sharing-group.label.update": string;
91
+ "sharing-group.label.clear": string;
92
+ "resources.materialize": string;
93
+ "auto-allocate": string;
94
+ };
95
+ roomLabel: string;
96
+ roomCapacity: string;
97
+ createRoom: string;
98
+ resourceLabel: string;
99
+ resourceCapacity: string;
100
+ createResource: string;
101
+ cancel: string;
102
+ unallocated: string;
103
+ unallocatedDescription: string;
104
+ rooms: string;
105
+ resources: string;
106
+ vehicleSeats: string;
107
+ vehicle: string;
108
+ seat: string;
109
+ cabins: string;
110
+ flightSeats: string;
111
+ travelers: string;
112
+ capacity: string;
113
+ lead: string;
114
+ sharingGroup: string;
115
+ accessibility: string;
116
+ dietary: string;
117
+ smokingAllowed: string;
118
+ remove: string;
119
+ overCapacity: string;
120
+ dropHere: string;
121
+ noRooms: string;
122
+ noResources: string;
123
+ noSeats: string;
124
+ windowSeat: string;
125
+ aisleSeat: string;
126
+ middleSeat: string;
127
+ validationTitle: string;
128
+ validationClear: string;
129
+ validationUnallocated: string;
130
+ validationOverCapacity: string;
131
+ validationSplitGroup: string;
132
+ allocationFailed: string;
133
+ createRoomFailed: string;
134
+ createResourceFailed: string;
135
+ generateRoomsFailed: string;
136
+ generateResourcesFailed: string;
137
+ autoAllocateFailed: string;
138
+ };
139
+ export declare const allocationUiRo: {
140
+ pageTitle: string;
141
+ loading: string;
142
+ empty: string;
143
+ back: string;
144
+ addRoom: string;
145
+ addResource: string;
146
+ generateRooms: string;
147
+ generatingRooms: string;
148
+ generateResources: string;
149
+ generatingResources: string;
150
+ autoAllocate: string;
151
+ autoAllocating: string;
152
+ exportPassengers: string;
153
+ exportRooming: string;
154
+ auditLog: string;
155
+ auditLogDescription: string;
156
+ auditActions: {
157
+ "resource.create": string;
158
+ "resource.update": string;
159
+ "resource.delete": string;
160
+ "traveler.assign": string;
161
+ "traveler.unassign": string;
162
+ "traveler.sharing-group.set": string;
163
+ "traveler.sharing-group.clear": string;
164
+ "sharing-group.label.update": string;
165
+ "sharing-group.label.clear": string;
166
+ "resources.materialize": string;
167
+ "auto-allocate": string;
168
+ };
169
+ roomLabel: string;
170
+ roomCapacity: string;
171
+ createRoom: string;
172
+ resourceLabel: string;
173
+ resourceCapacity: string;
174
+ createResource: string;
175
+ cancel: string;
176
+ unallocated: string;
177
+ unallocatedDescription: string;
178
+ rooms: string;
179
+ resources: string;
180
+ vehicleSeats: string;
181
+ vehicle: string;
182
+ seat: string;
183
+ cabins: string;
184
+ flightSeats: string;
185
+ travelers: string;
186
+ capacity: string;
187
+ lead: string;
188
+ sharingGroup: string;
189
+ accessibility: string;
190
+ dietary: string;
191
+ smokingAllowed: string;
192
+ remove: string;
193
+ overCapacity: string;
194
+ dropHere: string;
195
+ noRooms: string;
196
+ noResources: string;
197
+ noSeats: string;
198
+ windowSeat: string;
199
+ aisleSeat: string;
200
+ middleSeat: string;
201
+ validationTitle: string;
202
+ validationClear: string;
203
+ validationUnallocated: string;
204
+ validationOverCapacity: string;
205
+ validationSplitGroup: string;
206
+ allocationFailed: string;
207
+ createRoomFailed: string;
208
+ createResourceFailed: string;
209
+ generateRoomsFailed: string;
210
+ generateResourcesFailed: string;
211
+ autoAllocateFailed: string;
212
+ };
213
+ export declare const allocationUiMessageDefinitions: {
214
+ en: {
215
+ pageTitle: string;
216
+ loading: string;
217
+ empty: string;
218
+ back: string;
219
+ addRoom: string;
220
+ addResource: string;
221
+ generateRooms: string;
222
+ generatingRooms: string;
223
+ generateResources: string;
224
+ generatingResources: string;
225
+ autoAllocate: string;
226
+ autoAllocating: string;
227
+ exportPassengers: string;
228
+ exportRooming: string;
229
+ auditLog: string;
230
+ auditLogDescription: string;
231
+ auditActions: {
232
+ "resource.create": string;
233
+ "resource.update": string;
234
+ "resource.delete": string;
235
+ "traveler.assign": string;
236
+ "traveler.unassign": string;
237
+ "traveler.sharing-group.set": string;
238
+ "traveler.sharing-group.clear": string;
239
+ "sharing-group.label.update": string;
240
+ "sharing-group.label.clear": string;
241
+ "resources.materialize": string;
242
+ "auto-allocate": string;
243
+ };
244
+ roomLabel: string;
245
+ roomCapacity: string;
246
+ createRoom: string;
247
+ resourceLabel: string;
248
+ resourceCapacity: string;
249
+ createResource: string;
250
+ cancel: string;
251
+ unallocated: string;
252
+ unallocatedDescription: string;
253
+ rooms: string;
254
+ resources: string;
255
+ vehicleSeats: string;
256
+ vehicle: string;
257
+ seat: string;
258
+ cabins: string;
259
+ flightSeats: string;
260
+ travelers: string;
261
+ capacity: string;
262
+ lead: string;
263
+ sharingGroup: string;
264
+ accessibility: string;
265
+ dietary: string;
266
+ smokingAllowed: string;
267
+ remove: string;
268
+ overCapacity: string;
269
+ dropHere: string;
270
+ noRooms: string;
271
+ noResources: string;
272
+ noSeats: string;
273
+ windowSeat: string;
274
+ aisleSeat: string;
275
+ middleSeat: string;
276
+ validationTitle: string;
277
+ validationClear: string;
278
+ validationUnallocated: string;
279
+ validationOverCapacity: string;
280
+ validationSplitGroup: string;
281
+ allocationFailed: string;
282
+ createRoomFailed: string;
283
+ createResourceFailed: string;
284
+ generateRoomsFailed: string;
285
+ generateResourcesFailed: string;
286
+ autoAllocateFailed: string;
287
+ };
288
+ ro: {
289
+ pageTitle: string;
290
+ loading: string;
291
+ empty: string;
292
+ back: string;
293
+ addRoom: string;
294
+ addResource: string;
295
+ generateRooms: string;
296
+ generatingRooms: string;
297
+ generateResources: string;
298
+ generatingResources: string;
299
+ autoAllocate: string;
300
+ autoAllocating: string;
301
+ exportPassengers: string;
302
+ exportRooming: string;
303
+ auditLog: string;
304
+ auditLogDescription: string;
305
+ auditActions: {
306
+ "resource.create": string;
307
+ "resource.update": string;
308
+ "resource.delete": string;
309
+ "traveler.assign": string;
310
+ "traveler.unassign": string;
311
+ "traveler.sharing-group.set": string;
312
+ "traveler.sharing-group.clear": string;
313
+ "sharing-group.label.update": string;
314
+ "sharing-group.label.clear": string;
315
+ "resources.materialize": string;
316
+ "auto-allocate": string;
317
+ };
318
+ roomLabel: string;
319
+ roomCapacity: string;
320
+ createRoom: string;
321
+ resourceLabel: string;
322
+ resourceCapacity: string;
323
+ createResource: string;
324
+ cancel: string;
325
+ unallocated: string;
326
+ unallocatedDescription: string;
327
+ rooms: string;
328
+ resources: string;
329
+ vehicleSeats: string;
330
+ vehicle: string;
331
+ seat: string;
332
+ cabins: string;
333
+ flightSeats: string;
334
+ travelers: string;
335
+ capacity: string;
336
+ lead: string;
337
+ sharingGroup: string;
338
+ accessibility: string;
339
+ dietary: string;
340
+ smokingAllowed: string;
341
+ remove: string;
342
+ overCapacity: string;
343
+ dropHere: string;
344
+ noRooms: string;
345
+ noResources: string;
346
+ noSeats: string;
347
+ windowSeat: string;
348
+ aisleSeat: string;
349
+ middleSeat: string;
350
+ validationTitle: string;
351
+ validationClear: string;
352
+ validationUnallocated: string;
353
+ validationOverCapacity: string;
354
+ validationSplitGroup: string;
355
+ allocationFailed: string;
356
+ createRoomFailed: string;
357
+ createResourceFailed: string;
358
+ generateRoomsFailed: string;
359
+ generateResourcesFailed: string;
360
+ autoAllocateFailed: string;
361
+ };
362
+ };
363
+ export type AllocationUiMessageOverrides = LocaleMessageOverrides<AllocationUiMessages>;
364
+ export declare function resolveAllocationUiMessages({ locale, overrides, }: {
365
+ locale: string | null | undefined;
366
+ overrides?: AllocationUiMessageOverrides | null;
367
+ }): AllocationUiMessages;
368
+ export declare function getAllocationUiI18n({ locale, overrides, }: {
369
+ locale?: string | null | undefined;
370
+ overrides?: AllocationUiMessageOverrides | null;
371
+ }): PackageI18nValue<AllocationUiMessages>;
372
+ export declare function AllocationUiMessagesProvider({ children, locale, overrides, }: {
373
+ children: ReactNode;
374
+ locale: string | null | undefined;
375
+ overrides?: AllocationUiMessageOverrides | null;
376
+ }): import("react/jsx-runtime").JSX.Element;
377
+ export declare const useAllocationUiI18n: () => PackageI18nValue<AllocationUiMessages>;
378
+ export declare const useAllocationUiMessages: () => AllocationUiMessages;
379
+ export declare function useAllocationUiI18nOrDefault(): PackageI18nValue<AllocationUiMessages>;
380
+ export declare function useAllocationUiMessagesOrDefault(): AllocationUiMessages;
381
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createLocaleFormatters, createPackageMessagesContext, resolvePackageMessages, } from "@voyantjs/i18n";
4
+ export const allocationUiEn = {
5
+ pageTitle: "Allocation",
6
+ loading: "Loading allocation...",
7
+ empty: "No travelers on this departure yet.",
8
+ back: "Back",
9
+ addRoom: "Add room",
10
+ addResource: "Add resource",
11
+ generateRooms: "Generate rooms",
12
+ generatingRooms: "Generating...",
13
+ generateResources: "Generate resources",
14
+ generatingResources: "Generating...",
15
+ autoAllocate: "Auto-allocate",
16
+ autoAllocating: "Allocating...",
17
+ exportPassengers: "Passengers",
18
+ exportRooming: "Rooming",
19
+ auditLog: "Audit log",
20
+ auditLogDescription: "Recent allocation changes for this departure.",
21
+ auditActions: {
22
+ "resource.create": "Resource created",
23
+ "resource.update": "Resource updated",
24
+ "resource.delete": "Resource deleted",
25
+ "traveler.assign": "Traveler assigned",
26
+ "traveler.unassign": "Traveler unassigned",
27
+ "traveler.sharing-group.set": "Sharing group set",
28
+ "traveler.sharing-group.clear": "Sharing group cleared",
29
+ "sharing-group.label.update": "Group label updated",
30
+ "sharing-group.label.clear": "Group label cleared",
31
+ "resources.materialize": "Resources generated",
32
+ "auto-allocate": "Auto-allocate",
33
+ },
34
+ roomLabel: "Room label",
35
+ roomCapacity: "Capacity",
36
+ createRoom: "Create room",
37
+ resourceLabel: "Resource label",
38
+ resourceCapacity: "Capacity",
39
+ createResource: "Create resource",
40
+ cancel: "Cancel",
41
+ unallocated: "Unallocated",
42
+ unallocatedDescription: "Travelers not assigned to this resource kind.",
43
+ rooms: "Rooms",
44
+ resources: "Resources",
45
+ vehicleSeats: "Vehicle seats",
46
+ vehicle: "Vehicle",
47
+ seat: "Seat",
48
+ cabins: "Cabins",
49
+ flightSeats: "Flight seats",
50
+ travelers: "travelers",
51
+ capacity: "Capacity",
52
+ lead: "Lead",
53
+ sharingGroup: "Sharing group",
54
+ accessibility: "Accessibility",
55
+ dietary: "Dietary",
56
+ smokingAllowed: "Smoking",
57
+ remove: "Remove",
58
+ overCapacity: "Resource is full",
59
+ dropHere: "Drop traveler here",
60
+ noRooms: "No rooms have been added for this slot.",
61
+ noResources: "No resources have been added for this slot.",
62
+ noSeats: "No vehicle seats have been generated for this slot.",
63
+ windowSeat: "Window",
64
+ aisleSeat: "Aisle",
65
+ middleSeat: "Middle",
66
+ validationTitle: "Allocation needs attention",
67
+ validationClear: "No validation issues",
68
+ validationUnallocated: "unallocated",
69
+ validationOverCapacity: "is over capacity",
70
+ validationSplitGroup: "Split sharing group",
71
+ allocationFailed: "Could not update allocation.",
72
+ createRoomFailed: "Could not create room.",
73
+ createResourceFailed: "Could not create resource.",
74
+ generateRoomsFailed: "Could not generate rooms.",
75
+ generateResourcesFailed: "Could not generate resources.",
76
+ autoAllocateFailed: "Could not auto-allocate travelers.",
77
+ };
78
+ export const allocationUiRo = {
79
+ pageTitle: "Alocare",
80
+ loading: "Se incarca alocarea...",
81
+ empty: "Nu exista calatori pe aceasta plecare.",
82
+ back: "Inapoi",
83
+ addRoom: "Adauga camera",
84
+ addResource: "Adauga resursa",
85
+ generateRooms: "Genereaza camere",
86
+ generatingRooms: "Se genereaza...",
87
+ generateResources: "Genereaza resurse",
88
+ generatingResources: "Se genereaza...",
89
+ autoAllocate: "Auto-aloca",
90
+ autoAllocating: "Se aloca...",
91
+ exportPassengers: "Pasageri",
92
+ exportRooming: "Rooming",
93
+ auditLog: "Istoric",
94
+ auditLogDescription: "Ultimele modificari de alocare pentru aceasta plecare.",
95
+ auditActions: {
96
+ "resource.create": "Resursa creata",
97
+ "resource.update": "Resursa actualizata",
98
+ "resource.delete": "Resursa stearsa",
99
+ "traveler.assign": "Calator alocat",
100
+ "traveler.unassign": "Calator dezalocat",
101
+ "traveler.sharing-group.set": "Grup partaj setat",
102
+ "traveler.sharing-group.clear": "Grup partaj sters",
103
+ "sharing-group.label.update": "Eticheta grup actualizata",
104
+ "sharing-group.label.clear": "Eticheta grup stearsa",
105
+ "resources.materialize": "Resurse generate",
106
+ "auto-allocate": "Auto-alocare",
107
+ },
108
+ roomLabel: "Eticheta camera",
109
+ roomCapacity: "Capacitate",
110
+ createRoom: "Creeaza camera",
111
+ resourceLabel: "Eticheta resursa",
112
+ resourceCapacity: "Capacitate",
113
+ createResource: "Creeaza resursa",
114
+ cancel: "Anuleaza",
115
+ unallocated: "Nealocati",
116
+ unallocatedDescription: "Calatori fara acest tip de resursa alocat.",
117
+ rooms: "Camere",
118
+ resources: "Resurse",
119
+ vehicleSeats: "Locuri vehicul",
120
+ vehicle: "Vehicul",
121
+ seat: "Loc",
122
+ cabins: "Cabine",
123
+ flightSeats: "Locuri zbor",
124
+ travelers: "calatori",
125
+ capacity: "Capacitate",
126
+ lead: "Lead",
127
+ sharingGroup: "Grup partaj",
128
+ accessibility: "Accesibilitate",
129
+ dietary: "Dieta",
130
+ smokingAllowed: "Fumat",
131
+ remove: "Scoate",
132
+ overCapacity: "Resursa este plina",
133
+ dropHere: "Trage calatorul aici",
134
+ noRooms: "Nu exista camere adaugate pentru acest slot.",
135
+ noResources: "Nu exista resurse adaugate pentru acest slot.",
136
+ noSeats: "Nu exista locuri generate pentru acest slot.",
137
+ windowSeat: "Geam",
138
+ aisleSeat: "Culoar",
139
+ middleSeat: "Mijloc",
140
+ validationTitle: "Alocarea necesita atentie",
141
+ validationClear: "Fara probleme de validare",
142
+ validationUnallocated: "nealocati",
143
+ validationOverCapacity: "depaseste capacitatea",
144
+ validationSplitGroup: "Grup partaj impartit",
145
+ allocationFailed: "Alocarea nu a putut fi actualizata.",
146
+ createRoomFailed: "Camera nu a putut fi creata.",
147
+ createResourceFailed: "Resursa nu a putut fi creata.",
148
+ generateRoomsFailed: "Camerele nu au putut fi generate.",
149
+ generateResourcesFailed: "Resursele nu au putut fi generate.",
150
+ autoAllocateFailed: "Calatorii nu au putut fi auto-alocati.",
151
+ };
152
+ const fallbackLocale = "en";
153
+ export const allocationUiMessageDefinitions = {
154
+ en: allocationUiEn,
155
+ ro: allocationUiRo,
156
+ };
157
+ const allocationUiContext = createPackageMessagesContext("AllocationUiMessages");
158
+ const defaultAllocationUiI18n = {
159
+ messages: allocationUiEn,
160
+ ...createLocaleFormatters(fallbackLocale),
161
+ };
162
+ export function resolveAllocationUiMessages({ locale, overrides, }) {
163
+ return resolvePackageMessages({
164
+ definitions: allocationUiMessageDefinitions,
165
+ fallbackLocale,
166
+ locale,
167
+ overrides,
168
+ });
169
+ }
170
+ export function getAllocationUiI18n({ locale, overrides, }) {
171
+ const resolvedLocale = locale ?? fallbackLocale;
172
+ return {
173
+ messages: resolveAllocationUiMessages({
174
+ locale: resolvedLocale,
175
+ overrides,
176
+ }),
177
+ ...createLocaleFormatters(resolvedLocale),
178
+ };
179
+ }
180
+ export function AllocationUiMessagesProvider({ children, locale, overrides, }) {
181
+ return (_jsx(allocationUiContext.ResolvedMessagesProvider, { definitions: allocationUiMessageDefinitions, fallbackLocale: fallbackLocale, locale: locale, overrides: overrides, children: children }));
182
+ }
183
+ export const useAllocationUiI18n = allocationUiContext.useI18n;
184
+ export const useAllocationUiMessages = allocationUiContext.useMessages;
185
+ export function useAllocationUiI18nOrDefault() {
186
+ return allocationUiContext.useOptionalI18n() ?? defaultAllocationUiI18n;
187
+ }
188
+ export function useAllocationUiMessagesOrDefault() {
189
+ return useAllocationUiI18nOrDefault().messages;
190
+ }