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