@shortstravelmgmt/component-lib 0.2.9 → 0.2.11

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,938 @@
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, SVGProps, TextareaHTMLAttributes, SelectHTMLAttributes, ReactNode, 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: "#15538C";
13
+ readonly blueDeep: "#0E3F6E";
14
+ readonly blueTint: "#E5EDF4";
15
+ };
16
+ declare const primaryColors: {
17
+ readonly primary: "#0A53EF";
18
+ readonly primaryDark: "#1A43D1";
19
+ readonly primaryLight: "#E6ECFB";
20
+ readonly primaryLightHover: "#DAE3F8";
21
+ };
22
+ declare const neutralColors: {
23
+ readonly basecolor: "#F5F5F5";
24
+ readonly subtle: "#EFF0F0";
25
+ readonly card: "#EFEFEF";
26
+ readonly cardalt: "#EBEBEC";
27
+ readonly secondary: "#E4E5E7";
28
+ readonly secondaryDark: "#DFE1E3";
29
+ readonly tableBorder: "#D5D5D5";
30
+ readonly border: "#EDEDED";
31
+ readonly borderDark: "#D5D5D5";
32
+ readonly white: "#FFFFFF";
33
+ };
34
+ declare const textColors: {
35
+ readonly ink: "#282828";
36
+ readonly charcoal: "#3F3F3F";
37
+ readonly slate: "#5C5C5C";
38
+ readonly stone: "#787878";
39
+ readonly pending: "#C7C7CA";
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
+ };
48
+ declare const accentColors: {
49
+ readonly mint: "#37C3A4";
50
+ readonly forest: "#003E1B";
51
+ readonly forestLight: "#E2F0EC";
52
+ readonly tangerine: "#FE7C35";
53
+ readonly tangerineLight: "#FFE2C1";
54
+ };
55
+ declare const teamColors: {
56
+ readonly men: "#8AC6D9";
57
+ readonly women: "#FFA99A";
58
+ readonly mixed: "#D1C1C3";
59
+ };
60
+ declare const travelColors: {
61
+ readonly limoBackground: "#EDE9FE";
62
+ readonly limoForeground: "#7C3AED";
63
+ readonly busBackground: "#FEF3C7";
64
+ readonly busForeground: "#D97706";
65
+ };
66
+ declare const vendorColors: {
67
+ readonly DL: {
68
+ readonly bg: "#003366";
69
+ readonly fg: "#FFFFFF";
70
+ };
71
+ readonly AA: {
72
+ readonly bg: "#0078D2";
73
+ readonly fg: "#FFFFFF";
74
+ };
75
+ readonly UA: {
76
+ readonly bg: "#002244";
77
+ readonly fg: "#FFFFFF";
78
+ };
79
+ readonly WN: {
80
+ readonly bg: "#F9B612";
81
+ readonly fg: "#304CB2";
82
+ };
83
+ readonly B6: {
84
+ readonly bg: "#003876";
85
+ readonly fg: "#FFFFFF";
86
+ };
87
+ readonly AS: {
88
+ readonly bg: "#016191";
89
+ readonly fg: "#FFFFFF";
90
+ };
91
+ readonly F9: {
92
+ readonly bg: "#2D8B45";
93
+ readonly fg: "#FFFFFF";
94
+ };
95
+ readonly NK: {
96
+ readonly bg: "#FFC72C";
97
+ readonly fg: "#000000";
98
+ };
99
+ readonly G4: {
100
+ readonly bg: "#00386C";
101
+ readonly fg: "#FFFFFF";
102
+ };
103
+ readonly HA: {
104
+ readonly bg: "#660099";
105
+ readonly fg: "#FFFFFF";
106
+ };
107
+ };
108
+ declare const gradients: {
109
+ readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
110
+ };
111
+ declare const alertTokens: {
112
+ readonly primary: {
113
+ readonly fg: "#0A53EF";
114
+ readonly bg: "#E6ECFB";
115
+ readonly border: "#0A53EF";
116
+ };
117
+ readonly success: {
118
+ readonly fg: "#138660";
119
+ readonly bg: "#E2F0EC";
120
+ readonly border: "#138660";
121
+ };
122
+ readonly warning: {
123
+ readonly fg: "#9F5500";
124
+ readonly bg: "#FFE2C1";
125
+ readonly border: "#FE7C35";
126
+ };
127
+ readonly error: {
128
+ readonly fg: "#940000";
129
+ readonly bg: "#FEE2E2";
130
+ readonly border: "#940000";
131
+ };
132
+ };
133
+ declare const semanticColors: {
134
+ readonly fg: {
135
+ readonly 1: "#282828";
136
+ readonly 2: "#3F3F3F";
137
+ readonly 3: "#5C5C5C";
138
+ readonly 4: "#787878";
139
+ readonly disabled: "#C7C7CA";
140
+ readonly link: "#0A53EF";
141
+ readonly linkHover: "#1A43D1";
142
+ };
143
+ readonly bg: {
144
+ readonly page: "#F5F5F5";
145
+ readonly surface: "#FFFFFF";
146
+ readonly card: "#EFEFEF";
147
+ readonly subtle: "#EFF0F0";
148
+ };
149
+ };
150
+ declare const fontFamily: {
151
+ readonly base: "'Roboto Flex', system-ui, -apple-system, 'Segoe UI', sans-serif";
152
+ readonly display: "'Roboto Flex', system-ui, -apple-system, sans-serif";
153
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
154
+ };
155
+ declare const fontSize: {
156
+ readonly xs: "12px";
157
+ readonly sm: "14px";
158
+ readonly base: "16px";
159
+ readonly lg: "18px";
160
+ readonly xl: "20px";
161
+ readonly '2xl': "24px";
162
+ readonly '4xl': "36px";
163
+ };
164
+ declare const lineHeight: {
165
+ readonly xs: "16px";
166
+ readonly sm: "20px";
167
+ readonly base: "24px";
168
+ readonly lg: "28px";
169
+ readonly xl: "28px";
170
+ readonly '2xl': "32px";
171
+ readonly '4xl': "40px";
172
+ readonly tight: 1.25;
173
+ readonly normal: 1.5;
174
+ };
175
+ declare const fontWeight: {
176
+ readonly light: 300;
177
+ readonly regular: 400;
178
+ readonly medium: 500;
179
+ readonly semibold: 600;
180
+ readonly bold: 700;
181
+ };
182
+ declare const spacing: {
183
+ readonly 0: "0";
184
+ readonly '0.5': "2px";
185
+ readonly 1: "4px";
186
+ readonly '1.5': "6px";
187
+ readonly 2: "8px";
188
+ readonly 3: "12px";
189
+ readonly 4: "16px";
190
+ readonly 5: "20px";
191
+ readonly 6: "24px";
192
+ readonly 7: "28px";
193
+ readonly 8: "32px";
194
+ readonly 9: "36px";
195
+ readonly 10: "40px";
196
+ readonly 12: "48px";
197
+ readonly 16: "64px";
198
+ };
199
+ declare const radius: {
200
+ readonly sm: "2px";
201
+ readonly md: "4px";
202
+ readonly lg: "6px";
203
+ readonly xl: "8px";
204
+ readonly '2xl': "12px";
205
+ readonly '3xl': "16px";
206
+ readonly full: "9999px";
207
+ };
208
+ declare const shadow: {
209
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
210
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
211
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
212
+ };
213
+ declare const breakpoints: {
214
+ readonly sm: "640px";
215
+ readonly md: "768px";
216
+ readonly lg: "1024px";
217
+ readonly xl: "1280px";
218
+ readonly '2xl': "1536px";
219
+ };
220
+ declare const transition: {
221
+ readonly fast: "150ms ease";
222
+ readonly base: "200ms ease";
223
+ readonly slow: "300ms ease";
224
+ };
225
+ declare const lightTheme: {
226
+ readonly colors: {
227
+ readonly brand: {
228
+ readonly blue: "#15538C";
229
+ readonly blueDeep: "#0E3F6E";
230
+ readonly blueTint: "#E5EDF4";
231
+ };
232
+ readonly primary: {
233
+ readonly primary: "#0A53EF";
234
+ readonly primaryDark: "#1A43D1";
235
+ readonly primaryLight: "#E6ECFB";
236
+ readonly primaryLightHover: "#DAE3F8";
237
+ };
238
+ readonly neutral: {
239
+ readonly basecolor: "#F5F5F5";
240
+ readonly subtle: "#EFF0F0";
241
+ readonly card: "#EFEFEF";
242
+ readonly cardalt: "#EBEBEC";
243
+ readonly secondary: "#E4E5E7";
244
+ readonly secondaryDark: "#DFE1E3";
245
+ readonly tableBorder: "#D5D5D5";
246
+ readonly border: "#EDEDED";
247
+ readonly borderDark: "#D5D5D5";
248
+ readonly white: "#FFFFFF";
249
+ };
250
+ readonly text: {
251
+ readonly ink: "#282828";
252
+ readonly charcoal: "#3F3F3F";
253
+ readonly slate: "#5C5C5C";
254
+ readonly stone: "#787878";
255
+ readonly pending: "#C7C7CA";
256
+ readonly error: "#940000";
257
+ };
258
+ readonly status: {
259
+ readonly success: "#138660";
260
+ readonly warning: "#9F5500";
261
+ readonly gold: "#FFC179";
262
+ readonly error: "#940000";
263
+ };
264
+ readonly accent: {
265
+ readonly mint: "#37C3A4";
266
+ readonly forest: "#003E1B";
267
+ readonly forestLight: "#E2F0EC";
268
+ readonly tangerine: "#FE7C35";
269
+ readonly tangerineLight: "#FFE2C1";
270
+ };
271
+ readonly team: {
272
+ readonly men: "#8AC6D9";
273
+ readonly women: "#FFA99A";
274
+ readonly mixed: "#D1C1C3";
275
+ };
276
+ readonly travel: {
277
+ readonly limoBackground: "#EDE9FE";
278
+ readonly limoForeground: "#7C3AED";
279
+ readonly busBackground: "#FEF3C7";
280
+ readonly busForeground: "#D97706";
281
+ };
282
+ readonly vendor: {
283
+ readonly DL: {
284
+ readonly bg: "#003366";
285
+ readonly fg: "#FFFFFF";
286
+ };
287
+ readonly AA: {
288
+ readonly bg: "#0078D2";
289
+ readonly fg: "#FFFFFF";
290
+ };
291
+ readonly UA: {
292
+ readonly bg: "#002244";
293
+ readonly fg: "#FFFFFF";
294
+ };
295
+ readonly WN: {
296
+ readonly bg: "#F9B612";
297
+ readonly fg: "#304CB2";
298
+ };
299
+ readonly B6: {
300
+ readonly bg: "#003876";
301
+ readonly fg: "#FFFFFF";
302
+ };
303
+ readonly AS: {
304
+ readonly bg: "#016191";
305
+ readonly fg: "#FFFFFF";
306
+ };
307
+ readonly F9: {
308
+ readonly bg: "#2D8B45";
309
+ readonly fg: "#FFFFFF";
310
+ };
311
+ readonly NK: {
312
+ readonly bg: "#FFC72C";
313
+ readonly fg: "#000000";
314
+ };
315
+ readonly G4: {
316
+ readonly bg: "#00386C";
317
+ readonly fg: "#FFFFFF";
318
+ };
319
+ readonly HA: {
320
+ readonly bg: "#660099";
321
+ readonly fg: "#FFFFFF";
322
+ };
323
+ };
324
+ readonly alert: {
325
+ readonly primary: {
326
+ readonly fg: "#0A53EF";
327
+ readonly bg: "#E6ECFB";
328
+ readonly border: "#0A53EF";
329
+ };
330
+ readonly success: {
331
+ readonly fg: "#138660";
332
+ readonly bg: "#E2F0EC";
333
+ readonly border: "#138660";
334
+ };
335
+ readonly warning: {
336
+ readonly fg: "#9F5500";
337
+ readonly bg: "#FFE2C1";
338
+ readonly border: "#FE7C35";
339
+ };
340
+ readonly error: {
341
+ readonly fg: "#940000";
342
+ readonly bg: "#FEE2E2";
343
+ readonly border: "#940000";
344
+ };
345
+ };
346
+ readonly semantic: {
347
+ readonly fg: {
348
+ readonly 1: "#282828";
349
+ readonly 2: "#3F3F3F";
350
+ readonly 3: "#5C5C5C";
351
+ readonly 4: "#787878";
352
+ readonly disabled: "#C7C7CA";
353
+ readonly link: "#0A53EF";
354
+ readonly linkHover: "#1A43D1";
355
+ };
356
+ readonly bg: {
357
+ readonly page: "#F5F5F5";
358
+ readonly surface: "#FFFFFF";
359
+ readonly card: "#EFEFEF";
360
+ readonly subtle: "#EFF0F0";
361
+ };
362
+ };
363
+ };
364
+ readonly typography: {
365
+ readonly fontFamily: {
366
+ readonly base: "'Roboto Flex', system-ui, -apple-system, 'Segoe UI', sans-serif";
367
+ readonly display: "'Roboto Flex', system-ui, -apple-system, sans-serif";
368
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
369
+ };
370
+ readonly fontSize: {
371
+ readonly xs: "12px";
372
+ readonly sm: "14px";
373
+ readonly base: "16px";
374
+ readonly lg: "18px";
375
+ readonly xl: "20px";
376
+ readonly '2xl': "24px";
377
+ readonly '4xl': "36px";
378
+ };
379
+ readonly lineHeight: {
380
+ readonly xs: "16px";
381
+ readonly sm: "20px";
382
+ readonly base: "24px";
383
+ readonly lg: "28px";
384
+ readonly xl: "28px";
385
+ readonly '2xl': "32px";
386
+ readonly '4xl': "40px";
387
+ readonly tight: 1.25;
388
+ readonly normal: 1.5;
389
+ };
390
+ readonly fontWeight: {
391
+ readonly light: 300;
392
+ readonly regular: 400;
393
+ readonly medium: 500;
394
+ readonly semibold: 600;
395
+ readonly bold: 700;
396
+ };
397
+ };
398
+ readonly spacing: {
399
+ readonly 0: "0";
400
+ readonly '0.5': "2px";
401
+ readonly 1: "4px";
402
+ readonly '1.5': "6px";
403
+ readonly 2: "8px";
404
+ readonly 3: "12px";
405
+ readonly 4: "16px";
406
+ readonly 5: "20px";
407
+ readonly 6: "24px";
408
+ readonly 7: "28px";
409
+ readonly 8: "32px";
410
+ readonly 9: "36px";
411
+ readonly 10: "40px";
412
+ readonly 12: "48px";
413
+ readonly 16: "64px";
414
+ };
415
+ readonly radius: {
416
+ readonly sm: "2px";
417
+ readonly md: "4px";
418
+ readonly lg: "6px";
419
+ readonly xl: "8px";
420
+ readonly '2xl': "12px";
421
+ readonly '3xl': "16px";
422
+ readonly full: "9999px";
423
+ };
424
+ readonly shadow: {
425
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
426
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
427
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
428
+ };
429
+ readonly breakpoints: {
430
+ readonly sm: "640px";
431
+ readonly md: "768px";
432
+ readonly lg: "1024px";
433
+ readonly xl: "1280px";
434
+ readonly '2xl': "1536px";
435
+ };
436
+ readonly transition: {
437
+ readonly fast: "150ms ease";
438
+ readonly base: "200ms ease";
439
+ readonly slow: "300ms ease";
440
+ };
441
+ readonly gradients: {
442
+ readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
443
+ };
444
+ };
445
+ declare const darkTheme: {
446
+ readonly colors: {
447
+ readonly neutral: {
448
+ readonly basecolor: "#1a1a1a";
449
+ readonly subtle: "#2a2a2a";
450
+ readonly card: "#252525";
451
+ readonly cardalt: "#2f2f2f";
452
+ readonly secondary: "#3a3a3a";
453
+ readonly secondaryDark: "#454545";
454
+ readonly tableBorder: "#4a4a4a";
455
+ readonly border: "#3a3a3a";
456
+ readonly borderDark: "#4a4a4a";
457
+ readonly white: "#1a1a1a";
458
+ };
459
+ readonly text: {
460
+ readonly ink: "#f0f0f0";
461
+ readonly charcoal: "#d0d0d0";
462
+ readonly slate: "#a0a0a0";
463
+ readonly stone: "#808080";
464
+ readonly pending: "#606060";
465
+ readonly error: "#ff6b6b";
466
+ };
467
+ readonly semantic: {
468
+ readonly fg: {
469
+ readonly 1: "#f0f0f0";
470
+ readonly 2: "#d0d0d0";
471
+ readonly 3: "#a0a0a0";
472
+ readonly 4: "#808080";
473
+ readonly disabled: "#606060";
474
+ readonly link: "#0A53EF";
475
+ readonly linkHover: "#1A43D1";
476
+ };
477
+ readonly bg: {
478
+ readonly page: "#1a1a1a";
479
+ readonly surface: "#252525";
480
+ readonly card: "#252525";
481
+ readonly subtle: "#2a2a2a";
482
+ };
483
+ };
484
+ readonly brand: {
485
+ readonly blue: "#15538C";
486
+ readonly blueDeep: "#0E3F6E";
487
+ readonly blueTint: "#E5EDF4";
488
+ };
489
+ readonly primary: {
490
+ readonly primary: "#0A53EF";
491
+ readonly primaryDark: "#1A43D1";
492
+ readonly primaryLight: "#E6ECFB";
493
+ readonly primaryLightHover: "#DAE3F8";
494
+ };
495
+ readonly status: {
496
+ readonly success: "#138660";
497
+ readonly warning: "#9F5500";
498
+ readonly gold: "#FFC179";
499
+ readonly error: "#940000";
500
+ };
501
+ readonly accent: {
502
+ readonly mint: "#37C3A4";
503
+ readonly forest: "#003E1B";
504
+ readonly forestLight: "#E2F0EC";
505
+ readonly tangerine: "#FE7C35";
506
+ readonly tangerineLight: "#FFE2C1";
507
+ };
508
+ readonly team: {
509
+ readonly men: "#8AC6D9";
510
+ readonly women: "#FFA99A";
511
+ readonly mixed: "#D1C1C3";
512
+ };
513
+ readonly travel: {
514
+ readonly limoBackground: "#EDE9FE";
515
+ readonly limoForeground: "#7C3AED";
516
+ readonly busBackground: "#FEF3C7";
517
+ readonly busForeground: "#D97706";
518
+ };
519
+ readonly vendor: {
520
+ readonly DL: {
521
+ readonly bg: "#003366";
522
+ readonly fg: "#FFFFFF";
523
+ };
524
+ readonly AA: {
525
+ readonly bg: "#0078D2";
526
+ readonly fg: "#FFFFFF";
527
+ };
528
+ readonly UA: {
529
+ readonly bg: "#002244";
530
+ readonly fg: "#FFFFFF";
531
+ };
532
+ readonly WN: {
533
+ readonly bg: "#F9B612";
534
+ readonly fg: "#304CB2";
535
+ };
536
+ readonly B6: {
537
+ readonly bg: "#003876";
538
+ readonly fg: "#FFFFFF";
539
+ };
540
+ readonly AS: {
541
+ readonly bg: "#016191";
542
+ readonly fg: "#FFFFFF";
543
+ };
544
+ readonly F9: {
545
+ readonly bg: "#2D8B45";
546
+ readonly fg: "#FFFFFF";
547
+ };
548
+ readonly NK: {
549
+ readonly bg: "#FFC72C";
550
+ readonly fg: "#000000";
551
+ };
552
+ readonly G4: {
553
+ readonly bg: "#00386C";
554
+ readonly fg: "#FFFFFF";
555
+ };
556
+ readonly HA: {
557
+ readonly bg: "#660099";
558
+ readonly fg: "#FFFFFF";
559
+ };
560
+ };
561
+ readonly alert: {
562
+ readonly primary: {
563
+ readonly fg: "#0A53EF";
564
+ readonly bg: "#E6ECFB";
565
+ readonly border: "#0A53EF";
566
+ };
567
+ readonly success: {
568
+ readonly fg: "#138660";
569
+ readonly bg: "#E2F0EC";
570
+ readonly border: "#138660";
571
+ };
572
+ readonly warning: {
573
+ readonly fg: "#9F5500";
574
+ readonly bg: "#FFE2C1";
575
+ readonly border: "#FE7C35";
576
+ };
577
+ readonly error: {
578
+ readonly fg: "#940000";
579
+ readonly bg: "#FEE2E2";
580
+ readonly border: "#940000";
581
+ };
582
+ };
583
+ };
584
+ readonly typography: {
585
+ readonly fontFamily: {
586
+ readonly base: "'Roboto Flex', system-ui, -apple-system, 'Segoe UI', sans-serif";
587
+ readonly display: "'Roboto Flex', system-ui, -apple-system, sans-serif";
588
+ readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
589
+ };
590
+ readonly fontSize: {
591
+ readonly xs: "12px";
592
+ readonly sm: "14px";
593
+ readonly base: "16px";
594
+ readonly lg: "18px";
595
+ readonly xl: "20px";
596
+ readonly '2xl': "24px";
597
+ readonly '4xl': "36px";
598
+ };
599
+ readonly lineHeight: {
600
+ readonly xs: "16px";
601
+ readonly sm: "20px";
602
+ readonly base: "24px";
603
+ readonly lg: "28px";
604
+ readonly xl: "28px";
605
+ readonly '2xl': "32px";
606
+ readonly '4xl': "40px";
607
+ readonly tight: 1.25;
608
+ readonly normal: 1.5;
609
+ };
610
+ readonly fontWeight: {
611
+ readonly light: 300;
612
+ readonly regular: 400;
613
+ readonly medium: 500;
614
+ readonly semibold: 600;
615
+ readonly bold: 700;
616
+ };
617
+ };
618
+ readonly spacing: {
619
+ readonly 0: "0";
620
+ readonly '0.5': "2px";
621
+ readonly 1: "4px";
622
+ readonly '1.5': "6px";
623
+ readonly 2: "8px";
624
+ readonly 3: "12px";
625
+ readonly 4: "16px";
626
+ readonly 5: "20px";
627
+ readonly 6: "24px";
628
+ readonly 7: "28px";
629
+ readonly 8: "32px";
630
+ readonly 9: "36px";
631
+ readonly 10: "40px";
632
+ readonly 12: "48px";
633
+ readonly 16: "64px";
634
+ };
635
+ readonly radius: {
636
+ readonly sm: "2px";
637
+ readonly md: "4px";
638
+ readonly lg: "6px";
639
+ readonly xl: "8px";
640
+ readonly '2xl': "12px";
641
+ readonly '3xl': "16px";
642
+ readonly full: "9999px";
643
+ };
644
+ readonly shadow: {
645
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.04)";
646
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04)";
647
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)";
648
+ };
649
+ readonly breakpoints: {
650
+ readonly sm: "640px";
651
+ readonly md: "768px";
652
+ readonly lg: "1024px";
653
+ readonly xl: "1280px";
654
+ readonly '2xl': "1536px";
655
+ };
656
+ readonly transition: {
657
+ readonly fast: "150ms ease";
658
+ readonly base: "200ms ease";
659
+ readonly slow: "300ms ease";
660
+ };
661
+ readonly gradients: {
662
+ readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
663
+ };
664
+ };
665
+ /**
666
+ * Theme interface - allows both light and dark themes to be assignable.
667
+ * Uses structural typing rather than literal types for color values.
668
+ */
669
+ interface Theme {
670
+ colors: {
671
+ brand: typeof brandColors;
672
+ primary: typeof primaryColors;
673
+ neutral: {
674
+ basecolor: string;
675
+ subtle: string;
676
+ card: string;
677
+ cardalt: string;
678
+ secondary: string;
679
+ secondaryDark: string;
680
+ tableBorder: string;
681
+ border: string;
682
+ borderDark: string;
683
+ white: string;
684
+ };
685
+ text: {
686
+ ink: string;
687
+ charcoal: string;
688
+ slate: string;
689
+ stone: string;
690
+ pending: string;
691
+ error: string;
692
+ };
693
+ status: typeof statusColors;
694
+ accent: typeof accentColors;
695
+ team: typeof teamColors;
696
+ travel: typeof travelColors;
697
+ vendor: typeof vendorColors;
698
+ alert: typeof alertTokens;
699
+ semantic: {
700
+ fg: {
701
+ 1: string;
702
+ 2: string;
703
+ 3: string;
704
+ 4: string;
705
+ disabled: string;
706
+ link: string;
707
+ linkHover: string;
708
+ };
709
+ bg: {
710
+ page: string;
711
+ surface: string;
712
+ card: string;
713
+ subtle: string;
714
+ };
715
+ };
716
+ };
717
+ typography: {
718
+ fontFamily: typeof fontFamily;
719
+ fontSize: typeof fontSize;
720
+ lineHeight: typeof lineHeight;
721
+ fontWeight: typeof fontWeight;
722
+ };
723
+ spacing: typeof spacing;
724
+ radius: typeof radius;
725
+ shadow: typeof shadow;
726
+ breakpoints: typeof breakpoints;
727
+ transition: typeof transition;
728
+ gradients: typeof gradients;
729
+ }
730
+ type ThemeColors = Theme['colors'];
731
+ type ThemeTypography = Theme['typography'];
732
+ type ThemeSpacing = keyof typeof spacing;
733
+ type ThemeRadius = keyof typeof radius;
734
+ type ThemeShadow = keyof typeof shadow;
735
+ type ThemeBreakpoint = keyof typeof breakpoints;
736
+ type ThemeTransition = keyof typeof transition;
737
+
738
+ type ThemeMode = 'light' | 'dark' | 'system';
739
+ interface ThemeContextValue {
740
+ /** Current resolved theme object */
741
+ theme: Theme;
742
+ /** Current theme mode setting */
743
+ mode: ThemeMode;
744
+ /** Whether dark mode is currently active */
745
+ isDark: boolean;
746
+ /** Update the theme mode */
747
+ setMode: (mode: ThemeMode) => void;
748
+ /** Toggle between light and dark modes */
749
+ toggleTheme: () => void;
750
+ }
751
+ /**
752
+ * Access the current theme context.
753
+ *
754
+ * Outside a ThemeProvider this resolves to the light theme with no-op mode
755
+ * setters, so components stay renderable on their own.
756
+ *
757
+ * @example
758
+ * ```tsx
759
+ * const { theme, isDark, toggleTheme } = useTheme();
760
+ *
761
+ * const buttonStyle = css({
762
+ * backgroundColor: theme.colors.primary.primary,
763
+ * color: theme.colors.neutral.white,
764
+ * });
765
+ * ```
766
+ */
767
+ declare function useTheme(): ThemeContextValue;
768
+ interface ThemeProviderProps {
769
+ /** Child components */
770
+ children: React__default.ReactNode;
771
+ /** Initial theme mode (default: 'system') */
772
+ defaultMode?: ThemeMode;
773
+ /** Storage key for persisting theme preference */
774
+ storageKey?: string;
775
+ /** Whether to add theme class to document root */
776
+ applyToRoot?: boolean;
777
+ }
778
+ /**
779
+ * Provides theme context to child components.
780
+ * Supports light, dark, and system-preference modes.
781
+ *
782
+ * @example
783
+ * ```tsx
784
+ * // Basic usage
785
+ * <ThemeProvider>
786
+ * <App />
787
+ * </ThemeProvider>
788
+ *
789
+ * // With initial dark mode
790
+ * <ThemeProvider defaultMode="dark">
791
+ * <App />
792
+ * </ThemeProvider>
793
+ *
794
+ * // With persistence
795
+ * <ThemeProvider storageKey="stm-theme-mode">
796
+ * <App />
797
+ * </ThemeProvider>
798
+ * ```
799
+ */
800
+ declare function ThemeProvider({ children, defaultMode, storageKey, applyToRoot, }: ThemeProviderProps): React__default.ReactElement;
801
+
802
+ /**
803
+ * CSS object type - extends React's CSSProperties.
804
+ * Simpler type to avoid complex union issues.
805
+ */
806
+ type CSSObject = CSSProperties & Record<string, unknown>;
807
+ type StyleFunction<P = object> = (props: P & {
808
+ theme: Theme;
809
+ }) => CSSObject;
810
+ /**
811
+ * Create a CSS object with type safety.
812
+ * Converts nested pseudo-selectors for inline style compatibility.
813
+ *
814
+ * @example
815
+ * ```tsx
816
+ * const buttonStyle = css({
817
+ * backgroundColor: theme.colors.primary.primary,
818
+ * padding: `${theme.spacing[2]} ${theme.spacing[4]}`,
819
+ * borderRadius: theme.radius.full,
820
+ * '&:hover': {
821
+ * backgroundColor: theme.colors.primary.primaryDark,
822
+ * },
823
+ * });
824
+ * ```
825
+ */
826
+ declare function css(styles: CSSObject): CSSObject;
827
+ /**
828
+ * Merge multiple CSS objects together.
829
+ * Later objects override earlier ones.
830
+ *
831
+ * @example
832
+ * ```tsx
833
+ * const combined = merge(baseStyle, variantStyle, sizeStyle);
834
+ * ```
835
+ */
836
+ declare function merge(...styles: (CSSObject | CSSProperties | Record<string, unknown> | undefined | null | false)[]): CSSObject;
837
+ /**
838
+ * Convert a CSSObject to inline styles.
839
+ * Strips out pseudo-selectors (they can't be inlined).
840
+ */
841
+ declare function toInlineStyle(styles: CSSObject): CSSProperties;
842
+ /**
843
+ * Create spacing value from theme tokens.
844
+ */
845
+ declare function space(value: keyof typeof spacing | number): string;
846
+ /**
847
+ * Create border-radius value from theme tokens.
848
+ */
849
+ declare function rounded(value: keyof typeof radius): string;
850
+ /**
851
+ * Create box-shadow value from theme tokens.
852
+ */
853
+ declare function boxShadow(value: keyof typeof shadow): string;
854
+ /**
855
+ * Create transition value from theme tokens.
856
+ */
857
+ declare function trans(value: keyof typeof transition): string;
858
+ /**
859
+ * Create font-weight value from theme tokens.
860
+ */
861
+ declare function weight(value: keyof typeof fontWeight): number;
862
+ /**
863
+ * Create font-size value from theme tokens.
864
+ */
865
+ declare function size(value: keyof typeof fontSize): string;
866
+ /**
867
+ * Create line-height value from theme tokens.
868
+ */
869
+ declare function leading(value: keyof typeof lineHeight): string | number;
870
+ /**
871
+ * Create font-family value from theme tokens.
872
+ */
873
+ declare function font(value: keyof typeof fontFamily): string;
874
+ /**
875
+ * Reset button styles.
876
+ */
877
+ declare const buttonReset: CSSObject;
878
+ /**
879
+ * Flex center alignment.
880
+ */
881
+ declare const flexCenter: CSSObject;
882
+ /**
883
+ * Flex row with gap.
884
+ */
885
+ declare function flexRow(gap?: keyof typeof spacing): CSSObject;
886
+ /**
887
+ * Flex column with gap.
888
+ */
889
+ declare function flexCol(gap?: keyof typeof spacing): CSSObject;
890
+ /**
891
+ * Absolute fill parent.
892
+ */
893
+ declare const absoluteFill: CSSObject;
894
+ /**
895
+ * Screen reader only (visually hidden but accessible).
896
+ */
897
+ declare const srOnly: CSSObject;
898
+ /**
899
+ * Truncate text with ellipsis.
900
+ */
901
+ declare const truncate: CSSObject;
902
+ /**
903
+ * Line clamp for multi-line truncation.
904
+ */
905
+ declare function lineClamp(lines: number): CSSObject;
906
+ /**
907
+ * Create a style factory that receives the theme.
908
+ * Use with useTheme() hook.
909
+ *
910
+ * @example
911
+ * ```tsx
912
+ * const useButtonStyles = styled((theme) => ({
913
+ * root: css({
914
+ * backgroundColor: theme.colors.primary.primary,
915
+ * color: theme.colors.neutral.white,
916
+ * }),
917
+ * disabled: css({
918
+ * opacity: 0.5,
919
+ * cursor: 'not-allowed',
920
+ * }),
921
+ * }));
922
+ *
923
+ * function Button() {
924
+ * const { theme } = useTheme();
925
+ * const styles = useButtonStyles(theme);
926
+ * return <button style={toInlineStyle(styles.root)}>Click</button>;
927
+ * }
928
+ * ```
929
+ */
930
+ declare function styled<T extends Record<string, CSSObject>>(factory: (theme: Theme) => T): (theme: Theme) => T;
931
+
932
+ type AlertVariant$1 = 'primary' | 'success' | 'warning' | 'error';
5
933
  interface AlertProps {
6
934
  /** Visual style variant */
7
- variant?: AlertVariant;
935
+ variant?: AlertVariant$1;
8
936
  /** Optional title for the alert */
9
937
  title?: string;
10
938
  /** Content of the alert */
@@ -18,6 +946,42 @@ interface AlertProps {
18
946
  }
19
947
  declare const Alert: React__default.FC<AlertProps>;
20
948
 
949
+ type AlertVariant = 'primary' | 'success' | 'warning' | 'error';
950
+
951
+ interface AlertStyledProps {
952
+ /** Visual style variant */
953
+ variant?: AlertVariant;
954
+ /** Optional title for the alert */
955
+ title?: string;
956
+ /** Content of the alert */
957
+ children: React__default.ReactNode;
958
+ /** Whether the alert can be dismissed */
959
+ dismissible?: boolean;
960
+ /** Callback when dismiss button is clicked */
961
+ onDismiss?: () => void;
962
+ /** Additional inline styles */
963
+ style?: React__default.CSSProperties;
964
+ /** Data test attribute for testing */
965
+ 'data-test'?: string;
966
+ }
967
+ /**
968
+ * Alert component for displaying important messages.
969
+ * Uses CSS-in-JS styling with theme support.
970
+ * Supports primary, success, warning, and error variants.
971
+ *
972
+ * @example
973
+ * ```tsx
974
+ * <AlertStyled variant="success" title="Success!">
975
+ * Your changes have been saved.
976
+ * </AlertStyled>
977
+ *
978
+ * <AlertStyled variant="error" dismissible onDismiss={() => setShow(false)}>
979
+ * An error occurred. Please try again.
980
+ * </AlertStyled>
981
+ * ```
982
+ */
983
+ declare const AlertStyled: React__default.FC<AlertStyledProps>;
984
+
21
985
  type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
22
986
  interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
23
987
  /** Image source URL */
@@ -29,7 +993,11 @@ interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
29
993
  /** Name (used to generate initials if not provided) */
30
994
  name?: string;
31
995
  /** Size of the avatar */
32
- size?: AvatarSize;
996
+ /**
997
+ * One of the named sizes, or an explicit pixel value for hosts pinned to a
998
+ * dimension the scale does not carry.
999
+ */
1000
+ size?: AvatarSize | number;
33
1001
  }
34
1002
  /**
35
1003
  * Avatar component for user profile images or initials.
@@ -56,9 +1024,34 @@ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
56
1024
  */
57
1025
  declare const Badge: React__default.FC<BadgeProps>;
58
1026
 
59
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
60
- type ButtonSize = 'sm' | 'md' | 'lg';
1027
+ type ButtonVariant$1 = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
1028
+ type ButtonSize$1 = 'sm' | 'md' | 'lg';
61
1029
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
1030
+ /** Visual style variant */
1031
+ variant?: ButtonVariant$1;
1032
+ /** Size of the button */
1033
+ size?: ButtonSize$1;
1034
+ /** Makes button take full width */
1035
+ fullWidth?: boolean;
1036
+ /** Shows loading spinner */
1037
+ loading?: boolean;
1038
+ /** Icon element to show before text */
1039
+ leftIcon?: React__default.ReactNode;
1040
+ /** Icon element to show after text */
1041
+ rightIcon?: React__default.ReactNode;
1042
+ /** Makes button square (equal width/height) */
1043
+ square?: boolean;
1044
+ }
1045
+ /**
1046
+ * Primary button component for user interactions.
1047
+ * Supports multiple variants, sizes, and states.
1048
+ */
1049
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
1050
+
1051
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'primary-light' | 'outline-primary' | 'outline-secondary' | 'outline-charcoal' | 'charcoal' | 'text';
1052
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
1053
+
1054
+ interface ButtonStyledProps extends ButtonHTMLAttributes<HTMLButtonElement> {
62
1055
  /** Visual style variant */
63
1056
  variant?: ButtonVariant;
64
1057
  /** Size of the button */
@@ -76,9 +1069,25 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
76
1069
  }
77
1070
  /**
78
1071
  * Primary button component for user interactions.
1072
+ * Uses CSS-in-JS styling with theme support.
79
1073
  * Supports multiple variants, sizes, and states.
1074
+ *
1075
+ * @example
1076
+ * ```tsx
1077
+ * <ButtonStyled variant="primary" size="md">
1078
+ * Click me
1079
+ * </ButtonStyled>
1080
+ *
1081
+ * <ButtonStyled variant="outline" leftIcon={<PlusIcon />}>
1082
+ * Add item
1083
+ * </ButtonStyled>
1084
+ *
1085
+ * <ButtonStyled loading>
1086
+ * Processing...
1087
+ * </ButtonStyled>
1088
+ * ```
80
1089
  */
81
- declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
1090
+ declare const ButtonStyled: React__default.ForwardRefExoticComponent<ButtonStyledProps & React__default.RefAttributes<HTMLButtonElement>>;
82
1091
 
83
1092
  interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
84
1093
  /** Label text for the checkbox */
@@ -335,17 +1344,17 @@ interface SpinnerProps {
335
1344
  declare const Spinner: React__default.FC<SpinnerProps>;
336
1345
 
337
1346
  type StatusBadgeVariant = 'ticketed' | 'itinerary' | 'not-ticketed' | 'submitted' | 'pending' | 'cancelled' | 'approved' | 'rejected' | 'in-review';
338
- interface StatusBadgeProps {
1347
+ interface StatusBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
339
1348
  /** The status variant to display */
340
1349
  status: StatusBadgeVariant;
341
1350
  /** Optional custom label (defaults to formatted status) */
342
1351
  label?: string;
343
- /** Additional CSS class */
344
- className?: string;
345
1352
  }
346
1353
  declare const StatusBadge: React__default.FC<StatusBadgeProps>;
347
1354
 
348
- type TagVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
1355
+ type TagVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'
1356
+ /** No fill or colour of its own — inherits, for grouping content inline. */
1357
+ | 'plain';
349
1358
  type TagSize = 'sm' | 'md' | 'lg';
350
1359
  interface TagProps {
351
1360
  /** Tag content */
@@ -365,7 +1374,7 @@ interface TagProps {
365
1374
  /** Inline styles */
366
1375
  style?: React__default.CSSProperties;
367
1376
  }
368
- declare const Tag: React__default.FC<TagProps>;
1377
+ declare const Tag: React__default.ForwardRefExoticComponent<TagProps & React__default.RefAttributes<HTMLSpanElement>>;
369
1378
 
370
1379
  type TimepickerSize = 'sm' | 'md' | 'lg';
371
1380
  interface TimepickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
@@ -420,6 +1429,21 @@ interface ToggleProps {
420
1429
  className?: string;
421
1430
  /** Accessible name for the toggle */
422
1431
  'aria-label'?: string;
1432
+ /**
1433
+ * Field name. Supplying it renders a hidden checkbox so the toggle submits
1434
+ * with a surrounding form; without it the toggle is presentational.
1435
+ */
1436
+ name?: string;
1437
+ /** Id applied to the hidden checkbox, for an external `<label htmlFor>`. */
1438
+ id?: string;
1439
+ /** Class applied to the label wrapper, when a `label` is given. */
1440
+ wrapperClassName?: string;
1441
+ /**
1442
+ * Indicator shown inside the track while disabled — usually a padlock, to
1443
+ * explain why the control cannot be moved. Takes a node so the component
1444
+ * stays independent of any icon set.
1445
+ */
1446
+ disabledIcon?: ReactNode;
423
1447
  }
424
1448
  declare const Toggle: React__default.FC<ToggleProps>;
425
1449
 
@@ -444,20 +1468,18 @@ interface TooltipProps {
444
1468
  declare const Tooltip: React__default.FC<TooltipProps>;
445
1469
 
446
1470
  type TravelType = 'A' | 'C' | 'H' | 'L' | 'R' | 'B' | 'U';
447
- interface TypeIconProps {
1471
+ interface TypeIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
448
1472
  /** Travel type code: A=Air, C=Car, H=Hotel, L=Limo, R=Rail, B=Bus, U=Unknown */
449
1473
  type: TravelType;
450
1474
  /** Size in pixels */
451
1475
  size?: number;
452
1476
  /** Show tooltip on hover */
453
1477
  showTooltip?: boolean;
454
- /** Additional CSS class */
455
- className?: string;
456
1478
  }
457
1479
  declare const TypeIcon: React__default.FC<TypeIconProps>;
458
1480
 
459
1481
  type VendorCode = 'DL' | 'AA' | 'UA' | 'WN' | 'B6' | 'AS' | 'F9' | 'NK' | 'G4' | 'HA' | string;
460
- interface TravelServiceIconProps {
1482
+ interface TravelServiceIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
461
1483
  /** Travel type: A=Air, C=Car, H=Hotel, L=Limo, R=Rail */
462
1484
  type: TravelType;
463
1485
  /** Vendor/airline code (e.g., DL, AA, UA) */
@@ -468,8 +1490,6 @@ interface TravelServiceIconProps {
468
1490
  size?: number;
469
1491
  /** Show multi-segment indicator */
470
1492
  multi?: boolean;
471
- /** Additional CSS class */
472
- className?: string;
473
1493
  }
474
1494
  declare const TravelServiceIcon: React__default.FC<TravelServiceIconProps>;
475
1495
 
@@ -511,8 +1531,14 @@ interface SegmentedSelectorProps {
511
1531
  ariaLabel?: string;
512
1532
  /** Stable hook used by Hub acceptance and Chromatic tests. */
513
1533
  dataTest?: string;
514
- }
515
- declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, dataTest, }: SegmentedSelectorProps) => React.JSX.Element;
1534
+ /** Class applied to every option button. */
1535
+ itemClassName?: string;
1536
+ /** Class applied to the selected option, on top of `itemClassName`. */
1537
+ activeItemClassName?: string;
1538
+ /** Which side of the label an option's icon sits on. Defaults to left. */
1539
+ iconPosition?: 'left' | 'right';
1540
+ }
1541
+ declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, dataTest, itemClassName, activeItemClassName, iconPosition, }: SegmentedSelectorProps) => React.JSX.Element;
516
1542
  type CalendarViewValue = 'calendar' | 'card' | 'list';
517
1543
  interface CalendarViewSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
518
1544
  value: CalendarViewValue;
@@ -526,6 +1552,67 @@ interface CalendarTypeSelectorProps extends Omit<SegmentedSelectorProps, 'option
526
1552
  }
527
1553
  declare const CalendarTypeSelector: ({ value, onChange, ...props }: CalendarTypeSelectorProps) => React.JSX.Element;
528
1554
 
1555
+ interface ContactCardProps {
1556
+ /** Person's name. Also seeds the avatar's initials. */
1557
+ name?: string;
1558
+ /** Role or job title, shown under the name. */
1559
+ title?: string;
1560
+ /** Phone number, rendered as a `tel:` link. */
1561
+ phone?: string;
1562
+ /** Email address, rendered as a `mailto:` link. */
1563
+ email?: string;
1564
+ /**
1565
+ * Replaces the plain name with your own control — a button opening a
1566
+ * profile, say. The name is still used for the avatar's initials.
1567
+ */
1568
+ action?: ReactNode;
1569
+ /** Whether to show the avatar. */
1570
+ showAvatar?: boolean;
1571
+ /** Additional CSS class */
1572
+ className?: string;
1573
+ }
1574
+ /**
1575
+ * A single person's contact details: avatar, name, title, and tappable phone
1576
+ * and email links.
1577
+ *
1578
+ * Renders nothing when there is neither a name nor an action, so callers can
1579
+ * hand it a partially filled record without guarding first.
1580
+ */
1581
+ declare const ContactCard: React__default.FC<ContactCardProps>;
1582
+
1583
+ type DetailListVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error';
1584
+ interface DetailListItem {
1585
+ /** Name of the field. Omitted for icon rows, which read as a single line. */
1586
+ label?: ReactNode;
1587
+ /** The value. A row with nothing to show is skipped. */
1588
+ description?: ReactNode;
1589
+ /** Leading icon. Supplying one makes this an icon row rather than a pair. */
1590
+ icon?: ReactNode;
1591
+ /** Tints the value as a status chip. */
1592
+ variant?: DetailListVariant;
1593
+ }
1594
+ interface DetailListProps {
1595
+ /** Rows to show. Items with no description are skipped. */
1596
+ items: DetailListItem[];
1597
+ /** Space between rows, and between an icon and its text, in pixels. */
1598
+ gap?: number;
1599
+ /** Additional CSS class */
1600
+ className?: string;
1601
+ }
1602
+ /**
1603
+ * A compact list of field/value pairs, as used down the side of a trip or
1604
+ * booking summary.
1605
+ *
1606
+ * Rows come in two shapes. A `label` and `description` render as a pair, the
1607
+ * value aligned right and optionally tinted as a status chip. An `icon` and
1608
+ * `description` render as one line, with rows lacking an icon still indented
1609
+ * so the text stays aligned.
1610
+ *
1611
+ * The whole list disappears when no item has a description, so callers can
1612
+ * pass a sparse record without checking whether anything survived.
1613
+ */
1614
+ declare const DetailList: React__default.FC<DetailListProps>;
1615
+
529
1616
  type DropdownAlignment = 'left' | 'center' | 'right';
530
1617
  interface DropdownProps {
531
1618
  /** Label for the dropdown trigger button */
@@ -540,6 +1627,16 @@ interface DropdownProps {
540
1627
  className?: string;
541
1628
  /** Whether the dropdown is disabled */
542
1629
  disabled?: boolean;
1630
+ /**
1631
+ * Render the trigger yourself, instead of the default labelled button.
1632
+ * Receives the open state and the handler that toggles the menu, so the
1633
+ * host can supply its own button with its own variant, icon and styling.
1634
+ */
1635
+ trigger?: (state: {
1636
+ isOpen: boolean;
1637
+ toggle: () => void;
1638
+ disabled: boolean;
1639
+ }) => React__default.ReactNode;
543
1640
  }
544
1641
  interface DropdownItemProps {
545
1642
  /** Item label */
@@ -583,6 +1680,87 @@ interface EmptyStateProps {
583
1680
  /** Placeholder shown when a list, table, or panel has nothing to display. */
584
1681
  declare const EmptyState: ({ title, description, icon, actionLabel, onAction, secondaryActionLabel, onSecondaryAction, size, children, className, }: EmptyStateProps) => React.JSX.Element;
585
1682
 
1683
+ interface FieldLayoutRenderProps {
1684
+ /** Id to put on the control, so the label points at it. */
1685
+ id: string;
1686
+ /** Value for the control's `aria-describedby`, or undefined when clean. */
1687
+ describedBy?: string;
1688
+ /** Whether an error message is showing. */
1689
+ hasError: boolean;
1690
+ }
1691
+ interface FieldLayoutProps {
1692
+ /** Renders the control. Receives the id and description wiring to apply. */
1693
+ children: (props: FieldLayoutRenderProps) => ReactNode;
1694
+ /** Field label. */
1695
+ label?: ReactNode;
1696
+ /** Whether the label sits above the control or beside it. */
1697
+ labelPosition?: 'top' | 'left';
1698
+ /** Hides the label without removing it from the layout's wiring. */
1699
+ showLabel?: boolean;
1700
+ /** Marks the field required, adding an asterisk to the label. */
1701
+ required?: boolean;
1702
+ /** Greys the field and hides the asterisk and icons. */
1703
+ disabled?: boolean;
1704
+ /** Explanatory text shown from an info icon beside the label. */
1705
+ tooltip?: string;
1706
+ /** Validation message shown beneath the control. */
1707
+ error?: string;
1708
+ /** Hint shown beneath the control, under any error. */
1709
+ note?: ReactNode;
1710
+ /** Decoration inside the leading edge of the control. */
1711
+ leftIcon?: ReactNode;
1712
+ /** Decoration inside the trailing edge of the control. */
1713
+ rightIcon?: ReactNode;
1714
+ /** Additional CSS class for the wrapper. */
1715
+ className?: string;
1716
+ }
1717
+ /**
1718
+ * The chrome around a form control: label, required marker, tooltip, the
1719
+ * icons that sit inside the field, and the error and hint beneath it.
1720
+ *
1721
+ * It owns none of the input's behaviour. The control is supplied as a render
1722
+ * prop and handed the generated id and `aria-describedby`, so any input —
1723
+ * native, third-party, or form-library bound — can sit inside it while keeping
1724
+ * the label and error correctly associated.
1725
+ */
1726
+ declare const FieldLayout: React__default.FC<FieldLayoutProps>;
1727
+
1728
+ /** Document types a travel workflow usually accepts. */
1729
+ declare const DOCUMENT_FILE_EXTENSIONS: string[];
1730
+ interface FileUploadButtonProps {
1731
+ /** Text on the button, and the accessible name of the file input. */
1732
+ label?: string;
1733
+ /** Comma-separated list of accepted extensions or MIME types. */
1734
+ accept?: string;
1735
+ /** Allow choosing more than one file. */
1736
+ multiple?: boolean;
1737
+ /** Disables the control and removes the file input entirely. */
1738
+ disabled?: boolean;
1739
+ /** Shows the button's spinner, e.g. while an upload is in flight. */
1740
+ loading?: boolean;
1741
+ /** Visual style of the button. */
1742
+ variant?: ButtonVariant;
1743
+ /** Size of the button. */
1744
+ size?: ButtonSize;
1745
+ /** Icon shown after the label. */
1746
+ icon?: ReactNode;
1747
+ /** Called with the change event when files are chosen. */
1748
+ onSelect?: (event: ChangeEvent<HTMLInputElement>) => void;
1749
+ /** Additional CSS class */
1750
+ className?: string;
1751
+ /** Extra attributes for the underlying file input. */
1752
+ inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'accept' | 'multiple' | 'onChange'>;
1753
+ }
1754
+ /**
1755
+ * A styled button that opens the file picker.
1756
+ *
1757
+ * The file input is the control: it sits transparently over the button and
1758
+ * carries the accessible name, so keyboard and screen-reader users get one
1759
+ * "choose file" control rather than a button and an input side by side. The
1760
+ * button underneath is decorative and hidden from assistive technology.
1761
+ */
1762
+ declare const FileUploadButton: React__default.FC<FileUploadButtonProps>;
1763
+
586
1764
  interface FilterOption {
587
1765
  value: string;
588
1766
  label: string;
@@ -681,6 +1859,39 @@ interface FormStackProps {
681
1859
  /** Standard vertical form-field rhythm used by Hub modal forms. */
682
1860
  declare const FormStack: ({ children, gap, className }: FormStackProps) => React.JSX.Element;
683
1861
 
1862
+ /** A side of the tile, used to describe how it joins its neighbours. */
1863
+ type InfoTileEdge = 'left' | 'right' | 'top' | 'bottom';
1864
+ interface InfoTileProps {
1865
+ /** Figure the tile exists to show, e.g. a count or a date. */
1866
+ value: ReactNode;
1867
+ /** Short caption naming what the value measures. */
1868
+ label: ReactNode;
1869
+ /** Optional leading icon, rendered in its own bordered cell. */
1870
+ icon?: ReactNode;
1871
+ /**
1872
+ * Edges whose corners should be square rather than rounded. Use when the
1873
+ * tile sits against another so the pair reads as one control.
1874
+ */
1875
+ square?: InfoTileEdge[];
1876
+ /**
1877
+ * Edges that should not draw a border. Give this to the second tile of a
1878
+ * pair so the two share a single divider instead of stacking two.
1879
+ */
1880
+ borderless?: InfoTileEdge[];
1881
+ /** Additional CSS class */
1882
+ className?: string;
1883
+ /** Inline style overrides, merged after the computed tile styles. */
1884
+ style?: CSSProperties;
1885
+ }
1886
+ /**
1887
+ * Compact statistic tile pairing a figure with a caption and an optional icon.
1888
+ *
1889
+ * Tiles are designed to butt together into a strip — horizontally on narrow
1890
+ * screens, vertically on wide ones — by squaring the touching corners and
1891
+ * dropping the duplicated border.
1892
+ */
1893
+ declare const InfoTile: React__default.FC<InfoTileProps>;
1894
+
684
1895
  type ManifestView = 'passengers' | 'equipment';
685
1896
  interface ManifestViewToggleProps {
686
1897
  view: ManifestView;
@@ -692,6 +1903,64 @@ interface ManifestViewToggleProps {
692
1903
  }
693
1904
  declare const ManifestViewToggle: ({ view, onView, paxCount, eqCount, locked, className, }: ManifestViewToggleProps) => React.JSX.Element;
694
1905
 
1906
+ /** A user option that can be searched for and selected. */
1907
+ interface MultiUserSearchOption {
1908
+ /** Unique identifier for the user. */
1909
+ id: string | number;
1910
+ /** Display name. */
1911
+ name: string;
1912
+ /** Email address. */
1913
+ email: string;
1914
+ /** Optional job title or role. */
1915
+ title?: string;
1916
+ /** Whether this option is disabled. */
1917
+ disabled?: boolean;
1918
+ /** Reason the option is disabled, shown as tooltip. */
1919
+ disabledReason?: string;
1920
+ }
1921
+ interface MultiUserSearchProps {
1922
+ /** Label for the search input. */
1923
+ label?: string;
1924
+ /** Placeholder text. */
1925
+ placeholder?: string;
1926
+ /** Options to display when search matches or is empty. */
1927
+ options: MultiUserSearchOption[];
1928
+ /** Currently selected user IDs. */
1929
+ selectedIds: (string | number)[];
1930
+ /** Called when user types in the search input. Debounce in the host if needed. */
1931
+ onSearch?: (query: string) => void;
1932
+ /** Called when selection changes. */
1933
+ onSelectionChange: (ids: (string | number)[]) => void;
1934
+ /** Whether the host is loading search results. */
1935
+ loading?: boolean;
1936
+ /** Whether the component is disabled. */
1937
+ disabled?: boolean;
1938
+ /** Minimum characters before triggering search callback. */
1939
+ minSearchLength?: number;
1940
+ /** Helper text shown below the input. */
1941
+ helperText?: string;
1942
+ /** Error message to display. */
1943
+ error?: string;
1944
+ /** Additional CSS class. */
1945
+ className?: string;
1946
+ /** Test ID for automation. */
1947
+ 'data-test'?: string;
1948
+ }
1949
+ /**
1950
+ * Multi-select user search with typeahead dropdown.
1951
+ *
1952
+ * Features:
1953
+ * - Single search input that populates a dropdown of matching users
1954
+ * - Multi-select via checkboxes or clicking options
1955
+ * - Selected users shown as dismissible badges above the input
1956
+ * - Keyboard navigation (arrow keys, enter, escape)
1957
+ * - Loading state while searching
1958
+ */
1959
+ declare const MultiUserSearch: {
1960
+ ({ label, placeholder, options, selectedIds, onSearch, onSelectionChange, loading, disabled, minSearchLength, helperText, error, className, "data-test": dataTest, }: MultiUserSearchProps): React__default.JSX.Element;
1961
+ displayName: string;
1962
+ };
1963
+
695
1964
  type NavItemVariant = 'default' | 'pill';
696
1965
  type NavItemSize = 'sm' | 'md' | 'lg';
697
1966
  interface NavItemProps {
@@ -726,6 +1995,31 @@ interface NavItemProps {
726
1995
  }
727
1996
  declare const NavItem: React__default.FC<NavItemProps>;
728
1997
 
1998
+ interface PageHeaderProps {
1999
+ /** The page's heading. */
2000
+ title?: ReactNode;
2001
+ /** Smaller line above the title, naming the section the page sits in. */
2002
+ pretitle?: ReactNode;
2003
+ /** Content directly beneath the title — tabs, a summary line, filters. */
2004
+ after?: ReactNode;
2005
+ /**
2006
+ * Slot for a back control, rendered to the left of the title. Takes a node
2007
+ * so the host supplies its own router link and icon, keeping this component
2008
+ * independent of any router.
2009
+ */
2010
+ back?: ReactNode;
2011
+ /** Additional CSS class */
2012
+ className?: string;
2013
+ }
2014
+ /**
2015
+ * Standard page heading: an optional back control, a pretitle, the title, and
2016
+ * a slot beneath for anything that belongs with it.
2017
+ *
2018
+ * The header keeps its height while `title` is empty and fades in once one
2019
+ * arrives, so pages do not jump as their data loads.
2020
+ */
2021
+ declare const PageHeader: React__default.FC<PageHeaderProps>;
2022
+
729
2023
  /** A rendered slot in the page list: either a page number or a truncation gap. */
730
2024
  type PaginationItem = number | 'ellipsis';
731
2025
  interface PaginationProps {
@@ -791,6 +2085,11 @@ interface ProgressCircleProps {
791
2085
  showLabel?: boolean;
792
2086
  /** Additional CSS class */
793
2087
  className?: string;
2088
+ /**
2089
+ * Explicit diameter in pixels, for indicators smaller or larger than the
2090
+ * named ramp. The stroke scales with it.
2091
+ */
2092
+ diameter?: number;
794
2093
  }
795
2094
  declare const ProgressBar: React__default.FC<ProgressBarProps>;
796
2095
  declare const ProgressCircle: React__default.FC<ProgressCircleProps>;
@@ -992,6 +2291,8 @@ interface ServiceToggleListProps {
992
2291
  onClick?: (key: string) => void;
993
2292
  /** Additional CSS class */
994
2293
  className?: string;
2294
+ /** Disable every service toggle */
2295
+ disabled?: boolean;
995
2296
  }
996
2297
  /**
997
2298
  * ServiceToggle component for a single service item.
@@ -1018,6 +2319,25 @@ interface SupplierTypeToggleProps {
1018
2319
  }
1019
2320
  declare const SupplierTypeToggle: ({ value, defaultValue, onChange, disabled, className, }: SupplierTypeToggleProps) => React.JSX.Element;
1020
2321
 
2322
+ interface TeamCalendarHeaderProps {
2323
+ /** Short team abbreviation, e.g. "MBB". Always shown. */
2324
+ teamCode: string;
2325
+ /** Full team name, shown alongside the code once there is room for it. */
2326
+ teamFullName?: string;
2327
+ /** Content beneath the identity — trip counts, a next-trip date, actions. */
2328
+ children?: ReactNode;
2329
+ /** Additional CSS class */
2330
+ className?: string;
2331
+ }
2332
+ /**
2333
+ * The heading of a team's column in the travel calendar: the team's code, its
2334
+ * full name where space allows, and whatever summary belongs underneath.
2335
+ *
2336
+ * It sticks to the top of its column so the team stays identifiable while the
2337
+ * schedule scrolls.
2338
+ */
2339
+ declare const TeamCalendarHeader: React__default.FC<TeamCalendarHeaderProps>;
2340
+
1021
2341
  interface TeamHeaderProps {
1022
2342
  /** Fully composed title. Overrides teamCode/teamName when supplied. */
1023
2343
  title?: ReactNode;
@@ -1595,7 +2915,12 @@ interface DrawerProps {
1595
2915
  /** Position of the drawer */
1596
2916
  position?: DrawerPosition;
1597
2917
  /** Size of the drawer */
1598
- size?: DrawerSize;
2918
+ /**
2919
+ * One of the named sizes, or an explicit CSS length (e.g. '300px', '50%')
2920
+ * for panels the ramp does not carry. The length applies to width for a
2921
+ * left/right drawer and to height for top/bottom.
2922
+ */
2923
+ size?: DrawerSize | (string & {});
1599
2924
  /** Drawer content */
1600
2925
  children: React__default.ReactNode;
1601
2926
  /** Whether clicking backdrop closes drawer */
@@ -1653,6 +2978,8 @@ interface TravelDueDateItem {
1653
2978
  tripId: string;
1654
2979
  tripName: string;
1655
2980
  masterTripGUID?: string;
2981
+ /** Set by the API when the due date has passed; used by `overdueOnly`. */
2982
+ pastdue?: boolean;
1656
2983
  }
1657
2984
  type GroupedTravelDueDates = Record<string, TravelDueDateItem[]>;
1658
2985
  interface DueDatesDrawerProps {
@@ -1660,14 +2987,110 @@ interface DueDatesDrawerProps {
1660
2987
  dueDates: GroupedTravelDueDates;
1661
2988
  selectedDate?: string | null;
1662
2989
  selectedTrip?: string | null;
2990
+ /**
2991
+ * NG-702/NG-811: opened via the Overdue Actions card — only past-due,
2992
+ * incomplete items count toward that card's number, so the panel must match
2993
+ * rather than showing every due date.
2994
+ */
2995
+ overdueOnly?: boolean;
1663
2996
  onClose: () => void;
1664
2997
  onToggle?: (item: TravelDueDateItem) => void;
1665
2998
  onTaskClick?: (masterTripGUID: string) => void;
1666
2999
  className?: string;
1667
3000
  }
1668
3001
  declare const isTravelDueDateCompleted: (item: Pick<TravelDueDateItem, "status" | "completeddatetime">) => boolean;
3002
+ declare const isTravelDueDateOverdue: (item: Pick<TravelDueDateItem, "completeddatetime" | "pastdue">) => boolean;
1669
3003
  /** Hub's searchable, status-aware due-dates drawer. */
1670
- declare const DueDatesDrawer: ({ isOpen, dueDates, selectedDate, selectedTrip, onClose, onToggle, onTaskClick, className }: DueDatesDrawerProps) => React.JSX.Element;
3004
+ declare const DueDatesDrawer: ({ isOpen, dueDates, selectedDate, selectedTrip, overdueOnly, onClose, onToggle, onTaskClick, className }: DueDatesDrawerProps) => React.JSX.Element;
3005
+
3006
+ /** A row is any record; columns address it by key. */
3007
+ type GridRow = Record<string, unknown>;
3008
+ interface GridCellRenderProps<R> {
3009
+ /** The whole row, for renderers that need more than one field. */
3010
+ row: R;
3011
+ /** Position in the sorted data, for numbering or alternating output. */
3012
+ rowIndex: number;
3013
+ /** The column's key. */
3014
+ name?: string;
3015
+ }
3016
+ interface GridColumn<R = GridRow> {
3017
+ /** Key of the field this column shows. */
3018
+ name?: string;
3019
+ /** Column heading. */
3020
+ label?: ReactNode;
3021
+ /** Renders the heading from the column key, for headings that need state. */
3022
+ labelAs?: (props: {
3023
+ name?: string;
3024
+ }) => ReactNode;
3025
+ /** Icon shown before the heading. */
3026
+ icon?: ReactNode;
3027
+ /** Renders the cell instead of printing the field. */
3028
+ as?: (props: GridCellRenderProps<R>) => ReactNode;
3029
+ /** Formats the field for display. Return falsy to show an en dash. */
3030
+ format?: (value: never, row: R) => ReactNode;
3031
+ /** Whether the column can be sorted by clicking its heading. */
3032
+ sortable?: boolean;
3033
+ /** Orders two rows. Defaults to comparing the field directly. */
3034
+ sortComparator?: (a: R, b: R) => number;
3035
+ /** Class applied to the column's cells. */
3036
+ className?: string;
3037
+ /** Class applied to the column's heading. */
3038
+ labelClassName?: string;
3039
+ }
3040
+ interface GridTotalRow {
3041
+ /** Label shown in the first column of the total row. */
3042
+ label: string;
3043
+ /** Column whose values are summed. */
3044
+ columnName: string;
3045
+ }
3046
+ interface GridTableProps<R = GridRow> {
3047
+ /** Column definitions, left to right. */
3048
+ columns: GridColumn<R>[];
3049
+ /** Rows to show. */
3050
+ data: R[];
3051
+ /**
3052
+ * CSS grid template for the columns. Defaults to equal fractions, one per
3053
+ * column.
3054
+ */
3055
+ gridTemplateColumns?: string;
3056
+ /** Field whose value keys each row. Falls back to `id`, then the index. */
3057
+ rowKey?: string;
3058
+ /** Content above and below the heading row. */
3059
+ header?: {
3060
+ above?: ReactNode;
3061
+ below?: ReactNode;
3062
+ };
3063
+ /** Column sorted on first render. */
3064
+ initialSortColumn?: string;
3065
+ /** Whether that initial sort is ascending. */
3066
+ initialSortAscending?: boolean;
3067
+ /** Tie-breaker applied when the chosen column compares equal. */
3068
+ secondarySortComparator?: (a: R, b: R) => number;
3069
+ /** Draws a rule between rows. */
3070
+ bordered?: boolean;
3071
+ /** Shown in place of the rows when there are none. */
3072
+ emptyMessage?: ReactNode;
3073
+ /** Sums a column into a sticky footer row. */
3074
+ totalRow?: GridTotalRow;
3075
+ /** Additional CSS class */
3076
+ className?: string;
3077
+ }
3078
+ /**
3079
+ * A data table laid out with CSS grid rather than table markup, so a row can
3080
+ * be an arbitrary composition rather than a fixed set of cells.
3081
+ *
3082
+ * It reflows on narrow screens: the heading row is hidden and each row becomes
3083
+ * a card whose cells carry their own labels, which keeps wide datasets legible
3084
+ * on a phone.
3085
+ *
3086
+ * Sorting is held internally — click a sortable heading to sort by it, click
3087
+ * again to reverse — and an optional total row sums a column into a sticky
3088
+ * footer.
3089
+ */
3090
+ declare function GridTable<R = GridRow>({ columns, data, gridTemplateColumns, rowKey, header, initialSortColumn, initialSortAscending, secondarySortComparator, bordered, emptyMessage, totalRow, className, }: GridTableProps<R>): React__default.JSX.Element;
3091
+ declare namespace GridTable {
3092
+ var displayName: string;
3093
+ }
1671
3094
 
1672
3095
  interface HubNavigationItem {
1673
3096
  key: string;
@@ -1723,13 +3146,16 @@ interface HubAppShellProps {
1723
3146
  loading?: boolean;
1724
3147
  contentDisabled?: boolean;
1725
3148
  showContent?: boolean;
3149
+ /** Logo for expanded sidebar state */
1726
3150
  logo?: ReactNode;
3151
+ /** Logo for collapsed sidebar state (icon only, no text) */
3152
+ collapsedLogo?: ReactNode;
1727
3153
  defaultExpanded?: boolean;
1728
3154
  betaLabel?: string;
1729
3155
  className?: string;
1730
3156
  }
1731
3157
  /** 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;
3158
+ 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
3159
 
1734
3160
  /**
1735
3161
  * Parses an `YYYY-MM-DD` itinerary date into a *local* calendar date.
@@ -2327,6 +3753,8 @@ interface RequestSummaryProps {
2327
3753
  className?: string;
2328
3754
  /** Title for the summary panel */
2329
3755
  title?: string;
3756
+ /** Stable selector for integration and browser tests */
3757
+ dataTest?: string;
2330
3758
  }
2331
3759
  /**
2332
3760
  * SummarySection component for a group of related summary items.
@@ -2357,9 +3785,9 @@ interface RequestFormHeaderProps {
2357
3785
  }
2358
3786
  interface RequestFormFooterProps {
2359
3787
  /** Callback for cancel/previous button */
2360
- onPrevious: () => void;
3788
+ onPrevious?: () => void;
2361
3789
  /** Callback for next/submit button */
2362
- onNext: () => void;
3790
+ onNext?: () => void;
2363
3791
  /** Whether on first page */
2364
3792
  isFirstPage?: boolean;
2365
3793
  /** Whether on last page */
@@ -2370,6 +3798,10 @@ interface RequestFormFooterProps {
2370
3798
  previousText?: string;
2371
3799
  /** Custom next button text */
2372
3800
  nextText?: string;
3801
+ /** Test hook for the previous button */
3802
+ previousButtonDataTest?: string;
3803
+ /** Test hook for the next button */
3804
+ nextButtonDataTest?: string;
2373
3805
  /** Additional CSS class */
2374
3806
  className?: string;
2375
3807
  }
@@ -3677,6 +5109,12 @@ interface ChartersAccessManagementPageProps {
3677
5109
  /**
3678
5110
  * Account-scoped access management for the STM Charters workspace.
3679
5111
  *
5112
+ * Features:
5113
+ * - Single search input with dropdown for finding and selecting multiple users
5114
+ * - Selected users shown as dismissible badges
5115
+ * - Role assignment before adding
5116
+ * - Bulk add support
5117
+ *
3680
5118
  * The page deliberately owns only interaction state. Memberships, authorization guards,
3681
5119
  * persistence, routing, and account/global-admin recovery remain controlled by the host.
3682
5120
  */
@@ -3699,6 +5137,8 @@ interface CharterSectionCard {
3699
5137
  countLabel?: string;
3700
5138
  /** Optional icon override. Unknown keys otherwise use the standard plane icon. */
3701
5139
  icon?: ReactNode;
5140
+ /** Whether the count is still loading. When true, shows a spinner instead of count. */
5141
+ loading?: boolean;
3702
5142
  }
3703
5143
  /** A named STM contact for one of the two bid programs. */
3704
5144
  interface CharterContact {
@@ -5058,5 +6498,5 @@ declare const TripDetailPage: {
5058
6498
  displayName: string;
5059
6499
  };
5060
6500
 
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 };
6501
+ 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, 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, DOCUMENT_FILE_EXTENSIONS, DashboardIcon, DashboardPage, Datepicker, DetailList, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon, EmptyState, EyeIcon, FeatureFlagManagementPage, FieldLayout, FileUploadButton, FilterChip, FilterIcon, FormField, FormRow, FormSection, FormStack, 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, 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, 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 };
6502
+ 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, 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, 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, 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, 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, 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 };