@shortstravelmgmt/component-lib 0.2.11 → 0.2.12-canary.30.g1e89a1a

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
@@ -9,15 +9,15 @@ import React__default, { CSSProperties, HTMLAttributes, ButtonHTMLAttributes, In
9
9
  * Components should use these tokens via the useTheme hook or css utility.
10
10
  */
11
11
  declare const brandColors: {
12
- readonly blue: "#15538C";
13
- readonly blueDeep: "#0E3F6E";
14
- readonly blueTint: "#E5EDF4";
12
+ readonly blue: "#19345F";
13
+ readonly blueDeep: "#0C1E3E";
14
+ readonly blueTint: "#E4F1F8";
15
15
  };
16
16
  declare const primaryColors: {
17
- readonly primary: "#0A53EF";
18
- readonly primaryDark: "#1A43D1";
19
- readonly primaryLight: "#E6ECFB";
20
- readonly primaryLightHover: "#DAE3F8";
17
+ readonly primary: "#19345F";
18
+ readonly primaryDark: "#0C1E3E";
19
+ readonly primaryLight: "#E4F1F8";
20
+ readonly primaryLightHover: "#D3E4F0";
21
21
  };
22
22
  declare const neutralColors: {
23
23
  readonly basecolor: "#F5F5F5";
@@ -44,8 +44,20 @@ declare const statusColors: {
44
44
  readonly warning: "#9F5500";
45
45
  readonly gold: "#FFC179";
46
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";
47
54
  };
48
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)";
49
61
  readonly mint: "#37C3A4";
50
62
  readonly forest: "#003E1B";
51
63
  readonly forestLight: "#E2F0EC";
@@ -106,13 +118,13 @@ declare const vendorColors: {
106
118
  };
107
119
  };
108
120
  declare const gradients: {
109
- readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
121
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
110
122
  };
111
123
  declare const alertTokens: {
112
124
  readonly primary: {
113
- readonly fg: "#0A53EF";
114
- readonly bg: "#E6ECFB";
115
- readonly border: "#0A53EF";
125
+ readonly fg: "#19345F";
126
+ readonly bg: "#E4F1F8";
127
+ readonly border: "#19345F";
116
128
  };
117
129
  readonly success: {
118
130
  readonly fg: "#138660";
@@ -137,8 +149,8 @@ declare const semanticColors: {
137
149
  readonly 3: "#5C5C5C";
138
150
  readonly 4: "#787878";
139
151
  readonly disabled: "#C7C7CA";
140
- readonly link: "#0A53EF";
141
- readonly linkHover: "#1A43D1";
152
+ readonly link: "#19345F";
153
+ readonly linkHover: "#0C1E3E";
142
154
  };
143
155
  readonly bg: {
144
156
  readonly page: "#F5F5F5";
@@ -148,8 +160,9 @@ declare const semanticColors: {
148
160
  };
149
161
  };
150
162
  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";
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";
153
166
  readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
154
167
  };
155
168
  declare const fontSize: {
@@ -225,15 +238,15 @@ declare const transition: {
225
238
  declare const lightTheme: {
226
239
  readonly colors: {
227
240
  readonly brand: {
228
- readonly blue: "#15538C";
229
- readonly blueDeep: "#0E3F6E";
230
- readonly blueTint: "#E5EDF4";
241
+ readonly blue: "#19345F";
242
+ readonly blueDeep: "#0C1E3E";
243
+ readonly blueTint: "#E4F1F8";
231
244
  };
232
245
  readonly primary: {
233
- readonly primary: "#0A53EF";
234
- readonly primaryDark: "#1A43D1";
235
- readonly primaryLight: "#E6ECFB";
236
- readonly primaryLightHover: "#DAE3F8";
246
+ readonly primary: "#19345F";
247
+ readonly primaryDark: "#0C1E3E";
248
+ readonly primaryLight: "#E4F1F8";
249
+ readonly primaryLightHover: "#D3E4F0";
237
250
  };
238
251
  readonly neutral: {
239
252
  readonly basecolor: "#F5F5F5";
@@ -260,8 +273,20 @@ declare const lightTheme: {
260
273
  readonly warning: "#9F5500";
261
274
  readonly gold: "#FFC179";
262
275
  readonly error: "#940000";
276
+ readonly successInk: "#0F7350";
277
+ readonly warningInk: "#8F4C00";
278
+ readonly successAccent: "#2E9E6B";
279
+ readonly warningAccent: "#E8A13A";
280
+ readonly dangerAccent: "#D7503A";
281
+ readonly dangerAccentStrong: "#C0402C";
282
+ readonly dangerAccentStrongHover: "#A33524";
263
283
  };
264
284
  readonly accent: {
285
+ readonly teal: "#00BCD0";
286
+ readonly tealHover: "#00AEEF";
287
+ readonly tealContrast: "#0C1E3E";
288
+ readonly tealInk: "#009AAB";
289
+ readonly tealGlow: "rgba(0, 188, 208, 0.35)";
265
290
  readonly mint: "#37C3A4";
266
291
  readonly forest: "#003E1B";
267
292
  readonly forestLight: "#E2F0EC";
@@ -323,9 +348,9 @@ declare const lightTheme: {
323
348
  };
324
349
  readonly alert: {
325
350
  readonly primary: {
326
- readonly fg: "#0A53EF";
327
- readonly bg: "#E6ECFB";
328
- readonly border: "#0A53EF";
351
+ readonly fg: "#19345F";
352
+ readonly bg: "#E4F1F8";
353
+ readonly border: "#19345F";
329
354
  };
330
355
  readonly success: {
331
356
  readonly fg: "#138660";
@@ -350,8 +375,8 @@ declare const lightTheme: {
350
375
  readonly 3: "#5C5C5C";
351
376
  readonly 4: "#787878";
352
377
  readonly disabled: "#C7C7CA";
353
- readonly link: "#0A53EF";
354
- readonly linkHover: "#1A43D1";
378
+ readonly link: "#19345F";
379
+ readonly linkHover: "#0C1E3E";
355
380
  };
356
381
  readonly bg: {
357
382
  readonly page: "#F5F5F5";
@@ -363,8 +388,9 @@ declare const lightTheme: {
363
388
  };
364
389
  readonly typography: {
365
390
  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";
391
+ readonly base: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif";
392
+ readonly display: "'Montserrat', system-ui, -apple-system, sans-serif";
393
+ readonly label: "'Roboto Condensed', system-ui, -apple-system, sans-serif";
368
394
  readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
369
395
  };
370
396
  readonly fontSize: {
@@ -439,11 +465,29 @@ declare const lightTheme: {
439
465
  readonly slow: "300ms ease";
440
466
  };
441
467
  readonly gradients: {
442
- readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
468
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
443
469
  };
444
470
  };
445
471
  declare const darkTheme: {
446
472
  readonly colors: {
473
+ readonly primary: {
474
+ readonly primary: "#0A53EF";
475
+ readonly primaryDark: "#1A43D1";
476
+ readonly primaryLight: "#E6ECFB";
477
+ readonly primaryLightHover: "#DAE3F8";
478
+ };
479
+ readonly accent: {
480
+ readonly tealInk: "#00BCD0";
481
+ readonly teal: "#00BCD0";
482
+ readonly tealHover: "#00AEEF";
483
+ readonly tealContrast: "#0C1E3E";
484
+ readonly tealGlow: "rgba(0, 188, 208, 0.35)";
485
+ readonly mint: "#37C3A4";
486
+ readonly forest: "#003E1B";
487
+ readonly forestLight: "#E2F0EC";
488
+ readonly tangerine: "#FE7C35";
489
+ readonly tangerineLight: "#FFE2C1";
490
+ };
447
491
  readonly neutral: {
448
492
  readonly basecolor: "#1a1a1a";
449
493
  readonly subtle: "#2a2a2a";
@@ -482,28 +526,22 @@ declare const darkTheme: {
482
526
  };
483
527
  };
484
528
  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";
529
+ readonly blue: "#19345F";
530
+ readonly blueDeep: "#0C1E3E";
531
+ readonly blueTint: "#E4F1F8";
494
532
  };
495
533
  readonly status: {
496
534
  readonly success: "#138660";
497
535
  readonly warning: "#9F5500";
498
536
  readonly gold: "#FFC179";
499
537
  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";
538
+ readonly successInk: "#0F7350";
539
+ readonly warningInk: "#8F4C00";
540
+ readonly successAccent: "#2E9E6B";
541
+ readonly warningAccent: "#E8A13A";
542
+ readonly dangerAccent: "#D7503A";
543
+ readonly dangerAccentStrong: "#C0402C";
544
+ readonly dangerAccentStrongHover: "#A33524";
507
545
  };
508
546
  readonly team: {
509
547
  readonly men: "#8AC6D9";
@@ -560,9 +598,9 @@ declare const darkTheme: {
560
598
  };
561
599
  readonly alert: {
562
600
  readonly primary: {
563
- readonly fg: "#0A53EF";
564
- readonly bg: "#E6ECFB";
565
- readonly border: "#0A53EF";
601
+ readonly fg: "#19345F";
602
+ readonly bg: "#E4F1F8";
603
+ readonly border: "#19345F";
566
604
  };
567
605
  readonly success: {
568
606
  readonly fg: "#138660";
@@ -583,8 +621,9 @@ declare const darkTheme: {
583
621
  };
584
622
  readonly typography: {
585
623
  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";
624
+ readonly base: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif";
625
+ readonly display: "'Montserrat', system-ui, -apple-system, sans-serif";
626
+ readonly label: "'Roboto Condensed', system-ui, -apple-system, sans-serif";
588
627
  readonly mono: "'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace";
589
628
  };
590
629
  readonly fontSize: {
@@ -659,7 +698,7 @@ declare const darkTheme: {
659
698
  readonly slow: "300ms ease";
660
699
  };
661
700
  readonly gradients: {
662
- readonly avatar: "linear-gradient(135deg, #4F7FFF 0%, #4066E8 100%)";
701
+ readonly avatar: "linear-gradient(135deg, #19345F 0%, #00BCD0 100%)";
663
702
  };
664
703
  };
665
704
  /**
@@ -669,7 +708,12 @@ declare const darkTheme: {
669
708
  interface Theme {
670
709
  colors: {
671
710
  brand: typeof brandColors;
672
- primary: typeof primaryColors;
711
+ primary: {
712
+ primary: string;
713
+ primaryDark: string;
714
+ primaryLight: string;
715
+ primaryLightHover: string;
716
+ };
673
717
  neutral: {
674
718
  basecolor: string;
675
719
  subtle: string;
@@ -691,7 +735,9 @@ interface Theme {
691
735
  error: string;
692
736
  };
693
737
  status: typeof statusColors;
694
- accent: typeof accentColors;
738
+ accent: {
739
+ [K in keyof typeof accentColors]: string;
740
+ };
695
741
  team: typeof teamColors;
696
742
  travel: typeof travelColors;
697
743
  vendor: typeof vendorColors;
@@ -944,6 +990,10 @@ interface AlertProps {
944
990
  /** Additional CSS class */
945
991
  className?: string;
946
992
  }
993
+ /**
994
+ * Inline message calling out status or guidance in place, without interrupting the user.
995
+ * Use a modal instead when the user has to act before continuing.
996
+ */
947
997
  declare const Alert: React__default.FC<AlertProps>;
948
998
 
949
999
  type AlertVariant = 'primary' | 'success' | 'warning' | 'error';
@@ -1007,6 +1057,10 @@ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
1007
1057
  /** Maximum number of avatars to show before +N */
1008
1058
  max?: number;
1009
1059
  }
1060
+ /**
1061
+ * Row of overlapping avatars for a team or traveler party.
1062
+ * Collapses everything past `max` into a +N counter so the row keeps a fixed footprint.
1063
+ */
1010
1064
  declare const AvatarGroup: React__default.FC<AvatarGroupProps>;
1011
1065
 
1012
1066
  type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
@@ -1128,61 +1182,124 @@ interface DatepickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 't
1128
1182
  */
1129
1183
  declare const Datepicker: React.ForwardRefExoticComponent<DatepickerProps & React.RefAttributes<HTMLInputElement>>;
1130
1184
 
1185
+ /**
1186
+ * The library's icon set.
1187
+ *
1188
+ * Every icon is a 24x24 stroked SVG that inherits its color from
1189
+ * `currentColor` and scales through the `size` prop, so an icon picks up the
1190
+ * text color of whatever it sits in without extra styling.
1191
+ */
1192
+
1131
1193
  interface IconProps extends SVGProps<SVGSVGElement> {
1132
1194
  /** Icon size in pixels */
1133
1195
  size?: number;
1134
1196
  /** Icon color (defaults to currentColor) */
1135
1197
  color?: string;
1136
1198
  }
1199
+ /** Air segment (travel type `A`). */
1137
1200
  declare const PlaneIcon: React__default.FC<IconProps>;
1201
+ /** Rental car segment (travel type `C`). */
1138
1202
  declare const CarIcon: React__default.FC<IconProps>;
1203
+ /** Hotel segment (travel type `H`). */
1139
1204
  declare const HotelIcon: React__default.FC<IconProps>;
1205
+ /** Limo or black car segment (travel type `L`). */
1140
1206
  declare const LimoIcon: React__default.FC<IconProps>;
1207
+ /** Rail segment (travel type `R`). */
1141
1208
  declare const RailIcon: React__default.FC<IconProps>;
1209
+ /** Motorcoach segment (travel type `B`), including team charters. */
1142
1210
  declare const BusIcon: React__default.FC<IconProps>;
1211
+ /** Magnifying glass, for search inputs and filter triggers. */
1143
1212
  declare const SearchIcon: React__default.FC<IconProps>;
1213
+ /** Downward chevron, for expanding a section or opening a dropdown. */
1144
1214
  declare const ChevronDownIcon: React__default.FC<IconProps>;
1215
+ /** Upward chevron, for collapsing an expanded section. */
1145
1216
  declare const ChevronUpIcon: React__default.FC<IconProps>;
1217
+ /** Rightward chevron, for drill-in navigation and breadcrumbs. */
1146
1218
  declare const ChevronRightIcon: React__default.FC<IconProps>;
1219
+ /** Leftward chevron, for back navigation and carousels. */
1147
1220
  declare const ChevronLeftIcon: React__default.FC<IconProps>;
1221
+ /** Outbound arrow, for departing legs and external links. */
1148
1222
  declare const ArrowUpRightIcon: React__default.FC<IconProps>;
1223
+ /** Inbound arrow, for returning legs. */
1149
1224
  declare const ArrowDownLeftIcon: React__default.FC<IconProps>;
1225
+ /** Eye, for view-only actions and visibility toggles. */
1150
1226
  declare const EyeIcon: React__default.FC<IconProps>;
1227
+ /** Download, for exporting reports and manifests. */
1151
1228
  declare const DownloadIcon: React__default.FC<IconProps>;
1229
+ /** Upload, for importing rosters and attaching files. */
1152
1230
  declare const UploadIcon: React__default.FC<IconProps>;
1231
+ /** Funnel, for opening filter controls. */
1153
1232
  declare const FilterIcon: React__default.FC<IconProps>;
1233
+ /** Calendar, for date pickers and schedule views. */
1154
1234
  declare const CalendarIcon: React__default.FC<IconProps>;
1235
+ /** Single person, for a traveler or profile. */
1155
1236
  declare const UserIcon: React__default.FC<IconProps>;
1237
+ /** Group of people, for teams, rosters, and group travel. */
1156
1238
  declare const UsersIcon: React__default.FC<IconProps>;
1239
+ /** Envelope, for email addresses and send actions. */
1157
1240
  declare const MailIcon: React__default.FC<IconProps>;
1241
+ /** Handset, for phone numbers. */
1158
1242
  declare const PhoneIcon: React__default.FC<IconProps>;
1243
+ /** Agent headset, for travel agent contact and support. */
1159
1244
  declare const HeadsetIcon: React__default.FC<IconProps>;
1245
+ /** Printer, for print actions. */
1160
1246
  declare const PrinterIcon: React__default.FC<IconProps>;
1247
+ /** Circular arrows, for reloading data and retrying a failed request. */
1161
1248
  declare const RefreshIcon: React__default.FC<IconProps>;
1249
+ /** Warning triangle, for warning and error states. */
1162
1250
  declare const WarningIcon: React__default.FC<IconProps>;
1251
+ /** Checkmark, for success states and confirmed selections. */
1163
1252
  declare const CheckIcon: React__default.FC<IconProps>;
1253
+ /** Cross, for clearing a value or marking a negative state. */
1164
1254
  declare const XIcon: React__default.FC<IconProps>;
1255
+ /** Plus, for add and create actions. */
1165
1256
  declare const PlusIcon: React__default.FC<IconProps>;
1257
+ /** Minus, for remove and decrement actions. */
1166
1258
  declare const MinusIcon: React__default.FC<IconProps>;
1259
+ /** Hamburger, for opening navigation on small screens. */
1167
1260
  declare const MenuIcon: React__default.FC<IconProps>;
1261
+ /** Lightbulb, for tips and informational callouts. */
1168
1262
  declare const LightbulbIcon: React__default.FC<IconProps>;
1263
+ /** Megaphone, for announcements and broadcast banners. */
1169
1264
  declare const MegaphoneIcon: React__default.FC<IconProps>;
1265
+ /** Close, for dismissing modals, drawers, and alerts. */
1170
1266
  declare const CloseIcon: React__default.FC<IconProps>;
1267
+ /** Dashboard, for the home and overview destinations. */
1171
1268
  declare const DashboardIcon: React__default.FC<IconProps>;
1269
+ /** Report, for reporting destinations and exports. */
1172
1270
  declare const ReportIcon: React__default.FC<IconProps>;
1271
+ /** Gear, for settings and configuration. */
1173
1272
  declare const SettingsIcon: React__default.FC<IconProps>;
1273
+ /** Short's Travel mark, for brand placements and app headers. */
1174
1274
  declare const LogoIcon: React__default.FC<IconProps>;
1275
+ /** Rising trend line, for a metric moving up. */
1175
1276
  declare const TrendUpIcon: React__default.FC<IconProps>;
1277
+ /** Falling trend line, for a metric moving down. */
1176
1278
  declare const TrendDownIcon: React__default.FC<IconProps>;
1279
+ /** Information, for help text and info banners. */
1177
1280
  declare const InfoIcon: React__default.FC<IconProps>;
1281
+ /** Document, for itineraries, invoices, and attachments. */
1178
1282
  declare const DocumentIcon: React__default.FC<IconProps>;
1283
+ /** Building, for schools, venues, and vendor offices. */
1179
1284
  declare const BuildingIcon: React__default.FC<IconProps>;
1285
+ /** Grid, for switching to a card or tile layout. */
1180
1286
  declare const GridIcon: React__default.FC<IconProps>;
1287
+ /** Pencil, for edit actions. */
1181
1288
  declare const EditIcon: React__default.FC<IconProps>;
1289
+ /** House, for the home destination. */
1182
1290
  declare const HomeIcon: React__default.FC<IconProps>;
1291
+ /** Cube, for packages, equipment, and bundled services. */
1183
1292
  declare const CubeIcon: React__default.FC<IconProps>;
1293
+ /** Padlock, for restricted access and locked records. */
1184
1294
  declare const LockIcon: React__default.FC<IconProps>;
1295
+ /** Trash can, for delete actions. */
1185
1296
  declare const TrashIcon: React__default.FC<IconProps>;
1297
+ /**
1298
+ * Every icon keyed by name, for choosing one at runtime.
1299
+ *
1300
+ * Use a direct import when the icon is known at author time; reach for this
1301
+ * only when the name arrives as data (a nav config, an API response).
1302
+ */
1186
1303
  declare const Icons: {
1187
1304
  readonly Plane: React__default.FC<IconProps>;
1188
1305
  readonly Car: React__default.FC<IconProps>;
@@ -1267,6 +1384,9 @@ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>
1267
1384
  /** Makes textarea take full width */
1268
1385
  fullWidth?: boolean;
1269
1386
  }
1387
+ /**
1388
+ * Multi-line text field sharing the Input label, helper text, and error treatment.
1389
+ */
1270
1390
  declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
1271
1391
 
1272
1392
  interface MetricProps {
@@ -1341,6 +1461,10 @@ interface SpinnerProps {
1341
1461
  /** Accessible label */
1342
1462
  label?: string;
1343
1463
  }
1464
+ /**
1465
+ * Indeterminate loading indicator for waits with no known duration.
1466
+ * Exposes its label to screen readers, so give it one that says what is loading.
1467
+ */
1344
1468
  declare const Spinner: React__default.FC<SpinnerProps>;
1345
1469
 
1346
1470
  type StatusBadgeVariant = 'ticketed' | 'itinerary' | 'not-ticketed' | 'submitted' | 'pending' | 'cancelled' | 'approved' | 'rejected' | 'in-review';
@@ -1350,6 +1474,10 @@ interface StatusBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'childr
1350
1474
  /** Optional custom label (defaults to formatted status) */
1351
1475
  label?: string;
1352
1476
  }
1477
+ /**
1478
+ * Badge for a travel record status, styled per status so the same state always reads the same.
1479
+ * Falls back to a formatted version of the status code when no label is given.
1480
+ */
1353
1481
  declare const StatusBadge: React__default.FC<StatusBadgeProps>;
1354
1482
 
1355
1483
  type TagVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'
@@ -1374,6 +1502,10 @@ interface TagProps {
1374
1502
  /** Inline styles */
1375
1503
  style?: React__default.CSSProperties;
1376
1504
  }
1505
+ /**
1506
+ * Compact label for keywords, categories, and applied filters.
1507
+ * Becomes a button when clickable, and can carry a remove affordance.
1508
+ */
1377
1509
  declare const Tag: React__default.ForwardRefExoticComponent<TagProps & React__default.RefAttributes<HTMLSpanElement>>;
1378
1510
 
1379
1511
  type TimepickerSize = 'sm' | 'md' | 'lg';
@@ -1445,6 +1577,10 @@ interface ToggleProps {
1445
1577
  */
1446
1578
  disabledIcon?: ReactNode;
1447
1579
  }
1580
+ /**
1581
+ * Switch for a setting that applies immediately, with no separate save step.
1582
+ * Use a checkbox instead when the change is submitted with a form.
1583
+ */
1448
1584
  declare const Toggle: React__default.FC<ToggleProps>;
1449
1585
 
1450
1586
  type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
@@ -1465,6 +1601,10 @@ interface TooltipProps {
1465
1601
  /** Additional CSS class */
1466
1602
  className?: string;
1467
1603
  }
1604
+ /**
1605
+ * Hover and focus label for a control whose purpose is not obvious from its face.
1606
+ * Supplementary only -- never put information here that a user must have.
1607
+ */
1468
1608
  declare const Tooltip: React__default.FC<TooltipProps>;
1469
1609
 
1470
1610
  type TravelType = 'A' | 'C' | 'H' | 'L' | 'R' | 'B' | 'U';
@@ -1476,6 +1616,10 @@ interface TypeIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'
1476
1616
  /** Show tooltip on hover */
1477
1617
  showTooltip?: boolean;
1478
1618
  }
1619
+ /**
1620
+ * Segment icon keyed to a travel type code, color-coded per type.
1621
+ * Use TravelServiceIcon when the vendor matters as well as the type.
1622
+ */
1479
1623
  declare const TypeIcon: React__default.FC<TypeIconProps>;
1480
1624
 
1481
1625
  type VendorCode = 'DL' | 'AA' | 'UA' | 'WN' | 'B6' | 'AS' | 'F9' | 'NK' | 'G4' | 'HA' | string;
@@ -1491,6 +1635,10 @@ interface TravelServiceIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, '
1491
1635
  /** Show multi-segment indicator */
1492
1636
  multi?: boolean;
1493
1637
  }
1638
+ /**
1639
+ * Segment icon that identifies the vendor as well as the travel type.
1640
+ * Shows the vendor mark when one is known, and can flag a multi-segment leg.
1641
+ */
1494
1642
  declare const TravelServiceIcon: React__default.FC<TravelServiceIconProps>;
1495
1643
 
1496
1644
  interface AccordionProps {
@@ -1516,18 +1664,29 @@ interface AccordionProps {
1516
1664
  declare const Accordion: React__default.FC<AccordionProps>;
1517
1665
 
1518
1666
  interface SegmentedSelectorOption {
1667
+ /** Value reported through `onChange` when this option is picked. */
1519
1668
  id: string;
1669
+ /** Visible text. Omit for an icon-only option. */
1520
1670
  label?: string;
1671
+ /** Accessible name, required when the option is icon-only. */
1521
1672
  alt?: string;
1673
+ /** Icon element shown before the label. */
1522
1674
  icon?: ReactNode;
1523
1675
  }
1524
1676
  interface SegmentedSelectorProps {
1677
+ /** Options to render, left to right. */
1525
1678
  options: SegmentedSelectorOption[];
1679
+ /** Id of the currently selected option. */
1526
1680
  value: string;
1681
+ /** Called with the newly selected option id. */
1527
1682
  onChange?: (value: string) => void;
1683
+ /** Disables every option. */
1528
1684
  disabled?: boolean;
1685
+ /** Control size. */
1529
1686
  size?: 'sm' | 'md' | 'lg';
1687
+ /** Additional CSS class. */
1530
1688
  className?: string;
1689
+ /** Accessible name for the group. */
1531
1690
  ariaLabel?: string;
1532
1691
  /** Stable hook used by Hub acceptance and Chromatic tests. */
1533
1692
  dataTest?: string;
@@ -1538,18 +1697,32 @@ interface SegmentedSelectorProps {
1538
1697
  /** Which side of the label an option's icon sits on. Defaults to left. */
1539
1698
  iconPosition?: 'left' | 'right';
1540
1699
  }
1700
+ /**
1701
+ * Single-select control rendering its options as one connected row of buttons.
1702
+ * Backs the calendar selectors below; use those when their options fit.
1703
+ */
1541
1704
  declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, dataTest, itemClassName, activeItemClassName, iconPosition, }: SegmentedSelectorProps) => React.JSX.Element;
1542
1705
  type CalendarViewValue = 'calendar' | 'card' | 'list';
1543
1706
  interface CalendarViewSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
1707
+ /** Currently selected layout. */
1544
1708
  value: CalendarViewValue;
1709
+ /** Called with the newly selected layout. */
1545
1710
  onChange?: (value: CalendarViewValue) => void;
1546
1711
  }
1712
+ /**
1713
+ * Chooses how the team travel calendar lays out: calendar grid, cards, or list.
1714
+ */
1547
1715
  declare const CalendarViewSelector: ({ value, onChange, ...props }: CalendarViewSelectorProps) => React.JSX.Element;
1548
1716
  type CalendarTypeValue = 'trips' | 'due_dates';
1549
1717
  interface CalendarTypeSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
1718
+ /** Currently selected item type. */
1550
1719
  value: CalendarTypeValue;
1720
+ /** Called with the newly selected item type. */
1551
1721
  onChange?: (value: CalendarTypeValue) => void;
1552
1722
  }
1723
+ /**
1724
+ * Chooses what the team travel calendar plots -- trips or due dates.
1725
+ */
1553
1726
  declare const CalendarTypeSelector: ({ value, onChange, ...props }: CalendarTypeSelectorProps) => React.JSX.Element;
1554
1727
 
1555
1728
  interface ContactCardProps {
@@ -1650,6 +1823,10 @@ interface DropdownItemProps {
1650
1823
  /** Additional CSS class */
1651
1824
  className?: string;
1652
1825
  }
1826
+ /**
1827
+ * Button that reveals a menu of actions, closing on outside click or Escape.
1828
+ * Compose the menu from DropdownItem; for choosing a value, use Segment or FilterChip instead.
1829
+ */
1653
1830
  declare const Dropdown: React__default.FC<DropdownProps> & {
1654
1831
  Item: React__default.FC<DropdownItemProps>;
1655
1832
  };
@@ -1785,6 +1962,10 @@ interface FilterChipProps {
1785
1962
  /** Additional CSS class */
1786
1963
  className?: string;
1787
1964
  }
1965
+ /**
1966
+ * Compact single-select filter showing its current value on the chip itself.
1967
+ * Can filter its own options when the list is long enough to need searching.
1968
+ */
1788
1969
  declare const FilterChip: React__default.FC<FilterChipProps>;
1789
1970
 
1790
1971
  interface FormFieldProps {
@@ -1809,6 +1990,11 @@ interface FormFieldProps {
1809
1990
  /** Children for custom input rendering */
1810
1991
  children?: React__default.ReactNode;
1811
1992
  }
1993
+ /**
1994
+ * Pairs a labelled control with its helper text and error message, wiring up the
1995
+ * accessible associations between them.
1996
+ * Renders an Input or Textarea via `as`, or any control passed as children.
1997
+ */
1812
1998
  declare const FormField: React__default.ForwardRefExoticComponent<FormFieldProps & React__default.RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;
1813
1999
 
1814
2000
  interface FormRowProps {
@@ -1852,8 +2038,11 @@ interface FormSectionProps {
1852
2038
  declare const FormSection: React__default.FC<FormSectionProps>;
1853
2039
 
1854
2040
  interface FormStackProps {
2041
+ /** Form fields to space evenly. */
1855
2042
  children: ReactNode;
2043
+ /** Vertical space between fields. */
1856
2044
  gap?: 'sm' | 'md' | 'lg';
2045
+ /** Additional CSS class. */
1857
2046
  className?: string;
1858
2047
  }
1859
2048
  /** Standard vertical form-field rhythm used by Hub modal forms. */
@@ -1894,13 +2083,23 @@ declare const InfoTile: React__default.FC<InfoTileProps>;
1894
2083
 
1895
2084
  type ManifestView = 'passengers' | 'equipment';
1896
2085
  interface ManifestViewToggleProps {
2086
+ /** Manifest currently shown. */
1897
2087
  view: ManifestView;
2088
+ /** Called with the manifest the user switched to. */
1898
2089
  onView: (view: ManifestView) => void;
2090
+ /** Passenger count shown on the passengers tab. */
1899
2091
  paxCount: number;
2092
+ /** Equipment count shown on the equipment tab. */
1900
2093
  eqCount: number;
2094
+ /** Marks the manifest as locked, swapping both tab icons for a padlock. Presentational only -- it does not stop the switch. */
1901
2095
  locked: boolean;
2096
+ /** Additional CSS class. */
1902
2097
  className?: string;
1903
2098
  }
2099
+ /**
2100
+ * Tabs switching a charter manifest between its passenger and equipment lists,
2101
+ * each showing its current count.
2102
+ */
1904
2103
  declare const ManifestViewToggle: ({ view, onView, paxCount, eqCount, locked, className, }: ManifestViewToggleProps) => React.JSX.Element;
1905
2104
 
1906
2105
  /** A user option that can be searched for and selected. */
@@ -1993,6 +2192,11 @@ interface NavItemProps {
1993
2192
  /** Accessible description */
1994
2193
  'aria-label'?: string;
1995
2194
  }
2195
+ /**
2196
+ * One destination in a navigation list, with an optional icon and badge.
2197
+ * Renders as a link when given `href`, otherwise as a button.
2198
+ * Collapses to icon-only, keeping its label available to screen readers.
2199
+ */
1996
2200
  declare const NavItem: React__default.FC<NavItemProps>;
1997
2201
 
1998
2202
  interface PageHeaderProps {
@@ -2091,8 +2295,18 @@ interface ProgressCircleProps {
2091
2295
  */
2092
2296
  diameter?: number;
2093
2297
  }
2298
+ /**
2299
+ * Horizontal bar for determinate progress -- a known percentage of a known total.
2300
+ * Use Spinner when the duration is unknown.
2301
+ */
2094
2302
  declare const ProgressBar: React__default.FC<ProgressBarProps>;
2303
+ /**
2304
+ * Ring showing determinate progress, for tighter spaces than ProgressBar fits.
2305
+ */
2095
2306
  declare const ProgressCircle: React__default.FC<ProgressCircleProps>;
2307
+ /**
2308
+ * Namespace bundling the progress indicators as `Progress.Bar` and `Progress.Circle`.
2309
+ */
2096
2310
  declare const Progress: {
2097
2311
  Bar: React__default.FC<ProgressBarProps>;
2098
2312
  Circle: React__default.FC<ProgressCircleProps>;
@@ -2169,17 +2383,31 @@ interface SearchFieldProps {
2169
2383
  /** Accessible label */
2170
2384
  'aria-label'?: string;
2171
2385
  }
2386
+ /**
2387
+ * Search input with clear and submit affordances.
2388
+ * Works controlled via `value` or uncontrolled via `defaultValue`; `onChange` fires
2389
+ * per keystroke while `onSearch` fires only on submit.
2390
+ */
2172
2391
  declare const SearchField: React__default.ForwardRefExoticComponent<SearchFieldProps & React__default.RefAttributes<HTMLInputElement>>;
2173
2392
 
2174
2393
  interface SchoolContactFormProps {
2394
+ /** Whether the form is adding or editing, used for the heading. */
2175
2395
  mode?: 'Add' | 'Edit' | string;
2396
+ /** Optional control for prefilling the form from an existing portal user. */
2176
2397
  createFromPortalUser?: ReactNode;
2398
+ /** Rendered first name field. */
2177
2399
  firstNameField: ReactNode;
2400
+ /** Rendered middle initial field. */
2178
2401
  middleInitialField: ReactNode;
2402
+ /** Rendered last name field. */
2179
2403
  lastNameField: ReactNode;
2404
+ /** Rendered business phone field. */
2180
2405
  businessPhoneField: ReactNode;
2406
+ /** Rendered cell phone field. */
2181
2407
  cellPhoneField: ReactNode;
2408
+ /** Rendered email field. */
2182
2409
  emailField: ReactNode;
2410
+ /** Additional CSS class. */
2183
2411
  className?: string;
2184
2412
  }
2185
2413
  /**
@@ -2214,6 +2442,10 @@ interface SegmentProps {
2214
2442
  /** Accessible label */
2215
2443
  'aria-label'?: string;
2216
2444
  }
2445
+ /**
2446
+ * Segmented control for picking one of a few options that are all worth showing.
2447
+ * Prefer a Dropdown once the list outgrows the available width.
2448
+ */
2217
2449
  declare const Segment: React__default.FC<SegmentProps>;
2218
2450
 
2219
2451
  interface SelectFilterOption {
@@ -2306,17 +2538,29 @@ declare const ServiceToggle: React__default.FC<ServiceToggleProps>;
2306
2538
  declare const ServiceToggleList: React__default.FC<ServiceToggleListProps>;
2307
2539
 
2308
2540
  type SupplierTypeValue = 'A' | 'C' | 'H';
2541
+ /**
2542
+ * The selectable supplier types, without the "All" entry the toggle adds.
2543
+ */
2309
2544
  declare const SUPPLIER_TYPE_OPTIONS: Array<{
2310
2545
  value: SupplierTypeValue;
2311
2546
  label: string;
2312
2547
  }>;
2313
2548
  interface SupplierTypeToggleProps {
2549
+ /** Selected supplier type, or `''` for all. Makes the toggle controlled. */
2314
2550
  value?: SupplierTypeValue | '';
2551
+ /** Initial selection when uncontrolled. */
2315
2552
  defaultValue?: SupplierTypeValue | '';
2553
+ /** Called with the newly selected supplier type, or `''` for all. */
2316
2554
  onChange?: (value: SupplierTypeValue | '') => void;
2555
+ /** Disables every option. */
2317
2556
  disabled?: boolean;
2557
+ /** Additional CSS class. */
2318
2558
  className?: string;
2319
2559
  }
2560
+ /**
2561
+ * Filters a supplier list down to air, car, or hotel.
2562
+ * Works controlled via `value` or uncontrolled via `defaultValue`.
2563
+ */
2320
2564
  declare const SupplierTypeToggle: ({ value, defaultValue, onChange, disabled, className, }: SupplierTypeToggleProps) => React.JSX.Element;
2321
2565
 
2322
2566
  interface TeamCalendarHeaderProps {
@@ -2364,13 +2608,19 @@ declare const TeamHeader: {
2364
2608
  displayName: string;
2365
2609
  };
2366
2610
  interface TeamSubMenuTab {
2611
+ /** Value reported through `onTabChange` when this tab is picked. */
2367
2612
  id: string;
2613
+ /** Visible tab text. */
2368
2614
  label: string;
2369
2615
  }
2370
2616
  interface TeamSubMenuProps {
2617
+ /** Tabs to render. Defaults to the standard team management set. */
2371
2618
  tabs?: TeamSubMenuTab[];
2619
+ /** Id of the currently selected tab. */
2372
2620
  activeTab?: string;
2621
+ /** Called with the newly selected tab id. */
2373
2622
  onTabChange?: (tabId: string) => void;
2623
+ /** Additional CSS class. */
2374
2624
  className?: string;
2375
2625
  }
2376
2626
  /** Router-agnostic counterpart of Hub's team-management submenu. */
@@ -2380,32 +2630,55 @@ declare const TeamSubMenu: {
2380
2630
  };
2381
2631
 
2382
2632
  interface FlightData {
2633
+ /** Whether the leg is a commercial booking or a charter. */
2383
2634
  type: 'commercial' | 'charter';
2635
+ /** Departure airport code. */
2384
2636
  departure: string;
2637
+ /** Arrival airport code. */
2385
2638
  arrival: string;
2639
+ /** Departure date. */
2386
2640
  departureDate: string;
2641
+ /** Departure time, local to the departure airport. */
2387
2642
  departureTime?: string;
2643
+ /** Arrival date, when it differs from the departure date. */
2388
2644
  arrivalDate?: string;
2645
+ /** Arrival time, local to the arrival airport. */
2389
2646
  arrivalTime?: string;
2647
+ /** Operating carrier name. */
2390
2648
  airline?: string;
2649
+ /** Flight number. */
2391
2650
  flightNumber?: string;
2392
2651
  }
2393
2652
  interface GroundData {
2653
+ /** Vehicle class for the leg. */
2394
2654
  type: 'bus' | 'van' | 'car' | 'limo';
2655
+ /** Ground operator name. */
2395
2656
  company?: string;
2657
+ /** Where the vehicle collects the party. */
2396
2658
  pickupLocation: string;
2659
+ /** Where the vehicle drops the party. */
2397
2660
  dropoffLocation: string;
2661
+ /** Pickup date. */
2398
2662
  pickupDate: string;
2663
+ /** Pickup time, local to the pickup location. */
2399
2664
  pickupTime?: string;
2665
+ /** Number of vehicles on the leg. */
2400
2666
  vehicleCount?: number;
2401
2667
  }
2402
2668
  interface HotelData {
2669
+ /** Property name. */
2403
2670
  name: string;
2671
+ /** Street address. */
2404
2672
  address?: string;
2673
+ /** City, shown when the address is omitted. */
2405
2674
  city?: string;
2675
+ /** Check-in date. */
2406
2676
  checkIn: string;
2677
+ /** Check-out date. */
2407
2678
  checkOut: string;
2679
+ /** Number of rooms held. */
2408
2680
  roomCount?: number;
2681
+ /** Hotel confirmation number. */
2409
2682
  confirmationNumber?: string;
2410
2683
  }
2411
2684
  type SegmentVariant = 'light' | 'dark';
@@ -2420,18 +2693,27 @@ interface TripSegmentProps {
2420
2693
  children: ReactNode;
2421
2694
  }
2422
2695
  interface AirSegmentProps {
2696
+ /** Flights on this segment, in travel order. */
2423
2697
  flights: FlightData[];
2698
+ /** Visual variant. */
2424
2699
  variant?: SegmentVariant;
2700
+ /** Additional CSS class. */
2425
2701
  className?: string;
2426
2702
  }
2427
2703
  interface GroundSegmentProps {
2704
+ /** Ground legs on this segment, in travel order. */
2428
2705
  segments: GroundData[];
2706
+ /** Visual variant. */
2429
2707
  variant?: SegmentVariant;
2708
+ /** Additional CSS class. */
2430
2709
  className?: string;
2431
2710
  }
2432
2711
  interface HotelSegmentProps {
2712
+ /** Hotel stays on this segment, in travel order. */
2433
2713
  hotels: HotelData[];
2714
+ /** Visual variant. */
2434
2715
  variant?: SegmentVariant;
2716
+ /** Additional CSS class. */
2435
2717
  className?: string;
2436
2718
  }
2437
2719
  /**
@@ -2603,70 +2885,102 @@ interface GroupTravelDueStatus {
2603
2885
  complete: boolean;
2604
2886
  }
2605
2887
  interface GroupTravelPnr {
2888
+ /** Identifier for the PNR. */
2606
2889
  id: string | number;
2607
2890
  /** Airline record locator, or the placeholder used before one has been issued. */
2608
2891
  recordLocator: string;
2609
2892
  complete: boolean;
2610
2893
  }
2611
2894
  interface AgentGroupTravelRequest {
2895
+ /** Identifier for the PNR. */
2612
2896
  id: number;
2613
2897
  /** School/account this request belongs to — rows are grouped by this value. */
2614
2898
  accountName: string;
2615
2899
  /** Whether an agent or the client themselves submitted the request. */
2616
2900
  source: GroupTravelRequestSource;
2901
+ /** Master trip this request became, once one exists. */
2617
2902
  masterTripId?: number;
2618
2903
  /** Shown as a tooltip and highlights the ID when present. */
2619
2904
  notes?: string;
2620
2905
  /** ISO (yyyy-mm-dd) trip start date. */
2621
2906
  startDate: string;
2907
+ /** Trip name. */
2622
2908
  name: string;
2909
+ /** Sport name shown in the row. */
2623
2910
  sport: string;
2624
2911
  /** Sport code used for the sport filter, e.g. "MBB". */
2625
2912
  sportCode: string;
2913
+ /** Airline handling the group, once assigned. */
2626
2914
  carrier?: string;
2915
+ /** Whether commercial air is part of the request. */
2627
2916
  air: boolean;
2917
+ /** Whether a charter is part of the request. */
2628
2918
  charter: boolean;
2919
+ /** Whether rental cars are part of the request. */
2629
2920
  car: boolean;
2921
+ /** Whether a motorcoach is part of the request. */
2630
2922
  motorcoach: boolean;
2923
+ /** Whether hotel rooms are part of the request. */
2631
2924
  hotel: boolean;
2925
+ /** Whether the hotel is booked as a group block. */
2632
2926
  groupHotel: boolean;
2927
+ /** Routing summary for the trip. */
2633
2928
  routing: string;
2634
2929
  /** ISO (yyyy-mm-dd) date submitted. */
2635
2930
  submittedDate?: string;
2636
2931
  /** ISO (yyyy-mm-dd) date the quote was sent. */
2637
2932
  quoteSentDate?: string;
2933
+ /** Due status for confirming the booking. */
2638
2934
  confirmation: GroupTravelDueStatus;
2935
+ /** Due status for the deposit. */
2639
2936
  deposit: GroupTravelDueStatus;
2937
+ /** Due status for the utilization review. */
2640
2938
  utilization: GroupTravelDueStatus;
2939
+ /** Due status for submitting traveler names. */
2641
2940
  names: GroupTravelDueStatus;
2941
+ /** Due status for ticketing. */
2642
2942
  ticketing: GroupTravelDueStatus;
2643
2943
  /** One entry per PNR in this group; more than one renders as an expandable "Multi" group. */
2644
2944
  pnrs: GroupTravelPnr[];
2645
2945
  }
2646
2946
  interface AgentGroupTravelRequestSportOption {
2947
+ /** Sport code matched against a request. */
2647
2948
  code: string;
2949
+ /** Visible sport name. */
2648
2950
  label: string;
2649
2951
  }
2650
2952
  interface AgentGroupTravelRequestViewOption {
2953
+ /** Identifier for the saved view. */
2651
2954
  id: string;
2955
+ /** Visible view name. */
2652
2956
  label: string;
2653
2957
  /** Account names included in this saved view. */
2654
2958
  accountNames: string[];
2655
2959
  }
2656
2960
  interface AgentGroupTravelRequestsTableProps {
2961
+ /** Requests to list. Rows are grouped by account. */
2657
2962
  requests: AgentGroupTravelRequest[];
2963
+ /** Sports offered in the sport filter. */
2658
2964
  sports?: AgentGroupTravelRequestSportOption[];
2659
2965
  /** Saved account-group "views"; the view filter is hidden when none are supplied. */
2660
2966
  views?: AgentGroupTravelRequestViewOption[];
2661
2967
  /** ISO (yyyy-mm-dd) reference date for due-status coloring. Defaults to today; pass a fixed value in stories/tests for determinism. */
2662
2968
  today?: string;
2969
+ /** Called with the request the agent opened. */
2663
2970
  onOpenRequest?: (id: number) => void;
2971
+ /** Called with the master trip the agent opened. */
2664
2972
  onViewMasterTrip?: (masterTripId: number) => void;
2973
+ /** Called with the request the agent deleted. */
2665
2974
  onDeleteRequest?: (id: number) => void;
2975
+ /** Called with the record locator the agent copied. */
2666
2976
  onCopyPnr?: (recordLocator: string) => void;
2977
+ /** Called with the request and the milestone the agent marked complete or incomplete. */
2667
2978
  onToggleDueStatus?: (id: number, field: GroupTravelDueField) => void;
2979
+ /** Called with the request and its new submitted date. */
2668
2980
  onSubmittedDateChange?: (id: number, value: string) => void;
2981
+ /** Called with the request and its new quote-sent date. */
2669
2982
  onQuoteSentDateChange?: (id: number, value: string) => void;
2983
+ /** Additional CSS class. */
2670
2984
  className?: string;
2671
2985
  }
2672
2986
  /** Computes the short "A/C/B/H/GH/CA" travel-type codes shown in the Type column. */
@@ -2760,6 +3074,10 @@ interface AppLayoutProps {
2760
3074
  /** Additional CSS class */
2761
3075
  className?: string;
2762
3076
  }
3077
+ /**
3078
+ * Generic page frame: sidebar, top bar, and content area.
3079
+ * Use HubAppShell for Hub screens -- it adds the Hub navigation and branding.
3080
+ */
2763
3081
  declare const AppLayout: React__default.FC<AppLayoutProps>;
2764
3082
 
2765
3083
  type CardVariant = 'default' | 'bordered' | 'elevated';
@@ -2784,30 +3102,49 @@ interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
2784
3102
  /** Actions to display in the header */
2785
3103
  actions?: React__default.ReactNode;
2786
3104
  }
3105
+ /**
3106
+ * Top of a Card: title, subtitle, and any header actions.
3107
+ */
2787
3108
  declare const CardHeader: React__default.FC<CardHeaderProps>;
2788
3109
  interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
2789
3110
  }
3111
+ /**
3112
+ * Main content region of a Card, carrying the card padding.
3113
+ */
2790
3114
  declare const CardBody: React__default.FC<CardBodyProps>;
2791
3115
  interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
2792
3116
  }
3117
+ /**
3118
+ * Bottom of a Card, for actions and summary detail.
3119
+ */
2793
3120
  declare const CardFooter: React__default.FC<CardFooterProps>;
2794
3121
 
2795
3122
  /** The three notifications the Charter Sourcing backend currently sends. */
2796
3123
  type CharterSourcingEmailVariant = 'admin-review' | 'submitter-approved' | 'submitter-updated';
2797
3124
  /** One origin/destination pair included in the email's route summary. */
2798
3125
  interface CharterSourcingEmailLeg {
3126
+ /** Departure airport code. */
2799
3127
  origin: string;
3128
+ /** Arrival airport code. */
2800
3129
  destination: string;
2801
3130
  }
2802
3131
  /** Contract-backed quote facts shared by all three notifications. */
2803
3132
  interface CharterSourcingEmailQuote {
3133
+ /** Sourcing request the quote answers. */
2804
3134
  requestId: string;
3135
+ /** Operator quoting the charter. */
2805
3136
  carrier: string;
3137
+ /** Aircraft type offered. */
2806
3138
  aircraft: string;
3139
+ /** Passenger count the quote covers. */
2807
3140
  passengers: string | number;
3141
+ /** Legs in the quoted routing, in travel order. */
2808
3142
  legs: readonly CharterSourcingEmailLeg[];
3143
+ /** Outbound travel date. */
2809
3144
  outboundDate: string;
3145
+ /** Return travel date. */
2810
3146
  returnDate: string;
3147
+ /** Who submitted the quote. */
2811
3148
  submittedBy: string;
2812
3149
  /**
2813
3150
  * Preformatted amount without an assumed currency symbol. The backend only
@@ -2817,8 +3154,11 @@ interface CharterSourcingEmailQuote {
2817
3154
  }
2818
3155
  /** One scalar value changed by an administrator. */
2819
3156
  interface CharterSourcingEmailChange {
3157
+ /** Field that changed. */
2820
3158
  label: string;
3159
+ /** Value before the change. */
2821
3160
  previousValue: string;
3161
+ /** Value after the change. */
2822
3162
  updatedValue: string;
2823
3163
  }
2824
3164
  /** Hub only sends an update notification when at least one field changed. */
@@ -2827,20 +3167,26 @@ type CharterSourcingEmailChanges = readonly [
2827
3167
  ...CharterSourcingEmailChange[]
2828
3168
  ];
2829
3169
  interface CharterSourcingEmailPreviewBaseProps {
3170
+ /** Quote the email is about. */
2830
3171
  quote: CharterSourcingEmailQuote;
2831
3172
  /**
2832
3173
  * Original production recipient shown when a non-production environment
2833
3174
  * diverts the message to its configured test inbox.
2834
3175
  */
2835
3176
  testServerOriginalRecipient?: string;
3177
+ /** Additional CSS class. */
2836
3178
  className?: string;
2837
3179
  }
2838
3180
  /** Props mirror the three real sends; an update must contain at least one change. */
2839
3181
  type CharterSourcingEmailPreviewProps = CharterSourcingEmailPreviewBaseProps & ({
3182
+ /** Which of the three sends to preview. */
2840
3183
  variant: 'admin-review' | 'submitter-approved';
3184
+ /** Not carried by these sends -- only an update lists changes. */
2841
3185
  changes?: never;
2842
3186
  } | {
3187
+ /** Which of the three sends to preview. */
2843
3188
  variant: 'submitter-updated';
3189
+ /** What changed since the last send. An update must list at least one. */
2844
3190
  changes: CharterSourcingEmailChanges;
2845
3191
  });
2846
3192
  /** The exact comma-separated route label used by the backend subject and body. */
@@ -2956,9 +3302,22 @@ interface DrawerFooterProps {
2956
3302
  /** Additional CSS class */
2957
3303
  className?: string;
2958
3304
  }
3305
+ /**
3306
+ * Top of a Drawer: title and the close affordance.
3307
+ */
2959
3308
  declare const DrawerHeader: React__default.FC<DrawerHeaderProps>;
3309
+ /**
3310
+ * Scrollable content region of a Drawer.
3311
+ */
2960
3312
  declare const DrawerBody: React__default.FC<DrawerBodyProps>;
3313
+ /**
3314
+ * Bottom of a Drawer, for actions that stay visible while the body scrolls.
3315
+ */
2961
3316
  declare const DrawerFooter: React__default.FC<DrawerFooterProps>;
3317
+ /**
3318
+ * Panel sliding in from an edge for secondary work that keeps the page behind it
3319
+ * in context. Traps focus while open and closes on Escape or backdrop click.
3320
+ */
2962
3321
  declare const Drawer: React__default.FC<DrawerProps> & {
2963
3322
  Header: typeof DrawerHeader;
2964
3323
  Body: typeof DrawerBody;
@@ -2966,26 +3325,42 @@ declare const Drawer: React__default.FC<DrawerProps> & {
2966
3325
  };
2967
3326
 
2968
3327
  interface TravelDueDateItem {
3328
+ /** Date the task is due. */
2969
3329
  duedate: string;
3330
+ /** When the task was completed. Empty while it is outstanding. */
2970
3331
  completeddatetime: string;
3332
+ /** Short task name. */
2971
3333
  tasktitle: string;
3334
+ /** Identifier for the task. */
2972
3335
  taskid: number;
3336
+ /** Workflow status text as the source system reports it. */
2973
3337
  status: string;
3338
+ /** Who completed the task. */
2974
3339
  completedby: string;
3340
+ /** Longer explanation of what the task requires. */
2975
3341
  description: string;
3342
+ /** Travel service the task belongs to (air, ground, hotel). */
2976
3343
  servicetype?: string;
3344
+ /** Sport the task belongs to. */
2977
3345
  sportCode: string;
3346
+ /** Trip the task belongs to. */
2978
3347
  tripId: string;
3348
+ /** Name of that trip, for display without a second lookup. */
2979
3349
  tripName: string;
3350
+ /** Master trip the task rolls up to, used to open the trip from a task. */
2980
3351
  masterTripGUID?: string;
2981
3352
  /** Set by the API when the due date has passed; used by `overdueOnly`. */
2982
3353
  pastdue?: boolean;
2983
3354
  }
2984
3355
  type GroupedTravelDueDates = Record<string, TravelDueDateItem[]>;
2985
3356
  interface DueDatesDrawerProps {
3357
+ /** Whether the drawer is open. */
2986
3358
  isOpen: boolean;
3359
+ /** Tasks to show, already grouped by date. */
2987
3360
  dueDates: GroupedTravelDueDates;
3361
+ /** Date to focus when opening from a calendar day. */
2988
3362
  selectedDate?: string | null;
3363
+ /** Trip to focus when opening from a trip. */
2989
3364
  selectedTrip?: string | null;
2990
3365
  /**
2991
3366
  * NG-702/NG-811: opened via the Overdue Actions card — only past-due,
@@ -2993,11 +3368,20 @@ interface DueDatesDrawerProps {
2993
3368
  * rather than showing every due date.
2994
3369
  */
2995
3370
  overdueOnly?: boolean;
3371
+ /** Called when the user dismisses the drawer. */
2996
3372
  onClose: () => void;
3373
+ /** Called with the task the user marked complete or incomplete. */
2997
3374
  onToggle?: (item: TravelDueDateItem) => void;
3375
+ /** Called with the master trip of the task the user opened. */
2998
3376
  onTaskClick?: (masterTripGUID: string) => void;
3377
+ /** Additional CSS class. */
2999
3378
  className?: string;
3000
3379
  }
3380
+ /**
3381
+ * Whether a task counts as done.
3382
+ * Treats a completion timestamp as authoritative, since the source systems do not
3383
+ * always write the status text back.
3384
+ */
3001
3385
  declare const isTravelDueDateCompleted: (item: Pick<TravelDueDateItem, "status" | "completeddatetime">) => boolean;
3002
3386
  declare const isTravelDueDateOverdue: (item: Pick<TravelDueDateItem, "completeddatetime" | "pastdue">) => boolean;
3003
3387
  /** Hub's searchable, status-aware due-dates drawer. */
@@ -3093,16 +3477,32 @@ declare namespace GridTable {
3093
3477
  }
3094
3478
 
3095
3479
  interface HubNavigationItem {
3480
+ /** Stable id, matched against `activeNavKey` to mark the current destination. */
3096
3481
  key: string;
3482
+ /** Visible text for the entry. */
3097
3483
  label: string;
3484
+ /** Route the entry points at. The shell reports it back rather than navigating itself. */
3098
3485
  path: string;
3486
+ /** Icon shown beside the label, and alone when the rail is collapsed. */
3099
3487
  icon: ReactNode;
3100
3488
  }
3489
+ /**
3490
+ * Individual Travel entry, kept separate because not every account has it.
3491
+ */
3101
3492
  declare const HUB_INDIVIDUAL_TRAVEL_ITEM: HubNavigationItem;
3102
3493
  /** Canonical navigation identity for the carrier-facing STM Charters portal. */
3103
3494
  declare const HUB_STM_CHARTERS_ITEM: HubNavigationItem;
3495
+ /**
3496
+ * The default primary navigation, in display order.
3497
+ */
3104
3498
  declare const HUB_NAV_ITEMS: HubNavigationItem[];
3499
+ /**
3500
+ * Administration entry, shown in the footer to admins.
3501
+ */
3105
3502
  declare const HUB_ADMIN_ITEM: HubNavigationItem;
3503
+ /**
3504
+ * Agent workspace entry, shown in the footer to admins.
3505
+ */
3106
3506
  declare const HUB_AGENTS_ITEM: HubNavigationItem;
3107
3507
  /**
3108
3508
  * Sourcing sits with the admin-gated footer items rather than in `HUB_NAV_ITEMS`: the
@@ -3112,46 +3512,70 @@ declare const HUB_SOURCING_ITEM: HubNavigationItem;
3112
3512
  /** Off-fleet quote review is an admin surface too, so it is gated the same way. */
3113
3513
  declare const HUB_OFF_FLEET_ITEM: HubNavigationItem;
3114
3514
  interface HubAppShellActions {
3515
+ /** Whether the mobile navigation drawer is currently open. */
3115
3516
  isMobileNavOpen: boolean;
3517
+ /** Opens or closes the mobile navigation drawer. */
3116
3518
  toggleMobileNav: () => void;
3117
3519
  }
3118
3520
  interface HubAppShellProps {
3521
+ /** Page content rendered inside the shell. */
3119
3522
  children: ReactNode;
3523
+ /** Primary navigation entries. Defaults to the standard Hub set. */
3120
3524
  navItems?: HubNavigationItem[];
3121
3525
  /** Set to `null` when Individual Travel is not available to the current user or account. */
3122
3526
  individualTravelItem?: HubNavigationItem | null;
3527
+ /** Agent workspace entry, rendered in the footer and gated on `isAdmin`. */
3123
3528
  agentsItem?: HubNavigationItem;
3124
3529
  /** ACMI sourcing entry, rendered in the footer and shown only when `isAdmin` is true. */
3125
3530
  sourcingItem?: HubNavigationItem;
3126
3531
  /** Off-fleet quote review entry, rendered in the footer and gated on `isAdmin`. */
3127
3532
  offFleetItem?: HubNavigationItem;
3533
+ /** Administration entry, rendered in the footer and gated on `isAdmin`. */
3128
3534
  adminItem?: HubNavigationItem;
3129
3535
  /**
3130
3536
  * Authoritative footer navigation. When provided (including an empty array),
3131
3537
  * it replaces the default admin-gated Sourcing, Off-Fleet, Agents, and Administration items.
3132
3538
  */
3133
3539
  footerNavItems?: HubNavigationItem[];
3540
+ /** Key of the entry to mark as current. */
3134
3541
  activeNavKey?: string;
3542
+ /** Called with the entry the user picked. The host performs the routing. */
3135
3543
  onNavigate?: (item: HubNavigationItem) => void;
3544
+ /** Called when the user activates the logo. */
3136
3545
  onLogoClick?: () => void;
3546
+ /** Called when the user chooses to hand off to the legacy portal. */
3137
3547
  onLegacyPortal?: () => void;
3548
+ /** Account switcher rendered in the top bar. */
3138
3549
  accountSelector?: ReactNode;
3550
+ /** Renders top bar actions, given the shell state so they can drive the mobile nav. */
3139
3551
  renderTopbarActions?: (actions: HubAppShellActions) => ReactNode;
3552
+ /** Renders extra content inside the mobile drawer, given a callback that closes it. */
3140
3553
  renderMobileExtras?: (close: () => void) => ReactNode;
3554
+ /** Content pinned to the bottom of the mobile drawer. */
3141
3555
  mobileFooter?: ReactNode;
3556
+ /** Profile menu rendered in the top bar. */
3142
3557
  profileMenu?: ReactNode;
3558
+ /** Initials shown in the top bar when no profile menu is supplied. */
3143
3559
  userInitials?: string;
3560
+ /** Whether the current user sees the admin-gated footer entries. */
3144
3561
  isAdmin?: boolean;
3562
+ /** Renders navigation as non-interactive, for loading and restricted states. */
3145
3563
  navigationDisabled?: boolean;
3564
+ /** Shows the shell in its loading state. */
3146
3565
  loading?: boolean;
3566
+ /** Renders the content area as non-interactive while an operation blocks it. */
3147
3567
  contentDisabled?: boolean;
3568
+ /** Whether to render children at all. Set false to hold the frame while content resolves. */
3148
3569
  showContent?: boolean;
3149
- /** Logo for expanded sidebar state */
3570
+ /** Overrides the default brand mark, shown while the side rail is expanded. */
3150
3571
  logo?: ReactNode;
3151
- /** Logo for collapsed sidebar state (icon only, no text) */
3572
+ /** Overrides the brand mark shown while the side rail is collapsed, where only an icon fits. */
3152
3573
  collapsedLogo?: ReactNode;
3574
+ /** Whether the side rail starts expanded. */
3153
3575
  defaultExpanded?: boolean;
3576
+ /** Beta tag shown beside the brand mark. */
3154
3577
  betaLabel?: string;
3578
+ /** Additional CSS class. */
3155
3579
  className?: string;
3156
3580
  }
3157
3581
  /** The shared application navigation and content shell used by Hub and its Storybook pages. */
@@ -3421,11 +3845,17 @@ declare const MembershipPrograms: {
3421
3845
  };
3422
3846
 
3423
3847
  interface ManifestCapacityStatsProps {
3848
+ /** Passengers currently manifested. */
3424
3849
  paxCount: number;
3850
+ /** Seats available on the aircraft. */
3425
3851
  seats: number;
3852
+ /** Total passenger weight, in pounds. */
3426
3853
  paxWeight: number;
3854
+ /** Total cargo and equipment weight, in pounds. */
3427
3855
  cargoWeight: number;
3856
+ /** Maximum payload the aircraft can carry, in pounds. */
3428
3857
  payloadLimit: number;
3858
+ /** Additional CSS class. */
3429
3859
  className?: string;
3430
3860
  }
3431
3861
  /** Advisory seat and payload meters from Hub's charter manifest. */
@@ -3454,11 +3884,21 @@ interface ModalProps {
3454
3884
  /** Additional CSS class */
3455
3885
  className?: string;
3456
3886
  }
3887
+ /**
3888
+ * Dialog that interrupts the page until the user resolves it.
3889
+ * Traps focus, closes on Escape, and restores focus to the trigger on close.
3890
+ * Use an Alert instead when the user does not have to act.
3891
+ */
3457
3892
  declare const Modal: React__default.FC<ModalProps>;
3458
3893
  interface ModalFooterProps {
3894
+ /** Footer content, usually the confirm and cancel actions. */
3459
3895
  children: React__default.ReactNode;
3896
+ /** Additional CSS class. */
3460
3897
  className?: string;
3461
3898
  }
3899
+ /**
3900
+ * Action row for the bottom of a Modal, keeping button order consistent across dialogs.
3901
+ */
3462
3902
  declare const ModalFooter: React__default.FC<ModalFooterProps>;
3463
3903
  interface ConfirmModalProps extends Omit<ModalProps, 'footer' | 'children'> {
3464
3904
  /** Message to display */
@@ -3474,6 +3914,10 @@ interface ConfirmModalProps extends Omit<ModalProps, 'footer' | 'children'> {
3474
3914
  /** Whether confirm action is in progress */
3475
3915
  loading?: boolean;
3476
3916
  }
3917
+ /**
3918
+ * Modal preset for confirming a single action, with the confirm and cancel
3919
+ * buttons already wired.
3920
+ */
3477
3921
  declare const ConfirmModal: React__default.FC<ConfirmModalProps>;
3478
3922
 
3479
3923
  type ModuleSize = 'sm' | 'md' | 'lg';
@@ -3534,21 +3978,34 @@ declare const ModuleVerticalDivider: React__default.FC<{
3534
3978
  }>;
3535
3979
 
3536
3980
  interface SystemBanner {
3981
+ /** Identifier for the banner, used to key and dismiss it. */
3537
3982
  id: string;
3983
+ /** Banner body as trusted HTML from the announcements system. */
3538
3984
  html: string;
3985
+ /** Expanded detail revealed when the reader opens the banner. */
3539
3986
  detailHtml?: string;
3540
3987
  }
3541
3988
  interface TravelAlertBanner {
3989
+ /** Identifier for the alert. */
3542
3990
  id: string;
3991
+ /** Headline summarizing the disruption. */
3543
3992
  title: string;
3993
+ /** Supporting detail. */
3544
3994
  body?: string;
3995
+ /** Link to the full advisory. */
3545
3996
  href?: string;
3546
3997
  }
3547
3998
  interface PageBannersProps {
3999
+ /** Platform-wide notices such as maintenance windows. */
3548
4000
  systemBanners: SystemBanner[];
4001
+ /** Travel alerts affecting trips, such as weather or carrier disruption. */
3549
4002
  alertBanners: TravelAlertBanner[];
4003
+ /** Additional CSS class. */
3550
4004
  className?: string;
3551
4005
  }
4006
+ /**
4007
+ * Stacked notices for the top of a page: platform notices first, then travel alerts.
4008
+ */
3552
4009
  declare const PageBanners: ({ systemBanners, alertBanners, className, }: PageBannersProps) => React.JSX.Element | null;
3553
4010
 
3554
4011
  interface PreferenceField {
@@ -4098,6 +4555,9 @@ interface TableProps<T = any> {
4098
4555
  /** Additional CSS class */
4099
4556
  className?: string;
4100
4557
  }
4558
+ /**
4559
+ * Data table with sorting, selection, and empty and loading states.
4560
+ */
4101
4561
  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;
4102
4562
 
4103
4563
  interface TeamOption {
@@ -4132,61 +4592,106 @@ declare const TeamCard: {
4132
4592
 
4133
4593
  type TeamContactId = string | number;
4134
4594
  interface TeamContactOption {
4595
+ /** Identifier reported back through the selected contact ids. */
4135
4596
  id: TeamContactId;
4597
+ /** Contact name shown in the picker. */
4136
4598
  name: string;
4599
+ /** Role at the school, shown beside the name. */
4137
4600
  title?: string;
4601
+ /** Contact email address. */
4138
4602
  email?: string;
4603
+ /** Contact phone number. */
4139
4604
  phone?: string;
4605
+ /** Whether the contact is still active. Inactive contacts stay selectable so existing assignments survive. */
4140
4606
  active?: boolean;
4141
4607
  }
4142
4608
  interface TeamContactsValue {
4609
+ /** Contact who owns the trip. */
4143
4610
  primaryContactId?: TeamContactId;
4611
+ /** Backup contact. */
4144
4612
  secondaryContactId?: TeamContactId;
4613
+ /** Contacts copied on correspondence. Holes are kept so empty rows stay in place while editing. */
4145
4614
  ccContactIds?: Array<TeamContactId | undefined>;
4146
4615
  }
4147
4616
  interface TeamContactsLoadingState {
4617
+ /** Whether the primary contact is being saved. */
4148
4618
  primary?: boolean;
4619
+ /** Whether the secondary contact is being saved. */
4149
4620
  secondary?: boolean;
4621
+ /** Per-row save state for the copied contacts, positionally matched to `ccContactIds`. */
4150
4622
  cc?: boolean[];
4151
4623
  }
4152
4624
  interface TeamContactsPanelProps {
4625
+ /** Contacts available to assign. */
4153
4626
  contacts: TeamContactOption[];
4627
+ /** Currently assigned contacts. */
4154
4628
  value: TeamContactsValue;
4629
+ /** Called with the full assignment after any change. */
4155
4630
  onChange?: (value: TeamContactsValue) => void;
4631
+ /** Disables every picker. */
4156
4632
  disabled?: boolean;
4633
+ /** Per-slot save state, for showing progress on the row being written. */
4157
4634
  loading?: TeamContactsLoadingState;
4635
+ /** Stable hook for acceptance and visual tests. */
4158
4636
  dataTestId?: string;
4637
+ /** Additional CSS class. */
4159
4638
  className?: string;
4160
4639
  }
4640
+ /**
4641
+ * Assigns a team's primary, secondary, and copied travel contacts.
4642
+ * Each slot saves independently, so `loading` is per slot rather than per panel.
4643
+ */
4161
4644
  declare const TeamContactsPanel: {
4162
4645
  ({ contacts, value, onChange, disabled, loading, dataTestId, className, }: TeamContactsPanelProps): React.JSX.Element;
4163
4646
  displayName: string;
4164
4647
  };
4165
4648
 
4166
4649
  interface SeasonOption {
4650
+ /** Value reported through `onSeasonChange` when this season is picked. */
4167
4651
  value: string;
4652
+ /** Visible season text. */
4168
4653
  label: string;
4169
4654
  }
4170
4655
  interface TeamScheduleActionsProps {
4656
+ /** Whether the schedule is currently in its compact layout. */
4171
4657
  isCompactView: boolean;
4658
+ /** Number of trips in the current season, shown in the summary. */
4172
4659
  tripCount: number;
4660
+ /** Label for the season currently shown. */
4173
4661
  seasonLabel: string;
4662
+ /** Value of the selected season, when a season picker is offered. */
4174
4663
  seasonValue?: string;
4664
+ /** Seasons available to pick from. Omit to show only the stepper arrows. */
4175
4665
  seasonOptions?: SeasonOption[];
4666
+ /** Disables stepping back, at the earliest season on record. */
4176
4667
  previousSeasonDisabled?: boolean;
4668
+ /** Disables export, when there is nothing to export. */
4177
4669
  exportDisabled?: boolean;
4670
+ /** Shows export as in progress. */
4178
4671
  exporting?: boolean;
4672
+ /** Disables raising a group travel request. */
4179
4673
  groupTravelDisabled?: boolean;
4674
+ /** Disables merging events. */
4180
4675
  mergeDisabled?: boolean;
4676
+ /** Shows the merge as in progress. */
4181
4677
  merging?: boolean;
4678
+ /** Called when the user switches between compact and full schedule layouts. */
4182
4679
  onViewSchedule?: () => void;
4680
+ /** Called when the user leaves the schedule. */
4183
4681
  onBack?: () => void;
4682
+ /** Called when the user steps to the previous season. */
4184
4683
  onPreviousSeason?: () => void;
4684
+ /** Called when the user steps to the next season. */
4185
4685
  onNextSeason?: () => void;
4686
+ /** Called with the season the user picked. */
4186
4687
  onSeasonChange?: (value: string) => void;
4688
+ /** Called when the user exports the schedule. */
4187
4689
  onExport?: () => void;
4690
+ /** Called when the user raises a group travel request. */
4188
4691
  onGroupTravelRequest?: () => void;
4692
+ /** Called when the user merges duplicate events. */
4189
4693
  onMergeEvents?: () => void;
4694
+ /** Additional CSS class. */
4190
4695
  className?: string;
4191
4696
  }
4192
4697
  /** Exact presentational counterpart of Hub's Team Schedule action controls. */
@@ -4194,18 +4699,29 @@ declare const TeamScheduleActions: ({ isCompactView, tripCount, seasonLabel, sea
4194
4699
 
4195
4700
  /** @deprecated Legacy injected row. Prefer the structured `data` prop. */
4196
4701
  interface TeamScheduleCompactRow {
4702
+ /** Identifier for the row. */
4197
4703
  id: string | number;
4704
+ /** Rendered trip cell. */
4198
4705
  trip: ReactNode;
4706
+ /** Rendered events cell. */
4199
4707
  events: ReactNode;
4200
4708
  }
4201
4709
  interface TeamScheduleCompactEvent {
4710
+ /** Identifier for the event. */
4202
4711
  id: string | number;
4712
+ /** Opposing school. */
4203
4713
  opponent: string;
4714
+ /** Event name. */
4204
4715
  title: string;
4716
+ /** Date the event is played. */
4205
4717
  date: string;
4718
+ /** Start time, when one is set. */
4206
4719
  time?: string;
4720
+ /** Marker shown while the date or time is still to be confirmed. */
4207
4721
  tbc?: string;
4722
+ /** Where the event is played. */
4208
4723
  location: string;
4724
+ /** Whether the event is home or away. */
4209
4725
  homeAway: string;
4210
4726
  /** Leading 48px cell (e.g. checkbox or drag handle). */
4211
4727
  leading?: ReactNode;
@@ -4213,14 +4729,21 @@ interface TeamScheduleCompactEvent {
4213
4729
  action?: ReactNode;
4214
4730
  }
4215
4731
  interface TeamScheduleCompactTrip {
4732
+ /** Identifier for the trip. */
4216
4733
  id: string | number;
4734
+ /** Rendered group travel request indicator. */
4217
4735
  gtr?: ReactNode;
4736
+ /** First day of travel. */
4218
4737
  travelStart: string;
4738
+ /** Last day of travel. */
4219
4739
  travelEnd: string;
4740
+ /** Trip name. */
4220
4741
  tripName: string;
4742
+ /** Rendered summary of the travel services on the trip. */
4221
4743
  services?: ReactNode;
4222
4744
  /** Trailing 116px cell (e.g. Edit action). */
4223
4745
  action?: ReactNode;
4746
+ /** Competitions the trip covers. */
4224
4747
  events: TeamScheduleCompactEvent[];
4225
4748
  }
4226
4749
  interface TeamScheduleCompactTableProps {
@@ -4233,19 +4756,25 @@ interface TeamScheduleCompactTableProps {
4233
4756
  rows?: TeamScheduleCompactRow[];
4234
4757
  /** Header labels for legacy `rows` mode only. */
4235
4758
  tripHeaders?: ReactNode[];
4759
+ /** Header labels for the event columns in legacy `rows` mode only. */
4236
4760
  eventHeaders?: ReactNode[];
4761
+ /** Called when the user adds an event. */
4237
4762
  onAddEvent?: () => void;
4763
+ /** Disables adding an event. */
4238
4764
  addEventDisabled?: boolean;
4765
+ /** Additional CSS class. */
4239
4766
  className?: string;
4240
4767
  /** Click trip column headers to sort. */
4241
4768
  enableSorting?: boolean;
4242
4769
  /** Search box matching trip and event text. */
4243
4770
  enableGlobalFilter?: boolean;
4771
+ /** Placeholder for the search box. */
4244
4772
  globalFilterPlaceholder?: string;
4245
4773
  /** Per-column text filters under the trip headers. */
4246
4774
  enableColumnFilters?: boolean;
4247
4775
  /** Page the trips with prev/next controls. */
4248
4776
  enablePagination?: boolean;
4777
+ /** Trips per page when pagination is on. */
4249
4778
  pageSize?: number;
4250
4779
  /** Checkbox per trip plus a select-all header checkbox. */
4251
4780
  enableRowSelection?: boolean;
@@ -4260,26 +4789,43 @@ interface TeamScheduleCompactTableProps {
4260
4789
  declare const TeamScheduleCompactTable: ({ data, rows, tripHeaders, eventHeaders, onAddEvent, addEventDisabled, className, enableSorting, enableGlobalFilter, globalFilterPlaceholder, enableColumnFilters, enablePagination, pageSize, enableRowSelection, onRowSelectionChange, enableColumnVisibility, enableExpanding, }: TeamScheduleCompactTableProps) => React.JSX.Element;
4261
4790
 
4262
4791
  interface TeamScheduleDueDate {
4792
+ /** Identifier for the task. */
4263
4793
  id?: string | number;
4794
+ /** Short task name. */
4264
4795
  title: string;
4796
+ /** Date the task is due. */
4265
4797
  date: string;
4266
4798
  }
4267
4799
  interface TeamScheduleExpandedRow {
4800
+ /** Stable identifier for the trip. */
4268
4801
  masterTripGUID: string;
4802
+ /** Sport the trip belongs to. */
4269
4803
  sportCode?: string;
4804
+ /** First day of travel. */
4270
4805
  travelStartDate?: string;
4806
+ /** Last day of travel. */
4271
4807
  travelEndDate?: string;
4808
+ /** Trip name. */
4272
4809
  tripName: string;
4810
+ /** Outstanding tasks for the trip. */
4273
4811
  dueDates?: TeamScheduleDueDate[];
4812
+ /** Rendered air itinerary for the trip. */
4274
4813
  airSegment?: ReactNode;
4814
+ /** Rendered ground itinerary for the trip. */
4275
4815
  groundSegment?: ReactNode;
4816
+ /** Rendered lodging for the trip. */
4276
4817
  hotelSegment?: ReactNode;
4277
4818
  }
4278
4819
  interface TeamScheduleExpandedTableProps {
4820
+ /** Trips to show, in display order. */
4279
4821
  rows: TeamScheduleExpandedRow[];
4822
+ /** Team the schedule belongs to, shown in the header. */
4280
4823
  teamCode?: string;
4824
+ /** Called with the trip the user opened. */
4281
4825
  onTripClick?: (row: TeamScheduleExpandedRow) => void;
4826
+ /** Text shown when there are no trips. */
4282
4827
  emptyMessage?: string;
4828
+ /** Additional CSS class. */
4283
4829
  className?: string;
4284
4830
  }
4285
4831
  declare const formatTeamScheduleTravelDates: (startValue?: string, endValue?: string) => string;
@@ -4289,20 +4835,33 @@ declare const TeamScheduleExpandedTable: ({ rows, teamCode, onTripClick, emptyMe
4289
4835
 
4290
4836
  type TeamScheduleHomeAway = 'Home' | 'Away' | 'Neutral';
4291
4837
  interface TeamScheduleEditorEvent {
4838
+ /** Identifier for the event. */
4292
4839
  id: string | number;
4840
+ /** Date the event is played. */
4293
4841
  eventDate: string;
4842
+ /** Opposing school. */
4294
4843
  opponent: string;
4844
+ /** Event name. */
4295
4845
  eventTitle: string;
4846
+ /** Whether the event is home or away. */
4296
4847
  homeOrAway: TeamScheduleHomeAway;
4848
+ /** Whether the event is a candidate for merging into another. */
4297
4849
  mergeable?: boolean;
4298
4850
  }
4299
4851
  interface TeamScheduleEditorTrip {
4852
+ /** Identifier for the trip. */
4300
4853
  id: string | number;
4854
+ /** Whether a group travel request has already been raised for the trip. */
4301
4855
  gtrExists?: boolean;
4856
+ /** First day of travel. */
4302
4857
  travelStartDate: string;
4858
+ /** Last day of travel. */
4303
4859
  travelEndDate: string;
4860
+ /** Trip name. */
4304
4861
  tripName: string;
4862
+ /** Travel services on the trip, as codes or a preformatted summary. */
4305
4863
  services: string[] | string;
4864
+ /** Competitions the trip covers. */
4306
4865
  events: TeamScheduleEditorEvent[];
4307
4866
  }
4308
4867
  interface TeamScheduleEditorProps {
@@ -4314,113 +4873,219 @@ interface TeamScheduleEditorProps {
4314
4873
  opponentOptions?: string[];
4315
4874
  /** Called after any saved edit or deletion. */
4316
4875
  onChange?: (rows: TeamScheduleEditorTrip[]) => void;
4876
+ /** Called with the trip the user saved. */
4317
4877
  onSaveTrip?: (trip: TeamScheduleEditorTrip) => void;
4878
+ /** Called with the trip the user deleted. */
4318
4879
  onDeleteTrip?: (trip: TeamScheduleEditorTrip) => void;
4880
+ /** Called with the event the user saved, and its trip when it has one. */
4319
4881
  onSaveEvent?: (event: TeamScheduleEditorEvent, trip?: TeamScheduleEditorTrip) => void;
4882
+ /** Called with the event the user deleted and the trip it came from. */
4320
4883
  onDeleteEvent?: (event: TeamScheduleEditorEvent, trip: TeamScheduleEditorTrip) => void;
4884
+ /** Called with the trip the user raised a group travel request for. */
4321
4885
  onOpenGroupTravelRequest?: (trip: TeamScheduleEditorTrip) => void;
4886
+ /** Called with the ids of the currently selected trips. */
4322
4887
  onSelectedTripsChange?: (ids: Array<string | number>) => void;
4888
+ /** Called with the ids of the currently selected events. */
4323
4889
  onSelectedEventsChange?: (ids: Array<string | number>) => void;
4890
+ /** Additional CSS class. */
4324
4891
  className?: string;
4325
4892
  }
4893
+ /**
4894
+ * Inline editor for a team's season: trips, and the events inside each trip.
4895
+ * Works controlled via `rows` or uncontrolled via `initialRows`.
4896
+ */
4326
4897
  declare const TeamScheduleEditor: ({ rows, initialRows, opponentOptions, onChange, onSaveTrip, onDeleteTrip, onSaveEvent, onDeleteEvent, onOpenGroupTravelRequest, onSelectedTripsChange, onSelectedEventsChange, className, }: TeamScheduleEditorProps) => React.JSX.Element;
4327
4898
 
4328
4899
  type TeamTravelCalendarDuration = 'month' | 'week';
4329
4900
  type TeamTravelCalendarItemType = 'trips' | 'due_dates';
4330
4901
  interface TeamTravelCalendarDueDate {
4902
+ /** Identifier for the task, unique within the trip. */
4331
4903
  taskid: number | string;
4904
+ /** Date the task is due. */
4332
4905
  duedate: string;
4906
+ /** Short task name shown on the calendar. */
4333
4907
  tasktitle: string;
4908
+ /** Longer explanation of what the task requires. */
4334
4909
  description?: string;
4910
+ /** Workflow status of the task. */
4335
4911
  status?: string;
4912
+ /** When the task was completed, absent while it is outstanding. */
4336
4913
  completeddatetime?: string;
4914
+ /** Who completed the task. */
4337
4915
  completedby?: string;
4916
+ /** Travel service the task belongs to (air, ground, hotel). */
4338
4917
  servicetype?: string;
4918
+ /** Sport the task belongs to. */
4339
4919
  sportCode?: string;
4920
+ /** Trip the task belongs to. */
4340
4921
  tripId?: string;
4922
+ /** Name of that trip, for display without a second lookup. */
4341
4923
  tripName?: string;
4924
+ /** Start date of that trip. */
4342
4925
  tripStart?: string;
4926
+ /** Master trip this task rolls up to. */
4343
4927
  masterTripGUID?: string;
4344
4928
  }
4345
4929
  interface TeamTravelCalendarEvent {
4930
+ /** Identifier for the event. */
4346
4931
  id?: string | number;
4932
+ /** Event name. */
4347
4933
  eventtitle?: string;
4934
+ /** Opposing team. */
4348
4935
  opponentname?: string;
4936
+ /** Where the event is played. */
4349
4937
  venuename?: string;
4938
+ /** Date the event starts. */
4350
4939
  eventstartdate?: string;
4940
+ /** Whether the event is home or away. */
4351
4941
  homeoraway?: string;
4352
4942
  }
4353
4943
  interface TeamTravelCalendarTrip {
4944
+ /** Stable identifier for the trip across systems. */
4354
4945
  masterTripGUID: string;
4946
+ /** Numeric trip identifier, where the legacy portal uses one. */
4355
4947
  masterTripID?: number | string;
4948
+ /** Sport the trip belongs to. */
4356
4949
  sportCode: string;
4950
+ /** First day of travel. */
4357
4951
  tripStart: string;
4952
+ /** Last day of travel. */
4358
4953
  tripEnd: string;
4954
+ /** Trip name shown on the calendar. */
4359
4955
  tripName: string;
4956
+ /** Booking status of the air portion. */
4360
4957
  air_status?: string;
4958
+ /** Booking status of the charter portion. */
4361
4959
  charter_status?: string;
4960
+ /** Booking status of the ground portion. */
4362
4961
  ground_status?: string;
4962
+ /** Booking status of the hotel portion. */
4363
4963
  hotel_status?: string;
4964
+ /** Tasks due for this trip. */
4364
4965
  duedates?: TeamTravelCalendarDueDate[];
4966
+ /** Competitions this trip covers. */
4365
4967
  events?: TeamTravelCalendarEvent[];
4366
4968
  }
4367
4969
  interface TeamTravelCalendarSportGroup {
4970
+ /** Sport the group covers. */
4368
4971
  sportCode: string;
4972
+ /** Human-readable sport name. */
4369
4973
  sportDescription: string;
4974
+ /** Number of upcoming trips, shown on the group header. */
4370
4975
  upcomingCount?: number;
4976
+ /** Start date of the next trip, shown on the group header. */
4371
4977
  nextTripStartDate?: string;
4978
+ /** Trips in the group. */
4372
4979
  trips: TeamTravelCalendarTrip[];
4373
4980
  }
4374
4981
  interface TeamTravelCalendarToolbarProps {
4982
+ /** Period the calendar currently spans. */
4375
4983
  duration: TeamTravelCalendarDuration;
4984
+ /** Period label shown between the navigation controls. */
4376
4985
  label?: string;
4377
4986
  /** Optional app-owned date picker/navigation control. */
4378
4987
  navigation?: ReactNode;
4988
+ /** Called with the newly selected period length. */
4379
4989
  onDurationChange?: (duration: TeamTravelCalendarDuration) => void;
4990
+ /** Called when the user jumps back to today. */
4380
4991
  onToday?: () => void;
4992
+ /** Called when the user steps back one period. */
4381
4993
  onPrevious?: () => void;
4994
+ /** Called when the user steps forward one period. */
4382
4995
  onNext?: () => void;
4996
+ /** Additional CSS class. */
4383
4997
  className?: string;
4384
4998
  }
4999
+ /**
5000
+ * Period controls shared by the calendar views: previous, next, today, and month/week.
5001
+ * Stateless -- the host owns the active date and passes the label back in.
5002
+ */
4385
5003
  declare const TeamTravelCalendarToolbar: ({ duration, label, navigation, onDurationChange, onToday, onPrevious, onNext, className, }: TeamTravelCalendarToolbarProps) => React.JSX.Element;
4386
5004
  interface TeamTravelCalendarViewProps {
5005
+ /** Any date inside the period to render. */
4387
5006
  activeDate: string;
5007
+ /** Whether to render a month or a week. */
4388
5008
  duration?: TeamTravelCalendarDuration;
5009
+ /** Whether cells plot trips or due dates. */
4389
5010
  type?: TeamTravelCalendarItemType;
5011
+ /** Trips to plot. Used when `type` is `trips`. */
4390
5012
  trips?: TeamTravelCalendarTrip[];
5013
+ /** Tasks to plot. Used when `type` is `due_dates`. */
4391
5014
  dueDates?: TeamTravelCalendarDueDate[];
5015
+ /** Date to mark as today. Defaults to the current date; set it to keep snapshots stable. */
4392
5016
  today?: string;
5017
+ /** Toolbar rendered above the grid, usually a TeamTravelCalendarToolbar. */
4393
5018
  toolbar?: ReactNode;
5019
+ /** Called with the trip the user opened. */
4394
5020
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5021
+ /** Called with the day the user opened, and the task when one was clicked directly. */
4395
5022
  onDueDateClick?: (date: string, dueDate?: TeamTravelCalendarDueDate) => void;
5023
+ /** Called with the task the user marked complete or incomplete. */
4396
5024
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5025
+ /** Additional CSS class. */
4397
5026
  className?: string;
4398
5027
  }
5028
+ /**
5029
+ * Month or week grid plotting a team's trips or task due dates onto calendar days.
5030
+ */
4399
5031
  declare const TeamTravelCalendarView: ({ activeDate, duration, type, trips, dueDates, today, toolbar, onTripClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarViewProps) => React.JSX.Element;
4400
5032
  interface TeamTravelCalendarCardViewProps {
5033
+ /** Trips grouped by sport, in display order. */
4401
5034
  groups: TeamTravelCalendarSportGroup[];
5035
+ /** Whether cards summarize trips or due dates. */
4402
5036
  type?: TeamTravelCalendarItemType;
5037
+ /** Toolbar rendered above the cards. */
4403
5038
  toolbar?: ReactNode;
5039
+ /** Called with the trip the user opened. */
4404
5040
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5041
+ /** Called with the task the user opened. */
4405
5042
  onDueDateClick?: (dueDate: TeamTravelCalendarDueDate) => void;
5043
+ /** Called with the task the user marked complete or incomplete. */
4406
5044
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5045
+ /** Additional CSS class. */
4407
5046
  className?: string;
4408
5047
  }
5048
+ /**
5049
+ * The same travel plotted as cards grouped by sport, for scanning across sports
5050
+ * rather than across dates.
5051
+ */
4409
5052
  declare const TeamTravelCalendarCardView: ({ groups, type, toolbar, onTripClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarCardViewProps) => React.JSX.Element;
4410
5053
  interface TeamTravelCalendarListViewProps {
5054
+ /** Trips to list, in display order. */
4411
5055
  trips: TeamTravelCalendarTrip[];
5056
+ /** Whether rows show trips or due dates. */
4412
5057
  type?: TeamTravelCalendarItemType;
5058
+ /** Toolbar rendered above the list. */
4413
5059
  toolbar?: ReactNode;
5060
+ /** Label describing the period the list covers. */
4414
5061
  periodLabel?: string;
5062
+ /** Count of upcoming trips shown in the list header. */
4415
5063
  upcomingTrips?: number;
5064
+ /** Called with the trip the user opened. */
4416
5065
  onTripClick?: (trip: TeamTravelCalendarTrip) => void;
5066
+ /** Called with the trip whose task list the user opened. */
4417
5067
  onDueDatesClick?: (trip: TeamTravelCalendarTrip) => void;
5068
+ /** Called with the task the user opened. */
4418
5069
  onDueDateClick?: (dueDate: TeamTravelCalendarDueDate) => void;
5070
+ /** Called with the task the user marked complete or incomplete. */
4419
5071
  onDueDateToggle?: (dueDate: TeamTravelCalendarDueDate) => void;
5072
+ /** Additional CSS class. */
4420
5073
  className?: string;
4421
5074
  }
5075
+ /**
5076
+ * The same travel as a dense chronological list, for long periods that a grid
5077
+ * cannot show at once.
5078
+ */
4422
5079
  declare const TeamTravelCalendarListView: ({ trips, type, toolbar, periodLabel, upcomingTrips, onTripClick, onDueDatesClick, onDueDateClick, onDueDateToggle, className, }: TeamTravelCalendarListViewProps) => React.JSX.Element;
5080
+ /**
5081
+ * Formats the heading for a calendar period -- "March 2026" for a month,
5082
+ * a date range for a week.
5083
+ */
4423
5084
  declare const getTeamTravelCalendarPeriodLabel: (activeDate: string, duration: TeamTravelCalendarDuration) => string;
5085
+ /**
5086
+ * Steps a date forward or back by whole periods, returning the new active date.
5087
+ * Pass a negative `amount` to step backwards.
5088
+ */
4424
5089
  declare const moveTeamTravelCalendarPeriod: (activeDate: string, duration: TeamTravelCalendarDuration, amount: number) => string;
4425
5090
 
4426
5091
  type TeamFormMode = 'Add' | 'Edit';
@@ -4440,84 +5105,154 @@ interface ManagedFormProps<T> {
4440
5105
  showActions?: boolean;
4441
5106
  /** Disable every field and action. */
4442
5107
  disabled?: boolean;
5108
+ /** Additional CSS class. */
4443
5109
  className?: string;
4444
5110
  }
4445
5111
  interface TeamEquipmentValues {
5112
+ /** What the item is. */
4446
5113
  description: string;
5114
+ /** Weight per unit, in pounds. Drives the manifest payload total. */
4447
5115
  weight: TeamNumericValue;
5116
+ /** How many are travelling. */
4448
5117
  quantity: TeamNumericValue;
5118
+ /** Height per unit, in inches. */
4449
5119
  height: TeamNumericValue;
5120
+ /** Width per unit, in inches. */
4450
5121
  width: TeamNumericValue;
5122
+ /** Depth per unit, in inches. */
4451
5123
  depth: TeamNumericValue;
4452
5124
  }
4453
5125
  interface TeamEquipmentFormProps extends ManagedFormProps<TeamEquipmentValues> {
5126
+ /** Whether the form is adding or editing. */
4454
5127
  mode?: TeamFormMode;
4455
5128
  }
5129
+ /**
5130
+ * Adds or edits a piece of team equipment, including the dimensions and weight
5131
+ * that charter payload planning depends on.
5132
+ */
4456
5133
  declare const TeamEquipmentForm: ({ mode, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, }: TeamEquipmentFormProps) => React.JSX.Element;
4457
5134
  interface TeamUserAccessValues {
5135
+ /** Portal user being granted access to the team. */
4458
5136
  userId: string;
4459
5137
  }
4460
5138
  interface TeamUserAccessFormProps extends ManagedFormProps<TeamUserAccessValues> {
5139
+ /** Portal users available to grant access to. */
4461
5140
  options: SelectOption[];
4462
5141
  }
5142
+ /**
5143
+ * Grants an existing portal user access to a team.
5144
+ */
4463
5145
  declare const TeamUserAccessForm: ({ options, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, }: TeamUserAccessFormProps) => React.JSX.Element;
4464
5146
  type TeamProgramType = 'Air' | 'Car' | 'Hotel';
4465
5147
  interface TeamProgramValues {
5148
+ /** Which loyalty program the number belongs to. */
4466
5149
  type: TeamProgramType;
5150
+ /** Supplier running the program. */
4467
5151
  supplier: string;
5152
+ /** The team's account or membership number. */
4468
5153
  accountNumber: string;
4469
5154
  }
4470
5155
  interface TeamProgramFormProps extends ManagedFormProps<TeamProgramValues> {
5156
+ /** Suppliers to offer per program type. Types left out fall back to a free-text entry. */
4471
5157
  supplierOptions?: Partial<Record<TeamProgramType, SelectOption[]>>;
4472
5158
  }
5159
+ /**
5160
+ * Records a loyalty or corporate program number the team travels under.
5161
+ */
4473
5162
  declare const TeamProgramForm: ({ values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, supplierOptions, }: TeamProgramFormProps) => React.JSX.Element;
4474
5163
  interface TeamRosterMemberValues {
5164
+ /** Portal user this roster member is linked to, when they have an account. */
4475
5165
  portalUserId: string;
5166
+ /** Given name, as it appears on the government ID used to travel. */
4476
5167
  firstName: string;
5168
+ /** Middle name, as it appears on that ID. */
4477
5169
  middleName: string;
5170
+ /** Confirms the traveler has no middle name, so the empty field is deliberate. */
4478
5171
  noMiddleName: boolean;
5172
+ /** Family name, as it appears on that ID. */
4479
5173
  lastName: string;
5174
+ /** Whether the traveler is an athlete, coach, staff member, or guest. */
4480
5175
  travelerType: string;
5176
+ /** Date of birth, required by carriers for ticketing. */
4481
5177
  birthDate: string;
5178
+ /** Gender as recorded on the travel document. */
4482
5179
  gender: string;
5180
+ /** Traveler weight, in pounds. Feeds charter payload calculations. */
4483
5181
  weight: TeamNumericValue;
5182
+ /** Passport number, for international travel. */
4484
5183
  passportNumber: string;
5184
+ /** TSA PreCheck / Known Traveler Number. */
4485
5185
  knownTravelerNumber: string;
5186
+ /** DHS redress number, where the traveler has one. */
4486
5187
  dhsRedressNumber: string;
5188
+ /** Airline the frequent flyer number belongs to. */
4487
5189
  airline: string;
5190
+ /** Frequent flyer number for that airline. */
4488
5191
  frequentFlyerNumber: string;
5192
+ /** Accessibility needs, seating, and meal requests. */
4489
5193
  specialRequests: string;
4490
5194
  }
4491
5195
  interface TeamPortalUserOption extends SelectOption {
5196
+ /** Traveler details to prefill the form with when this user is picked. */
4492
5197
  traveler?: Partial<TeamRosterMemberValues>;
4493
5198
  }
4494
5199
  interface TeamRosterMemberFormProps extends ManagedFormProps<TeamRosterMemberValues> {
5200
+ /** Whether the form is adding or editing. */
4495
5201
  mode?: TeamFormMode;
5202
+ /** Portal users a roster member can be created from. */
4496
5203
  portalUsers?: TeamPortalUserOption[];
5204
+ /** Airlines offered for the frequent flyer number. */
4497
5205
  airlineOptions?: SelectOption[];
5206
+ /** Traveler types offered. */
4498
5207
  travelerTypeOptions?: SelectOption[];
4499
5208
  }
5209
+ /**
5210
+ * Adds or edits a roster member, including the identity details carriers require
5211
+ * for ticketing. Can prefill from a linked portal user.
5212
+ */
4500
5213
  declare const TeamRosterMemberForm: ({ mode, values, initialValues, onChange, onSubmit, onCancel, showActions, disabled, className, portalUsers, airlineOptions, travelerTypeOptions, }: TeamRosterMemberFormProps) => React.JSX.Element;
4501
5214
  type TeamImportKind = 'equipment' | 'roster' | 'teamworks-roster';
4502
5215
  interface TeamImportFormProps {
5216
+ /** What the uploaded file contains. */
4503
5217
  kind: TeamImportKind;
5218
+ /** Called with the file the user chose. */
4504
5219
  onSubmit?: (file: File) => void;
5220
+ /** Called when the user abandons the import. */
4505
5221
  onCancel?: () => void;
5222
+ /** Disables the form while an import is running. */
4506
5223
  disabled?: boolean;
5224
+ /** Additional CSS class. */
4507
5225
  className?: string;
4508
5226
  }
5227
+ /**
5228
+ * Bulk-loads roster or equipment records from an uploaded file.
5229
+ */
4509
5230
  declare const TeamImportForm: ({ kind, onSubmit, onCancel, disabled, className }: TeamImportFormProps) => React.JSX.Element;
4510
5231
 
4511
5232
  interface TravelSummaryMetricsProps {
5233
+ /** Trips completed so far this season. */
4512
5234
  tripsTraveled?: string | number;
5235
+ /** Trips still ahead this season. */
4513
5236
  remainingTrips?: string | number;
5237
+ /** Total trip spend for the season. */
4514
5238
  seasonTripCosts?: string | number;
5239
+ /** Season the figures cover. */
4515
5240
  seasonLabel: string;
5241
+ /** Count of overdue tasks, surfaced as the one actionable tile. */
4516
5242
  overdueActions?: string | number;
5243
+ /** Called when the user opens the overdue tasks. The tile is static without it. */
4517
5244
  onOverdueActionsClick?: () => void;
5245
+ /** Additional CSS class. */
4518
5246
  className?: string;
4519
5247
  }
5248
+ /**
5249
+ * Formats a trip cost for a metric tile, abbreviating thousands so long figures
5250
+ * do not wrap.
5251
+ */
4520
5252
  declare const formatCompactTripCost: (value?: string | number) => string | undefined;
5253
+ /**
5254
+ * Season-at-a-glance tiles: trips taken, trips remaining, spend, and overdue tasks.
5255
+ */
4521
5256
  declare const TravelSummaryMetrics: ({ tripsTraveled, remainingTrips, seasonTripCosts, seasonLabel, overdueActions, onOverdueActionsClick, className, }: TravelSummaryMetricsProps) => React.JSX.Element;
4522
5257
 
4523
5258
  interface TravelerFormData {
@@ -4555,7 +5290,9 @@ interface TravelerFormProps {
4555
5290
  children?: ReactNode;
4556
5291
  /** Form sections - render props approach */
4557
5292
  renderNameSection?: (values: TravelerFormData) => ReactNode;
5293
+ /** Renders the traveler detail fields, given the current values. */
4558
5294
  renderDetailsSection?: (values: TravelerFormData) => ReactNode;
5295
+ /** Renders the travel preference fields, given the current values. */
4559
5296
  renderPreferencesSection?: (values: TravelerFormData) => ReactNode;
4560
5297
  /** Footer actions */
4561
5298
  footer?: ReactNode;
@@ -4629,6 +5366,9 @@ interface TripTableProps {
4629
5366
  /** Additional CSS class */
4630
5367
  className?: string;
4631
5368
  }
5369
+ /**
5370
+ * Trip listing with the segment, status, and date columns the travel screens share.
5371
+ */
4632
5372
  declare const TripTable: React__default.FC<TripTableProps>;
4633
5373
 
4634
5374
  type AdministrationTab = 'system' | 'client';
@@ -4639,13 +5379,19 @@ interface AdministrationCard {
4639
5379
  icon?: ReactNode;
4640
5380
  }
4641
5381
  interface AdministrationPageProps {
5382
+ /** Tab currently shown. */
4642
5383
  activeTab?: AdministrationTab;
4643
5384
  /** Authoritative tabs for the current viewer. An empty array renders no tab controls. */
4644
5385
  enabledTabs?: AdministrationTab[];
5386
+ /** Called with the tab the user selected. */
4645
5387
  onTabChange?: (tab: AdministrationTab) => void;
5388
+ /** Administration destinations offered on the current tab. */
4646
5389
  cards?: AdministrationCard[];
5390
+ /** Called with the destination the user opened. */
4647
5391
  onCardClick?: (card: AdministrationCard) => void;
5392
+ /** Content rendered below the cards, for a tab that hosts its own screen. */
4648
5393
  children?: ReactNode;
5394
+ /** Additional CSS class. */
4649
5395
  className?: string;
4650
5396
  }
4651
5397
  /** Hub administration shell and system-card index. */
@@ -4664,20 +5410,35 @@ interface AgentGroupTravelRequestsPageProps {
4664
5410
  today?: string;
4665
5411
  /** Shows the STM-employee-only quick links (agent request form, CDS requests, actionable items, administer views). */
4666
5412
  isStmEmployee?: boolean;
5413
+ /** Called when the agent returns to booking. */
4667
5414
  onBackToBookATrip?: () => void;
5415
+ /** Called when the agent raises a request on behalf of a school. */
4668
5416
  onSubmitNewRequest?: () => void;
5417
+ /** Called when the agent raises a request through the agent-only form. */
4669
5418
  onSubmitAgentRequest?: () => void;
5419
+ /** Called when the agent searches closed requests. */
4670
5420
  onSearchPastRequests?: () => void;
5421
+ /** Called when the agent opens the CDS request queue. */
4671
5422
  onShowCdsRequests?: () => void;
5423
+ /** Called when the agent opens the items needing action. */
4672
5424
  onShowActionableItems?: () => void;
5425
+ /** Called when the agent manages the saved account-group views. */
4673
5426
  onAdministerViews?: () => void;
5427
+ /** Called with the request the agent opened. */
4674
5428
  onOpenRequest?: (id: number) => void;
5429
+ /** Called with the master trip the agent opened. */
4675
5430
  onViewMasterTrip?: (masterTripId: number) => void;
5431
+ /** Called with the request the agent deleted. */
4676
5432
  onDeleteRequest?: (id: number) => void;
5433
+ /** Called with the record locator the agent copied. */
4677
5434
  onCopyPnr?: (recordLocator: string) => void;
5435
+ /** Called with the request and the milestone the agent marked complete or incomplete. */
4678
5436
  onToggleDueStatus?: (id: number, field: GroupTravelDueField) => void;
5437
+ /** Called with the request and its new submitted date. */
4679
5438
  onSubmittedDateChange?: (id: number, value: string) => void;
5439
+ /** Called with the request and its new quote-sent date. */
4680
5440
  onQuoteSentDateChange?: (id: number, value: string) => void;
5441
+ /** Additional CSS class. */
4681
5442
  className?: string;
4682
5443
  }
4683
5444
  /** Hub's agent-facing Group Travel Request screen — the "Book a Trip" quick links plus the open-requests list. */
@@ -4810,6 +5571,7 @@ interface ChampionshipBidDetailPageProps {
4810
5571
  onBack?: () => void;
4811
5572
  /** BCP 47 locale used to format seats and total cost. */
4812
5573
  locale?: string;
5574
+ /** Additional CSS class. */
4813
5575
  className?: string;
4814
5576
  }
4815
5577
  /**
@@ -5022,31 +5784,57 @@ interface CharterManifestEquipment {
5022
5784
  weight: number;
5023
5785
  }
5024
5786
  interface CharterManifestPageProps {
5787
+ /** Trip the manifest belongs to. */
5025
5788
  tripName: string;
5789
+ /** First day of travel. */
5026
5790
  travelStartDate?: string;
5791
+ /** Last day of travel. */
5027
5792
  travelEndDate?: string;
5793
+ /** Seats available on the aircraft. */
5028
5794
  seats: number;
5795
+ /** Maximum payload the aircraft can carry, in pounds. */
5029
5796
  payloadLimit: number;
5797
+ /** Total passenger weight, in pounds. */
5030
5798
  passengerWeight: number;
5799
+ /** Total cargo and equipment weight, in pounds. */
5031
5800
  cargoWeight: number;
5801
+ /** Operator flying the charter. */
5032
5802
  carrierName?: string;
5803
+ /** Note from the operator about the manifest. */
5033
5804
  carrierNote?: string;
5805
+ /** Passengers currently manifested. */
5034
5806
  passengers?: CharterManifestPassenger[];
5807
+ /** Equipment currently manifested. */
5035
5808
  equipment?: CharterManifestEquipment[];
5809
+ /** Flight segments the manifest covers. */
5036
5810
  segments?: CharterManifestSegment[];
5811
+ /** Whether the manifest is locked against further edits after a final send. */
5037
5812
  locked?: boolean;
5813
+ /** How far the manifest has progressed through initial and final sends. */
5038
5814
  sendState?: ManifestSendState;
5815
+ /** Called when the user leaves the manifest. */
5039
5816
  onBack?: () => void;
5817
+ /** Called when the user generates the manifest file for the operator. */
5040
5818
  onGenerateFile?: () => void;
5819
+ /** Called when the user reassigns the charter to another operator. */
5041
5820
  onChangeCarrier?: () => void;
5821
+ /** Called when the user splits the manifest across segments. */
5042
5822
  onSplitSegments?: () => void;
5823
+ /** Called when the user adds passengers. */
5043
5824
  onAddPassengers?: () => void;
5825
+ /** Called when the user adds equipment. */
5044
5826
  onAddEquipment?: () => void;
5827
+ /** Called with the passenger the user removed. */
5045
5828
  onRemovePassenger?: (passenger: CharterManifestPassenger) => void;
5829
+ /** Called with the equipment the user removed. */
5046
5830
  onRemoveEquipment?: (equipment: CharterManifestEquipment) => void;
5831
+ /** Called when the user sends the initial manifest to the operator. */
5047
5832
  onSendInitial?: () => void;
5833
+ /** Called when the user sends the final manifest, locking it. */
5048
5834
  onSendFinal?: () => void;
5835
+ /** Called when the user retracts an initial send. */
5049
5836
  onUndoInitial?: () => void;
5837
+ /** Additional CSS class. */
5050
5838
  className?: string;
5051
5839
  }
5052
5840
  /** Stateless, service-free rendering of Hub's charter manifest page. */
@@ -5104,6 +5892,7 @@ interface ChartersAccessManagementPageProps {
5104
5892
  onChangeRole?: (membership: ChartersAccessMembership, role: ChartersAccessRole) => void | Promise<void>;
5105
5893
  /** Remove STM Charters access after the page confirmation. */
5106
5894
  onRemoveAccess?: (membership: ChartersAccessMembership) => void | Promise<void>;
5895
+ /** Additional CSS class. */
5107
5896
  className?: string;
5108
5897
  }
5109
5898
  /**
@@ -5212,14 +6001,21 @@ interface ContactUsData {
5212
6001
  groupHotelContacts?: ContactInfo[];
5213
6002
  }
5214
6003
  interface ContactUsPageProps {
6004
+ /** Page heading. */
5215
6005
  title?: string;
6006
+ /** Which state to render. Drives the loading, empty, and error treatments. */
5216
6007
  state?: 'loading' | 'data' | 'empty' | 'error';
6008
+ /** Message shown in the error state. */
5217
6009
  errorMessage?: string;
6010
+ /** Contact details to show in the data state. */
5218
6011
  data?: ContactUsData;
6012
+ /** Called when the user prints the contact sheet. */
5219
6013
  onPrint?: () => void;
5220
6014
  /** Generic cards remain available for non-Hub consumers. */
5221
6015
  cards?: ContactCardData[];
6016
+ /** Content rendered below the cards. */
5222
6017
  children?: ReactNode;
6018
+ /** Additional CSS class. */
5223
6019
  className?: string;
5224
6020
  }
5225
6021
  /** Exact presentational counterpart of the Hub Contact Us screen. */
@@ -5274,21 +6070,37 @@ interface DashboardWidget {
5274
6070
  };
5275
6071
  }
5276
6072
  interface DashboardPageProps {
6073
+ /** Greeting line above the name. */
5277
6074
  greeting?: string;
6075
+ /** Name the greeting addresses. */
5278
6076
  firstName?: string;
6077
+ /** School or account shown in the subtitle. */
5279
6078
  accountName?: string;
6079
+ /** Widgets to render, in display order. */
5280
6080
  widgets?: DashboardWidget[];
6081
+ /** Platform-wide notices shown above the widgets. */
5281
6082
  systemBanners?: SystemBanner[];
6083
+ /** Travel alerts shown above the widgets. */
5282
6084
  alertBanners?: TravelAlertBanner[];
6085
+ /** Whether the layout is saved, saving, or failed to save. */
5283
6086
  syncStatus?: 'idle' | 'saving' | 'error';
6087
+ /** Called with the widget the user refreshed. */
5284
6088
  onRefresh?: (widget: DashboardWidget) => void;
6089
+ /** Called with the widget the user removed. */
5285
6090
  onRemove?: (widget: DashboardWidget) => void;
6091
+ /** Called with the widget and its new size. */
5286
6092
  onResize?: (widget: DashboardWidget, size: DashboardWidgetSize) => void;
6093
+ /** Called with the positions a widget moved from and to. */
5287
6094
  onReorder?: (from: number, to: number) => void;
6095
+ /** Called when the user restores the default layout. */
5288
6096
  onReset?: () => void;
6097
+ /** Called with the type of widget the user added. */
5289
6098
  onAddWidget?: (type: DashboardWidget['type']) => void;
6099
+ /** Called with the widget and the traveler date range the user picked. */
5290
6100
  onTravelerRangeChange?: (widget: DashboardWidget, range: DashboardTravelerRange) => void;
6101
+ /** Called with the route a widget link points at. The host performs the routing. */
5291
6102
  onNavigate?: (path: string, state?: unknown) => void;
6103
+ /** Additional CSS class. */
5292
6104
  className?: string;
5293
6105
  }
5294
6106
  /** Exact, service-free rendering of Hub's personalized home page. */
@@ -5369,22 +6181,33 @@ interface FeatureFlagManagementPageProps {
5369
6181
  rules: FeatureFlagRule[];
5370
6182
  /** Controlled account and audience options. */
5371
6183
  targetOptions: FeatureFlagTargetOptions;
6184
+ /** Whether the catalog and rules are still loading. */
5372
6185
  loading?: boolean;
6186
+ /** Load error shown in place of the rule list. */
5373
6187
  error?: string;
6188
+ /** Called when the user retries a failed load. */
5374
6189
  onRetry?: () => void;
5375
6190
  /** Host mutation state. It disables all mutation controls. */
5376
6191
  submitting?: boolean;
5377
6192
  /** Controlled user-search results are returned through `targetOptions.users`. */
5378
6193
  onSearchUsers?: (query: string, accountId?: FeatureFlagIdentifier) => void | Promise<void>;
6194
+ /** Whether a user search is in flight. */
5379
6195
  userSearchLoading?: boolean;
6196
+ /** Error from the last user search. */
5380
6197
  userSearchError?: string;
5381
6198
  /** Called when an account selection needs account-scoped audience options from the host. */
5382
6199
  onAccountChange?: (accountId?: FeatureFlagIdentifier) => void | Promise<void>;
6200
+ /** Whether account-scoped audience options are loading. */
5383
6201
  audienceLoading?: boolean;
6202
+ /** Error from the last audience load. */
5384
6203
  audienceError?: string;
6204
+ /** Called with the rule the user created. */
5385
6205
  onCreateRule?: (value: FeatureFlagRuleFormValue) => void | Promise<void>;
6206
+ /** Called with the edit the user submitted. */
5386
6207
  onEditRule?: (request: FeatureFlagRuleEditRequest) => void | Promise<void>;
6208
+ /** Called with the rule the user deactivated. */
5387
6209
  onDeactivateRule?: (request: FeatureFlagRuleDeactivateRequest) => void | Promise<void>;
6210
+ /** Additional CSS class. */
5388
6211
  className?: string;
5389
6212
  }
5390
6213
  /**
@@ -5407,20 +6230,36 @@ interface GroupTravelRequestContact {
5407
6230
  email?: string;
5408
6231
  }
5409
6232
  interface GroupTravelRequestPageProps {
6233
+ /** Event the request is being raised for, shown in the heading. */
5410
6234
  eventName?: string;
6235
+ /** Number of steps in the wizard, shown in the progress indicator. */
5411
6236
  totalPages?: number;
6237
+ /** Called with the completed request. */
5412
6238
  onSubmit?: (data: GroupTravelRequestValues) => void;
6239
+ /** Called when the user abandons the request. */
5413
6240
  onCancel?: () => void;
6241
+ /** Called with the full request on every field change. */
5414
6242
  onChange?: (data: GroupTravelRequestValues) => void;
6243
+ /** Values to prefill the wizard with. */
5415
6244
  initialValues?: GroupTravelRequestValues;
6245
+ /** Team contacts offered as the request contact. */
5416
6246
  contacts?: GroupTravelRequestContact[];
6247
+ /** Catering choices offered for the trip. */
5417
6248
  cateringOptions?: string[];
6249
+ /** Default pickup address, offered as the departure point. */
5418
6250
  schoolAddress?: string;
6251
+ /** Travel services the request can cover, and how each is configured. */
5419
6252
  services?: ServiceConfig[];
5420
6253
  /** Retained for consumers that provide a custom summary configuration. */
5421
6254
  summarySections?: SummarySectionConfig[];
6255
+ /** Additional CSS class. */
5422
6256
  className?: string;
5423
6257
  }
6258
+ /**
6259
+ * Multi-step wizard for requesting travel for a whole team.
6260
+ * Collects the trip, the services needed, and the traveling party, and hands the
6261
+ * completed request to the host through `onSubmit`.
6262
+ */
5424
6263
  declare const GroupTravelRequestPage: {
5425
6264
  ({ eventName, totalPages, onSubmit, onCancel, onChange, initialValues, contacts, cateringOptions, schoolAddress, services, summarySections, className, }: GroupTravelRequestPageProps): React.JSX.Element;
5426
6265
  displayName: string;
@@ -5539,6 +6378,10 @@ interface IndividualTravelPageProps {
5539
6378
  /** Additional CSS class. */
5540
6379
  className?: string;
5541
6380
  }
6381
+ /**
6382
+ * Landing page for a single traveler's own requests, listing what they have raised
6383
+ * and offering a new one.
6384
+ */
5542
6385
  declare const IndividualTravelPage: React__default.FC<IndividualTravelPageProps>;
5543
6386
 
5544
6387
  /** Travel services represented by the legacy individual-request record. */
@@ -5730,9 +6573,17 @@ interface IndividualTravelRequestFormPageProps {
5730
6573
  onRetry?: () => void;
5731
6574
  /** Optional account-specific fee or response-time notice. */
5732
6575
  notice?: ReactNode;
6576
+ /** Label for the submit button. */
5733
6577
  submitLabel?: string;
6578
+ /** Additional CSS class. */
5734
6579
  className?: string;
5735
6580
  }
6581
+ /**
6582
+ * Form for one traveler to request their own travel.
6583
+ * The questions asked come from the account configuration, so the host supplies
6584
+ * them rather than the page assuming a fixed set.
6585
+ * Renders read-only when no `onSubmit` is given.
6586
+ */
5736
6587
  declare const IndividualTravelRequestFormPage: React__default.FC<IndividualTravelRequestFormPageProps>;
5737
6588
 
5738
6589
  interface IndividualTravelRequestDetailPageProps {
@@ -5746,9 +6597,11 @@ interface IndividualTravelRequestDetailPageProps {
5746
6597
  notice?: ReactNode;
5747
6598
  /** Optional host-owned return route. Hidden when absent. */
5748
6599
  onBack?: () => void;
6600
+ /** Label for the back link. */
5749
6601
  backLabel?: string;
5750
6602
  /** Optional retry for a failed host query. Hidden unless an error is present. */
5751
6603
  onRetry?: () => void;
6604
+ /** Additional CSS class. */
5752
6605
  className?: string;
5753
6606
  }
5754
6607
  /**
@@ -6176,12 +7029,21 @@ interface RosterProgramNumberRow {
6176
7029
  accountNumber: string;
6177
7030
  }
6178
7031
  interface RosterProgramNumbersPageProps {
7032
+ /** Loyalty and corporate program numbers held for the team. */
6179
7033
  programs: RosterProgramNumberRow[];
7034
+ /** Whether the programs are still loading. */
6180
7035
  loading?: boolean;
7036
+ /** Whether a save is in flight. */
6181
7037
  saving?: boolean;
7038
+ /** Called when the user leaves the page. */
6182
7039
  onBack?: () => void;
7040
+ /** Called with the full set of programs the user saved. */
6183
7041
  onSubmit?: (programs: RosterProgramNumberRow[]) => void | Promise<void>;
6184
7042
  }
7043
+ /**
7044
+ * Edits the loyalty and corporate program numbers a team travels under, saving them
7045
+ * as one set.
7046
+ */
6185
7047
  declare const RosterProgramNumbersPage: {
6186
7048
  ({ programs, loading, saving, onBack, onSubmit, }: RosterProgramNumbersPageProps): React.JSX.Element;
6187
7049
  displayName: string;
@@ -6234,11 +7096,18 @@ interface RosterReportOption {
6234
7096
  description?: string;
6235
7097
  }
6236
7098
  interface RosterReportsPageProps {
7099
+ /** Reports the user can run. */
6237
7100
  reports: RosterReportOption[];
7101
+ /** Report currently running, shown as in progress. */
6238
7102
  runningReportId?: string;
7103
+ /** Called when the user leaves the page. */
6239
7104
  onBack?: () => void;
7105
+ /** Called with the report the user ran. */
6240
7106
  onRun?: (report: RosterReportOption) => void | Promise<void>;
6241
7107
  }
7108
+ /**
7109
+ * Lists the roster reports a user can run, and reports progress while one runs.
7110
+ */
6242
7111
  declare const RosterReportsPage: {
6243
7112
  ({ reports, runningReportId, onBack, onRun }: RosterReportsPageProps): React.JSX.Element;
6244
7113
  displayName: string;