@shortstravelmgmt/component-lib 0.2.9 → 0.2.12-canary.29.g9e13192

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.
package/dist/index.d.ts CHANGED
@@ -1,10 +1,1017 @@
1
1
  import * as React from 'react';
2
- import React__default, { HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes, SVGProps, TextareaHTMLAttributes, SelectHTMLAttributes, ReactNode } from 'react';
2
+ import React__default, { CSSProperties, HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes, ReactNode, SVGProps, TextareaHTMLAttributes, SelectHTMLAttributes, ElementType, ChangeEvent } from 'react';
3
3
 
4
- type AlertVariant = 'primary' | 'success' | 'warning' | 'error';
4
+ /**
5
+ * STM Hub Design Tokens
6
+ * TypeScript implementation of the design system tokens
7
+ *
8
+ * These tokens are the single source of truth for all visual values.
9
+ * Components should use these tokens via the useTheme hook or css utility.
10
+ */
11
+ declare const brandColors: {
12
+ readonly blue: "#19345F";
13
+ readonly blueDeep: "#0C1E3E";
14
+ readonly blueTint: "#E4F1F8";
15
+ };
16
+ declare const primaryColors: {
17
+ readonly primary: "#19345F";
18
+ readonly primaryDark: "#0C1E3E";
19
+ readonly primaryLight: "#E4F1F8";
20
+ readonly primaryLightHover: "#D3E4F0";
21
+ };
22
+ declare const neutralColors: {
23
+ readonly basecolor: "#F4F7FA";
24
+ readonly subtle: "#EAF0F6";
25
+ readonly card: "#EDF2F8";
26
+ readonly cardalt: "#E5ECF3";
27
+ readonly secondary: "#DDE6F0";
28
+ readonly secondaryDark: "#D6E0EC";
29
+ readonly tableBorder: "#CFDBEA";
30
+ readonly border: "#E6EDF5";
31
+ readonly borderDark: "#CFDBEA";
32
+ readonly white: "#FFFFFF";
33
+ };
34
+ declare const textColors: {
35
+ readonly ink: "#1B2A41";
36
+ readonly charcoal: "#2B3B51";
37
+ readonly slate: "#4A5C72";
38
+ readonly stone: "#56687F";
39
+ readonly pending: "#AEBBCB";
40
+ readonly error: "#940000";
41
+ };
42
+ declare const statusColors: {
43
+ readonly success: "#138660";
44
+ readonly warning: "#9F5500";
45
+ readonly gold: "#FFC179";
46
+ readonly error: "#940000";
47
+ readonly successInk: "#0F7350";
48
+ readonly warningInk: "#8F4C00";
49
+ readonly successAccent: "#2E9E6B";
50
+ readonly warningAccent: "#E8A13A";
51
+ readonly dangerAccent: "#D7503A";
52
+ readonly dangerAccentStrong: "#C0402C";
53
+ readonly dangerAccentStrongHover: "#A33524";
54
+ };
55
+ declare const accentColors: {
56
+ readonly teal: "#00BCD0";
57
+ readonly tealHover: "#00AEEF";
58
+ readonly tealContrast: "#0C1E3E";
59
+ readonly tealInk: "#009AAB";
60
+ readonly tealGlow: "rgba(0, 188, 208, 0.35)";
61
+ readonly mint: "#37C3A4";
62
+ readonly forest: "#003E1B";
63
+ readonly forestLight: "#E2F0EC";
64
+ readonly tangerine: "#FE7C35";
65
+ readonly tangerineLight: "#FFE2C1";
66
+ };
67
+ declare const teamColors: {
68
+ readonly men: "#8AC6D9";
69
+ readonly women: "#FFA99A";
70
+ readonly mixed: "#D1C1C3";
71
+ };
72
+ declare const travelColors: {
73
+ readonly limoBackground: "#EDE9FE";
74
+ readonly limoForeground: "#7C3AED";
75
+ readonly busBackground: "#FEF3C7";
76
+ readonly busForeground: "#D97706";
77
+ };
78
+ declare const vendorColors: {
79
+ readonly DL: {
80
+ readonly bg: "#003366";
81
+ readonly fg: "#FFFFFF";
82
+ };
83
+ readonly AA: {
84
+ readonly bg: "#0078D2";
85
+ readonly fg: "#FFFFFF";
86
+ };
87
+ readonly UA: {
88
+ readonly bg: "#002244";
89
+ readonly fg: "#FFFFFF";
90
+ };
91
+ readonly WN: {
92
+ readonly bg: "#F9B612";
93
+ readonly fg: "#304CB2";
94
+ };
95
+ readonly B6: {
96
+ readonly bg: "#003876";
97
+ readonly fg: "#FFFFFF";
98
+ };
99
+ readonly AS: {
100
+ readonly bg: "#016191";
101
+ readonly fg: "#FFFFFF";
102
+ };
103
+ readonly F9: {
104
+ readonly bg: "#2D8B45";
105
+ readonly fg: "#FFFFFF";
106
+ };
107
+ readonly NK: {
108
+ readonly bg: "#FFC72C";
109
+ readonly fg: "#000000";
110
+ };
111
+ readonly G4: {
112
+ readonly bg: "#00386C";
113
+ readonly fg: "#FFFFFF";
114
+ };
115
+ readonly HA: {
116
+ readonly bg: "#660099";
117
+ readonly fg: "#FFFFFF";
118
+ };
119
+ };
120
+ declare const gradients: {
121
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
122
+ };
123
+ declare const alertTokens: {
124
+ readonly primary: {
125
+ readonly fg: "#19345F";
126
+ readonly bg: "#E4F1F8";
127
+ readonly border: "#19345F";
128
+ };
129
+ readonly success: {
130
+ readonly fg: "#138660";
131
+ readonly bg: "#E2F0EC";
132
+ readonly border: "#138660";
133
+ };
134
+ readonly warning: {
135
+ readonly fg: "#9F5500";
136
+ readonly bg: "#FFE2C1";
137
+ readonly border: "#FE7C35";
138
+ };
139
+ readonly error: {
140
+ readonly fg: "#940000";
141
+ readonly bg: "#FEE2E2";
142
+ readonly border: "#940000";
143
+ };
144
+ };
145
+ declare const semanticColors: {
146
+ readonly fg: {
147
+ readonly 1: "#1B2A41";
148
+ readonly 2: "#2B3B51";
149
+ readonly 3: "#4A5C72";
150
+ readonly 4: "#56687F";
151
+ readonly disabled: "#AEBBCB";
152
+ readonly link: "#19345F";
153
+ readonly linkHover: "#0C1E3E";
154
+ };
155
+ readonly bg: {
156
+ readonly page: "#F4F7FA";
157
+ readonly surface: "#FFFFFF";
158
+ readonly card: "#EDF2F8";
159
+ readonly subtle: "#EAF0F6";
160
+ };
161
+ };
162
+ declare const fontFamily: {
163
+ readonly base: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif";
164
+ readonly display: "'Montserrat', system-ui, -apple-system, sans-serif";
165
+ readonly label: "'Roboto Condensed', system-ui, -apple-system, sans-serif";
166
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
167
+ };
168
+ declare const fontSize: {
169
+ readonly xs: "12px";
170
+ readonly sm: "14px";
171
+ readonly base: "16px";
172
+ readonly lg: "18px";
173
+ readonly xl: "20px";
174
+ readonly '2xl': "24px";
175
+ readonly '4xl': "36px";
176
+ };
177
+ declare const lineHeight: {
178
+ readonly xs: "16px";
179
+ readonly sm: "20px";
180
+ readonly base: "24px";
181
+ readonly lg: "28px";
182
+ readonly xl: "28px";
183
+ readonly '2xl': "32px";
184
+ readonly '4xl': "40px";
185
+ readonly tight: 1.25;
186
+ readonly normal: 1.5;
187
+ };
188
+ declare const fontWeight: {
189
+ readonly light: 300;
190
+ readonly regular: 400;
191
+ readonly medium: 500;
192
+ readonly semibold: 600;
193
+ readonly bold: 700;
194
+ };
195
+ declare const spacing: {
196
+ readonly 0: "0";
197
+ readonly '0.5': "2px";
198
+ readonly 1: "4px";
199
+ readonly '1.5': "6px";
200
+ readonly 2: "8px";
201
+ readonly 3: "12px";
202
+ readonly 4: "16px";
203
+ readonly 5: "20px";
204
+ readonly 6: "24px";
205
+ readonly 7: "28px";
206
+ readonly 8: "32px";
207
+ readonly 9: "36px";
208
+ readonly 10: "40px";
209
+ readonly 12: "48px";
210
+ readonly 16: "64px";
211
+ };
212
+ declare const radius: {
213
+ readonly sm: "2px";
214
+ readonly md: "4px";
215
+ readonly lg: "6px";
216
+ readonly xl: "8px";
217
+ readonly '2xl': "12px";
218
+ readonly '3xl': "16px";
219
+ readonly full: "9999px";
220
+ };
221
+ declare const shadow: {
222
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
223
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
224
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
225
+ };
226
+ declare const breakpoints: {
227
+ readonly sm: "640px";
228
+ readonly md: "768px";
229
+ readonly lg: "1024px";
230
+ readonly xl: "1280px";
231
+ readonly '2xl': "1536px";
232
+ };
233
+ declare const transition: {
234
+ readonly fast: "150ms ease";
235
+ readonly base: "200ms ease";
236
+ readonly slow: "300ms ease";
237
+ };
238
+ declare const navRailColors: {
239
+ readonly bg: "#0C1E3E";
240
+ readonly fg: "#8FA6C4";
241
+ readonly fgStrong: "#E4F1F8";
242
+ readonly hoverBg: "rgba(255, 255, 255, 0.07)";
243
+ readonly activeBg: "#FFFFFF";
244
+ readonly activeFg: "#0C1E3E";
245
+ readonly activeShadow: "0 2px 8px rgba(0, 0, 0, 0.22)";
246
+ readonly border: "rgba(255, 255, 255, 0.08)";
247
+ };
248
+ declare const lightTheme: {
249
+ readonly colors: {
250
+ readonly brand: {
251
+ readonly blue: "#19345F";
252
+ readonly blueDeep: "#0C1E3E";
253
+ readonly blueTint: "#E4F1F8";
254
+ };
255
+ readonly primary: {
256
+ readonly primary: "#19345F";
257
+ readonly primaryDark: "#0C1E3E";
258
+ readonly primaryLight: "#E4F1F8";
259
+ readonly primaryLightHover: "#D3E4F0";
260
+ };
261
+ readonly neutral: {
262
+ readonly basecolor: "#F4F7FA";
263
+ readonly subtle: "#EAF0F6";
264
+ readonly card: "#EDF2F8";
265
+ readonly cardalt: "#E5ECF3";
266
+ readonly secondary: "#DDE6F0";
267
+ readonly secondaryDark: "#D6E0EC";
268
+ readonly tableBorder: "#CFDBEA";
269
+ readonly border: "#E6EDF5";
270
+ readonly borderDark: "#CFDBEA";
271
+ readonly white: "#FFFFFF";
272
+ };
273
+ readonly text: {
274
+ readonly ink: "#1B2A41";
275
+ readonly charcoal: "#2B3B51";
276
+ readonly slate: "#4A5C72";
277
+ readonly stone: "#56687F";
278
+ readonly pending: "#AEBBCB";
279
+ readonly error: "#940000";
280
+ };
281
+ readonly status: {
282
+ readonly success: "#138660";
283
+ readonly warning: "#9F5500";
284
+ readonly gold: "#FFC179";
285
+ readonly error: "#940000";
286
+ readonly successInk: "#0F7350";
287
+ readonly warningInk: "#8F4C00";
288
+ readonly successAccent: "#2E9E6B";
289
+ readonly warningAccent: "#E8A13A";
290
+ readonly dangerAccent: "#D7503A";
291
+ readonly dangerAccentStrong: "#C0402C";
292
+ readonly dangerAccentStrongHover: "#A33524";
293
+ };
294
+ readonly accent: {
295
+ readonly teal: "#00BCD0";
296
+ readonly tealHover: "#00AEEF";
297
+ readonly tealContrast: "#0C1E3E";
298
+ readonly tealInk: "#009AAB";
299
+ readonly tealGlow: "rgba(0, 188, 208, 0.35)";
300
+ readonly mint: "#37C3A4";
301
+ readonly forest: "#003E1B";
302
+ readonly forestLight: "#E2F0EC";
303
+ readonly tangerine: "#FE7C35";
304
+ readonly tangerineLight: "#FFE2C1";
305
+ };
306
+ readonly team: {
307
+ readonly men: "#8AC6D9";
308
+ readonly women: "#FFA99A";
309
+ readonly mixed: "#D1C1C3";
310
+ };
311
+ readonly travel: {
312
+ readonly limoBackground: "#EDE9FE";
313
+ readonly limoForeground: "#7C3AED";
314
+ readonly busBackground: "#FEF3C7";
315
+ readonly busForeground: "#D97706";
316
+ };
317
+ readonly vendor: {
318
+ readonly DL: {
319
+ readonly bg: "#003366";
320
+ readonly fg: "#FFFFFF";
321
+ };
322
+ readonly AA: {
323
+ readonly bg: "#0078D2";
324
+ readonly fg: "#FFFFFF";
325
+ };
326
+ readonly UA: {
327
+ readonly bg: "#002244";
328
+ readonly fg: "#FFFFFF";
329
+ };
330
+ readonly WN: {
331
+ readonly bg: "#F9B612";
332
+ readonly fg: "#304CB2";
333
+ };
334
+ readonly B6: {
335
+ readonly bg: "#003876";
336
+ readonly fg: "#FFFFFF";
337
+ };
338
+ readonly AS: {
339
+ readonly bg: "#016191";
340
+ readonly fg: "#FFFFFF";
341
+ };
342
+ readonly F9: {
343
+ readonly bg: "#2D8B45";
344
+ readonly fg: "#FFFFFF";
345
+ };
346
+ readonly NK: {
347
+ readonly bg: "#FFC72C";
348
+ readonly fg: "#000000";
349
+ };
350
+ readonly G4: {
351
+ readonly bg: "#00386C";
352
+ readonly fg: "#FFFFFF";
353
+ };
354
+ readonly HA: {
355
+ readonly bg: "#660099";
356
+ readonly fg: "#FFFFFF";
357
+ };
358
+ };
359
+ readonly alert: {
360
+ readonly primary: {
361
+ readonly fg: "#19345F";
362
+ readonly bg: "#E4F1F8";
363
+ readonly border: "#19345F";
364
+ };
365
+ readonly success: {
366
+ readonly fg: "#138660";
367
+ readonly bg: "#E2F0EC";
368
+ readonly border: "#138660";
369
+ };
370
+ readonly warning: {
371
+ readonly fg: "#9F5500";
372
+ readonly bg: "#FFE2C1";
373
+ readonly border: "#FE7C35";
374
+ };
375
+ readonly error: {
376
+ readonly fg: "#940000";
377
+ readonly bg: "#FEE2E2";
378
+ readonly border: "#940000";
379
+ };
380
+ };
381
+ readonly semantic: {
382
+ readonly fg: {
383
+ readonly 1: "#1B2A41";
384
+ readonly 2: "#2B3B51";
385
+ readonly 3: "#4A5C72";
386
+ readonly 4: "#56687F";
387
+ readonly disabled: "#AEBBCB";
388
+ readonly link: "#19345F";
389
+ readonly linkHover: "#0C1E3E";
390
+ };
391
+ readonly bg: {
392
+ readonly page: "#F4F7FA";
393
+ readonly surface: "#FFFFFF";
394
+ readonly card: "#EDF2F8";
395
+ readonly subtle: "#EAF0F6";
396
+ };
397
+ };
398
+ readonly navRail: {
399
+ readonly bg: "#0C1E3E";
400
+ readonly fg: "#8FA6C4";
401
+ readonly fgStrong: "#E4F1F8";
402
+ readonly hoverBg: "rgba(255, 255, 255, 0.07)";
403
+ readonly activeBg: "#FFFFFF";
404
+ readonly activeFg: "#0C1E3E";
405
+ readonly activeShadow: "0 2px 8px rgba(0, 0, 0, 0.22)";
406
+ readonly border: "rgba(255, 255, 255, 0.08)";
407
+ };
408
+ };
409
+ readonly typography: {
410
+ readonly fontFamily: {
411
+ readonly base: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif";
412
+ readonly display: "'Montserrat', system-ui, -apple-system, sans-serif";
413
+ readonly label: "'Roboto Condensed', system-ui, -apple-system, sans-serif";
414
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
415
+ };
416
+ readonly fontSize: {
417
+ readonly xs: "12px";
418
+ readonly sm: "14px";
419
+ readonly base: "16px";
420
+ readonly lg: "18px";
421
+ readonly xl: "20px";
422
+ readonly '2xl': "24px";
423
+ readonly '4xl': "36px";
424
+ };
425
+ readonly lineHeight: {
426
+ readonly xs: "16px";
427
+ readonly sm: "20px";
428
+ readonly base: "24px";
429
+ readonly lg: "28px";
430
+ readonly xl: "28px";
431
+ readonly '2xl': "32px";
432
+ readonly '4xl': "40px";
433
+ readonly tight: 1.25;
434
+ readonly normal: 1.5;
435
+ };
436
+ readonly fontWeight: {
437
+ readonly light: 300;
438
+ readonly regular: 400;
439
+ readonly medium: 500;
440
+ readonly semibold: 600;
441
+ readonly bold: 700;
442
+ };
443
+ };
444
+ readonly spacing: {
445
+ readonly 0: "0";
446
+ readonly '0.5': "2px";
447
+ readonly 1: "4px";
448
+ readonly '1.5': "6px";
449
+ readonly 2: "8px";
450
+ readonly 3: "12px";
451
+ readonly 4: "16px";
452
+ readonly 5: "20px";
453
+ readonly 6: "24px";
454
+ readonly 7: "28px";
455
+ readonly 8: "32px";
456
+ readonly 9: "36px";
457
+ readonly 10: "40px";
458
+ readonly 12: "48px";
459
+ readonly 16: "64px";
460
+ };
461
+ readonly radius: {
462
+ readonly sm: "2px";
463
+ readonly md: "4px";
464
+ readonly lg: "6px";
465
+ readonly xl: "8px";
466
+ readonly '2xl': "12px";
467
+ readonly '3xl': "16px";
468
+ readonly full: "9999px";
469
+ };
470
+ readonly shadow: {
471
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
472
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
473
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
474
+ };
475
+ readonly breakpoints: {
476
+ readonly sm: "640px";
477
+ readonly md: "768px";
478
+ readonly lg: "1024px";
479
+ readonly xl: "1280px";
480
+ readonly '2xl': "1536px";
481
+ };
482
+ readonly transition: {
483
+ readonly fast: "150ms ease";
484
+ readonly base: "200ms ease";
485
+ readonly slow: "300ms ease";
486
+ };
487
+ readonly gradients: {
488
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
489
+ };
490
+ };
491
+ declare const darkTheme: {
492
+ readonly colors: {
493
+ readonly primary: {
494
+ readonly primary: "#0A53EF";
495
+ readonly primaryDark: "#1A43D1";
496
+ readonly primaryLight: "#E6ECFB";
497
+ readonly primaryLightHover: "#DAE3F8";
498
+ };
499
+ readonly accent: {
500
+ readonly tealInk: "#00BCD0";
501
+ readonly teal: "#00BCD0";
502
+ readonly tealHover: "#00AEEF";
503
+ readonly tealContrast: "#0C1E3E";
504
+ readonly tealGlow: "rgba(0, 188, 208, 0.35)";
505
+ readonly mint: "#37C3A4";
506
+ readonly forest: "#003E1B";
507
+ readonly forestLight: "#E2F0EC";
508
+ readonly tangerine: "#FE7C35";
509
+ readonly tangerineLight: "#FFE2C1";
510
+ };
511
+ readonly neutral: {
512
+ readonly basecolor: "#1a1a1a";
513
+ readonly subtle: "#2a2a2a";
514
+ readonly card: "#252525";
515
+ readonly cardalt: "#2f2f2f";
516
+ readonly secondary: "#3a3a3a";
517
+ readonly secondaryDark: "#454545";
518
+ readonly tableBorder: "#4a4a4a";
519
+ readonly border: "#3a3a3a";
520
+ readonly borderDark: "#4a4a4a";
521
+ readonly white: "#1a1a1a";
522
+ };
523
+ readonly text: {
524
+ readonly ink: "#f0f0f0";
525
+ readonly charcoal: "#d0d0d0";
526
+ readonly slate: "#a0a0a0";
527
+ readonly stone: "#808080";
528
+ readonly pending: "#606060";
529
+ readonly error: "#ff6b6b";
530
+ };
531
+ readonly semantic: {
532
+ readonly fg: {
533
+ readonly 1: "#f0f0f0";
534
+ readonly 2: "#d0d0d0";
535
+ readonly 3: "#a0a0a0";
536
+ readonly 4: "#808080";
537
+ readonly disabled: "#606060";
538
+ readonly link: "#0A53EF";
539
+ readonly linkHover: "#1A43D1";
540
+ };
541
+ readonly bg: {
542
+ readonly page: "#1a1a1a";
543
+ readonly surface: "#252525";
544
+ readonly card: "#252525";
545
+ readonly subtle: "#2a2a2a";
546
+ };
547
+ };
548
+ readonly navRail: {
549
+ readonly bg: "#122A4F";
550
+ readonly fg: "#8FA6C4";
551
+ readonly fgStrong: "#E4F1F8";
552
+ readonly hoverBg: "rgba(255, 255, 255, 0.07)";
553
+ readonly activeBg: "#FFFFFF";
554
+ readonly activeFg: "#0C1E3E";
555
+ readonly activeShadow: "0 2px 8px rgba(0, 0, 0, 0.22)";
556
+ readonly border: "rgba(255, 255, 255, 0.08)";
557
+ };
558
+ readonly brand: {
559
+ readonly blue: "#19345F";
560
+ readonly blueDeep: "#0C1E3E";
561
+ readonly blueTint: "#E4F1F8";
562
+ };
563
+ readonly status: {
564
+ readonly success: "#138660";
565
+ readonly warning: "#9F5500";
566
+ readonly gold: "#FFC179";
567
+ readonly error: "#940000";
568
+ readonly successInk: "#0F7350";
569
+ readonly warningInk: "#8F4C00";
570
+ readonly successAccent: "#2E9E6B";
571
+ readonly warningAccent: "#E8A13A";
572
+ readonly dangerAccent: "#D7503A";
573
+ readonly dangerAccentStrong: "#C0402C";
574
+ readonly dangerAccentStrongHover: "#A33524";
575
+ };
576
+ readonly team: {
577
+ readonly men: "#8AC6D9";
578
+ readonly women: "#FFA99A";
579
+ readonly mixed: "#D1C1C3";
580
+ };
581
+ readonly travel: {
582
+ readonly limoBackground: "#EDE9FE";
583
+ readonly limoForeground: "#7C3AED";
584
+ readonly busBackground: "#FEF3C7";
585
+ readonly busForeground: "#D97706";
586
+ };
587
+ readonly vendor: {
588
+ readonly DL: {
589
+ readonly bg: "#003366";
590
+ readonly fg: "#FFFFFF";
591
+ };
592
+ readonly AA: {
593
+ readonly bg: "#0078D2";
594
+ readonly fg: "#FFFFFF";
595
+ };
596
+ readonly UA: {
597
+ readonly bg: "#002244";
598
+ readonly fg: "#FFFFFF";
599
+ };
600
+ readonly WN: {
601
+ readonly bg: "#F9B612";
602
+ readonly fg: "#304CB2";
603
+ };
604
+ readonly B6: {
605
+ readonly bg: "#003876";
606
+ readonly fg: "#FFFFFF";
607
+ };
608
+ readonly AS: {
609
+ readonly bg: "#016191";
610
+ readonly fg: "#FFFFFF";
611
+ };
612
+ readonly F9: {
613
+ readonly bg: "#2D8B45";
614
+ readonly fg: "#FFFFFF";
615
+ };
616
+ readonly NK: {
617
+ readonly bg: "#FFC72C";
618
+ readonly fg: "#000000";
619
+ };
620
+ readonly G4: {
621
+ readonly bg: "#00386C";
622
+ readonly fg: "#FFFFFF";
623
+ };
624
+ readonly HA: {
625
+ readonly bg: "#660099";
626
+ readonly fg: "#FFFFFF";
627
+ };
628
+ };
629
+ readonly alert: {
630
+ readonly primary: {
631
+ readonly fg: "#19345F";
632
+ readonly bg: "#E4F1F8";
633
+ readonly border: "#19345F";
634
+ };
635
+ readonly success: {
636
+ readonly fg: "#138660";
637
+ readonly bg: "#E2F0EC";
638
+ readonly border: "#138660";
639
+ };
640
+ readonly warning: {
641
+ readonly fg: "#9F5500";
642
+ readonly bg: "#FFE2C1";
643
+ readonly border: "#FE7C35";
644
+ };
645
+ readonly error: {
646
+ readonly fg: "#940000";
647
+ readonly bg: "#FEE2E2";
648
+ readonly border: "#940000";
649
+ };
650
+ };
651
+ };
652
+ readonly typography: {
653
+ readonly fontFamily: {
654
+ readonly base: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif";
655
+ readonly display: "'Montserrat', system-ui, -apple-system, sans-serif";
656
+ readonly label: "'Roboto Condensed', system-ui, -apple-system, sans-serif";
657
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
658
+ };
659
+ readonly fontSize: {
660
+ readonly xs: "12px";
661
+ readonly sm: "14px";
662
+ readonly base: "16px";
663
+ readonly lg: "18px";
664
+ readonly xl: "20px";
665
+ readonly '2xl': "24px";
666
+ readonly '4xl': "36px";
667
+ };
668
+ readonly lineHeight: {
669
+ readonly xs: "16px";
670
+ readonly sm: "20px";
671
+ readonly base: "24px";
672
+ readonly lg: "28px";
673
+ readonly xl: "28px";
674
+ readonly '2xl': "32px";
675
+ readonly '4xl': "40px";
676
+ readonly tight: 1.25;
677
+ readonly normal: 1.5;
678
+ };
679
+ readonly fontWeight: {
680
+ readonly light: 300;
681
+ readonly regular: 400;
682
+ readonly medium: 500;
683
+ readonly semibold: 600;
684
+ readonly bold: 700;
685
+ };
686
+ };
687
+ readonly spacing: {
688
+ readonly 0: "0";
689
+ readonly '0.5': "2px";
690
+ readonly 1: "4px";
691
+ readonly '1.5': "6px";
692
+ readonly 2: "8px";
693
+ readonly 3: "12px";
694
+ readonly 4: "16px";
695
+ readonly 5: "20px";
696
+ readonly 6: "24px";
697
+ readonly 7: "28px";
698
+ readonly 8: "32px";
699
+ readonly 9: "36px";
700
+ readonly 10: "40px";
701
+ readonly 12: "48px";
702
+ readonly 16: "64px";
703
+ };
704
+ readonly radius: {
705
+ readonly sm: "2px";
706
+ readonly md: "4px";
707
+ readonly lg: "6px";
708
+ readonly xl: "8px";
709
+ readonly '2xl': "12px";
710
+ readonly '3xl': "16px";
711
+ readonly full: "9999px";
712
+ };
713
+ readonly shadow: {
714
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
715
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
716
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
717
+ };
718
+ readonly breakpoints: {
719
+ readonly sm: "640px";
720
+ readonly md: "768px";
721
+ readonly lg: "1024px";
722
+ readonly xl: "1280px";
723
+ readonly '2xl': "1536px";
724
+ };
725
+ readonly transition: {
726
+ readonly fast: "150ms ease";
727
+ readonly base: "200ms ease";
728
+ readonly slow: "300ms ease";
729
+ };
730
+ readonly gradients: {
731
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
732
+ };
733
+ };
734
+ /**
735
+ * Theme interface - allows both light and dark themes to be assignable.
736
+ * Uses structural typing rather than literal types for color values.
737
+ */
738
+ interface Theme {
739
+ colors: {
740
+ brand: typeof brandColors;
741
+ primary: {
742
+ primary: string;
743
+ primaryDark: string;
744
+ primaryLight: string;
745
+ primaryLightHover: string;
746
+ };
747
+ neutral: {
748
+ basecolor: string;
749
+ subtle: string;
750
+ card: string;
751
+ cardalt: string;
752
+ secondary: string;
753
+ secondaryDark: string;
754
+ tableBorder: string;
755
+ border: string;
756
+ borderDark: string;
757
+ white: string;
758
+ };
759
+ text: {
760
+ ink: string;
761
+ charcoal: string;
762
+ slate: string;
763
+ stone: string;
764
+ pending: string;
765
+ error: string;
766
+ };
767
+ status: typeof statusColors;
768
+ accent: {
769
+ [K in keyof typeof accentColors]: string;
770
+ };
771
+ team: typeof teamColors;
772
+ travel: typeof travelColors;
773
+ vendor: typeof vendorColors;
774
+ alert: typeof alertTokens;
775
+ semantic: {
776
+ fg: {
777
+ 1: string;
778
+ 2: string;
779
+ 3: string;
780
+ 4: string;
781
+ disabled: string;
782
+ link: string;
783
+ linkHover: string;
784
+ };
785
+ bg: {
786
+ page: string;
787
+ surface: string;
788
+ card: string;
789
+ subtle: string;
790
+ };
791
+ };
792
+ navRail: {
793
+ [K in keyof typeof navRailColors]: string;
794
+ };
795
+ };
796
+ typography: {
797
+ fontFamily: typeof fontFamily;
798
+ fontSize: typeof fontSize;
799
+ lineHeight: typeof lineHeight;
800
+ fontWeight: typeof fontWeight;
801
+ };
802
+ spacing: typeof spacing;
803
+ radius: typeof radius;
804
+ shadow: typeof shadow;
805
+ breakpoints: typeof breakpoints;
806
+ transition: typeof transition;
807
+ gradients: typeof gradients;
808
+ }
809
+ type ThemeColors = Theme['colors'];
810
+ type ThemeTypography = Theme['typography'];
811
+ type ThemeSpacing = keyof typeof spacing;
812
+ type ThemeRadius = keyof typeof radius;
813
+ type ThemeShadow = keyof typeof shadow;
814
+ type ThemeBreakpoint = keyof typeof breakpoints;
815
+ type ThemeTransition = keyof typeof transition;
816
+
817
+ type ThemeMode = 'light' | 'dark' | 'system';
818
+ interface ThemeContextValue {
819
+ /** Current resolved theme object */
820
+ theme: Theme;
821
+ /** Current theme mode setting */
822
+ mode: ThemeMode;
823
+ /** Whether dark mode is currently active */
824
+ isDark: boolean;
825
+ /** Update the theme mode */
826
+ setMode: (mode: ThemeMode) => void;
827
+ /** Toggle between light and dark modes */
828
+ toggleTheme: () => void;
829
+ }
830
+ /**
831
+ * Access the current theme context.
832
+ *
833
+ * Outside a ThemeProvider this resolves to the light theme with no-op mode
834
+ * setters, so components stay renderable on their own.
835
+ *
836
+ * @example
837
+ * ```tsx
838
+ * const { theme, isDark, toggleTheme } = useTheme();
839
+ *
840
+ * const buttonStyle = css({
841
+ * backgroundColor: theme.colors.primary.primary,
842
+ * color: theme.colors.neutral.white,
843
+ * });
844
+ * ```
845
+ */
846
+ declare function useTheme(): ThemeContextValue;
847
+ interface ThemeProviderProps {
848
+ /** Child components */
849
+ children: React__default.ReactNode;
850
+ /** Initial theme mode (default: 'system') */
851
+ defaultMode?: ThemeMode;
852
+ /** Storage key for persisting theme preference */
853
+ storageKey?: string;
854
+ /** Whether to add theme class to document root */
855
+ applyToRoot?: boolean;
856
+ }
857
+ /**
858
+ * Provides theme context to child components.
859
+ * Supports light, dark, and system-preference modes.
860
+ *
861
+ * @example
862
+ * ```tsx
863
+ * // Basic usage
864
+ * <ThemeProvider>
865
+ * <App />
866
+ * </ThemeProvider>
867
+ *
868
+ * // With initial dark mode
869
+ * <ThemeProvider defaultMode="dark">
870
+ * <App />
871
+ * </ThemeProvider>
872
+ *
873
+ * // With persistence
874
+ * <ThemeProvider storageKey="stm-theme-mode">
875
+ * <App />
876
+ * </ThemeProvider>
877
+ * ```
878
+ */
879
+ declare function ThemeProvider({ children, defaultMode, storageKey, applyToRoot, }: ThemeProviderProps): React__default.ReactElement;
880
+
881
+ /**
882
+ * CSS object type - extends React's CSSProperties.
883
+ * Simpler type to avoid complex union issues.
884
+ */
885
+ type CSSObject = CSSProperties & Record<string, unknown>;
886
+ type StyleFunction<P = object> = (props: P & {
887
+ theme: Theme;
888
+ }) => CSSObject;
889
+ /**
890
+ * Create a CSS object with type safety.
891
+ * Converts nested pseudo-selectors for inline style compatibility.
892
+ *
893
+ * @example
894
+ * ```tsx
895
+ * const buttonStyle = css({
896
+ * backgroundColor: theme.colors.primary.primary,
897
+ * padding: `${theme.spacing[2]} ${theme.spacing[4]}`,
898
+ * borderRadius: theme.radius.full,
899
+ * '&:hover': {
900
+ * backgroundColor: theme.colors.primary.primaryDark,
901
+ * },
902
+ * });
903
+ * ```
904
+ */
905
+ declare function css(styles: CSSObject): CSSObject;
906
+ /**
907
+ * Merge multiple CSS objects together.
908
+ * Later objects override earlier ones.
909
+ *
910
+ * @example
911
+ * ```tsx
912
+ * const combined = merge(baseStyle, variantStyle, sizeStyle);
913
+ * ```
914
+ */
915
+ declare function merge(...styles: (CSSObject | CSSProperties | Record<string, unknown> | undefined | null | false)[]): CSSObject;
916
+ /**
917
+ * Convert a CSSObject to inline styles.
918
+ * Strips out pseudo-selectors (they can't be inlined).
919
+ */
920
+ declare function toInlineStyle(styles: CSSObject): CSSProperties;
921
+ /**
922
+ * Create spacing value from theme tokens.
923
+ */
924
+ declare function space(value: keyof typeof spacing | number): string;
925
+ /**
926
+ * Create border-radius value from theme tokens.
927
+ */
928
+ declare function rounded(value: keyof typeof radius): string;
929
+ /**
930
+ * Create box-shadow value from theme tokens.
931
+ */
932
+ declare function boxShadow(value: keyof typeof shadow): string;
933
+ /**
934
+ * Create transition value from theme tokens.
935
+ */
936
+ declare function trans(value: keyof typeof transition): string;
937
+ /**
938
+ * Create font-weight value from theme tokens.
939
+ */
940
+ declare function weight(value: keyof typeof fontWeight): number;
941
+ /**
942
+ * Create font-size value from theme tokens.
943
+ */
944
+ declare function size(value: keyof typeof fontSize): string;
945
+ /**
946
+ * Create line-height value from theme tokens.
947
+ */
948
+ declare function leading(value: keyof typeof lineHeight): string | number;
949
+ /**
950
+ * Create font-family value from theme tokens.
951
+ */
952
+ declare function font(value: keyof typeof fontFamily): string;
953
+ /**
954
+ * Reset button styles.
955
+ */
956
+ declare const buttonReset: CSSObject;
957
+ /**
958
+ * Flex center alignment.
959
+ */
960
+ declare const flexCenter: CSSObject;
961
+ /**
962
+ * Flex row with gap.
963
+ */
964
+ declare function flexRow(gap?: keyof typeof spacing): CSSObject;
965
+ /**
966
+ * Flex column with gap.
967
+ */
968
+ declare function flexCol(gap?: keyof typeof spacing): CSSObject;
969
+ /**
970
+ * Absolute fill parent.
971
+ */
972
+ declare const absoluteFill: CSSObject;
973
+ /**
974
+ * Screen reader only (visually hidden but accessible).
975
+ */
976
+ declare const srOnly: CSSObject;
977
+ /**
978
+ * Truncate text with ellipsis.
979
+ */
980
+ declare const truncate: CSSObject;
981
+ /**
982
+ * Line clamp for multi-line truncation.
983
+ */
984
+ declare function lineClamp(lines: number): CSSObject;
985
+ /**
986
+ * Create a style factory that receives the theme.
987
+ * Use with useTheme() hook.
988
+ *
989
+ * @example
990
+ * ```tsx
991
+ * const useButtonStyles = styled((theme) => ({
992
+ * root: css({
993
+ * backgroundColor: theme.colors.primary.primary,
994
+ * color: theme.colors.neutral.white,
995
+ * }),
996
+ * disabled: css({
997
+ * opacity: 0.5,
998
+ * cursor: 'not-allowed',
999
+ * }),
1000
+ * }));
1001
+ *
1002
+ * function Button() {
1003
+ * const { theme } = useTheme();
1004
+ * const styles = useButtonStyles(theme);
1005
+ * return <button style={toInlineStyle(styles.root)}>Click</button>;
1006
+ * }
1007
+ * ```
1008
+ */
1009
+ declare function styled<T extends Record<string, CSSObject>>(factory: (theme: Theme) => T): (theme: Theme) => T;
1010
+
1011
+ type AlertVariant$1 = 'primary' | 'success' | 'warning' | 'error';
5
1012
  interface AlertProps {
6
1013
  /** Visual style variant */
7
- variant?: AlertVariant;
1014
+ variant?: AlertVariant$1;
8
1015
  /** Optional title for the alert */
9
1016
  title?: string;
10
1017
  /** Content of the alert */
@@ -16,8 +1023,48 @@ interface AlertProps {
16
1023
  /** Additional CSS class */
17
1024
  className?: string;
18
1025
  }
1026
+ /**
1027
+ * Inline message calling out status or guidance in place, without interrupting the user.
1028
+ * Use a modal instead when the user has to act before continuing.
1029
+ */
19
1030
  declare const Alert: React__default.FC<AlertProps>;
20
1031
 
1032
+ type AlertVariant = 'primary' | 'success' | 'warning' | 'error';
1033
+
1034
+ interface AlertStyledProps {
1035
+ /** Visual style variant */
1036
+ variant?: AlertVariant;
1037
+ /** Optional title for the alert */
1038
+ title?: string;
1039
+ /** Content of the alert */
1040
+ children: React__default.ReactNode;
1041
+ /** Whether the alert can be dismissed */
1042
+ dismissible?: boolean;
1043
+ /** Callback when dismiss button is clicked */
1044
+ onDismiss?: () => void;
1045
+ /** Additional inline styles */
1046
+ style?: React__default.CSSProperties;
1047
+ /** Data test attribute for testing */
1048
+ 'data-test'?: string;
1049
+ }
1050
+ /**
1051
+ * Alert component for displaying important messages.
1052
+ * Uses CSS-in-JS styling with theme support.
1053
+ * Supports primary, success, warning, and error variants.
1054
+ *
1055
+ * @example
1056
+ * ```tsx
1057
+ * <AlertStyled variant="success" title="Success!">
1058
+ * Your changes have been saved.
1059
+ * </AlertStyled>
1060
+ *
1061
+ * <AlertStyled variant="error" dismissible onDismiss={() => setShow(false)}>
1062
+ * An error occurred. Please try again.
1063
+ * </AlertStyled>
1064
+ * ```
1065
+ */
1066
+ declare const AlertStyled: React__default.FC<AlertStyledProps>;
1067
+
21
1068
  type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
22
1069
  interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
23
1070
  /** Image source URL */
@@ -29,7 +1076,11 @@ interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
29
1076
  /** Name (used to generate initials if not provided) */
30
1077
  name?: string;
31
1078
  /** Size of the avatar */
32
- size?: AvatarSize;
1079
+ /**
1080
+ * One of the named sizes, or an explicit pixel value for hosts pinned to a
1081
+ * dimension the scale does not carry.
1082
+ */
1083
+ size?: AvatarSize | number;
33
1084
  }
34
1085
  /**
35
1086
  * Avatar component for user profile images or initials.
@@ -39,6 +1090,10 @@ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
39
1090
  /** Maximum number of avatars to show before +N */
40
1091
  max?: number;
41
1092
  }
1093
+ /**
1094
+ * Row of overlapping avatars for a team or traveler party.
1095
+ * Collapses everything past `max` into a +N counter so the row keeps a fixed footprint.
1096
+ */
42
1097
  declare const AvatarGroup: React__default.FC<AvatarGroupProps>;
43
1098
 
44
1099
  type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
@@ -56,9 +1111,34 @@ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
56
1111
  */
57
1112
  declare const Badge: React__default.FC<BadgeProps>;
58
1113
 
59
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
60
- type ButtonSize = 'sm' | 'md' | 'lg';
1114
+ type ButtonVariant$1 = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
1115
+ type ButtonSize$1 = 'sm' | 'md' | 'lg';
61
1116
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
1117
+ /** Visual style variant */
1118
+ variant?: ButtonVariant$1;
1119
+ /** Size of the button */
1120
+ size?: ButtonSize$1;
1121
+ /** Makes button take full width */
1122
+ fullWidth?: boolean;
1123
+ /** Shows loading spinner */
1124
+ loading?: boolean;
1125
+ /** Icon element to show before text */
1126
+ leftIcon?: React__default.ReactNode;
1127
+ /** Icon element to show after text */
1128
+ rightIcon?: React__default.ReactNode;
1129
+ /** Makes button square (equal width/height) */
1130
+ square?: boolean;
1131
+ }
1132
+ /**
1133
+ * Primary button component for user interactions.
1134
+ * Supports multiple variants, sizes, and states.
1135
+ */
1136
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
1137
+
1138
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'primary-light' | 'outline-primary' | 'outline-secondary' | 'outline-charcoal' | 'charcoal' | 'text';
1139
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
1140
+
1141
+ interface ButtonStyledProps extends ButtonHTMLAttributes<HTMLButtonElement> {
62
1142
  /** Visual style variant */
63
1143
  variant?: ButtonVariant;
64
1144
  /** Size of the button */
@@ -76,9 +1156,25 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
76
1156
  }
77
1157
  /**
78
1158
  * Primary button component for user interactions.
1159
+ * Uses CSS-in-JS styling with theme support.
79
1160
  * Supports multiple variants, sizes, and states.
1161
+ *
1162
+ * @example
1163
+ * ```tsx
1164
+ * <ButtonStyled variant="primary" size="md">
1165
+ * Click me
1166
+ * </ButtonStyled>
1167
+ *
1168
+ * <ButtonStyled variant="outline" leftIcon={<PlusIcon />}>
1169
+ * Add item
1170
+ * </ButtonStyled>
1171
+ *
1172
+ * <ButtonStyled loading>
1173
+ * Processing...
1174
+ * </ButtonStyled>
1175
+ * ```
80
1176
  */
81
- declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
1177
+ declare const ButtonStyled: React__default.ForwardRefExoticComponent<ButtonStyledProps & React__default.RefAttributes<HTMLButtonElement>>;
82
1178
 
83
1179
  interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
84
1180
  /** Label text for the checkbox */
@@ -93,6 +1189,30 @@ interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'typ
93
1189
  indeterminate?: boolean;
94
1190
  /** Additional class for wrapper */
95
1191
  className?: string;
1192
+ /**
1193
+ * Renders a radio control instead of a checkbox. The visual is the caller's
1194
+ * through `indicator`; this switches the input's type so the browser handles
1195
+ * grouping, arrow-key selection and the announced role.
1196
+ */
1197
+ type?: 'checkbox' | 'radio';
1198
+ /**
1199
+ * Draws the box itself, replacing the built-in tick.
1200
+ *
1201
+ * This exists so an app can keep its own icon set without forking the
1202
+ * component: the tick below is an inline SVG, so a consumer whose design uses
1203
+ * a different family — Carbon, say — otherwise has no way in. Called with the
1204
+ * current state, and returns whatever should be shown for it.
1205
+ *
1206
+ * Returning the box means owning its whole appearance, so the built-in border
1207
+ * and fill are dropped when this is set. Accessibility is unaffected either
1208
+ * way: the state lives on the real input underneath, which is what assistive
1209
+ * technology reads.
1210
+ */
1211
+ indicator?: (state: {
1212
+ checked: boolean;
1213
+ indeterminate: boolean;
1214
+ disabled: boolean;
1215
+ }) => ReactNode;
96
1216
  }
97
1217
  /**
98
1218
  * Checkbox component for boolean selections.
@@ -119,61 +1239,124 @@ interface DatepickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 't
119
1239
  */
120
1240
  declare const Datepicker: React.ForwardRefExoticComponent<DatepickerProps & React.RefAttributes<HTMLInputElement>>;
121
1241
 
1242
+ /**
1243
+ * The library's icon set.
1244
+ *
1245
+ * Every icon is a 24x24 stroked SVG that inherits its color from
1246
+ * `currentColor` and scales through the `size` prop, so an icon picks up the
1247
+ * text color of whatever it sits in without extra styling.
1248
+ */
1249
+
122
1250
  interface IconProps extends SVGProps<SVGSVGElement> {
123
1251
  /** Icon size in pixels */
124
1252
  size?: number;
125
1253
  /** Icon color (defaults to currentColor) */
126
1254
  color?: string;
127
1255
  }
1256
+ /** Air segment (travel type `A`). */
128
1257
  declare const PlaneIcon: React__default.FC<IconProps>;
1258
+ /** Rental car segment (travel type `C`). */
129
1259
  declare const CarIcon: React__default.FC<IconProps>;
1260
+ /** Hotel segment (travel type `H`). */
130
1261
  declare const HotelIcon: React__default.FC<IconProps>;
1262
+ /** Limo or black car segment (travel type `L`). */
131
1263
  declare const LimoIcon: React__default.FC<IconProps>;
1264
+ /** Rail segment (travel type `R`). */
132
1265
  declare const RailIcon: React__default.FC<IconProps>;
1266
+ /** Motorcoach segment (travel type `B`), including team charters. */
133
1267
  declare const BusIcon: React__default.FC<IconProps>;
1268
+ /** Magnifying glass, for search inputs and filter triggers. */
134
1269
  declare const SearchIcon: React__default.FC<IconProps>;
1270
+ /** Downward chevron, for expanding a section or opening a dropdown. */
135
1271
  declare const ChevronDownIcon: React__default.FC<IconProps>;
1272
+ /** Upward chevron, for collapsing an expanded section. */
136
1273
  declare const ChevronUpIcon: React__default.FC<IconProps>;
1274
+ /** Rightward chevron, for drill-in navigation and breadcrumbs. */
137
1275
  declare const ChevronRightIcon: React__default.FC<IconProps>;
1276
+ /** Leftward chevron, for back navigation and carousels. */
138
1277
  declare const ChevronLeftIcon: React__default.FC<IconProps>;
1278
+ /** Outbound arrow, for departing legs and external links. */
139
1279
  declare const ArrowUpRightIcon: React__default.FC<IconProps>;
1280
+ /** Inbound arrow, for returning legs. */
140
1281
  declare const ArrowDownLeftIcon: React__default.FC<IconProps>;
1282
+ /** Eye, for view-only actions and visibility toggles. */
141
1283
  declare const EyeIcon: React__default.FC<IconProps>;
1284
+ /** Download, for exporting reports and manifests. */
142
1285
  declare const DownloadIcon: React__default.FC<IconProps>;
1286
+ /** Upload, for importing rosters and attaching files. */
143
1287
  declare const UploadIcon: React__default.FC<IconProps>;
1288
+ /** Funnel, for opening filter controls. */
144
1289
  declare const FilterIcon: React__default.FC<IconProps>;
1290
+ /** Calendar, for date pickers and schedule views. */
145
1291
  declare const CalendarIcon: React__default.FC<IconProps>;
1292
+ /** Single person, for a traveler or profile. */
146
1293
  declare const UserIcon: React__default.FC<IconProps>;
1294
+ /** Group of people, for teams, rosters, and group travel. */
147
1295
  declare const UsersIcon: React__default.FC<IconProps>;
1296
+ /** Envelope, for email addresses and send actions. */
148
1297
  declare const MailIcon: React__default.FC<IconProps>;
1298
+ /** Handset, for phone numbers. */
149
1299
  declare const PhoneIcon: React__default.FC<IconProps>;
1300
+ /** Agent headset, for travel agent contact and support. */
150
1301
  declare const HeadsetIcon: React__default.FC<IconProps>;
1302
+ /** Printer, for print actions. */
151
1303
  declare const PrinterIcon: React__default.FC<IconProps>;
1304
+ /** Circular arrows, for reloading data and retrying a failed request. */
152
1305
  declare const RefreshIcon: React__default.FC<IconProps>;
1306
+ /** Warning triangle, for warning and error states. */
153
1307
  declare const WarningIcon: React__default.FC<IconProps>;
1308
+ /** Checkmark, for success states and confirmed selections. */
154
1309
  declare const CheckIcon: React__default.FC<IconProps>;
1310
+ /** Cross, for clearing a value or marking a negative state. */
155
1311
  declare const XIcon: React__default.FC<IconProps>;
1312
+ /** Plus, for add and create actions. */
156
1313
  declare const PlusIcon: React__default.FC<IconProps>;
1314
+ /** Minus, for remove and decrement actions. */
157
1315
  declare const MinusIcon: React__default.FC<IconProps>;
1316
+ /** Hamburger, for opening navigation on small screens. */
158
1317
  declare const MenuIcon: React__default.FC<IconProps>;
1318
+ /** Lightbulb, for tips and informational callouts. */
159
1319
  declare const LightbulbIcon: React__default.FC<IconProps>;
1320
+ /** Megaphone, for announcements and broadcast banners. */
160
1321
  declare const MegaphoneIcon: React__default.FC<IconProps>;
1322
+ /** Close, for dismissing modals, drawers, and alerts. */
161
1323
  declare const CloseIcon: React__default.FC<IconProps>;
1324
+ /** Dashboard, for the home and overview destinations. */
162
1325
  declare const DashboardIcon: React__default.FC<IconProps>;
1326
+ /** Report, for reporting destinations and exports. */
163
1327
  declare const ReportIcon: React__default.FC<IconProps>;
1328
+ /** Gear, for settings and configuration. */
164
1329
  declare const SettingsIcon: React__default.FC<IconProps>;
1330
+ /** Short's Travel mark, for brand placements and app headers. */
165
1331
  declare const LogoIcon: React__default.FC<IconProps>;
1332
+ /** Rising trend line, for a metric moving up. */
166
1333
  declare const TrendUpIcon: React__default.FC<IconProps>;
1334
+ /** Falling trend line, for a metric moving down. */
167
1335
  declare const TrendDownIcon: React__default.FC<IconProps>;
1336
+ /** Information, for help text and info banners. */
168
1337
  declare const InfoIcon: React__default.FC<IconProps>;
1338
+ /** Document, for itineraries, invoices, and attachments. */
169
1339
  declare const DocumentIcon: React__default.FC<IconProps>;
1340
+ /** Building, for schools, venues, and vendor offices. */
170
1341
  declare const BuildingIcon: React__default.FC<IconProps>;
1342
+ /** Grid, for switching to a card or tile layout. */
171
1343
  declare const GridIcon: React__default.FC<IconProps>;
1344
+ /** Pencil, for edit actions. */
172
1345
  declare const EditIcon: React__default.FC<IconProps>;
1346
+ /** House, for the home destination. */
173
1347
  declare const HomeIcon: React__default.FC<IconProps>;
1348
+ /** Cube, for packages, equipment, and bundled services. */
174
1349
  declare const CubeIcon: React__default.FC<IconProps>;
1350
+ /** Padlock, for restricted access and locked records. */
175
1351
  declare const LockIcon: React__default.FC<IconProps>;
1352
+ /** Trash can, for delete actions. */
176
1353
  declare const TrashIcon: React__default.FC<IconProps>;
1354
+ /**
1355
+ * Every icon keyed by name, for choosing one at runtime.
1356
+ *
1357
+ * Use a direct import when the icon is known at author time; reach for this
1358
+ * only when the name arrives as data (a nav config, an API response).
1359
+ */
177
1360
  declare const Icons: {
178
1361
  readonly Plane: React__default.FC<IconProps>;
179
1362
  readonly Car: React__default.FC<IconProps>;
@@ -258,8 +1441,38 @@ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>
258
1441
  /** Makes textarea take full width */
259
1442
  fullWidth?: boolean;
260
1443
  }
1444
+ /**
1445
+ * Multi-line text field sharing the Input label, helper text, and error treatment.
1446
+ */
261
1447
  declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
262
1448
 
1449
+ /** Colour treatment. `blue` = Short's Blue (light surfaces); `white` = the
1450
+ * all-white reverse for dark / navy / photography surfaces (e.g. the nav rail). */
1451
+ type LogoVariant = 'blue' | 'white';
1452
+ /** `primary` = the horizontal mark + wordmark lockup (default). `s-mark` = the
1453
+ * standalone interlocking-teardrop "S" glyph, for tight spaces / collapsed nav. */
1454
+ type LogoLockup = 'primary' | 's-mark';
1455
+ interface LogoProps {
1456
+ /** Colour treatment — `blue` on light surfaces, `white` on dark/navy. Default `blue`. */
1457
+ variant?: LogoVariant;
1458
+ /** Which lockup to render. Default `primary`. */
1459
+ lockup?: LogoLockup;
1460
+ /** Rendered height in px; width scales to the lockup's aspect ratio. */
1461
+ height?: number;
1462
+ /** Accessible name for the mark. */
1463
+ alt?: string;
1464
+ className?: string;
1465
+ style?: React__default.CSSProperties;
1466
+ }
1467
+ /**
1468
+ * The official Short's Travel Management logo, in Short's Blue and an all-white
1469
+ * reverse. Use `variant="white"` on dark / navy surfaces (the brand rule: never
1470
+ * place the blue logo on dark fields) and `variant="blue"` on light surfaces.
1471
+ * The assets are the real 2022 brand PNGs, inlined so the component is
1472
+ * self-contained — do not recolor or redraw the mark.
1473
+ */
1474
+ declare const Logo: React__default.FC<LogoProps>;
1475
+
263
1476
  interface MetricProps {
264
1477
  /** The metric value to display */
265
1478
  value?: string | number;
@@ -332,20 +1545,28 @@ interface SpinnerProps {
332
1545
  /** Accessible label */
333
1546
  label?: string;
334
1547
  }
1548
+ /**
1549
+ * Indeterminate loading indicator for waits with no known duration.
1550
+ * Exposes its label to screen readers, so give it one that says what is loading.
1551
+ */
335
1552
  declare const Spinner: React__default.FC<SpinnerProps>;
336
1553
 
337
1554
  type StatusBadgeVariant = 'ticketed' | 'itinerary' | 'not-ticketed' | 'submitted' | 'pending' | 'cancelled' | 'approved' | 'rejected' | 'in-review';
338
- interface StatusBadgeProps {
1555
+ interface StatusBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
339
1556
  /** The status variant to display */
340
1557
  status: StatusBadgeVariant;
341
1558
  /** Optional custom label (defaults to formatted status) */
342
1559
  label?: string;
343
- /** Additional CSS class */
344
- className?: string;
345
1560
  }
1561
+ /**
1562
+ * Badge for a travel record status, styled per status so the same state always reads the same.
1563
+ * Falls back to a formatted version of the status code when no label is given.
1564
+ */
346
1565
  declare const StatusBadge: React__default.FC<StatusBadgeProps>;
347
1566
 
348
- type TagVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
1567
+ type TagVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'
1568
+ /** No fill or colour of its own — inherits, for grouping content inline. */
1569
+ | 'plain';
349
1570
  type TagSize = 'sm' | 'md' | 'lg';
350
1571
  interface TagProps {
351
1572
  /** Tag content */
@@ -365,7 +1586,11 @@ interface TagProps {
365
1586
  /** Inline styles */
366
1587
  style?: React__default.CSSProperties;
367
1588
  }
368
- declare const Tag: React__default.FC<TagProps>;
1589
+ /**
1590
+ * Compact label for keywords, categories, and applied filters.
1591
+ * Becomes a button when clickable, and can carry a remove affordance.
1592
+ */
1593
+ declare const Tag: React__default.ForwardRefExoticComponent<TagProps & React__default.RefAttributes<HTMLSpanElement>>;
369
1594
 
370
1595
  type TimepickerSize = 'sm' | 'md' | 'lg';
371
1596
  interface TimepickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
@@ -420,7 +1645,26 @@ interface ToggleProps {
420
1645
  className?: string;
421
1646
  /** Accessible name for the toggle */
422
1647
  'aria-label'?: string;
1648
+ /**
1649
+ * Field name. Supplying it renders a hidden checkbox so the toggle submits
1650
+ * with a surrounding form; without it the toggle is presentational.
1651
+ */
1652
+ name?: string;
1653
+ /** Id applied to the hidden checkbox, for an external `<label htmlFor>`. */
1654
+ id?: string;
1655
+ /** Class applied to the label wrapper, when a `label` is given. */
1656
+ wrapperClassName?: string;
1657
+ /**
1658
+ * Indicator shown inside the track while disabled — usually a padlock, to
1659
+ * explain why the control cannot be moved. Takes a node so the component
1660
+ * stays independent of any icon set.
1661
+ */
1662
+ disabledIcon?: ReactNode;
423
1663
  }
1664
+ /**
1665
+ * Switch for a setting that applies immediately, with no separate save step.
1666
+ * Use a checkbox instead when the change is submitted with a form.
1667
+ */
424
1668
  declare const Toggle: React__default.FC<ToggleProps>;
425
1669
 
426
1670
  type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
@@ -441,23 +1685,29 @@ interface TooltipProps {
441
1685
  /** Additional CSS class */
442
1686
  className?: string;
443
1687
  }
1688
+ /**
1689
+ * Hover and focus label for a control whose purpose is not obvious from its face.
1690
+ * Supplementary only -- never put information here that a user must have.
1691
+ */
444
1692
  declare const Tooltip: React__default.FC<TooltipProps>;
445
1693
 
446
1694
  type TravelType = 'A' | 'C' | 'H' | 'L' | 'R' | 'B' | 'U';
447
- interface TypeIconProps {
1695
+ interface TypeIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
448
1696
  /** Travel type code: A=Air, C=Car, H=Hotel, L=Limo, R=Rail, B=Bus, U=Unknown */
449
1697
  type: TravelType;
450
1698
  /** Size in pixels */
451
1699
  size?: number;
452
1700
  /** Show tooltip on hover */
453
1701
  showTooltip?: boolean;
454
- /** Additional CSS class */
455
- className?: string;
456
1702
  }
1703
+ /**
1704
+ * Segment icon keyed to a travel type code, color-coded per type.
1705
+ * Use TravelServiceIcon when the vendor matters as well as the type.
1706
+ */
457
1707
  declare const TypeIcon: React__default.FC<TypeIconProps>;
458
1708
 
459
1709
  type VendorCode = 'DL' | 'AA' | 'UA' | 'WN' | 'B6' | 'AS' | 'F9' | 'NK' | 'G4' | 'HA' | string;
460
- interface TravelServiceIconProps {
1710
+ interface TravelServiceIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
461
1711
  /** Travel type: A=Air, C=Car, H=Hotel, L=Limo, R=Rail */
462
1712
  type: TravelType;
463
1713
  /** Vendor/airline code (e.g., DL, AA, UA) */
@@ -468,9 +1718,11 @@ interface TravelServiceIconProps {
468
1718
  size?: number;
469
1719
  /** Show multi-segment indicator */
470
1720
  multi?: boolean;
471
- /** Additional CSS class */
472
- className?: string;
473
1721
  }
1722
+ /**
1723
+ * Segment icon that identifies the vendor as well as the travel type.
1724
+ * Shows the vendor mark when one is known, and can flag a multi-segment leg.
1725
+ */
474
1726
  declare const TravelServiceIcon: React__default.FC<TravelServiceIconProps>;
475
1727
 
476
1728
  interface AccordionProps {
@@ -495,37 +1747,159 @@ interface AccordionProps {
495
1747
  */
496
1748
  declare const Accordion: React__default.FC<AccordionProps>;
497
1749
 
1750
+ interface BackLinkProps {
1751
+ /** The arrow, or whatever else marks the way back. */
1752
+ icon: ReactNode;
1753
+ /**
1754
+ * Element to render. Defaults to `a`; pass a router's link component to keep
1755
+ * navigation client-side.
1756
+ *
1757
+ * This is the reason the component takes `as` at all: the library must not
1758
+ * depend on a router, but every app that has one needs its links to go
1759
+ * through it, or the whole page reloads.
1760
+ */
1761
+ as?: ElementType;
1762
+ /** Accessible name. Defaults to "Back", since an arrow alone announces nothing. */
1763
+ label?: string;
1764
+ /** Additional CSS class */
1765
+ className?: string;
1766
+ /** Inline style overrides, merged after the computed styles. */
1767
+ style?: CSSProperties;
1768
+ /** Anything else — `to` for a router link, `href` for a plain anchor, onClick. */
1769
+ [key: string]: unknown;
1770
+ }
1771
+ /**
1772
+ * The back affordance in a page header: a tap target holding a single arrow.
1773
+ *
1774
+ * It is deliberately not a Button. This navigates, so it should be a link —
1775
+ * middle-clickable, openable in a new tab, and announced as a link rather than
1776
+ * an action.
1777
+ */
1778
+ declare const BackLink: React__default.FC<BackLinkProps>;
1779
+
498
1780
  interface SegmentedSelectorOption {
1781
+ /** Value reported through `onChange` when this option is picked. */
499
1782
  id: string;
1783
+ /** Visible text. Omit for an icon-only option. */
500
1784
  label?: string;
1785
+ /** Accessible name, required when the option is icon-only. */
501
1786
  alt?: string;
1787
+ /** Icon element shown before the label. */
502
1788
  icon?: ReactNode;
503
1789
  }
504
1790
  interface SegmentedSelectorProps {
1791
+ /** Options to render, left to right. */
505
1792
  options: SegmentedSelectorOption[];
1793
+ /** Id of the currently selected option. */
506
1794
  value: string;
1795
+ /** Called with the newly selected option id. */
507
1796
  onChange?: (value: string) => void;
1797
+ /** Disables every option. */
508
1798
  disabled?: boolean;
1799
+ /** Control size. */
509
1800
  size?: 'sm' | 'md' | 'lg';
1801
+ /** Additional CSS class. */
510
1802
  className?: string;
1803
+ /** Accessible name for the group. */
511
1804
  ariaLabel?: string;
512
1805
  /** Stable hook used by Hub acceptance and Chromatic tests. */
513
1806
  dataTest?: string;
1807
+ /** Class applied to every option button. */
1808
+ itemClassName?: string;
1809
+ /** Class applied to the selected option, on top of `itemClassName`. */
1810
+ activeItemClassName?: string;
1811
+ /** Which side of the label an option's icon sits on. Defaults to left. */
1812
+ iconPosition?: 'left' | 'right';
514
1813
  }
515
- declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, dataTest, }: SegmentedSelectorProps) => React.JSX.Element;
1814
+ /**
1815
+ * Single-select control rendering its options as one connected row of buttons.
1816
+ * Backs the calendar selectors below; use those when their options fit.
1817
+ */
1818
+ declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, dataTest, itemClassName, activeItemClassName, iconPosition, }: SegmentedSelectorProps) => React.JSX.Element;
516
1819
  type CalendarViewValue = 'calendar' | 'card' | 'list';
517
1820
  interface CalendarViewSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
1821
+ /** Currently selected layout. */
518
1822
  value: CalendarViewValue;
1823
+ /** Called with the newly selected layout. */
519
1824
  onChange?: (value: CalendarViewValue) => void;
520
1825
  }
1826
+ /**
1827
+ * Chooses how the team travel calendar lays out: calendar grid, cards, or list.
1828
+ */
521
1829
  declare const CalendarViewSelector: ({ value, onChange, ...props }: CalendarViewSelectorProps) => React.JSX.Element;
522
1830
  type CalendarTypeValue = 'trips' | 'due_dates';
523
1831
  interface CalendarTypeSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
1832
+ /** Currently selected item type. */
524
1833
  value: CalendarTypeValue;
1834
+ /** Called with the newly selected item type. */
525
1835
  onChange?: (value: CalendarTypeValue) => void;
526
1836
  }
1837
+ /**
1838
+ * Chooses what the team travel calendar plots -- trips or due dates.
1839
+ */
527
1840
  declare const CalendarTypeSelector: ({ value, onChange, ...props }: CalendarTypeSelectorProps) => React.JSX.Element;
528
1841
 
1842
+ interface ContactCardProps {
1843
+ /** Person's name. Also seeds the avatar's initials. */
1844
+ name?: string;
1845
+ /** Role or job title, shown under the name. */
1846
+ title?: string;
1847
+ /** Phone number, rendered as a `tel:` link. */
1848
+ phone?: string;
1849
+ /** Email address, rendered as a `mailto:` link. */
1850
+ email?: string;
1851
+ /**
1852
+ * Replaces the plain name with your own control — a button opening a
1853
+ * profile, say. The name is still used for the avatar's initials.
1854
+ */
1855
+ action?: ReactNode;
1856
+ /** Whether to show the avatar. */
1857
+ showAvatar?: boolean;
1858
+ /** Additional CSS class */
1859
+ className?: string;
1860
+ }
1861
+ /**
1862
+ * A single person's contact details: avatar, name, title, and tappable phone
1863
+ * and email links.
1864
+ *
1865
+ * Renders nothing when there is neither a name nor an action, so callers can
1866
+ * hand it a partially filled record without guarding first.
1867
+ */
1868
+ declare const ContactCard: React__default.FC<ContactCardProps>;
1869
+
1870
+ type DetailListVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error';
1871
+ interface DetailListItem {
1872
+ /** Name of the field. Omitted for icon rows, which read as a single line. */
1873
+ label?: ReactNode;
1874
+ /** The value. A row with nothing to show is skipped. */
1875
+ description?: ReactNode;
1876
+ /** Leading icon. Supplying one makes this an icon row rather than a pair. */
1877
+ icon?: ReactNode;
1878
+ /** Tints the value as a status chip. */
1879
+ variant?: DetailListVariant;
1880
+ }
1881
+ interface DetailListProps {
1882
+ /** Rows to show. Items with no description are skipped. */
1883
+ items: DetailListItem[];
1884
+ /** Space between rows, and between an icon and its text, in pixels. */
1885
+ gap?: number;
1886
+ /** Additional CSS class */
1887
+ className?: string;
1888
+ }
1889
+ /**
1890
+ * A compact list of field/value pairs, as used down the side of a trip or
1891
+ * booking summary.
1892
+ *
1893
+ * Rows come in two shapes. A `label` and `description` render as a pair, the
1894
+ * value aligned right and optionally tinted as a status chip. An `icon` and
1895
+ * `description` render as one line, with rows lacking an icon still indented
1896
+ * so the text stays aligned.
1897
+ *
1898
+ * The whole list disappears when no item has a description, so callers can
1899
+ * pass a sparse record without checking whether anything survived.
1900
+ */
1901
+ declare const DetailList: React__default.FC<DetailListProps>;
1902
+
529
1903
  type DropdownAlignment = 'left' | 'center' | 'right';
530
1904
  interface DropdownProps {
531
1905
  /** Label for the dropdown trigger button */
@@ -540,6 +1914,16 @@ interface DropdownProps {
540
1914
  className?: string;
541
1915
  /** Whether the dropdown is disabled */
542
1916
  disabled?: boolean;
1917
+ /**
1918
+ * Render the trigger yourself, instead of the default labelled button.
1919
+ * Receives the open state and the handler that toggles the menu, so the
1920
+ * host can supply its own button with its own variant, icon and styling.
1921
+ */
1922
+ trigger?: (state: {
1923
+ isOpen: boolean;
1924
+ toggle: () => void;
1925
+ disabled: boolean;
1926
+ }) => React__default.ReactNode;
543
1927
  }
544
1928
  interface DropdownItemProps {
545
1929
  /** Item label */
@@ -553,6 +1937,10 @@ interface DropdownItemProps {
553
1937
  /** Additional CSS class */
554
1938
  className?: string;
555
1939
  }
1940
+ /**
1941
+ * Button that reveals a menu of actions, closing on outside click or Escape.
1942
+ * Compose the menu from DropdownItem; for choosing a value, use Segment or FilterChip instead.
1943
+ */
556
1944
  declare const Dropdown: React__default.FC<DropdownProps> & {
557
1945
  Item: React__default.FC<DropdownItemProps>;
558
1946
  };
@@ -583,6 +1971,87 @@ interface EmptyStateProps {
583
1971
  /** Placeholder shown when a list, table, or panel has nothing to display. */
584
1972
  declare const EmptyState: ({ title, description, icon, actionLabel, onAction, secondaryActionLabel, onSecondaryAction, size, children, className, }: EmptyStateProps) => React.JSX.Element;
585
1973
 
1974
+ interface FieldLayoutRenderProps {
1975
+ /** Id to put on the control, so the label points at it. */
1976
+ id: string;
1977
+ /** Value for the control's `aria-describedby`, or undefined when clean. */
1978
+ describedBy?: string;
1979
+ /** Whether an error message is showing. */
1980
+ hasError: boolean;
1981
+ }
1982
+ interface FieldLayoutProps {
1983
+ /** Renders the control. Receives the id and description wiring to apply. */
1984
+ children: (props: FieldLayoutRenderProps) => ReactNode;
1985
+ /** Field label. */
1986
+ label?: ReactNode;
1987
+ /** Whether the label sits above the control or beside it. */
1988
+ labelPosition?: 'top' | 'left';
1989
+ /** Hides the label without removing it from the layout's wiring. */
1990
+ showLabel?: boolean;
1991
+ /** Marks the field required, adding an asterisk to the label. */
1992
+ required?: boolean;
1993
+ /** Greys the field and hides the asterisk and icons. */
1994
+ disabled?: boolean;
1995
+ /** Explanatory text shown from an info icon beside the label. */
1996
+ tooltip?: string;
1997
+ /** Validation message shown beneath the control. */
1998
+ error?: string;
1999
+ /** Hint shown beneath the control, under any error. */
2000
+ note?: ReactNode;
2001
+ /** Decoration inside the leading edge of the control. */
2002
+ leftIcon?: ReactNode;
2003
+ /** Decoration inside the trailing edge of the control. */
2004
+ rightIcon?: ReactNode;
2005
+ /** Additional CSS class for the wrapper. */
2006
+ className?: string;
2007
+ }
2008
+ /**
2009
+ * The chrome around a form control: label, required marker, tooltip, the
2010
+ * icons that sit inside the field, and the error and hint beneath it.
2011
+ *
2012
+ * It owns none of the input's behaviour. The control is supplied as a render
2013
+ * prop and handed the generated id and `aria-describedby`, so any input —
2014
+ * native, third-party, or form-library bound — can sit inside it while keeping
2015
+ * the label and error correctly associated.
2016
+ */
2017
+ declare const FieldLayout: React__default.FC<FieldLayoutProps>;
2018
+
2019
+ /** Document types a travel workflow usually accepts. */
2020
+ declare const DOCUMENT_FILE_EXTENSIONS: string[];
2021
+ interface FileUploadButtonProps {
2022
+ /** Text on the button, and the accessible name of the file input. */
2023
+ label?: string;
2024
+ /** Comma-separated list of accepted extensions or MIME types. */
2025
+ accept?: string;
2026
+ /** Allow choosing more than one file. */
2027
+ multiple?: boolean;
2028
+ /** Disables the control and removes the file input entirely. */
2029
+ disabled?: boolean;
2030
+ /** Shows the button's spinner, e.g. while an upload is in flight. */
2031
+ loading?: boolean;
2032
+ /** Visual style of the button. */
2033
+ variant?: ButtonVariant;
2034
+ /** Size of the button. */
2035
+ size?: ButtonSize;
2036
+ /** Icon shown after the label. */
2037
+ icon?: ReactNode;
2038
+ /** Called with the change event when files are chosen. */
2039
+ onSelect?: (event: ChangeEvent<HTMLInputElement>) => void;
2040
+ /** Additional CSS class */
2041
+ className?: string;
2042
+ /** Extra attributes for the underlying file input. */
2043
+ inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'accept' | 'multiple' | 'onChange'>;
2044
+ }
2045
+ /**
2046
+ * A styled button that opens the file picker.
2047
+ *
2048
+ * The file input is the control: it sits transparently over the button and
2049
+ * carries the accessible name, so keyboard and screen-reader users get one
2050
+ * "choose file" control rather than a button and an input side by side. The
2051
+ * button underneath is decorative and hidden from assistive technology.
2052
+ */
2053
+ declare const FileUploadButton: React__default.FC<FileUploadButtonProps>;
2054
+
586
2055
  interface FilterOption {
587
2056
  value: string;
588
2057
  label: string;
@@ -607,6 +2076,10 @@ interface FilterChipProps {
607
2076
  /** Additional CSS class */
608
2077
  className?: string;
609
2078
  }
2079
+ /**
2080
+ * Compact single-select filter showing its current value on the chip itself.
2081
+ * Can filter its own options when the list is long enough to need searching.
2082
+ */
610
2083
  declare const FilterChip: React__default.FC<FilterChipProps>;
611
2084
 
612
2085
  interface FormFieldProps {
@@ -631,6 +2104,11 @@ interface FormFieldProps {
631
2104
  /** Children for custom input rendering */
632
2105
  children?: React__default.ReactNode;
633
2106
  }
2107
+ /**
2108
+ * Pairs a labelled control with its helper text and error message, wiring up the
2109
+ * accessible associations between them.
2110
+ * Renders an Input or Textarea via `as`, or any control passed as children.
2111
+ */
634
2112
  declare const FormField: React__default.ForwardRefExoticComponent<FormFieldProps & React__default.RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;
635
2113
 
636
2114
  interface FormRowProps {
@@ -674,24 +2152,128 @@ interface FormSectionProps {
674
2152
  declare const FormSection: React__default.FC<FormSectionProps>;
675
2153
 
676
2154
  interface FormStackProps {
2155
+ /** Form fields to space evenly. */
677
2156
  children: ReactNode;
2157
+ /** Vertical space between fields. */
678
2158
  gap?: 'sm' | 'md' | 'lg';
2159
+ /** Additional CSS class. */
679
2160
  className?: string;
680
2161
  }
681
2162
  /** Standard vertical form-field rhythm used by Hub modal forms. */
682
2163
  declare const FormStack: ({ children, gap, className }: FormStackProps) => React.JSX.Element;
683
2164
 
2165
+ /** A side of the tile, used to describe how it joins its neighbours. */
2166
+ type InfoTileEdge = 'left' | 'right' | 'top' | 'bottom';
2167
+ interface InfoTileProps {
2168
+ /** Figure the tile exists to show, e.g. a count or a date. */
2169
+ value: ReactNode;
2170
+ /** Short caption naming what the value measures. */
2171
+ label: ReactNode;
2172
+ /** Optional leading icon, rendered in its own bordered cell. */
2173
+ icon?: ReactNode;
2174
+ /**
2175
+ * Edges whose corners should be square rather than rounded. Use when the
2176
+ * tile sits against another so the pair reads as one control.
2177
+ */
2178
+ square?: InfoTileEdge[];
2179
+ /**
2180
+ * Edges that should not draw a border. Give this to the second tile of a
2181
+ * pair so the two share a single divider instead of stacking two.
2182
+ */
2183
+ borderless?: InfoTileEdge[];
2184
+ /** Additional CSS class */
2185
+ className?: string;
2186
+ /** Inline style overrides, merged after the computed tile styles. */
2187
+ style?: CSSProperties;
2188
+ }
2189
+ /**
2190
+ * Compact statistic tile pairing a figure with a caption and an optional icon.
2191
+ *
2192
+ * Tiles are designed to butt together into a strip — horizontally on narrow
2193
+ * screens, vertically on wide ones — by squaring the touching corners and
2194
+ * dropping the duplicated border.
2195
+ */
2196
+ declare const InfoTile: React__default.FC<InfoTileProps>;
2197
+
684
2198
  type ManifestView = 'passengers' | 'equipment';
685
2199
  interface ManifestViewToggleProps {
2200
+ /** Manifest currently shown. */
686
2201
  view: ManifestView;
2202
+ /** Called with the manifest the user switched to. */
687
2203
  onView: (view: ManifestView) => void;
2204
+ /** Passenger count shown on the passengers tab. */
688
2205
  paxCount: number;
2206
+ /** Equipment count shown on the equipment tab. */
689
2207
  eqCount: number;
2208
+ /** Marks the manifest as locked, swapping both tab icons for a padlock. Presentational only -- it does not stop the switch. */
690
2209
  locked: boolean;
2210
+ /** Additional CSS class. */
691
2211
  className?: string;
692
2212
  }
2213
+ /**
2214
+ * Tabs switching a charter manifest between its passenger and equipment lists,
2215
+ * each showing its current count.
2216
+ */
693
2217
  declare const ManifestViewToggle: ({ view, onView, paxCount, eqCount, locked, className, }: ManifestViewToggleProps) => React.JSX.Element;
694
2218
 
2219
+ /** A user option that can be searched for and selected. */
2220
+ interface MultiUserSearchOption {
2221
+ /** Unique identifier for the user. */
2222
+ id: string | number;
2223
+ /** Display name. */
2224
+ name: string;
2225
+ /** Email address. */
2226
+ email: string;
2227
+ /** Optional job title or role. */
2228
+ title?: string;
2229
+ /** Whether this option is disabled. */
2230
+ disabled?: boolean;
2231
+ /** Reason the option is disabled, shown as tooltip. */
2232
+ disabledReason?: string;
2233
+ }
2234
+ interface MultiUserSearchProps {
2235
+ /** Label for the search input. */
2236
+ label?: string;
2237
+ /** Placeholder text. */
2238
+ placeholder?: string;
2239
+ /** Options to display when search matches or is empty. */
2240
+ options: MultiUserSearchOption[];
2241
+ /** Currently selected user IDs. */
2242
+ selectedIds: (string | number)[];
2243
+ /** Called when user types in the search input. Debounce in the host if needed. */
2244
+ onSearch?: (query: string) => void;
2245
+ /** Called when selection changes. */
2246
+ onSelectionChange: (ids: (string | number)[]) => void;
2247
+ /** Whether the host is loading search results. */
2248
+ loading?: boolean;
2249
+ /** Whether the component is disabled. */
2250
+ disabled?: boolean;
2251
+ /** Minimum characters before triggering search callback. */
2252
+ minSearchLength?: number;
2253
+ /** Helper text shown below the input. */
2254
+ helperText?: string;
2255
+ /** Error message to display. */
2256
+ error?: string;
2257
+ /** Additional CSS class. */
2258
+ className?: string;
2259
+ /** Test ID for automation. */
2260
+ 'data-test'?: string;
2261
+ }
2262
+ /**
2263
+ * Multi-select user search with typeahead dropdown.
2264
+ *
2265
+ * Features:
2266
+ * - Single search input that populates a dropdown of matching users
2267
+ * - Multi-select via checkboxes or clicking options
2268
+ * - Selected users shown as dismissible badges above the input
2269
+ * - Keyboard navigation (arrow keys, enter, escape)
2270
+ * - Loading state while searching
2271
+ */
2272
+ declare const MultiUserSearch: {
2273
+ ({ label, placeholder, options, selectedIds, onSearch, onSelectionChange, loading, disabled, minSearchLength, helperText, error, className, "data-test": dataTest, }: MultiUserSearchProps): React__default.JSX.Element;
2274
+ displayName: string;
2275
+ };
2276
+
695
2277
  type NavItemVariant = 'default' | 'pill';
696
2278
  type NavItemSize = 'sm' | 'md' | 'lg';
697
2279
  interface NavItemProps {
@@ -724,8 +2306,38 @@ interface NavItemProps {
724
2306
  /** Accessible description */
725
2307
  'aria-label'?: string;
726
2308
  }
2309
+ /**
2310
+ * One destination in a navigation list, with an optional icon and badge.
2311
+ * Renders as a link when given `href`, otherwise as a button.
2312
+ * Collapses to icon-only, keeping its label available to screen readers.
2313
+ */
727
2314
  declare const NavItem: React__default.FC<NavItemProps>;
728
2315
 
2316
+ interface PageHeaderProps {
2317
+ /** The page's heading. */
2318
+ title?: ReactNode;
2319
+ /** Smaller line above the title, naming the section the page sits in. */
2320
+ pretitle?: ReactNode;
2321
+ /** Content directly beneath the title — tabs, a summary line, filters. */
2322
+ after?: ReactNode;
2323
+ /**
2324
+ * Slot for a back control, rendered to the left of the title. Takes a node
2325
+ * so the host supplies its own router link and icon, keeping this component
2326
+ * independent of any router.
2327
+ */
2328
+ back?: ReactNode;
2329
+ /** Additional CSS class */
2330
+ className?: string;
2331
+ }
2332
+ /**
2333
+ * Standard page heading: an optional back control, a pretitle, the title, and
2334
+ * a slot beneath for anything that belongs with it.
2335
+ *
2336
+ * The header keeps its height while `title` is empty and fades in once one
2337
+ * arrives, so pages do not jump as their data loads.
2338
+ */
2339
+ declare const PageHeader: React__default.FC<PageHeaderProps>;
2340
+
729
2341
  /** A rendered slot in the page list: either a page number or a truncation gap. */
730
2342
  type PaginationItem = number | 'ellipsis';
731
2343
  interface PaginationProps {
@@ -791,14 +2403,55 @@ interface ProgressCircleProps {
791
2403
  showLabel?: boolean;
792
2404
  /** Additional CSS class */
793
2405
  className?: string;
2406
+ /**
2407
+ * Explicit diameter in pixels, for indicators smaller or larger than the
2408
+ * named ramp. The stroke scales with it.
2409
+ */
2410
+ diameter?: number;
794
2411
  }
2412
+ /**
2413
+ * Horizontal bar for determinate progress -- a known percentage of a known total.
2414
+ * Use Spinner when the duration is unknown.
2415
+ */
795
2416
  declare const ProgressBar: React__default.FC<ProgressBarProps>;
2417
+ /**
2418
+ * Ring showing determinate progress, for tighter spaces than ProgressBar fits.
2419
+ */
796
2420
  declare const ProgressCircle: React__default.FC<ProgressCircleProps>;
2421
+ /**
2422
+ * Namespace bundling the progress indicators as `Progress.Bar` and `Progress.Circle`.
2423
+ */
797
2424
  declare const Progress: {
798
2425
  Bar: React__default.FC<ProgressBarProps>;
799
2426
  Circle: React__default.FC<ProgressCircleProps>;
800
2427
  };
801
2428
 
2429
+ interface ResultCountProps {
2430
+ /** How many rows are on screen right now. */
2431
+ count: number;
2432
+ /**
2433
+ * What is being counted, singular — "trip", "traveler". Pluralised by adding
2434
+ * an "s" unless `pluralNoun` says otherwise.
2435
+ */
2436
+ noun: string;
2437
+ /** Plural form, for the nouns an "s" does not fit ("person" -> "people"). */
2438
+ pluralNoun?: string;
2439
+ /** Additional CSS class */
2440
+ className?: string;
2441
+ /** Inline style overrides, merged after the computed styles. */
2442
+ style?: CSSProperties;
2443
+ }
2444
+ /**
2445
+ * The "12 trips displayed" line that sits above a filtered list.
2446
+ *
2447
+ * It reports what is on screen, not what exists — the distinction matters when
2448
+ * a filter is applied, which is exactly when someone reads it.
2449
+ *
2450
+ * The count is announced politely so screen-reader users hear the list resize
2451
+ * as they filter, instead of having to go looking for the number.
2452
+ */
2453
+ declare const ResultCount: React__default.FC<ResultCountProps>;
2454
+
802
2455
  interface ToolbarAction {
803
2456
  /** Action label */
804
2457
  label: string;
@@ -870,17 +2523,31 @@ interface SearchFieldProps {
870
2523
  /** Accessible label */
871
2524
  'aria-label'?: string;
872
2525
  }
2526
+ /**
2527
+ * Search input with clear and submit affordances.
2528
+ * Works controlled via `value` or uncontrolled via `defaultValue`; `onChange` fires
2529
+ * per keystroke while `onSearch` fires only on submit.
2530
+ */
873
2531
  declare const SearchField: React__default.ForwardRefExoticComponent<SearchFieldProps & React__default.RefAttributes<HTMLInputElement>>;
874
2532
 
875
2533
  interface SchoolContactFormProps {
2534
+ /** Whether the form is adding or editing, used for the heading. */
876
2535
  mode?: 'Add' | 'Edit' | string;
2536
+ /** Optional control for prefilling the form from an existing portal user. */
877
2537
  createFromPortalUser?: ReactNode;
2538
+ /** Rendered first name field. */
878
2539
  firstNameField: ReactNode;
2540
+ /** Rendered middle initial field. */
879
2541
  middleInitialField: ReactNode;
2542
+ /** Rendered last name field. */
880
2543
  lastNameField: ReactNode;
2544
+ /** Rendered business phone field. */
881
2545
  businessPhoneField: ReactNode;
2546
+ /** Rendered cell phone field. */
882
2547
  cellPhoneField: ReactNode;
2548
+ /** Rendered email field. */
883
2549
  emailField: ReactNode;
2550
+ /** Additional CSS class. */
884
2551
  className?: string;
885
2552
  }
886
2553
  /**
@@ -915,6 +2582,10 @@ interface SegmentProps {
915
2582
  /** Accessible label */
916
2583
  'aria-label'?: string;
917
2584
  }
2585
+ /**
2586
+ * Segmented control for picking one of a few options that are all worth showing.
2587
+ * Prefer a Dropdown once the list outgrows the available width.
2588
+ */
918
2589
  declare const Segment: React__default.FC<SegmentProps>;
919
2590
 
920
2591
  interface SelectFilterOption {
@@ -992,6 +2663,8 @@ interface ServiceToggleListProps {
992
2663
  onClick?: (key: string) => void;
993
2664
  /** Additional CSS class */
994
2665
  className?: string;
2666
+ /** Disable every service toggle */
2667
+ disabled?: boolean;
995
2668
  }
996
2669
  /**
997
2670
  * ServiceToggle component for a single service item.
@@ -1005,19 +2678,50 @@ declare const ServiceToggle: React__default.FC<ServiceToggleProps>;
1005
2678
  declare const ServiceToggleList: React__default.FC<ServiceToggleListProps>;
1006
2679
 
1007
2680
  type SupplierTypeValue = 'A' | 'C' | 'H';
2681
+ /**
2682
+ * The selectable supplier types, without the "All" entry the toggle adds.
2683
+ */
1008
2684
  declare const SUPPLIER_TYPE_OPTIONS: Array<{
1009
2685
  value: SupplierTypeValue;
1010
2686
  label: string;
1011
2687
  }>;
1012
2688
  interface SupplierTypeToggleProps {
2689
+ /** Selected supplier type, or `''` for all. Makes the toggle controlled. */
1013
2690
  value?: SupplierTypeValue | '';
2691
+ /** Initial selection when uncontrolled. */
1014
2692
  defaultValue?: SupplierTypeValue | '';
2693
+ /** Called with the newly selected supplier type, or `''` for all. */
1015
2694
  onChange?: (value: SupplierTypeValue | '') => void;
2695
+ /** Disables every option. */
1016
2696
  disabled?: boolean;
2697
+ /** Additional CSS class. */
1017
2698
  className?: string;
1018
2699
  }
2700
+ /**
2701
+ * Filters a supplier list down to air, car, or hotel.
2702
+ * Works controlled via `value` or uncontrolled via `defaultValue`.
2703
+ */
1019
2704
  declare const SupplierTypeToggle: ({ value, defaultValue, onChange, disabled, className, }: SupplierTypeToggleProps) => React.JSX.Element;
1020
2705
 
2706
+ interface TeamCalendarHeaderProps {
2707
+ /** Short team abbreviation, e.g. "MBB". Always shown. */
2708
+ teamCode: string;
2709
+ /** Full team name, shown alongside the code once there is room for it. */
2710
+ teamFullName?: string;
2711
+ /** Content beneath the identity — trip counts, a next-trip date, actions. */
2712
+ children?: ReactNode;
2713
+ /** Additional CSS class */
2714
+ className?: string;
2715
+ }
2716
+ /**
2717
+ * The heading of a team's column in the travel calendar: the team's code, its
2718
+ * full name where space allows, and whatever summary belongs underneath.
2719
+ *
2720
+ * It sticks to the top of its column so the team stays identifiable while the
2721
+ * schedule scrolls.
2722
+ */
2723
+ declare const TeamCalendarHeader: React__default.FC<TeamCalendarHeaderProps>;
2724
+
1021
2725
  interface TeamHeaderProps {
1022
2726
  /** Fully composed title. Overrides teamCode/teamName when supplied. */
1023
2727
  title?: ReactNode;
@@ -1044,13 +2748,19 @@ declare const TeamHeader: {
1044
2748
  displayName: string;
1045
2749
  };
1046
2750
  interface TeamSubMenuTab {
2751
+ /** Value reported through `onTabChange` when this tab is picked. */
1047
2752
  id: string;
2753
+ /** Visible tab text. */
1048
2754
  label: string;
1049
2755
  }
1050
2756
  interface TeamSubMenuProps {
2757
+ /** Tabs to render. Defaults to the standard team management set. */
1051
2758
  tabs?: TeamSubMenuTab[];
2759
+ /** Id of the currently selected tab. */
1052
2760
  activeTab?: string;
2761
+ /** Called with the newly selected tab id. */
1053
2762
  onTabChange?: (tabId: string) => void;
2763
+ /** Additional CSS class. */
1054
2764
  className?: string;
1055
2765
  }
1056
2766
  /** Router-agnostic counterpart of Hub's team-management submenu. */
@@ -1060,32 +2770,55 @@ declare const TeamSubMenu: {
1060
2770
  };
1061
2771
 
1062
2772
  interface FlightData {
2773
+ /** Whether the leg is a commercial booking or a charter. */
1063
2774
  type: 'commercial' | 'charter';
2775
+ /** Departure airport code. */
1064
2776
  departure: string;
2777
+ /** Arrival airport code. */
1065
2778
  arrival: string;
2779
+ /** Departure date. */
1066
2780
  departureDate: string;
2781
+ /** Departure time, local to the departure airport. */
1067
2782
  departureTime?: string;
2783
+ /** Arrival date, when it differs from the departure date. */
1068
2784
  arrivalDate?: string;
2785
+ /** Arrival time, local to the arrival airport. */
1069
2786
  arrivalTime?: string;
2787
+ /** Operating carrier name. */
1070
2788
  airline?: string;
2789
+ /** Flight number. */
1071
2790
  flightNumber?: string;
1072
2791
  }
1073
2792
  interface GroundData {
2793
+ /** Vehicle class for the leg. */
1074
2794
  type: 'bus' | 'van' | 'car' | 'limo';
2795
+ /** Ground operator name. */
1075
2796
  company?: string;
2797
+ /** Where the vehicle collects the party. */
1076
2798
  pickupLocation: string;
2799
+ /** Where the vehicle drops the party. */
1077
2800
  dropoffLocation: string;
2801
+ /** Pickup date. */
1078
2802
  pickupDate: string;
2803
+ /** Pickup time, local to the pickup location. */
1079
2804
  pickupTime?: string;
2805
+ /** Number of vehicles on the leg. */
1080
2806
  vehicleCount?: number;
1081
2807
  }
1082
2808
  interface HotelData {
2809
+ /** Property name. */
1083
2810
  name: string;
2811
+ /** Street address. */
1084
2812
  address?: string;
2813
+ /** City, shown when the address is omitted. */
1085
2814
  city?: string;
2815
+ /** Check-in date. */
1086
2816
  checkIn: string;
2817
+ /** Check-out date. */
1087
2818
  checkOut: string;
2819
+ /** Number of rooms held. */
1088
2820
  roomCount?: number;
2821
+ /** Hotel confirmation number. */
1089
2822
  confirmationNumber?: string;
1090
2823
  }
1091
2824
  type SegmentVariant = 'light' | 'dark';
@@ -1100,18 +2833,27 @@ interface TripSegmentProps {
1100
2833
  children: ReactNode;
1101
2834
  }
1102
2835
  interface AirSegmentProps {
2836
+ /** Flights on this segment, in travel order. */
1103
2837
  flights: FlightData[];
2838
+ /** Visual variant. */
1104
2839
  variant?: SegmentVariant;
2840
+ /** Additional CSS class. */
1105
2841
  className?: string;
1106
2842
  }
1107
2843
  interface GroundSegmentProps {
2844
+ /** Ground legs on this segment, in travel order. */
1108
2845
  segments: GroundData[];
2846
+ /** Visual variant. */
1109
2847
  variant?: SegmentVariant;
2848
+ /** Additional CSS class. */
1110
2849
  className?: string;
1111
2850
  }
1112
2851
  interface HotelSegmentProps {
2852
+ /** Hotel stays on this segment, in travel order. */
1113
2853
  hotels: HotelData[];
2854
+ /** Visual variant. */
1114
2855
  variant?: SegmentVariant;
2856
+ /** Additional CSS class. */
1115
2857
  className?: string;
1116
2858
  }
1117
2859
  /**
@@ -1283,70 +3025,102 @@ interface GroupTravelDueStatus {
1283
3025
  complete: boolean;
1284
3026
  }
1285
3027
  interface GroupTravelPnr {
3028
+ /** Identifier for the PNR. */
1286
3029
  id: string | number;
1287
3030
  /** Airline record locator, or the placeholder used before one has been issued. */
1288
3031
  recordLocator: string;
1289
3032
  complete: boolean;
1290
3033
  }
1291
3034
  interface AgentGroupTravelRequest {
3035
+ /** Identifier for the PNR. */
1292
3036
  id: number;
1293
3037
  /** School/account this request belongs to — rows are grouped by this value. */
1294
3038
  accountName: string;
1295
3039
  /** Whether an agent or the client themselves submitted the request. */
1296
3040
  source: GroupTravelRequestSource;
3041
+ /** Master trip this request became, once one exists. */
1297
3042
  masterTripId?: number;
1298
3043
  /** Shown as a tooltip and highlights the ID when present. */
1299
3044
  notes?: string;
1300
3045
  /** ISO (yyyy-mm-dd) trip start date. */
1301
3046
  startDate: string;
3047
+ /** Trip name. */
1302
3048
  name: string;
3049
+ /** Sport name shown in the row. */
1303
3050
  sport: string;
1304
3051
  /** Sport code used for the sport filter, e.g. "MBB". */
1305
3052
  sportCode: string;
3053
+ /** Airline handling the group, once assigned. */
1306
3054
  carrier?: string;
3055
+ /** Whether commercial air is part of the request. */
1307
3056
  air: boolean;
3057
+ /** Whether a charter is part of the request. */
1308
3058
  charter: boolean;
3059
+ /** Whether rental cars are part of the request. */
1309
3060
  car: boolean;
3061
+ /** Whether a motorcoach is part of the request. */
1310
3062
  motorcoach: boolean;
3063
+ /** Whether hotel rooms are part of the request. */
1311
3064
  hotel: boolean;
3065
+ /** Whether the hotel is booked as a group block. */
1312
3066
  groupHotel: boolean;
3067
+ /** Routing summary for the trip. */
1313
3068
  routing: string;
1314
3069
  /** ISO (yyyy-mm-dd) date submitted. */
1315
3070
  submittedDate?: string;
1316
3071
  /** ISO (yyyy-mm-dd) date the quote was sent. */
1317
3072
  quoteSentDate?: string;
3073
+ /** Due status for confirming the booking. */
1318
3074
  confirmation: GroupTravelDueStatus;
3075
+ /** Due status for the deposit. */
1319
3076
  deposit: GroupTravelDueStatus;
3077
+ /** Due status for the utilization review. */
1320
3078
  utilization: GroupTravelDueStatus;
3079
+ /** Due status for submitting traveler names. */
1321
3080
  names: GroupTravelDueStatus;
3081
+ /** Due status for ticketing. */
1322
3082
  ticketing: GroupTravelDueStatus;
1323
3083
  /** One entry per PNR in this group; more than one renders as an expandable "Multi" group. */
1324
3084
  pnrs: GroupTravelPnr[];
1325
3085
  }
1326
3086
  interface AgentGroupTravelRequestSportOption {
3087
+ /** Sport code matched against a request. */
1327
3088
  code: string;
3089
+ /** Visible sport name. */
1328
3090
  label: string;
1329
3091
  }
1330
3092
  interface AgentGroupTravelRequestViewOption {
3093
+ /** Identifier for the saved view. */
1331
3094
  id: string;
3095
+ /** Visible view name. */
1332
3096
  label: string;
1333
3097
  /** Account names included in this saved view. */
1334
3098
  accountNames: string[];
1335
3099
  }
1336
3100
  interface AgentGroupTravelRequestsTableProps {
3101
+ /** Requests to list. Rows are grouped by account. */
1337
3102
  requests: AgentGroupTravelRequest[];
3103
+ /** Sports offered in the sport filter. */
1338
3104
  sports?: AgentGroupTravelRequestSportOption[];
1339
3105
  /** Saved account-group "views"; the view filter is hidden when none are supplied. */
1340
3106
  views?: AgentGroupTravelRequestViewOption[];
1341
3107
  /** ISO (yyyy-mm-dd) reference date for due-status coloring. Defaults to today; pass a fixed value in stories/tests for determinism. */
1342
3108
  today?: string;
3109
+ /** Called with the request the agent opened. */
1343
3110
  onOpenRequest?: (id: number) => void;
3111
+ /** Called with the master trip the agent opened. */
1344
3112
  onViewMasterTrip?: (masterTripId: number) => void;
3113
+ /** Called with the request the agent deleted. */
1345
3114
  onDeleteRequest?: (id: number) => void;
3115
+ /** Called with the record locator the agent copied. */
1346
3116
  onCopyPnr?: (recordLocator: string) => void;
3117
+ /** Called with the request and the milestone the agent marked complete or incomplete. */
1347
3118
  onToggleDueStatus?: (id: number, field: GroupTravelDueField) => void;
3119
+ /** Called with the request and its new submitted date. */
1348
3120
  onSubmittedDateChange?: (id: number, value: string) => void;
3121
+ /** Called with the request and its new quote-sent date. */
1349
3122
  onQuoteSentDateChange?: (id: number, value: string) => void;
3123
+ /** Additional CSS class. */
1350
3124
  className?: string;
1351
3125
  }
1352
3126
  /** Computes the short "A/C/B/H/GH/CA" travel-type codes shown in the Type column. */
@@ -1367,9 +3141,14 @@ interface SidenavItem {
1367
3141
  onClick?: () => void;
1368
3142
  }
1369
3143
  interface SidenavProps extends HTMLAttributes<HTMLElement> {
1370
- /** Logo component or image for expanded state */
3144
+ /**
3145
+ * Logo for the expanded state. The nav rail is navy, so the logo slot
3146
+ * defaults to a light ink — text and `currentColor` icon logos read without
3147
+ * setting a colour. Supply an **inverse (light)** treatment; a raster or
3148
+ * fixed-fill logo should be a light/white asset, not a dark-on-light one.
3149
+ */
1371
3150
  logo?: React__default.ReactNode;
1372
- /** Logo component or image for collapsed state */
3151
+ /** Logo for the collapsed state (same inverse-on-navy contract as `logo`). */
1373
3152
  logoCollapsed?: React__default.ReactNode;
1374
3153
  /** Navigation items */
1375
3154
  items: SidenavItem[];
@@ -1440,6 +3219,10 @@ interface AppLayoutProps {
1440
3219
  /** Additional CSS class */
1441
3220
  className?: string;
1442
3221
  }
3222
+ /**
3223
+ * Generic page frame: sidebar, top bar, and content area.
3224
+ * Use HubAppShell for Hub screens -- it adds the Hub navigation and branding.
3225
+ */
1443
3226
  declare const AppLayout: React__default.FC<AppLayoutProps>;
1444
3227
 
1445
3228
  type CardVariant = 'default' | 'bordered' | 'elevated';
@@ -1464,30 +3247,49 @@ interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
1464
3247
  /** Actions to display in the header */
1465
3248
  actions?: React__default.ReactNode;
1466
3249
  }
3250
+ /**
3251
+ * Top of a Card: title, subtitle, and any header actions.
3252
+ */
1467
3253
  declare const CardHeader: React__default.FC<CardHeaderProps>;
1468
3254
  interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
1469
3255
  }
3256
+ /**
3257
+ * Main content region of a Card, carrying the card padding.
3258
+ */
1470
3259
  declare const CardBody: React__default.FC<CardBodyProps>;
1471
3260
  interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
1472
3261
  }
3262
+ /**
3263
+ * Bottom of a Card, for actions and summary detail.
3264
+ */
1473
3265
  declare const CardFooter: React__default.FC<CardFooterProps>;
1474
3266
 
1475
3267
  /** The three notifications the Charter Sourcing backend currently sends. */
1476
3268
  type CharterSourcingEmailVariant = 'admin-review' | 'submitter-approved' | 'submitter-updated';
1477
3269
  /** One origin/destination pair included in the email's route summary. */
1478
3270
  interface CharterSourcingEmailLeg {
3271
+ /** Departure airport code. */
1479
3272
  origin: string;
3273
+ /** Arrival airport code. */
1480
3274
  destination: string;
1481
3275
  }
1482
3276
  /** Contract-backed quote facts shared by all three notifications. */
1483
3277
  interface CharterSourcingEmailQuote {
3278
+ /** Sourcing request the quote answers. */
1484
3279
  requestId: string;
3280
+ /** Operator quoting the charter. */
1485
3281
  carrier: string;
3282
+ /** Aircraft type offered. */
1486
3283
  aircraft: string;
3284
+ /** Passenger count the quote covers. */
1487
3285
  passengers: string | number;
3286
+ /** Legs in the quoted routing, in travel order. */
1488
3287
  legs: readonly CharterSourcingEmailLeg[];
3288
+ /** Outbound travel date. */
1489
3289
  outboundDate: string;
3290
+ /** Return travel date. */
1490
3291
  returnDate: string;
3292
+ /** Who submitted the quote. */
1491
3293
  submittedBy: string;
1492
3294
  /**
1493
3295
  * Preformatted amount without an assumed currency symbol. The backend only
@@ -1497,8 +3299,11 @@ interface CharterSourcingEmailQuote {
1497
3299
  }
1498
3300
  /** One scalar value changed by an administrator. */
1499
3301
  interface CharterSourcingEmailChange {
3302
+ /** Field that changed. */
1500
3303
  label: string;
3304
+ /** Value before the change. */
1501
3305
  previousValue: string;
3306
+ /** Value after the change. */
1502
3307
  updatedValue: string;
1503
3308
  }
1504
3309
  /** Hub only sends an update notification when at least one field changed. */
@@ -1507,20 +3312,26 @@ type CharterSourcingEmailChanges = readonly [
1507
3312
  ...CharterSourcingEmailChange[]
1508
3313
  ];
1509
3314
  interface CharterSourcingEmailPreviewBaseProps {
3315
+ /** Quote the email is about. */
1510
3316
  quote: CharterSourcingEmailQuote;
1511
3317
  /**
1512
3318
  * Original production recipient shown when a non-production environment
1513
3319
  * diverts the message to its configured test inbox.
1514
3320
  */
1515
3321
  testServerOriginalRecipient?: string;
3322
+ /** Additional CSS class. */
1516
3323
  className?: string;
1517
3324
  }
1518
3325
  /** Props mirror the three real sends; an update must contain at least one change. */
1519
3326
  type CharterSourcingEmailPreviewProps = CharterSourcingEmailPreviewBaseProps & ({
3327
+ /** Which of the three sends to preview. */
1520
3328
  variant: 'admin-review' | 'submitter-approved';
3329
+ /** Not carried by these sends -- only an update lists changes. */
1521
3330
  changes?: never;
1522
3331
  } | {
3332
+ /** Which of the three sends to preview. */
1523
3333
  variant: 'submitter-updated';
3334
+ /** What changed since the last send. An update must list at least one. */
1524
3335
  changes: CharterSourcingEmailChanges;
1525
3336
  });
1526
3337
  /** The exact comma-separated route label used by the backend subject and body. */
@@ -1585,6 +3396,122 @@ declare const ContactList: {
1585
3396
  displayName: string;
1586
3397
  };
1587
3398
 
3399
+ /**
3400
+ * A resolution option a team lead can bulk-apply to selected debit memos.
3401
+ */
3402
+ interface ResolutionOption {
3403
+ /** Stable value submitted to `onApply`. */
3404
+ value: string;
3405
+ /** Stakeholder-facing label shown in the dropdown. */
3406
+ label: string;
3407
+ }
3408
+ interface DebitMemoBulkActionBarProps {
3409
+ /** The full set of resolution options offered in the dropdown. */
3410
+ resolutionOptions: ResolutionOption[];
3411
+ /** Number of memos currently selected in the grid above/below this bar. */
3412
+ selectedCount: number;
3413
+ /**
3414
+ * Called when the team lead applies a resolution to the current selection.
3415
+ * The bar clears its own dropdown back to the placeholder after a
3416
+ * successful apply; it does not track applied/pending state itself.
3417
+ */
3418
+ onApply: (resolutionValue: string) => void;
3419
+ /** Disables the whole control, e.g. while a bulk-apply request is in flight. */
3420
+ isSubmitting?: boolean;
3421
+ }
3422
+ /**
3423
+ * Bulk-resolution toolbar for the Debit Memo / Agent Error grid. Lets a team
3424
+ * lead assign one resolution reason to every currently-selected memo instead
3425
+ * of opening and editing each one individually. Composed from the `Select`
3426
+ * and `Button` atoms.
3427
+ */
3428
+ declare function DebitMemoBulkActionBar({ resolutionOptions, selectedCount, onApply, isSubmitting, }: DebitMemoBulkActionBarProps): React.JSX.Element;
3429
+
3430
+ /**
3431
+ * One ARC debit memo / agent error row as shown in the Employees grid.
3432
+ */
3433
+ interface DebitMemoRecord {
3434
+ /**
3435
+ * Stable row id. Falls back to being the link text when `number` is absent,
3436
+ * which is how the mock rows are written; live rows key on the memo's
3437
+ * database id and carry the ARC number separately, because a memo number is
3438
+ * only assigned to debit memos — agent errors have none, so a grid keyed on
3439
+ * it would collide every agent-error row onto one key.
3440
+ */
3441
+ id: string;
3442
+ /**
3443
+ * ARC debit memo number shown as the link text. Blank on agent errors,
3444
+ * which the grid renders with an em dash. Omit it and `id` is shown.
3445
+ */
3446
+ number?: string;
3447
+ /** Memo type code shown in the Type column, e.g. "DM". */
3448
+ type: string;
3449
+ /** Booking agent name or username who created the underlying booking. */
3450
+ agent: string;
3451
+ /** Branch number the memo is billed against. */
3452
+ branch: string;
3453
+ /** Traveler name, formatted "Last, First". */
3454
+ traveler: string;
3455
+ /** Airline numeric code (ALN) for the memo. */
3456
+ aln: string;
3457
+ /** Original ticket number pulled from the ARC debit memo PDF. */
3458
+ originalTicketNumber: string;
3459
+ /** Memo balance in US dollars. */
3460
+ balance: number;
3461
+ /** Standardized reason pulled from the ARC debit memo PDF. */
3462
+ memoReason: string;
3463
+ /** Date the memo was created, already formatted for display. */
3464
+ dateCreated: string;
3465
+ /** Date the memo was last updated, already formatted for display, if any. */
3466
+ lastUpdated?: string;
3467
+ /** URL to the ARC debit memo PDF the memo number links to. */
3468
+ memoPdfUrl?: string;
3469
+ }
3470
+ interface DebitMemoTableProps {
3471
+ /** Rows to render. Ignored while `isLoading` is true. */
3472
+ memos: DebitMemoRecord[];
3473
+ /** IDs of the currently selected rows (controlled). */
3474
+ selectedIds: string[];
3475
+ /** Called with the full next set of selected IDs on any checkbox change. */
3476
+ onSelectionChange: (selectedIds: string[]) => void;
3477
+ /** Called when a memo number link is activated (opens the ARC PDF). */
3478
+ onOpenMemo?: (memo: DebitMemoRecord) => void;
3479
+ /** Called when a row's edit action is activated. */
3480
+ onEditMemo?: (memo: DebitMemoRecord) => void;
3481
+ /**
3482
+ * Memo reasons that should render with the warning emphasis instead of the
3483
+ * neutral one, e.g. reasons that typically need manual judgment calls.
3484
+ */
3485
+ emphasizedReasons?: string[];
3486
+ /** Renders the table's own loading row instead of data. */
3487
+ isLoading?: boolean;
3488
+ /** Renders an inline error alert instead of rows. */
3489
+ error?: string;
3490
+ /** Message shown when `memos` is empty and not loading/erroring. */
3491
+ emptyMessage?: string;
3492
+ }
3493
+ /**
3494
+ * The Employees / Debit Memo & Agent Error grid. Shows the standard memo
3495
+ * identity columns alongside three fields pulled directly from the ARC debit
3496
+ * memo PDF (Original Ticket #, Balance, Memo Reason) so a reviewer no longer
3497
+ * has to open each PDF to see them, plus row selection for bulk resolution.
3498
+ * Composed from the shared `Table` organism.
3499
+ */
3500
+ declare function DebitMemoTable({ memos, selectedIds, onSelectionChange, onOpenMemo, onEditMemo, emphasizedReasons, isLoading, error, emptyMessage, }: DebitMemoTableProps): React.JSX.Element;
3501
+
3502
+ /**
3503
+ * Realistic sample rows for the Debit Memo / Agent Error grid, matching the
3504
+ * shape and values from the stakeholder mockup so Storybook, tests, and the
3505
+ * eventual live data all agree on the same fields.
3506
+ *
3507
+ * Every row but the last carries a `memoPdfUrl`; the last one models a memo
3508
+ * with no PDF on file, whose number the grid renders as plain text rather
3509
+ * than a dead link — the legacy grid dropped its View control the same way.
3510
+ */
3511
+ declare const DEBIT_MEMO_MOCK_DATA: DebitMemoRecord[];
3512
+ /** Memo reasons that warrant the warning-emphasis pill by default. */
3513
+ declare const DEBIT_MEMO_EMPHASIZED_REASONS: string[];
3514
+
1588
3515
  type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
1589
3516
  type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1590
3517
  interface DrawerProps {
@@ -1595,7 +3522,12 @@ interface DrawerProps {
1595
3522
  /** Position of the drawer */
1596
3523
  position?: DrawerPosition;
1597
3524
  /** Size of the drawer */
1598
- size?: DrawerSize;
3525
+ /**
3526
+ * One of the named sizes, or an explicit CSS length (e.g. '300px', '50%')
3527
+ * for panels the ramp does not carry. The length applies to width for a
3528
+ * left/right drawer and to height for top/bottom.
3529
+ */
3530
+ size?: DrawerSize | (string & {});
1599
3531
  /** Drawer content */
1600
3532
  children: React__default.ReactNode;
1601
3533
  /** Whether clicking backdrop closes drawer */
@@ -1631,9 +3563,22 @@ interface DrawerFooterProps {
1631
3563
  /** Additional CSS class */
1632
3564
  className?: string;
1633
3565
  }
3566
+ /**
3567
+ * Top of a Drawer: title and the close affordance.
3568
+ */
1634
3569
  declare const DrawerHeader: React__default.FC<DrawerHeaderProps>;
3570
+ /**
3571
+ * Scrollable content region of a Drawer.
3572
+ */
1635
3573
  declare const DrawerBody: React__default.FC<DrawerBodyProps>;
3574
+ /**
3575
+ * Bottom of a Drawer, for actions that stay visible while the body scrolls.
3576
+ */
1636
3577
  declare const DrawerFooter: React__default.FC<DrawerFooterProps>;
3578
+ /**
3579
+ * Panel sliding in from an edge for secondary work that keeps the page behind it
3580
+ * in context. Traps focus while open and closes on Escape or backdrop click.
3581
+ */
1637
3582
  declare const Drawer: React__default.FC<DrawerProps> & {
1638
3583
  Header: typeof DrawerHeader;
1639
3584
  Body: typeof DrawerBody;
@@ -1641,45 +3586,231 @@ declare const Drawer: React__default.FC<DrawerProps> & {
1641
3586
  };
1642
3587
 
1643
3588
  interface TravelDueDateItem {
3589
+ /** Date the task is due. */
1644
3590
  duedate: string;
3591
+ /** When the task was completed. Empty while it is outstanding. */
1645
3592
  completeddatetime: string;
3593
+ /** Short task name. */
1646
3594
  tasktitle: string;
3595
+ /** Identifier for the task. */
1647
3596
  taskid: number;
3597
+ /** Workflow status text as the source system reports it. */
1648
3598
  status: string;
3599
+ /** Who completed the task. */
1649
3600
  completedby: string;
3601
+ /** Longer explanation of what the task requires. */
1650
3602
  description: string;
3603
+ /** Travel service the task belongs to (air, ground, hotel). */
1651
3604
  servicetype?: string;
3605
+ /** Sport the task belongs to. */
1652
3606
  sportCode: string;
3607
+ /** Trip the task belongs to. */
1653
3608
  tripId: string;
3609
+ /** Name of that trip, for display without a second lookup. */
1654
3610
  tripName: string;
3611
+ /** Master trip the task rolls up to, used to open the trip from a task. */
1655
3612
  masterTripGUID?: string;
3613
+ /** Set by the API when the due date has passed; used by `overdueOnly`. */
3614
+ pastdue?: boolean;
1656
3615
  }
1657
3616
  type GroupedTravelDueDates = Record<string, TravelDueDateItem[]>;
1658
3617
  interface DueDatesDrawerProps {
3618
+ /** Whether the drawer is open. */
1659
3619
  isOpen: boolean;
3620
+ /** Tasks to show, already grouped by date. */
1660
3621
  dueDates: GroupedTravelDueDates;
3622
+ /** Date to focus when opening from a calendar day. */
1661
3623
  selectedDate?: string | null;
3624
+ /** Trip to focus when opening from a trip. */
1662
3625
  selectedTrip?: string | null;
3626
+ /**
3627
+ * NG-702/NG-811: opened via the Overdue Actions card — only past-due,
3628
+ * incomplete items count toward that card's number, so the panel must match
3629
+ * rather than showing every due date.
3630
+ */
3631
+ overdueOnly?: boolean;
3632
+ /** Called when the user dismisses the drawer. */
1663
3633
  onClose: () => void;
3634
+ /** Called with the task the user marked complete or incomplete. */
1664
3635
  onToggle?: (item: TravelDueDateItem) => void;
3636
+ /** Called with the master trip of the task the user opened. */
1665
3637
  onTaskClick?: (masterTripGUID: string) => void;
3638
+ /** Additional CSS class. */
1666
3639
  className?: string;
1667
3640
  }
3641
+ /**
3642
+ * Whether a task counts as done.
3643
+ * Treats a completion timestamp as authoritative, since the source systems do not
3644
+ * always write the status text back.
3645
+ */
1668
3646
  declare const isTravelDueDateCompleted: (item: Pick<TravelDueDateItem, "status" | "completeddatetime">) => boolean;
3647
+ declare const isTravelDueDateOverdue: (item: Pick<TravelDueDateItem, "completeddatetime" | "pastdue">) => boolean;
1669
3648
  /** Hub's searchable, status-aware due-dates drawer. */
1670
- declare const DueDatesDrawer: ({ isOpen, dueDates, selectedDate, selectedTrip, onClose, onToggle, onTaskClick, className }: DueDatesDrawerProps) => React.JSX.Element;
3649
+ declare const DueDatesDrawer: ({ isOpen, dueDates, selectedDate, selectedTrip, overdueOnly, onClose, onToggle, onTaskClick, className }: DueDatesDrawerProps) => React.JSX.Element;
3650
+
3651
+ /** A row is any record; columns address it by key. */
3652
+ type GridRow = Record<string, unknown>;
3653
+ interface GridCellRenderProps<R> {
3654
+ /** The whole row, for renderers that need more than one field. */
3655
+ row: R;
3656
+ /** Position in the sorted data, for numbering or alternating output. */
3657
+ rowIndex: number;
3658
+ /** The column's key. */
3659
+ name?: string;
3660
+ }
3661
+ interface GridColumn<R = GridRow> {
3662
+ /** Key of the field this column shows. */
3663
+ name?: string;
3664
+ /** Column heading. */
3665
+ label?: ReactNode;
3666
+ /** Renders the heading from the column key, for headings that need state. */
3667
+ labelAs?: (props: {
3668
+ name?: string;
3669
+ }) => ReactNode;
3670
+ /** Icon shown before the heading. */
3671
+ icon?: ReactNode;
3672
+ /** Renders the cell instead of printing the field. */
3673
+ as?: (props: GridCellRenderProps<R>) => ReactNode;
3674
+ /** Formats the field for display. Return falsy to show an en dash. */
3675
+ format?: (value: never, row: R) => ReactNode;
3676
+ /** Whether the column can be sorted by clicking its heading. */
3677
+ sortable?: boolean;
3678
+ /** Orders two rows. Defaults to comparing the field directly. */
3679
+ sortComparator?: (a: R, b: R) => number;
3680
+ /** Class applied to the column's cells. */
3681
+ className?: string;
3682
+ /** Class applied to the column's heading. */
3683
+ labelClassName?: string;
3684
+ }
3685
+ interface GridTotalRow {
3686
+ /** Label shown in the first column of the total row. */
3687
+ label: string;
3688
+ /** Column whose values are summed. */
3689
+ columnName: string;
3690
+ }
3691
+ interface GridTableProps<R = GridRow> {
3692
+ /** Column definitions, left to right. */
3693
+ columns: GridColumn<R>[];
3694
+ /** Rows to show. */
3695
+ data: R[];
3696
+ /**
3697
+ * CSS grid template for the columns. Defaults to equal fractions, one per
3698
+ * column.
3699
+ */
3700
+ gridTemplateColumns?: string;
3701
+ /** Field whose value keys each row. Falls back to `id`, then the index. */
3702
+ rowKey?: string;
3703
+ /** Content above and below the heading row. */
3704
+ header?: {
3705
+ above?: ReactNode;
3706
+ below?: ReactNode;
3707
+ };
3708
+ /** Column sorted on first render. */
3709
+ initialSortColumn?: string;
3710
+ /** Whether that initial sort is ascending. */
3711
+ initialSortAscending?: boolean;
3712
+ /** Tie-breaker applied when the chosen column compares equal. */
3713
+ secondarySortComparator?: (a: R, b: R) => number;
3714
+ /** Draws a rule between rows. */
3715
+ bordered?: boolean;
3716
+ /**
3717
+ * Renders the rows without their heading row.
3718
+ *
3719
+ * For grids whose columns are already labelled somewhere else: an editable
3720
+ * row inside a form, or rows sitting under a heading strip supplied
3721
+ * separately by GridHeaderRow. Sorting goes with it — the headings are what
3722
+ * you click to sort, so there is nothing left to sort by.
3723
+ */
3724
+ hideHeader?: boolean;
3725
+ /** Shown in place of the rows when there are none. */
3726
+ emptyMessage?: ReactNode;
3727
+ /** Sums a column into a sticky footer row. */
3728
+ totalRow?: GridTotalRow;
3729
+ /** Additional CSS class */
3730
+ className?: string;
3731
+ }
3732
+ /**
3733
+ * A data table laid out with CSS grid rather than table markup, so a row can
3734
+ * be an arbitrary composition rather than a fixed set of cells.
3735
+ *
3736
+ * It reflows on narrow screens: the heading row is hidden and each row becomes
3737
+ * a card whose cells carry their own labels, which keeps wide datasets legible
3738
+ * on a phone.
3739
+ *
3740
+ * Sorting is held internally — click a sortable heading to sort by it, click
3741
+ * again to reverse — and an optional total row sums a column into a sticky
3742
+ * footer.
3743
+ */
3744
+ declare function GridTable<R = GridRow>({ columns, data, gridTemplateColumns, rowKey, header, initialSortColumn, initialSortAscending, secondarySortComparator, bordered, hideHeader, emptyMessage, totalRow, className, }: GridTableProps<R>): React__default.JSX.Element;
3745
+ declare namespace GridTable {
3746
+ var displayName: string;
3747
+ }
3748
+
3749
+ interface GridHeaderRowProps<R = GridRow> {
3750
+ /** Columns to head. Takes GridTable's column type, so the two stay in step. */
3751
+ columns: GridColumn<R>[];
3752
+ /**
3753
+ * The grid's track sizes, e.g. `"2fr 1fr 120px"`. Optional: a strip used as a
3754
+ * spanning band over other headings has one cell and no tracks to describe.
3755
+ */
3756
+ gridTemplateColumns?: string;
3757
+ /** Content above the headings — a spanning band, a group label. */
3758
+ above?: ReactNode;
3759
+ /** Content below the headings. */
3760
+ below?: ReactNode;
3761
+ /** Additional CSS class */
3762
+ className?: string;
3763
+ /** Inline style overrides. */
3764
+ style?: CSSProperties;
3765
+ }
3766
+ /**
3767
+ * A grid heading strip on its own, without a table underneath it.
3768
+ *
3769
+ * GridTable renders its own headings and is the right answer whenever the
3770
+ * headings belong to the rows below them. This is for the cases where they do
3771
+ * not: two header strips side by side above one table, or a band that spans
3772
+ * several columns stacked over the real headings. Both need a heading row that
3773
+ * is not tied to a row set, which GridTable cannot express.
3774
+ *
3775
+ * Headings are plain text here, never sort controls — there are no rows to
3776
+ * sort. `sortable` on a column is ignored rather than rendering a button that
3777
+ * does nothing.
3778
+ *
3779
+ * Hidden below 768px, matching GridTable: at that width each row becomes a card
3780
+ * carrying its own labels, so a detached heading strip would caption nothing.
3781
+ */
3782
+ declare function GridHeaderRow<R = GridRow>({ columns, gridTemplateColumns, above, below, className, style, }: GridHeaderRowProps<R>): React.JSX.Element;
3783
+ declare namespace GridHeaderRow {
3784
+ var displayName: string;
3785
+ }
1671
3786
 
1672
3787
  interface HubNavigationItem {
3788
+ /** Stable id, matched against `activeNavKey` to mark the current destination. */
1673
3789
  key: string;
3790
+ /** Visible text for the entry. */
1674
3791
  label: string;
3792
+ /** Route the entry points at. The shell reports it back rather than navigating itself. */
1675
3793
  path: string;
3794
+ /** Icon shown beside the label, and alone when the rail is collapsed. */
1676
3795
  icon: ReactNode;
1677
3796
  }
3797
+ /**
3798
+ * Individual Travel entry, kept separate because not every account has it.
3799
+ */
1678
3800
  declare const HUB_INDIVIDUAL_TRAVEL_ITEM: HubNavigationItem;
1679
3801
  /** Canonical navigation identity for the carrier-facing STM Charters portal. */
1680
3802
  declare const HUB_STM_CHARTERS_ITEM: HubNavigationItem;
3803
+ /**
3804
+ * The default primary navigation, in display order.
3805
+ */
1681
3806
  declare const HUB_NAV_ITEMS: HubNavigationItem[];
3807
+ /**
3808
+ * Administration entry, shown in the footer to admins.
3809
+ */
1682
3810
  declare const HUB_ADMIN_ITEM: HubNavigationItem;
3811
+ /**
3812
+ * Agent workspace entry, shown in the footer to admins.
3813
+ */
1683
3814
  declare const HUB_AGENTS_ITEM: HubNavigationItem;
1684
3815
  /**
1685
3816
  * Sourcing sits with the admin-gated footer items rather than in `HUB_NAV_ITEMS`: the
@@ -1689,47 +3820,74 @@ declare const HUB_SOURCING_ITEM: HubNavigationItem;
1689
3820
  /** Off-fleet quote review is an admin surface too, so it is gated the same way. */
1690
3821
  declare const HUB_OFF_FLEET_ITEM: HubNavigationItem;
1691
3822
  interface HubAppShellActions {
3823
+ /** Whether the mobile navigation drawer is currently open. */
1692
3824
  isMobileNavOpen: boolean;
3825
+ /** Opens or closes the mobile navigation drawer. */
1693
3826
  toggleMobileNav: () => void;
1694
3827
  }
1695
3828
  interface HubAppShellProps {
3829
+ /** Page content rendered inside the shell. */
1696
3830
  children: ReactNode;
3831
+ /** Primary navigation entries. Defaults to the standard Hub set. */
1697
3832
  navItems?: HubNavigationItem[];
1698
3833
  /** Set to `null` when Individual Travel is not available to the current user or account. */
1699
3834
  individualTravelItem?: HubNavigationItem | null;
3835
+ /** Agent workspace entry, rendered in the footer and gated on `isAdmin`. */
1700
3836
  agentsItem?: HubNavigationItem;
1701
3837
  /** ACMI sourcing entry, rendered in the footer and shown only when `isAdmin` is true. */
1702
3838
  sourcingItem?: HubNavigationItem;
1703
3839
  /** Off-fleet quote review entry, rendered in the footer and gated on `isAdmin`. */
1704
3840
  offFleetItem?: HubNavigationItem;
3841
+ /** Administration entry, rendered in the footer and gated on `isAdmin`. */
1705
3842
  adminItem?: HubNavigationItem;
1706
3843
  /**
1707
3844
  * Authoritative footer navigation. When provided (including an empty array),
1708
3845
  * it replaces the default admin-gated Sourcing, Off-Fleet, Agents, and Administration items.
1709
3846
  */
1710
3847
  footerNavItems?: HubNavigationItem[];
3848
+ /** Key of the entry to mark as current. */
1711
3849
  activeNavKey?: string;
3850
+ /** Called with the entry the user picked. The host performs the routing. */
1712
3851
  onNavigate?: (item: HubNavigationItem) => void;
3852
+ /** Called when the user activates the logo. */
1713
3853
  onLogoClick?: () => void;
3854
+ /** Called when the user chooses to hand off to the legacy portal. */
1714
3855
  onLegacyPortal?: () => void;
3856
+ /** Account switcher rendered in the top bar. */
1715
3857
  accountSelector?: ReactNode;
3858
+ /** Renders top bar actions, given the shell state so they can drive the mobile nav. */
1716
3859
  renderTopbarActions?: (actions: HubAppShellActions) => ReactNode;
3860
+ /** Renders extra content inside the mobile drawer, given a callback that closes it. */
1717
3861
  renderMobileExtras?: (close: () => void) => ReactNode;
3862
+ /** Content pinned to the bottom of the mobile drawer. */
1718
3863
  mobileFooter?: ReactNode;
3864
+ /** Profile menu rendered in the top bar. */
1719
3865
  profileMenu?: ReactNode;
3866
+ /** Initials shown in the top bar when no profile menu is supplied. */
1720
3867
  userInitials?: string;
3868
+ /** Whether the current user sees the admin-gated footer entries. */
1721
3869
  isAdmin?: boolean;
3870
+ /** Renders navigation as non-interactive, for loading and restricted states. */
1722
3871
  navigationDisabled?: boolean;
3872
+ /** Shows the shell in its loading state. */
1723
3873
  loading?: boolean;
3874
+ /** Renders the content area as non-interactive while an operation blocks it. */
1724
3875
  contentDisabled?: boolean;
3876
+ /** Whether to render children at all. Set false to hold the frame while content resolves. */
1725
3877
  showContent?: boolean;
3878
+ /** Overrides the default brand mark, shown while the side rail is expanded. */
1726
3879
  logo?: ReactNode;
3880
+ /** Overrides the brand mark shown while the side rail is collapsed, where only an icon fits. */
3881
+ collapsedLogo?: ReactNode;
3882
+ /** Whether the side rail starts expanded. */
1727
3883
  defaultExpanded?: boolean;
3884
+ /** Beta tag shown beside the brand mark. */
1728
3885
  betaLabel?: string;
3886
+ /** Additional CSS class. */
1729
3887
  className?: string;
1730
3888
  }
1731
3889
  /** The shared application navigation and content shell used by Hub and its Storybook pages. */
1732
- declare const HubAppShell: ({ children, navItems, individualTravelItem, agentsItem, sourcingItem, offFleetItem, adminItem, footerNavItems, activeNavKey, onNavigate, onLogoClick, onLegacyPortal, accountSelector, renderTopbarActions, renderMobileExtras, mobileFooter, profileMenu, userInitials, isAdmin, navigationDisabled, loading, contentDisabled, showContent, logo, defaultExpanded, betaLabel, className, }: HubAppShellProps) => React.JSX.Element;
3890
+ declare const HubAppShell: ({ children, navItems, individualTravelItem, agentsItem, sourcingItem, offFleetItem, adminItem, footerNavItems, activeNavKey, onNavigate, onLogoClick, onLegacyPortal, accountSelector, renderTopbarActions, renderMobileExtras, mobileFooter, profileMenu, userInitials, isAdmin, navigationDisabled, loading, contentDisabled, showContent, logo, collapsedLogo, defaultExpanded, betaLabel, className, }: HubAppShellProps) => React.JSX.Element;
1733
3891
 
1734
3892
  /**
1735
3893
  * Parses an `YYYY-MM-DD` itinerary date into a *local* calendar date.
@@ -1995,11 +4153,17 @@ declare const MembershipPrograms: {
1995
4153
  };
1996
4154
 
1997
4155
  interface ManifestCapacityStatsProps {
4156
+ /** Passengers currently manifested. */
1998
4157
  paxCount: number;
4158
+ /** Seats available on the aircraft. */
1999
4159
  seats: number;
4160
+ /** Total passenger weight, in pounds. */
2000
4161
  paxWeight: number;
4162
+ /** Total cargo and equipment weight, in pounds. */
2001
4163
  cargoWeight: number;
4164
+ /** Maximum payload the aircraft can carry, in pounds. */
2002
4165
  payloadLimit: number;
4166
+ /** Additional CSS class. */
2003
4167
  className?: string;
2004
4168
  }
2005
4169
  /** Advisory seat and payload meters from Hub's charter manifest. */
@@ -2028,11 +4192,21 @@ interface ModalProps {
2028
4192
  /** Additional CSS class */
2029
4193
  className?: string;
2030
4194
  }
4195
+ /**
4196
+ * Dialog that interrupts the page until the user resolves it.
4197
+ * Traps focus, closes on Escape, and restores focus to the trigger on close.
4198
+ * Use an Alert instead when the user does not have to act.
4199
+ */
2031
4200
  declare const Modal: React__default.FC<ModalProps>;
2032
4201
  interface ModalFooterProps {
4202
+ /** Footer content, usually the confirm and cancel actions. */
2033
4203
  children: React__default.ReactNode;
4204
+ /** Additional CSS class. */
2034
4205
  className?: string;
2035
4206
  }
4207
+ /**
4208
+ * Action row for the bottom of a Modal, keeping button order consistent across dialogs.
4209
+ */
2036
4210
  declare const ModalFooter: React__default.FC<ModalFooterProps>;
2037
4211
  interface ConfirmModalProps extends Omit<ModalProps, 'footer' | 'children'> {
2038
4212
  /** Message to display */
@@ -2048,6 +4222,10 @@ interface ConfirmModalProps extends Omit<ModalProps, 'footer' | 'children'> {
2048
4222
  /** Whether confirm action is in progress */
2049
4223
  loading?: boolean;
2050
4224
  }
4225
+ /**
4226
+ * Modal preset for confirming a single action, with the confirm and cancel
4227
+ * buttons already wired.
4228
+ */
2051
4229
  declare const ConfirmModal: React__default.FC<ConfirmModalProps>;
2052
4230
 
2053
4231
  type ModuleSize = 'sm' | 'md' | 'lg';
@@ -2108,21 +4286,34 @@ declare const ModuleVerticalDivider: React__default.FC<{
2108
4286
  }>;
2109
4287
 
2110
4288
  interface SystemBanner {
4289
+ /** Identifier for the banner, used to key and dismiss it. */
2111
4290
  id: string;
4291
+ /** Banner body as trusted HTML from the announcements system. */
2112
4292
  html: string;
4293
+ /** Expanded detail revealed when the reader opens the banner. */
2113
4294
  detailHtml?: string;
2114
4295
  }
2115
4296
  interface TravelAlertBanner {
4297
+ /** Identifier for the alert. */
2116
4298
  id: string;
4299
+ /** Headline summarizing the disruption. */
2117
4300
  title: string;
4301
+ /** Supporting detail. */
2118
4302
  body?: string;
4303
+ /** Link to the full advisory. */
2119
4304
  href?: string;
2120
4305
  }
2121
4306
  interface PageBannersProps {
4307
+ /** Platform-wide notices such as maintenance windows. */
2122
4308
  systemBanners: SystemBanner[];
4309
+ /** Travel alerts affecting trips, such as weather or carrier disruption. */
2123
4310
  alertBanners: TravelAlertBanner[];
4311
+ /** Additional CSS class. */
2124
4312
  className?: string;
2125
4313
  }
4314
+ /**
4315
+ * Stacked notices for the top of a page: platform notices first, then travel alerts.
4316
+ */
2126
4317
  declare const PageBanners: ({ systemBanners, alertBanners, className, }: PageBannersProps) => React.JSX.Element | null;
2127
4318
 
2128
4319
  interface PreferenceField {
@@ -2327,6 +4518,8 @@ interface RequestSummaryProps {
2327
4518
  className?: string;
2328
4519
  /** Title for the summary panel */
2329
4520
  title?: string;
4521
+ /** Stable selector for integration and browser tests */
4522
+ dataTest?: string;
2330
4523
  }
2331
4524
  /**
2332
4525
  * SummarySection component for a group of related summary items.
@@ -2357,9 +4550,9 @@ interface RequestFormHeaderProps {
2357
4550
  }
2358
4551
  interface RequestFormFooterProps {
2359
4552
  /** Callback for cancel/previous button */
2360
- onPrevious: () => void;
4553
+ onPrevious?: () => void;
2361
4554
  /** Callback for next/submit button */
2362
- onNext: () => void;
4555
+ onNext?: () => void;
2363
4556
  /** Whether on first page */
2364
4557
  isFirstPage?: boolean;
2365
4558
  /** Whether on last page */
@@ -2370,6 +4563,10 @@ interface RequestFormFooterProps {
2370
4563
  previousText?: string;
2371
4564
  /** Custom next button text */
2372
4565
  nextText?: string;
4566
+ /** Test hook for the previous button */
4567
+ previousButtonDataTest?: string;
4568
+ /** Test hook for the next button */
4569
+ nextButtonDataTest?: string;
2373
4570
  /** Additional CSS class */
2374
4571
  className?: string;
2375
4572
  }
@@ -2666,6 +4863,9 @@ interface TableProps<T = any> {
2666
4863
  /** Additional CSS class */
2667
4864
  className?: string;
2668
4865
  }
4866
+ /**
4867
+ * Data table with sorting, selection, and empty and loading states.
4868
+ */
2669
4869
  declare const Table: <T extends Record<string, any> = any>({ columns, data, rowKey, bordered, striped, hoverable, compact, loading, emptyMessage, emptyContent, selectable, selectedRowKeys, defaultSelectedRowKeys, onSelectionChange, isRowSelectable, rowSelectionLabel, selectAllLabel, onRowClick, className, }: TableProps<T>) => React__default.JSX.Element;
2670
4870
 
2671
4871
  interface TeamOption {
@@ -2700,61 +4900,106 @@ declare const TeamCard: {
2700
4900
 
2701
4901
  type TeamContactId = string | number;
2702
4902
  interface TeamContactOption {
4903
+ /** Identifier reported back through the selected contact ids. */
2703
4904
  id: TeamContactId;
4905
+ /** Contact name shown in the picker. */
2704
4906
  name: string;
4907
+ /** Role at the school, shown beside the name. */
2705
4908
  title?: string;
4909
+ /** Contact email address. */
2706
4910
  email?: string;
4911
+ /** Contact phone number. */
2707
4912
  phone?: string;
4913
+ /** Whether the contact is still active. Inactive contacts stay selectable so existing assignments survive. */
2708
4914
  active?: boolean;
2709
4915
  }
2710
4916
  interface TeamContactsValue {
4917
+ /** Contact who owns the trip. */
2711
4918
  primaryContactId?: TeamContactId;
4919
+ /** Backup contact. */
2712
4920
  secondaryContactId?: TeamContactId;
4921
+ /** Contacts copied on correspondence. Holes are kept so empty rows stay in place while editing. */
2713
4922
  ccContactIds?: Array<TeamContactId | undefined>;
2714
4923
  }
2715
4924
  interface TeamContactsLoadingState {
4925
+ /** Whether the primary contact is being saved. */
2716
4926
  primary?: boolean;
4927
+ /** Whether the secondary contact is being saved. */
2717
4928
  secondary?: boolean;
4929
+ /** Per-row save state for the copied contacts, positionally matched to `ccContactIds`. */
2718
4930
  cc?: boolean[];
2719
4931
  }
2720
4932
  interface TeamContactsPanelProps {
4933
+ /** Contacts available to assign. */
2721
4934
  contacts: TeamContactOption[];
4935
+ /** Currently assigned contacts. */
2722
4936
  value: TeamContactsValue;
4937
+ /** Called with the full assignment after any change. */
2723
4938
  onChange?: (value: TeamContactsValue) => void;
4939
+ /** Disables every picker. */
2724
4940
  disabled?: boolean;
4941
+ /** Per-slot save state, for showing progress on the row being written. */
2725
4942
  loading?: TeamContactsLoadingState;
4943
+ /** Stable hook for acceptance and visual tests. */
2726
4944
  dataTestId?: string;
4945
+ /** Additional CSS class. */
2727
4946
  className?: string;
2728
4947
  }
4948
+ /**
4949
+ * Assigns a team's primary, secondary, and copied travel contacts.
4950
+ * Each slot saves independently, so `loading` is per slot rather than per panel.
4951
+ */
2729
4952
  declare const TeamContactsPanel: {
2730
4953
  ({ contacts, value, onChange, disabled, loading, dataTestId, className, }: TeamContactsPanelProps): React.JSX.Element;
2731
4954
  displayName: string;
2732
4955
  };
2733
4956
 
2734
4957
  interface SeasonOption {
4958
+ /** Value reported through `onSeasonChange` when this season is picked. */
2735
4959
  value: string;
4960
+ /** Visible season text. */
2736
4961
  label: string;
2737
4962
  }
2738
4963
  interface TeamScheduleActionsProps {
4964
+ /** Whether the schedule is currently in its compact layout. */
2739
4965
  isCompactView: boolean;
4966
+ /** Number of trips in the current season, shown in the summary. */
2740
4967
  tripCount: number;
4968
+ /** Label for the season currently shown. */
2741
4969
  seasonLabel: string;
4970
+ /** Value of the selected season, when a season picker is offered. */
2742
4971
  seasonValue?: string;
4972
+ /** Seasons available to pick from. Omit to show only the stepper arrows. */
2743
4973
  seasonOptions?: SeasonOption[];
4974
+ /** Disables stepping back, at the earliest season on record. */
2744
4975
  previousSeasonDisabled?: boolean;
4976
+ /** Disables export, when there is nothing to export. */
2745
4977
  exportDisabled?: boolean;
4978
+ /** Shows export as in progress. */
2746
4979
  exporting?: boolean;
4980
+ /** Disables raising a group travel request. */
2747
4981
  groupTravelDisabled?: boolean;
4982
+ /** Disables merging events. */
2748
4983
  mergeDisabled?: boolean;
4984
+ /** Shows the merge as in progress. */
2749
4985
  merging?: boolean;
4986
+ /** Called when the user switches between compact and full schedule layouts. */
2750
4987
  onViewSchedule?: () => void;
4988
+ /** Called when the user leaves the schedule. */
2751
4989
  onBack?: () => void;
4990
+ /** Called when the user steps to the previous season. */
2752
4991
  onPreviousSeason?: () => void;
4992
+ /** Called when the user steps to the next season. */
2753
4993
  onNextSeason?: () => void;
4994
+ /** Called with the season the user picked. */
2754
4995
  onSeasonChange?: (value: string) => void;
4996
+ /** Called when the user exports the schedule. */
2755
4997
  onExport?: () => void;
4998
+ /** Called when the user raises a group travel request. */
2756
4999
  onGroupTravelRequest?: () => void;
5000
+ /** Called when the user merges duplicate events. */
2757
5001
  onMergeEvents?: () => void;
5002
+ /** Additional CSS class. */
2758
5003
  className?: string;
2759
5004
  }
2760
5005
  /** Exact presentational counterpart of Hub's Team Schedule action controls. */
@@ -2762,18 +5007,29 @@ declare const TeamScheduleActions: ({ isCompactView, tripCount, seasonLabel, sea
2762
5007
 
2763
5008
  /** @deprecated Legacy injected row. Prefer the structured `data` prop. */
2764
5009
  interface TeamScheduleCompactRow {
5010
+ /** Identifier for the row. */
2765
5011
  id: string | number;
5012
+ /** Rendered trip cell. */
2766
5013
  trip: ReactNode;
5014
+ /** Rendered events cell. */
2767
5015
  events: ReactNode;
2768
5016
  }
2769
5017
  interface TeamScheduleCompactEvent {
5018
+ /** Identifier for the event. */
2770
5019
  id: string | number;
5020
+ /** Opposing school. */
2771
5021
  opponent: string;
5022
+ /** Event name. */
2772
5023
  title: string;
5024
+ /** Date the event is played. */
2773
5025
  date: string;
5026
+ /** Start time, when one is set. */
2774
5027
  time?: string;
5028
+ /** Marker shown while the date or time is still to be confirmed. */
2775
5029
  tbc?: string;
5030
+ /** Where the event is played. */
2776
5031
  location: string;
5032
+ /** Whether the event is home or away. */
2777
5033
  homeAway: string;
2778
5034
  /** Leading 48px cell (e.g. checkbox or drag handle). */
2779
5035
  leading?: ReactNode;
@@ -2781,14 +5037,21 @@ interface TeamScheduleCompactEvent {
2781
5037
  action?: ReactNode;
2782
5038
  }
2783
5039
  interface TeamScheduleCompactTrip {
5040
+ /** Identifier for the trip. */
2784
5041
  id: string | number;
5042
+ /** Rendered group travel request indicator. */
2785
5043
  gtr?: ReactNode;
5044
+ /** First day of travel. */
2786
5045
  travelStart: string;
5046
+ /** Last day of travel. */
2787
5047
  travelEnd: string;
5048
+ /** Trip name. */
2788
5049
  tripName: string;
5050
+ /** Rendered summary of the travel services on the trip. */
2789
5051
  services?: ReactNode;
2790
5052
  /** Trailing 116px cell (e.g. Edit action). */
2791
5053
  action?: ReactNode;
5054
+ /** Competitions the trip covers. */
2792
5055
  events: TeamScheduleCompactEvent[];
2793
5056
  }
2794
5057
  interface TeamScheduleCompactTableProps {
@@ -2801,19 +5064,25 @@ interface TeamScheduleCompactTableProps {
2801
5064
  rows?: TeamScheduleCompactRow[];
2802
5065
  /** Header labels for legacy `rows` mode only. */
2803
5066
  tripHeaders?: ReactNode[];
5067
+ /** Header labels for the event columns in legacy `rows` mode only. */
2804
5068
  eventHeaders?: ReactNode[];
5069
+ /** Called when the user adds an event. */
2805
5070
  onAddEvent?: () => void;
5071
+ /** Disables adding an event. */
2806
5072
  addEventDisabled?: boolean;
5073
+ /** Additional CSS class. */
2807
5074
  className?: string;
2808
5075
  /** Click trip column headers to sort. */
2809
5076
  enableSorting?: boolean;
2810
5077
  /** Search box matching trip and event text. */
2811
5078
  enableGlobalFilter?: boolean;
5079
+ /** Placeholder for the search box. */
2812
5080
  globalFilterPlaceholder?: string;
2813
5081
  /** Per-column text filters under the trip headers. */
2814
5082
  enableColumnFilters?: boolean;
2815
5083
  /** Page the trips with prev/next controls. */
2816
5084
  enablePagination?: boolean;
5085
+ /** Trips per page when pagination is on. */
2817
5086
  pageSize?: number;
2818
5087
  /** Checkbox per trip plus a select-all header checkbox. */
2819
5088
  enableRowSelection?: boolean;
@@ -2828,26 +5097,43 @@ interface TeamScheduleCompactTableProps {
2828
5097
  declare const TeamScheduleCompactTable: ({ data, rows, tripHeaders, eventHeaders, onAddEvent, addEventDisabled, className, enableSorting, enableGlobalFilter, globalFilterPlaceholder, enableColumnFilters, enablePagination, pageSize, enableRowSelection, onRowSelectionChange, enableColumnVisibility, enableExpanding, }: TeamScheduleCompactTableProps) => React.JSX.Element;
2829
5098
 
2830
5099
  interface TeamScheduleDueDate {
5100
+ /** Identifier for the task. */
2831
5101
  id?: string | number;
5102
+ /** Short task name. */
2832
5103
  title: string;
5104
+ /** Date the task is due. */
2833
5105
  date: string;
2834
5106
  }
2835
5107
  interface TeamScheduleExpandedRow {
5108
+ /** Stable identifier for the trip. */
2836
5109
  masterTripGUID: string;
5110
+ /** Sport the trip belongs to. */
2837
5111
  sportCode?: string;
5112
+ /** First day of travel. */
2838
5113
  travelStartDate?: string;
5114
+ /** Last day of travel. */
2839
5115
  travelEndDate?: string;
5116
+ /** Trip name. */
2840
5117
  tripName: string;
5118
+ /** Outstanding tasks for the trip. */
2841
5119
  dueDates?: TeamScheduleDueDate[];
5120
+ /** Rendered air itinerary for the trip. */
2842
5121
  airSegment?: ReactNode;
5122
+ /** Rendered ground itinerary for the trip. */
2843
5123
  groundSegment?: ReactNode;
5124
+ /** Rendered lodging for the trip. */
2844
5125
  hotelSegment?: ReactNode;
2845
5126
  }
2846
5127
  interface TeamScheduleExpandedTableProps {
5128
+ /** Trips to show, in display order. */
2847
5129
  rows: TeamScheduleExpandedRow[];
5130
+ /** Team the schedule belongs to, shown in the header. */
2848
5131
  teamCode?: string;
5132
+ /** Called with the trip the user opened. */
2849
5133
  onTripClick?: (row: TeamScheduleExpandedRow) => void;
5134
+ /** Text shown when there are no trips. */
2850
5135
  emptyMessage?: string;
5136
+ /** Additional CSS class. */
2851
5137
  className?: string;
2852
5138
  }
2853
5139
  declare const formatTeamScheduleTravelDates: (startValue?: string, endValue?: string) => string;
@@ -2857,20 +5143,33 @@ declare const TeamScheduleExpandedTable: ({ rows, teamCode, onTripClick, emptyMe
2857
5143
 
2858
5144
  type TeamScheduleHomeAway = 'Home' | 'Away' | 'Neutral';
2859
5145
  interface TeamScheduleEditorEvent {
5146
+ /** Identifier for the event. */
2860
5147
  id: string | number;
5148
+ /** Date the event is played. */
2861
5149
  eventDate: string;
5150
+ /** Opposing school. */
2862
5151
  opponent: string;
5152
+ /** Event name. */
2863
5153
  eventTitle: string;
5154
+ /** Whether the event is home or away. */
2864
5155
  homeOrAway: TeamScheduleHomeAway;
5156
+ /** Whether the event is a candidate for merging into another. */
2865
5157
  mergeable?: boolean;
2866
5158
  }
2867
5159
  interface TeamScheduleEditorTrip {
5160
+ /** Identifier for the trip. */
2868
5161
  id: string | number;
5162
+ /** Whether a group travel request has already been raised for the trip. */
2869
5163
  gtrExists?: boolean;
5164
+ /** First day of travel. */
2870
5165
  travelStartDate: string;
5166
+ /** Last day of travel. */
2871
5167
  travelEndDate: string;
5168
+ /** Trip name. */
2872
5169
  tripName: string;
5170
+ /** Travel services on the trip, as codes or a preformatted summary. */
2873
5171
  services: string[] | string;
5172
+ /** Competitions the trip covers. */
2874
5173
  events: TeamScheduleEditorEvent[];
2875
5174
  }
2876
5175
  interface TeamScheduleEditorProps {
@@ -2882,113 +5181,219 @@ interface TeamScheduleEditorProps {
2882
5181
  opponentOptions?: string[];
2883
5182
  /** Called after any saved edit or deletion. */
2884
5183
  onChange?: (rows: TeamScheduleEditorTrip[]) => void;
5184
+ /** Called with the trip the user saved. */
2885
5185
  onSaveTrip?: (trip: TeamScheduleEditorTrip) => void;
5186
+ /** Called with the trip the user deleted. */
2886
5187
  onDeleteTrip?: (trip: TeamScheduleEditorTrip) => void;
5188
+ /** Called with the event the user saved, and its trip when it has one. */
2887
5189
  onSaveEvent?: (event: TeamScheduleEditorEvent, trip?: TeamScheduleEditorTrip) => void;
5190
+ /** Called with the event the user deleted and the trip it came from. */
2888
5191
  onDeleteEvent?: (event: TeamScheduleEditorEvent, trip: TeamScheduleEditorTrip) => void;
5192
+ /** Called with the trip the user raised a group travel request for. */
2889
5193
  onOpenGroupTravelRequest?: (trip: TeamScheduleEditorTrip) => void;
5194
+ /** Called with the ids of the currently selected trips. */
2890
5195
  onSelectedTripsChange?: (ids: Array<string | number>) => void;
5196
+ /** Called with the ids of the currently selected events. */
2891
5197
  onSelectedEventsChange?: (ids: Array<string | number>) => void;
5198
+ /** Additional CSS class. */
2892
5199
  className?: string;
2893
5200
  }
5201
+ /**
5202
+ * Inline editor for a team's season: trips, and the events inside each trip.
5203
+ * Works controlled via `rows` or uncontrolled via `initialRows`.
5204
+ */
2894
5205
  declare const TeamScheduleEditor: ({ rows, initialRows, opponentOptions, onChange, onSaveTrip, onDeleteTrip, onSaveEvent, onDeleteEvent, onOpenGroupTravelRequest, onSelectedTripsChange, onSelectedEventsChange, className, }: TeamScheduleEditorProps) => React.JSX.Element;
2895
5206
 
2896
5207
  type TeamTravelCalendarDuration = 'month' | 'week';
2897
5208
  type TeamTravelCalendarItemType = 'trips' | 'due_dates';
2898
5209
  interface TeamTravelCalendarDueDate {
5210
+ /** Identifier for the task, unique within the trip. */
2899
5211
  taskid: number | string;
5212
+ /** Date the task is due. */
2900
5213
  duedate: string;
5214
+ /** Short task name shown on the calendar. */
2901
5215
  tasktitle: string;
5216
+ /** Longer explanation of what the task requires. */
2902
5217
  description?: string;
5218
+ /** Workflow status of the task. */
2903
5219
  status?: string;
5220
+ /** When the task was completed, absent while it is outstanding. */
2904
5221
  completeddatetime?: string;
5222
+ /** Who completed the task. */
2905
5223
  completedby?: string;
5224
+ /** Travel service the task belongs to (air, ground, hotel). */
2906
5225
  servicetype?: string;
5226
+ /** Sport the task belongs to. */
2907
5227
  sportCode?: string;
5228
+ /** Trip the task belongs to. */
2908
5229
  tripId?: string;
5230
+ /** Name of that trip, for display without a second lookup. */
2909
5231
  tripName?: string;
5232
+ /** Start date of that trip. */
2910
5233
  tripStart?: string;
5234
+ /** Master trip this task rolls up to. */
2911
5235
  masterTripGUID?: string;
2912
5236
  }
2913
5237
  interface TeamTravelCalendarEvent {
5238
+ /** Identifier for the event. */
2914
5239
  id?: string | number;
5240
+ /** Event name. */
2915
5241
  eventtitle?: string;
5242
+ /** Opposing team. */
2916
5243
  opponentname?: string;
5244
+ /** Where the event is played. */
2917
5245
  venuename?: string;
5246
+ /** Date the event starts. */
2918
5247
  eventstartdate?: string;
5248
+ /** Whether the event is home or away. */
2919
5249
  homeoraway?: string;
2920
5250
  }
2921
5251
  interface TeamTravelCalendarTrip {
5252
+ /** Stable identifier for the trip across systems. */
2922
5253
  masterTripGUID: string;
5254
+ /** Numeric trip identifier, where the legacy portal uses one. */
2923
5255
  masterTripID?: number | string;
5256
+ /** Sport the trip belongs to. */
2924
5257
  sportCode: string;
5258
+ /** First day of travel. */
2925
5259
  tripStart: string;
5260
+ /** Last day of travel. */
2926
5261
  tripEnd: string;
5262
+ /** Trip name shown on the calendar. */
2927
5263
  tripName: string;
5264
+ /** Booking status of the air portion. */
2928
5265
  air_status?: string;
5266
+ /** Booking status of the charter portion. */
2929
5267
  charter_status?: string;
5268
+ /** Booking status of the ground portion. */
2930
5269
  ground_status?: string;
5270
+ /** Booking status of the hotel portion. */
2931
5271
  hotel_status?: string;
5272
+ /** Tasks due for this trip. */
2932
5273
  duedates?: TeamTravelCalendarDueDate[];
5274
+ /** Competitions this trip covers. */
2933
5275
  events?: TeamTravelCalendarEvent[];
2934
5276
  }
2935
5277
  interface TeamTravelCalendarSportGroup {
5278
+ /** Sport the group covers. */
2936
5279
  sportCode: string;
5280
+ /** Human-readable sport name. */
2937
5281
  sportDescription: string;
5282
+ /** Number of upcoming trips, shown on the group header. */
2938
5283
  upcomingCount?: number;
5284
+ /** Start date of the next trip, shown on the group header. */
2939
5285
  nextTripStartDate?: string;
5286
+ /** Trips in the group. */
2940
5287
  trips: TeamTravelCalendarTrip[];
2941
5288
  }
2942
5289
  interface TeamTravelCalendarToolbarProps {
5290
+ /** Period the calendar currently spans. */
2943
5291
  duration: TeamTravelCalendarDuration;
5292
+ /** Period label shown between the navigation controls. */
2944
5293
  label?: string;
2945
5294
  /** Optional app-owned date picker/navigation control. */
2946
5295
  navigation?: ReactNode;
5296
+ /** Called with the newly selected period length. */
2947
5297
  onDurationChange?: (duration: TeamTravelCalendarDuration) => void;
5298
+ /** Called when the user jumps back to today. */
2948
5299
  onToday?: () => void;
5300
+ /** Called when the user steps back one period. */
2949
5301
  onPrevious?: () => void;
5302
+ /** Called when the user steps forward one period. */
2950
5303
  onNext?: () => void;
5304
+ /** Additional CSS class. */
2951
5305
  className?: string;
2952
5306
  }
5307
+ /**
5308
+ * Period controls shared by the calendar views: previous, next, today, and month/week.
5309
+ * Stateless -- the host owns the active date and passes the label back in.
5310
+ */
2953
5311
  declare const TeamTravelCalendarToolbar: ({ duration, label, navigation, onDurationChange, onToday, onPrevious, onNext, className, }: TeamTravelCalendarToolbarProps) => React.JSX.Element;
2954
5312
  interface TeamTravelCalendarViewProps {
5313
+ /** Any date inside the period to render. */
2955
5314
  activeDate: string;
5315
+ /** Whether to render a month or a week. */
2956
5316
  duration?: TeamTravelCalendarDuration;
5317
+ /** Whether cells plot trips or due dates. */
2957
5318
  type?: TeamTravelCalendarItemType;
5319
+ /** Trips to plot. Used when `type` is `trips`. */
2958
5320
  trips?: TeamTravelCalendarTrip[];
5321
+ /** Tasks to plot. Used when `type` is `due_dates`. */
2959
5322
  dueDates?: TeamTravelCalendarDueDate[];
5323
+ /** Date to mark as today. Defaults to the current date; set it to keep snapshots stable. */
2960
5324
  today?: string;
5325
+ /** Toolbar rendered above the grid, usually a TeamTravelCalendarToolbar. */
2961
5326
  toolbar?: ReactNode;
5327
+ /** Called with the trip the user opened. */
2962
5328
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5329
+ /** Called with the day the user opened, and the task when one was clicked directly. */
2963
5330
  onDueDateClick?: (date: string, dueDate?: TeamTravelCalendarDueDate) => void;
5331
+ /** Called with the task the user marked complete or incomplete. */
2964
5332
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5333
+ /** Additional CSS class. */
2965
5334
  className?: string;
2966
5335
  }
5336
+ /**
5337
+ * Month or week grid plotting a team's trips or task due dates onto calendar days.
5338
+ */
2967
5339
  declare const TeamTravelCalendarView: ({ activeDate, duration, type, trips, dueDates, today, toolbar, onTripClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarViewProps) => React.JSX.Element;
2968
5340
  interface TeamTravelCalendarCardViewProps {
5341
+ /** Trips grouped by sport, in display order. */
2969
5342
  groups: TeamTravelCalendarSportGroup[];
5343
+ /** Whether cards summarize trips or due dates. */
2970
5344
  type?: TeamTravelCalendarItemType;
5345
+ /** Toolbar rendered above the cards. */
2971
5346
  toolbar?: ReactNode;
5347
+ /** Called with the trip the user opened. */
2972
5348
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5349
+ /** Called with the task the user opened. */
2973
5350
  onDueDateClick?: (dueDate: TeamTravelCalendarDueDate) => void;
5351
+ /** Called with the task the user marked complete or incomplete. */
2974
5352
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5353
+ /** Additional CSS class. */
2975
5354
  className?: string;
2976
5355
  }
5356
+ /**
5357
+ * The same travel plotted as cards grouped by sport, for scanning across sports
5358
+ * rather than across dates.
5359
+ */
2977
5360
  declare const TeamTravelCalendarCardView: ({ groups, type, toolbar, onTripClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarCardViewProps) => React.JSX.Element;
2978
5361
  interface TeamTravelCalendarListViewProps {
5362
+ /** Trips to list, in display order. */
2979
5363
  trips: TeamTravelCalendarTrip[];
5364
+ /** Whether rows show trips or due dates. */
2980
5365
  type?: TeamTravelCalendarItemType;
5366
+ /** Toolbar rendered above the list. */
2981
5367
  toolbar?: ReactNode;
5368
+ /** Label describing the period the list covers. */
2982
5369
  periodLabel?: string;
5370
+ /** Count of upcoming trips shown in the list header. */
2983
5371
  upcomingTrips?: number;
5372
+ /** Called with the trip the user opened. */
2984
5373
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5374
+ /** Called with the trip whose task list the user opened. */
2985
5375
  onDueDatesClick?: (trip: TeamTravelCalendarTrip) => void;
5376
+ /** Called with the task the user opened. */
2986
5377
  onDueDateClick?: (dueDate: TeamTravelCalendarDueDate) => void;
5378
+ /** Called with the task the user marked complete or incomplete. */
2987
5379
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5380
+ /** Additional CSS class. */
2988
5381
  className?: string;
2989
5382
  }
5383
+ /**
5384
+ * The same travel as a dense chronological list, for long periods that a grid
5385
+ * cannot show at once.
5386
+ */
2990
5387
  declare const TeamTravelCalendarListView: ({ trips, type, toolbar, periodLabel, upcomingTrips, onTripClick, onDueDatesClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarListViewProps) => React.JSX.Element;
5388
+ /**
5389
+ * Formats the heading for a calendar period -- "March 2026" for a month,
5390
+ * a date range for a week.
5391
+ */
2991
5392
  declare const getTeamTravelCalendarPeriodLabel: (activeDate: string, duration: TeamTravelCalendarDuration) => string;
5393
+ /**
5394
+ * Steps a date forward or back by whole periods, returning the new active date.
5395
+ * Pass a negative `amount` to step backwards.
5396
+ */
2992
5397
  declare const moveTeamTravelCalendarPeriod: (activeDate: string, duration: TeamTravelCalendarDuration, amount: number) => string;
2993
5398
 
2994
5399
  type TeamFormMode = 'Add' | 'Edit';
@@ -3008,84 +5413,154 @@ interface ManagedFormProps<T> {
3008
5413
  showActions?: boolean;
3009
5414
  /** Disable every field and action. */
3010
5415
  disabled?: boolean;
5416
+ /** Additional CSS class. */
3011
5417
  className?: string;
3012
5418
  }
3013
5419
  interface TeamEquipmentValues {
5420
+ /** What the item is. */
3014
5421
  description: string;
5422
+ /** Weight per unit, in pounds. Drives the manifest payload total. */
3015
5423
  weight: TeamNumericValue;
5424
+ /** How many are travelling. */
3016
5425
  quantity: TeamNumericValue;
5426
+ /** Height per unit, in inches. */
3017
5427
  height: TeamNumericValue;
5428
+ /** Width per unit, in inches. */
3018
5429
  width: TeamNumericValue;
5430
+ /** Depth per unit, in inches. */
3019
5431
  depth: TeamNumericValue;
3020
5432
  }
3021
5433
  interface TeamEquipmentFormProps extends ManagedFormProps<TeamEquipmentValues> {
5434
+ /** Whether the form is adding or editing. */
3022
5435
  mode?: TeamFormMode;
3023
5436
  }
5437
+ /**
5438
+ * Adds or edits a piece of team equipment, including the dimensions and weight
5439
+ * that charter payload planning depends on.
5440
+ */
3024
5441
  declare const TeamEquipmentForm: ({ mode, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, }: TeamEquipmentFormProps) => React.JSX.Element;
3025
5442
  interface TeamUserAccessValues {
5443
+ /** Portal user being granted access to the team. */
3026
5444
  userId: string;
3027
5445
  }
3028
5446
  interface TeamUserAccessFormProps extends ManagedFormProps<TeamUserAccessValues> {
5447
+ /** Portal users available to grant access to. */
3029
5448
  options: SelectOption[];
3030
5449
  }
5450
+ /**
5451
+ * Grants an existing portal user access to a team.
5452
+ */
3031
5453
  declare const TeamUserAccessForm: ({ options, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, }: TeamUserAccessFormProps) => React.JSX.Element;
3032
5454
  type TeamProgramType = 'Air' | 'Car' | 'Hotel';
3033
5455
  interface TeamProgramValues {
5456
+ /** Which loyalty program the number belongs to. */
3034
5457
  type: TeamProgramType;
5458
+ /** Supplier running the program. */
3035
5459
  supplier: string;
5460
+ /** The team's account or membership number. */
3036
5461
  accountNumber: string;
3037
5462
  }
3038
5463
  interface TeamProgramFormProps extends ManagedFormProps<TeamProgramValues> {
5464
+ /** Suppliers to offer per program type. Types left out fall back to a free-text entry. */
3039
5465
  supplierOptions?: Partial<Record<TeamProgramType, SelectOption[]>>;
3040
5466
  }
5467
+ /**
5468
+ * Records a loyalty or corporate program number the team travels under.
5469
+ */
3041
5470
  declare const TeamProgramForm: ({ values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, supplierOptions, }: TeamProgramFormProps) => React.JSX.Element;
3042
5471
  interface TeamRosterMemberValues {
5472
+ /** Portal user this roster member is linked to, when they have an account. */
3043
5473
  portalUserId: string;
5474
+ /** Given name, as it appears on the government ID used to travel. */
3044
5475
  firstName: string;
5476
+ /** Middle name, as it appears on that ID. */
3045
5477
  middleName: string;
5478
+ /** Confirms the traveler has no middle name, so the empty field is deliberate. */
3046
5479
  noMiddleName: boolean;
5480
+ /** Family name, as it appears on that ID. */
3047
5481
  lastName: string;
5482
+ /** Whether the traveler is an athlete, coach, staff member, or guest. */
3048
5483
  travelerType: string;
5484
+ /** Date of birth, required by carriers for ticketing. */
3049
5485
  birthDate: string;
5486
+ /** Gender as recorded on the travel document. */
3050
5487
  gender: string;
5488
+ /** Traveler weight, in pounds. Feeds charter payload calculations. */
3051
5489
  weight: TeamNumericValue;
5490
+ /** Passport number, for international travel. */
3052
5491
  passportNumber: string;
5492
+ /** TSA PreCheck / Known Traveler Number. */
3053
5493
  knownTravelerNumber: string;
5494
+ /** DHS redress number, where the traveler has one. */
3054
5495
  dhsRedressNumber: string;
5496
+ /** Airline the frequent flyer number belongs to. */
3055
5497
  airline: string;
5498
+ /** Frequent flyer number for that airline. */
3056
5499
  frequentFlyerNumber: string;
5500
+ /** Accessibility needs, seating, and meal requests. */
3057
5501
  specialRequests: string;
3058
5502
  }
3059
5503
  interface TeamPortalUserOption extends SelectOption {
5504
+ /** Traveler details to prefill the form with when this user is picked. */
3060
5505
  traveler?: Partial<TeamRosterMemberValues>;
3061
5506
  }
3062
5507
  interface TeamRosterMemberFormProps extends ManagedFormProps<TeamRosterMemberValues> {
5508
+ /** Whether the form is adding or editing. */
3063
5509
  mode?: TeamFormMode;
5510
+ /** Portal users a roster member can be created from. */
3064
5511
  portalUsers?: TeamPortalUserOption[];
5512
+ /** Airlines offered for the frequent flyer number. */
3065
5513
  airlineOptions?: SelectOption[];
5514
+ /** Traveler types offered. */
3066
5515
  travelerTypeOptions?: SelectOption[];
3067
5516
  }
5517
+ /**
5518
+ * Adds or edits a roster member, including the identity details carriers require
5519
+ * for ticketing. Can prefill from a linked portal user.
5520
+ */
3068
5521
  declare const TeamRosterMemberForm: ({ mode, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, portalUsers, airlineOptions, travelerTypeOptions, }: TeamRosterMemberFormProps) => React.JSX.Element;
3069
5522
  type TeamImportKind = 'equipment' | 'roster' | 'teamworks-roster';
3070
5523
  interface TeamImportFormProps {
5524
+ /** What the uploaded file contains. */
3071
5525
  kind: TeamImportKind;
5526
+ /** Called with the file the user chose. */
3072
5527
  onSubmit?: (file: File) => void;
5528
+ /** Called when the user abandons the import. */
3073
5529
  onCancel?: () => void;
5530
+ /** Disables the form while an import is running. */
3074
5531
  disabled?: boolean;
5532
+ /** Additional CSS class. */
3075
5533
  className?: string;
3076
5534
  }
5535
+ /**
5536
+ * Bulk-loads roster or equipment records from an uploaded file.
5537
+ */
3077
5538
  declare const TeamImportForm: ({ kind, onSubmit, onCancel, disabled, className }: TeamImportFormProps) => React.JSX.Element;
3078
5539
 
3079
5540
  interface TravelSummaryMetricsProps {
5541
+ /** Trips completed so far this season. */
3080
5542
  tripsTraveled?: string | number;
5543
+ /** Trips still ahead this season. */
3081
5544
  remainingTrips?: string | number;
5545
+ /** Total trip spend for the season. */
3082
5546
  seasonTripCosts?: string | number;
5547
+ /** Season the figures cover. */
3083
5548
  seasonLabel: string;
5549
+ /** Count of overdue tasks, surfaced as the one actionable tile. */
3084
5550
  overdueActions?: string | number;
5551
+ /** Called when the user opens the overdue tasks. The tile is static without it. */
3085
5552
  onOverdueActionsClick?: () => void;
5553
+ /** Additional CSS class. */
3086
5554
  className?: string;
3087
5555
  }
5556
+ /**
5557
+ * Formats a trip cost for a metric tile, abbreviating thousands so long figures
5558
+ * do not wrap.
5559
+ */
3088
5560
  declare const formatCompactTripCost: (value?: string | number) => string | undefined;
5561
+ /**
5562
+ * Season-at-a-glance tiles: trips taken, trips remaining, spend, and overdue tasks.
5563
+ */
3089
5564
  declare const TravelSummaryMetrics: ({ tripsTraveled, remainingTrips, seasonTripCosts, seasonLabel, overdueActions, onOverdueActionsClick, className, }: TravelSummaryMetricsProps) => React.JSX.Element;
3090
5565
 
3091
5566
  interface TravelerFormData {
@@ -3123,7 +5598,9 @@ interface TravelerFormProps {
3123
5598
  children?: ReactNode;
3124
5599
  /** Form sections - render props approach */
3125
5600
  renderNameSection?: (values: TravelerFormData) => ReactNode;
5601
+ /** Renders the traveler detail fields, given the current values. */
3126
5602
  renderDetailsSection?: (values: TravelerFormData) => ReactNode;
5603
+ /** Renders the travel preference fields, given the current values. */
3127
5604
  renderPreferencesSection?: (values: TravelerFormData) => ReactNode;
3128
5605
  /** Footer actions */
3129
5606
  footer?: ReactNode;
@@ -3197,6 +5674,9 @@ interface TripTableProps {
3197
5674
  /** Additional CSS class */
3198
5675
  className?: string;
3199
5676
  }
5677
+ /**
5678
+ * Trip listing with the segment, status, and date columns the travel screens share.
5679
+ */
3200
5680
  declare const TripTable: React__default.FC<TripTableProps>;
3201
5681
 
3202
5682
  type AdministrationTab = 'system' | 'client';
@@ -3207,13 +5687,19 @@ interface AdministrationCard {
3207
5687
  icon?: ReactNode;
3208
5688
  }
3209
5689
  interface AdministrationPageProps {
5690
+ /** Tab currently shown. */
3210
5691
  activeTab?: AdministrationTab;
3211
5692
  /** Authoritative tabs for the current viewer. An empty array renders no tab controls. */
3212
5693
  enabledTabs?: AdministrationTab[];
5694
+ /** Called with the tab the user selected. */
3213
5695
  onTabChange?: (tab: AdministrationTab) => void;
5696
+ /** Administration destinations offered on the current tab. */
3214
5697
  cards?: AdministrationCard[];
5698
+ /** Called with the destination the user opened. */
3215
5699
  onCardClick?: (card: AdministrationCard) => void;
5700
+ /** Content rendered below the cards, for a tab that hosts its own screen. */
3216
5701
  children?: ReactNode;
5702
+ /** Additional CSS class. */
3217
5703
  className?: string;
3218
5704
  }
3219
5705
  /** Hub administration shell and system-card index. */
@@ -3232,20 +5718,35 @@ interface AgentGroupTravelRequestsPageProps {
3232
5718
  today?: string;
3233
5719
  /** Shows the STM-employee-only quick links (agent request form, CDS requests, actionable items, administer views). */
3234
5720
  isStmEmployee?: boolean;
5721
+ /** Called when the agent returns to booking. */
3235
5722
  onBackToBookATrip?: () => void;
5723
+ /** Called when the agent raises a request on behalf of a school. */
3236
5724
  onSubmitNewRequest?: () => void;
5725
+ /** Called when the agent raises a request through the agent-only form. */
3237
5726
  onSubmitAgentRequest?: () => void;
5727
+ /** Called when the agent searches closed requests. */
3238
5728
  onSearchPastRequests?: () => void;
5729
+ /** Called when the agent opens the CDS request queue. */
3239
5730
  onShowCdsRequests?: () => void;
5731
+ /** Called when the agent opens the items needing action. */
3240
5732
  onShowActionableItems?: () => void;
5733
+ /** Called when the agent manages the saved account-group views. */
3241
5734
  onAdministerViews?: () => void;
5735
+ /** Called with the request the agent opened. */
3242
5736
  onOpenRequest?: (id: number) => void;
5737
+ /** Called with the master trip the agent opened. */
3243
5738
  onViewMasterTrip?: (masterTripId: number) => void;
5739
+ /** Called with the request the agent deleted. */
3244
5740
  onDeleteRequest?: (id: number) => void;
5741
+ /** Called with the record locator the agent copied. */
3245
5742
  onCopyPnr?: (recordLocator: string) => void;
5743
+ /** Called with the request and the milestone the agent marked complete or incomplete. */
3246
5744
  onToggleDueStatus?: (id: number, field: GroupTravelDueField) => void;
5745
+ /** Called with the request and its new submitted date. */
3247
5746
  onSubmittedDateChange?: (id: number, value: string) => void;
5747
+ /** Called with the request and its new quote-sent date. */
3248
5748
  onQuoteSentDateChange?: (id: number, value: string) => void;
5749
+ /** Additional CSS class. */
3249
5750
  className?: string;
3250
5751
  }
3251
5752
  /** Hub's agent-facing Group Travel Request screen — the "Book a Trip" quick links plus the open-requests list. */
@@ -3378,6 +5879,7 @@ interface ChampionshipBidDetailPageProps {
3378
5879
  onBack?: () => void;
3379
5880
  /** BCP 47 locale used to format seats and total cost. */
3380
5881
  locale?: string;
5882
+ /** Additional CSS class. */
3381
5883
  className?: string;
3382
5884
  }
3383
5885
  /**
@@ -3590,31 +6092,57 @@ interface CharterManifestEquipment {
3590
6092
  weight: number;
3591
6093
  }
3592
6094
  interface CharterManifestPageProps {
6095
+ /** Trip the manifest belongs to. */
3593
6096
  tripName: string;
6097
+ /** First day of travel. */
3594
6098
  travelStartDate?: string;
6099
+ /** Last day of travel. */
3595
6100
  travelEndDate?: string;
6101
+ /** Seats available on the aircraft. */
3596
6102
  seats: number;
6103
+ /** Maximum payload the aircraft can carry, in pounds. */
3597
6104
  payloadLimit: number;
6105
+ /** Total passenger weight, in pounds. */
3598
6106
  passengerWeight: number;
6107
+ /** Total cargo and equipment weight, in pounds. */
3599
6108
  cargoWeight: number;
6109
+ /** Operator flying the charter. */
3600
6110
  carrierName?: string;
6111
+ /** Note from the operator about the manifest. */
3601
6112
  carrierNote?: string;
6113
+ /** Passengers currently manifested. */
3602
6114
  passengers?: CharterManifestPassenger[];
6115
+ /** Equipment currently manifested. */
3603
6116
  equipment?: CharterManifestEquipment[];
6117
+ /** Flight segments the manifest covers. */
3604
6118
  segments?: CharterManifestSegment[];
6119
+ /** Whether the manifest is locked against further edits after a final send. */
3605
6120
  locked?: boolean;
6121
+ /** How far the manifest has progressed through initial and final sends. */
3606
6122
  sendState?: ManifestSendState;
6123
+ /** Called when the user leaves the manifest. */
3607
6124
  onBack?: () => void;
6125
+ /** Called when the user generates the manifest file for the operator. */
3608
6126
  onGenerateFile?: () => void;
6127
+ /** Called when the user reassigns the charter to another operator. */
3609
6128
  onChangeCarrier?: () => void;
6129
+ /** Called when the user splits the manifest across segments. */
3610
6130
  onSplitSegments?: () => void;
6131
+ /** Called when the user adds passengers. */
3611
6132
  onAddPassengers?: () => void;
6133
+ /** Called when the user adds equipment. */
3612
6134
  onAddEquipment?: () => void;
6135
+ /** Called with the passenger the user removed. */
3613
6136
  onRemovePassenger?: (passenger: CharterManifestPassenger) => void;
6137
+ /** Called with the equipment the user removed. */
3614
6138
  onRemoveEquipment?: (equipment: CharterManifestEquipment) => void;
6139
+ /** Called when the user sends the initial manifest to the operator. */
3615
6140
  onSendInitial?: () => void;
6141
+ /** Called when the user sends the final manifest, locking it. */
3616
6142
  onSendFinal?: () => void;
6143
+ /** Called when the user retracts an initial send. */
3617
6144
  onUndoInitial?: () => void;
6145
+ /** Additional CSS class. */
3618
6146
  className?: string;
3619
6147
  }
3620
6148
  /** Stateless, service-free rendering of Hub's charter manifest page. */
@@ -3672,11 +6200,18 @@ interface ChartersAccessManagementPageProps {
3672
6200
  onChangeRole?: (membership: ChartersAccessMembership, role: ChartersAccessRole) => void | Promise<void>;
3673
6201
  /** Remove STM Charters access after the page confirmation. */
3674
6202
  onRemoveAccess?: (membership: ChartersAccessMembership) => void | Promise<void>;
6203
+ /** Additional CSS class. */
3675
6204
  className?: string;
3676
6205
  }
3677
6206
  /**
3678
6207
  * Account-scoped access management for the STM Charters workspace.
3679
6208
  *
6209
+ * Features:
6210
+ * - Single search input with dropdown for finding and selecting multiple users
6211
+ * - Selected users shown as dismissible badges
6212
+ * - Role assignment before adding
6213
+ * - Bulk add support
6214
+ *
3680
6215
  * The page deliberately owns only interaction state. Memberships, authorization guards,
3681
6216
  * persistence, routing, and account/global-admin recovery remain controlled by the host.
3682
6217
  */
@@ -3699,6 +6234,8 @@ interface CharterSectionCard {
3699
6234
  countLabel?: string;
3700
6235
  /** Optional icon override. Unknown keys otherwise use the standard plane icon. */
3701
6236
  icon?: ReactNode;
6237
+ /** Whether the count is still loading. When true, shows a spinner instead of count. */
6238
+ loading?: boolean;
3702
6239
  }
3703
6240
  /** A named STM contact for one of the two bid programs. */
3704
6241
  interface CharterContact {
@@ -3772,14 +6309,21 @@ interface ContactUsData {
3772
6309
  groupHotelContacts?: ContactInfo[];
3773
6310
  }
3774
6311
  interface ContactUsPageProps {
6312
+ /** Page heading. */
3775
6313
  title?: string;
6314
+ /** Which state to render. Drives the loading, empty, and error treatments. */
3776
6315
  state?: 'loading' | 'data' | 'empty' | 'error';
6316
+ /** Message shown in the error state. */
3777
6317
  errorMessage?: string;
6318
+ /** Contact details to show in the data state. */
3778
6319
  data?: ContactUsData;
6320
+ /** Called when the user prints the contact sheet. */
3779
6321
  onPrint?: () => void;
3780
6322
  /** Generic cards remain available for non-Hub consumers. */
3781
6323
  cards?: ContactCardData[];
6324
+ /** Content rendered below the cards. */
3782
6325
  children?: ReactNode;
6326
+ /** Additional CSS class. */
3783
6327
  className?: string;
3784
6328
  }
3785
6329
  /** Exact presentational counterpart of the Hub Contact Us screen. */
@@ -3834,26 +6378,84 @@ interface DashboardWidget {
3834
6378
  };
3835
6379
  }
3836
6380
  interface DashboardPageProps {
6381
+ /** Greeting line above the name. */
3837
6382
  greeting?: string;
6383
+ /** Name the greeting addresses. */
3838
6384
  firstName?: string;
6385
+ /** School or account shown in the subtitle. */
3839
6386
  accountName?: string;
6387
+ /** Widgets to render, in display order. */
3840
6388
  widgets?: DashboardWidget[];
6389
+ /** Platform-wide notices shown above the widgets. */
3841
6390
  systemBanners?: SystemBanner[];
6391
+ /** Travel alerts shown above the widgets. */
3842
6392
  alertBanners?: TravelAlertBanner[];
6393
+ /** Whether the layout is saved, saving, or failed to save. */
3843
6394
  syncStatus?: 'idle' | 'saving' | 'error';
6395
+ /** Called with the widget the user refreshed. */
3844
6396
  onRefresh?: (widget: DashboardWidget) => void;
6397
+ /** Called with the widget the user removed. */
3845
6398
  onRemove?: (widget: DashboardWidget) => void;
6399
+ /** Called with the widget and its new size. */
3846
6400
  onResize?: (widget: DashboardWidget, size: DashboardWidgetSize) => void;
6401
+ /** Called with the positions a widget moved from and to. */
3847
6402
  onReorder?: (from: number, to: number) => void;
6403
+ /** Called when the user restores the default layout. */
3848
6404
  onReset?: () => void;
6405
+ /** Called with the type of widget the user added. */
3849
6406
  onAddWidget?: (type: DashboardWidget['type']) => void;
6407
+ /** Called with the widget and the traveler date range the user picked. */
3850
6408
  onTravelerRangeChange?: (widget: DashboardWidget, range: DashboardTravelerRange) => void;
6409
+ /** Called with the route a widget link points at. The host performs the routing. */
3851
6410
  onNavigate?: (path: string, state?: unknown) => void;
6411
+ /** Additional CSS class. */
3852
6412
  className?: string;
3853
6413
  }
3854
6414
  /** Exact, service-free rendering of Hub's personalized home page. */
3855
6415
  declare const DashboardPage: ({ greeting, firstName, accountName, widgets, systemBanners, alertBanners, syncStatus, onRefresh, onRemove, onResize, onReorder, onReset, onAddWidget, onTravelerRangeChange, onNavigate, className }: DashboardPageProps) => React.JSX.Element;
3856
6416
 
6417
+ type DebitMemoTab = 'open' | 'resolved' | 'all';
6418
+ interface DebitMemoAgentErrorPageProps {
6419
+ /** Memos shown in the "Open" tab — the actionable queue this page is built around. */
6420
+ openMemos: DebitMemoRecord[];
6421
+ /** Count shown on the "Resolved" tab badge. Resolved memos aren't listed yet — see notes. */
6422
+ resolvedCount?: number;
6423
+ /** Count shown on the "All" tab badge. */
6424
+ allCount?: number;
6425
+ /** Resolution reasons offered in the bulk-assign dropdown. */
6426
+ resolutionOptions: ResolutionOption[];
6427
+ /** Memo reasons rendered with the warning-emphasis pill. */
6428
+ emphasizedReasons?: string[];
6429
+ /** Called when a resolution is bulk-applied to the given memo IDs. */
6430
+ onBulkApplyResolution: (memoIds: string[], resolutionValue: string) => void | Promise<void>;
6431
+ /** Called when a memo number link is activated (opens the ARC PDF). */
6432
+ onOpenMemo?: (memo: DebitMemoRecord) => void;
6433
+ /** Called when a row's edit action is activated. */
6434
+ onEditMemo?: (memo: DebitMemoRecord) => void;
6435
+ /** Called as the search field changes, debounced by the caller if needed. */
6436
+ onSearch?: (query: string) => void;
6437
+ /** Called when the export action is activated. */
6438
+ onExport?: () => void;
6439
+ /** Shows the loading state on the grid. */
6440
+ isLoading?: boolean;
6441
+ /** Shows an inline error instead of the grid. */
6442
+ error?: string;
6443
+ /**
6444
+ * Toggles the "What's new in this view" callout introducing the three
6445
+ * ARC-sourced columns and bulk resolution. Meant to be turned off once the
6446
+ * change has been live for a while.
6447
+ */
6448
+ showWhatsNew?: boolean;
6449
+ }
6450
+ /**
6451
+ * Full "Employees / Debit Memo & Agent Error" page. Lets branch staff review
6452
+ * ARC debit memos without opening each PDF — the three highlighted columns
6453
+ * (Original Ticket #, Balance, Memo Reason) come straight from the memo PDF —
6454
+ * and resolve several matching memos (e.g. a handful of $25 memos) in one
6455
+ * bulk action instead of editing each one individually.
6456
+ */
6457
+ declare function DebitMemoAgentErrorPage({ openMemos, resolvedCount, allCount, resolutionOptions, emphasizedReasons, onBulkApplyResolution, onOpenMemo, onEditMemo, onSearch, onExport, isLoading, error, showWhatsNew, }: DebitMemoAgentErrorPageProps): React.JSX.Element;
6458
+
3857
6459
  type FeatureFlagIdentifier = string | number;
3858
6460
  type FeatureFlagTargetType = 'global' | 'account' | 'user' | 'userType' | 'role' | 'organizationalUnit' | 'organizationalUnitValue';
3859
6461
  type FeatureFlagRuleEffect = 'enable' | 'disable';
@@ -3929,22 +6531,33 @@ interface FeatureFlagManagementPageProps {
3929
6531
  rules: FeatureFlagRule[];
3930
6532
  /** Controlled account and audience options. */
3931
6533
  targetOptions: FeatureFlagTargetOptions;
6534
+ /** Whether the catalog and rules are still loading. */
3932
6535
  loading?: boolean;
6536
+ /** Load error shown in place of the rule list. */
3933
6537
  error?: string;
6538
+ /** Called when the user retries a failed load. */
3934
6539
  onRetry?: () => void;
3935
6540
  /** Host mutation state. It disables all mutation controls. */
3936
6541
  submitting?: boolean;
3937
6542
  /** Controlled user-search results are returned through `targetOptions.users`. */
3938
6543
  onSearchUsers?: (query: string, accountId?: FeatureFlagIdentifier) => void | Promise<void>;
6544
+ /** Whether a user search is in flight. */
3939
6545
  userSearchLoading?: boolean;
6546
+ /** Error from the last user search. */
3940
6547
  userSearchError?: string;
3941
6548
  /** Called when an account selection needs account-scoped audience options from the host. */
3942
6549
  onAccountChange?: (accountId?: FeatureFlagIdentifier) => void | Promise<void>;
6550
+ /** Whether account-scoped audience options are loading. */
3943
6551
  audienceLoading?: boolean;
6552
+ /** Error from the last audience load. */
3944
6553
  audienceError?: string;
6554
+ /** Called with the rule the user created. */
3945
6555
  onCreateRule?: (value: FeatureFlagRuleFormValue) => void | Promise<void>;
6556
+ /** Called with the edit the user submitted. */
3946
6557
  onEditRule?: (request: FeatureFlagRuleEditRequest) => void | Promise<void>;
6558
+ /** Called with the rule the user deactivated. */
3947
6559
  onDeactivateRule?: (request: FeatureFlagRuleDeactivateRequest) => void | Promise<void>;
6560
+ /** Additional CSS class. */
3948
6561
  className?: string;
3949
6562
  }
3950
6563
  /**
@@ -3967,20 +6580,36 @@ interface GroupTravelRequestContact {
3967
6580
  email?: string;
3968
6581
  }
3969
6582
  interface GroupTravelRequestPageProps {
6583
+ /** Event the request is being raised for, shown in the heading. */
3970
6584
  eventName?: string;
6585
+ /** Number of steps in the wizard, shown in the progress indicator. */
3971
6586
  totalPages?: number;
6587
+ /** Called with the completed request. */
3972
6588
  onSubmit?: (data: GroupTravelRequestValues) => void;
6589
+ /** Called when the user abandons the request. */
3973
6590
  onCancel?: () => void;
6591
+ /** Called with the full request on every field change. */
3974
6592
  onChange?: (data: GroupTravelRequestValues) => void;
6593
+ /** Values to prefill the wizard with. */
3975
6594
  initialValues?: GroupTravelRequestValues;
6595
+ /** Team contacts offered as the request contact. */
3976
6596
  contacts?: GroupTravelRequestContact[];
6597
+ /** Catering choices offered for the trip. */
3977
6598
  cateringOptions?: string[];
6599
+ /** Default pickup address, offered as the departure point. */
3978
6600
  schoolAddress?: string;
6601
+ /** Travel services the request can cover, and how each is configured. */
3979
6602
  services?: ServiceConfig[];
3980
6603
  /** Retained for consumers that provide a custom summary configuration. */
3981
6604
  summarySections?: SummarySectionConfig[];
6605
+ /** Additional CSS class. */
3982
6606
  className?: string;
3983
6607
  }
6608
+ /**
6609
+ * Multi-step wizard for requesting travel for a whole team.
6610
+ * Collects the trip, the services needed, and the traveling party, and hands the
6611
+ * completed request to the host through `onSubmit`.
6612
+ */
3984
6613
  declare const GroupTravelRequestPage: {
3985
6614
  ({ eventName, totalPages, onSubmit, onCancel, onChange, initialValues, contacts, cateringOptions, schoolAddress, services, summarySections, className, }: GroupTravelRequestPageProps): React.JSX.Element;
3986
6615
  displayName: string;
@@ -4099,6 +6728,10 @@ interface IndividualTravelPageProps {
4099
6728
  /** Additional CSS class. */
4100
6729
  className?: string;
4101
6730
  }
6731
+ /**
6732
+ * Landing page for a single traveler's own requests, listing what they have raised
6733
+ * and offering a new one.
6734
+ */
4102
6735
  declare const IndividualTravelPage: React__default.FC<IndividualTravelPageProps>;
4103
6736
 
4104
6737
  /** Travel services represented by the legacy individual-request record. */
@@ -4290,9 +6923,17 @@ interface IndividualTravelRequestFormPageProps {
4290
6923
  onRetry?: () => void;
4291
6924
  /** Optional account-specific fee or response-time notice. */
4292
6925
  notice?: ReactNode;
6926
+ /** Label for the submit button. */
4293
6927
  submitLabel?: string;
6928
+ /** Additional CSS class. */
4294
6929
  className?: string;
4295
6930
  }
6931
+ /**
6932
+ * Form for one traveler to request their own travel.
6933
+ * The questions asked come from the account configuration, so the host supplies
6934
+ * them rather than the page assuming a fixed set.
6935
+ * Renders read-only when no `onSubmit` is given.
6936
+ */
4296
6937
  declare const IndividualTravelRequestFormPage: React__default.FC<IndividualTravelRequestFormPageProps>;
4297
6938
 
4298
6939
  interface IndividualTravelRequestDetailPageProps {
@@ -4306,9 +6947,11 @@ interface IndividualTravelRequestDetailPageProps {
4306
6947
  notice?: ReactNode;
4307
6948
  /** Optional host-owned return route. Hidden when absent. */
4308
6949
  onBack?: () => void;
6950
+ /** Label for the back link. */
4309
6951
  backLabel?: string;
4310
6952
  /** Optional retry for a failed host query. Hidden unless an error is present. */
4311
6953
  onRetry?: () => void;
6954
+ /** Additional CSS class. */
4312
6955
  className?: string;
4313
6956
  }
4314
6957
  /**
@@ -4736,12 +7379,21 @@ interface RosterProgramNumberRow {
4736
7379
  accountNumber: string;
4737
7380
  }
4738
7381
  interface RosterProgramNumbersPageProps {
7382
+ /** Loyalty and corporate program numbers held for the team. */
4739
7383
  programs: RosterProgramNumberRow[];
7384
+ /** Whether the programs are still loading. */
4740
7385
  loading?: boolean;
7386
+ /** Whether a save is in flight. */
4741
7387
  saving?: boolean;
7388
+ /** Called when the user leaves the page. */
4742
7389
  onBack?: () => void;
7390
+ /** Called with the full set of programs the user saved. */
4743
7391
  onSubmit?: (programs: RosterProgramNumberRow[]) => void | Promise<void>;
4744
7392
  }
7393
+ /**
7394
+ * Edits the loyalty and corporate program numbers a team travels under, saving them
7395
+ * as one set.
7396
+ */
4745
7397
  declare const RosterProgramNumbersPage: {
4746
7398
  ({ programs, loading, saving, onBack, onSubmit, }: RosterProgramNumbersPageProps): React.JSX.Element;
4747
7399
  displayName: string;
@@ -4794,11 +7446,18 @@ interface RosterReportOption {
4794
7446
  description?: string;
4795
7447
  }
4796
7448
  interface RosterReportsPageProps {
7449
+ /** Reports the user can run. */
4797
7450
  reports: RosterReportOption[];
7451
+ /** Report currently running, shown as in progress. */
4798
7452
  runningReportId?: string;
7453
+ /** Called when the user leaves the page. */
4799
7454
  onBack?: () => void;
7455
+ /** Called with the report the user ran. */
4800
7456
  onRun?: (report: RosterReportOption) => void | Promise<void>;
4801
7457
  }
7458
+ /**
7459
+ * Lists the roster reports a user can run, and reports progress while one runs.
7460
+ */
4802
7461
  declare const RosterReportsPage: {
4803
7462
  ({ reports, runningReportId, onBack, onRun }: RosterReportsPageProps): React.JSX.Element;
4804
7463
  displayName: string;
@@ -5058,5 +7717,5 @@ declare const TripDetailPage: {
5058
7717
  displayName: string;
5059
7718
  };
5060
7719
 
5061
- export { ACMI_AIRCRAFT_OPTIONS, ACMI_CARRIER_OPTIONS, ACMI_INSURANCE_FLAT, Accordion, AcmiQuoteCalculator, AdministrationPage, AgentGroupTravelRequestsPage, AgentGroupTravelRequestsTable, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, BID_TYPE_HEADINGS, Badge, BuildingIcon, BusIcon, Button, CARRIER_CATERING_OPTIONS, CARRIER_CONTACT_TYPES, CHAMPIONSHIP_BID_TYPES, CHAMPIONSHIP_HEADINGS, CHARTER_CONTACT_GROUPS, CHARTER_SECTIONS, CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon, Card, CardBody, CardFooter, CardHeader, CarrierProfilePage, ChampionshipBidDetailPage, ChampionshipBidsPage, CharterBidResponsePage, CharterBidViewPage, CharterManifestPage, CharterSourcingEmailPreview, ChartersAccessManagementPage, ChartersHomePage, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon, EmptyState, EyeIcon, FeatureFlagManagementPage, FilterChip, FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_AGENTS_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HUB_OFF_FLEET_ITEM, HUB_SOURCING_ITEM, HUB_STM_CHARTERS_ITEM, HeadsetIcon, HomeIcon, HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, IndividualTravelRequestDetailPage, IndividualTravelRequestFormPage, InfoCenterPage, InfoIcon, Input, ItineraryPage, ItinerarySegmentCard, ItineraryTimeline, LightbulbIcon, LimoIcon, LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, OFF_FLEET_LEARNED_DESCRIPTION, OFF_FLEET_LEARNED_EMPTY_COPY, OFF_FLEET_QUEUE_DESCRIPTION, OffFleetLearnedExamplesPage, OffFleetReviewQueuePage, OffFleetSubmissionDetailPage, PageBanners, Pagination, PhoneIcon, PlaneIcon, PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, QuoteCostBreakdown, QuoteReviewActions, REGULAR_SEASON_BID_TYPES, RailIcon, RefreshIcon, RegularSeasonBidsPage, RegularSeasonBidsTable, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, RosterProgramNumbersPage, RosterReportsPage, RosterToolbar, SOURCING_COST_CATEGORIES, SOURCING_COST_CATEGORY_LABELS, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, SourcingQuoteDetailPage, SourcingReviewQueuePage, SourcingReviewQueueTable, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, TRIP_MONTH_OPTIONS, Table, Tag, TeamCard, TeamContactsPanel, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleEditor, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarCardView, TeamTravelCalendarListView, TeamTravelCalendarPage, TeamTravelCalendarToolbar, TeamTravelCalendarView, TeamUserAccessForm, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon, WarningIcon, XIcon, buildPaginationItems, computeLineItemTotal, computeQuoteTotals, computeTravelTypeCodes, deriveProgramBidStatus, formatCompactTripCost, formatItineraryDate, formatItineraryDateRange, formatItineraryMoney, formatTeamScheduleDueDate, formatTeamScheduleTravelDates, getCharterSourcingEmailRoute, getCharterSourcingEmailSubject, getPageCount, getSegmentDate, getSegmentStartMinutes, getSegmentTitle, getTeamTravelCalendarPeriodLabel, groupSegmentsByDay, isExpiringSoon, isProgramBiddable, isQuoteActionable, isTravelDueDateCompleted, matchesQuoteSearch, moveTeamTravelCalendarPeriod, parseClockTime, parseItineraryDate };
5062
- export type { AccordionProps, AccountInfo, AcmiAircraftOption, AcmiLeg, AcmiPositioningMode, AcmiQuoteCalculatorProps, AcmiQuoteInputs, AcmiQuoteResult, AdministrationCard, AdministrationPageProps, AdministrationTab, AgentGroupTravelRequest, AgentGroupTravelRequestSportOption, AgentGroupTravelRequestViewOption, AgentGroupTravelRequestsPageProps, AirSegmentProps, AlertProps, AlertVariant, AppLayoutProps, AvatarGroupProps, AvatarProps, AvatarSize, BadgeProps, BadgeSize, BadgeVariant, ButtonProps, ButtonSize, ButtonVariant, CalendarMetric, CalendarTypeSelectorProps, CalendarTypeValue, CalendarView, CalendarViewSelectorProps, CalendarViewValue, CardBodyProps, CardFooterProps, CardHeaderProps, CardPadding, CardProps, CardVariant, CarrierAircraft, CarrierContact, CarrierProfilePageProps, CarrierProfilePreferences, CarrierProfileTab, ChampionshipBid, ChampionshipBidDetail, ChampionshipBidDetailPageProps, ChampionshipBidType, ChampionshipBidsPageProps, CharterBidLevel, CharterBidResponsePageProps, CharterBidSubmission, CharterBidTarget, CharterBidViewPageProps, CharterContact, CharterContactGroup, CharterFlightProgramBid, CharterManifestEquipment, CharterManifestPageProps, CharterManifestPassenger, CharterManifestSegment, CharterSectionCard, CharterSourcingEmailChange, CharterSourcingEmailChanges, CharterSourcingEmailLeg, CharterSourcingEmailPreviewProps, CharterSourcingEmailQuote, CharterSourcingEmailVariant, CharterSubmissionType, CharterSubmittedBid, CharterTripBid, CharterTripBidStatus, ChartersAccessId, ChartersAccessManagementPageProps, ChartersAccessMembership, ChartersAccessRole, ChartersAccountUser, ChartersHomePageProps, CheckboxProps, ConfirmModalProps, Contact, ContactCardData, ContactInfo, ContactListProps, ContactPair, ContactUsData, ContactUsPageProps, DashboardPageProps, DatepickerProps, DatepickerSize, DrawerBodyProps, DrawerFooterProps, DrawerHeaderProps, DrawerPosition, DrawerProps, DrawerSize, DropdownAlignment, DropdownItemProps, DropdownProps, DueDatesDrawerProps, EmptyStateProps, EmptyStateSize, FeatureFlagDefinition, FeatureFlagIdentifier, FeatureFlagManagementPageProps, FeatureFlagRule, FeatureFlagRuleDeactivateRequest, FeatureFlagRuleEditRequest, FeatureFlagRuleEffect, FeatureFlagRuleFormValue, FeatureFlagTargetOption, FeatureFlagTargetOptions, FeatureFlagTargetType, FilterChipProps, FilterOption, FlightData, FormFieldProps, FormRowProps, FormSectionProps, FormStackProps, GroundData, GroundSegmentProps, GroupTravelDueField, GroupTravelDueStatus, GroupTravelPnr, GroupTravelRequestContact, GroupTravelRequestFieldValue, GroupTravelRequestPageProps, GroupTravelRequestSource, GroupTravelRequestValues, GroupedTravelDueDates, HotelData, HotelSegmentProps, HubAppShellActions, HubAppShellProps, HubNavigationItem, IconName, IconProps, IndividualTravelExportRequest, IndividualTravelExportScope, IndividualTravelFilters, IndividualTravelPageProps, IndividualTravelPagination, IndividualTravelRequestAirLeg, IndividualTravelRequestAirRequest, IndividualTravelRequestAirTripType, IndividualTravelRequestAnswerValue, IndividualTravelRequestBusRequest, IndividualTravelRequestCarLeg, IndividualTravelRequestCarRequest, IndividualTravelRequestCurrentTraveler, IndividualTravelRequestDetail, IndividualTravelRequestDetailPageProps, IndividualTravelRequestFormConfiguration, IndividualTravelRequestFormPageProps, IndividualTravelRequestHotelLeg, IndividualTravelRequestHotelRequest, IndividualTravelRequestLabeledAnswer, IndividualTravelRequestOption, IndividualTravelRequestQuestion, IndividualTravelRequestQuestionType, IndividualTravelRequestService, IndividualTravelRequestSubmitter, IndividualTravelRequestTraveler, IndividualTravelRequestTravelerType, IndividualTravelRequestValues, IndividualTravelTabCounts, InfoCenterArticle, InfoCenterPageProps, InfoCenterPageState, InputProps, InputSize, ItineraryAgent, ItineraryAirSegment, ItineraryCarSegment, ItineraryDay, ItineraryHotelSegment, ItineraryPageProps, ItinerarySegment, ItinerarySegmentCardProps, ItinerarySegmentStatus, ItineraryTimelineProps, ManifestCapacityStatsProps, ManifestSendState, ManifestView, ManifestViewToggleProps, MembershipProgram, MembershipProgramsProps, MetricProps, ModalFooterProps, ModalProps, ModalSize, ModuleProps, ModuleSize, NavItemProps, NavItemSize, NavItemVariant, NotFoundPageProps, OffFleetLearnedExample, OffFleetLearnedExamplesPageProps, OffFleetLeg, OffFleetLegDiagnostic, OffFleetLegMatch, OffFleetPreflightCheck, OffFleetPreflightRow, OffFleetPriceBasis, OffFleetQuoteHeader, OffFleetReviewQueuePageProps, OffFleetSubmission, OffFleetSubmissionDetailPageProps, OffFleetSubmissionStatus, OffFleetTripGrouping, OffFleetTripSegment, PageBannersProps, PaginationItem, PaginationProps, PreferenceField, PreferenceSection, PreferencesPanelProps, ProgressBarProps, ProgressCircleProps, ProgressSize, ProgressVariant, QuoteCostBreakdownProps, QuoteCostTotals, QuoteFieldChange, QuoteReviewActionsProps, RegularSeasonBidType, RegularSeasonBidsPageProps, RegularSeasonBidsTableProps, RequestFormFooterProps, RequestFormHeaderProps, RequestFormLayoutProps, RequestSummaryProps, RosterProgramNumberId, RosterProgramNumberRow, RosterProgramNumbersPageProps, RosterReportOption, RosterReportsPageProps, RosterToolbarProps, ScheduleFilterOption, ScheduleMetric, SchoolContactFormProps, SearchFieldProps, SeasonOption, SegmentOption, SegmentProps, SegmentVariant, SegmentedSelectorOption, SegmentedSelectorProps, SelectFilterOption, SelectFilterProps, SelectOption, SelectOptionGroup, SelectProps, SelectSize, ServiceConfig, ServiceToggleListProps, ServiceToggleProps, SidenavItem, SidenavProps, SourcingCostAdjustment, SourcingCostCategory, SourcingCostLineItem, SourcingQuote, SourcingQuoteDetailPageProps, SourcingQuoteLeg, SourcingQuoteLegType, SourcingQuoteStatus, SourcingReviewQueuePageProps, SourcingReviewQueueTableProps, SpinnerProps, SpinnerSize, StatusBadgeProps, StatusBadgeVariant, SummaryItem, SummarySectionConfig, SummarySegment, SupplierTypeToggleProps, SupplierTypeValue, SystemBanner, TabKey, TableColumn, TableProps, TableRowKey, TagProps, TagSize, TagVariant, TeamCardProps, TeamContactId, TeamContactOption, TeamContactsLoadingState, TeamContactsPanelProps, TeamContactsValue, TeamEquipmentFormProps, TeamEquipmentValues, TeamFormMode, TeamHeaderProps, TeamImportFormProps, TeamImportKind, TeamManagementPageProps, TeamManagementTab, TeamNumericValue, TeamOption, TeamPortalUserOption, TeamProgramFormProps, TeamProgramType, TeamProgramValues, TeamRosterMemberFormProps, TeamRosterMemberValues, TeamScheduleActionsProps, TeamScheduleCompactEvent, TeamScheduleCompactRow, TeamScheduleCompactTableProps, TeamScheduleCompactTrip, TeamScheduleDueDate, TeamScheduleEditorEvent, TeamScheduleEditorProps, TeamScheduleEditorTrip, TeamScheduleExpandedRow, TeamScheduleExpandedTableProps, TeamScheduleHomeAway, TeamSchedulePageProps, TeamSubMenuProps, TeamSubMenuTab, TeamTravelCalendarCardViewProps, TeamTravelCalendarDueDate, TeamTravelCalendarDuration, TeamTravelCalendarEvent, TeamTravelCalendarItemType, TeamTravelCalendarListViewProps, TeamTravelCalendarPageProps, TeamTravelCalendarSportGroup, TeamTravelCalendarToolbarProps, TeamTravelCalendarTrip, TeamTravelCalendarViewProps, TeamUserAccessFormProps, TeamUserAccessValues, TextareaProps, TimepickerProps, TimepickerSize, TitleProps, TitleWeight, ToggleProps, ToggleSize, ToolbarAction, TooltipPosition, TooltipProps, TooltipVariant, TopbarProps, TravelAlertBanner, TravelDueDateItem, TravelServiceIconProps, TravelSummaryMetricsProps, TravelType, TravelerFormData, TravelerFormProps, TripData, TripDetailPageProps, TripSegmentProps, TripTableProps, TypeIconProps, VendorCode };
7720
+ export { ACMI_AIRCRAFT_OPTIONS, ACMI_CARRIER_OPTIONS, ACMI_INSURANCE_FLAT, Accordion, AcmiQuoteCalculator, AdministrationPage, AgentGroupTravelRequestsPage, AgentGroupTravelRequestsTable, AirSegment, Alert, AlertStyled, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, BID_TYPE_HEADINGS, BackLink, Badge, BuildingIcon, BusIcon, Button, ButtonStyled, CARRIER_CATERING_OPTIONS, CARRIER_CONTACT_TYPES, CHAMPIONSHIP_BID_TYPES, CHAMPIONSHIP_HEADINGS, CHARTER_CONTACT_GROUPS, CHARTER_SECTIONS, CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon, Card, CardBody, CardFooter, CardHeader, CarrierProfilePage, ChampionshipBidDetailPage, ChampionshipBidsPage, CharterBidResponsePage, CharterBidViewPage, CharterManifestPage, CharterSourcingEmailPreview, ChartersAccessManagementPage, ChartersHomePage, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactCard, ContactList, ContactUsPage, CubeIcon, DEBIT_MEMO_EMPHASIZED_REASONS, DEBIT_MEMO_MOCK_DATA, DOCUMENT_FILE_EXTENSIONS, DashboardIcon, DashboardPage, Datepicker, DebitMemoAgentErrorPage, DebitMemoBulkActionBar, DebitMemoTable, DetailList, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon, EmptyState, EyeIcon, FeatureFlagManagementPage, FieldLayout, FileUploadButton, FilterChip, FilterIcon, FormField, FormRow, FormSection, FormStack, GridHeaderRow, GridIcon, GridTable, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_AGENTS_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HUB_OFF_FLEET_ITEM, HUB_SOURCING_ITEM, HUB_STM_CHARTERS_ITEM, HeadsetIcon, HomeIcon, HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, IndividualTravelRequestDetailPage, IndividualTravelRequestFormPage, InfoCenterPage, InfoIcon, InfoTile, Input, ItineraryPage, ItinerarySegmentCard, ItineraryTimeline, LightbulbIcon, LimoIcon, LockIcon, Logo, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, MultiUserSearch, NavItem, NotFoundPage, OFF_FLEET_LEARNED_DESCRIPTION, OFF_FLEET_LEARNED_EMPTY_COPY, OFF_FLEET_QUEUE_DESCRIPTION, OffFleetLearnedExamplesPage, OffFleetReviewQueuePage, OffFleetSubmissionDetailPage, PageBanners, PageHeader, Pagination, PhoneIcon, PlaneIcon, PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, QuoteCostBreakdown, QuoteReviewActions, REGULAR_SEASON_BID_TYPES, RailIcon, RefreshIcon, RegularSeasonBidsPage, RegularSeasonBidsTable, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, ResultCount, RosterProgramNumbersPage, RosterReportsPage, RosterToolbar, SOURCING_COST_CATEGORIES, SOURCING_COST_CATEGORY_LABELS, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, SourcingQuoteDetailPage, SourcingReviewQueuePage, SourcingReviewQueueTable, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, TRIP_MONTH_OPTIONS, Table, Tag, TeamCalendarHeader, TeamCard, TeamContactsPanel, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleEditor, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarCardView, TeamTravelCalendarListView, TeamTravelCalendarPage, TeamTravelCalendarToolbar, TeamTravelCalendarView, TeamUserAccessForm, Textarea, ThemeProvider, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon, WarningIcon, XIcon, absoluteFill, accentColors, alertTokens, boxShadow, brandColors, breakpoints, buildPaginationItems, buttonReset, computeLineItemTotal, computeQuoteTotals, computeTravelTypeCodes, css, darkTheme, lightTheme as defaultTheme, deriveProgramBidStatus, flexCenter, flexCol, flexRow, font, fontFamily, fontSize, fontWeight, formatCompactTripCost, formatItineraryDate, formatItineraryDateRange, formatItineraryMoney, formatTeamScheduleDueDate, formatTeamScheduleTravelDates, getCharterSourcingEmailRoute, getCharterSourcingEmailSubject, getPageCount, getSegmentDate, getSegmentStartMinutes, getSegmentTitle, getTeamTravelCalendarPeriodLabel, groupSegmentsByDay, isExpiringSoon, isProgramBiddable, isQuoteActionable, isTravelDueDateCompleted, isTravelDueDateOverdue, leading, lightTheme, lineClamp, lineHeight, matchesQuoteSearch, merge, moveTeamTravelCalendarPeriod, neutralColors, parseClockTime, parseItineraryDate, primaryColors, radius, rounded, semanticColors, shadow, size, space, spacing, srOnly, statusColors, styled, teamColors, textColors, toInlineStyle, trans, transition, truncate, useTheme, weight };
7721
+ export type { AccordionProps, AccountInfo, AcmiAircraftOption, AcmiLeg, AcmiPositioningMode, AcmiQuoteCalculatorProps, AcmiQuoteInputs, AcmiQuoteResult, AdministrationCard, AdministrationPageProps, AdministrationTab, AgentGroupTravelRequest, AgentGroupTravelRequestSportOption, AgentGroupTravelRequestViewOption, AgentGroupTravelRequestsPageProps, AirSegmentProps, AlertProps, AlertStyledProps, AlertVariant$1 as AlertVariant, AppLayoutProps, AvatarGroupProps, AvatarProps, AvatarSize, BackLinkProps, BadgeProps, BadgeSize, BadgeVariant, ButtonProps, ButtonSize$1 as ButtonSize, ButtonStyledProps, ButtonVariant$1 as ButtonVariant, CSSObject, CalendarMetric, CalendarTypeSelectorProps, CalendarTypeValue, CalendarView, CalendarViewSelectorProps, CalendarViewValue, CardBodyProps, CardFooterProps, CardHeaderProps, CardPadding, CardProps, CardVariant, CarrierAircraft, CarrierContact, CarrierProfilePageProps, CarrierProfilePreferences, CarrierProfileTab, ChampionshipBid, ChampionshipBidDetail, ChampionshipBidDetailPageProps, ChampionshipBidType, ChampionshipBidsPageProps, CharterBidLevel, CharterBidResponsePageProps, CharterBidSubmission, CharterBidTarget, CharterBidViewPageProps, CharterContact, CharterContactGroup, CharterFlightProgramBid, CharterManifestEquipment, CharterManifestPageProps, CharterManifestPassenger, CharterManifestSegment, CharterSectionCard, CharterSourcingEmailChange, CharterSourcingEmailChanges, CharterSourcingEmailLeg, CharterSourcingEmailPreviewProps, CharterSourcingEmailQuote, CharterSourcingEmailVariant, CharterSubmissionType, CharterSubmittedBid, CharterTripBid, CharterTripBidStatus, ChartersAccessId, ChartersAccessManagementPageProps, ChartersAccessMembership, ChartersAccessRole, ChartersAccountUser, ChartersHomePageProps, CheckboxProps, ConfirmModalProps, Contact, ContactCardData, ContactCardProps, ContactInfo, ContactListProps, ContactPair, ContactUsData, ContactUsPageProps, DashboardPageProps, DatepickerProps, DatepickerSize, DebitMemoAgentErrorPageProps, DebitMemoBulkActionBarProps, DebitMemoRecord, DebitMemoTab, DebitMemoTableProps, DetailListItem, DetailListProps, DetailListVariant, DrawerBodyProps, DrawerFooterProps, DrawerHeaderProps, DrawerPosition, DrawerProps, DrawerSize, DropdownAlignment, DropdownItemProps, DropdownProps, DueDatesDrawerProps, EmptyStateProps, EmptyStateSize, FeatureFlagDefinition, FeatureFlagIdentifier, FeatureFlagManagementPageProps, FeatureFlagRule, FeatureFlagRuleDeactivateRequest, FeatureFlagRuleEditRequest, FeatureFlagRuleEffect, FeatureFlagRuleFormValue, FeatureFlagTargetOption, FeatureFlagTargetOptions, FeatureFlagTargetType, FieldLayoutProps, FieldLayoutRenderProps, FileUploadButtonProps, FilterChipProps, FilterOption, FlightData, FormFieldProps, FormRowProps, FormSectionProps, FormStackProps, GridCellRenderProps, GridColumn, GridHeaderRowProps, GridRow, GridTableProps, GridTotalRow, GroundData, GroundSegmentProps, GroupTravelDueField, GroupTravelDueStatus, GroupTravelPnr, GroupTravelRequestContact, GroupTravelRequestFieldValue, GroupTravelRequestPageProps, GroupTravelRequestSource, GroupTravelRequestValues, GroupedTravelDueDates, HotelData, HotelSegmentProps, HubAppShellActions, HubAppShellProps, HubNavigationItem, IconName, IconProps, IndividualTravelExportRequest, IndividualTravelExportScope, IndividualTravelFilters, IndividualTravelPageProps, IndividualTravelPagination, IndividualTravelRequestAirLeg, IndividualTravelRequestAirRequest, IndividualTravelRequestAirTripType, IndividualTravelRequestAnswerValue, IndividualTravelRequestBusRequest, IndividualTravelRequestCarLeg, IndividualTravelRequestCarRequest, IndividualTravelRequestCurrentTraveler, IndividualTravelRequestDetail, IndividualTravelRequestDetailPageProps, IndividualTravelRequestFormConfiguration, IndividualTravelRequestFormPageProps, IndividualTravelRequestHotelLeg, IndividualTravelRequestHotelRequest, IndividualTravelRequestLabeledAnswer, IndividualTravelRequestOption, IndividualTravelRequestQuestion, IndividualTravelRequestQuestionType, IndividualTravelRequestService, IndividualTravelRequestSubmitter, IndividualTravelRequestTraveler, IndividualTravelRequestTravelerType, IndividualTravelRequestValues, IndividualTravelTabCounts, InfoCenterArticle, InfoCenterPageProps, InfoCenterPageState, InfoTileEdge, InfoTileProps, InputProps, InputSize, ItineraryAgent, ItineraryAirSegment, ItineraryCarSegment, ItineraryDay, ItineraryHotelSegment, ItineraryPageProps, ItinerarySegment, ItinerarySegmentCardProps, ItinerarySegmentStatus, ItineraryTimelineProps, LogoLockup, LogoProps, LogoVariant, ManifestCapacityStatsProps, ManifestSendState, ManifestView, ManifestViewToggleProps, MembershipProgram, MembershipProgramsProps, MetricProps, ModalFooterProps, ModalProps, ModalSize, ModuleProps, ModuleSize, MultiUserSearchOption, MultiUserSearchProps, NavItemProps, NavItemSize, NavItemVariant, NotFoundPageProps, OffFleetLearnedExample, OffFleetLearnedExamplesPageProps, OffFleetLeg, OffFleetLegDiagnostic, OffFleetLegMatch, OffFleetPreflightCheck, OffFleetPreflightRow, OffFleetPriceBasis, OffFleetQuoteHeader, OffFleetReviewQueuePageProps, OffFleetSubmission, OffFleetSubmissionDetailPageProps, OffFleetSubmissionStatus, OffFleetTripGrouping, OffFleetTripSegment, PageBannersProps, PageHeaderProps, PaginationItem, PaginationProps, PreferenceField, PreferenceSection, PreferencesPanelProps, ProgressBarProps, ProgressCircleProps, ProgressSize, ProgressVariant, QuoteCostBreakdownProps, QuoteCostTotals, QuoteFieldChange, QuoteReviewActionsProps, RegularSeasonBidType, RegularSeasonBidsPageProps, RegularSeasonBidsTableProps, RequestFormFooterProps, RequestFormHeaderProps, RequestFormLayoutProps, RequestSummaryProps, ResolutionOption, ResultCountProps, RosterProgramNumberId, RosterProgramNumberRow, RosterProgramNumbersPageProps, RosterReportOption, RosterReportsPageProps, RosterToolbarProps, ScheduleFilterOption, ScheduleMetric, SchoolContactFormProps, SearchFieldProps, SeasonOption, SegmentOption, SegmentProps, SegmentVariant, SegmentedSelectorOption, SegmentedSelectorProps, SelectFilterOption, SelectFilterProps, SelectOption, SelectOptionGroup, SelectProps, SelectSize, ServiceConfig, ServiceToggleListProps, ServiceToggleProps, SidenavItem, SidenavProps, SourcingCostAdjustment, SourcingCostCategory, SourcingCostLineItem, SourcingQuote, SourcingQuoteDetailPageProps, SourcingQuoteDraft, SourcingQuoteLeg, SourcingQuoteLegType, SourcingQuoteStatus, SourcingReviewQueuePageProps, SourcingReviewQueueTableProps, SpinnerProps, SpinnerSize, StatusBadgeProps, StatusBadgeVariant, StyleFunction, SummaryItem, SummarySectionConfig, SummarySegment, SupplierTypeToggleProps, SupplierTypeValue, SystemBanner, TabKey, TableColumn, TableProps, TableRowKey, TagProps, TagSize, TagVariant, TeamCalendarHeaderProps, TeamCardProps, TeamContactId, TeamContactOption, TeamContactsLoadingState, TeamContactsPanelProps, TeamContactsValue, TeamEquipmentFormProps, TeamEquipmentValues, TeamFormMode, TeamHeaderProps, TeamImportFormProps, TeamImportKind, TeamManagementPageProps, TeamManagementTab, TeamNumericValue, TeamOption, TeamPortalUserOption, TeamProgramFormProps, TeamProgramType, TeamProgramValues, TeamRosterMemberFormProps, TeamRosterMemberValues, TeamScheduleActionsProps, TeamScheduleCompactEvent, TeamScheduleCompactRow, TeamScheduleCompactTableProps, TeamScheduleCompactTrip, TeamScheduleDueDate, TeamScheduleEditorEvent, TeamScheduleEditorProps, TeamScheduleEditorTrip, TeamScheduleExpandedRow, TeamScheduleExpandedTableProps, TeamScheduleHomeAway, TeamSchedulePageProps, TeamSubMenuProps, TeamSubMenuTab, TeamTravelCalendarCardViewProps, TeamTravelCalendarDueDate, TeamTravelCalendarDuration, TeamTravelCalendarEvent, TeamTravelCalendarItemType, TeamTravelCalendarListViewProps, TeamTravelCalendarPageProps, TeamTravelCalendarSportGroup, TeamTravelCalendarToolbarProps, TeamTravelCalendarTrip, TeamTravelCalendarViewProps, TeamUserAccessFormProps, TeamUserAccessValues, TextareaProps, Theme, ThemeBreakpoint, ThemeColors, ThemeContextValue, ThemeMode, ThemeProviderProps, ThemeRadius, ThemeShadow, ThemeSpacing, ThemeTransition, ThemeTypography, TimepickerProps, TimepickerSize, TitleProps, TitleWeight, ToggleProps, ToggleSize, ToolbarAction, TooltipPosition, TooltipProps, TooltipVariant, TopbarProps, TravelAlertBanner, TravelDueDateItem, TravelServiceIconProps, TravelSummaryMetricsProps, TravelType, TravelerFormData, TravelerFormProps, TripData, TripDetailPageProps, TripSegmentProps, TripTableProps, TypeIconProps, VendorCode };