@shortstravelmgmt/component-lib 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +88 -2
- package/dist/index.esm.js +422 -259
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +427 -258
- 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.esm.js
CHANGED
|
@@ -23,6 +23,7 @@ const ArrowUpRightIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d:
|
|
|
23
23
|
const ArrowDownLeftIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M17 7 7 17" }), jsx("path", { d: "M17 17H7V7" })] }), 'ArrowDownLeftIcon');
|
|
24
24
|
const EyeIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" }), jsx("circle", { cx: "12", cy: "12", r: "3" })] }), 'EyeIcon');
|
|
25
25
|
const DownloadIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), jsx("polyline", { points: "7 10 12 15 17 10" }), jsx("line", { x1: "12", x2: "12", y1: "15", y2: "3" })] }), 'DownloadIcon');
|
|
26
|
+
const UploadIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), jsx("polyline", { points: "17 8 12 3 7 8" }), jsx("line", { x1: "12", x2: "12", y1: "3", y2: "15" })] }), 'UploadIcon');
|
|
26
27
|
const FilterIcon$1 = createIcon(jsx("polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" }), 'FilterIcon');
|
|
27
28
|
const CalendarIcon$1 = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M8 2v4" }), jsx("path", { d: "M16 2v4" }), jsx("rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }), jsx("path", { d: "M3 10h18" })] }), 'CalendarIcon');
|
|
28
29
|
const UserIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }), jsx("circle", { cx: "12", cy: "7", r: "4" })] }), 'UserIcon');
|
|
@@ -107,7 +108,7 @@ const Icons = {
|
|
|
107
108
|
Trash: TrashIcon$2,
|
|
108
109
|
};
|
|
109
110
|
|
|
110
|
-
var styles$
|
|
111
|
+
var styles$1a = {"alert":"Alert-module_alert__xxiES","content":"Alert-module_content__CVX32","icon":"Alert-module_icon__Xyh6J","body":"Alert-module_body__TTkmt","title":"Alert-module_title__7wNPO","message":"Alert-module_message__plreL","dismissButton":"Alert-module_dismissButton__MdRWh","primary":"Alert-module_primary__nME13","success":"Alert-module_success__GDt4S","warning":"Alert-module_warning__y4bLx","error":"Alert-module_error__nKMAG"};
|
|
111
112
|
|
|
112
113
|
const variantIcons = {
|
|
113
114
|
primary: LightbulbIcon,
|
|
@@ -117,10 +118,10 @@ const variantIcons = {
|
|
|
117
118
|
};
|
|
118
119
|
const Alert = ({ variant = 'primary', title, children, dismissible = false, onDismiss, className = '', }) => {
|
|
119
120
|
const IconComponent = variantIcons[variant];
|
|
120
|
-
return (jsx("div", { className: `${styles$
|
|
121
|
+
return (jsx("div", { className: `${styles$1a.alert} ${styles$1a[variant]} ${className}`, role: "alert", children: jsxs("div", { className: styles$1a.content, children: [jsx(IconComponent, { className: styles$1a.icon, size: 20 }), jsxs("div", { className: styles$1a.body, children: [title && jsx("h4", { className: styles$1a.title, children: title }), jsx("div", { className: styles$1a.message, children: children })] }), dismissible && onDismiss && (jsx("button", { type: "button", onClick: onDismiss, className: styles$1a.dismissButton, "aria-label": "Dismiss alert", children: jsx(CloseIcon, { size: 16 }) }))] }) }));
|
|
121
122
|
};
|
|
122
123
|
|
|
123
|
-
var styles$
|
|
124
|
+
var styles$19 = {"avatar":"Avatar-module_avatar__AcTRg","xs":"Avatar-module_xs__4uGxI","sm":"Avatar-module_sm__NvzTi","md":"Avatar-module_md__PgY8p","lg":"Avatar-module_lg__lhkAZ","xl":"Avatar-module_xl__qTDTF","image":"Avatar-module_image__GX2c9","initials":"Avatar-module_initials__58FHH","group":"Avatar-module_group__XW0b1","overflow":"Avatar-module_overflow__ul4Cc"};
|
|
124
125
|
|
|
125
126
|
const getInitials = (name) => {
|
|
126
127
|
const parts = name.trim().split(/\s+/);
|
|
@@ -135,43 +136,43 @@ const getInitials = (name) => {
|
|
|
135
136
|
const Avatar = ({ src, alt, initials, name, size = 'md', className = '', ...props }) => {
|
|
136
137
|
const displayInitials = initials || (name ? getInitials(name) : '?');
|
|
137
138
|
const classNames = [
|
|
138
|
-
styles$
|
|
139
|
-
styles$
|
|
139
|
+
styles$19.avatar,
|
|
140
|
+
styles$19[size],
|
|
140
141
|
className,
|
|
141
142
|
]
|
|
142
143
|
.filter(Boolean)
|
|
143
144
|
.join(' ');
|
|
144
|
-
return (jsx("div", { className: classNames, ...props, children: src ? (jsx("img", { src: src, alt: alt || name || 'Avatar', className: styles$
|
|
145
|
+
return (jsx("div", { className: classNames, ...props, children: src ? (jsx("img", { src: src, alt: alt || name || 'Avatar', className: styles$19.image })) : (jsx("span", { className: styles$19.initials, children: displayInitials })) }));
|
|
145
146
|
};
|
|
146
147
|
Avatar.displayName = 'Avatar';
|
|
147
148
|
const AvatarGroup = ({ max = 4, className = '', children, ...props }) => {
|
|
148
149
|
const childArray = React.Children.toArray(children);
|
|
149
150
|
const visibleChildren = childArray.slice(0, max);
|
|
150
151
|
const remainingCount = childArray.length - max;
|
|
151
|
-
const classNames = [styles$
|
|
152
|
-
return (jsxs("div", { className: classNames, ...props, children: [visibleChildren, remainingCount > 0 && (jsx("div", { className: `${styles$
|
|
152
|
+
const classNames = [styles$19.group, className].filter(Boolean).join(' ');
|
|
153
|
+
return (jsxs("div", { className: classNames, ...props, children: [visibleChildren, remainingCount > 0 && (jsx("div", { className: `${styles$19.avatar} ${styles$19.md} ${styles$19.overflow}`, children: jsxs("span", { className: styles$19.initials, children: ["+", remainingCount] }) }))] }));
|
|
153
154
|
};
|
|
154
155
|
AvatarGroup.displayName = 'AvatarGroup';
|
|
155
156
|
|
|
156
|
-
var styles$
|
|
157
|
+
var styles$18 = {"badge":"Badge-module_badge__lvuUg","sm":"Badge-module_sm__OTBAp","md":"Badge-module_md__YG44i","dot":"Badge-module_dot__RgcVD","default":"Badge-module_default__1ga4w","success":"Badge-module_success__jEfI9","warning":"Badge-module_warning__978mf","error":"Badge-module_error__xZJlm","info":"Badge-module_info__Xk7MM"};
|
|
157
158
|
|
|
158
159
|
/**
|
|
159
160
|
* Badge component for status indicators, labels, and tags.
|
|
160
161
|
*/
|
|
161
162
|
const Badge = ({ variant = 'default', size = 'md', dot = false, className = '', children, ...props }) => {
|
|
162
163
|
const classNames = [
|
|
163
|
-
styles$
|
|
164
|
-
styles$
|
|
165
|
-
styles$
|
|
164
|
+
styles$18.badge,
|
|
165
|
+
styles$18[variant],
|
|
166
|
+
styles$18[size],
|
|
166
167
|
className,
|
|
167
168
|
]
|
|
168
169
|
.filter(Boolean)
|
|
169
170
|
.join(' ');
|
|
170
|
-
return (jsxs("span", { className: classNames, ...props, children: [dot && jsx("span", { className: styles$
|
|
171
|
+
return (jsxs("span", { className: classNames, ...props, children: [dot && jsx("span", { className: styles$18.dot }), children] }));
|
|
171
172
|
};
|
|
172
173
|
Badge.displayName = 'Badge';
|
|
173
174
|
|
|
174
|
-
var styles$
|
|
175
|
+
var styles$17 = {"button":"Button-module_button__xDdzH","sm":"Button-module_sm__fb2AF","md":"Button-module_md__XOa6t","lg":"Button-module_lg__UN9rL","square":"Button-module_square__-o34b","primary":"Button-module_primary__jWHqR","secondary":"Button-module_secondary__30FUq","outline":"Button-module_outline__v98mS","ghost":"Button-module_ghost__XUGB1","danger":"Button-module_danger__NUxPy","fullWidth":"Button-module_fullWidth__p2otK","loading":"Button-module_loading__TsL5I","spinner":"Button-module_spinner__6bZoj","spin":"Button-module_spin__ZPDMG","icon":"Button-module_icon__21hUM","content":"Button-module_content__iVRPQ"};
|
|
175
176
|
|
|
176
177
|
/**
|
|
177
178
|
* Primary button component for user interactions.
|
|
@@ -179,21 +180,21 @@ var styles$16 = {"button":"Button-module_button__xDdzH","sm":"Button-module_sm__
|
|
|
179
180
|
*/
|
|
180
181
|
const Button = forwardRef(({ variant = 'primary', size = 'md', fullWidth = false, loading = false, leftIcon, rightIcon, square = false, className = '', disabled, children, ...props }, ref) => {
|
|
181
182
|
const classNames = [
|
|
182
|
-
styles$
|
|
183
|
-
styles$
|
|
184
|
-
styles$
|
|
185
|
-
fullWidth ? styles$
|
|
186
|
-
square ? styles$
|
|
187
|
-
loading ? styles$
|
|
183
|
+
styles$17.button,
|
|
184
|
+
styles$17[variant],
|
|
185
|
+
styles$17[size],
|
|
186
|
+
fullWidth ? styles$17.fullWidth : '',
|
|
187
|
+
square ? styles$17.square : '',
|
|
188
|
+
loading ? styles$17.loading : '',
|
|
188
189
|
className,
|
|
189
190
|
]
|
|
190
191
|
.filter(Boolean)
|
|
191
192
|
.join(' ');
|
|
192
|
-
return (jsxs("button", { ref: ref, className: classNames, disabled: disabled || loading, ...props, children: [loading && (jsx("span", { className: styles$
|
|
193
|
+
return (jsxs("button", { ref: ref, className: classNames, disabled: disabled || loading, ...props, children: [loading && (jsx("span", { className: styles$17.spinner, children: jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("circle", { cx: "12", cy: "12", r: "10", strokeOpacity: "0.25" }), jsx("path", { d: "M12 2a10 10 0 0 1 10 10", strokeLinecap: "round" })] }) })), !loading && leftIcon && jsx("span", { className: styles$17.icon, children: leftIcon }), children && jsx("span", { className: styles$17.content, children: children }), !loading && rightIcon && jsx("span", { className: styles$17.icon, children: rightIcon })] }));
|
|
193
194
|
});
|
|
194
195
|
Button.displayName = 'Button';
|
|
195
196
|
|
|
196
|
-
var styles$
|
|
197
|
+
var styles$16 = {"wrapper":"Checkbox-module_wrapper__tYM-f","label":"Checkbox-module_label__x7c9f","disabled":"Checkbox-module_disabled__YtL8b","checkboxWrapper":"Checkbox-module_checkboxWrapper__ez0mi","input":"Checkbox-module_input__xBHoX","checkbox":"Checkbox-module_checkbox__zGuTf","sm":"Checkbox-module_sm__naurE","md":"Checkbox-module_md__LlE6O","lg":"Checkbox-module_lg__dMWT-","hasError":"Checkbox-module_hasError__aCefd","labelText":"Checkbox-module_labelText__7arlw","helperText":"Checkbox-module_helperText__jR4oi","errorText":"Checkbox-module_errorText__u8puP"};
|
|
197
198
|
|
|
198
199
|
const CheckIcon$1 = () => (jsx("svg", { width: "10", height: "8", viewBox: "0 0 10 8", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M1 4L3.5 6.5L9 1", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
199
200
|
const IndeterminateIcon = () => (jsx("svg", { width: "10", height: "2", viewBox: "0 0 10 2", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M1 1H9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }));
|
|
@@ -206,10 +207,10 @@ const Checkbox = forwardRef(({ label, size = 'md', helperText, error, indetermin
|
|
|
206
207
|
const helperId = `${checkboxId}-helper`;
|
|
207
208
|
const errorId = `${checkboxId}-error`;
|
|
208
209
|
const wrapperClasses = [
|
|
209
|
-
styles$
|
|
210
|
-
styles$
|
|
211
|
-
disabled ? styles$
|
|
212
|
-
error ? styles$
|
|
210
|
+
styles$16.wrapper,
|
|
211
|
+
styles$16[size],
|
|
212
|
+
disabled ? styles$16.disabled : '',
|
|
213
|
+
error ? styles$16.hasError : '',
|
|
213
214
|
className,
|
|
214
215
|
].filter(Boolean).join(' ');
|
|
215
216
|
// Handle indeterminate state via ref
|
|
@@ -225,13 +226,13 @@ const Checkbox = forwardRef(({ label, size = 'md', helperText, error, indetermin
|
|
|
225
226
|
ref.current = node;
|
|
226
227
|
}
|
|
227
228
|
};
|
|
228
|
-
return (jsxs("div", { className: wrapperClasses, children: [jsxs("label", { className: styles$
|
|
229
|
+
return (jsxs("div", { className: wrapperClasses, children: [jsxs("label", { className: styles$16.label, children: [jsxs("div", { className: styles$16.checkboxWrapper, children: [jsx("input", { ref: inputRef, type: "checkbox", id: checkboxId, className: styles$16.input, disabled: disabled, checked: checked, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
229
230
|
.filter(Boolean)
|
|
230
|
-
.join(' ') || undefined, ...props }), jsx("span", { className: styles$
|
|
231
|
+
.join(' ') || undefined, ...props }), jsx("span", { className: styles$16.checkbox, children: indeterminate ? jsx(IndeterminateIcon, {}) : jsx(CheckIcon$1, {}) })] }), label && jsx("span", { className: styles$16.labelText, children: label })] }), error && (jsx("span", { id: errorId, className: styles$16.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$16.helperText, children: helperText }))] }));
|
|
231
232
|
});
|
|
232
233
|
Checkbox.displayName = 'Checkbox';
|
|
233
234
|
|
|
234
|
-
var styles$
|
|
235
|
+
var styles$15 = {"wrapper":"Datepicker-module_wrapper__SdezU","fullWidth":"Datepicker-module_fullWidth__CAeMt","label":"Datepicker-module_label__qUNBV","inputWrapper":"Datepicker-module_inputWrapper__FK2IJ","sm":"Datepicker-module_sm__DuDMB","md":"Datepicker-module_md__oyus3","lg":"Datepicker-module_lg__2sqBg","icon":"Datepicker-module_icon__WdaRf","input":"Datepicker-module_input__4TCcy","disabled":"Datepicker-module_disabled__W0e-a","error":"Datepicker-module_error__XPpIy","helperText":"Datepicker-module_helperText__UllZP","errorText":"Datepicker-module_errorText__lveyr"};
|
|
235
236
|
|
|
236
237
|
const CalendarIcon = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), jsx("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), jsx("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), jsx("line", { x1: "3", y1: "10", x2: "21", y2: "10" })] }));
|
|
237
238
|
/**
|
|
@@ -243,23 +244,23 @@ const Datepicker = forwardRef(({ size = 'md', label, helperText, error, fullWidt
|
|
|
243
244
|
const helperId = `${inputId}-helper`;
|
|
244
245
|
const errorId = `${inputId}-error`;
|
|
245
246
|
const wrapperClasses = [
|
|
246
|
-
styles$
|
|
247
|
-
fullWidth ? styles$
|
|
247
|
+
styles$15.wrapper,
|
|
248
|
+
fullWidth ? styles$15.fullWidth : '',
|
|
248
249
|
className,
|
|
249
250
|
].filter(Boolean).join(' ');
|
|
250
251
|
const inputWrapperClasses = [
|
|
251
|
-
styles$
|
|
252
|
-
styles$
|
|
253
|
-
error ? styles$
|
|
254
|
-
disabled ? styles$
|
|
252
|
+
styles$15.inputWrapper,
|
|
253
|
+
styles$15[size],
|
|
254
|
+
error ? styles$15.error : '',
|
|
255
|
+
disabled ? styles$15.disabled : '',
|
|
255
256
|
].filter(Boolean).join(' ');
|
|
256
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
257
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$15.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [jsx("span", { className: styles$15.icon, children: jsx(CalendarIcon, {}) }), jsx("input", { ref: ref, type: "date", id: inputId, className: styles$15.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
257
258
|
.filter(Boolean)
|
|
258
|
-
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$
|
|
259
|
+
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$15.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$15.helperText, children: helperText }))] }));
|
|
259
260
|
});
|
|
260
261
|
Datepicker.displayName = 'Datepicker';
|
|
261
262
|
|
|
262
|
-
var styles$
|
|
263
|
+
var styles$14 = {"wrapper":"Input-module_wrapper__-8ija","fullWidth":"Input-module_fullWidth__xXOvN","label":"Input-module_label__t4LH-","inputWrapper":"Input-module_inputWrapper__U4EEd","error":"Input-module_error__fT9Sb","disabled":"Input-module_disabled__3tnIE","sm":"Input-module_sm__lGHP-","md":"Input-module_md__pReoW","lg":"Input-module_lg__iqqov","input":"Input-module_input__PeHY6","icon":"Input-module_icon__jkJiF","textarea":"Input-module_textarea__ZgdBz","helperText":"Input-module_helperText__eKsC8","errorText":"Input-module_errorText__xoiKP"};
|
|
263
264
|
|
|
264
265
|
/**
|
|
265
266
|
* Input component for text entry.
|
|
@@ -267,45 +268,45 @@ var styles$13 = {"wrapper":"Input-module_wrapper__-8ija","fullWidth":"Input-modu
|
|
|
267
268
|
const Input = forwardRef(({ size = 'md', label, helperText, error, leftIcon, rightIcon, fullWidth = false, className = '', id, disabled, ...props }, ref) => {
|
|
268
269
|
const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
269
270
|
const wrapperClasses = [
|
|
270
|
-
styles$
|
|
271
|
-
fullWidth ? styles$
|
|
271
|
+
styles$14.wrapper,
|
|
272
|
+
fullWidth ? styles$14.fullWidth : '',
|
|
272
273
|
className,
|
|
273
274
|
]
|
|
274
275
|
.filter(Boolean)
|
|
275
276
|
.join(' ');
|
|
276
277
|
const inputWrapperClasses = [
|
|
277
|
-
styles$
|
|
278
|
-
styles$
|
|
279
|
-
error ? styles$
|
|
280
|
-
disabled ? styles$
|
|
278
|
+
styles$14.inputWrapper,
|
|
279
|
+
styles$14[size],
|
|
280
|
+
error ? styles$14.error : '',
|
|
281
|
+
disabled ? styles$14.disabled : '',
|
|
281
282
|
]
|
|
282
283
|
.filter(Boolean)
|
|
283
284
|
.join(' ');
|
|
284
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
285
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$14.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [leftIcon && jsx("span", { className: styles$14.icon, children: leftIcon }), jsx("input", { ref: ref, id: inputId, className: styles$14.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : helperText ? `${inputId}-helper` : undefined, ...props }), rightIcon && jsx("span", { className: styles$14.icon, children: rightIcon })] }), error && (jsx("span", { id: `${inputId}-error`, className: styles$14.errorText, children: error })), helperText && !error && (jsx("span", { id: `${inputId}-helper`, className: styles$14.helperText, children: helperText }))] }));
|
|
285
286
|
});
|
|
286
287
|
Input.displayName = 'Input';
|
|
287
288
|
const Textarea = forwardRef(({ size = 'md', label, helperText, error, fullWidth = false, className = '', id, disabled, rows = 4, ...props }, ref) => {
|
|
288
289
|
const textareaId = id || `textarea-${Math.random().toString(36).substr(2, 9)}`;
|
|
289
290
|
const wrapperClasses = [
|
|
290
|
-
styles$
|
|
291
|
-
fullWidth ? styles$
|
|
291
|
+
styles$14.wrapper,
|
|
292
|
+
fullWidth ? styles$14.fullWidth : '',
|
|
292
293
|
className,
|
|
293
294
|
]
|
|
294
295
|
.filter(Boolean)
|
|
295
296
|
.join(' ');
|
|
296
297
|
const textareaClasses = [
|
|
297
|
-
styles$
|
|
298
|
-
styles$
|
|
299
|
-
error ? styles$
|
|
300
|
-
disabled ? styles$
|
|
298
|
+
styles$14.textarea,
|
|
299
|
+
styles$14[size],
|
|
300
|
+
error ? styles$14.error : '',
|
|
301
|
+
disabled ? styles$14.disabled : '',
|
|
301
302
|
]
|
|
302
303
|
.filter(Boolean)
|
|
303
304
|
.join(' ');
|
|
304
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: textareaId, className: styles$
|
|
305
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: textareaId, className: styles$14.label, children: label })), jsx("textarea", { ref: ref, id: textareaId, className: textareaClasses, disabled: disabled, rows: rows, "aria-invalid": !!error, "aria-describedby": error ? `${textareaId}-error` : helperText ? `${textareaId}-helper` : undefined, ...props }), error && (jsx("span", { id: `${textareaId}-error`, className: styles$14.errorText, children: error })), helperText && !error && (jsx("span", { id: `${textareaId}-helper`, className: styles$14.helperText, children: helperText }))] }));
|
|
305
306
|
});
|
|
306
307
|
Textarea.displayName = 'Textarea';
|
|
307
308
|
|
|
308
|
-
var styles$
|
|
309
|
+
var styles$13 = {"metric":"Metric-module_metric__LZ8D-","dark":"Metric-module_dark__FKdvj","clickable":"Metric-module_clickable__c3-pM","content":"Metric-module_content__YYpBG","valueRow":"Metric-module_valueRow__JpgYR","valueContainer":"Metric-module_valueContainer__CzjZ1","prefix":"Metric-module_prefix__Agpzq","value":"Metric-module_value__zspnf","suffix":"Metric-module_suffix__qvCMJ","warningIcon":"Metric-module_warningIcon__F-Ol5","label":"Metric-module_label__ydcti"};
|
|
309
310
|
|
|
310
311
|
const WarningIcon = () => (jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: jsx("path", { d: "M12 2L1 21h22L12 2zm0 3.5L19.5 19H4.5L12 5.5zM11 10v4h2v-4h-2zm0 6v2h2v-2h-2z" }) }));
|
|
311
312
|
/**
|
|
@@ -315,15 +316,15 @@ const WarningIcon = () => (jsx("svg", { width: "24", height: "24", viewBox: "0 0
|
|
|
315
316
|
const Metric = ({ value, label, prefix, suffix, dark = false, onClick, className = '', warning = false, }) => {
|
|
316
317
|
const displayValue = value !== undefined && !isNaN(parseFloat(String(value))) ? value : 0;
|
|
317
318
|
return (jsx("div", { className: `
|
|
318
|
-
${styles$
|
|
319
|
-
${dark ? styles$
|
|
320
|
-
${onClick ? styles$
|
|
319
|
+
${styles$13.metric}
|
|
320
|
+
${dark ? styles$13.dark : ''}
|
|
321
|
+
${onClick ? styles$13.clickable : ''}
|
|
321
322
|
${className}
|
|
322
|
-
`, onClick: onClick, children: value !== undefined && (jsxs("div", { className: styles$
|
|
323
|
+
`, onClick: onClick, children: value !== undefined && (jsxs("div", { className: styles$13.content, children: [jsxs("div", { className: styles$13.valueRow, children: [jsxs("div", { className: styles$13.valueContainer, children: [prefix && jsx("span", { className: styles$13.prefix, children: prefix }), jsx("span", { className: styles$13.value, children: displayValue }), suffix && jsx("span", { className: styles$13.suffix, children: suffix })] }), warning && (jsx("div", { className: styles$13.warningIcon, children: jsx(WarningIcon, {}) }))] }), jsx("div", { className: styles$13.label, children: label })] })) }));
|
|
323
324
|
};
|
|
324
325
|
Metric.displayName = 'Metric';
|
|
325
326
|
|
|
326
|
-
var styles$
|
|
327
|
+
var styles$12 = {"wrapper":"Select-module_wrapper__UN2Bo","fullWidth":"Select-module_fullWidth__GgV-D","label":"Select-module_label__aSRVE","selectWrapper":"Select-module_selectWrapper__OCGYf","sm":"Select-module_sm__oTHGX","md":"Select-module_md__VSZQg","lg":"Select-module_lg__nknhY","select":"Select-module_select__DY-Id","hasLeftIcon":"Select-module_hasLeftIcon__ZrReQ","leftIcon":"Select-module_leftIcon__nBU1-","chevron":"Select-module_chevron__1MAEQ","disabled":"Select-module_disabled__0GOXE","error":"Select-module_error__Yijk5","helperText":"Select-module_helperText__rHrqP","errorText":"Select-module_errorText__1kM2R"};
|
|
327
328
|
|
|
328
329
|
const ChevronDownIcon = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polyline", { points: "6 9 12 15 18 9" }) }));
|
|
329
330
|
/**
|
|
@@ -335,16 +336,16 @@ const Select = forwardRef(({ options, optionGroups, size = 'md', label, placehol
|
|
|
335
336
|
const helperId = `${selectId}-helper`;
|
|
336
337
|
const errorId = `${selectId}-error`;
|
|
337
338
|
const wrapperClasses = [
|
|
338
|
-
styles$
|
|
339
|
-
fullWidth ? styles$
|
|
339
|
+
styles$12.wrapper,
|
|
340
|
+
fullWidth ? styles$12.fullWidth : '',
|
|
340
341
|
className,
|
|
341
342
|
].filter(Boolean).join(' ');
|
|
342
343
|
const selectWrapperClasses = [
|
|
343
|
-
styles$
|
|
344
|
-
styles$
|
|
345
|
-
error ? styles$
|
|
346
|
-
disabled ? styles$
|
|
347
|
-
leftIcon ? styles$
|
|
344
|
+
styles$12.selectWrapper,
|
|
345
|
+
styles$12[size],
|
|
346
|
+
error ? styles$12.error : '',
|
|
347
|
+
disabled ? styles$12.disabled : '',
|
|
348
|
+
leftIcon ? styles$12.hasLeftIcon : '',
|
|
348
349
|
].filter(Boolean).join(' ');
|
|
349
350
|
const renderOptions = () => {
|
|
350
351
|
// Render grouped options
|
|
@@ -357,19 +358,19 @@ const Select = forwardRef(({ options, optionGroups, size = 'md', label, placehol
|
|
|
357
358
|
}
|
|
358
359
|
return null;
|
|
359
360
|
};
|
|
360
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: selectId, className: styles$
|
|
361
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: selectId, className: styles$12.label, children: label })), jsxs("div", { className: selectWrapperClasses, children: [leftIcon && jsx("span", { className: styles$12.leftIcon, children: leftIcon }), jsxs("select", { ref: ref, id: selectId, className: styles$12.select, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
361
362
|
.filter(Boolean)
|
|
362
|
-
.join(' ') || undefined, ...props, children: [placeholder && (jsx("option", { value: "", disabled: true, children: placeholder })), renderOptions()] }), jsx("span", { className: styles$
|
|
363
|
+
.join(' ') || undefined, ...props, children: [placeholder && (jsx("option", { value: "", disabled: true, children: placeholder })), renderOptions()] }), jsx("span", { className: styles$12.chevron, children: jsx(ChevronDownIcon, {}) })] }), error && (jsx("span", { id: errorId, className: styles$12.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$12.helperText, children: helperText }))] }));
|
|
363
364
|
});
|
|
364
365
|
Select.displayName = 'Select';
|
|
365
366
|
|
|
366
|
-
var styles$
|
|
367
|
+
var styles$11 = {"spinner":"Spinner-module_spinner__OZwmB","svg":"Spinner-module_svg__Tusqk","spin":"Spinner-module_spin__YAPc9","track":"Spinner-module_track__NxLfV","indicator":"Spinner-module_indicator__gSUxF","xs":"Spinner-module_xs__4-WEg","sm":"Spinner-module_sm__enoDn","md":"Spinner-module_md__6axf9","lg":"Spinner-module_lg__EvJyC","xl":"Spinner-module_xl__yIXoK","srOnly":"Spinner-module_srOnly__WnZYf"};
|
|
367
368
|
|
|
368
369
|
const Spinner = ({ size = 'md', className = '', color, label = 'Loading...', }) => {
|
|
369
|
-
return (jsxs("span", { className: `${styles$
|
|
370
|
+
return (jsxs("span", { className: `${styles$11.spinner} ${styles$11[size]} ${className}`, role: "status", "aria-label": label, style: color ? { color } : undefined, children: [jsxs("svg", { className: styles$11.svg, xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [jsx("circle", { className: styles$11.track, cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), jsx("path", { className: styles$11.indicator, fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), jsx("span", { className: styles$11.srOnly, children: label })] }));
|
|
370
371
|
};
|
|
371
372
|
|
|
372
|
-
var styles
|
|
373
|
+
var styles$10 = {"badge":"StatusBadge-module_badge__-BwEk","ticketed":"StatusBadge-module_ticketed__AJVZM","itinerary":"StatusBadge-module_itinerary__yRFNy","not-ticketed":"StatusBadge-module_not-ticketed__76GXg","submitted":"StatusBadge-module_submitted__QW0LL","pending":"StatusBadge-module_pending__FpMYC","cancelled":"StatusBadge-module_cancelled__XRz4S"};
|
|
373
374
|
|
|
374
375
|
const statusLabels = {
|
|
375
376
|
ticketed: 'Ticketed',
|
|
@@ -381,20 +382,20 @@ const statusLabels = {
|
|
|
381
382
|
};
|
|
382
383
|
const StatusBadge = ({ status, label, className, }) => {
|
|
383
384
|
const displayLabel = label || statusLabels[status] || status;
|
|
384
|
-
return (jsx("span", { className: `${styles
|
|
385
|
+
return (jsx("span", { className: `${styles$10.badge} ${styles$10[status]} ${className || ''}`, "data-status": status, children: displayLabel }));
|
|
385
386
|
};
|
|
386
387
|
|
|
387
|
-
var styles
|
|
388
|
+
var styles$$ = {"tag":"Tag-module_tag__uQVQa","content":"Tag-module_content__Z5bK9","sm":"Tag-module_sm__DvKJV","md":"Tag-module_md__KTo2m","lg":"Tag-module_lg__8xhWB","default":"Tag-module_default__5-uQz","primary":"Tag-module_primary__lwwYl","success":"Tag-module_success__kl3II","warning":"Tag-module_warning__peZRm","error":"Tag-module_error__6xzkl","info":"Tag-module_info__eKYiV","clickable":"Tag-module_clickable__TyiNK","removeButton":"Tag-module_removeButton__peMwo","removeIcon":"Tag-module_removeIcon__dQyJZ"};
|
|
388
389
|
|
|
389
390
|
const Tag = ({ children, variant = 'default', size = 'md', removable = false, onRemove, onClick, className = '', style, }) => {
|
|
390
391
|
const isClickable = Boolean(onClick);
|
|
391
|
-
return (jsxs("span", { className: `${styles
|
|
392
|
+
return (jsxs("span", { className: `${styles$$.tag} ${styles$$[variant]} ${styles$$[size]} ${isClickable ? styles$$.clickable : ''} ${className}`, onClick: onClick, style: style, role: isClickable ? 'button' : undefined, tabIndex: isClickable ? 0 : undefined, children: [jsx("span", { className: styles$$.content, children: children }), removable && (jsx("button", { type: "button", className: styles$$.removeButton, onClick: (e) => {
|
|
392
393
|
e.stopPropagation();
|
|
393
394
|
onRemove?.();
|
|
394
|
-
}, "aria-label": "Remove", children: jsx("svg", { className: styles
|
|
395
|
+
}, "aria-label": "Remove", children: jsx("svg", { className: styles$$.removeIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }))] }));
|
|
395
396
|
};
|
|
396
397
|
|
|
397
|
-
var styles$
|
|
398
|
+
var styles$_ = {"wrapper":"Timepicker-module_wrapper__pPrwn","fullWidth":"Timepicker-module_fullWidth__de3hO","label":"Timepicker-module_label__5RDrm","inputWrapper":"Timepicker-module_inputWrapper__-E5pk","sm":"Timepicker-module_sm__sWJu2","md":"Timepicker-module_md__TfpGX","lg":"Timepicker-module_lg__xSlw-","icon":"Timepicker-module_icon__NuPk4","input":"Timepicker-module_input__NxTmR","disabled":"Timepicker-module_disabled__lyxzF","error":"Timepicker-module_error__TOMK7","helperText":"Timepicker-module_helperText__MmcqS","errorText":"Timepicker-module_errorText__pXdnE"};
|
|
398
399
|
|
|
399
400
|
const ClockIcon = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("circle", { cx: "12", cy: "12", r: "10" }), jsx("polyline", { points: "12 6 12 12 16 14" })] }));
|
|
400
401
|
/**
|
|
@@ -406,34 +407,34 @@ const Timepicker = forwardRef(({ size = 'md', label, helperText, error, fullWidt
|
|
|
406
407
|
const helperId = `${inputId}-helper`;
|
|
407
408
|
const errorId = `${inputId}-error`;
|
|
408
409
|
const wrapperClasses = [
|
|
409
|
-
styles$
|
|
410
|
-
fullWidth ? styles$
|
|
410
|
+
styles$_.wrapper,
|
|
411
|
+
fullWidth ? styles$_.fullWidth : '',
|
|
411
412
|
className,
|
|
412
413
|
].filter(Boolean).join(' ');
|
|
413
414
|
const inputWrapperClasses = [
|
|
414
|
-
styles$
|
|
415
|
-
styles$
|
|
416
|
-
error ? styles$
|
|
417
|
-
disabled ? styles$
|
|
415
|
+
styles$_.inputWrapper,
|
|
416
|
+
styles$_[size],
|
|
417
|
+
error ? styles$_.error : '',
|
|
418
|
+
disabled ? styles$_.disabled : '',
|
|
418
419
|
].filter(Boolean).join(' ');
|
|
419
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
420
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$_.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [jsx("span", { className: styles$_.icon, children: jsx(ClockIcon, {}) }), jsx("input", { ref: ref, type: "time", id: inputId, className: styles$_.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
420
421
|
.filter(Boolean)
|
|
421
|
-
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$
|
|
422
|
+
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$_.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$_.helperText, children: helperText }))] }));
|
|
422
423
|
});
|
|
423
424
|
Timepicker.displayName = 'Timepicker';
|
|
424
425
|
|
|
425
|
-
var styles$
|
|
426
|
+
var styles$Z = {"title":"Title-module_title__mSSqn","light":"Title-module_light__7mlh-","normal":"Title-module_normal__ZYrS4","medium":"Title-module_medium__UK-Bj","semibold":"Title-module_semibold__07lTs","bold":"Title-module_bold__-oWUS"};
|
|
426
427
|
|
|
427
428
|
/**
|
|
428
429
|
* Title component for page headings.
|
|
429
430
|
* Large, prominent text for page titles.
|
|
430
431
|
*/
|
|
431
432
|
const Title = ({ children, weight = 'light', className = '', }) => {
|
|
432
|
-
return (jsx("h1", { className: `${styles$
|
|
433
|
+
return (jsx("h1", { className: `${styles$Z.title} ${styles$Z[weight]} ${className}`, children: children }));
|
|
433
434
|
};
|
|
434
435
|
Title.displayName = 'Title';
|
|
435
436
|
|
|
436
|
-
var styles$
|
|
437
|
+
var styles$Y = {"toggle":"Toggle-module_toggle__lRFvk","checked":"Toggle-module_checked__duOWU","disabled":"Toggle-module_disabled__DV2FB","thumb":"Toggle-module_thumb__ehIbb","sm":"Toggle-module_sm__Gs9bK","md":"Toggle-module_md__hTNCY","lg":"Toggle-module_lg__DpHtS","wrapper":"Toggle-module_wrapper__-Bvff","wrapperDisabled":"Toggle-module_wrapperDisabled__ZSCvM","label":"Toggle-module_label__GeuIf"};
|
|
437
438
|
|
|
438
439
|
const Toggle = ({ checked, onChange, disabled = false, size = 'md', label, labelPosition = 'right', className = '', 'aria-label': ariaLabel, }) => {
|
|
439
440
|
const handleClick = () => {
|
|
@@ -447,14 +448,14 @@ const Toggle = ({ checked, onChange, disabled = false, size = 'md', label, label
|
|
|
447
448
|
onChange?.(!checked);
|
|
448
449
|
}
|
|
449
450
|
};
|
|
450
|
-
const toggleElement = (jsx("div", { className: `${styles$
|
|
451
|
+
const toggleElement = (jsx("div", { className: `${styles$Y.toggle} ${styles$Y[size]} ${checked ? styles$Y.checked : ''} ${disabled ? styles$Y.disabled : ''} ${className}`, onClick: handleClick, onKeyDown: handleKeyDown, role: "switch", "aria-checked": checked, "aria-disabled": disabled, "aria-label": ariaLabel || label, tabIndex: disabled ? -1 : 0, children: jsx("span", { className: styles$Y.thumb }) }));
|
|
451
452
|
if (label) {
|
|
452
|
-
return (jsxs("label", { className: `${styles$
|
|
453
|
+
return (jsxs("label", { className: `${styles$Y.wrapper} ${disabled ? styles$Y.wrapperDisabled : ''}`, children: [labelPosition === 'left' && jsx("span", { className: styles$Y.label, children: label }), toggleElement, labelPosition === 'right' && jsx("span", { className: styles$Y.label, children: label })] }));
|
|
453
454
|
}
|
|
454
455
|
return toggleElement;
|
|
455
456
|
};
|
|
456
457
|
|
|
457
|
-
var styles$
|
|
458
|
+
var styles$X = {"wrapper":"Tooltip-module_wrapper__9SUwl","tooltip":"Tooltip-module_tooltip__KQ7km","fadeIn":"Tooltip-module_fadeIn__dL8S5","content":"Tooltip-module_content__kO8yx","dark":"Tooltip-module_dark__Y66ss","light":"Tooltip-module_light__mItfR","top":"Tooltip-module_top__1jrIn","bottom":"Tooltip-module_bottom__99YBc","left":"Tooltip-module_left__ZNd1H","right":"Tooltip-module_right__r0j5Q","arrow":"Tooltip-module_arrow__qcKWx","arrowTop":"Tooltip-module_arrowTop__k13dt","arrowBottom":"Tooltip-module_arrowBottom__FP-w2","arrowLeft":"Tooltip-module_arrowLeft__7T1uO","arrowRight":"Tooltip-module_arrowRight__FbPdB"};
|
|
458
459
|
|
|
459
460
|
const Tooltip = ({ content, children, position = 'top', variant = 'dark', delay = 200, disabled = false, className = '', }) => {
|
|
460
461
|
const [isVisible, setIsVisible] = useState(false);
|
|
@@ -518,10 +519,10 @@ const Tooltip = ({ content, children, position = 'top', variant = 'dark', delay
|
|
|
518
519
|
}
|
|
519
520
|
};
|
|
520
521
|
}, []);
|
|
521
|
-
return (jsxs("div", { ref: triggerRef, className: `${styles$
|
|
522
|
+
return (jsxs("div", { ref: triggerRef, className: `${styles$X.wrapper} ${className}`, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, children: [children, isVisible && content && (jsxs("div", { ref: tooltipRef, className: `${styles$X.tooltip} ${styles$X[actualPosition]} ${styles$X[variant]}`, role: "tooltip", children: [jsx("div", { className: styles$X.content, children: content }), jsx("div", { className: `${styles$X.arrow} ${styles$X[`arrow${actualPosition.charAt(0).toUpperCase()}${actualPosition.slice(1)}`]}` })] }))] }));
|
|
522
523
|
};
|
|
523
524
|
|
|
524
|
-
var styles$
|
|
525
|
+
var styles$W = {"service":"TravelServiceIcon-module_service__-4EZb","code":"TravelServiceIcon-module_code__vElzI","multi":"TravelServiceIcon-module_multi__nqZLM","multiIndicator":"TravelServiceIcon-module_multiIndicator__KJF1L"};
|
|
525
526
|
|
|
526
527
|
// Airline brand colors
|
|
527
528
|
const vendorColors = {
|
|
@@ -561,16 +562,16 @@ const TravelServiceIcon = ({ type, vendor, mode = 'icon', size = 28, multi = fal
|
|
|
561
562
|
const colors = mode === 'icon' && vendorColors[vendorKey]
|
|
562
563
|
? vendorColors[vendorKey]
|
|
563
564
|
: typeColors$1[type] || typeColors$1.U;
|
|
564
|
-
return (jsxs("span", { className: `${styles$
|
|
565
|
+
return (jsxs("span", { className: `${styles$W.service} ${multi ? styles$W.multi : ''} ${className || ''}`, style: {
|
|
565
566
|
width: size,
|
|
566
567
|
height: size,
|
|
567
568
|
backgroundColor: colors.bg,
|
|
568
569
|
color: colors.fg,
|
|
569
570
|
fontSize: size * 0.4,
|
|
570
|
-
}, title: vendor ? `${vendor} (${type})` : type, children: [mode === 'code' && vendor ? (jsx("span", { className: styles$
|
|
571
|
+
}, title: vendor ? `${vendor} (${type})` : type, children: [mode === 'code' && vendor ? (jsx("span", { className: styles$W.code, children: vendor })) : (jsx("svg", { viewBox: "0 0 24 24", width: size * 0.55, height: size * 0.55, fill: "currentColor", children: typeIcons$1[type] || typeIcons$1.U })), multi && jsx("span", { className: styles$W.multiIndicator, children: "+" })] }));
|
|
571
572
|
};
|
|
572
573
|
|
|
573
|
-
var styles$
|
|
574
|
+
var styles$V = {"icon":"TypeIcon-module_icon__WUL-x"};
|
|
574
575
|
|
|
575
576
|
const typeLabels = {
|
|
576
577
|
A: 'Air',
|
|
@@ -603,7 +604,7 @@ const typeIcons = {
|
|
|
603
604
|
const TypeIcon = ({ type, size = 18, showTooltip = true, className, }) => {
|
|
604
605
|
const colors = typeColors[type] || typeColors.U;
|
|
605
606
|
const label = typeLabels[type] || 'Unknown';
|
|
606
|
-
return (jsx("span", { className: `${styles$
|
|
607
|
+
return (jsx("span", { className: `${styles$V.icon} ${className || ''}`, style: {
|
|
607
608
|
width: size,
|
|
608
609
|
height: size,
|
|
609
610
|
backgroundColor: colors.bg,
|
|
@@ -611,7 +612,7 @@ const TypeIcon = ({ type, size = 18, showTooltip = true, className, }) => {
|
|
|
611
612
|
}, title: showTooltip ? label : undefined, "aria-label": label, children: jsx("svg", { viewBox: "0 0 24 24", width: size * 0.6, height: size * 0.6, fill: "currentColor", children: typeIcons[type] || typeIcons.U }) }));
|
|
612
613
|
};
|
|
613
614
|
|
|
614
|
-
var styles$
|
|
615
|
+
var styles$U = {"accordion":"Accordion-module_accordion__I3hmS","headerContainer":"Accordion-module_headerContainer__QhfHx","toggle":"Accordion-module_toggle__rlK5n","caret":"Accordion-module_caret__iZAh1","open":"Accordion-module_open__5jX-w","header":"Accordion-module_header__gzKrn","body":"Accordion-module_body__xTgL6","hidden":"Accordion-module_hidden__wcCWd","visible":"Accordion-module_visible__116om","timeline":"Accordion-module_timeline__ikrdK","line":"Accordion-module_line__buDP1","endCaret":"Accordion-module_endCaret__OXpPJ","content":"Accordion-module_content__aL8Vn"};
|
|
615
616
|
|
|
616
617
|
const CaretIcon = ({ className }) => (jsx("svg", { className: className, width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polyline", { points: "9 18 15 12 9 6" }) }));
|
|
617
618
|
/**
|
|
@@ -629,21 +630,21 @@ const Accordion = ({ header, children, defaultOpen = true, open: controlledOpen,
|
|
|
629
630
|
}
|
|
630
631
|
onOpenChange?.(newOpen);
|
|
631
632
|
};
|
|
632
|
-
return (jsxs("div", { className: `${styles$
|
|
633
|
+
return (jsxs("div", { className: `${styles$U.accordion} ${className || ''}`, children: [jsxs("div", { className: styles$U.headerContainer, children: [jsx("button", { type: "button", className: styles$U.toggle, onClick: handleToggle, "aria-expanded": isOpen, children: jsx(CaretIcon, { className: `${styles$U.caret} ${isOpen ? styles$U.open : ''}` }) }), jsx("div", { className: styles$U.header, children: header })] }), jsxs("div", { className: `${styles$U.body} ${isOpen ? styles$U.visible : styles$U.hidden}`, "aria-hidden": !isOpen, children: [showTimeline && (jsxs("div", { className: styles$U.timeline, children: [jsx("div", { className: styles$U.line }), jsx(CaretIcon, { className: styles$U.endCaret })] })), jsx("div", { className: styles$U.content, children: children })] })] }));
|
|
633
634
|
};
|
|
634
635
|
Accordion.displayName = 'Accordion';
|
|
635
636
|
|
|
636
|
-
var styles$
|
|
637
|
+
var styles$T = {"selector":"CalendarSelectors-module_selector__1nDos","item":"CalendarSelectors-module_item__CoR5s","active":"CalendarSelectors-module_active__u4w6Z","sm":"CalendarSelectors-module_sm__ju5t-","withLabel":"CalendarSelectors-module_withLabel__Jr9Re","md":"CalendarSelectors-module_md__a-U38","lg":"CalendarSelectors-module_lg__WHvAF","iconOnly":"CalendarSelectors-module_iconOnly__cAjyD"};
|
|
637
638
|
|
|
638
639
|
const ListIcon = () => (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: [jsx("line", { x1: "8", y1: "6", x2: "21", y2: "6" }), jsx("line", { x1: "8", y1: "12", x2: "21", y2: "12" }), jsx("line", { x1: "8", y1: "18", x2: "21", y2: "18" }), jsx("circle", { cx: "3", cy: "6", r: "1", fill: "currentColor", stroke: "none" }), jsx("circle", { cx: "3", cy: "12", r: "1", fill: "currentColor", stroke: "none" }), jsx("circle", { cx: "3", cy: "18", r: "1", fill: "currentColor", stroke: "none" })] }));
|
|
639
|
-
const SegmentedSelector = ({ options, value, onChange, disabled = false, size = 'md', className = '', ariaLabel = 'View options', }) => (jsx("div", { className: [styles$
|
|
640
|
+
const SegmentedSelector = ({ options, value, onChange, disabled = false, size = 'md', className = '', ariaLabel = 'View options', }) => (jsx("div", { className: [styles$T.selector, className].filter(Boolean).join(' '), role: "group", "aria-label": ariaLabel, children: options.map((option) => {
|
|
640
641
|
const active = option.id === value;
|
|
641
642
|
const accessibleName = option.alt ?? option.label ?? option.id;
|
|
642
643
|
return (jsxs("button", { type: "button", title: accessibleName, "aria-label": accessibleName, "aria-pressed": active, disabled: disabled, className: [
|
|
643
|
-
styles$
|
|
644
|
-
styles$
|
|
645
|
-
option.label ? styles$
|
|
646
|
-
active ? styles$
|
|
644
|
+
styles$T.item,
|
|
645
|
+
styles$T[size],
|
|
646
|
+
option.label ? styles$T.withLabel : styles$T.iconOnly,
|
|
647
|
+
active ? styles$T.active : '',
|
|
647
648
|
].filter(Boolean).join(' '), onClick: () => onChange?.(option.id), children: [option.icon, option.label && jsx("span", { children: option.label })] }, option.id));
|
|
648
649
|
}) }));
|
|
649
650
|
const CalendarViewSelector = ({ value, onChange, ...props }) => (jsx(SegmentedSelector, { ...props, ariaLabel: "Calendar view", value: value, onChange: (nextValue) => onChange?.(nextValue), options: [
|
|
@@ -656,7 +657,7 @@ const CalendarTypeSelector = ({ value, onChange, ...props }) => (jsx(SegmentedSe
|
|
|
656
657
|
{ id: 'due_dates', label: 'Due Dates' },
|
|
657
658
|
] }));
|
|
658
659
|
|
|
659
|
-
var styles$
|
|
660
|
+
var styles$S = {"dropdown":"Dropdown-module_dropdown__K4-yz","arrow":"Dropdown-module_arrow__2Xuwf","arrowOpen":"Dropdown-module_arrowOpen__5g2iY","menu":"Dropdown-module_menu__dCgm8","menuOpen":"Dropdown-module_menuOpen__-IXFR","left":"Dropdown-module_left__tnNcS","center":"Dropdown-module_center__s9zhj","right":"Dropdown-module_right__s71gz","item":"Dropdown-module_item__R008o","itemDisabled":"Dropdown-module_itemDisabled__XIuNm","itemIcon":"Dropdown-module_itemIcon__DbSnD"};
|
|
660
661
|
|
|
661
662
|
const Dropdown = ({ label, children, alignment = 'left', width, className = '', disabled = false, }) => {
|
|
662
663
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -679,14 +680,14 @@ const Dropdown = ({ label, children, alignment = 'left', width, className = '',
|
|
|
679
680
|
setIsOpen(false);
|
|
680
681
|
}
|
|
681
682
|
};
|
|
682
|
-
return (jsxs("div", { ref: dropdownRef, className: `${styles$
|
|
683
|
+
return (jsxs("div", { ref: dropdownRef, className: `${styles$S.dropdown} ${className}`, onKeyDown: handleKeyDown, children: [jsxs(Button, { variant: "secondary", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled, "aria-expanded": isOpen, "aria-haspopup": "true", children: [label, jsx("svg", { className: `${styles$S.arrow} ${isOpen ? styles$S.arrowOpen : ''}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", width: "16", height: "16", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), jsx("div", { className: `${styles$S.menu} ${styles$S[alignment]} ${isOpen ? styles$S.menuOpen : ''}`, style: width ? { minWidth: `${width}px` } : undefined, role: "menu", children: children })] }));
|
|
683
684
|
};
|
|
684
685
|
const DropdownItem = ({ children, onClick, disabled = false, icon, className = '', }) => {
|
|
685
|
-
return (jsxs("button", { type: "button", className: `${styles$
|
|
686
|
+
return (jsxs("button", { type: "button", className: `${styles$S.item} ${disabled ? styles$S.itemDisabled : ''} ${className}`, onClick: onClick, disabled: disabled, role: "menuitem", children: [icon && jsx("span", { className: styles$S.itemIcon, children: icon }), children] }));
|
|
686
687
|
};
|
|
687
688
|
Dropdown.Item = DropdownItem;
|
|
688
689
|
|
|
689
|
-
var styles$
|
|
690
|
+
var styles$R = {"wrapper":"FilterChip-module_wrapper__YDRSW","chip":"FilterChip-module_chip__pF7K5","open":"FilterChip-module_open__EYBp7","active":"FilterChip-module_active__JEkku","label":"FilterChip-module_label__tRr-y","value":"FilterChip-module_value__0EcVu","chevron":"FilterChip-module_chevron__kh13z","rotated":"FilterChip-module_rotated__U-FzI","dropdown":"FilterChip-module_dropdown__w3ytW","infoMessage":"FilterChip-module_infoMessage__0TzcA","searchWrapper":"FilterChip-module_searchWrapper__VHOSK","searchIcon":"FilterChip-module_searchIcon__jJ2K-","searchInput":"FilterChip-module_searchInput__FqwvR","optionsList":"FilterChip-module_optionsList__P0dgd","option":"FilterChip-module_option__DMuqM","selected":"FilterChip-module_selected__ltt9Y","noResults":"FilterChip-module_noResults__QGNao"};
|
|
690
691
|
|
|
691
692
|
const FilterChip = ({ label, value, options, onChange, searchable = false, searchPlaceholder = 'Search...', infoMessage, className, }) => {
|
|
692
693
|
const [open, setOpen] = useState(false);
|
|
@@ -723,13 +724,13 @@ const FilterChip = ({ label, value, options, onChange, searchable = false, searc
|
|
|
723
724
|
const selectedOption = options.find(opt => opt.value === value);
|
|
724
725
|
const displayValue = selectedOption?.label || value;
|
|
725
726
|
const isDefault = value === options[0]?.value;
|
|
726
|
-
return (jsxs("div", { ref: ref, className: `${styles$
|
|
727
|
+
return (jsxs("div", { ref: ref, className: `${styles$R.wrapper} ${className || ''}`, children: [jsxs("button", { type: "button", className: `${styles$R.chip} ${open ? styles$R.open : ''} ${!isDefault ? styles$R.active : ''}`, onClick: () => setOpen(!open), "aria-haspopup": "listbox", "aria-expanded": open, children: [jsxs("span", { className: styles$R.label, children: [label, ":"] }), jsx("span", { className: styles$R.value, children: displayValue }), jsx("svg", { className: `${styles$R.chevron} ${open ? styles$R.rotated : ''}`, width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polyline", { points: "6 9 12 15 18 9" }) })] }), open && (jsxs("div", { className: styles$R.dropdown, role: "listbox", children: [infoMessage && (jsxs("div", { className: styles$R.infoMessage, children: [jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" }) }), jsx("span", { children: infoMessage })] })), searchable && (jsxs("div", { className: styles$R.searchWrapper, children: [jsxs("svg", { className: styles$R.searchIcon, width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("circle", { cx: "11", cy: "11", r: "8" }), jsx("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })] }), jsx("input", { type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: searchPlaceholder, className: styles$R.searchInput, autoFocus: true })] })), jsxs("div", { className: styles$R.optionsList, children: [filteredOptions.map((option) => (jsx("button", { type: "button", role: "option", "aria-selected": option.value === value, className: `${styles$R.option} ${option.value === value ? styles$R.selected : ''}`, onClick: () => {
|
|
727
728
|
onChange(option.value);
|
|
728
729
|
setOpen(false);
|
|
729
|
-
}, children: option.label }, option.value))), filteredOptions.length === 0 && (jsx("div", { className: styles$
|
|
730
|
+
}, children: option.label }, option.value))), filteredOptions.length === 0 && (jsx("div", { className: styles$R.noResults, children: "No results found" }))] })] }))] }));
|
|
730
731
|
};
|
|
731
732
|
|
|
732
|
-
var styles$
|
|
733
|
+
var styles$Q = {"formField":"FormField-module_formField__VhLhK","label":"FormField-module_label__CNCs6","required":"FormField-module_required__HkPQf","inputElement":"FormField-module_inputElement__9uvGR","inputError":"FormField-module_inputError__xD7fk","helperText":"FormField-module_helperText__D99kd","errorText":"FormField-module_errorText__8mXAJ","visuallyHidden":"FormField-module_visuallyHidden__YQc7S"};
|
|
733
734
|
|
|
734
735
|
const FormField = forwardRef(({ label, helperText, error, required = false, hideLabel = false, className, as = 'input', inputProps, textareaProps, children, }, ref) => {
|
|
735
736
|
const generatedId = useId();
|
|
@@ -748,15 +749,15 @@ const FormField = forwardRef(({ label, helperText, error, required = false, hide
|
|
|
748
749
|
return children;
|
|
749
750
|
}
|
|
750
751
|
if (as === 'textarea') {
|
|
751
|
-
return (jsx(Textarea, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...textareaProps, className: `${styles$
|
|
752
|
+
return (jsx(Textarea, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...textareaProps, className: `${styles$Q.inputElement} ${hasError ? styles$Q.inputError : ''} ${textareaProps?.className || ''}` }));
|
|
752
753
|
}
|
|
753
|
-
return (jsx(Input, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...inputProps, className: `${styles$
|
|
754
|
+
return (jsx(Input, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...inputProps, className: `${styles$Q.inputElement} ${hasError ? styles$Q.inputError : ''} ${inputProps?.className || ''}` }));
|
|
754
755
|
};
|
|
755
|
-
return (jsxs("div", { className: `${styles$
|
|
756
|
+
return (jsxs("div", { className: `${styles$Q.formField} ${className || ''}`, children: [jsxs("label", { htmlFor: inputId, className: `${styles$Q.label} ${hideLabel ? styles$Q.visuallyHidden : ''}`, children: [label, required && jsx("span", { className: styles$Q.required, "aria-hidden": "true", children: "*" })] }), renderInput(), helperText && !hasError && (jsx("p", { id: helperId, className: styles$Q.helperText, children: helperText })), hasError && (jsx("p", { id: errorId, className: styles$Q.errorText, role: "alert", children: error }))] }));
|
|
756
757
|
});
|
|
757
758
|
FormField.displayName = 'FormField';
|
|
758
759
|
|
|
759
|
-
var styles$
|
|
760
|
+
var styles$P = {"row":"FormRow-module_row__2ObP9","cols1":"FormRow-module_cols1__WsxX3","cols2":"FormRow-module_cols2__t548T","cols3":"FormRow-module_cols3__zjoSR","cols4":"FormRow-module_cols4__DbZL-","gapsm":"FormRow-module_gapsm__sl0ji","gapmd":"FormRow-module_gapmd__77Yp3","gaplg":"FormRow-module_gaplg__Yb-fh","stackMobile":"FormRow-module_stackMobile__6UluR"};
|
|
760
761
|
|
|
761
762
|
/**
|
|
762
763
|
* FormRow component for laying out form fields in a responsive grid.
|
|
@@ -766,16 +767,16 @@ const FormRow = ({ children, columns, gap = 'md', className, stackOnMobile = tru
|
|
|
766
767
|
const childCount = Children.count(children);
|
|
767
768
|
const colCount = columns || (childCount > 4 ? 4 : childCount);
|
|
768
769
|
return (jsx("div", { className: `
|
|
769
|
-
${styles$
|
|
770
|
-
${styles$
|
|
771
|
-
${styles$
|
|
772
|
-
${stackOnMobile ? styles$
|
|
770
|
+
${styles$P.row}
|
|
771
|
+
${styles$P[`cols${colCount}`]}
|
|
772
|
+
${styles$P[`gap${gap}`]}
|
|
773
|
+
${stackOnMobile ? styles$P.stackMobile : ''}
|
|
773
774
|
${className || ''}
|
|
774
775
|
`, children: children }));
|
|
775
776
|
};
|
|
776
777
|
FormRow.displayName = 'FormRow';
|
|
777
778
|
|
|
778
|
-
var styles$
|
|
779
|
+
var styles$O = {"section":"FormSection-module_section__T17Vg","header":"FormSection-module_header__2MkY6","icon":"FormSection-module_icon__uywPB","title":"FormSection-module_title__dlvYD","fieldset":"FormSection-module_fieldset__pDDIo","disabled":"FormSection-module_disabled__xC3-e","status":"FormSection-module_status__2XOyW","statusLabel":"FormSection-module_statusLabel__VAuDb","statusValue":"FormSection-module_statusValue__YKSc-","submitted":"FormSection-module_submitted__sS-zT","not-submitted":"FormSection-module_not-submitted__Kuk2i","draft":"FormSection-module_draft__XHq3-"};
|
|
779
780
|
|
|
780
781
|
/**
|
|
781
782
|
* FormSection component for grouping related form fields with a title and icon.
|
|
@@ -784,45 +785,45 @@ var styles$N = {"section":"FormSection-module_section__T17Vg","header":"FormSect
|
|
|
784
785
|
const FormSection = ({ title, icon, status, disabled = false, children, className, id, }) => {
|
|
785
786
|
const isSubmitted = status === 'submitted';
|
|
786
787
|
const isDisabled = disabled || isSubmitted;
|
|
787
|
-
return (jsxs("div", { className: `${styles$
|
|
788
|
+
return (jsxs("div", { className: `${styles$O.section} ${className || ''}`, id: id, children: [jsxs("div", { className: styles$O.header, children: [icon && jsx("span", { className: styles$O.icon, children: icon }), jsx("h2", { className: styles$O.title, children: title })] }), jsxs("fieldset", { disabled: isDisabled, className: `${styles$O.fieldset} ${isDisabled ? styles$O.disabled : ''}`, children: [status && (jsxs("div", { className: styles$O.status, children: [jsx("span", { className: styles$O.statusLabel, children: "Status:" }), jsx("span", { className: `${styles$O.statusValue} ${styles$O[status]}`, children: status === 'submitted' ? 'Submitted' : status === 'draft' ? 'Draft' : 'Not Submitted' })] })), children] })] }));
|
|
788
789
|
};
|
|
789
790
|
FormSection.displayName = 'FormSection';
|
|
790
791
|
|
|
791
|
-
var styles$
|
|
792
|
+
var styles$N = {"stack":"FormStack-module_stack__SURjY","sm":"FormStack-module_sm__rt3tb","md":"FormStack-module_md__SRDmc","lg":"FormStack-module_lg__jql3j"};
|
|
792
793
|
|
|
793
794
|
/** Standard vertical form-field rhythm used by Hub modal forms. */
|
|
794
|
-
const FormStack = ({ children, gap = 'md', className = '' }) => (jsx("div", { className: [styles$
|
|
795
|
+
const FormStack = ({ children, gap = 'md', className = '' }) => (jsx("div", { className: [styles$N.stack, styles$N[gap], className].filter(Boolean).join(' '), children: children }));
|
|
795
796
|
|
|
796
|
-
var styles$
|
|
797
|
+
var styles$M = {"toggle":"ManifestViewToggle-module_toggle__sHnAd","lockedToggle":"ManifestViewToggle-module_lockedToggle__m70h9","tab":"ManifestViewToggle-module_tab__qcwg7","active":"ManifestViewToggle-module_active__ln3B8","locked":"ManifestViewToggle-module_locked__Udun8","lockedActive":"ManifestViewToggle-module_lockedActive__kYSaF","count":"ManifestViewToggle-module_count__M-8a8"};
|
|
797
798
|
|
|
798
799
|
const ManifestViewToggle = ({ view, onView, paxCount, eqCount, locked, className = '', }) => {
|
|
799
800
|
const tabs = [
|
|
800
801
|
{ key: 'passengers', label: 'Passengers', count: paxCount, icon: UsersIcon$1 },
|
|
801
802
|
{ key: 'equipment', label: 'Equipment', count: eqCount, icon: CubeIcon },
|
|
802
803
|
];
|
|
803
|
-
return (jsx("div", { className: [styles$
|
|
804
|
+
return (jsx("div", { className: [styles$M.toggle, locked ? styles$M.lockedToggle : '', className].filter(Boolean).join(' '), role: "tablist", "aria-label": "Manifest view", children: tabs.map((tab) => {
|
|
804
805
|
const active = view === tab.key;
|
|
805
806
|
const Icon = locked ? LockIcon$1 : tab.icon;
|
|
806
807
|
return (jsxs("button", { type: "button", role: "tab", "aria-selected": active, onClick: () => onView(tab.key), className: [
|
|
807
|
-
styles$
|
|
808
|
-
active ? styles$
|
|
809
|
-
locked ? styles$
|
|
810
|
-
locked && active ? styles$
|
|
811
|
-
].filter(Boolean).join(' '), children: [jsx(Icon, { size: 16 }), tab.label, jsx("span", { className: styles$
|
|
808
|
+
styles$M.tab,
|
|
809
|
+
active ? styles$M.active : '',
|
|
810
|
+
locked ? styles$M.locked : '',
|
|
811
|
+
locked && active ? styles$M.lockedActive : '',
|
|
812
|
+
].filter(Boolean).join(' '), children: [jsx(Icon, { size: 16 }), tab.label, jsx("span", { className: styles$M.count, children: tab.count })] }, tab.key));
|
|
812
813
|
}) }));
|
|
813
814
|
};
|
|
814
815
|
|
|
815
|
-
var styles$
|
|
816
|
+
var styles$L = {"navItem":"NavItem-module_navItem__4PpZU","disabled":"NavItem-module_disabled__uYqez","default":"NavItem-module_default__VB92P","active":"NavItem-module_active__3bcnW","pill":"NavItem-module_pill__pn5gl","icon":"NavItem-module_icon__j9VQ5","label":"NavItem-module_label__3S3KY","sm":"NavItem-module_sm__1oeZI","md":"NavItem-module_md__ySO90","lg":"NavItem-module_lg__OmaBw","collapsed":"NavItem-module_collapsed__ciZ6-","iconSm":"NavItem-module_iconSm__UvWnu","iconMd":"NavItem-module_iconMd__uAMlQ","iconLg":"NavItem-module_iconLg__PFPKD","badge":"NavItem-module_badge__oP9u2"};
|
|
816
817
|
|
|
817
818
|
const NavItem = ({ icon, label, active = false, collapsed = false, variant = 'default', size = 'md', badge, badgeVariant = 'default', onClick, disabled = false, href, external = false, className, 'aria-label': ariaLabel, }) => {
|
|
818
|
-
const content = (jsxs(Fragment, { children: [icon && jsx("span", { className: `${styles$
|
|
819
|
+
const content = (jsxs(Fragment, { children: [icon && jsx("span", { className: `${styles$L.icon} ${styles$L[`icon${size.charAt(0).toUpperCase()}${size.slice(1)}`]}`, "aria-hidden": "true", children: icon }), !collapsed && (jsx("span", { className: styles$L.label, children: label })), badge !== undefined && !collapsed && (jsx(Badge, { variant: badgeVariant, className: styles$L.badge, children: badge }))] }));
|
|
819
820
|
const classNames = [
|
|
820
|
-
styles$
|
|
821
|
-
styles$
|
|
822
|
-
styles$
|
|
823
|
-
active ? styles$
|
|
824
|
-
collapsed ? styles$
|
|
825
|
-
disabled ? styles$
|
|
821
|
+
styles$L.navItem,
|
|
822
|
+
styles$L[variant],
|
|
823
|
+
styles$L[size],
|
|
824
|
+
active ? styles$L.active : '',
|
|
825
|
+
collapsed ? styles$L.collapsed : '',
|
|
826
|
+
disabled ? styles$L.disabled : '',
|
|
826
827
|
className || '',
|
|
827
828
|
].filter(Boolean).join(' ');
|
|
828
829
|
const commonProps = {
|
|
@@ -837,7 +838,7 @@ const NavItem = ({ icon, label, active = false, collapsed = false, variant = 'de
|
|
|
837
838
|
return (jsx("button", { type: "button", onClick: disabled ? undefined : onClick, disabled: disabled, ...commonProps, children: content }));
|
|
838
839
|
};
|
|
839
840
|
|
|
840
|
-
var styles$
|
|
841
|
+
var styles$K = {"barContainer":"Progress-module_barContainer__e4v8v","barTrack":"Progress-module_barTrack__tJsPO","barFill":"Progress-module_barFill__RbcDy","barxs":"Progress-module_barxs__TLS4q","barsm":"Progress-module_barsm__BFAiw","barmd":"Progress-module_barmd__QDW-h","barlg":"Progress-module_barlg__C-Mzw","barLabel":"Progress-module_barLabel__4PFJ7","circleContainer":"Progress-module_circleContainer__zyOTa","circleSvg":"Progress-module_circleSvg__0Tt1Q","circleTrack":"Progress-module_circleTrack__p4VWf","circleFill":"Progress-module_circleFill__6fU2M","circleLabel":"Progress-module_circleLabel__vHLfU","primary":"Progress-module_primary__H2wpc","success":"Progress-module_success__rmmnE","warning":"Progress-module_warning__68ovy","error":"Progress-module_error__ZXkH0"};
|
|
841
842
|
|
|
842
843
|
const dimensions = {
|
|
843
844
|
xs: 32,
|
|
@@ -853,7 +854,7 @@ const strokeWidths = {
|
|
|
853
854
|
};
|
|
854
855
|
const ProgressBar = ({ value, max = 100, size = 'md', variant = 'primary', showLabel = false, className = '', }) => {
|
|
855
856
|
const percentage = Math.min(Math.max((value / max) * 100, 0), 100);
|
|
856
|
-
return (jsxs("div", { className: `${styles$
|
|
857
|
+
return (jsxs("div", { className: `${styles$K.barContainer} ${styles$K[`bar${size}`]} ${className}`, children: [jsx("div", { className: styles$K.barTrack, children: jsx("div", { className: `${styles$K.barFill} ${styles$K[variant]}`, style: { width: `${percentage}%` }, role: "progressbar", "aria-valuenow": value, "aria-valuemin": 0, "aria-valuemax": max }) }), showLabel && (jsxs("span", { className: styles$K.barLabel, children: [Math.round(percentage), "%"] }))] }));
|
|
857
858
|
};
|
|
858
859
|
const ProgressCircle = ({ value, max = 100, size = 'md', variant = 'primary', showLabel = false, className = '', }) => {
|
|
859
860
|
const percentage = Math.min(Math.max((value / max) * 100, 0), 100);
|
|
@@ -862,7 +863,7 @@ const ProgressCircle = ({ value, max = 100, size = 'md', variant = 'primary', sh
|
|
|
862
863
|
const radius = (dimension - strokeWidth) / 2;
|
|
863
864
|
const circumference = radius * 2 * Math.PI;
|
|
864
865
|
const strokeDashoffset = circumference - (percentage / 100) * circumference;
|
|
865
|
-
return (jsxs("div", { className: `${styles$
|
|
866
|
+
return (jsxs("div", { className: `${styles$K.circleContainer} ${className}`, style: { width: dimension, height: dimension }, children: [jsxs("svg", { width: dimension, height: dimension, className: styles$K.circleSvg, children: [jsx("circle", { className: styles$K.circleTrack, cx: dimension / 2, cy: dimension / 2, r: radius, strokeWidth: strokeWidth, fill: "transparent" }), jsx("circle", { className: `${styles$K.circleFill} ${styles$K[variant]}`, cx: dimension / 2, cy: dimension / 2, r: radius, strokeWidth: strokeWidth, fill: "transparent", strokeDasharray: circumference, strokeDashoffset: strokeDashoffset, strokeLinecap: "round", role: "progressbar", "aria-valuenow": value, "aria-valuemin": 0, "aria-valuemax": max })] }), showLabel && (jsxs("span", { className: styles$K.circleLabel, style: { fontSize: size === 'xs' ? '8px' : size === 'sm' ? '10px' : size === 'md' ? '12px' : '14px' }, children: [Math.round(percentage), "%"] }))] }));
|
|
866
867
|
};
|
|
867
868
|
// Combined export
|
|
868
869
|
const Progress = {
|
|
@@ -870,7 +871,7 @@ const Progress = {
|
|
|
870
871
|
Circle: ProgressCircle,
|
|
871
872
|
};
|
|
872
873
|
|
|
873
|
-
var styles$
|
|
874
|
+
var styles$J = {"toolbar":"RosterToolbar-module_toolbar__IHjs9","leftSection":"RosterToolbar-module_leftSection__baz7E","rightSection":"RosterToolbar-module_rightSection__R2b-D","dropdown":"RosterToolbar-module_dropdown__NKaWV","dropdownTrigger":"RosterToolbar-module_dropdownTrigger__nCoaZ","dropdownMenu":"RosterToolbar-module_dropdownMenu__7QuED","dropdownItem":"RosterToolbar-module_dropdownItem__mrsat","dropdownItemIcon":"RosterToolbar-module_dropdownItemIcon__gx5tx","lockButton":"RosterToolbar-module_lockButton__zw3s0","locked":"RosterToolbar-module_locked__DVnqB","saveButton":"RosterToolbar-module_saveButton__th1lq","spinner":"RosterToolbar-module_spinner__uWdPg"};
|
|
874
875
|
|
|
875
876
|
const ImportIcon = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), jsx("polyline", { points: "17 8 12 3 7 8" }), jsx("line", { x1: "12", y1: "3", x2: "12", y2: "15" })] }));
|
|
876
877
|
const ExportIcon$1 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), jsx("polyline", { points: "7 10 12 15 17 10" }), jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] }));
|
|
@@ -878,23 +879,23 @@ const ChevronIcon$2 = () => (jsx("svg", { width: "12", height: "12", viewBox: "0
|
|
|
878
879
|
const LockIcon = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] }));
|
|
879
880
|
const UnlockIcon = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] }));
|
|
880
881
|
const SaveIcon = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" }), jsx("polyline", { points: "17 21 17 13 7 13 7 21" }), jsx("polyline", { points: "7 3 7 8 15 8" })] }));
|
|
881
|
-
const SpinnerIcon = () => (jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: styles$
|
|
882
|
+
const SpinnerIcon = () => (jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: styles$J.spinner, children: jsx("circle", { cx: "12", cy: "12", r: "10", strokeDasharray: "32", strokeDashoffset: "32" }) }));
|
|
882
883
|
const DropdownButton = ({ label, icon, options, }) => {
|
|
883
|
-
return (jsxs("div", { className: styles$
|
|
884
|
+
return (jsxs("div", { className: styles$J.dropdown, children: [jsxs("button", { type: "button", className: styles$J.dropdownTrigger, children: [icon, jsx("span", { children: label }), jsx(ChevronIcon$2, {})] }), jsx("div", { className: styles$J.dropdownMenu, children: options.map((option, i) => (jsxs("button", { type: "button", className: styles$J.dropdownItem, onClick: option.onClick, disabled: option.disabled, children: [option.icon && jsx("span", { className: styles$J.dropdownItemIcon, children: option.icon }), option.label] }, i))) })] }));
|
|
884
885
|
};
|
|
885
886
|
/**
|
|
886
887
|
* RosterToolbar - Toolbar for roster management with import/export/save actions
|
|
887
888
|
*/
|
|
888
889
|
const RosterToolbar = ({ importOptions, exportOptions, lockToggle, saveButton, additionalActions, searchField, className = '', }) => {
|
|
889
|
-
const toolbarClasses = [styles$
|
|
890
|
-
return (jsxs("div", { className: toolbarClasses, children: [jsxs("div", { className: styles$
|
|
891
|
-
styles$
|
|
892
|
-
lockToggle.isLocked ? styles$
|
|
893
|
-
].filter(Boolean).join(' '), onClick: () => lockToggle.onToggle(!lockToggle.isLocked), disabled: lockToggle.disabled, "aria-label": lockToggle.isLocked ? 'Unlock roster' : 'Lock roster', children: [lockToggle.isLocked ? jsx(LockIcon, {}) : jsx(UnlockIcon, {}), jsx("span", { children: lockToggle.isLocked ? 'Locked' : 'Unlocked' })] })), saveButton && (jsxs("button", { type: "button", className: styles$
|
|
890
|
+
const toolbarClasses = [styles$J.toolbar, className].filter(Boolean).join(' ');
|
|
891
|
+
return (jsxs("div", { className: toolbarClasses, children: [jsxs("div", { className: styles$J.leftSection, children: [searchField, additionalActions] }), jsxs("div", { className: styles$J.rightSection, children: [importOptions && importOptions.length > 0 && (jsx(DropdownButton, { label: "Import", icon: jsx(ImportIcon, {}), options: importOptions })), exportOptions && exportOptions.length > 0 && (jsx(DropdownButton, { label: "Export", icon: jsx(ExportIcon$1, {}), options: exportOptions })), lockToggle && (jsxs("button", { type: "button", className: [
|
|
892
|
+
styles$J.lockButton,
|
|
893
|
+
lockToggle.isLocked ? styles$J.locked : '',
|
|
894
|
+
].filter(Boolean).join(' '), onClick: () => lockToggle.onToggle(!lockToggle.isLocked), disabled: lockToggle.disabled, "aria-label": lockToggle.isLocked ? 'Unlock roster' : 'Lock roster', children: [lockToggle.isLocked ? jsx(LockIcon, {}) : jsx(UnlockIcon, {}), jsx("span", { children: lockToggle.isLocked ? 'Locked' : 'Unlocked' })] })), saveButton && (jsxs("button", { type: "button", className: styles$J.saveButton, onClick: saveButton.onClick, disabled: saveButton.disabled || saveButton.loading, children: [saveButton.loading ? jsx(SpinnerIcon, {}) : jsx(SaveIcon, {}), jsx("span", { children: saveButton.label || 'Save' })] }))] })] }));
|
|
894
895
|
};
|
|
895
896
|
RosterToolbar.displayName = 'RosterToolbar';
|
|
896
897
|
|
|
897
|
-
var styles$
|
|
898
|
+
var styles$I = {"searchField":"SearchField-module_searchField__c7gUE","inputWrapper":"SearchField-module_inputWrapper__SUzHv","searchIcon":"SearchField-module_searchIcon__MOZ2m","input":"SearchField-module_input__abJcl","clearButton":"SearchField-module_clearButton__RMIg2","sm":"SearchField-module_sm__-sayT","lg":"SearchField-module_lg__QKacI"};
|
|
898
899
|
|
|
899
900
|
const SearchField = forwardRef(({ placeholder = 'Search...', value, defaultValue = '', onChange, onSearch, onClear, size = 'md', disabled = false, showClear = true, showButton = true, className, id, 'aria-label': ariaLabel = 'Search', ...props }, ref) => {
|
|
900
901
|
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
@@ -922,25 +923,25 @@ const SearchField = forwardRef(({ placeholder = 'Search...', value, defaultValue
|
|
|
922
923
|
onSearch?.(currentValue);
|
|
923
924
|
}
|
|
924
925
|
};
|
|
925
|
-
return (jsxs("form", { className: `${styles$
|
|
926
|
+
return (jsxs("form", { className: `${styles$I.searchField} ${styles$I[size]} ${className || ''}`, onSubmit: handleSubmit, role: "search", children: [jsxs("div", { className: styles$I.inputWrapper, children: [jsx(SearchIcon$1, { className: styles$I.searchIcon, "aria-hidden": "true" }), jsx(Input, { ref: ref, id: id, type: "search", placeholder: placeholder, value: currentValue, onChange: handleChange, onKeyDown: handleKeyDown, disabled: disabled, className: styles$I.input, "aria-label": ariaLabel, ...props }), showClear && currentValue && (jsx("button", { type: "button", className: styles$I.clearButton, onClick: handleClear, disabled: disabled, "aria-label": "Clear search", children: jsx(CloseIcon, { size: 16 }) }))] }), showButton && (jsx(Button, { type: "submit", variant: "primary", size: size, disabled: disabled, children: "Search" }))] }));
|
|
926
927
|
});
|
|
927
928
|
SearchField.displayName = 'SearchField';
|
|
928
929
|
|
|
929
|
-
var styles$
|
|
930
|
+
var styles$H = {"form":"SchoolContactForm-module_form__-Mx7k","portalLabel":"SchoolContactForm-module_portalLabel__GAeV6","newContactLabel":"SchoolContactForm-module_newContactLabel__7S3Vw","divider":"SchoolContactForm-module_divider__ZSx-R","nameFields":"SchoolContactForm-module_nameFields__Fcjl8","phoneFields":"SchoolContactForm-module_phoneFields__-zRPe"};
|
|
930
931
|
|
|
931
932
|
/**
|
|
932
933
|
* Layout for Hub's school-contact editor. Field controls stay injectable so
|
|
933
934
|
* consuming applications retain their form state, validation, and masking.
|
|
934
935
|
*/
|
|
935
|
-
const SchoolContactForm = ({ mode, createFromPortalUser, firstNameField, middleInitialField, lastNameField, businessPhoneField, cellPhoneField, emailField, className = '', }) => (jsxs("div", { className: [styles$
|
|
936
|
+
const SchoolContactForm = ({ mode, createFromPortalUser, firstNameField, middleInitialField, lastNameField, businessPhoneField, cellPhoneField, emailField, className = '', }) => (jsxs("div", { className: [styles$H.form, className].filter(Boolean).join(' '), children: [mode === 'Add' && (jsxs(Fragment, { children: [jsxs("div", { children: [jsx("label", { className: styles$H.portalLabel, children: "Create From Portal User" }), createFromPortalUser] }), jsx("div", { className: styles$H.divider, children: jsx("strong", { children: "OR" }) }), jsx("p", { className: styles$H.newContactLabel, children: "Create New Contact Without Portal Access" })] })), jsxs("div", { className: styles$H.nameFields, children: [firstNameField, middleInitialField, lastNameField] }), jsxs("div", { className: styles$H.phoneFields, children: [businessPhoneField, cellPhoneField] }), jsx("div", { children: emailField })] }));
|
|
936
937
|
|
|
937
|
-
var styles$
|
|
938
|
+
var styles$G = {"segment":"Segment-module_segment__UF-SG","fullWidth":"Segment-module_fullWidth__Hi19i","option":"Segment-module_option__UJUhj","disabled":"Segment-module_disabled__CSxuQ","selected":"Segment-module_selected__gRnVj","sm":"Segment-module_sm__h8S7Z","md":"Segment-module_md__4uTae","lg":"Segment-module_lg__zL0Hv","icon":"Segment-module_icon__ZHRr6"};
|
|
938
939
|
|
|
939
940
|
const Segment = ({ options, value, onChange, size = 'md', fullWidth = false, className = '', 'aria-label': ariaLabel, }) => {
|
|
940
|
-
return (jsx("div", { className: `${styles$
|
|
941
|
+
return (jsx("div", { className: `${styles$G.segment} ${styles$G[size]} ${fullWidth ? styles$G.fullWidth : ''} ${className}`, role: "radiogroup", "aria-label": ariaLabel, children: options.map((option) => (jsxs("button", { type: "button", className: `${styles$G.option} ${value === option.value ? styles$G.selected : ''} ${option.disabled ? styles$G.disabled : ''}`, onClick: () => !option.disabled && onChange(option.value), disabled: option.disabled, role: "radio", "aria-checked": value === option.value, children: [option.icon && jsx("span", { className: styles$G.icon, children: option.icon }), option.label] }, option.value))) }));
|
|
941
942
|
};
|
|
942
943
|
|
|
943
|
-
var styles$
|
|
944
|
+
var styles$F = {"container":"SelectFilter-module_container__tCC9y","trigger":"SelectFilter-module_trigger__5WbMf","open":"SelectFilter-module_open__oo-Y6","disabled":"SelectFilter-module_disabled__JUdi3","triggerText":"SelectFilter-module_triggerText__LM07K","placeholder":"SelectFilter-module_placeholder__J0xyo","chevron":"SelectFilter-module_chevron__x-Pnr","dropdown":"SelectFilter-module_dropdown__52FPP","tabs":"SelectFilter-module_tabs__wp6on","tab":"SelectFilter-module_tab__JpnWo","activeTab":"SelectFilter-module_activeTab__ShP7x","actions":"SelectFilter-module_actions__phfFl","actionBtn":"SelectFilter-module_actionBtn__ppB--","options":"SelectFilter-module_options__p1iCX","option":"SelectFilter-module_option__0vwfy","selected":"SelectFilter-module_selected__2vxyT","checkbox":"SelectFilter-module_checkbox__qTUjy","optionLabel":"SelectFilter-module_optionLabel__L4CMA","footer":"SelectFilter-module_footer__aq4JP","applyBtn":"SelectFilter-module_applyBtn__RFKei"};
|
|
944
945
|
|
|
945
946
|
const ChevronIcon$1 = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polyline", { points: "6 9 12 15 18 9" }) }));
|
|
946
947
|
const CheckIcon = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polyline", { points: "20 6 9 17 4 12" }) }));
|
|
@@ -1013,11 +1014,11 @@ const SelectFilter = ({ label, options = [], groupedOptions = {}, value = [], on
|
|
|
1013
1014
|
}
|
|
1014
1015
|
return `${selected.length} selected`;
|
|
1015
1016
|
};
|
|
1016
|
-
return (jsxs("div", { ref: dropdownRef, className: `${styles$
|
|
1017
|
+
return (jsxs("div", { ref: dropdownRef, className: `${styles$F.container} ${className}`, children: [jsxs("button", { type: "button", className: `${styles$F.trigger} ${disabled ? styles$F.disabled : ''} ${isOpen ? styles$F.open : ''}`, onClick: () => !disabled && setIsOpen(!isOpen), children: [jsx("span", { className: `${styles$F.triggerText} ${selectedValues.length === 0 ? styles$F.placeholder : ''}`, children: getDisplayText() }), jsx("span", { className: styles$F.chevron, children: jsx(ChevronIcon$1, {}) })] }), isOpen && (jsxs("div", { className: styles$F.dropdown, style: { width }, children: [grouped && tabs.length > 0 && (jsx("div", { className: styles$F.tabs, children: tabs.map(tab => (jsx("button", { type: "button", className: `${styles$F.tab} ${activeTab === tab ? styles$F.activeTab : ''}`, onClick: () => setActiveTab(tab), children: tab.charAt(0).toUpperCase() + tab.slice(1) }, tab))) })), multiselect && (jsxs("div", { className: styles$F.actions, children: [jsx("button", { type: "button", className: styles$F.actionBtn, onClick: handleSelectAll, children: "Select All" }), jsx("button", { type: "button", className: styles$F.actionBtn, onClick: handleClear, children: "Clear" })] })), jsx("div", { className: styles$F.options, children: currentOptions.map(option => (jsxs("div", { className: `${styles$F.option} ${selectedValues.includes(option.value) ? styles$F.selected : ''}`, onClick: () => handleSelect(option.value), children: [multiselect && (jsx("span", { className: styles$F.checkbox, children: selectedValues.includes(option.value) && jsx(CheckIcon, {}) })), jsx("span", { className: styles$F.optionLabel, children: option.label })] }, option.value))) }), multiselect && (jsx("div", { className: styles$F.footer, children: jsx("button", { type: "button", className: styles$F.applyBtn, onClick: () => setIsOpen(false), children: "Apply" }) }))] }))] }));
|
|
1017
1018
|
};
|
|
1018
1019
|
SelectFilter.displayName = 'SelectFilter';
|
|
1019
1020
|
|
|
1020
|
-
var styles$
|
|
1021
|
+
var styles$E = {"list":"ServiceToggle-module_list__bBts8","item":"ServiceToggle-module_item__4wEbQ","labelContainer":"ServiceToggle-module_labelContainer__oz-I1","clickable":"ServiceToggle-module_clickable__yzQxe","icon":"ServiceToggle-module_icon__8IdST","label":"ServiceToggle-module_label__J98Ve"};
|
|
1021
1022
|
|
|
1022
1023
|
/**
|
|
1023
1024
|
* ServiceToggle component for a single service item.
|
|
@@ -1030,19 +1031,19 @@ const ServiceToggle = ({ label, icon, hasToggle = true, enabled = false, onToggl
|
|
|
1030
1031
|
onClick();
|
|
1031
1032
|
}
|
|
1032
1033
|
};
|
|
1033
|
-
return (jsxs("div", { className: styles$
|
|
1034
|
+
return (jsxs("div", { className: styles$E.item, children: [jsxs("div", { className: `${styles$E.labelContainer} ${isClickable ? styles$E.clickable : ''}`, onClick: handleClick, children: [icon && jsx("span", { className: styles$E.icon, children: icon }), jsx("span", { className: styles$E.label, children: label })] }), hasToggle && (jsx(Toggle, { checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
|
|
1034
1035
|
};
|
|
1035
1036
|
/**
|
|
1036
1037
|
* ServiceToggleList component for displaying a list of services with toggles.
|
|
1037
1038
|
* Used in travel request forms for service selection (Air, Hotel, Ground, etc.)
|
|
1038
1039
|
*/
|
|
1039
1040
|
const ServiceToggleList = ({ services, enabledServices = {}, onToggle, onClick, className, }) => {
|
|
1040
|
-
return (jsx("div", { className: `${styles$
|
|
1041
|
+
return (jsx("div", { className: `${styles$E.list} ${className || ''}`, children: services.map((service) => (jsx(ServiceToggle, { serviceKey: service.key, label: service.label, icon: service.icon, hasToggle: service.hasToggle, enabled: enabledServices[service.key] ?? false, onToggle: (enabled) => onToggle?.(service.key, enabled), onClick: () => onClick?.(service.key) }, service.key))) }));
|
|
1041
1042
|
};
|
|
1042
1043
|
ServiceToggle.displayName = 'ServiceToggle';
|
|
1043
1044
|
ServiceToggleList.displayName = 'ServiceToggleList';
|
|
1044
1045
|
|
|
1045
|
-
var styles$
|
|
1046
|
+
var styles$D = {"toggle":"SupplierTypeToggle-module_toggle__x4pTJ","active":"SupplierTypeToggle-module_active__8BGSe"};
|
|
1046
1047
|
|
|
1047
1048
|
const SUPPLIER_TYPE_OPTIONS = [
|
|
1048
1049
|
{ value: 'A', label: 'Air' },
|
|
@@ -1063,10 +1064,10 @@ const SupplierTypeToggle = ({ value, defaultValue = '', onChange, disabled = fal
|
|
|
1063
1064
|
setInternalValue(nextValue);
|
|
1064
1065
|
onChange?.(nextValue);
|
|
1065
1066
|
};
|
|
1066
|
-
return (jsx("div", { className: [styles$
|
|
1067
|
+
return (jsx("div", { className: [styles$D.toggle, className].filter(Boolean).join(' '), role: "group", "aria-label": "Supplier type", children: OPTIONS.map((option) => (jsx("button", { type: "button", disabled: disabled, "aria-pressed": activeValue === option.value, className: activeValue === option.value ? styles$D.active : '', onClick: () => handleSelect(option.value), children: option.label }, option.value || 'all'))) }));
|
|
1067
1068
|
};
|
|
1068
1069
|
|
|
1069
|
-
var styles$
|
|
1070
|
+
var styles$C = {"header":"TeamHeader-module_header__3Zx1c","empty":"TeamHeader-module_empty__fKrFE","left":"TeamHeader-module_left__yqug2","backButton":"TeamHeader-module_backButton__MqElX","titles":"TeamHeader-module_titles__m3Ne9","pretitle":"TeamHeader-module_pretitle__rZUD6","title":"TeamHeader-module_title__i3dmZ","actions":"TeamHeader-module_actions__ft1DN","subMenu":"TeamHeader-module_subMenu__oL-3Q","activeTab":"TeamHeader-module_activeTab__AUzdq"};
|
|
1070
1071
|
|
|
1071
1072
|
const BackIcon = () => (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("line", { x1: "19", y1: "12", x2: "5", y2: "12" }), jsx("polyline", { points: "12 19 5 12 12 5" })] }));
|
|
1072
1073
|
/**
|
|
@@ -1077,8 +1078,8 @@ const TeamHeader = ({ title: suppliedTitle, teamCode, teamName, pretitle = 'Team
|
|
|
1077
1078
|
? `${teamCode} - ${teamName}`
|
|
1078
1079
|
: teamName || teamCode || '');
|
|
1079
1080
|
const headerClasses = [
|
|
1080
|
-
styles$
|
|
1081
|
-
!title ? styles$
|
|
1081
|
+
styles$C.header,
|
|
1082
|
+
!title ? styles$C.empty : '',
|
|
1082
1083
|
className,
|
|
1083
1084
|
].filter(Boolean).join(' ');
|
|
1084
1085
|
const handleBack = () => {
|
|
@@ -1090,7 +1091,7 @@ const TeamHeader = ({ title: suppliedTitle, teamCode, teamName, pretitle = 'Team
|
|
|
1090
1091
|
window.location.href = backHref;
|
|
1091
1092
|
}
|
|
1092
1093
|
};
|
|
1093
|
-
return (jsxs("div", { className: headerClasses, children: [jsxs("div", { className: styles$
|
|
1094
|
+
return (jsxs("div", { className: headerClasses, children: [jsxs("div", { className: styles$C.left, children: [(backHref || onBack) && (jsx("button", { type: "button", className: styles$C.backButton, onClick: handleBack, "aria-label": "Go back", children: jsx(BackIcon, {}) })), jsxs("div", { className: styles$C.titles, children: [pretitle && jsx("span", { className: styles$C.pretitle, children: pretitle }), jsxs("h1", { className: styles$C.title, children: [title, "\u00A0"] })] })] }), actions && (jsx("div", { className: styles$C.actions, children: actions }))] }));
|
|
1094
1095
|
};
|
|
1095
1096
|
const DEFAULT_TABS$1 = [
|
|
1096
1097
|
{ id: 'profile', label: 'Profile' },
|
|
@@ -1099,11 +1100,11 @@ const DEFAULT_TABS$1 = [
|
|
|
1099
1100
|
{ id: 'user-access', label: 'User Access' },
|
|
1100
1101
|
];
|
|
1101
1102
|
/** Router-agnostic counterpart of Hub's team-management submenu. */
|
|
1102
|
-
const TeamSubMenu = ({ tabs = DEFAULT_TABS$1, activeTab, onTabChange, className = '' }) => (jsx("nav", { className: [styles$
|
|
1103
|
+
const TeamSubMenu = ({ tabs = DEFAULT_TABS$1, activeTab, onTabChange, className = '' }) => (jsx("nav", { className: [styles$C.subMenu, className].filter(Boolean).join(' '), "aria-label": "Team management sections", children: tabs.map((tab) => (jsx("button", { type: "button", className: activeTab === tab.id ? styles$C.activeTab : '', "aria-current": activeTab === tab.id ? 'page' : undefined, onClick: () => onTabChange?.(tab.id), children: tab.label }, tab.id))) }));
|
|
1103
1104
|
TeamHeader.displayName = 'TeamHeader';
|
|
1104
1105
|
TeamSubMenu.displayName = 'TeamSubMenu';
|
|
1105
1106
|
|
|
1106
|
-
var styles$
|
|
1107
|
+
var styles$B = {"segment":"TripSegment-module_segment__jX-Nq","light":"TripSegment-module_light__hHSb3","dark":"TripSegment-module_dark__3Fuo7","empty":"TripSegment-module_empty__vmzg0","item":"TripSegment-module_item__S-RC1","itemHeader":"TripSegment-module_itemHeader__wFWMo","itemType":"TripSegment-module_itemType__NsDLe","itemName":"TripSegment-module_itemName__ysYsC","route":"TripSegment-module_route__Shyz0","location":"TripSegment-module_location__8VCMH","details":"TripSegment-module_details__4U4Km","dates":"TripSegment-module_dates__Wn4-k"};
|
|
1107
1108
|
|
|
1108
1109
|
const PlaneIcon$3 = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("path", { d: "M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5Z" }) }));
|
|
1109
1110
|
const BusIcon$2 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsx("path", { d: "M8 6v6" }), jsx("path", { d: "M16 6v6" }), jsx("circle", { cx: "8", cy: "16", r: "1" }), jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
|
|
@@ -1113,41 +1114,41 @@ const ArrowIcon = () => (jsxs("svg", { width: "12", height: "12", viewBox: "0 0
|
|
|
1113
1114
|
* Base TripSegment component wrapper
|
|
1114
1115
|
*/
|
|
1115
1116
|
const TripSegment = ({ type: _type, variant = 'light', className = '', children, }) => {
|
|
1116
|
-
return (jsx("div", { className: `${styles$
|
|
1117
|
+
return (jsx("div", { className: `${styles$B.segment} ${styles$B[variant]} ${className}`, children: children }));
|
|
1117
1118
|
};
|
|
1118
1119
|
/**
|
|
1119
1120
|
* AirSegment component for displaying flight information
|
|
1120
1121
|
*/
|
|
1121
1122
|
const AirSegment = ({ flights, variant = 'light', className = '', }) => {
|
|
1122
1123
|
if (!flights || flights.length === 0) {
|
|
1123
|
-
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
1124
|
+
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsx("span", { className: styles$B.empty, children: "No flights" }) }));
|
|
1124
1125
|
}
|
|
1125
|
-
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$
|
|
1126
|
+
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$B.item, children: [jsxs("div", { className: styles$B.itemHeader, children: [jsx(PlaneIcon$3, {}), jsx("span", { className: styles$B.itemType, children: flight.type === 'charter' ? 'Charter' : 'Commercial' })] }), jsxs("div", { className: styles$B.route, children: [jsx("span", { className: styles$B.location, children: flight.departure }), jsx(ArrowIcon, {}), jsx("span", { className: styles$B.location, children: flight.arrival })] }), jsxs("div", { className: styles$B.details, children: [jsx("span", { children: flight.departureDate }), flight.departureTime && jsx("span", { children: flight.departureTime })] }), flight.airline && (jsxs("div", { className: styles$B.details, children: [jsx("span", { children: flight.airline }), flight.flightNumber && jsxs("span", { children: ["#", flight.flightNumber] })] }))] }, i))) }));
|
|
1126
1127
|
};
|
|
1127
1128
|
/**
|
|
1128
1129
|
* GroundSegment component for displaying ground transportation
|
|
1129
1130
|
*/
|
|
1130
1131
|
const GroundSegment = ({ segments, variant = 'light', className = '', }) => {
|
|
1131
1132
|
if (!segments || segments.length === 0) {
|
|
1132
|
-
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
1133
|
+
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsx("span", { className: styles$B.empty, children: "No ground transportation" }) }));
|
|
1133
1134
|
}
|
|
1134
|
-
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$
|
|
1135
|
+
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$B.item, children: [jsxs("div", { className: styles$B.itemHeader, children: [jsx(BusIcon$2, {}), jsx("span", { className: styles$B.itemType, children: segment.type.charAt(0).toUpperCase() + segment.type.slice(1) })] }), jsxs("div", { className: styles$B.route, children: [jsx("span", { className: styles$B.location, children: segment.pickupLocation }), jsx(ArrowIcon, {}), jsx("span", { className: styles$B.location, children: segment.dropoffLocation })] }), jsxs("div", { className: styles$B.details, children: [jsx("span", { children: segment.pickupDate }), segment.pickupTime && jsx("span", { children: segment.pickupTime })] }), segment.company && (jsxs("div", { className: styles$B.details, children: [jsx("span", { children: segment.company }), segment.vehicleCount && jsxs("span", { children: [segment.vehicleCount, " vehicles"] })] }))] }, i))) }));
|
|
1135
1136
|
};
|
|
1136
1137
|
/**
|
|
1137
1138
|
* HotelSegment component for displaying hotel information
|
|
1138
1139
|
*/
|
|
1139
1140
|
const HotelSegment = ({ hotels, variant = 'light', className = '', }) => {
|
|
1140
1141
|
if (!hotels || hotels.length === 0) {
|
|
1141
|
-
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
1142
|
+
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsx("span", { className: styles$B.empty, children: "No hotels" }) }));
|
|
1142
1143
|
}
|
|
1143
|
-
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$
|
|
1144
|
+
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$B.item, children: [jsxs("div", { className: styles$B.itemHeader, children: [jsx(HotelIcon$3, {}), jsx("span", { className: styles$B.itemName, children: hotel.name })] }), hotel.city && (jsx("div", { className: styles$B.details, children: jsx("span", { children: hotel.city }) })), jsxs("div", { className: styles$B.dates, children: [jsx("span", { children: hotel.checkIn }), jsx("span", { children: "\u2013" }), jsx("span", { children: hotel.checkOut })] }), hotel.roomCount && (jsx("div", { className: styles$B.details, children: jsxs("span", { children: [hotel.roomCount, " rooms"] }) }))] }, i))) }));
|
|
1144
1145
|
};
|
|
1145
1146
|
TripSegment.displayName = 'TripSegment';
|
|
1146
1147
|
AirSegment.displayName = 'AirSegment';
|
|
1147
1148
|
GroundSegment.displayName = 'GroundSegment';
|
|
1148
1149
|
HotelSegment.displayName = 'HotelSegment';
|
|
1149
1150
|
|
|
1150
|
-
var styles$
|
|
1151
|
+
var styles$A = {"sidenav":"Sidenav-module_sidenav__9DKVg","expanded":"Sidenav-module_expanded__TfkMs","collapsed":"Sidenav-module_collapsed__xyLkg","toggle":"Sidenav-module_toggle__JCoZu","logoContainer":"Sidenav-module_logoContainer__lLl0-","nav":"Sidenav-module_nav__ZwGrU","navItem":"Sidenav-module_navItem__HhFpj","active":"Sidenav-module_active__-oHUp","icon":"Sidenav-module_icon__7XJWf","label":"Sidenav-module_label__DJDBw","footer":"Sidenav-module_footer__EgrDk"};
|
|
1151
1152
|
|
|
1152
1153
|
/**
|
|
1153
1154
|
* Sidenav component for main navigation.
|
|
@@ -1156,8 +1157,8 @@ var styles$z = {"sidenav":"Sidenav-module_sidenav__9DKVg","expanded":"Sidenav-mo
|
|
|
1156
1157
|
const Sidenav = ({ logo, logoCollapsed, items, activeKey, onItemClick, defaultExpanded = true, footer, className = '', ...props }) => {
|
|
1157
1158
|
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
1158
1159
|
const classNames = [
|
|
1159
|
-
styles$
|
|
1160
|
-
expanded ? styles$
|
|
1160
|
+
styles$A.sidenav,
|
|
1161
|
+
expanded ? styles$A.expanded : styles$A.collapsed,
|
|
1161
1162
|
className,
|
|
1162
1163
|
]
|
|
1163
1164
|
.filter(Boolean)
|
|
@@ -1170,20 +1171,20 @@ const Sidenav = ({ logo, logoCollapsed, items, activeKey, onItemClick, defaultEx
|
|
|
1170
1171
|
onItemClick(item.key);
|
|
1171
1172
|
}
|
|
1172
1173
|
};
|
|
1173
|
-
return (jsxs("aside", { className: classNames, ...props, children: [jsx("button", { className: styles$
|
|
1174
|
+
return (jsxs("aside", { className: classNames, ...props, children: [jsx("button", { className: styles$A.toggle, onClick: () => setExpanded(!expanded), "aria-label": expanded ? 'Collapse sidebar' : 'Expand sidebar', children: expanded ? (jsx(ChevronLeftIcon, { size: 16 })) : (jsx(ChevronRightIcon$1, { size: 16 })) }), jsx("div", { className: styles$A.logoContainer, children: expanded ? logo : logoCollapsed || logo }), jsx("nav", { className: styles$A.nav, children: items.map((item) => {
|
|
1174
1175
|
const isActive = item.key === activeKey;
|
|
1175
1176
|
const itemClasses = [
|
|
1176
|
-
styles$
|
|
1177
|
-
isActive ? styles$
|
|
1177
|
+
styles$A.navItem,
|
|
1178
|
+
isActive ? styles$A.active : '',
|
|
1178
1179
|
]
|
|
1179
1180
|
.filter(Boolean)
|
|
1180
1181
|
.join(' ');
|
|
1181
|
-
return (jsxs("button", { className: itemClasses, onClick: () => handleItemClick(item), "aria-current": isActive ? 'page' : undefined, title: !expanded ? item.label : undefined, children: [jsx("span", { className: styles$
|
|
1182
|
-
}) }), footer && jsx("div", { className: styles$
|
|
1182
|
+
return (jsxs("button", { className: itemClasses, onClick: () => handleItemClick(item), "aria-current": isActive ? 'page' : undefined, title: !expanded ? item.label : undefined, children: [jsx("span", { className: styles$A.icon, children: item.icon }), expanded && jsx("span", { className: styles$A.label, children: item.label })] }, item.key));
|
|
1183
|
+
}) }), footer && jsx("div", { className: styles$A.footer, children: footer })] }));
|
|
1183
1184
|
};
|
|
1184
1185
|
Sidenav.displayName = 'Sidenav';
|
|
1185
1186
|
|
|
1186
|
-
var styles$
|
|
1187
|
+
var styles$z = {"topbar":"Topbar-module_topbar__U9CDj","left":"Topbar-module_left__m4aap","accountWrapper":"Topbar-module_accountWrapper__5mjDZ","accountSelector":"Topbar-module_accountSelector__iqI--","open":"Topbar-module_open__2Xsp1","accountCode":"Topbar-module_accountCode__KMKWm","accountName":"Topbar-module_accountName__XZYjB","chevron":"Topbar-module_chevron__OSXcD","chevronOpen":"Topbar-module_chevronOpen__jVvEl","dropdown":"Topbar-module_dropdown__fA5Gw","dropdownSearch":"Topbar-module_dropdownSearch__9zqy3","searchIcon":"Topbar-module_searchIcon__sHGnK","searchInput":"Topbar-module_searchInput__1TSc3","dropdownList":"Topbar-module_dropdownList__P4q9b","dropdownItem":"Topbar-module_dropdownItem__w-eHf","selected":"Topbar-module_selected__MylKY","dropdownItemCode":"Topbar-module_dropdownItemCode__cUAn6","dropdownItemName":"Topbar-module_dropdownItemName__MYw3k","noResults":"Topbar-module_noResults__PkNfT","actions":"Topbar-module_actions__KtaiZ"};
|
|
1187
1188
|
|
|
1188
1189
|
/**
|
|
1189
1190
|
* Topbar component for the main header.
|
|
@@ -1194,7 +1195,7 @@ const Topbar = ({ account, accounts, onAccountSelect, onAccountClick, actions, l
|
|
|
1194
1195
|
const [searchQuery, setSearchQuery] = useState('');
|
|
1195
1196
|
const dropdownRef = useRef(null);
|
|
1196
1197
|
const searchInputRef = useRef(null);
|
|
1197
|
-
const classNames = [styles$
|
|
1198
|
+
const classNames = [styles$z.topbar, className].filter(Boolean).join(' ');
|
|
1198
1199
|
// Close dropdown on outside click
|
|
1199
1200
|
useEffect(() => {
|
|
1200
1201
|
if (!isOpen)
|
|
@@ -1243,27 +1244,27 @@ const Topbar = ({ account, accounts, onAccountSelect, onAccountClick, actions, l
|
|
|
1243
1244
|
const filteredAccounts = accounts?.filter(acc => acc.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
|
1244
1245
|
acc.code.toLowerCase().includes(searchQuery.toLowerCase())) || [];
|
|
1245
1246
|
const hasDropdown = accounts && accounts.length > 0;
|
|
1246
|
-
return (jsxs("header", { className: classNames, ...props, children: [jsxs("div", { className: styles$
|
|
1247
|
+
return (jsxs("header", { className: classNames, ...props, children: [jsxs("div", { className: styles$z.left, children: [leftContent, account && (jsxs("div", { className: styles$z.accountWrapper, ref: dropdownRef, children: [jsxs("button", { className: `${styles$z.accountSelector} ${isOpen ? styles$z.open : ''}`, onClick: handleToggle, "aria-expanded": isOpen, "aria-haspopup": hasDropdown ? 'listbox' : undefined, children: [jsx("span", { className: styles$z.accountCode, children: account.code }), jsx("span", { className: styles$z.accountName, children: account.name }), hasDropdown && (jsx(ChevronDownIcon$1, { size: 16, className: `${styles$z.chevron} ${isOpen ? styles$z.chevronOpen : ''}` }))] }), isOpen && hasDropdown && (jsxs("div", { className: styles$z.dropdown, role: "listbox", children: [jsxs("div", { className: styles$z.dropdownSearch, children: [jsxs("svg", { className: styles$z.searchIcon, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("circle", { cx: "11", cy: "11", r: "8" }), jsx("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })] }), jsx("input", { ref: searchInputRef, type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Search accounts...", className: styles$z.searchInput })] }), jsx("div", { className: styles$z.dropdownList, children: filteredAccounts.length > 0 ? (filteredAccounts.map((acc) => (jsxs("button", { className: `${styles$z.dropdownItem} ${acc.code === account.code ? styles$z.selected : ''}`, onClick: () => handleSelectAccount(acc), role: "option", "aria-selected": acc.code === account.code, children: [jsx("span", { className: styles$z.dropdownItemCode, children: acc.code }), jsx("span", { className: styles$z.dropdownItemName, children: acc.name })] }, acc.code)))) : (jsx("div", { className: styles$z.noResults, children: "No accounts found" })) })] }))] }))] }), actions && jsx("div", { className: styles$z.actions, children: actions })] }));
|
|
1247
1248
|
};
|
|
1248
1249
|
Topbar.displayName = 'Topbar';
|
|
1249
1250
|
|
|
1250
|
-
var styles$
|
|
1251
|
+
var styles$y = {"appLayout":"AppLayout-module_appLayout__NFbZk","mainArea":"AppLayout-module_mainArea__t-6oq","content":"AppLayout-module_content__5kV7S"};
|
|
1251
1252
|
|
|
1252
1253
|
const AppLayout = ({ navItems = [], activeNavKey, logo, collapsedLogo, account, defaultExpanded = true, onNavItemClick, onAccountClick, children, navFooter, topbarActions, className, }) => {
|
|
1253
|
-
return (jsxs("div", { className: `${styles$
|
|
1254
|
+
return (jsxs("div", { className: `${styles$y.appLayout} ${className || ''}`, children: [jsx(Sidenav, { items: navItems, activeKey: activeNavKey, defaultExpanded: defaultExpanded, onItemClick: onNavItemClick, logo: logo, logoCollapsed: collapsedLogo, footer: navFooter }), jsxs("div", { className: styles$y.mainArea, children: [jsx(Topbar, { account: account, onAccountClick: onAccountClick, actions: topbarActions }), jsx("main", { className: styles$y.content, children: children })] })] }));
|
|
1254
1255
|
};
|
|
1255
1256
|
|
|
1256
|
-
var styles$
|
|
1257
|
+
var styles$x = {"card":"Card-module_card__Ak6-W","default":"Card-module_default__e-M3H","bordered":"Card-module_bordered__pUL4k","elevated":"Card-module_elevated__8f-WS","interactive":"Card-module_interactive__6B4fH","padding-none":"Card-module_padding-none__c1qKN","padding-sm":"Card-module_padding-sm__Uejon","padding-md":"Card-module_padding-md__kR4F9","padding-lg":"Card-module_padding-lg__MleX9","header":"Card-module_header__NiVTV","headerContent":"Card-module_headerContent__LyJRB","title":"Card-module_title__3DN1v","subtitle":"Card-module_subtitle__gE5L-","actions":"Card-module_actions__gHmpq","body":"Card-module_body__BU4oo","footer":"Card-module_footer__zjjTd"};
|
|
1257
1258
|
|
|
1258
1259
|
/**
|
|
1259
1260
|
* Card component for grouping related content.
|
|
1260
1261
|
*/
|
|
1261
1262
|
const Card = forwardRef(({ variant = 'default', padding = 'md', interactive = false, className = '', children, ...props }, ref) => {
|
|
1262
1263
|
const classNames = [
|
|
1263
|
-
styles$
|
|
1264
|
-
styles$
|
|
1265
|
-
styles$
|
|
1266
|
-
interactive ? styles$
|
|
1264
|
+
styles$x.card,
|
|
1265
|
+
styles$x[variant],
|
|
1266
|
+
styles$x[`padding-${padding}`],
|
|
1267
|
+
interactive ? styles$x.interactive : '',
|
|
1267
1268
|
className,
|
|
1268
1269
|
]
|
|
1269
1270
|
.filter(Boolean)
|
|
@@ -1272,22 +1273,22 @@ const Card = forwardRef(({ variant = 'default', padding = 'md', interactive = fa
|
|
|
1272
1273
|
});
|
|
1273
1274
|
Card.displayName = 'Card';
|
|
1274
1275
|
const CardHeader = ({ title, subtitle, actions, className = '', children, ...props }) => {
|
|
1275
|
-
const classNames = [styles$
|
|
1276
|
-
return (jsxs("div", { className: classNames, ...props, children: [jsxs("div", { className: styles$
|
|
1276
|
+
const classNames = [styles$x.header, className].filter(Boolean).join(' ');
|
|
1277
|
+
return (jsxs("div", { className: classNames, ...props, children: [jsxs("div", { className: styles$x.headerContent, children: [title && jsx("h3", { className: styles$x.title, children: title }), subtitle && jsx("p", { className: styles$x.subtitle, children: subtitle }), children] }), actions && jsx("div", { className: styles$x.actions, children: actions })] }));
|
|
1277
1278
|
};
|
|
1278
1279
|
CardHeader.displayName = 'CardHeader';
|
|
1279
1280
|
const CardBody = ({ className = '', children, ...props }) => {
|
|
1280
|
-
const classNames = [styles$
|
|
1281
|
+
const classNames = [styles$x.body, className].filter(Boolean).join(' ');
|
|
1281
1282
|
return (jsx("div", { className: classNames, ...props, children: children }));
|
|
1282
1283
|
};
|
|
1283
1284
|
CardBody.displayName = 'CardBody';
|
|
1284
1285
|
const CardFooter = ({ className = '', children, ...props }) => {
|
|
1285
|
-
const classNames = [styles$
|
|
1286
|
+
const classNames = [styles$x.footer, className].filter(Boolean).join(' ');
|
|
1286
1287
|
return (jsx("div", { className: classNames, ...props, children: children }));
|
|
1287
1288
|
};
|
|
1288
1289
|
CardFooter.displayName = 'CardFooter';
|
|
1289
1290
|
|
|
1290
|
-
var styles$
|
|
1291
|
+
var styles$w = {"container":"ContactList-module_container__1kjze","alert":"ContactList-module_alert__KC0tz","card":"ContactList-module_card__TOyp2","header":"ContactList-module_header__QysLx","titleRow":"ContactList-module_titleRow__tUDMS","title":"ContactList-module_title__R-IOd","tooltip":"ContactList-module_tooltip__DDMka","list":"ContactList-module_list__6tjo-","contactItem":"ContactList-module_contactItem__4SoW-","contactInfo":"ContactList-module_contactInfo__6cQpi","contactName":"ContactList-module_contactName__z748K","badge":"ContactList-module_badge__USFpb","badgeSecondary":"ContactList-module_badgeSecondary__OSwqF","contactRole":"ContactList-module_contactRole__6kfuQ","contactDetails":"ContactList-module_contactDetails__ihY0M","contactLink":"ContactList-module_contactLink__sWGp9","contactPhone":"ContactList-module_contactPhone__dUn6z","contactActions":"ContactList-module_contactActions__6WT-z","actionButton":"ContactList-module_actionButton__aPnGZ","actionButtonDanger":"ContactList-module_actionButtonDanger__yRBz0","empty":"ContactList-module_empty__bRTDB","footer":"ContactList-module_footer__18gB-","addButton":"ContactList-module_addButton__STUhp"};
|
|
1291
1292
|
|
|
1292
1293
|
const InfoIcon = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("circle", { cx: "12", cy: "12", r: "10" }), jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }), jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })] }));
|
|
1293
1294
|
const EditIcon$1 = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }), jsx("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })] }));
|
|
@@ -1298,18 +1299,18 @@ const PlusIcon$1 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0
|
|
|
1298
1299
|
*/
|
|
1299
1300
|
const ContactList = ({ title = 'Contacts', tooltip, contacts, onEdit, onRemove, onAdd, showAdd = true, addLabel = 'Add Contact', alert, className = '', }) => {
|
|
1300
1301
|
const listClasses = [
|
|
1301
|
-
styles$
|
|
1302
|
+
styles$w.container,
|
|
1302
1303
|
className,
|
|
1303
1304
|
].filter(Boolean).join(' ');
|
|
1304
|
-
return (jsxs("div", { className: listClasses, children: [alert && (jsx("div", { className: styles$
|
|
1305
|
+
return (jsxs("div", { className: listClasses, children: [alert && (jsx("div", { className: styles$w.alert, children: alert })), jsxs("div", { className: styles$w.card, children: [jsx("div", { className: styles$w.header, children: jsxs("div", { className: styles$w.titleRow, children: [jsx("h3", { className: styles$w.title, children: title }), tooltip && (jsx("span", { className: styles$w.tooltip, children: jsx(InfoIcon, {}) }))] }) }), jsxs("div", { className: styles$w.list, children: [contacts.map((contact) => (jsxs("div", { className: styles$w.contactItem, children: [jsxs("div", { className: styles$w.contactInfo, children: [jsxs("div", { className: styles$w.contactName, children: [contact.name, contact.isPrimary && (jsx("span", { className: styles$w.badge, children: "Primary" })), contact.isSecondary && (jsx("span", { className: `${styles$w.badge} ${styles$w.badgeSecondary}`, children: "Secondary" }))] }), contact.role && (jsx("div", { className: styles$w.contactRole, children: contact.role })), jsxs("div", { className: styles$w.contactDetails, children: [contact.email && (jsx("a", { href: `mailto:${contact.email}`, className: styles$w.contactLink, children: contact.email })), contact.phone && (jsx("span", { className: styles$w.contactPhone, children: contact.phone }))] })] }), jsxs("div", { className: styles$w.contactActions, children: [onEdit && (jsx("button", { type: "button", className: styles$w.actionButton, onClick: () => onEdit(contact), "aria-label": "Edit contact", children: jsx(EditIcon$1, {}) })), onRemove && (jsx("button", { type: "button", className: `${styles$w.actionButton} ${styles$w.actionButtonDanger}`, onClick: () => onRemove(contact), "aria-label": "Remove contact", children: jsx(TrashIcon$1, {}) }))] })] }, contact.id))), contacts.length === 0 && (jsx("div", { className: styles$w.empty, children: "No contacts added" }))] }), showAdd && onAdd && (jsx("div", { className: styles$w.footer, children: jsxs("button", { type: "button", className: styles$w.addButton, onClick: onAdd, children: [jsx(PlusIcon$1, {}), addLabel] }) }))] })] }));
|
|
1305
1306
|
};
|
|
1306
1307
|
ContactList.displayName = 'ContactList';
|
|
1307
1308
|
|
|
1308
|
-
var styles$
|
|
1309
|
+
var styles$v = {"container":"Drawer-module_container__hXuOY","backdrop":"Drawer-module_backdrop__MIipQ","fadeIn":"Drawer-module_fadeIn__QsuvQ","backdropOpen":"Drawer-module_backdropOpen__YpH--","drawer":"Drawer-module_drawer__EHbbs","right":"Drawer-module_right__x6P6Q","drawerOpen":"Drawer-module_drawerOpen__KTgFg","left":"Drawer-module_left__aVF9t","top":"Drawer-module_top__wuvhi","bottom":"Drawer-module_bottom__rt-VZ","sizeSm":"Drawer-module_sizeSm__LFrm3","sizeMd":"Drawer-module_sizeMd__A1QTQ","sizeLg":"Drawer-module_sizeLg__6laD8","sizeXl":"Drawer-module_sizeXl__FY9mZ","sizeFull":"Drawer-module_sizeFull__BGQ1q","header":"Drawer-module_header__MpR14","headerContent":"Drawer-module_headerContent__dFcLH","title":"Drawer-module_title__0AmOX","closeButton":"Drawer-module_closeButton__VuXsE","body":"Drawer-module_body__GLUGo","footer":"Drawer-module_footer__K5ekS"};
|
|
1309
1310
|
|
|
1310
|
-
const DrawerHeader = ({ title, children, showClose = true, onClose, className = '', }) => (jsxs("div", { className: `${styles$
|
|
1311
|
-
const DrawerBody = ({ children, className = '' }) => (jsx("div", { className: `${styles$
|
|
1312
|
-
const DrawerFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$
|
|
1311
|
+
const DrawerHeader = ({ title, children, showClose = true, onClose, className = '', }) => (jsxs("div", { className: `${styles$v.header} ${className}`, children: [jsxs("div", { className: styles$v.headerContent, children: [title && jsx("h2", { className: styles$v.title, children: title }), children] }), showClose && (jsx("button", { type: "button", className: styles$v.closeButton, onClick: onClose, "aria-label": "Close drawer", children: jsx("svg", { width: "20", height: "20", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }))] }));
|
|
1312
|
+
const DrawerBody = ({ children, className = '' }) => (jsx("div", { className: `${styles$v.body} ${className}`, children: children }));
|
|
1313
|
+
const DrawerFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$v.footer} ${className}`, children: children }));
|
|
1313
1314
|
const Drawer = ({ isOpen, onClose, position = 'right', size = 'md', children, closeOnBackdropClick = true, closeOnEscape = true, showBackdrop = true, className = '', }) => {
|
|
1314
1315
|
const handleEscape = useCallback((e) => {
|
|
1315
1316
|
if (closeOnEscape && e.key === 'Escape') {
|
|
@@ -1333,7 +1334,7 @@ const Drawer = ({ isOpen, onClose, position = 'right', size = 'md', children, cl
|
|
|
1333
1334
|
};
|
|
1334
1335
|
if (!isOpen)
|
|
1335
1336
|
return null;
|
|
1336
|
-
return (jsxs("div", { className: styles$
|
|
1337
|
+
return (jsxs("div", { className: styles$v.container, children: [showBackdrop && (jsx("div", { className: `${styles$v.backdrop} ${isOpen ? styles$v.backdropOpen : ''}`, onClick: handleBackdropClick })), jsx("div", { className: `${styles$v.drawer} ${styles$v[position]} ${styles$v[`size${size.charAt(0).toUpperCase()}${size.slice(1)}`]} ${isOpen ? styles$v.drawerOpen : ''} ${className}`, role: "dialog", "aria-modal": "true", children: React.Children.map(children, (child) => {
|
|
1337
1338
|
if (React.isValidElement(child) && child.type === DrawerHeader) {
|
|
1338
1339
|
return React.cloneElement(child, {
|
|
1339
1340
|
onClose,
|
|
@@ -1346,7 +1347,7 @@ Drawer.Header = DrawerHeader;
|
|
|
1346
1347
|
Drawer.Body = DrawerBody;
|
|
1347
1348
|
Drawer.Footer = DrawerFooter;
|
|
1348
1349
|
|
|
1349
|
-
var styles$
|
|
1350
|
+
var styles$u = {"drawer":"DueDatesDrawer-module_drawer__TqC4Q","open":"DueDatesDrawer-module_open__Yblf3","body":"DueDatesDrawer-module_body__OwwF-","search":"DueDatesDrawer-module_search__g7-Rl","cards":"DueDatesDrawer-module_cards__bFG90","empty":"DueDatesDrawer-module_empty__K2ULN","card":"DueDatesDrawer-module_card__4Os-5","cardTitle":"DueDatesDrawer-module_cardTitle__fU-cP","status":"DueDatesDrawer-module_status__dXifz","completed":"DueDatesDrawer-module_completed__jWoYi","pastDue":"DueDatesDrawer-module_pastDue__TSikC","tags":"DueDatesDrawer-module_tags__8P87y","completion":"DueDatesDrawer-module_completion__mIrWm"};
|
|
1350
1351
|
|
|
1351
1352
|
const isTravelDueDateCompleted = (item) => item.status.trim().toLowerCase() === 'completed' || !!item.completeddatetime;
|
|
1352
1353
|
const parseLocalDate$1 = (value) => {
|
|
@@ -1362,7 +1363,7 @@ const DueDateCard = ({ item, onToggle, onTaskClick }) => {
|
|
|
1362
1363
|
const completed = isTravelDueDateCompleted(item);
|
|
1363
1364
|
const dueDate = parseLocalDate$1(item.duedate);
|
|
1364
1365
|
const pastDue = !!dueDate && dueDate < new Date() && !completed;
|
|
1365
|
-
return (jsxs("article", { className: styles$
|
|
1366
|
+
return (jsxs("article", { className: styles$u.card, children: [jsxs("div", { className: styles$u.cardTitle, children: [jsx("button", { type: "button", "aria-label": `${completed ? 'Reopen' : 'Complete'} ${item.tasktitle}`, className: [styles$u.status, completed ? styles$u.completed : pastDue ? styles$u.pastDue : ''].filter(Boolean).join(' '), onClick: () => onToggle?.(item), children: completed ? jsx(CheckIcon$2, { size: 12 }) : null }), jsx("h5", { children: item.tasktitle })] }), item.description && jsx("p", { children: item.description }), jsxs("div", { className: styles$u.tags, children: [jsx("span", { style: { backgroundColor: sportColor(item.sportCode) }, children: item.sportCode }), jsx("button", { type: "button", disabled: !item.masterTripGUID || !onTaskClick, onClick: () => item.masterTripGUID && onTaskClick?.(item.masterTripGUID), children: item.tripName })] }), completed && item.completeddatetime && jsxs("div", { className: styles$u.completion, children: [jsx(CheckIcon$2, { size: 14 }), jsxs("span", { children: [jsx("em", { children: "on" }), " ", formatDate$2(item.completeddatetime, { month: 'numeric', day: 'numeric', year: '2-digit' }), " ", jsx("em", { children: "by" }), " ", item.completedby] })] })] }));
|
|
1366
1367
|
};
|
|
1367
1368
|
/** Hub's searchable, status-aware due-dates drawer. */
|
|
1368
1369
|
const DueDatesDrawer = ({ isOpen, dueDates, selectedDate, selectedTrip, onClose, onToggle, onTaskClick, className = '' }) => {
|
|
@@ -1374,10 +1375,10 @@ const DueDatesDrawer = ({ isOpen, dueDates, selectedDate, selectedTrip, onClose,
|
|
|
1374
1375
|
const matches = items.filter((item) => (!selectedTrip || item.masterTripGUID === String(selectedTrip)) && (!normalized || item.tasktitle.toLowerCase().includes(normalized) || item.sportCode.toLowerCase().includes(normalized) || item.description.toLowerCase().includes(normalized)));
|
|
1375
1376
|
return matches.length ? [[date, matches]] : [];
|
|
1376
1377
|
})), [dueDates, search, selectedDate, selectedTrip]);
|
|
1377
|
-
return (jsxs("aside", { className: [styles$
|
|
1378
|
+
return (jsxs("aside", { className: [styles$u.drawer, isOpen ? styles$u.open : '', className].filter(Boolean).join(' '), "aria-hidden": !isOpen, "aria-label": "Due Dates", children: [jsxs("header", { children: [jsx("h3", { children: "Due Dates" }), jsx("button", { type: "button", "aria-label": "Close due dates", onClick: onClose, children: jsx(CloseIcon, { size: 24 }) })] }), jsxs("div", { className: styles$u.body, children: [jsxs("label", { className: styles$u.search, children: [jsx(SearchIcon$1, { size: 16 }), jsx("input", { type: "search", placeholder: "Search", value: search, onChange: (event) => setSearch(event.target.value) })] }), !Object.keys(filtered).length ? jsx("div", { className: styles$u.empty, children: "No due dates found." }) : Object.entries(filtered).map(([date, items]) => (jsxs("section", { children: [jsx("h4", { children: formatDate$2(date, { month: 'long', day: 'numeric', year: 'numeric' }) }), jsx("div", { className: styles$u.cards, children: items.map((item) => jsx(DueDateCard, { item: item, onToggle: onToggle, onTaskClick: onTaskClick }, `${date}-${item.taskid}`)) })] }, date)))] })] }));
|
|
1378
1379
|
};
|
|
1379
1380
|
|
|
1380
|
-
var styles$
|
|
1381
|
+
var styles$t = {"shell":"HubAppShell-module_shell__Y13Fo","main":"HubAppShell-module_main__OvnjA","beta":"HubAppShell-module_beta__V8Dzh","sidebar":"HubAppShell-module_sidebar__73gt6","shellExpanded":"HubAppShell-module_shellExpanded__z9cLL","expandButton":"HubAppShell-module_expandButton__hyYi-","logo":"HubAppShell-module_logo__iylLM","defaultLogo":"HubAppShell-module_defaultLogo__tVCz-","desktopNav":"HubAppShell-module_desktopNav__-ZRGD","navItem":"HubAppShell-module_navItem__FKkXN","active":"HubAppShell-module_active__zu1-B","navIcon":"HubAppShell-module_navIcon__QRImh","disabledNav":"HubAppShell-module_disabledNav__zj07n","sidebarFooter":"HubAppShell-module_sidebarFooter__kA2bq","profile":"HubAppShell-module_profile__JCGL5","avatar":"HubAppShell-module_avatar__V-lFG","profileMenu":"HubAppShell-module_profileMenu__qqWSu","topbar":"HubAppShell-module_topbar__U4w0A","defaultAccount":"HubAppShell-module_defaultAccount__3vohz","defaultActions":"HubAppShell-module_defaultActions__wAEJb","desktopActions":"HubAppShell-module_desktopActions__uVRKY","mobileActions":"HubAppShell-module_mobileActions__W6Rf9","content":"HubAppShell-module_content__yCgGs","contentDisabled":"HubAppShell-module_contentDisabled__btmCY","mobileNav":"HubAppShell-module_mobileNav__X0zBs","mobileNavItem":"HubAppShell-module_mobileNavItem__1x94j","mobileExtras":"HubAppShell-module_mobileExtras__xo3qI","mobileBooking":"HubAppShell-module_mobileBooking__-Jz9h","mobilePrimary":"HubAppShell-module_mobilePrimary__p5PCn","mobileFooter":"HubAppShell-module_mobileFooter__QvsE-","loading":"HubAppShell-module_loading__V8RiG"};
|
|
1381
1382
|
|
|
1382
1383
|
const HUB_INDIVIDUAL_TRAVEL_ITEM = { key: 'individual-travel', label: 'Individual Travel', path: '/individual-travel', icon: jsx(UserIcon, { size: 24 }) };
|
|
1383
1384
|
const HUB_NAV_ITEMS = [
|
|
@@ -1387,9 +1388,9 @@ const HUB_NAV_ITEMS = [
|
|
|
1387
1388
|
{ key: 'team-management', label: 'Team Management', path: '/team-management', icon: jsx(UsersIcon$1, { size: 24 }) },
|
|
1388
1389
|
];
|
|
1389
1390
|
const HUB_ADMIN_ITEM = { key: 'administration', label: 'Administration', path: '/administration', icon: jsx(SettingsIcon, { size: 24 }) };
|
|
1390
|
-
const DefaultLogo = ({ expanded }) => jsxs("div", { className: styles$
|
|
1391
|
-
const DefaultAccount = () => jsxs("button", { type: "button", className: styles$
|
|
1392
|
-
const DefaultActions = ({ isMobileNavOpen, toggleMobileNav }) => (jsxs("div", { className: styles$
|
|
1391
|
+
const DefaultLogo = ({ expanded }) => jsxs("div", { className: styles$t.defaultLogo, children: [jsx(LogoIcon, { size: expanded ? 38 : 32 }), expanded && jsxs("span", { children: [jsx("strong", { children: "SHORT'S" }), jsx("small", { children: "TRAVEL MANAGEMENT" })] })] });
|
|
1392
|
+
const DefaultAccount = () => jsxs("button", { type: "button", className: styles$t.defaultAccount, children: [jsx("span", { children: "UNI" }), jsx("strong", { children: "University of Northern Iowa" })] });
|
|
1393
|
+
const DefaultActions = ({ isMobileNavOpen, toggleMobileNav }) => (jsxs("div", { className: styles$t.defaultActions, children: [jsxs("div", { className: styles$t.desktopActions, children: [jsx(Button, { size: "lg", leftIcon: jsx(ArrowUpRightIcon, { size: 18 }), children: "Book Team Travel" }), jsx(Button, { variant: "secondary", size: "lg", square: true, "aria-label": "Provide Feedback", children: jsx(LightbulbIcon, { size: 18 }) }), jsx(Button, { variant: "secondary", size: "lg", square: true, "aria-label": "Announcements", children: jsx(MegaphoneIcon, { size: 18 }) }), jsx(Button, { variant: "secondary", size: "lg", square: true, "aria-label": "Contact Us", children: jsx(PhoneIcon, { size: 18 }) })] }), jsxs("div", { className: styles$t.mobileActions, children: [jsx(Button, { variant: "ghost", size: "lg", square: true, "aria-label": "Announcements", children: jsx(MegaphoneIcon, { size: 20 }) }), jsx(Button, { variant: "ghost", size: "lg", square: true, "aria-label": isMobileNavOpen ? 'Close navigation' : 'Open navigation', onClick: toggleMobileNav, children: isMobileNavOpen ? jsx(CloseIcon, { size: 22 }) : jsx(MenuIcon, { size: 22 }) })] })] }));
|
|
1393
1394
|
/** The shared application navigation and content shell used by Hub and its Storybook pages. */
|
|
1394
1395
|
const HubAppShell = ({ children, navItems = HUB_NAV_ITEMS, individualTravelItem = HUB_INDIVIDUAL_TRAVEL_ITEM, adminItem = HUB_ADMIN_ITEM, activeNavKey, onNavigate, onLogoClick, onLegacyPortal, accountSelector, renderTopbarActions, renderMobileExtras, mobileFooter, profileMenu, userInitials = 'KM', isAdmin = true, navigationDisabled = false, loading = false, contentDisabled = false, showContent = true, logo, defaultExpanded = false, betaLabel = 'Beta Version', className = '', }) => {
|
|
1395
1396
|
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
@@ -1412,11 +1413,11 @@ const HubAppShell = ({ children, navItems = HUB_NAV_ITEMS, individualTravelItem
|
|
|
1412
1413
|
onNavigate?.(item);
|
|
1413
1414
|
closeMobileNav();
|
|
1414
1415
|
};
|
|
1415
|
-
const renderNavItem = (item, mobile = false) => (jsxs("button", { type: "button", className: [styles$
|
|
1416
|
-
return (jsxs("div", { className: [styles$
|
|
1416
|
+
const renderNavItem = (item, mobile = false) => (jsxs("button", { type: "button", className: [styles$t.navItem, activeNavKey === item.key ? styles$t.active : '', mobile ? styles$t.mobileNavItem : ''].filter(Boolean).join(' '), "aria-current": activeNavKey === item.key ? 'page' : undefined, "aria-label": item.label, title: item.label, onClick: () => navigate(item), children: [jsx("span", { className: styles$t.navIcon, children: item.icon }), (expanded || mobile) && jsx("span", { children: item.label })] }, item.key));
|
|
1417
|
+
return (jsxs("div", { className: [styles$t.shell, expanded ? styles$t.shellExpanded : '', className].filter(Boolean).join(' '), children: [loading && jsx("div", { className: styles$t.loading, role: "status", "aria-label": "Loading", "data-testid": "loading-overlay", children: jsx("span", {}) }), betaLabel && jsx("div", { className: styles$t.beta, children: betaLabel }), jsxs("aside", { className: styles$t.sidebar, "data-expanded": expanded, children: [jsx("button", { type: "button", className: styles$t.expandButton, "aria-label": expanded ? 'Collapse sidebar' : 'Expand sidebar', onClick: () => setExpanded((value) => !value), children: expanded ? jsx(ChevronLeftIcon, { size: 16 }) : jsx(ChevronRightIcon$1, { size: 16 }) }), jsx("button", { type: "button", className: styles$t.logo, "aria-label": "Go to Home", onClick: onLogoClick, children: logo ?? jsx(DefaultLogo, { expanded: expanded }) }), jsxs("nav", { className: styles$t.desktopNav, "aria-label": "Hub navigation", children: [jsxs("button", { type: "button", className: styles$t.navItem, "aria-label": "Old Portal", title: "Old Portal", onClick: onLegacyPortal, children: [jsx("span", { className: styles$t.navIcon, children: jsx(ArrowUpRightIcon, { size: 24 }) }), expanded && jsx("span", { children: "Old Portal" })] }), renderNavItem(individualTravelItem), jsx("div", { className: navigationDisabled ? styles$t.disabledNav : '', children: navItems.map((item) => renderNavItem(item)) })] }), jsxs("div", { className: styles$t.sidebarFooter, children: [isAdmin && renderNavItem(adminItem), jsxs("div", { className: styles$t.profile, ref: profileRef, children: [jsx("button", { type: "button", className: styles$t.avatar, "aria-label": "User Information", onClick: () => setIsProfileOpen((value) => !value), children: userInitials }), isProfileOpen && profileMenu && jsx("div", { className: styles$t.profileMenu, children: profileMenu })] })] })] }), jsxs("div", { className: styles$t.main, children: [jsxs("header", { className: styles$t.topbar, children: [jsx("div", { children: accountSelector ?? jsx(DefaultAccount, {}) }), renderTopbarActions?.(actions) ?? jsx(DefaultActions, { ...actions })] }), isMobileNavOpen && jsxs("div", { className: styles$t.mobileNav, children: [jsx("nav", { "aria-label": "Mobile Hub navigation", children: navItems.map((item) => renderNavItem(item, true)) }), jsxs("div", { className: styles$t.mobileExtras, role: "group", "aria-label": "Mobile navigation actions", children: [renderMobileExtras?.(closeMobileNav) ?? jsxs("button", { type: "button", className: styles$t.mobileBooking, onClick: closeMobileNav, children: [jsx(ArrowUpRightIcon, { size: 20 }), jsx("span", { children: "Book Team Travel" })] }), jsxs("button", { type: "button", className: styles$t.mobilePrimary, onClick: () => { onLegacyPortal?.(); closeMobileNav(); }, children: [jsx(ArrowUpRightIcon, { size: 20 }), jsx("span", { children: "Legacy Portal" })] })] }), mobileFooter && jsx("div", { className: styles$t.mobileFooter, children: mobileFooter })] }), showContent && jsx("main", { className: [styles$t.content, contentDisabled ? styles$t.contentDisabled : ''].filter(Boolean).join(' '), children: children })] })] }));
|
|
1417
1418
|
};
|
|
1418
1419
|
|
|
1419
|
-
var styles$
|
|
1420
|
+
var styles$s = {"container":"MembershipPrograms-module_container__qsGZu","loading":"MembershipPrograms-module_loading__tjDtr","alert":"MembershipPrograms-module_alert__GZc0f","header":"MembershipPrograms-module_header__ywXOE","title":"MembershipPrograms-module_title__WZGyt","addButton":"MembershipPrograms-module_addButton__rNlNb","empty":"MembershipPrograms-module_empty__pYrHW","list":"MembershipPrograms-module_list__8A9MG","group":"MembershipPrograms-module_group__v1Vc6","groupHeader":"MembershipPrograms-module_groupHeader__I5KJO","groupIcon":"MembershipPrograms-module_groupIcon__e1LIq","groupLabel":"MembershipPrograms-module_groupLabel__Wqift","programs":"MembershipPrograms-module_programs__hxHXQ","program":"MembershipPrograms-module_program__S3HTM","programInfo":"MembershipPrograms-module_programInfo__RJruG","programProvider":"MembershipPrograms-module_programProvider__c7enz","programName":"MembershipPrograms-module_programName__TN42s","programNumber":"MembershipPrograms-module_programNumber__GKav4","programStatus":"MembershipPrograms-module_programStatus__2imvX","programActions":"MembershipPrograms-module_programActions__36LkY","actionButton":"MembershipPrograms-module_actionButton__y-GI4","removeButton":"MembershipPrograms-module_removeButton__cTTuZ"};
|
|
1420
1421
|
|
|
1421
1422
|
const PlaneIcon$2 = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("path", { d: "M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5Z" }) }));
|
|
1422
1423
|
const HotelIcon$2 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M3 21h18" }), jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
|
|
@@ -1442,8 +1443,8 @@ const TYPE_LABELS = {
|
|
|
1442
1443
|
*/
|
|
1443
1444
|
const MembershipPrograms = ({ title = 'Membership Programs', programs, onEdit, onRemove, onAdd, alert, isLoading = false, emptyMessage = 'No membership programs added', className = '', }) => {
|
|
1444
1445
|
const containerClasses = [
|
|
1445
|
-
styles$
|
|
1446
|
-
isLoading ? styles$
|
|
1446
|
+
styles$s.container,
|
|
1447
|
+
isLoading ? styles$s.loading : '',
|
|
1447
1448
|
className,
|
|
1448
1449
|
].filter(Boolean).join(' ');
|
|
1449
1450
|
const groupedPrograms = programs.reduce((acc, program) => {
|
|
@@ -1454,30 +1455,30 @@ const MembershipPrograms = ({ title = 'Membership Programs', programs, onEdit, o
|
|
|
1454
1455
|
return acc;
|
|
1455
1456
|
}, {});
|
|
1456
1457
|
const typeOrder = ['airline', 'hotel', 'car', 'other'];
|
|
1457
|
-
return (jsxs("div", { className: containerClasses, children: [alert && jsx("div", { className: styles$
|
|
1458
|
+
return (jsxs("div", { className: containerClasses, children: [alert && jsx("div", { className: styles$s.alert, children: alert }), jsxs("div", { className: styles$s.header, children: [jsx("h2", { className: styles$s.title, children: title }), onAdd && (jsxs("button", { type: "button", className: styles$s.addButton, onClick: onAdd, "aria-label": "Add membership program", children: [jsx(PlusIcon, {}), jsx("span", { children: "Add Program" })] }))] }), programs.length === 0 ? (jsx("div", { className: styles$s.empty, children: jsx("p", { children: emptyMessage }) })) : (jsx("div", { className: styles$s.list, children: typeOrder.map((type) => {
|
|
1458
1459
|
const typePrograms = groupedPrograms[type];
|
|
1459
1460
|
if (!typePrograms || typePrograms.length === 0)
|
|
1460
1461
|
return null;
|
|
1461
|
-
return (jsxs("div", { className: styles$
|
|
1462
|
+
return (jsxs("div", { className: styles$s.group, children: [jsxs("div", { className: styles$s.groupHeader, children: [jsx("span", { className: styles$s.groupIcon, children: TYPE_ICONS[type] }), jsx("span", { className: styles$s.groupLabel, children: TYPE_LABELS[type] })] }), jsx("div", { className: styles$s.programs, children: typePrograms.map((program) => (jsxs("div", { className: styles$s.program, children: [jsxs("div", { className: styles$s.programInfo, children: [jsx("div", { className: styles$s.programProvider, children: program.provider }), program.programName && (jsx("div", { className: styles$s.programName, children: program.programName })), jsx("div", { className: styles$s.programNumber, children: program.membershipNumber }), program.status && (jsx("div", { className: styles$s.programStatus, children: program.status }))] }), jsxs("div", { className: styles$s.programActions, children: [onEdit && (jsx("button", { type: "button", className: styles$s.actionButton, onClick: () => onEdit(program), "aria-label": `Edit ${program.provider} program`, children: jsx(EditIcon, {}) })), onRemove && (jsx("button", { type: "button", className: [styles$s.actionButton, styles$s.removeButton].join(' '), onClick: () => onRemove(program), "aria-label": `Remove ${program.provider} program`, children: jsx(TrashIcon, {}) }))] })] }, program.id))) })] }, type));
|
|
1462
1463
|
}) }))] }));
|
|
1463
1464
|
};
|
|
1464
1465
|
MembershipPrograms.displayName = 'MembershipPrograms';
|
|
1465
1466
|
|
|
1466
|
-
var styles$
|
|
1467
|
+
var styles$r = {"stats":"ManifestCapacityStats-module_stats__BA5-o","stat":"ManifestCapacityStats-module_stat__qLJtb","labelRow":"ManifestCapacityStats-module_labelRow__iDQqn","label":"ManifestCapacityStats-module_label__5BRoZ","value":"ManifestCapacityStats-module_value__4hiE5","sub":"ManifestCapacityStats-module_sub__w7djZ","warningText":"ManifestCapacityStats-module_warningText__CZZ9a","warningIcon":"ManifestCapacityStats-module_warningIcon__NoXmW","alertIcon":"ManifestCapacityStats-module_alertIcon__h0QHJ","meter":"ManifestCapacityStats-module_meter__DrUuq","meterFill":"ManifestCapacityStats-module_meterFill__v7zKW","meterOver":"ManifestCapacityStats-module_meterOver__UqigI","alert":"ManifestCapacityStats-module_alert__vwkBX"};
|
|
1467
1468
|
|
|
1468
1469
|
const Stat = ({ label, value, sub, meterValue, meterMax, warn = false }) => {
|
|
1469
1470
|
const ratio = meterMax > 0 ? Math.min(100, Math.max(0, (meterValue / meterMax) * 100)) : 0;
|
|
1470
|
-
return (jsxs("div", { className: styles$
|
|
1471
|
+
return (jsxs("div", { className: styles$r.stat, children: [jsxs("div", { className: styles$r.labelRow, children: [jsx("span", { className: styles$r.label, children: label }), warn && jsx(WarningIcon$1, { size: 14, className: styles$r.warningIcon, "aria-label": `${label} warning` })] }), jsx("div", { className: [styles$r.value, warn ? styles$r.warningText : ''].filter(Boolean).join(' '), children: value }), jsx("div", { className: styles$r.sub, children: sub }), jsx("div", { className: styles$r.meter, "aria-hidden": "true", children: jsx("span", { className: [styles$r.meterFill, warn ? styles$r.meterOver : ''].filter(Boolean).join(' '), style: { width: `${ratio}%` } }) })] }));
|
|
1471
1472
|
};
|
|
1472
1473
|
/** Advisory seat and payload meters from Hub's charter manifest. */
|
|
1473
1474
|
const ManifestCapacityStats = ({ paxCount, seats, paxWeight, cargoWeight, payloadLimit, className = '', }) => {
|
|
1474
1475
|
const totalWeight = paxWeight + cargoWeight;
|
|
1475
1476
|
const overSeats = seats > 0 && paxCount > seats;
|
|
1476
1477
|
const overPayload = payloadLimit > 0 && totalWeight > payloadLimit;
|
|
1477
|
-
return (jsxs("div", { className: className, children: [jsxs("div", { className: styles$
|
|
1478
|
+
return (jsxs("div", { className: className, children: [jsxs("div", { className: styles$r.stats, children: [jsx(Stat, { label: "Seats", value: `${paxCount} / ${seats}`, sub: overSeats ? `${paxCount - seats} over capacity` : `${Math.max(0, seats - paxCount)} seats open`, meterValue: paxCount, meterMax: seats, warn: overSeats }), jsx(Stat, { label: "Passenger weight", value: `${paxWeight.toLocaleString()} lb`, sub: `${paxCount} passengers`, meterValue: paxWeight, meterMax: payloadLimit }), jsx(Stat, { label: "Cargo weight", value: `${cargoWeight.toLocaleString()} lb`, sub: "Equipment + bags", meterValue: cargoWeight, meterMax: payloadLimit }), jsx(Stat, { label: "Total payload", value: `${totalWeight.toLocaleString()} lb`, sub: overPayload ? `${(totalWeight - payloadLimit).toLocaleString()} lb over limit` : `Limit ${payloadLimit.toLocaleString()} lb`, meterValue: totalWeight, meterMax: payloadLimit, warn: overPayload })] }), (overSeats || overPayload) && (jsxs("div", { className: styles$r.alert, role: "alert", children: [jsx(WarningIcon$1, { size: 20, className: styles$r.alertIcon }), jsxs("div", { children: [overSeats && (jsxs("div", { children: [jsx("strong", { children: "Over seat capacity." }), " Remove ", paxCount - seats, " passenger(s) or split the manifest by segment."] })), overPayload && (jsxs("div", { children: [jsx("strong", { children: "Over the contracted payload." }), " Total payload exceeds the quoted maximum \u2014 coordinate with the team/client and confirm with the carrier before sending."] }))] })] }))] }));
|
|
1478
1479
|
};
|
|
1479
1480
|
|
|
1480
|
-
var styles$
|
|
1481
|
+
var styles$q = {"overlay":"Modal-module_overlay__n7Paz","fadeIn":"Modal-module_fadeIn__upWKg","modal":"Modal-module_modal__YZQ-K","slideIn":"Modal-module_slideIn__mtAFr","sm":"Modal-module_sm__QSWSJ","md":"Modal-module_md__6t9J8","lg":"Modal-module_lg__5r3uQ","xl":"Modal-module_xl__JPpjn","full":"Modal-module_full__y9leS","header":"Modal-module_header__xTw6j","title":"Modal-module_title__KvPHy","closeButton":"Modal-module_closeButton__JoRui","body":"Modal-module_body__K3swC","footer":"Modal-module_footer__Z1UcB","footerButtons":"Modal-module_footerButtons__u-Ayv","confirmMessage":"Modal-module_confirmMessage__ZlKV8"};
|
|
1481
1482
|
|
|
1482
1483
|
const Modal = ({ isOpen, onClose, title, children, size = 'md', showCloseButton = true, closeOnBackdropClick = true, closeOnEscape = true, footer, className = '', }) => {
|
|
1483
1484
|
const handleEscape = useCallback((e) => {
|
|
@@ -1502,12 +1503,12 @@ const Modal = ({ isOpen, onClose, title, children, size = 'md', showCloseButton
|
|
|
1502
1503
|
};
|
|
1503
1504
|
if (!isOpen)
|
|
1504
1505
|
return null;
|
|
1505
|
-
return (jsx("div", { className: styles$
|
|
1506
|
+
return (jsx("div", { className: styles$q.overlay, onClick: handleBackdropClick, children: jsxs("div", { className: `${styles$q.modal} ${styles$q[size]} ${className}`, role: "dialog", "aria-modal": "true", "aria-labelledby": title ? 'modal-title' : undefined, children: [(title || showCloseButton) && (jsxs("div", { className: styles$q.header, children: [title && (jsx("h2", { id: "modal-title", className: styles$q.title, children: title })), showCloseButton && (jsx("button", { type: "button", className: styles$q.closeButton, onClick: onClose, "aria-label": "Close modal", children: jsx("svg", { width: "20", height: "20", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }))] })), jsx("div", { className: styles$q.body, children: children }), footer && jsx("div", { className: styles$q.footer, children: footer })] }) }));
|
|
1506
1507
|
};
|
|
1507
|
-
const ModalFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$
|
|
1508
|
-
const ConfirmModal = ({ message, confirmText = 'Confirm', cancelText = 'Cancel', onConfirm, onClose, destructive = false, loading = false, ...props }) => (jsx(Modal, { ...props, onClose: onClose, size: "sm", footer: jsxs(ModalFooter, { children: [jsx(Button, { variant: "secondary", onClick: onClose, children: cancelText }), jsx(Button, { variant: destructive ? 'danger' : 'primary', onClick: onConfirm, disabled: loading, children: loading ? 'Loading...' : confirmText })] }), children: jsx("div", { className: styles$
|
|
1508
|
+
const ModalFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$q.footerButtons} ${className}`, children: children }));
|
|
1509
|
+
const ConfirmModal = ({ message, confirmText = 'Confirm', cancelText = 'Cancel', onConfirm, onClose, destructive = false, loading = false, ...props }) => (jsx(Modal, { ...props, onClose: onClose, size: "sm", footer: jsxs(ModalFooter, { children: [jsx(Button, { variant: "secondary", onClick: onClose, children: cancelText }), jsx(Button, { variant: destructive ? 'danger' : 'primary', onClick: onConfirm, disabled: loading, children: loading ? 'Loading...' : confirmText })] }), children: jsx("div", { className: styles$q.confirmMessage, children: message }) }));
|
|
1509
1510
|
|
|
1510
|
-
var styles$
|
|
1511
|
+
var styles$p = {"module":"Module-module_module__1Lglz","header":"Module-module_header__-qP6m","closed":"Module-module_closed__J5FYJ","sm":"Module-module_sm__g-iVI","md":"Module-module_md__zmKQE","lg":"Module-module_lg__5uVgV","titleRow":"Module-module_titleRow__3upJc","icon":"Module-module_icon__MXVy7","iconSpaced":"Module-module_iconSpaced__O8F0i","title":"Module-module_title__Qdyv0","badge":"Module-module_badge__zoNEC","tools":"Module-module_tools__w6Z1b","toggleBtn":"Module-module_toggleBtn__VxH2u","bodyWrapper":"Module-module_bodyWrapper__IogVT","body":"Module-module_body__O9n9B","hidden":"Module-module_hidden__mmUYg","footer":"Module-module_footer__hrUY9","divider":"Module-module_divider__YQKdf","dark":"Module-module_dark__w8Fb-","verticalDivider":"Module-module_verticalDivider__t3g-3"};
|
|
1511
1512
|
|
|
1512
1513
|
const ChevronIcon = ({ direction }) => (jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", style: { transform: direction === 'up' ? 'rotate(180deg)' : 'none' }, children: jsx("polyline", { points: "6 9 12 15 18 9" }) }));
|
|
1513
1514
|
/**
|
|
@@ -1529,19 +1530,19 @@ const Module = ({ title, icon, iconClassName = '', badge, before, children, afte
|
|
|
1529
1530
|
setOpen(!open);
|
|
1530
1531
|
}
|
|
1531
1532
|
};
|
|
1532
|
-
return (jsxs("div", { className: `${styles$
|
|
1533
|
+
return (jsxs("div", { className: `${styles$p.module} ${className}`, children: [title && (jsx("div", { className: `${styles$p.header} ${styles$p[size]} ${!open ? styles$p.closed : ''} ${headerClassName}`, children: jsxs("div", { className: `${styles$p.titleRow} ${styles$p[size]} ${titleClassName}`, children: [icon && (jsx("span", { className: `${styles$p.icon} ${size === 'sm' ? '' : styles$p.iconSpaced} ${iconClassName}`, children: icon })), jsx("span", { className: styles$p.title, children: title }), badge && jsx("span", { className: styles$p.badge, children: badge }), jsxs("div", { className: styles$p.tools, children: [tools, useToggle && (jsx("button", { type: "button", className: styles$p.toggleBtn, onClick: handleToggle, "aria-expanded": open, children: jsx(ChevronIcon, { direction: open ? 'up' : 'down' }) }))] })] }) })), jsxs("div", { className: styles$p.bodyWrapper, children: [before, jsx("div", { className: `${styles$p.body} ${styles$p[size]} ${!open ? styles$p.hidden : ''} ${bodyClassName}`, children: children }), after] }), footer && (jsx("div", { className: `${styles$p.footer} ${!open ? styles$p.hidden : ''}`, children: footer }))] }));
|
|
1533
1534
|
};
|
|
1534
1535
|
/**
|
|
1535
1536
|
* Horizontal divider for Module content
|
|
1536
1537
|
*/
|
|
1537
|
-
const ModuleDivider = ({ dark = false, className = '' }) => (jsx("hr", { className: `${styles$
|
|
1538
|
+
const ModuleDivider = ({ dark = false, className = '' }) => (jsx("hr", { className: `${styles$p.divider} ${dark ? styles$p.dark : ''} ${className}` }));
|
|
1538
1539
|
/**
|
|
1539
1540
|
* Vertical divider for Module content
|
|
1540
1541
|
*/
|
|
1541
|
-
const ModuleVerticalDivider = ({ dark = false, className = '' }) => (jsx("div", { className: `${styles$
|
|
1542
|
+
const ModuleVerticalDivider = ({ dark = false, className = '' }) => (jsx("div", { className: `${styles$p.verticalDivider} ${dark ? styles$p.dark : ''} ${className}` }));
|
|
1542
1543
|
Module.displayName = 'Module';
|
|
1543
1544
|
|
|
1544
|
-
var styles$
|
|
1545
|
+
var styles$o = {"stack":"PageBanners-module_stack__v6nwz","banner":"PageBanners-module_banner__8lgnU","system":"PageBanners-module_system__Xiqoe","alert":"PageBanners-module_alert__O2lYb","systemIcon":"PageBanners-module_systemIcon__su3aG","alertIcon":"PageBanners-module_alertIcon__owy3V","alertTitle":"PageBanners-module_alertTitle__zeo3d","alertDismiss":"PageBanners-module_alertDismiss__2JI9V","content":"PageBanners-module_content__ZHLA9","title":"PageBanners-module_title__-53EA","detail":"PageBanners-module_detail__xgNJE","clamp":"PageBanners-module_clamp__iWIIp","alertLink":"PageBanners-module_alertLink__mxQM5","dismiss":"PageBanners-module_dismiss__aWRXw"};
|
|
1545
1546
|
|
|
1546
1547
|
const decodeEntities = (value) => {
|
|
1547
1548
|
if (typeof document === 'undefined')
|
|
@@ -1568,13 +1569,13 @@ const PageBanners = ({ systemBanners, alertBanners, className = '', }) => {
|
|
|
1568
1569
|
const visibleAlerts = alertBanners.filter((banner) => !dismissed.has(banner.id));
|
|
1569
1570
|
if (!visibleSystem.length && !visibleAlerts.length)
|
|
1570
1571
|
return null;
|
|
1571
|
-
return (jsxs("div", { className: [styles$
|
|
1572
|
-
const content = (jsxs("div", { className: styles$
|
|
1573
|
-
return (jsxs("div", { className: [styles$
|
|
1572
|
+
return (jsxs("div", { className: [styles$o.stack, className].filter(Boolean).join(' '), role: "region", "aria-label": "Page notices", children: [visibleSystem.map((banner) => (jsxs("div", { className: [styles$o.banner, styles$o.system].join(' '), role: "status", children: [jsx(InfoIcon$1, { className: styles$o.systemIcon, size: 20, "aria-hidden": "true" }), jsxs("div", { className: styles$o.content, children: [jsx("p", { className: styles$o.title, dangerouslySetInnerHTML: { __html: banner.html } }), banner.detailHtml && (jsx("p", { className: styles$o.detail, dangerouslySetInnerHTML: { __html: banner.detailHtml } }))] }), jsx("button", { type: "button", className: styles$o.dismiss, "aria-label": "Dismiss notice", onClick: () => dismiss(banner.id), children: jsx(CloseIcon, { size: 16 }) })] }, banner.id))), visibleAlerts.map((banner) => {
|
|
1573
|
+
const content = (jsxs("div", { className: styles$o.content, children: [jsx("p", { className: [styles$o.title, styles$o.alertTitle].join(' '), children: decodeEntities(banner.title) }), banner.body && jsx("p", { className: [styles$o.detail, styles$o.clamp].join(' '), children: decodeEntities(banner.body) })] }));
|
|
1574
|
+
return (jsxs("div", { className: [styles$o.banner, styles$o.alert].join(' '), role: "alert", children: [jsx(WarningIcon$1, { className: styles$o.alertIcon, size: 20, "aria-hidden": "true" }), banner.href ? (jsx("a", { href: banner.href, className: styles$o.alertLink, children: content })) : (content), jsx("button", { type: "button", className: [styles$o.dismiss, styles$o.alertDismiss].join(' '), "aria-label": "Dismiss alert", onClick: () => dismiss(banner.id), children: jsx(CloseIcon, { size: 16 }) })] }, banner.id));
|
|
1574
1575
|
})] }));
|
|
1575
1576
|
};
|
|
1576
1577
|
|
|
1577
|
-
var styles$
|
|
1578
|
+
var styles$n = {"panel":"PreferencesPanel-module_panel__xsxcw","loading":"PreferencesPanel-module_loading__GopYy","alert":"PreferencesPanel-module_alert__9yYz3","title":"PreferencesPanel-module_title__Z5dpP","grid":"PreferencesPanel-module_grid__e0urP","section":"PreferencesPanel-module_section__6cbAx","sectionHeader":"PreferencesPanel-module_sectionHeader__X6e5h","sectionIcon":"PreferencesPanel-module_sectionIcon__jVJwn","sectionTitle":"PreferencesPanel-module_sectionTitle__29M-O","fields":"PreferencesPanel-module_fields__rryQ3","field":"PreferencesPanel-module_field__W3Z9z","fieldLabel":"PreferencesPanel-module_fieldLabel__usgRa","fieldValue":"PreferencesPanel-module_fieldValue__AEJ1C","fieldInput":"PreferencesPanel-module_fieldInput__rS8OR","footer":"PreferencesPanel-module_footer__qTYqi"};
|
|
1578
1579
|
|
|
1579
1580
|
const PlaneIcon$1 = () => (jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("path", { d: "M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5Z" }) }));
|
|
1580
1581
|
const BusIcon$1 = () => (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsx("path", { d: "M8 6v6" }), jsx("path", { d: "M16 6v6" }), jsx("circle", { cx: "8", cy: "16", r: "1" }), jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
|
|
@@ -1589,15 +1590,15 @@ const DEFAULT_ICONS = {
|
|
|
1589
1590
|
*/
|
|
1590
1591
|
const PreferencesPanel = ({ title, sections, alert, footer, isLoading = false, className = '', }) => {
|
|
1591
1592
|
const panelClasses = [
|
|
1592
|
-
styles$
|
|
1593
|
-
isLoading ? styles$
|
|
1593
|
+
styles$n.panel,
|
|
1594
|
+
isLoading ? styles$n.loading : '',
|
|
1594
1595
|
className,
|
|
1595
1596
|
].filter(Boolean).join(' ');
|
|
1596
|
-
return (jsxs("div", { className: panelClasses, children: [alert && (jsx("div", { className: styles$
|
|
1597
|
+
return (jsxs("div", { className: panelClasses, children: [alert && (jsx("div", { className: styles$n.alert, children: alert })), title && jsx("h2", { className: styles$n.title, children: title }), jsx("div", { className: styles$n.grid, children: sections.map((section, i) => (jsxs("div", { className: styles$n.section, children: [jsxs("div", { className: styles$n.sectionHeader, children: [(section.icon || DEFAULT_ICONS[section.title.toLowerCase()]) && (jsx("span", { className: styles$n.sectionIcon, children: section.icon || DEFAULT_ICONS[section.title.toLowerCase()] })), jsx("h3", { className: styles$n.sectionTitle, children: section.title })] }), jsx("div", { className: styles$n.fields, children: section.fields.map((field, j) => (jsxs("div", { className: styles$n.field, children: [jsx("label", { className: styles$n.fieldLabel, children: field.label }), field.input ? (jsx("div", { className: styles$n.fieldInput, children: field.input })) : (jsx("div", { className: styles$n.fieldValue, children: field.value || '—' }))] }, j))) })] }, i))) }), footer && (jsx("div", { className: styles$n.footer, children: footer }))] }));
|
|
1597
1598
|
};
|
|
1598
1599
|
PreferencesPanel.displayName = 'PreferencesPanel';
|
|
1599
1600
|
|
|
1600
|
-
var styles$
|
|
1601
|
+
var styles$m = {"summary":"RequestSummary-module_summary__nxews","title":"RequestSummary-module_title__NAq53","submissionInfo":"RequestSummary-module_submissionInfo__dwkaf","label":"RequestSummary-module_label__pGo-5","value":"RequestSummary-module_value__F8m9g","sections":"RequestSummary-module_sections__uWXtM","section":"RequestSummary-module_section__TlxbY","sectionTitle":"RequestSummary-module_sectionTitle__iMPB2","segment":"RequestSummary-module_segment__xq-Lp","segmentTitle":"RequestSummary-module_segmentTitle__ey5-f","row":"RequestSummary-module_row__tfJzQ","empty":"RequestSummary-module_empty__fzxmd"};
|
|
1601
1602
|
|
|
1602
1603
|
/**
|
|
1603
1604
|
* SummaryItem component displays a single label-value pair.
|
|
@@ -1606,7 +1607,7 @@ const SummaryItemRow = ({ item, value }) => {
|
|
|
1606
1607
|
if (!value)
|
|
1607
1608
|
return null;
|
|
1608
1609
|
const formattedValue = item.format ? item.format(value) : String(value);
|
|
1609
|
-
return (jsxs("div", { className: styles$
|
|
1610
|
+
return (jsxs("div", { className: styles$m.row, children: [jsx("span", { className: styles$m.label, children: item.label }), jsx("span", { className: styles$m.value, children: formattedValue })] }));
|
|
1610
1611
|
};
|
|
1611
1612
|
/**
|
|
1612
1613
|
* SummarySection component for a group of related summary items.
|
|
@@ -1617,7 +1618,7 @@ const SummarySection = ({ section, values }) => {
|
|
|
1617
1618
|
const hasSegments = section.segments?.some(seg => seg.items.some(item => values[`${section.key}_${seg.label}_${item.label}`] || values[item.label]));
|
|
1618
1619
|
if (!hasItems && !hasSegments)
|
|
1619
1620
|
return null;
|
|
1620
|
-
return (jsxs("div", { className: styles$
|
|
1621
|
+
return (jsxs("div", { className: styles$m.section, children: [jsx("h3", { className: styles$m.sectionTitle, children: section.title }), section.items?.map((item, i) => (jsx(SummaryItemRow, { item: item, value: values[item.label] || values[`${section.key}_${item.label}`] }, i))), section.segments?.map((segment, i) => (jsxs("div", { className: styles$m.segment, children: [jsx("h4", { className: styles$m.segmentTitle, children: segment.label }), segment.items.map((item, j) => (jsx(SummaryItemRow, { item: item, value: values[`${section.key}_${segment.label}_${item.label}`] || values[item.label] }, j)))] }, i)))] }));
|
|
1621
1622
|
};
|
|
1622
1623
|
/**
|
|
1623
1624
|
* RequestSummary component for displaying a summary of travel request form data.
|
|
@@ -1625,18 +1626,18 @@ const SummarySection = ({ section, values }) => {
|
|
|
1625
1626
|
*/
|
|
1626
1627
|
const RequestSummary = ({ sections, values, enabledSections = {}, submissionInfo, className, title = 'Request Summary', }) => {
|
|
1627
1628
|
const visibleSections = sections.filter(section => enabledSections[section.key] !== false);
|
|
1628
|
-
return (jsxs("div", { className: `${styles$
|
|
1629
|
+
return (jsxs("div", { className: `${styles$m.summary} ${className || ''}`, children: [jsx("h2", { className: styles$m.title, children: title }), submissionInfo && (jsxs("div", { className: styles$m.submissionInfo, children: [jsx("span", { className: styles$m.label, children: "Submitted by" }), jsx("span", { className: styles$m.value, children: submissionInfo.submittedBy }), jsx("span", { className: styles$m.label, children: "on" }), jsx("span", { className: styles$m.value, children: submissionInfo.submittedOn })] })), jsx("div", { className: styles$m.sections, children: visibleSections.map((section) => (jsx(SummarySection, { section: section, values: values }, section.key))) }), visibleSections.length === 0 && (jsx("p", { className: styles$m.empty, children: "No services selected" }))] }));
|
|
1629
1630
|
};
|
|
1630
1631
|
RequestSummary.displayName = 'RequestSummary';
|
|
1631
1632
|
|
|
1632
|
-
var styles$
|
|
1633
|
+
var styles$l = {"layout":"RequestFormLayout-module_layout__R-vaM","header":"RequestFormLayout-module_header__705In","headerContent":"RequestFormLayout-module_headerContent__Uu0br","headerTitle":"RequestFormLayout-module_headerTitle__W-fub","pagination":"RequestFormLayout-module_pagination__hTpNr","separator":"RequestFormLayout-module_separator__BgEsp","eventName":"RequestFormLayout-module_eventName__1zpgS","headerRight":"RequestFormLayout-module_headerRight__VjjY3","body":"RequestFormLayout-module_body__RBH8O","sidebar":"RequestFormLayout-module_sidebar__Ozr7m","showOnMobile":"RequestFormLayout-module_showOnMobile__kyyER","sidebarContent":"RequestFormLayout-module_sidebarContent__IdoMX","main":"RequestFormLayout-module_main__132ss","mainContent":"RequestFormLayout-module_mainContent__vnp1R","summarySidebar":"RequestFormLayout-module_summarySidebar__Vfg-z","summaryContent":"RequestFormLayout-module_summaryContent__Oppnd","footer":"RequestFormLayout-module_footer__yxDM5","footerContent":"RequestFormLayout-module_footerContent__GmTkE","button":"RequestFormLayout-module_button__-iWUv","primary":"RequestFormLayout-module_primary__cs2Fb","secondary":"RequestFormLayout-module_secondary__9WNRX"};
|
|
1633
1634
|
|
|
1634
1635
|
/**
|
|
1635
1636
|
* RequestFormHeader component for the fixed header in travel request forms.
|
|
1636
1637
|
*/
|
|
1637
1638
|
const RequestFormHeader = ({ title, currentPage, totalPages, eventName, rightContent, className, }) => {
|
|
1638
1639
|
const showPagination = currentPage !== undefined && totalPages !== undefined && totalPages > 1;
|
|
1639
|
-
return (jsx("header", { className: `${styles$
|
|
1640
|
+
return (jsx("header", { className: `${styles$l.header} ${className || ''}`, children: jsxs("div", { className: styles$l.headerContent, children: [jsxs("h1", { className: styles$l.headerTitle, children: [title, showPagination && (jsxs("span", { className: styles$l.pagination, children: ["(", currentPage, "/", totalPages, ")"] })), eventName && (jsxs(Fragment, { children: [jsx("span", { className: styles$l.separator, children: "\u2013" }), jsx("span", { className: styles$l.eventName, children: eventName })] }))] }), rightContent && jsx("div", { className: styles$l.headerRight, children: rightContent })] }) }));
|
|
1640
1641
|
};
|
|
1641
1642
|
/**
|
|
1642
1643
|
* RequestFormFooter component for the fixed footer with navigation buttons.
|
|
@@ -1644,20 +1645,20 @@ const RequestFormHeader = ({ title, currentPage, totalPages, eventName, rightCon
|
|
|
1644
1645
|
const RequestFormFooter = ({ onPrevious, onNext, isFirstPage = false, isLastPage = false, isSubmitting = false, previousText, nextText, className, }) => {
|
|
1645
1646
|
const prevLabel = previousText || (isFirstPage ? 'Cancel' : 'Previous');
|
|
1646
1647
|
const nextLabel = nextText || (isLastPage ? 'Submit' : 'Next');
|
|
1647
|
-
return (jsx("footer", { className: `${styles$
|
|
1648
|
+
return (jsx("footer", { className: `${styles$l.footer} ${className || ''}`, children: jsxs("div", { className: styles$l.footerContent, children: [jsx("button", { type: "button", className: `${styles$l.button} ${styles$l.secondary}`, onClick: onPrevious, disabled: isSubmitting, children: prevLabel }), jsx("button", { type: "button", className: `${styles$l.button} ${styles$l.primary}`, onClick: onNext, disabled: isSubmitting, children: isSubmitting ? 'Submitting...' : nextLabel })] }) }));
|
|
1648
1649
|
};
|
|
1649
1650
|
/**
|
|
1650
1651
|
* RequestFormLayout organism for travel request forms.
|
|
1651
1652
|
* Provides a three-column layout with fixed header and footer.
|
|
1652
1653
|
*/
|
|
1653
1654
|
const RequestFormLayout = ({ header, sidebar, children, summary, footer, className, showSidebarOnMobile = false, }) => {
|
|
1654
|
-
return (jsxs("div", { className: `${styles$
|
|
1655
|
+
return (jsxs("div", { className: `${styles$l.layout} ${className || ''}`, children: [header, jsxs("div", { className: styles$l.body, children: [sidebar && (jsx("aside", { className: `${styles$l.sidebar} ${showSidebarOnMobile ? styles$l.showOnMobile : ''}`, children: jsx("div", { className: styles$l.sidebarContent, children: sidebar }) })), jsx("main", { className: styles$l.main, children: jsx("div", { className: styles$l.mainContent, children: children }) }), summary && (jsx("aside", { className: styles$l.summarySidebar, children: jsx("div", { className: styles$l.summaryContent, children: summary }) }))] }), footer] }));
|
|
1655
1656
|
};
|
|
1656
1657
|
RequestFormLayout.displayName = 'RequestFormLayout';
|
|
1657
1658
|
RequestFormHeader.displayName = 'RequestFormHeader';
|
|
1658
1659
|
RequestFormFooter.displayName = 'RequestFormFooter';
|
|
1659
1660
|
|
|
1660
|
-
var styles$
|
|
1661
|
+
var styles$k = {"wrapper":"Table-module_wrapper__1klo5","table":"Table-module_table__fkuUB","header":"Table-module_header__vRy6j","headerCell":"Table-module_headerCell__2KzYn","headerContent":"Table-module_headerContent__HPl8-","sortable":"Table-module_sortable__NiS6E","sortIcon":"Table-module_sortIcon__Fy6z7","body":"Table-module_body__Wt52U","row":"Table-module_row__4GEgX","cell":"Table-module_cell__Xr-7H","alignLeft":"Table-module_alignLeft__FtI9E","alignCenter":"Table-module_alignCenter__p8Tr8","alignRight":"Table-module_alignRight__Ca7Yr","bordered":"Table-module_bordered__9bM3L","striped":"Table-module_striped__6TMF-","hoverable":"Table-module_hoverable__KN5Fp","compact":"Table-module_compact__opzS-","clickable":"Table-module_clickable__2ummV","loading":"Table-module_loading__tFELE","empty":"Table-module_empty__urRiw","pulse":"Table-module_pulse__t32v9"};
|
|
1661
1662
|
|
|
1662
1663
|
const Table = ({ columns, data, rowKey = 'id', bordered = false, striped = false, hoverable = true, compact = false, loading = false, emptyMessage = 'No data available', onRowClick, className = '', }) => {
|
|
1663
1664
|
const [sortColumn, setSortColumn] = useState(null);
|
|
@@ -1695,12 +1696,12 @@ const Table = ({ columns, data, rowKey = 'id', bordered = false, striped = false
|
|
|
1695
1696
|
}
|
|
1696
1697
|
return row[rowKey] ?? index;
|
|
1697
1698
|
};
|
|
1698
|
-
return (jsx("div", { className: `${styles$
|
|
1699
|
+
return (jsx("div", { className: `${styles$k.wrapper} ${className}`, children: jsxs("table", { className: `${styles$k.table} ${bordered ? styles$k.bordered : ''} ${striped ? styles$k.striped : ''} ${hoverable ? styles$k.hoverable : ''} ${compact ? styles$k.compact : ''}`, children: [jsx("thead", { className: styles$k.header, children: jsx("tr", { children: columns.map((column) => (jsx("th", { className: `${styles$k.headerCell} ${column.sortable ? styles$k.sortable : ''} ${styles$k[`align${(column.align || 'left').charAt(0).toUpperCase()}${(column.align || 'left').slice(1)}`]}`, style: column.width ? { width: column.width } : undefined, onClick: () => handleSort(column), children: jsxs("span", { className: styles$k.headerContent, children: [column.label, column.sortable && (jsx("span", { className: styles$k.sortIcon, children: sortColumn === column.key ? (sortDirection === 'asc' ? '↑' : '↓') : ('↕') }))] }) }, column.key))) }) }), jsx("tbody", { className: styles$k.body, children: loading ? (jsx("tr", { children: jsx("td", { colSpan: columns.length, className: styles$k.loading, children: "Loading..." }) })) : sortedData.length === 0 ? (jsx("tr", { children: jsx("td", { colSpan: columns.length, className: styles$k.empty, children: emptyMessage }) })) : (sortedData.map((row, rowIndex) => (jsx("tr", { className: `${styles$k.row} ${onRowClick ? styles$k.clickable : ''}`, onClick: () => onRowClick?.(row, rowIndex), children: columns.map((column) => (jsx("td", { className: `${styles$k.cell} ${styles$k[`align${(column.align || 'left').charAt(0).toUpperCase()}${(column.align || 'left').slice(1)}`]}`, children: column.render
|
|
1699
1700
|
? column.render(row[column.key], row, rowIndex)
|
|
1700
1701
|
: row[column.key] }, column.key))) }, getRowKey(row, rowIndex))))) })] }) }));
|
|
1701
1702
|
};
|
|
1702
1703
|
|
|
1703
|
-
var styles$
|
|
1704
|
+
var styles$j = {"card":"TeamCard-module_card__R2u4q","header":"TeamCard-module_header__XXRUp","icon":"TeamCard-module_icon__l2Go2","title":"TeamCard-module_title__llL8V","body":"TeamCard-module_body__OoVMW","tabs":"TeamCard-module_tabs__SJ7t-","tab":"TeamCard-module_tab__Q5j3C","tabActive":"TeamCard-module_tabActive__dUPwX","list":"TeamCard-module_list__a734u","teamItem":"TeamCard-module_teamItem__OYVIK","teamCode":"TeamCard-module_teamCode__BHB63","teamName":"TeamCard-module_teamName__-Bds2","chevron":"TeamCard-module_chevron__zBxM6","empty":"TeamCard-module_empty__8b5hb"};
|
|
1704
1705
|
|
|
1705
1706
|
const TEAM_GROUPS = [
|
|
1706
1707
|
{ label: 'All', key: undefined },
|
|
@@ -1734,26 +1735,26 @@ const TeamCard = ({ title = 'Administer Teams', icon, teams, onTeamSelect, class
|
|
|
1734
1735
|
return teams.filter(team => team.category === activeTab);
|
|
1735
1736
|
}, [teams, activeTab]);
|
|
1736
1737
|
const cardClasses = [
|
|
1737
|
-
styles$
|
|
1738
|
+
styles$j.card,
|
|
1738
1739
|
className,
|
|
1739
1740
|
].filter(Boolean).join(' ');
|
|
1740
|
-
return (jsxs("div", { className: cardClasses, children: [jsxs("div", { className: styles$
|
|
1741
|
+
return (jsxs("div", { className: cardClasses, children: [jsxs("div", { className: styles$j.header, children: [jsx("span", { className: styles$j.icon, children: icon || jsx(UsersIcon, {}) }), jsx("h3", { className: styles$j.title, children: title })] }), jsxs("div", { className: styles$j.body, children: [jsx("div", { className: styles$j.tabs, children: TEAM_GROUPS.map(({ label, key }) => (jsx("button", { type: "button", onClick: () => setActiveTab(key), className: `${styles$j.tab} ${activeTab === key ? styles$j.tabActive : ''}`, children: label }, label))) }), jsxs("div", { className: styles$j.list, children: [filteredTeams.map((team) => (jsxs("button", { type: "button", className: styles$j.teamItem, onClick: () => onTeamSelect?.(team), children: [jsx("span", { className: styles$j.teamCode, style: { backgroundColor: getTeamColor(team.code) }, children: team.code }), jsx("span", { className: styles$j.teamName, children: team.description }), jsx("span", { className: styles$j.chevron, children: jsx(ChevronRightIcon, {}) })] }, team.id))), filteredTeams.length === 0 && (jsx("div", { className: styles$j.empty, children: "No teams found" }))] })] })] }));
|
|
1741
1742
|
};
|
|
1742
1743
|
TeamCard.displayName = 'TeamCard';
|
|
1743
1744
|
|
|
1744
|
-
var styles$
|
|
1745
|
+
var styles$i = {"actions":"TeamScheduleActions-module_actions__OvuON","primaryRow":"TeamScheduleActions-module_primaryRow__8rwhE","tripCount":"TeamScheduleActions-module_tripCount__4axn4","seasonNavigator":"TeamScheduleActions-module_seasonNavigator__jmqeE","seasonLabel":"TeamScheduleActions-module_seasonLabel__8MtKK","secondaryRow":"TeamScheduleActions-module_secondaryRow__We2n9"};
|
|
1745
1746
|
|
|
1746
1747
|
/** Exact presentational counterpart of Hub's Team Schedule action controls. */
|
|
1747
|
-
const TeamScheduleActions = ({ isCompactView, tripCount, seasonLabel, seasonValue, seasonOptions = [], previousSeasonDisabled = false, exportDisabled = false, exporting = false, groupTravelDisabled = false, mergeDisabled = false, merging = false, onViewSchedule, onBack, onPreviousSeason, onNextSeason, onSeasonChange, onExport, onGroupTravelRequest, onMergeEvents, className = '', }) => (jsxs("div", { className: [styles$
|
|
1748
|
+
const TeamScheduleActions = ({ isCompactView, tripCount, seasonLabel, seasonValue, seasonOptions = [], previousSeasonDisabled = false, exportDisabled = false, exporting = false, groupTravelDisabled = false, mergeDisabled = false, merging = false, onViewSchedule, onBack, onPreviousSeason, onNextSeason, onSeasonChange, onExport, onGroupTravelRequest, onMergeEvents, className = '', }) => (jsxs("div", { className: [styles$i.actions, className].filter(Boolean).join(' '), children: [jsxs("div", { className: styles$i.primaryRow, children: [!isCompactView ? (jsx(Button, { size: "sm", onClick: onViewSchedule, children: "View/Edit Schedule" })) : (jsx(Button, { size: "sm", onClick: onBack, leftIcon: jsx(ChevronLeftIcon, { size: 14 }), children: "Back" })), jsxs("div", { className: styles$i.seasonNavigator, children: [jsx(Button, { variant: "secondary", size: "sm", square: true, "aria-label": "Previous Season", disabled: previousSeasonDisabled, onClick: onPreviousSeason, children: jsx(ChevronLeftIcon, { size: 18 }) }), jsxs("div", { className: styles$i.seasonLabel, children: [jsx(Button, { variant: "secondary", size: "sm", children: seasonLabel }), !!seasonOptions.length && (jsx("select", { "aria-label": "Season", value: seasonValue, onChange: (event) => onSeasonChange?.(event.target.value), children: seasonOptions.map((option) => jsx("option", { value: option.value, children: option.label }, option.value)) }))] }), jsx(Button, { variant: "secondary", size: "sm", square: true, "aria-label": "Next Season", onClick: onNextSeason, children: jsx(ChevronRightIcon$1, { size: 18 }) })] }), isCompactView && jsx(Button, { variant: "outline", size: "sm", loading: exporting, disabled: exportDisabled, rightIcon: jsx(ArrowUpRightIcon, { size: 14 }), onClick: onExport, children: "Export XLS" }), jsxs("span", { className: styles$i.tripCount, children: [tripCount, " trips displayed"] })] }), isCompactView && (jsxs("div", { className: styles$i.secondaryRow, children: [jsx(Button, { variant: "outline", size: "sm", disabled: groupTravelDisabled, onClick: onGroupTravelRequest, children: "Group Travel Request" }), jsx(Button, { variant: "outline", size: "sm", disabled: mergeDisabled, loading: merging, onClick: onMergeEvents, children: "Merge Events" })] }))] }));
|
|
1748
1749
|
|
|
1749
|
-
var styles$
|
|
1750
|
+
var styles$h = {"headers":"TeamScheduleCompactTable-module_headers__FVr2C","tripHeader":"TeamScheduleCompactTable-module_tripHeader__9vr2-","eventHeader":"TeamScheduleCompactTable-module_eventHeader__6gfwo","table":"TeamScheduleCompactTable-module_table__MdE3o","row":"TeamScheduleCompactTable-module_row__Rt0YC","trip":"TeamScheduleCompactTable-module_trip__oAUEQ","events":"TeamScheduleCompactTable-module_events__EwJi9","empty":"TeamScheduleCompactTable-module_empty__1u5HA","addRow":"TeamScheduleCompactTable-module_addRow__ejqSf"};
|
|
1750
1751
|
|
|
1751
1752
|
const DEFAULT_TRIP_HEADERS = ['', 'GTR', 'Trvl Start', 'Trvl End', 'Trip Name', 'Services', ''];
|
|
1752
1753
|
const DEFAULT_EVENT_HEADERS = ['', 'Event Date', 'Opponent/Host', 'Event Title', 'Hm/Awy', ''];
|
|
1753
1754
|
/** Hub's two-panel compact Team Schedule shell. Editable rows remain injectable. */
|
|
1754
|
-
const TeamScheduleCompactTable = ({ rows, tripHeaders = DEFAULT_TRIP_HEADERS, eventHeaders = DEFAULT_EVENT_HEADERS, onAddEvent, addEventDisabled = false, className = '', }) => (jsxs("div", { className: [styles$
|
|
1755
|
+
const TeamScheduleCompactTable = ({ rows, tripHeaders = DEFAULT_TRIP_HEADERS, eventHeaders = DEFAULT_EVENT_HEADERS, onAddEvent, addEventDisabled = false, className = '', }) => (jsxs("div", { className: [styles$h.schedule, className].filter(Boolean).join(' '), children: [jsxs("div", { className: styles$h.headers, children: [jsx("div", { className: styles$h.tripHeader, children: tripHeaders.map((header, index) => jsx("div", { children: header }, index)) }), jsx("div", { className: styles$h.eventHeader, children: eventHeaders.map((header, index) => jsx("div", { children: header }, index)) })] }), jsx("div", { className: styles$h.table, children: !rows.length ? jsx("div", { className: styles$h.empty, children: "No data available." }) : rows.map((row) => (jsxs("div", { className: styles$h.row, children: [jsx("div", { className: styles$h.trip, children: row.trip }), jsx("div", { className: styles$h.events, children: row.events })] }, row.id))) }), jsx("div", { className: styles$h.addRow, children: jsxs("button", { type: "button", disabled: addEventDisabled, onClick: onAddEvent, children: ["Add Event ", jsx(PlusIcon$2, { size: 16 })] }) })] }));
|
|
1755
1756
|
|
|
1756
|
-
var styles$
|
|
1757
|
+
var styles$g = {"table":"TeamScheduleExpandedTable-module_table__hmnHI","header":"TeamScheduleExpandedTable-module_header__7IWV-","row":"TeamScheduleExpandedTable-module_row__9MyHH","body":"TeamScheduleExpandedTable-module_body__NsvB3","cell":"TeamScheduleExpandedTable-module_cell__kgawH","tripLink":"TeamScheduleExpandedTable-module_tripLink__lYoi8","mobileLabel":"TeamScheduleExpandedTable-module_mobileLabel__J6apm","empty":"TeamScheduleExpandedTable-module_empty__d9Afo"};
|
|
1757
1758
|
|
|
1758
1759
|
const parseLocalDate = (value) => {
|
|
1759
1760
|
if (!value)
|
|
@@ -1807,19 +1808,181 @@ const TeamScheduleExpandedTable = ({ rows, teamCode, onTripClick, emptyMessage =
|
|
|
1807
1808
|
setAscending(true);
|
|
1808
1809
|
}
|
|
1809
1810
|
};
|
|
1810
|
-
return (jsxs("div", { className: [styles$
|
|
1811
|
+
return (jsxs("div", { className: [styles$g.table, className].filter(Boolean).join(' '), children: [jsx("div", { className: styles$g.header, children: headers.map((header) => (jsxs("button", { type: "button", disabled: !header.key, onClick: () => header.key && sort(header.key), children: [header.icon, jsx("span", { children: header.label }), header.key === sortKey && jsx("span", { "aria-label": ascending ? 'ascending' : 'descending', children: ascending ? '↑' : '↓' })] }, header.label))) }), !sortedRows.length ? jsx("div", { className: styles$g.empty, children: emptyMessage }) : jsx("div", { className: styles$g.body, children: sortedRows.map((row) => {
|
|
1811
1812
|
const values = [
|
|
1812
1813
|
teamCode ?? row.sportCode ?? '–',
|
|
1813
1814
|
formatTeamScheduleTravelDates(row.travelStartDate, row.travelEndDate),
|
|
1814
|
-
jsx("button", { type: "button", className: styles$
|
|
1815
|
+
jsx("button", { type: "button", className: styles$g.tripLink, onClick: () => onTripClick?.(row), children: row.tripName }),
|
|
1815
1816
|
row.airSegment,
|
|
1816
1817
|
row.groundSegment,
|
|
1817
1818
|
row.hotelSegment,
|
|
1818
1819
|
];
|
|
1819
|
-
return jsx("div", { className: styles$
|
|
1820
|
+
return jsx("div", { className: styles$g.row, children: values.map((value, index) => jsxs("div", { className: styles$g.cell, children: [jsxs("span", { className: styles$g.mobileLabel, children: [headers[index].icon, headers[index].label] }), jsx("div", { children: value || '–' })] }, headers[index].label)) }, row.masterTripGUID || row.tripName);
|
|
1820
1821
|
}) })] }));
|
|
1821
1822
|
};
|
|
1822
1823
|
|
|
1824
|
+
var styles$f = {"form":"TeamManagementForms-module_form__bF0qU","stack":"TeamManagementForms-module_stack__5XyWb","twoColumnGrid":"TeamManagementForms-module_twoColumnGrid__zKQM6","threeColumnGrid":"TeamManagementForms-module_threeColumnGrid__HiCa7","actions":"TeamManagementForms-module_actions__Y2lA0","sectionCard":"TeamManagementForms-module_sectionCard__IPv1F","blueSection":"TeamManagementForms-module_blueSection__FsxUA","sectionHeader":"TeamManagementForms-module_sectionHeader__rM4Oj","sectionIcon":"TeamManagementForms-module_sectionIcon__VkbW8","sectionHeading":"TeamManagementForms-module_sectionHeading__m8szw","badge":"TeamManagementForms-module_badge__IOqxe","optionalBadge":"TeamManagementForms-module_optionalBadge__PHhTy","completeBadge":"TeamManagementForms-module_completeBadge__ZLyyr","incompleteBadge":"TeamManagementForms-module_incompleteBadge__70kvV","middleNameField":"TeamManagementForms-module_middleNameField__43-7h","fieldHeader":"TeamManagementForms-module_fieldHeader__jG-Ej","fileField":"TeamManagementForms-module_fileField__JnFhb","instructions":"TeamManagementForms-module_instructions__qTJI6","sampleLink":"TeamManagementForms-module_sampleLink__L4qXl"};
|
|
1825
|
+
|
|
1826
|
+
const useManagedValues = (controlledValues, initialValues, onChange) => {
|
|
1827
|
+
const [internalValues, setInternalValues] = useState(initialValues);
|
|
1828
|
+
const currentValues = controlledValues ?? internalValues;
|
|
1829
|
+
const updateValues = (patch) => {
|
|
1830
|
+
const nextValues = { ...currentValues, ...patch };
|
|
1831
|
+
if (controlledValues === undefined)
|
|
1832
|
+
setInternalValues(nextValues);
|
|
1833
|
+
onChange?.(nextValues);
|
|
1834
|
+
};
|
|
1835
|
+
return [currentValues, updateValues];
|
|
1836
|
+
};
|
|
1837
|
+
const numericValue$1 = (value) => value === '' ? '' : Number(value);
|
|
1838
|
+
const FormShell = ({ ariaLabel, children, className = '', disabled = false, onCancel, onSubmit, showActions = true, values, }) => {
|
|
1839
|
+
const content = (jsxs(Fragment, { children: [children, showActions && (jsxs("div", { className: styles$f.actions, children: [jsx(Button, { type: "button", variant: "secondary", onClick: onCancel, disabled: disabled, children: "Cancel" }), jsx(Button, { type: "submit", disabled: disabled, children: "Save" })] }))] }));
|
|
1840
|
+
if (!showActions)
|
|
1841
|
+
return jsx("div", { className: `${styles$f.form} ${className}`, children: content });
|
|
1842
|
+
return (jsx("form", { "aria-label": ariaLabel, className: `${styles$f.form} ${className}`, onSubmit: (event) => {
|
|
1843
|
+
event.preventDefault();
|
|
1844
|
+
onSubmit?.(values);
|
|
1845
|
+
}, children: content }));
|
|
1846
|
+
};
|
|
1847
|
+
const EMPTY_EQUIPMENT = {
|
|
1848
|
+
description: '',
|
|
1849
|
+
weight: '',
|
|
1850
|
+
quantity: '',
|
|
1851
|
+
height: '',
|
|
1852
|
+
width: '',
|
|
1853
|
+
depth: '',
|
|
1854
|
+
};
|
|
1855
|
+
const TeamEquipmentForm = ({ mode = 'Add', values, initialValues, onChange, onSubmit, onCancel, showActions = true, disabled = false, className, }) => {
|
|
1856
|
+
const [formValues, updateValues] = useManagedValues(values, { ...EMPTY_EQUIPMENT, ...initialValues }, onChange);
|
|
1857
|
+
return (jsx(FormShell, { ariaLabel: `${mode} equipment`, className: className, disabled: disabled, onCancel: onCancel, onSubmit: onSubmit, showActions: showActions, values: formValues, children: jsxs("div", { className: styles$f.stack, children: [jsx(Input, { label: "Item Name *", value: formValues.description, onChange: (event) => updateValues({ description: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsxs("div", { className: styles$f.twoColumnGrid, children: [jsx(Input, { label: "Weight (lbs) *", type: "number", min: "0", step: "0.1", value: formValues.weight, onChange: (event) => updateValues({ weight: numericValue$1(event.target.value) }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Quantity *", type: "number", min: "1", step: "1", value: formValues.quantity, onChange: (event) => updateValues({ quantity: numericValue$1(event.target.value) }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Height (inches)", type: "number", min: "0", step: "0.1", value: formValues.height, onChange: (event) => updateValues({ height: numericValue$1(event.target.value) }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Width (inches)", type: "number", min: "0", step: "0.1", value: formValues.width, onChange: (event) => updateValues({ width: numericValue$1(event.target.value) }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Depth (inches)", type: "number", min: "0", step: "0.1", value: formValues.depth, onChange: (event) => updateValues({ depth: numericValue$1(event.target.value) }), disabled: disabled, fullWidth: true })] })] }) }));
|
|
1858
|
+
};
|
|
1859
|
+
const TeamUserAccessForm = ({ options, values, initialValues, onChange, onSubmit, onCancel, showActions = true, disabled = false, className, }) => {
|
|
1860
|
+
const [formValues, updateValues] = useManagedValues(values, { userId: '', ...initialValues }, onChange);
|
|
1861
|
+
return (jsx(FormShell, { ariaLabel: "Add team access", className: className, disabled: disabled, onCancel: onCancel, onSubmit: onSubmit, showActions: showActions, values: formValues, children: jsx(Select, { label: "Available Users *", placeholder: "Select a school contact", options: options, value: formValues.userId, onChange: (event) => updateValues({ userId: event.target.value }), required: true, disabled: disabled, fullWidth: true }) }));
|
|
1862
|
+
};
|
|
1863
|
+
const DEFAULT_SUPPLIERS = {
|
|
1864
|
+
Air: [
|
|
1865
|
+
{ label: 'American Airlines', value: 'American Airlines' },
|
|
1866
|
+
{ label: 'Delta Air Lines', value: 'Delta Air Lines' },
|
|
1867
|
+
{ label: 'United Airlines', value: 'United Airlines' },
|
|
1868
|
+
],
|
|
1869
|
+
Car: [
|
|
1870
|
+
{ label: 'Enterprise', value: 'Enterprise' },
|
|
1871
|
+
{ label: 'Hertz', value: 'Hertz' },
|
|
1872
|
+
{ label: 'National', value: 'National' },
|
|
1873
|
+
],
|
|
1874
|
+
Hotel: [
|
|
1875
|
+
{ label: 'Hilton', value: 'Hilton' },
|
|
1876
|
+
{ label: 'Hyatt', value: 'Hyatt' },
|
|
1877
|
+
{ label: 'Marriott', value: 'Marriott' },
|
|
1878
|
+
],
|
|
1879
|
+
};
|
|
1880
|
+
const TeamProgramForm = ({ values, initialValues, onChange, onSubmit, onCancel, showActions = true, disabled = false, className, supplierOptions, }) => {
|
|
1881
|
+
const [formValues, updateValues] = useManagedValues(values, { type: 'Air', supplier: '', accountNumber: '', ...initialValues }, onChange);
|
|
1882
|
+
const options = { ...DEFAULT_SUPPLIERS, ...supplierOptions };
|
|
1883
|
+
return (jsx(FormShell, { ariaLabel: "Add loyalty program", className: className, disabled: disabled, onCancel: onCancel, onSubmit: onSubmit, showActions: showActions, values: formValues, children: jsxs("div", { className: styles$f.stack, children: [jsx(Select, { label: "Type", options: ['Air', 'Car', 'Hotel'].map((type) => ({ label: type, value: type })), value: formValues.type, onChange: (event) => updateValues({ type: event.target.value, supplier: '' }), disabled: disabled, fullWidth: true }), jsx(Select, { label: "Company *", placeholder: "Select a company", options: options[formValues.type] ?? [], value: formValues.supplier, onChange: (event) => updateValues({ supplier: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Program Number *", value: formValues.accountNumber, onChange: (event) => updateValues({ accountNumber: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }) }));
|
|
1884
|
+
};
|
|
1885
|
+
const EMPTY_ROSTER_MEMBER = {
|
|
1886
|
+
portalUserId: '',
|
|
1887
|
+
firstName: '',
|
|
1888
|
+
middleName: '',
|
|
1889
|
+
noMiddleName: false,
|
|
1890
|
+
lastName: '',
|
|
1891
|
+
travelerType: '',
|
|
1892
|
+
birthDate: '',
|
|
1893
|
+
gender: '',
|
|
1894
|
+
weight: '',
|
|
1895
|
+
passportNumber: '',
|
|
1896
|
+
knownTravelerNumber: '',
|
|
1897
|
+
dhsRedressNumber: '',
|
|
1898
|
+
airline: '',
|
|
1899
|
+
frequentFlyerNumber: '',
|
|
1900
|
+
specialRequests: '',
|
|
1901
|
+
};
|
|
1902
|
+
const DEFAULT_TRAVELER_TYPES = [
|
|
1903
|
+
'Band Member',
|
|
1904
|
+
'Cheerleader',
|
|
1905
|
+
'Coach',
|
|
1906
|
+
'Mascot',
|
|
1907
|
+
'Non-Athlete (General)',
|
|
1908
|
+
'Student Athlete',
|
|
1909
|
+
'Trainer/Manager',
|
|
1910
|
+
].map((label) => ({ label, value: label }));
|
|
1911
|
+
const DEFAULT_AIRLINES = [
|
|
1912
|
+
{ label: 'American Airlines', value: 'American Airlines' },
|
|
1913
|
+
{ label: 'Delta Air Lines', value: 'Delta Air Lines' },
|
|
1914
|
+
{ label: 'Southwest Airlines', value: 'Southwest Airlines' },
|
|
1915
|
+
{ label: 'United Airlines', value: 'United Airlines' },
|
|
1916
|
+
];
|
|
1917
|
+
const localDateString = (date) => {
|
|
1918
|
+
const year = date.getFullYear();
|
|
1919
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
1920
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
1921
|
+
return `${year}-${month}-${day}`;
|
|
1922
|
+
};
|
|
1923
|
+
const SectionBadge = ({ complete, optional, label }) => {
|
|
1924
|
+
if (optional)
|
|
1925
|
+
return jsx("span", { className: `${styles$f.badge} ${styles$f.optionalBadge}`, children: "Optional" });
|
|
1926
|
+
if (complete)
|
|
1927
|
+
return jsxs("span", { className: `${styles$f.badge} ${styles$f.completeBadge}`, children: [jsx(CheckIcon$2, { size: 12 }), "Complete"] });
|
|
1928
|
+
return jsxs("span", { className: `${styles$f.badge} ${styles$f.incompleteBadge}`, children: [jsx(WarningIcon$1, { size: 12 }), label ?? 'Incomplete'] });
|
|
1929
|
+
};
|
|
1930
|
+
const SectionCard = ({ icon, title, subtitle, badge, blue = false, children, }) => (jsxs("section", { className: `${styles$f.sectionCard} ${blue ? styles$f.blueSection : ''}`, children: [jsxs("div", { className: styles$f.sectionHeader, children: [jsx("div", { className: styles$f.sectionIcon, children: icon }), jsxs("div", { className: styles$f.sectionHeading, children: [jsx("h3", { children: title }), jsx("p", { children: subtitle })] }), badge] }), children] }));
|
|
1931
|
+
const TeamRosterMemberForm = ({ mode = 'Add', values, initialValues, onChange, onSubmit, onCancel, showActions = true, disabled = false, className, portalUsers = [], airlineOptions = DEFAULT_AIRLINES, travelerTypeOptions = DEFAULT_TRAVELER_TYPES, }) => {
|
|
1932
|
+
const [formValues, updateValues] = useManagedValues(values, { ...EMPTY_ROSTER_MEMBER, ...initialValues }, onChange);
|
|
1933
|
+
const minBirthDate = new Date();
|
|
1934
|
+
minBirthDate.setFullYear(minBirthDate.getFullYear() - 130);
|
|
1935
|
+
const identityComplete = Boolean(formValues.firstName.trim()
|
|
1936
|
+
&& formValues.lastName.trim()
|
|
1937
|
+
&& (formValues.noMiddleName || formValues.middleName.trim())
|
|
1938
|
+
&& formValues.travelerType);
|
|
1939
|
+
const secureFlightComplete = Boolean(formValues.birthDate && formValues.gender && Number(formValues.weight) >= 1);
|
|
1940
|
+
return (jsxs(FormShell, { ariaLabel: `${mode} team member`, className: className, disabled: disabled, onCancel: onCancel, onSubmit: onSubmit, showActions: showActions, values: formValues, children: [mode === 'Add' && (jsx(SectionCard, { icon: jsx(UsersIcon$1, { size: 20 }), title: "Create from Portal User", subtitle: "Search an existing portal user to copy their traveler details", badge: jsx(SectionBadge, { optional: true }), blue: true, children: jsx(Select, { "aria-label": "Create from Portal User", placeholder: "Search portal users", options: portalUsers, value: formValues.portalUserId, onChange: (event) => {
|
|
1941
|
+
const portalUserId = event.target.value;
|
|
1942
|
+
const selectedUser = portalUsers.find((option) => String(option.value) === portalUserId);
|
|
1943
|
+
updateValues({ ...selectedUser?.traveler, portalUserId });
|
|
1944
|
+
}, disabled: disabled, fullWidth: true }) })), jsxs(SectionCard, { icon: jsx(UserIcon, { size: 20 }), title: "Identity", subtitle: "Name as it appears on government ID", badge: jsx(SectionBadge, { complete: identityComplete }), children: [jsxs("div", { className: styles$f.threeColumnGrid, children: [jsx(Input, { label: "First Name *", value: formValues.firstName, onChange: (event) => updateValues({ firstName: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsxs("div", { className: styles$f.middleNameField, children: [jsxs("div", { className: styles$f.fieldHeader, children: [jsx("label", { htmlFor: "team-middle-name", children: "Middle Name" }), jsx(Checkbox, { label: "None", size: "sm", checked: formValues.noMiddleName, onChange: (event) => updateValues({
|
|
1945
|
+
noMiddleName: event.target.checked,
|
|
1946
|
+
middleName: event.target.checked ? '' : formValues.middleName,
|
|
1947
|
+
}), disabled: disabled })] }), jsx(Input, { id: "team-middle-name", "aria-label": "Middle Name", placeholder: formValues.noMiddleName ? 'None' : '', value: formValues.middleName, onChange: (event) => updateValues({ middleName: event.target.value }), required: !formValues.noMiddleName, disabled: disabled || formValues.noMiddleName, fullWidth: true })] }), jsx(Input, { label: "Last Name *", value: formValues.lastName, onChange: (event) => updateValues({ lastName: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(Select, { label: "Traveler Type *", placeholder: "Select traveler type", options: travelerTypeOptions, value: formValues.travelerType, onChange: (event) => updateValues({ travelerType: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(SectionCard, { icon: jsx(LockIcon$1, { size: 20 }), title: "Secure Flight", subtitle: "TSA-required for every air booking", badge: jsx(SectionBadge, { complete: secureFlightComplete, label: !formValues.weight || Number(formValues.weight) < 1 ? 'Add weight' : undefined }), children: jsxs("div", { className: styles$f.threeColumnGrid, children: [jsx(Input, { label: "Date of Birth *", type: "date", min: localDateString(minBirthDate), max: localDateString(new Date()), value: formValues.birthDate, onChange: (event) => updateValues({ birthDate: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Select, { label: "Gender *", placeholder: "Select gender", options: ['Male', 'Female', 'Unspecified (X)'].map((label) => ({ label, value: label })), value: formValues.gender, onChange: (event) => updateValues({ gender: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Weight (lbs) *", type: "number", min: "1", value: formValues.weight, onChange: (event) => updateValues({ weight: numericValue$1(event.target.value) }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Passport No.", placeholder: "Add for intl. travel", value: formValues.passportNumber, onChange: (event) => updateValues({ passportNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Known Traveler No.", placeholder: "KTN", value: formValues.knownTravelerNumber, onChange: (event) => updateValues({ knownTravelerNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "DHS Redress No.", placeholder: "Add if issued", value: formValues.dhsRedressNumber, onChange: (event) => updateValues({ dhsRedressNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true })] }) }), mode === 'Add' && (jsx(SectionCard, { icon: jsx(PlaneIcon$4, { size: 20 }), title: "Frequent Flyer", subtitle: "Airline loyalty program details", badge: jsx(SectionBadge, { optional: true }), children: jsxs("div", { className: styles$f.twoColumnGrid, children: [jsx(Select, { label: "Airline", placeholder: "Select airline", options: airlineOptions, value: formValues.airline, onChange: (event) => updateValues({ airline: event.target.value }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Frequent Flyer Number", value: formValues.frequentFlyerNumber, onChange: (event) => updateValues({ frequentFlyerNumber: event.target.value }), disabled: disabled, fullWidth: true })] }) })), jsx(SectionCard, { icon: jsx(InfoIcon$1, { size: 20 }), title: "Special Requests", subtitle: "Dietary, seating, accessibility, rooming", badge: jsx(SectionBadge, { optional: true }), children: jsx(Textarea, { "aria-label": "Special Requests", placeholder: "Add anything the travel desk should know\u2026", value: formValues.specialRequests, onChange: (event) => updateValues({ specialRequests: event.target.value }), rows: 3, disabled: disabled, fullWidth: true }) })] }));
|
|
1948
|
+
};
|
|
1949
|
+
const IMPORT_COPY = {
|
|
1950
|
+
equipment: {
|
|
1951
|
+
sample: 'Sports Equipment Sample.xlsx',
|
|
1952
|
+
instructions: [
|
|
1953
|
+
'All fields must be in the exact format and order of the sample spreadsheet.',
|
|
1954
|
+
'Weight is in pounds and dimensions are in inches, whole numbers only.',
|
|
1955
|
+
'Delete equipment that is not traveling before uploading a new sheet.',
|
|
1956
|
+
'The spreadsheet adds equipment; it does not overwrite existing data.',
|
|
1957
|
+
],
|
|
1958
|
+
},
|
|
1959
|
+
roster: {
|
|
1960
|
+
sample: 'Sports Manifest Sample.xlsx',
|
|
1961
|
+
instructions: [
|
|
1962
|
+
'All fields must match the exact format and order of the sample spreadsheet.',
|
|
1963
|
+
'Traveler Type must be valid and spelled correctly.',
|
|
1964
|
+
'Date of Birth must be MM/DD/YYYY and Gender must be Male or Female.',
|
|
1965
|
+
'The spreadsheet adds travelers; it does not overwrite existing data.',
|
|
1966
|
+
],
|
|
1967
|
+
},
|
|
1968
|
+
'teamworks-roster': {
|
|
1969
|
+
sample: 'Teamworks Spreadsheet Sample.xlsx',
|
|
1970
|
+
instructions: [
|
|
1971
|
+
'Follow the exact format and order of the Teamworks sample spreadsheet.',
|
|
1972
|
+
'Date of Birth must be MM/DD/YYYY.',
|
|
1973
|
+
],
|
|
1974
|
+
},
|
|
1975
|
+
};
|
|
1976
|
+
const TeamImportForm = ({ kind, onSubmit, onCancel, disabled = false, className = '' }) => {
|
|
1977
|
+
const [file, setFile] = useState(null);
|
|
1978
|
+
const copy = IMPORT_COPY[kind];
|
|
1979
|
+
return (jsxs("form", { "aria-label": `Import ${kind}`, className: `${styles$f.form} ${className}`, onSubmit: (event) => {
|
|
1980
|
+
event.preventDefault();
|
|
1981
|
+
if (file)
|
|
1982
|
+
onSubmit?.(file);
|
|
1983
|
+
}, children: [jsx("ol", { className: styles$f.instructions, children: copy.instructions.map((instruction, index) => jsxs("li", { children: [index + 1, ". ", instruction] }, instruction)) }), jsx("a", { className: styles$f.sampleLink, href: `/${copy.sample}`, download: true, children: copy.sample }), jsxs("label", { className: styles$f.fileField, children: [jsx(UploadIcon, { size: 24 }), jsx("span", { children: file?.name ?? 'Choose an Excel spreadsheet' }), jsx("input", { "aria-label": "Spreadsheet file", type: "file", accept: ".xlsx,.xls", onChange: (event) => setFile(event.target.files?.[0] ?? null), required: true, disabled: disabled })] }), jsxs("div", { className: styles$f.actions, children: [jsx(Button, { type: "button", variant: "secondary", onClick: onCancel, disabled: disabled, children: "Cancel" }), jsx(Button, { type: "submit", disabled: disabled || !file, children: "Import" })] })] }));
|
|
1984
|
+
};
|
|
1985
|
+
|
|
1823
1986
|
var styles$e = {"grid":"TravelSummaryMetrics-module_grid__RqAU9"};
|
|
1824
1987
|
|
|
1825
1988
|
const numericValue = (value) => {
|
|
@@ -2436,5 +2599,5 @@ const TripDetailPage = ({ header, airSegment, groundSegment, hotelSegment, files
|
|
|
2436
2599
|
};
|
|
2437
2600
|
TripDetailPage.displayName = 'TripDetailPage';
|
|
2438
2601
|
|
|
2439
|
-
export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon$3 as BusIcon, Button, CalendarIcon$1 as CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon$2 as CarIcon, Card, CardBody, CardFooter, CardHeader, CharterManifestPage, CheckIcon$2 as CheckIcon, Checkbox, ChevronDownIcon$1 as ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon$1 as ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon$2 as EditIcon, EyeIcon, FilterChip, FilterIcon$1 as FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HomeIcon, HotelIcon$4 as HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, InfoCenterPage, InfoIcon$1 as InfoIcon, Input, LightbulbIcon, LimoIcon, LockIcon$1 as LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, PageBanners, PhoneIcon, PlaneIcon$4 as PlaneIcon, PlusIcon$2 as PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, RailIcon, RefreshIcon, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, RosterToolbar, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon$1 as SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, Table, Tag, TeamCard, TeamHeader, TeamManagementPage, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarPage, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon$2 as TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UserIcon, UsersIcon$1 as UsersIcon, WarningIcon$1 as WarningIcon, XIcon, formatCompactTripCost, formatTeamScheduleTravelDates, isTravelDueDateCompleted };
|
|
2602
|
+
export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon$3 as BusIcon, Button, CalendarIcon$1 as CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon$2 as CarIcon, Card, CardBody, CardFooter, CardHeader, CharterManifestPage, CheckIcon$2 as CheckIcon, Checkbox, ChevronDownIcon$1 as ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon$1 as ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon$2 as EditIcon, EyeIcon, FilterChip, FilterIcon$1 as FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HomeIcon, HotelIcon$4 as HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, InfoCenterPage, InfoIcon$1 as InfoIcon, Input, LightbulbIcon, LimoIcon, LockIcon$1 as LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, PageBanners, PhoneIcon, PlaneIcon$4 as PlaneIcon, PlusIcon$2 as PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, RailIcon, RefreshIcon, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, RosterToolbar, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon$1 as SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, Table, Tag, TeamCard, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarPage, TeamUserAccessForm, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon$2 as TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon$1 as UsersIcon, WarningIcon$1 as WarningIcon, XIcon, formatCompactTripCost, formatTeamScheduleTravelDates, isTravelDueDateCompleted };
|
|
2440
2603
|
//# sourceMappingURL=index.esm.js.map
|