@shortstravelmgmt/component-lib 0.2.11 → 0.2.12-rc.1
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 +121 -3
- package/dist/index.esm.js +299 -228
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +301 -227
- 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
|
@@ -798,7 +798,7 @@ const Icons = {
|
|
|
798
798
|
Trash: TrashIcon$2,
|
|
799
799
|
};
|
|
800
800
|
|
|
801
|
-
var styles$
|
|
801
|
+
var styles$1J = {"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"};
|
|
802
802
|
|
|
803
803
|
const variantIcons$1 = {
|
|
804
804
|
primary: LightbulbIcon,
|
|
@@ -808,7 +808,7 @@ const variantIcons$1 = {
|
|
|
808
808
|
};
|
|
809
809
|
const Alert = ({ variant = 'primary', title, children, dismissible = false, onDismiss, className = '', }) => {
|
|
810
810
|
const IconComponent = variantIcons$1[variant];
|
|
811
|
-
return (jsx("div", { className: `${styles$
|
|
811
|
+
return (jsx("div", { className: `${styles$1J.alert} ${styles$1J[variant]} ${className}`, role: "alert", children: jsxs("div", { className: styles$1J.content, children: [jsx(IconComponent, { className: styles$1J.icon, size: 20 }), jsxs("div", { className: styles$1J.body, children: [title && jsx("h4", { className: styles$1J.title, children: title }), jsx("div", { className: styles$1J.message, children: children })] }), dismissible && onDismiss && (jsx("button", { type: "button", onClick: onDismiss, className: styles$1J.dismissButton, "aria-label": "Dismiss alert", children: jsx(CloseIcon, { size: 16 }) }))] }) }));
|
|
812
812
|
};
|
|
813
813
|
|
|
814
814
|
// ============================================================================
|
|
@@ -1074,7 +1074,7 @@ const Badge = ({ variant = 'default', size = 'md', dot = false, className = '',
|
|
|
1074
1074
|
};
|
|
1075
1075
|
Badge.displayName = 'Badge';
|
|
1076
1076
|
|
|
1077
|
-
var styles$
|
|
1077
|
+
var styles$1I = {"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"};
|
|
1078
1078
|
|
|
1079
1079
|
/**
|
|
1080
1080
|
* Primary button component for user interactions.
|
|
@@ -1082,17 +1082,17 @@ var styles$1H = {"button":"Button-module_button__xDdzH","sm":"Button-module_sm__
|
|
|
1082
1082
|
*/
|
|
1083
1083
|
const Button = forwardRef(({ variant = 'primary', size = 'md', fullWidth = false, loading = false, leftIcon, rightIcon, square = false, className = '', disabled, children, ...props }, ref) => {
|
|
1084
1084
|
const classNames = [
|
|
1085
|
-
styles$
|
|
1086
|
-
styles$
|
|
1087
|
-
styles$
|
|
1088
|
-
fullWidth ? styles$
|
|
1089
|
-
square ? styles$
|
|
1090
|
-
loading ? styles$
|
|
1085
|
+
styles$1I.button,
|
|
1086
|
+
styles$1I[variant],
|
|
1087
|
+
styles$1I[size],
|
|
1088
|
+
fullWidth ? styles$1I.fullWidth : '',
|
|
1089
|
+
square ? styles$1I.square : '',
|
|
1090
|
+
loading ? styles$1I.loading : '',
|
|
1091
1091
|
className,
|
|
1092
1092
|
]
|
|
1093
1093
|
.filter(Boolean)
|
|
1094
1094
|
.join(' ');
|
|
1095
|
-
return (jsxs("button", { ref: ref, className: classNames, disabled: disabled || loading, ...props, children: [loading && (jsx("span", { className: styles$
|
|
1095
|
+
return (jsxs("button", { ref: ref, className: classNames, disabled: disabled || loading, ...props, children: [loading && (jsx("span", { className: styles$1I.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$1I.icon, children: leftIcon }), children && jsx("span", { className: styles$1I.content, children: children }), !loading && rightIcon && jsx("span", { className: styles$1I.icon, children: rightIcon })] }));
|
|
1096
1096
|
});
|
|
1097
1097
|
Button.displayName = 'Button';
|
|
1098
1098
|
|
|
@@ -1429,23 +1429,23 @@ const ButtonStyled = forwardRef(({ variant = 'primary', size = 'md', fullWidth =
|
|
|
1429
1429
|
});
|
|
1430
1430
|
ButtonStyled.displayName = 'ButtonStyled';
|
|
1431
1431
|
|
|
1432
|
-
var styles$
|
|
1432
|
+
var styles$1H = {"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"};
|
|
1433
1433
|
|
|
1434
1434
|
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" }) }));
|
|
1435
1435
|
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" }) }));
|
|
1436
1436
|
/**
|
|
1437
1437
|
* Checkbox component for boolean selections.
|
|
1438
1438
|
*/
|
|
1439
|
-
const Checkbox = forwardRef(({ label, size = 'md', helperText, error, indeterminate = false, className = '', disabled, id, checked, ...props }, ref) => {
|
|
1439
|
+
const Checkbox = forwardRef(({ label, size = 'md', helperText, error, indeterminate = false, className = '', disabled, id, checked, type = 'checkbox', indicator, ...props }, ref) => {
|
|
1440
1440
|
const generatedId = useId();
|
|
1441
1441
|
const checkboxId = id || generatedId;
|
|
1442
1442
|
const helperId = `${checkboxId}-helper`;
|
|
1443
1443
|
const errorId = `${checkboxId}-error`;
|
|
1444
1444
|
const wrapperClasses = [
|
|
1445
|
-
styles$
|
|
1446
|
-
styles$
|
|
1447
|
-
disabled ? styles$
|
|
1448
|
-
error ? styles$
|
|
1445
|
+
styles$1H.wrapper,
|
|
1446
|
+
styles$1H[size],
|
|
1447
|
+
disabled ? styles$1H.disabled : '',
|
|
1448
|
+
error ? styles$1H.hasError : '',
|
|
1449
1449
|
className,
|
|
1450
1450
|
].filter(Boolean).join(' ');
|
|
1451
1451
|
// Handle indeterminate state via ref
|
|
@@ -1461,13 +1461,17 @@ const Checkbox = forwardRef(({ label, size = 'md', helperText, error, indetermin
|
|
|
1461
1461
|
ref.current = node;
|
|
1462
1462
|
}
|
|
1463
1463
|
};
|
|
1464
|
-
return (jsxs("div", { className: wrapperClasses, children: [jsxs("label", { className: styles$
|
|
1464
|
+
return (jsxs("div", { className: wrapperClasses, children: [jsxs("label", { className: styles$1H.label, children: [jsxs("div", { className: styles$1H.checkboxWrapper, children: [jsx("input", { ref: inputRef, type: type, id: checkboxId, className: styles$1H.input, disabled: disabled, checked: checked, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
1465
1465
|
.filter(Boolean)
|
|
1466
|
-
.join(' ') || undefined, ...props }), jsx("span", { className:
|
|
1466
|
+
.join(' ') || undefined, ...props }), jsx("span", { className: indicator ? undefined : styles$1H.checkbox, children: indicator
|
|
1467
|
+
? indicator({ checked: !!checked, indeterminate, disabled: !!disabled })
|
|
1468
|
+
: indeterminate
|
|
1469
|
+
? jsx(IndeterminateIcon, {})
|
|
1470
|
+
: jsx(CheckIcon$1, {}) })] }), label && jsx("span", { className: styles$1H.labelText, children: label })] }), error && (jsx("span", { id: errorId, className: styles$1H.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$1H.helperText, children: helperText }))] }));
|
|
1467
1471
|
});
|
|
1468
1472
|
Checkbox.displayName = 'Checkbox';
|
|
1469
1473
|
|
|
1470
|
-
var styles$
|
|
1474
|
+
var styles$1G = {"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"};
|
|
1471
1475
|
|
|
1472
1476
|
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" })] }));
|
|
1473
1477
|
/**
|
|
@@ -1479,23 +1483,23 @@ const Datepicker = forwardRef(({ size = 'md', label, helperText, error, fullWidt
|
|
|
1479
1483
|
const helperId = `${inputId}-helper`;
|
|
1480
1484
|
const errorId = `${inputId}-error`;
|
|
1481
1485
|
const wrapperClasses = [
|
|
1482
|
-
styles$
|
|
1483
|
-
fullWidth ? styles$
|
|
1486
|
+
styles$1G.wrapper,
|
|
1487
|
+
fullWidth ? styles$1G.fullWidth : '',
|
|
1484
1488
|
className,
|
|
1485
1489
|
].filter(Boolean).join(' ');
|
|
1486
1490
|
const inputWrapperClasses = [
|
|
1487
|
-
styles$
|
|
1488
|
-
styles$
|
|
1489
|
-
error ? styles$
|
|
1490
|
-
disabled ? styles$
|
|
1491
|
+
styles$1G.inputWrapper,
|
|
1492
|
+
styles$1G[size],
|
|
1493
|
+
error ? styles$1G.error : '',
|
|
1494
|
+
disabled ? styles$1G.disabled : '',
|
|
1491
1495
|
].filter(Boolean).join(' ');
|
|
1492
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
1496
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$1G.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [jsx("span", { className: styles$1G.icon, children: jsx(CalendarIcon, {}) }), jsx("input", { ref: ref, type: "date", id: inputId, className: styles$1G.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
1493
1497
|
.filter(Boolean)
|
|
1494
|
-
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$
|
|
1498
|
+
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$1G.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$1G.helperText, children: helperText }))] }));
|
|
1495
1499
|
});
|
|
1496
1500
|
Datepicker.displayName = 'Datepicker';
|
|
1497
1501
|
|
|
1498
|
-
var styles$
|
|
1502
|
+
var styles$1F = {"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","xs":"Input-module_xs__p7BuD","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"};
|
|
1499
1503
|
|
|
1500
1504
|
/**
|
|
1501
1505
|
* Input component for text entry.
|
|
@@ -1503,45 +1507,45 @@ var styles$1E = {"wrapper":"Input-module_wrapper__-8ija","fullWidth":"Input-modu
|
|
|
1503
1507
|
const Input = forwardRef(({ size = 'md', label, helperText, error, leftIcon, rightIcon, fullWidth = false, className = '', id, disabled, ...props }, ref) => {
|
|
1504
1508
|
const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
1505
1509
|
const wrapperClasses = [
|
|
1506
|
-
styles$
|
|
1507
|
-
fullWidth ? styles$
|
|
1510
|
+
styles$1F.wrapper,
|
|
1511
|
+
fullWidth ? styles$1F.fullWidth : '',
|
|
1508
1512
|
className,
|
|
1509
1513
|
]
|
|
1510
1514
|
.filter(Boolean)
|
|
1511
1515
|
.join(' ');
|
|
1512
1516
|
const inputWrapperClasses = [
|
|
1513
|
-
styles$
|
|
1514
|
-
styles$
|
|
1515
|
-
error ? styles$
|
|
1516
|
-
disabled ? styles$
|
|
1517
|
+
styles$1F.inputWrapper,
|
|
1518
|
+
styles$1F[size],
|
|
1519
|
+
error ? styles$1F.error : '',
|
|
1520
|
+
disabled ? styles$1F.disabled : '',
|
|
1517
1521
|
]
|
|
1518
1522
|
.filter(Boolean)
|
|
1519
1523
|
.join(' ');
|
|
1520
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
1524
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$1F.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [leftIcon && jsx("span", { className: styles$1F.icon, children: leftIcon }), jsx("input", { ref: ref, id: inputId, className: styles$1F.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : helperText ? `${inputId}-helper` : undefined, ...props }), rightIcon && jsx("span", { className: styles$1F.icon, children: rightIcon })] }), error && (jsx("span", { id: `${inputId}-error`, className: styles$1F.errorText, children: error })), helperText && !error && (jsx("span", { id: `${inputId}-helper`, className: styles$1F.helperText, children: helperText }))] }));
|
|
1521
1525
|
});
|
|
1522
1526
|
Input.displayName = 'Input';
|
|
1523
1527
|
const Textarea = forwardRef(({ size = 'md', label, helperText, error, fullWidth = false, className = '', id, disabled, rows = 4, ...props }, ref) => {
|
|
1524
1528
|
const textareaId = id || `textarea-${Math.random().toString(36).substr(2, 9)}`;
|
|
1525
1529
|
const wrapperClasses = [
|
|
1526
|
-
styles$
|
|
1527
|
-
fullWidth ? styles$
|
|
1530
|
+
styles$1F.wrapper,
|
|
1531
|
+
fullWidth ? styles$1F.fullWidth : '',
|
|
1528
1532
|
className,
|
|
1529
1533
|
]
|
|
1530
1534
|
.filter(Boolean)
|
|
1531
1535
|
.join(' ');
|
|
1532
1536
|
const textareaClasses = [
|
|
1533
|
-
styles$
|
|
1534
|
-
styles$
|
|
1535
|
-
error ? styles$
|
|
1536
|
-
disabled ? styles$
|
|
1537
|
+
styles$1F.textarea,
|
|
1538
|
+
styles$1F[size],
|
|
1539
|
+
error ? styles$1F.error : '',
|
|
1540
|
+
disabled ? styles$1F.disabled : '',
|
|
1537
1541
|
]
|
|
1538
1542
|
.filter(Boolean)
|
|
1539
1543
|
.join(' ');
|
|
1540
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: textareaId, className: styles$
|
|
1544
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: textareaId, className: styles$1F.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$1F.errorText, children: error })), helperText && !error && (jsx("span", { id: `${textareaId}-helper`, className: styles$1F.helperText, children: helperText }))] }));
|
|
1541
1545
|
});
|
|
1542
1546
|
Textarea.displayName = 'Textarea';
|
|
1543
1547
|
|
|
1544
|
-
var styles$
|
|
1548
|
+
var styles$1E = {"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"};
|
|
1545
1549
|
|
|
1546
1550
|
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" }) }));
|
|
1547
1551
|
/**
|
|
@@ -1551,15 +1555,15 @@ const WarningIcon = () => (jsx("svg", { width: "24", height: "24", viewBox: "0 0
|
|
|
1551
1555
|
const Metric = ({ value, label, prefix, suffix, dark = false, onClick, className = '', warning = false, }) => {
|
|
1552
1556
|
const displayValue = value !== undefined && !isNaN(parseFloat(String(value))) ? value : 0;
|
|
1553
1557
|
return (jsx("div", { className: `
|
|
1554
|
-
${styles$
|
|
1555
|
-
${dark ? styles$
|
|
1556
|
-
${onClick ? styles$
|
|
1558
|
+
${styles$1E.metric}
|
|
1559
|
+
${dark ? styles$1E.dark : ''}
|
|
1560
|
+
${onClick ? styles$1E.clickable : ''}
|
|
1557
1561
|
${className}
|
|
1558
|
-
`, onClick: onClick, children: value !== undefined && (jsxs("div", { className: styles$
|
|
1562
|
+
`, onClick: onClick, children: value !== undefined && (jsxs("div", { className: styles$1E.content, children: [jsxs("div", { className: styles$1E.valueRow, children: [jsxs("div", { className: styles$1E.valueContainer, children: [prefix && jsx("span", { className: styles$1E.prefix, children: prefix }), jsx("span", { className: styles$1E.value, children: displayValue }), suffix && jsx("span", { className: styles$1E.suffix, children: suffix })] }), warning && (jsx("div", { className: styles$1E.warningIcon, children: jsx(WarningIcon, {}) }))] }), jsx("div", { className: styles$1E.label, children: label })] })) }));
|
|
1559
1563
|
};
|
|
1560
1564
|
Metric.displayName = 'Metric';
|
|
1561
1565
|
|
|
1562
|
-
var styles$
|
|
1566
|
+
var styles$1D = {"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"};
|
|
1563
1567
|
|
|
1564
1568
|
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" }) }));
|
|
1565
1569
|
/**
|
|
@@ -1571,16 +1575,16 @@ const Select = forwardRef(({ options, optionGroups, size = 'md', label, placehol
|
|
|
1571
1575
|
const helperId = `${selectId}-helper`;
|
|
1572
1576
|
const errorId = `${selectId}-error`;
|
|
1573
1577
|
const wrapperClasses = [
|
|
1574
|
-
styles$
|
|
1575
|
-
fullWidth ? styles$
|
|
1578
|
+
styles$1D.wrapper,
|
|
1579
|
+
fullWidth ? styles$1D.fullWidth : '',
|
|
1576
1580
|
className,
|
|
1577
1581
|
].filter(Boolean).join(' ');
|
|
1578
1582
|
const selectWrapperClasses = [
|
|
1579
|
-
styles$
|
|
1580
|
-
styles$
|
|
1581
|
-
error ? styles$
|
|
1582
|
-
disabled ? styles$
|
|
1583
|
-
leftIcon ? styles$
|
|
1583
|
+
styles$1D.selectWrapper,
|
|
1584
|
+
styles$1D[size],
|
|
1585
|
+
error ? styles$1D.error : '',
|
|
1586
|
+
disabled ? styles$1D.disabled : '',
|
|
1587
|
+
leftIcon ? styles$1D.hasLeftIcon : '',
|
|
1584
1588
|
].filter(Boolean).join(' ');
|
|
1585
1589
|
const renderOptions = () => {
|
|
1586
1590
|
// Render grouped options
|
|
@@ -1593,16 +1597,16 @@ const Select = forwardRef(({ options, optionGroups, size = 'md', label, placehol
|
|
|
1593
1597
|
}
|
|
1594
1598
|
return null;
|
|
1595
1599
|
};
|
|
1596
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: selectId, className: styles$
|
|
1600
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: selectId, className: styles$1D.label, children: label })), jsxs("div", { className: selectWrapperClasses, children: [leftIcon && jsx("span", { className: styles$1D.leftIcon, children: leftIcon }), jsxs("select", { ref: ref, id: selectId, className: styles$1D.select, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
1597
1601
|
.filter(Boolean)
|
|
1598
|
-
.join(' ') || undefined, ...props, children: [placeholder && (jsx("option", { value: "", disabled: true, children: placeholder })), renderOptions()] }), jsx("span", { className: styles$
|
|
1602
|
+
.join(' ') || undefined, ...props, children: [placeholder && (jsx("option", { value: "", disabled: true, children: placeholder })), renderOptions()] }), jsx("span", { className: styles$1D.chevron, children: jsx(ChevronDownIcon, {}) })] }), error && (jsx("span", { id: errorId, className: styles$1D.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$1D.helperText, children: helperText }))] }));
|
|
1599
1603
|
});
|
|
1600
1604
|
Select.displayName = 'Select';
|
|
1601
1605
|
|
|
1602
|
-
var styles$
|
|
1606
|
+
var styles$1C = {"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"};
|
|
1603
1607
|
|
|
1604
1608
|
const Spinner = ({ size = 'md', className = '', color, label = 'Loading...', }) => {
|
|
1605
|
-
return (jsxs("span", { className: `${styles$
|
|
1609
|
+
return (jsxs("span", { className: `${styles$1C.spinner} ${styles$1C[size]} ${className}`, role: "status", "aria-label": label, style: color ? { color } : undefined, children: [jsxs("svg", { className: styles$1C.svg, xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [jsx("circle", { className: styles$1C.track, cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), jsx("path", { className: styles$1C.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$1C.srOnly, children: label })] }));
|
|
1606
1610
|
};
|
|
1607
1611
|
|
|
1608
1612
|
const statusVariantStyles = (theme) => ({
|
|
@@ -1747,7 +1751,7 @@ const Tag = React.forwardRef(({ children, variant = 'default', size = 'md', remo
|
|
|
1747
1751
|
});
|
|
1748
1752
|
Tag.displayName = 'Tag';
|
|
1749
1753
|
|
|
1750
|
-
var styles$
|
|
1754
|
+
var styles$1B = {"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"};
|
|
1751
1755
|
|
|
1752
1756
|
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" })] }));
|
|
1753
1757
|
/**
|
|
@@ -1759,30 +1763,30 @@ const Timepicker = forwardRef(({ size = 'md', label, helperText, error, fullWidt
|
|
|
1759
1763
|
const helperId = `${inputId}-helper`;
|
|
1760
1764
|
const errorId = `${inputId}-error`;
|
|
1761
1765
|
const wrapperClasses = [
|
|
1762
|
-
styles$
|
|
1763
|
-
fullWidth ? styles$
|
|
1766
|
+
styles$1B.wrapper,
|
|
1767
|
+
fullWidth ? styles$1B.fullWidth : '',
|
|
1764
1768
|
className,
|
|
1765
1769
|
].filter(Boolean).join(' ');
|
|
1766
1770
|
const inputWrapperClasses = [
|
|
1767
|
-
styles$
|
|
1768
|
-
styles$
|
|
1769
|
-
error ? styles$
|
|
1770
|
-
disabled ? styles$
|
|
1771
|
+
styles$1B.inputWrapper,
|
|
1772
|
+
styles$1B[size],
|
|
1773
|
+
error ? styles$1B.error : '',
|
|
1774
|
+
disabled ? styles$1B.disabled : '',
|
|
1771
1775
|
].filter(Boolean).join(' ');
|
|
1772
|
-
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$
|
|
1776
|
+
return (jsxs("div", { className: wrapperClasses, children: [label && (jsx("label", { htmlFor: inputId, className: styles$1B.label, children: label })), jsxs("div", { className: inputWrapperClasses, children: [jsx("span", { className: styles$1B.icon, children: jsx(ClockIcon, {}) }), jsx("input", { ref: ref, type: "time", id: inputId, className: styles$1B.input, disabled: disabled, "aria-invalid": !!error, "aria-describedby": [error ? errorId : null, helperText ? helperId : null]
|
|
1773
1777
|
.filter(Boolean)
|
|
1774
|
-
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$
|
|
1778
|
+
.join(' ') || undefined, ...props })] }), error && (jsx("span", { id: errorId, className: styles$1B.errorText, children: error })), helperText && !error && (jsx("span", { id: helperId, className: styles$1B.helperText, children: helperText }))] }));
|
|
1775
1779
|
});
|
|
1776
1780
|
Timepicker.displayName = 'Timepicker';
|
|
1777
1781
|
|
|
1778
|
-
var styles$
|
|
1782
|
+
var styles$1A = {"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"};
|
|
1779
1783
|
|
|
1780
1784
|
/**
|
|
1781
1785
|
* Title component for page headings.
|
|
1782
1786
|
* Large, prominent text for page titles.
|
|
1783
1787
|
*/
|
|
1784
1788
|
const Title = ({ children, weight = 'light', className = '', }) => {
|
|
1785
|
-
return (jsx("h1", { className: `${styles$
|
|
1789
|
+
return (jsx("h1", { className: `${styles$1A.title} ${styles$1A[weight]} ${className}`, children: children }));
|
|
1786
1790
|
};
|
|
1787
1791
|
Title.displayName = 'Title';
|
|
1788
1792
|
|
|
@@ -1887,7 +1891,7 @@ const Toggle = ({ checked, onChange, disabled = false, size = 'md', label, label
|
|
|
1887
1891
|
return toggleElement;
|
|
1888
1892
|
};
|
|
1889
1893
|
|
|
1890
|
-
var styles$
|
|
1894
|
+
var styles$1z = {"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","semantic":"Tooltip-module_semantic__shhec","primary":"Tooltip-module_primary__no1LJ","secondary":"Tooltip-module_secondary__HEoKK","success":"Tooltip-module_success__EG2f-","warning":"Tooltip-module_warning__1zoqE","error":"Tooltip-module_error__Nn6y6","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"};
|
|
1891
1895
|
|
|
1892
1896
|
const Tooltip = ({ content, children, position = 'top', variant = 'dark', delay = 200, disabled = false, className = '', }) => {
|
|
1893
1897
|
const [isVisible, setIsVisible] = useState(false);
|
|
@@ -1965,7 +1969,7 @@ const Tooltip = ({ content, children, position = 'top', variant = 'dark', delay
|
|
|
1965
1969
|
}
|
|
1966
1970
|
};
|
|
1967
1971
|
}, []);
|
|
1968
|
-
return (jsxs("div", { ref: triggerRef, className: `${styles$
|
|
1972
|
+
return (jsxs("div", { ref: triggerRef, className: `${styles$1z.wrapper} ${className}`, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, onTouchStart: handleTouchStart, onTouchEnd: handleTouchEnd, children: [children, isVisible && content && (jsxs("div", { ref: tooltipRef, className: `${styles$1z.tooltip} ${styles$1z[actualPosition]} ${styles$1z[variant]} ${!['dark', 'light'].includes(variant) ? styles$1z.semantic : ''}`, role: "tooltip", children: [jsx("div", { className: styles$1z.content, children: content }), jsx("div", { className: `${styles$1z.arrow} ${styles$1z[`arrow${actualPosition.charAt(0).toUpperCase()}${actualPosition.slice(1)}`]}` })] }))] }));
|
|
1969
1973
|
};
|
|
1970
1974
|
|
|
1971
1975
|
function getTypeColors$1(theme) {
|
|
@@ -2115,7 +2119,7 @@ const TypeIcon = ({ type, size = 18, showTooltip = true, className = '', style,
|
|
|
2115
2119
|
}, ...props, children: jsx("svg", { viewBox: "0 0 24 24", width: size * 0.6, height: size * 0.6, fill: "currentColor", children: typeIcons[type] || typeIcons.U }) }));
|
|
2116
2120
|
};
|
|
2117
2121
|
|
|
2118
|
-
var styles$
|
|
2122
|
+
var styles$1y = {"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"};
|
|
2119
2123
|
|
|
2120
2124
|
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" }) }));
|
|
2121
2125
|
/**
|
|
@@ -2133,21 +2137,43 @@ const Accordion = ({ header, children, defaultOpen = true, open: controlledOpen,
|
|
|
2133
2137
|
}
|
|
2134
2138
|
onOpenChange?.(newOpen);
|
|
2135
2139
|
};
|
|
2136
|
-
return (jsxs("div", { className: `${styles$
|
|
2140
|
+
return (jsxs("div", { className: `${styles$1y.accordion} ${className || ''}`, children: [jsxs("div", { className: styles$1y.headerContainer, children: [jsx("button", { type: "button", className: styles$1y.toggle, onClick: handleToggle, "aria-expanded": isOpen, children: jsx(CaretIcon, { className: `${styles$1y.caret} ${isOpen ? styles$1y.open : ''}` }) }), jsx("div", { className: styles$1y.header, children: header })] }), jsxs("div", { className: `${styles$1y.body} ${isOpen ? styles$1y.visible : styles$1y.hidden}`, "aria-hidden": !isOpen, children: [showTimeline && (jsxs("div", { className: styles$1y.timeline, children: [jsx("div", { className: styles$1y.line }), jsx(CaretIcon, { className: styles$1y.endCaret })] })), jsx("div", { className: styles$1y.content, children: children })] })] }));
|
|
2137
2141
|
};
|
|
2138
2142
|
Accordion.displayName = 'Accordion';
|
|
2139
2143
|
|
|
2140
|
-
|
|
2144
|
+
/**
|
|
2145
|
+
* Sized to Hub's header back control (44x52), which is already above the 44px
|
|
2146
|
+
* minimum tap target, so it does not need padding to be reachable on a phone.
|
|
2147
|
+
*/
|
|
2148
|
+
const backLinkStyle = css({
|
|
2149
|
+
display: 'flex',
|
|
2150
|
+
alignItems: 'center',
|
|
2151
|
+
width: '44px',
|
|
2152
|
+
height: '52px',
|
|
2153
|
+
color: 'inherit',
|
|
2154
|
+
});
|
|
2155
|
+
|
|
2156
|
+
/**
|
|
2157
|
+
* The back affordance in a page header: a tap target holding a single arrow.
|
|
2158
|
+
*
|
|
2159
|
+
* It is deliberately not a Button. This navigates, so it should be a link —
|
|
2160
|
+
* middle-clickable, openable in a new tab, and announced as a link rather than
|
|
2161
|
+
* an action.
|
|
2162
|
+
*/
|
|
2163
|
+
const BackLink = ({ icon, as: Component = 'a', label = 'Back', className = '', style, ...props }) => (jsx(Component, { className: className, "aria-label": label, style: toInlineStyle(merge(backLinkStyle, style)), ...props, children: icon }));
|
|
2164
|
+
BackLink.displayName = 'BackLink';
|
|
2165
|
+
|
|
2166
|
+
var styles$1x = {"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"};
|
|
2141
2167
|
|
|
2142
2168
|
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" })] }));
|
|
2143
|
-
const SegmentedSelector = ({ options, value, onChange, disabled = false, size = 'md', className = '', ariaLabel = 'View options', dataTest, itemClassName = '', activeItemClassName = '', iconPosition = 'left', }) => (jsx("div", { className: [styles$
|
|
2169
|
+
const SegmentedSelector = ({ options, value, onChange, disabled = false, size = 'md', className = '', ariaLabel = 'View options', dataTest, itemClassName = '', activeItemClassName = '', iconPosition = 'left', }) => (jsx("div", { className: [styles$1x.selector, className].filter(Boolean).join(' '), role: "group", "aria-label": ariaLabel, "data-test": dataTest, children: options.map((option) => {
|
|
2144
2170
|
const active = option.id === value;
|
|
2145
2171
|
const accessibleName = option.alt ?? option.label ?? option.id;
|
|
2146
2172
|
return (jsxs("button", { type: "button", title: accessibleName, "aria-label": accessibleName, "aria-pressed": active, disabled: disabled, "data-test": dataTest ? `${dataTest}-option-${option.id}` : undefined, className: [
|
|
2147
|
-
styles$
|
|
2148
|
-
styles$
|
|
2149
|
-
option.label ? styles$
|
|
2150
|
-
active ? styles$
|
|
2173
|
+
styles$1x.item,
|
|
2174
|
+
styles$1x[size],
|
|
2175
|
+
option.label ? styles$1x.withLabel : styles$1x.iconOnly,
|
|
2176
|
+
active ? styles$1x.active : '',
|
|
2151
2177
|
itemClassName,
|
|
2152
2178
|
active ? activeItemClassName : '',
|
|
2153
2179
|
].filter(Boolean).join(' '), onClick: () => onChange?.(option.id), children: [iconPosition === 'left' && option.icon, option.label && jsx("span", { children: option.label }), iconPosition === 'right' && option.icon] }, option.id));
|
|
@@ -2162,7 +2188,7 @@ const CalendarTypeSelector = ({ value, onChange, ...props }) => (jsx(SegmentedSe
|
|
|
2162
2188
|
{ id: 'due_dates', label: 'Due Dates' },
|
|
2163
2189
|
] }));
|
|
2164
2190
|
|
|
2165
|
-
var styles$
|
|
2191
|
+
var styles$1w = {"contact":"ContactCard-module_contact__rwoCO","body":"ContactCard-module_body__zAMJ8","identity":"ContactCard-module_identity__q7L-a","name":"ContactCard-module_name__C8t5-","title":"ContactCard-module_title__UECZm","link":"ContactCard-module_link__VTUHu","linkText":"ContactCard-module_linkText__8atNF"};
|
|
2166
2192
|
|
|
2167
2193
|
/**
|
|
2168
2194
|
* A single person's contact details: avatar, name, title, and tappable phone
|
|
@@ -2174,11 +2200,11 @@ var styles$1v = {"contact":"ContactCard-module_contact__rwoCO","body":"ContactCa
|
|
|
2174
2200
|
const ContactCard$1 = ({ name, title, phone, email, action, showAvatar = true, className = '', }) => {
|
|
2175
2201
|
if (!action && !name)
|
|
2176
2202
|
return null;
|
|
2177
|
-
return (jsxs("div", { className: `${styles$
|
|
2203
|
+
return (jsxs("div", { className: `${styles$1w.contact} ${className}`, children: [name && showAvatar && jsx(Avatar, { name: name, size: 36 }), jsxs("div", { className: styles$1w.body, children: [jsxs("div", { className: styles$1w.identity, children: [action || jsx("span", { className: styles$1w.name, children: name }), title && jsx("span", { className: styles$1w.title, children: title })] }), phone && (jsxs("a", { href: `tel:${phone}`, className: styles$1w.link, children: [jsx(PhoneIcon, { size: 16, "aria-hidden": "true" }), jsx("span", { className: styles$1w.linkText, children: phone })] })), email && (jsxs("a", { href: `mailto:${email}`, className: styles$1w.link, children: [jsx(MailIcon, { size: 16, "aria-hidden": "true" }), jsx("span", { className: styles$1w.linkText, children: email })] }))] })] }));
|
|
2178
2204
|
};
|
|
2179
2205
|
ContactCard$1.displayName = 'ContactCard';
|
|
2180
2206
|
|
|
2181
|
-
var styles$
|
|
2207
|
+
var styles$1v = {"list":"DetailList-module_list__orbOL","pair":"DetailList-module_pair__CAbaR","label":"DetailList-module_label__rloof","value":"DetailList-module_value__TMLgu","iconRow":"DetailList-module_iconRow__G9NsX","icon":"DetailList-module_icon__V-jq2","iconPlaceholder":"DetailList-module_iconPlaceholder__c3w6w","iconText":"DetailList-module_iconText__Kgx7z","badge":"DetailList-module_badge__FBJ8a","primary":"DetailList-module_primary__w79M-","secondary":"DetailList-module_secondary__S0ti-","success":"DetailList-module_success__tJWzC","warning":"DetailList-module_warning__N50cB","error":"DetailList-module_error__no5kK"};
|
|
2182
2208
|
|
|
2183
2209
|
/**
|
|
2184
2210
|
* A compact list of field/value pairs, as used down the side of a trip or
|
|
@@ -2195,21 +2221,21 @@ var styles$1u = {"list":"DetailList-module_list__orbOL","pair":"DetailList-modul
|
|
|
2195
2221
|
const DetailList = ({ items, gap = 8, className = '' }) => {
|
|
2196
2222
|
if (!items.some((item) => !!item.description))
|
|
2197
2223
|
return null;
|
|
2198
|
-
return (jsx("div", { className: `${styles$
|
|
2224
|
+
return (jsx("div", { className: `${styles$1v.list} ${className}`, style: { gap }, children: items.map((item, index) => {
|
|
2199
2225
|
if (!item.description)
|
|
2200
2226
|
return null;
|
|
2201
2227
|
const key = `detail-${index}`;
|
|
2202
2228
|
if (item.icon !== undefined) {
|
|
2203
|
-
return (jsxs("div", { className: styles$
|
|
2229
|
+
return (jsxs("div", { className: styles$1v.iconRow, style: { gap }, children: [item.icon ? (jsx("span", { className: styles$1v.icon, "aria-hidden": "true", children: item.icon })) : (jsx("span", { className: styles$1v.iconPlaceholder })), jsx("span", { className: styles$1v.iconText, children: item.description })] }, key));
|
|
2204
2230
|
}
|
|
2205
2231
|
if (!item.label)
|
|
2206
2232
|
return null;
|
|
2207
|
-
return (jsxs("div", { className: styles$
|
|
2233
|
+
return (jsxs("div", { className: styles$1v.pair, style: { gap }, children: [jsx("span", { className: styles$1v.label, children: item.label }), jsx("span", { className: styles$1v.value, children: item.variant ? (jsx("span", { className: `${styles$1v.badge} ${styles$1v[item.variant]}`, children: item.description })) : (item.description) })] }, key));
|
|
2208
2234
|
}) }));
|
|
2209
2235
|
};
|
|
2210
2236
|
DetailList.displayName = 'DetailList';
|
|
2211
2237
|
|
|
2212
|
-
var styles$
|
|
2238
|
+
var styles$1u = {"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"};
|
|
2213
2239
|
|
|
2214
2240
|
const Dropdown = ({ label, children, alignment = 'left', width, className = '', disabled = false, trigger, }) => {
|
|
2215
2241
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -2232,19 +2258,19 @@ const Dropdown = ({ label, children, alignment = 'left', width, className = '',
|
|
|
2232
2258
|
setIsOpen(false);
|
|
2233
2259
|
}
|
|
2234
2260
|
};
|
|
2235
|
-
return (jsxs("div", { ref: dropdownRef, className: `${styles$
|
|
2261
|
+
return (jsxs("div", { ref: dropdownRef, className: `${styles$1u.dropdown} ${className}`, onKeyDown: handleKeyDown, children: [trigger ? (trigger({ isOpen, toggle: () => !disabled && setIsOpen(!isOpen), disabled })) : (jsxs(Button, { variant: "secondary", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled, "aria-expanded": isOpen, "aria-haspopup": "true", children: [label, jsx("svg", { className: `${styles$1u.arrow} ${isOpen ? styles$1u.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$1u.menu} ${styles$1u[alignment]} ${isOpen ? styles$1u.menuOpen : ''}`, style: width ? { minWidth: `${width}px` } : undefined, role: "menu", children: children })] }));
|
|
2236
2262
|
};
|
|
2237
2263
|
const DropdownItem = ({ children, onClick, disabled = false, icon, className = '', }) => {
|
|
2238
|
-
return (jsxs("button", { type: "button", className: `${styles$
|
|
2264
|
+
return (jsxs("button", { type: "button", className: `${styles$1u.item} ${disabled ? styles$1u.itemDisabled : ''} ${className}`, onClick: onClick, disabled: disabled, role: "menuitem", children: [icon && jsx("span", { className: styles$1u.itemIcon, children: icon }), children] }));
|
|
2239
2265
|
};
|
|
2240
2266
|
Dropdown.Item = DropdownItem;
|
|
2241
2267
|
|
|
2242
|
-
var styles$
|
|
2268
|
+
var styles$1t = {"emptyState":"EmptyState-module_emptyState__WVjm4","sm":"EmptyState-module_sm__uIlcU","md":"EmptyState-module_md__cUO3z","lg":"EmptyState-module_lg__TDd0B","icon":"EmptyState-module_icon__q7SEB","title":"EmptyState-module_title__wrG0V","description":"EmptyState-module_description__EhVZb","actions":"EmptyState-module_actions__XNSCG"};
|
|
2243
2269
|
|
|
2244
2270
|
/** Placeholder shown when a list, table, or panel has nothing to display. */
|
|
2245
|
-
const EmptyState$1 = ({ title, description, icon, actionLabel, onAction, secondaryActionLabel, onSecondaryAction, size = 'md', children, className = '', }) => (jsxs("div", { className: [styles$
|
|
2271
|
+
const EmptyState$1 = ({ title, description, icon, actionLabel, onAction, secondaryActionLabel, onSecondaryAction, size = 'md', children, className = '', }) => (jsxs("div", { className: [styles$1t.emptyState, styles$1t[size], className].filter(Boolean).join(' '), "data-test": "empty-state", children: [icon && jsx("div", { className: styles$1t.icon, "aria-hidden": "true", children: icon }), jsx("p", { className: styles$1t.title, children: title }), description && jsx("p", { className: styles$1t.description, children: description }), (actionLabel || secondaryActionLabel) && (jsxs("div", { className: styles$1t.actions, children: [actionLabel && (jsx(Button, { size: "sm", onClick: onAction, "data-test": "empty-state-action", children: actionLabel })), secondaryActionLabel && (jsx(Button, { size: "sm", variant: "secondary", onClick: onSecondaryAction, "data-test": "empty-state-secondary-action", children: secondaryActionLabel }))] })), children] }));
|
|
2246
2272
|
|
|
2247
|
-
var styles$
|
|
2273
|
+
var styles$1s = {"field":"FieldLayout-module_field__XUDXw","top":"FieldLayout-module_top__l7TpS","left":"FieldLayout-module_left__l9daC","label":"FieldLayout-module_label__eQGNc","labelError":"FieldLayout-module_labelError__pBsN0","required":"FieldLayout-module_required__Alrlu","tooltip":"FieldLayout-module_tooltip__OsmG5","control":"FieldLayout-module_control__ZTojP","icon":"FieldLayout-module_icon__1-nNC","iconLeft":"FieldLayout-module_iconLeft__GLO22","iconRight":"FieldLayout-module_iconRight__xvVIN","message":"FieldLayout-module_message__aQVJy","error":"FieldLayout-module_error__JZHWG","note":"FieldLayout-module_note__DOSvG"};
|
|
2248
2274
|
|
|
2249
2275
|
/**
|
|
2250
2276
|
* The chrome around a form control: label, required marker, tooltip, the
|
|
@@ -2259,11 +2285,11 @@ const FieldLayout = ({ children, label, labelPosition = 'top', showLabel = true,
|
|
|
2259
2285
|
const id = useId();
|
|
2260
2286
|
const errorId = `${id}-error`;
|
|
2261
2287
|
const hasError = Boolean(error);
|
|
2262
|
-
return (jsxs("div", { className: `${styles$
|
|
2288
|
+
return (jsxs("div", { className: `${styles$1s.field} ${styles$1s[labelPosition]} ${className}`, children: [label && showLabel && (jsxs("label", { htmlFor: id, className: `${styles$1s.label} ${hasError ? styles$1s.labelError : ''}`, children: [label, required && !disabled && (jsx("span", { className: styles$1s.required, "aria-hidden": "true", children: "*" })), tooltip && (jsx(Tooltip, { className: styles$1s.tooltip, content: tooltip, children: jsx(InfoIcon$1, { size: 16 }) }))] })), jsxs("div", { className: styles$1s.control, children: [leftIcon && !disabled && (jsx("span", { className: `${styles$1s.icon} ${styles$1s.iconLeft}`, "aria-hidden": "true", children: leftIcon })), children({ id, describedBy: hasError ? errorId : undefined, hasError }), rightIcon && !disabled && (jsx("span", { className: `${styles$1s.icon} ${styles$1s.iconRight}`, "aria-hidden": "true", children: rightIcon }))] }), hasError && (jsx("p", { id: errorId, className: `${styles$1s.message} ${styles$1s.error}`, children: error })), note && jsx("p", { className: `${styles$1s.message} ${styles$1s.note}`, children: note })] }));
|
|
2263
2289
|
};
|
|
2264
2290
|
FieldLayout.displayName = 'FieldLayout';
|
|
2265
2291
|
|
|
2266
|
-
var styles$
|
|
2292
|
+
var styles$1r = {"wrapper":"FileUploadButton-module_wrapper__usYRn","input":"FileUploadButton-module_input__RBN3b"};
|
|
2267
2293
|
|
|
2268
2294
|
/** Document types a travel workflow usually accepts. */
|
|
2269
2295
|
const DOCUMENT_FILE_EXTENSIONS = ['.pdf', '.doc', '.docx', '.xls', '.xlsx'];
|
|
@@ -2275,10 +2301,10 @@ const DOCUMENT_FILE_EXTENSIONS = ['.pdf', '.doc', '.docx', '.xls', '.xlsx'];
|
|
|
2275
2301
|
* "choose file" control rather than a button and an input side by side. The
|
|
2276
2302
|
* button underneath is decorative and hidden from assistive technology.
|
|
2277
2303
|
*/
|
|
2278
|
-
const FileUploadButton = ({ label = 'Add File', accept = DOCUMENT_FILE_EXTENSIONS.join(','), multiple = false, disabled = false, loading = false, variant = 'outline-secondary', size = 'sm', icon, onSelect, className = '', inputProps, }) => (jsxs("div", { className: `${styles$
|
|
2304
|
+
const FileUploadButton = ({ label = 'Add File', accept = DOCUMENT_FILE_EXTENSIONS.join(','), multiple = false, disabled = false, loading = false, variant = 'outline-secondary', size = 'sm', icon, onSelect, className = '', inputProps, }) => (jsxs("div", { className: `${styles$1r.wrapper} ${className}`, children: [jsx(ButtonStyled, { variant: variant, size: size, loading: loading, disabled: disabled, rightIcon: icon, tabIndex: -1, "aria-hidden": "true", children: label }), !disabled && (jsx("input", { ...inputProps, className: styles$1r.input, type: "file", accept: accept, multiple: multiple, "aria-label": label, onChange: onSelect }))] }));
|
|
2279
2305
|
FileUploadButton.displayName = 'FileUploadButton';
|
|
2280
2306
|
|
|
2281
|
-
var styles$
|
|
2307
|
+
var styles$1q = {"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"};
|
|
2282
2308
|
|
|
2283
2309
|
const FilterChip = ({ label, value, options, onChange, searchable = false, searchPlaceholder = 'Search...', infoMessage, disabled = false, className, }) => {
|
|
2284
2310
|
const [open, setOpen] = useState(false);
|
|
@@ -2319,13 +2345,13 @@ const FilterChip = ({ label, value, options, onChange, searchable = false, searc
|
|
|
2319
2345
|
const selectedOption = options.find(opt => opt.value === value);
|
|
2320
2346
|
const displayValue = selectedOption?.label || value;
|
|
2321
2347
|
const isDefault = value === options[0]?.value;
|
|
2322
|
-
return (jsxs("div", { ref: ref, className: `${styles$
|
|
2348
|
+
return (jsxs("div", { ref: ref, className: `${styles$1q.wrapper} ${className || ''}`, children: [jsxs("button", { type: "button", className: `${styles$1q.chip} ${open ? styles$1q.open : ''} ${!isDefault ? styles$1q.active : ''}`, onClick: () => setOpen(!open), disabled: disabled, "aria-haspopup": "listbox", "aria-expanded": open, children: [jsxs("span", { className: styles$1q.label, children: [label, ":"] }), jsx("span", { className: styles$1q.value, children: displayValue }), jsx("svg", { className: `${styles$1q.chevron} ${open ? styles$1q.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$1q.dropdown, role: "listbox", children: [infoMessage && (jsxs("div", { className: styles$1q.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$1q.searchWrapper, children: [jsxs("svg", { className: styles$1q.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$1q.searchInput, autoFocus: true })] })), jsxs("div", { className: styles$1q.optionsList, children: [filteredOptions.map((option) => (jsx("button", { type: "button", role: "option", "aria-selected": option.value === value, className: `${styles$1q.option} ${option.value === value ? styles$1q.selected : ''}`, onClick: () => {
|
|
2323
2349
|
onChange(option.value);
|
|
2324
2350
|
setOpen(false);
|
|
2325
|
-
}, children: option.label }, option.value))), filteredOptions.length === 0 && (jsx("div", { className: styles$
|
|
2351
|
+
}, children: option.label }, option.value))), filteredOptions.length === 0 && (jsx("div", { className: styles$1q.noResults, children: "No results found" }))] })] }))] }));
|
|
2326
2352
|
};
|
|
2327
2353
|
|
|
2328
|
-
var styles$
|
|
2354
|
+
var styles$1p = {"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"};
|
|
2329
2355
|
|
|
2330
2356
|
const FormField = forwardRef(({ label, helperText, error, required = false, hideLabel = false, className, as = 'input', inputProps, textareaProps, children, }, ref) => {
|
|
2331
2357
|
const generatedId = useId();
|
|
@@ -2344,15 +2370,15 @@ const FormField = forwardRef(({ label, helperText, error, required = false, hide
|
|
|
2344
2370
|
return children;
|
|
2345
2371
|
}
|
|
2346
2372
|
if (as === 'textarea') {
|
|
2347
|
-
return (jsx(Textarea, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...textareaProps, className: `${styles$
|
|
2373
|
+
return (jsx(Textarea, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...textareaProps, className: `${styles$1p.inputElement} ${hasError ? styles$1p.inputError : ''} ${textareaProps?.className || ''}` }));
|
|
2348
2374
|
}
|
|
2349
|
-
return (jsx(Input, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...inputProps, className: `${styles$
|
|
2375
|
+
return (jsx(Input, { ref: ref, id: inputId, "aria-describedby": describedBy, "aria-invalid": hasError, "aria-required": required, ...inputProps, className: `${styles$1p.inputElement} ${hasError ? styles$1p.inputError : ''} ${inputProps?.className || ''}` }));
|
|
2350
2376
|
};
|
|
2351
|
-
return (jsxs("div", { className: `${styles$
|
|
2377
|
+
return (jsxs("div", { className: `${styles$1p.formField} ${className || ''}`, children: [jsxs("label", { htmlFor: inputId, className: `${styles$1p.label} ${hideLabel ? styles$1p.visuallyHidden : ''}`, children: [label, required && jsx("span", { className: styles$1p.required, "aria-hidden": "true", children: "*" })] }), renderInput(), helperText && !hasError && (jsx("p", { id: helperId, className: styles$1p.helperText, children: helperText })), hasError && (jsx("p", { id: errorId, className: styles$1p.errorText, role: "alert", children: error }))] }));
|
|
2352
2378
|
});
|
|
2353
2379
|
FormField.displayName = 'FormField';
|
|
2354
2380
|
|
|
2355
|
-
var styles$
|
|
2381
|
+
var styles$1o = {"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"};
|
|
2356
2382
|
|
|
2357
2383
|
/**
|
|
2358
2384
|
* FormRow component for laying out form fields in a responsive grid.
|
|
@@ -2362,16 +2388,16 @@ const FormRow = ({ children, columns, gap = 'md', className, stackOnMobile = tru
|
|
|
2362
2388
|
const childCount = Children.count(children);
|
|
2363
2389
|
const colCount = columns || (childCount > 4 ? 4 : childCount);
|
|
2364
2390
|
return (jsx("div", { className: `
|
|
2365
|
-
${styles$
|
|
2366
|
-
${styles$
|
|
2367
|
-
${styles$
|
|
2368
|
-
${stackOnMobile ? styles$
|
|
2391
|
+
${styles$1o.row}
|
|
2392
|
+
${styles$1o[`cols${colCount}`]}
|
|
2393
|
+
${styles$1o[`gap${gap}`]}
|
|
2394
|
+
${stackOnMobile ? styles$1o.stackMobile : ''}
|
|
2369
2395
|
${className || ''}
|
|
2370
2396
|
`, children: children }));
|
|
2371
2397
|
};
|
|
2372
2398
|
FormRow.displayName = 'FormRow';
|
|
2373
2399
|
|
|
2374
|
-
var styles$
|
|
2400
|
+
var styles$1n = {"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-"};
|
|
2375
2401
|
|
|
2376
2402
|
/**
|
|
2377
2403
|
* FormSection component for grouping related form fields with a title and icon.
|
|
@@ -2380,14 +2406,14 @@ var styles$1m = {"section":"FormSection-module_section__T17Vg","header":"FormSec
|
|
|
2380
2406
|
const FormSection = ({ title, icon, status, disabled = false, children, className, id, }) => {
|
|
2381
2407
|
const isSubmitted = status === 'submitted';
|
|
2382
2408
|
const isDisabled = disabled || isSubmitted;
|
|
2383
|
-
return (jsxs("div", { className: `${styles$
|
|
2409
|
+
return (jsxs("div", { className: `${styles$1n.section} ${className || ''}`, id: id, children: [jsxs("div", { className: styles$1n.header, children: [icon && jsx("span", { className: styles$1n.icon, children: icon }), jsx("h2", { className: styles$1n.title, children: title })] }), jsxs("fieldset", { disabled: isDisabled, className: `${styles$1n.fieldset} ${isDisabled ? styles$1n.disabled : ''}`, children: [status && (jsxs("div", { className: styles$1n.status, children: [jsx("span", { className: styles$1n.statusLabel, children: "Status:" }), jsx("span", { className: `${styles$1n.statusValue} ${styles$1n[status]}`, children: status === 'submitted' ? 'Submitted' : status === 'draft' ? 'Draft' : 'Not Submitted' })] })), children] })] }));
|
|
2384
2410
|
};
|
|
2385
2411
|
FormSection.displayName = 'FormSection';
|
|
2386
2412
|
|
|
2387
|
-
var styles$
|
|
2413
|
+
var styles$1m = {"stack":"FormStack-module_stack__SURjY","sm":"FormStack-module_sm__rt3tb","md":"FormStack-module_md__SRDmc","lg":"FormStack-module_lg__jql3j"};
|
|
2388
2414
|
|
|
2389
2415
|
/** Standard vertical form-field rhythm used by Hub modal forms. */
|
|
2390
|
-
const FormStack = ({ children, gap = 'md', className = '' }) => (jsx("div", { className: [styles$
|
|
2416
|
+
const FormStack = ({ children, gap = 'md', className = '' }) => (jsx("div", { className: [styles$1m.stack, styles$1m[gap], className].filter(Boolean).join(' '), children: children }));
|
|
2391
2417
|
|
|
2392
2418
|
const RADIUS = '8px';
|
|
2393
2419
|
/**
|
|
@@ -2465,26 +2491,26 @@ const InfoTile = ({ value, label, icon, square = NO_EDGES, borderless = NO_EDGES
|
|
|
2465
2491
|
};
|
|
2466
2492
|
InfoTile.displayName = 'InfoTile';
|
|
2467
2493
|
|
|
2468
|
-
var styles$
|
|
2494
|
+
var styles$1l = {"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"};
|
|
2469
2495
|
|
|
2470
2496
|
const ManifestViewToggle = ({ view, onView, paxCount, eqCount, locked, className = '', }) => {
|
|
2471
2497
|
const tabs = [
|
|
2472
2498
|
{ key: 'passengers', label: 'Passengers', count: paxCount, icon: UsersIcon$1 },
|
|
2473
2499
|
{ key: 'equipment', label: 'Equipment', count: eqCount, icon: CubeIcon },
|
|
2474
2500
|
];
|
|
2475
|
-
return (jsx("div", { className: [styles$
|
|
2501
|
+
return (jsx("div", { className: [styles$1l.toggle, locked ? styles$1l.lockedToggle : '', className].filter(Boolean).join(' '), role: "tablist", "aria-label": "Manifest view", children: tabs.map((tab) => {
|
|
2476
2502
|
const active = view === tab.key;
|
|
2477
2503
|
const Icon = locked ? LockIcon$1 : tab.icon;
|
|
2478
2504
|
return (jsxs("button", { type: "button", role: "tab", "aria-selected": active, onClick: () => onView(tab.key), className: [
|
|
2479
|
-
styles$
|
|
2480
|
-
active ? styles$
|
|
2481
|
-
locked ? styles$
|
|
2482
|
-
locked && active ? styles$
|
|
2483
|
-
].filter(Boolean).join(' '), children: [jsx(Icon, { size: 16 }), tab.label, jsx("span", { className: styles$
|
|
2505
|
+
styles$1l.tab,
|
|
2506
|
+
active ? styles$1l.active : '',
|
|
2507
|
+
locked ? styles$1l.locked : '',
|
|
2508
|
+
locked && active ? styles$1l.lockedActive : '',
|
|
2509
|
+
].filter(Boolean).join(' '), children: [jsx(Icon, { size: 16 }), tab.label, jsx("span", { className: styles$1l.count, children: tab.count })] }, tab.key));
|
|
2484
2510
|
}) }));
|
|
2485
2511
|
};
|
|
2486
2512
|
|
|
2487
|
-
var styles$
|
|
2513
|
+
var styles$1k = {"container":"MultiUserSearch-module_container__aWwYv","disabled":"MultiUserSearch-module_disabled__Twuo3","label":"MultiUserSearch-module_label__W4WWS","selectedUsers":"MultiUserSearch-module_selectedUsers__IPRHn","selectedBadge":"MultiUserSearch-module_selectedBadge__VxTlk","badgeContent":"MultiUserSearch-module_badgeContent__UnAN7","removeButton":"MultiUserSearch-module_removeButton__vV8P0","inputWrapper":"MultiUserSearch-module_inputWrapper__G4T-v","listbox":"MultiUserSearch-module_listbox__PxgPe","option":"MultiUserSearch-module_option__m0sTR","highlighted":"MultiUserSearch-module_highlighted__GvlxG","optionDisabled":"MultiUserSearch-module_optionDisabled__1GBAH","optionAvatar":"MultiUserSearch-module_optionAvatar__YO9js","optionContent":"MultiUserSearch-module_optionContent__q4YGx","optionName":"MultiUserSearch-module_optionName__YM5T7","optionEmail":"MultiUserSearch-module_optionEmail__-x6qp","optionTitle":"MultiUserSearch-module_optionTitle__RQZWi","loadingItem":"MultiUserSearch-module_loadingItem__ajXfz","noResults":"MultiUserSearch-module_noResults__czQX6","hint":"MultiUserSearch-module_hint__pcdaa","helperText":"MultiUserSearch-module_helperText__0jOQq","errorText":"MultiUserSearch-module_errorText__XISLN"};
|
|
2488
2514
|
|
|
2489
2515
|
const DEBOUNCE_MS = 300;
|
|
2490
2516
|
/**
|
|
@@ -2612,34 +2638,34 @@ const MultiUserSearch = ({ label = 'Search users', placeholder = 'Type to search
|
|
|
2612
2638
|
const showDropdown = isOpen && (loading || availableOptions.length > 0 || (meetsMinLength && !loading));
|
|
2613
2639
|
const showNoResults = isOpen && meetsMinLength && !loading && availableOptions.length === 0;
|
|
2614
2640
|
const showMinLengthHint = isOpen && !meetsMinLength && query.length > 0;
|
|
2615
|
-
return (jsxs("div", { ref: containerRef, className: [styles$
|
|
2641
|
+
return (jsxs("div", { ref: containerRef, className: [styles$1k.container, disabled ? styles$1k.disabled : '', className]
|
|
2616
2642
|
.filter(Boolean)
|
|
2617
|
-
.join(' '), "data-test": dataTest, children: [label && (jsx("label", { className: styles$
|
|
2643
|
+
.join(' '), "data-test": dataTest, children: [label && (jsx("label", { className: styles$1k.label, htmlFor: `${dataTest}-input`, children: label })), selectedUsers.length > 0 && (jsx("div", { className: styles$1k.selectedUsers, "data-test": `${dataTest}-selected`, children: selectedUsers.map((user) => (jsx(Badge, { variant: "info", size: "sm", className: styles$1k.selectedBadge, "data-test": `${dataTest}-selected-${user.id}`, children: jsxs("span", { className: styles$1k.badgeContent, children: [user.name, jsx("button", { type: "button", className: styles$1k.removeButton, onClick: () => removeSelection(user.id), "aria-label": `Remove ${user.name}`, disabled: disabled, children: jsx(CloseIcon, { size: 12 }) })] }) }, user.id))) })), jsxs("div", { className: styles$1k.inputWrapper, children: [jsx(Input, { ref: inputRef, id: `${dataTest}-input`, type: "search", placeholder: placeholder, value: query, onChange: handleInputChange, onFocus: handleInputFocus, onKeyDown: handleKeyDown, disabled: disabled, leftIcon: jsx(SearchIcon$1, { size: 16 }), rightIcon: loading ? jsx(Spinner, { size: "xs", label: "Searching" }) : undefined, "aria-expanded": isOpen, "aria-controls": `${dataTest}-listbox`, "aria-autocomplete": "list", "aria-activedescendant": highlightedIndex >= 0
|
|
2618
2644
|
? `${dataTest}-option-${availableOptions[highlightedIndex]?.id}`
|
|
2619
|
-
: undefined, role: "combobox", fullWidth: true, "data-test": `${dataTest}-input` }), showDropdown && (jsxs("ul", { ref: listRef, id: `${dataTest}-listbox`, className: styles$
|
|
2645
|
+
: undefined, role: "combobox", fullWidth: true, "data-test": `${dataTest}-input` }), showDropdown && (jsxs("ul", { ref: listRef, id: `${dataTest}-listbox`, className: styles$1k.listbox, role: "listbox", "aria-label": "Search results", "data-test": `${dataTest}-listbox`, children: [loading && (jsxs("li", { className: styles$1k.loadingItem, role: "status", children: [jsx(Spinner, { size: "sm", label: "Searching users" }), jsx("span", { children: "Searching users\u2026" })] })), !loading &&
|
|
2620
2646
|
availableOptions.map((option, index) => (jsxs("li", { id: `${dataTest}-option-${option.id}`, role: "option", "aria-selected": highlightedIndex === index, "aria-disabled": option.disabled, className: [
|
|
2621
|
-
styles$
|
|
2622
|
-
highlightedIndex === index ? styles$
|
|
2623
|
-
option.disabled ? styles$
|
|
2647
|
+
styles$1k.option,
|
|
2648
|
+
highlightedIndex === index ? styles$1k.highlighted : '',
|
|
2649
|
+
option.disabled ? styles$1k.optionDisabled : '',
|
|
2624
2650
|
]
|
|
2625
2651
|
.filter(Boolean)
|
|
2626
|
-
.join(' '), onClick: () => selectOption(option), title: option.disabledReason, "data-test": `${dataTest}-option-${option.id}`, children: [jsx("span", { className: styles$
|
|
2652
|
+
.join(' '), onClick: () => selectOption(option), title: option.disabledReason, "data-test": `${dataTest}-option-${option.id}`, children: [jsx("span", { className: styles$1k.optionAvatar, "aria-hidden": "true", children: jsx(UserIcon, { size: 16 }) }), jsxs("span", { className: styles$1k.optionContent, children: [jsx("span", { className: styles$1k.optionName, children: option.name }), jsx("span", { className: styles$1k.optionEmail, children: option.email }), option.title && (jsx("span", { className: styles$1k.optionTitle, children: option.title }))] })] }, option.id))), showNoResults && (jsxs("li", { className: styles$1k.noResults, role: "status", children: ["No users found matching \"", trimmedQuery, "\""] }))] })), showMinLengthHint && (jsxs("div", { className: styles$1k.hint, role: "status", children: ["Enter at least ", minSearchLength, " characters to search"] }))] }), (helperText || error) && (jsx("p", { className: [styles$1k.helperText, error ? styles$1k.errorText : '']
|
|
2627
2653
|
.filter(Boolean)
|
|
2628
2654
|
.join(' '), role: error ? 'alert' : undefined, children: error || helperText }))] }));
|
|
2629
2655
|
};
|
|
2630
2656
|
MultiUserSearch.displayName = 'MultiUserSearch';
|
|
2631
2657
|
|
|
2632
|
-
var styles$
|
|
2658
|
+
var styles$1j = {"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"};
|
|
2633
2659
|
|
|
2634
2660
|
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, }) => {
|
|
2635
|
-
const content = (jsxs(Fragment, { children: [icon && jsx("span", { className: `${styles$
|
|
2661
|
+
const content = (jsxs(Fragment, { children: [icon && jsx("span", { className: `${styles$1j.icon} ${styles$1j[`icon${size.charAt(0).toUpperCase()}${size.slice(1)}`]}`, "aria-hidden": "true", children: icon }), !collapsed && (jsx("span", { className: styles$1j.label, children: label })), badge !== undefined && !collapsed && (jsx(Badge, { variant: badgeVariant, className: styles$1j.badge, children: badge }))] }));
|
|
2636
2662
|
const classNames = [
|
|
2637
|
-
styles$
|
|
2638
|
-
styles$
|
|
2639
|
-
styles$
|
|
2640
|
-
active ? styles$
|
|
2641
|
-
collapsed ? styles$
|
|
2642
|
-
disabled ? styles$
|
|
2663
|
+
styles$1j.navItem,
|
|
2664
|
+
styles$1j[variant],
|
|
2665
|
+
styles$1j[size],
|
|
2666
|
+
active ? styles$1j.active : '',
|
|
2667
|
+
collapsed ? styles$1j.collapsed : '',
|
|
2668
|
+
disabled ? styles$1j.disabled : '',
|
|
2643
2669
|
className || '',
|
|
2644
2670
|
].filter(Boolean).join(' ');
|
|
2645
2671
|
const commonProps = {
|
|
@@ -2654,7 +2680,7 @@ const NavItem = ({ icon, label, active = false, collapsed = false, variant = 'de
|
|
|
2654
2680
|
return (jsx("button", { type: "button", onClick: disabled ? undefined : onClick, disabled: disabled, ...commonProps, children: content }));
|
|
2655
2681
|
};
|
|
2656
2682
|
|
|
2657
|
-
var styles$
|
|
2683
|
+
var styles$1i = {"header":"PageHeader-module_header__mgurT","empty":"PageHeader-module_empty__PhGUS","body":"PageHeader-module_body__Ky9Vw","text":"PageHeader-module_text__aZXIA","pretitle":"PageHeader-module_pretitle__4rrfW","title":"PageHeader-module_title__GQfAe"};
|
|
2658
2684
|
|
|
2659
2685
|
/**
|
|
2660
2686
|
* Standard page heading: an optional back control, a pretitle, the title, and
|
|
@@ -2663,10 +2689,10 @@ var styles$1h = {"header":"PageHeader-module_header__mgurT","empty":"PageHeader-
|
|
|
2663
2689
|
* The header keeps its height while `title` is empty and fades in once one
|
|
2664
2690
|
* arrives, so pages do not jump as their data loads.
|
|
2665
2691
|
*/
|
|
2666
|
-
const PageHeader = ({ title, pretitle, after, back, className = '', }) => (jsxs("div", { className: `${styles$
|
|
2692
|
+
const PageHeader = ({ title, pretitle, after, back, className = '', }) => (jsxs("div", { className: `${styles$1i.header} ${title ? '' : styles$1i.empty} ${className}`, children: [back, jsx("div", { className: styles$1i.body, children: jsxs("div", { className: styles$1i.text, children: [pretitle && jsx("h2", { className: styles$1i.pretitle, children: pretitle }), jsxs("h1", { className: styles$1i.title, children: [title, "\u00A0"] }), after] }) })] }));
|
|
2667
2693
|
PageHeader.displayName = 'PageHeader';
|
|
2668
2694
|
|
|
2669
|
-
var styles$
|
|
2695
|
+
var styles$1h = {"pagination":"Pagination-module_pagination__bYlk4","summary":"Pagination-module_summary__fE-zz","controls":"Pagination-module_controls__U-4MK","pageSize":"Pagination-module_pageSize__vqxE8","pages":"Pagination-module_pages__-EHb7","page":"Pagination-module_page__bMFDY","step":"Pagination-module_step__RQPZN","current":"Pagination-module_current__YkaCW","ellipsis":"Pagination-module_ellipsis__2nszM"};
|
|
2670
2696
|
|
|
2671
2697
|
/**
|
|
2672
2698
|
* Builds the page-button list for a paginator, collapsing long runs into
|
|
@@ -2711,10 +2737,10 @@ const Pagination = ({ page, pageSize, totalItems, siblingCount = 1, pageSizeOpti
|
|
|
2711
2737
|
return;
|
|
2712
2738
|
onPageChange?.(next);
|
|
2713
2739
|
};
|
|
2714
|
-
return (jsxs("nav", { className: [styles$
|
|
2740
|
+
return (jsxs("nav", { className: [styles$1h.pagination, className].filter(Boolean).join(' '), "aria-label": ariaLabel, "data-test": "pagination", children: [!hideSummary && (jsxs("p", { className: styles$1h.summary, "data-test": "pagination-summary", children: ["Showing ", firstItem, "\u2013", lastItem, " of ", totalItems, " ", itemLabel] })), jsxs("div", { className: styles$1h.controls, children: [showSizeSelector && (jsxs("label", { className: styles$1h.pageSize, children: [jsx("span", { children: "Rows per page" }), jsx("select", { value: pageSize, onChange: (event) => onPageSizeChange?.(Number(event.target.value)), "data-test": "pagination-page-size", children: pageSizeOptions.map((option) => (jsx("option", { value: option, children: option }, option))) })] })), jsxs("ul", { className: styles$1h.pages, children: [jsx("li", { children: jsx("button", { type: "button", className: styles$1h.step, onClick: () => goTo(currentPage - 1), disabled: currentPage <= 1, "aria-label": "Previous page", "data-test": "pagination-previous", children: jsx(ChevronLeftIcon, { size: 16 }) }) }), items.map((item, index) => item === 'ellipsis' ? (jsx("li", { className: styles$1h.ellipsis, "aria-hidden": "true", children: "\u2026" }, `ellipsis-${index}`)) : (jsx("li", { children: jsx("button", { type: "button", className: [styles$1h.page, item === currentPage ? styles$1h.current : ''].filter(Boolean).join(' '), onClick: () => goTo(item), "aria-label": `Page ${item}`, "aria-current": item === currentPage ? 'page' : undefined, "data-test": `pagination-page-${item}`, children: item }) }, item))), jsx("li", { children: jsx("button", { type: "button", className: styles$1h.step, onClick: () => goTo(currentPage + 1), disabled: currentPage >= pageCount, "aria-label": "Next page", "data-test": "pagination-next", children: jsx(ChevronRightIcon$1, { size: 16 }) }) })] })] })] }));
|
|
2715
2741
|
};
|
|
2716
2742
|
|
|
2717
|
-
var styles$
|
|
2743
|
+
var styles$1g = {"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"};
|
|
2718
2744
|
|
|
2719
2745
|
const dimensions = {
|
|
2720
2746
|
xs: 32,
|
|
@@ -2730,7 +2756,7 @@ const strokeWidths = {
|
|
|
2730
2756
|
};
|
|
2731
2757
|
const ProgressBar = ({ value, max = 100, size = 'md', variant = 'primary', showLabel = false, className = '', }) => {
|
|
2732
2758
|
const percentage = Math.min(Math.max((value / max) * 100, 0), 100);
|
|
2733
|
-
return (jsxs("div", { className: `${styles$
|
|
2759
|
+
return (jsxs("div", { className: `${styles$1g.barContainer} ${styles$1g[`bar${size}`]} ${className}`, children: [jsx("div", { className: styles$1g.barTrack, children: jsx("div", { className: `${styles$1g.barFill} ${styles$1g[variant]}`, style: { width: `${percentage}%` }, role: "progressbar", "aria-valuenow": value, "aria-valuemin": 0, "aria-valuemax": max }) }), showLabel && (jsxs("span", { className: styles$1g.barLabel, children: [Math.round(percentage), "%"] }))] }));
|
|
2734
2760
|
};
|
|
2735
2761
|
const ProgressCircle = ({ value, max = 100, size = 'md', variant = 'primary', showLabel = false, className = '', diameter, }) => {
|
|
2736
2762
|
const percentage = Math.min(Math.max((value / max) * 100, 0), 100);
|
|
@@ -2741,7 +2767,7 @@ const ProgressCircle = ({ value, max = 100, size = 'md', variant = 'primary', sh
|
|
|
2741
2767
|
const radius = (dimension - strokeWidth) / 2;
|
|
2742
2768
|
const circumference = radius * 2 * Math.PI;
|
|
2743
2769
|
const strokeDashoffset = circumference - (percentage / 100) * circumference;
|
|
2744
|
-
return (jsxs("div", { className: `${styles$
|
|
2770
|
+
return (jsxs("div", { className: `${styles$1g.circleContainer} ${className}`, style: { width: dimension, height: dimension }, children: [jsxs("svg", { width: dimension, height: dimension, className: styles$1g.circleSvg, children: [jsx("circle", { className: styles$1g.circleTrack, cx: dimension / 2, cy: dimension / 2, r: radius, strokeWidth: strokeWidth, fill: "transparent" }), jsx("circle", { className: `${styles$1g.circleFill} ${styles$1g[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$1g.circleLabel, style: { fontSize: size === 'xs' ? '8px' : size === 'sm' ? '10px' : size === 'md' ? '12px' : '14px' }, children: [Math.round(percentage), "%"] }))] }));
|
|
2745
2771
|
};
|
|
2746
2772
|
// Combined export
|
|
2747
2773
|
const Progress = {
|
|
@@ -2749,7 +2775,29 @@ const Progress = {
|
|
|
2749
2775
|
Circle: ProgressCircle,
|
|
2750
2776
|
};
|
|
2751
2777
|
|
|
2752
|
-
|
|
2778
|
+
// 5px block padding, which is what Hub's `py-1.25` resolves to.
|
|
2779
|
+
const resultCountStyle = css({
|
|
2780
|
+
paddingTop: '5px',
|
|
2781
|
+
paddingBottom: '5px',
|
|
2782
|
+
margin: 0,
|
|
2783
|
+
});
|
|
2784
|
+
|
|
2785
|
+
/**
|
|
2786
|
+
* The "12 trips displayed" line that sits above a filtered list.
|
|
2787
|
+
*
|
|
2788
|
+
* It reports what is on screen, not what exists — the distinction matters when
|
|
2789
|
+
* a filter is applied, which is exactly when someone reads it.
|
|
2790
|
+
*
|
|
2791
|
+
* The count is announced politely so screen-reader users hear the list resize
|
|
2792
|
+
* as they filter, instead of having to go looking for the number.
|
|
2793
|
+
*/
|
|
2794
|
+
const ResultCount = ({ count, noun, pluralNoun, className = '', style, }) => {
|
|
2795
|
+
const word = count === 1 ? noun : (pluralNoun ?? `${noun}s`);
|
|
2796
|
+
return (jsxs("p", { className: className, "data-testid": "result-count", "aria-live": "polite", style: toInlineStyle(merge(resultCountStyle, style)), children: [count, " ", word.toLocaleLowerCase(), " displayed"] }));
|
|
2797
|
+
};
|
|
2798
|
+
ResultCount.displayName = 'ResultCount';
|
|
2799
|
+
|
|
2800
|
+
var styles$1f = {"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"};
|
|
2753
2801
|
|
|
2754
2802
|
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" })] }));
|
|
2755
2803
|
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" })] }));
|
|
@@ -2757,23 +2805,23 @@ const ChevronIcon$2 = () => (jsx("svg", { width: "12", height: "12", viewBox: "0
|
|
|
2757
2805
|
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" })] }));
|
|
2758
2806
|
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" })] }));
|
|
2759
2807
|
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" })] }));
|
|
2760
|
-
const SpinnerIcon = () => (jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: styles$
|
|
2808
|
+
const SpinnerIcon = () => (jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: styles$1f.spinner, children: jsx("circle", { cx: "12", cy: "12", r: "10", strokeDasharray: "32", strokeDashoffset: "32" }) }));
|
|
2761
2809
|
const DropdownButton = ({ label, icon, options, }) => {
|
|
2762
|
-
return (jsxs("div", { className: styles$
|
|
2810
|
+
return (jsxs("div", { className: styles$1f.dropdown, children: [jsxs("button", { type: "button", className: styles$1f.dropdownTrigger, children: [icon, jsx("span", { children: label }), jsx(ChevronIcon$2, {})] }), jsx("div", { className: styles$1f.dropdownMenu, children: options.map((option, i) => (jsxs("button", { type: "button", className: styles$1f.dropdownItem, onClick: option.onClick, disabled: option.disabled, children: [option.icon && jsx("span", { className: styles$1f.dropdownItemIcon, children: option.icon }), option.label] }, i))) })] }));
|
|
2763
2811
|
};
|
|
2764
2812
|
/**
|
|
2765
2813
|
* RosterToolbar - Toolbar for roster management with import/export/save actions
|
|
2766
2814
|
*/
|
|
2767
2815
|
const RosterToolbar = ({ importOptions, exportOptions, lockToggle, saveButton, additionalActions, searchField, className = '', }) => {
|
|
2768
|
-
const toolbarClasses = [styles$
|
|
2769
|
-
return (jsxs("div", { className: toolbarClasses, children: [jsxs("div", { className: styles$
|
|
2770
|
-
styles$
|
|
2771
|
-
lockToggle.isLocked ? styles$
|
|
2772
|
-
].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$
|
|
2816
|
+
const toolbarClasses = [styles$1f.toolbar, className].filter(Boolean).join(' ');
|
|
2817
|
+
return (jsxs("div", { className: toolbarClasses, children: [jsxs("div", { className: styles$1f.leftSection, children: [searchField, additionalActions] }), jsxs("div", { className: styles$1f.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: [
|
|
2818
|
+
styles$1f.lockButton,
|
|
2819
|
+
lockToggle.isLocked ? styles$1f.locked : '',
|
|
2820
|
+
].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$1f.saveButton, onClick: saveButton.onClick, disabled: saveButton.disabled || saveButton.loading, children: [saveButton.loading ? jsx(SpinnerIcon, {}) : jsx(SaveIcon, {}), jsx("span", { children: saveButton.label || 'Save' })] }))] })] }));
|
|
2773
2821
|
};
|
|
2774
2822
|
RosterToolbar.displayName = 'RosterToolbar';
|
|
2775
2823
|
|
|
2776
|
-
var styles$
|
|
2824
|
+
var styles$1e = {"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"};
|
|
2777
2825
|
|
|
2778
2826
|
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) => {
|
|
2779
2827
|
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
@@ -2801,25 +2849,25 @@ const SearchField = forwardRef(({ placeholder = 'Search...', value, defaultValue
|
|
|
2801
2849
|
onSearch?.(currentValue);
|
|
2802
2850
|
}
|
|
2803
2851
|
};
|
|
2804
|
-
return (jsxs("form", { className: `${styles$
|
|
2852
|
+
return (jsxs("form", { className: `${styles$1e.searchField} ${styles$1e[size]} ${className || ''}`, onSubmit: handleSubmit, role: "search", children: [jsxs("div", { className: styles$1e.inputWrapper, children: [jsx(SearchIcon$1, { className: styles$1e.searchIcon, "aria-hidden": "true" }), jsx(Input, { ref: ref, id: id, type: "search", placeholder: placeholder, value: currentValue, onChange: handleChange, onKeyDown: handleKeyDown, disabled: disabled, className: styles$1e.input, "aria-label": ariaLabel, ...props }), showClear && currentValue && (jsx("button", { type: "button", className: styles$1e.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" }))] }));
|
|
2805
2853
|
});
|
|
2806
2854
|
SearchField.displayName = 'SearchField';
|
|
2807
2855
|
|
|
2808
|
-
var styles$
|
|
2856
|
+
var styles$1d = {"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"};
|
|
2809
2857
|
|
|
2810
2858
|
/**
|
|
2811
2859
|
* Layout for Hub's school-contact editor. Field controls stay injectable so
|
|
2812
2860
|
* consuming applications retain their form state, validation, and masking.
|
|
2813
2861
|
*/
|
|
2814
|
-
const SchoolContactForm = ({ mode, createFromPortalUser, firstNameField, middleInitialField, lastNameField, businessPhoneField, cellPhoneField, emailField, className = '', }) => (jsxs("div", { className: [styles$
|
|
2862
|
+
const SchoolContactForm = ({ mode, createFromPortalUser, firstNameField, middleInitialField, lastNameField, businessPhoneField, cellPhoneField, emailField, className = '', }) => (jsxs("div", { className: [styles$1d.form, className].filter(Boolean).join(' '), children: [mode === 'Add' && (jsxs(Fragment, { children: [jsxs("div", { children: [jsx("label", { className: styles$1d.portalLabel, children: "Create From Portal User" }), createFromPortalUser] }), jsx("div", { className: styles$1d.divider, children: jsx("strong", { children: "OR" }) }), jsx("p", { className: styles$1d.newContactLabel, children: "Create New Contact Without Portal Access" })] })), jsxs("div", { className: styles$1d.nameFields, children: [firstNameField, middleInitialField, lastNameField] }), jsxs("div", { className: styles$1d.phoneFields, children: [businessPhoneField, cellPhoneField] }), jsx("div", { children: emailField })] }));
|
|
2815
2863
|
|
|
2816
|
-
var styles$
|
|
2864
|
+
var styles$1c = {"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"};
|
|
2817
2865
|
|
|
2818
2866
|
const Segment = ({ options, value, onChange, size = 'md', fullWidth = false, className = '', 'aria-label': ariaLabel, }) => {
|
|
2819
|
-
return (jsx("div", { className: `${styles$
|
|
2867
|
+
return (jsx("div", { className: `${styles$1c.segment} ${styles$1c[size]} ${fullWidth ? styles$1c.fullWidth : ''} ${className}`, role: "radiogroup", "aria-label": ariaLabel, children: options.map((option) => (jsxs("button", { type: "button", className: `${styles$1c.option} ${value === option.value ? styles$1c.selected : ''} ${option.disabled ? styles$1c.disabled : ''}`, onClick: () => !option.disabled && onChange(option.value), disabled: option.disabled, role: "radio", "aria-checked": value === option.value, children: [option.icon && jsx("span", { className: styles$1c.icon, children: option.icon }), option.label] }, option.value))) }));
|
|
2820
2868
|
};
|
|
2821
2869
|
|
|
2822
|
-
var styles$
|
|
2870
|
+
var styles$1b = {"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"};
|
|
2823
2871
|
|
|
2824
2872
|
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" }) }));
|
|
2825
2873
|
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" }) }));
|
|
@@ -2892,11 +2940,11 @@ const SelectFilter = ({ label, options = [], groupedOptions = {}, value = [], on
|
|
|
2892
2940
|
}
|
|
2893
2941
|
return `${selected.length} selected`;
|
|
2894
2942
|
};
|
|
2895
|
-
return (jsxs("div", { ref: dropdownRef, className: `${styles$
|
|
2943
|
+
return (jsxs("div", { ref: dropdownRef, className: `${styles$1b.container} ${className}`, children: [jsxs("button", { type: "button", className: `${styles$1b.trigger} ${disabled ? styles$1b.disabled : ''} ${isOpen ? styles$1b.open : ''}`, onClick: () => !disabled && setIsOpen(!isOpen), children: [jsx("span", { className: `${styles$1b.triggerText} ${selectedValues.length === 0 ? styles$1b.placeholder : ''}`, children: getDisplayText() }), jsx("span", { className: styles$1b.chevron, children: jsx(ChevronIcon$1, {}) })] }), isOpen && (jsxs("div", { className: styles$1b.dropdown, style: { width }, children: [grouped && tabs.length > 0 && (jsx("div", { className: styles$1b.tabs, children: tabs.map(tab => (jsx("button", { type: "button", className: `${styles$1b.tab} ${activeTab === tab ? styles$1b.activeTab : ''}`, onClick: () => setActiveTab(tab), children: tab.charAt(0).toUpperCase() + tab.slice(1) }, tab))) })), multiselect && (jsxs("div", { className: styles$1b.actions, children: [jsx("button", { type: "button", className: styles$1b.actionBtn, onClick: handleSelectAll, children: "Select All" }), jsx("button", { type: "button", className: styles$1b.actionBtn, onClick: handleClear, children: "Clear" })] })), jsx("div", { className: styles$1b.options, children: currentOptions.map(option => (jsxs("div", { className: `${styles$1b.option} ${selectedValues.includes(option.value) ? styles$1b.selected : ''}`, onClick: () => handleSelect(option.value), children: [multiselect && (jsx("span", { className: styles$1b.checkbox, children: selectedValues.includes(option.value) && jsx(CheckIcon, {}) })), jsx("span", { className: styles$1b.optionLabel, children: option.label })] }, option.value))) }), multiselect && (jsx("div", { className: styles$1b.footer, children: jsx("button", { type: "button", className: styles$1b.applyBtn, onClick: () => setIsOpen(false), children: "Apply" }) }))] }))] }));
|
|
2896
2944
|
};
|
|
2897
2945
|
SelectFilter.displayName = 'SelectFilter';
|
|
2898
2946
|
|
|
2899
|
-
var styles$
|
|
2947
|
+
var styles$1a = {"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"};
|
|
2900
2948
|
|
|
2901
2949
|
/**
|
|
2902
2950
|
* ServiceToggle component for a single service item.
|
|
@@ -2909,19 +2957,19 @@ const ServiceToggle = ({ label, icon, hasToggle = true, enabled = false, onToggl
|
|
|
2909
2957
|
onClick();
|
|
2910
2958
|
}
|
|
2911
2959
|
};
|
|
2912
|
-
return (jsxs("div", { className: styles$
|
|
2960
|
+
return (jsxs("div", { className: styles$1a.item, children: [jsxs("div", { className: `${styles$1a.labelContainer} ${isClickable ? styles$1a.clickable : ''}`, onClick: handleClick, children: [icon && jsx("span", { className: styles$1a.icon, children: icon }), jsx("span", { className: styles$1a.label, children: label })] }), hasToggle && (jsx(Toggle, { "aria-label": label, checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
|
|
2913
2961
|
};
|
|
2914
2962
|
/**
|
|
2915
2963
|
* ServiceToggleList component for displaying a list of services with toggles.
|
|
2916
2964
|
* Used in travel request forms for service selection (Air, Hotel, Ground, etc.)
|
|
2917
2965
|
*/
|
|
2918
2966
|
const ServiceToggleList = ({ services, enabledServices = {}, onToggle, onClick, className, disabled = false, }) => {
|
|
2919
|
-
return (jsx("div", { className: `${styles$
|
|
2967
|
+
return (jsx("div", { className: `${styles$1a.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), disabled: disabled }, service.key))) }));
|
|
2920
2968
|
};
|
|
2921
2969
|
ServiceToggle.displayName = 'ServiceToggle';
|
|
2922
2970
|
ServiceToggleList.displayName = 'ServiceToggleList';
|
|
2923
2971
|
|
|
2924
|
-
var styles$
|
|
2972
|
+
var styles$19 = {"toggle":"SupplierTypeToggle-module_toggle__x4pTJ","active":"SupplierTypeToggle-module_active__8BGSe"};
|
|
2925
2973
|
|
|
2926
2974
|
const SUPPLIER_TYPE_OPTIONS = [
|
|
2927
2975
|
{ value: 'A', label: 'Air' },
|
|
@@ -2942,10 +2990,10 @@ const SupplierTypeToggle = ({ value, defaultValue = '', onChange, disabled = fal
|
|
|
2942
2990
|
setInternalValue(nextValue);
|
|
2943
2991
|
onChange?.(nextValue);
|
|
2944
2992
|
};
|
|
2945
|
-
return (jsx("div", { className: [styles$
|
|
2993
|
+
return (jsx("div", { className: [styles$19.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$19.active : '', onClick: () => handleSelect(option.value), children: option.label }, option.value || 'all'))) }));
|
|
2946
2994
|
};
|
|
2947
2995
|
|
|
2948
|
-
var styles$
|
|
2996
|
+
var styles$18 = {"header":"TeamCalendarHeader-module_header__j6QB7","row":"TeamCalendarHeader-module_row__g8ntG","identity":"TeamCalendarHeader-module_identity__cvHGq","code":"TeamCalendarHeader-module_code__ClYXC","name":"TeamCalendarHeader-module_name__wqku-","content":"TeamCalendarHeader-module_content__Aqt4I"};
|
|
2949
2997
|
|
|
2950
2998
|
/**
|
|
2951
2999
|
* The heading of a team's column in the travel calendar: the team's code, its
|
|
@@ -2954,10 +3002,10 @@ var styles$17 = {"header":"TeamCalendarHeader-module_header__j6QB7","row":"TeamC
|
|
|
2954
3002
|
* It sticks to the top of its column so the team stays identifiable while the
|
|
2955
3003
|
* schedule scrolls.
|
|
2956
3004
|
*/
|
|
2957
|
-
const TeamCalendarHeader = ({ teamCode, teamFullName, children, className = '', }) => (jsxs("div", { className: `${styles$
|
|
3005
|
+
const TeamCalendarHeader = ({ teamCode, teamFullName, children, className = '', }) => (jsxs("div", { className: `${styles$18.header} ${className}`, children: [jsx("div", { className: styles$18.row, children: jsxs("div", { className: styles$18.identity, children: [jsx("div", { className: styles$18.code, children: teamCode }), teamFullName && jsx("span", { className: styles$18.name, children: teamFullName })] }) }), jsx("div", { className: styles$18.content, children: children })] }));
|
|
2958
3006
|
TeamCalendarHeader.displayName = 'TeamCalendarHeader';
|
|
2959
3007
|
|
|
2960
|
-
var styles$
|
|
3008
|
+
var styles$17 = {"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"};
|
|
2961
3009
|
|
|
2962
3010
|
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" })] }));
|
|
2963
3011
|
/**
|
|
@@ -2968,8 +3016,8 @@ const TeamHeader = ({ title: suppliedTitle, teamCode, teamName, pretitle = 'Team
|
|
|
2968
3016
|
? `${teamCode} - ${teamName}`
|
|
2969
3017
|
: teamName || teamCode || '');
|
|
2970
3018
|
const headerClasses = [
|
|
2971
|
-
styles$
|
|
2972
|
-
!title ? styles$
|
|
3019
|
+
styles$17.header,
|
|
3020
|
+
!title ? styles$17.empty : '',
|
|
2973
3021
|
className,
|
|
2974
3022
|
].filter(Boolean).join(' ');
|
|
2975
3023
|
const handleBack = () => {
|
|
@@ -2981,7 +3029,7 @@ const TeamHeader = ({ title: suppliedTitle, teamCode, teamName, pretitle = 'Team
|
|
|
2981
3029
|
window.location.href = backHref;
|
|
2982
3030
|
}
|
|
2983
3031
|
};
|
|
2984
|
-
return (jsxs("div", { className: headerClasses, "data-test": "team-header", children: [jsxs("div", { className: styles$
|
|
3032
|
+
return (jsxs("div", { className: headerClasses, "data-test": "team-header", children: [jsxs("div", { className: styles$17.left, children: [(backHref || onBack) && (jsx("button", { type: "button", className: styles$17.backButton, onClick: handleBack, "aria-label": "Go back", "data-test": "team-header-back", children: jsx(BackIcon, {}) })), jsxs("div", { className: styles$17.titles, children: [pretitle && jsx("span", { className: styles$17.pretitle, children: pretitle }), jsxs("h1", { className: styles$17.title, children: [title, "\u00A0"] })] })] }), actions && (jsx("div", { className: styles$17.actions, children: actions }))] }));
|
|
2985
3033
|
};
|
|
2986
3034
|
const DEFAULT_TABS$1 = [
|
|
2987
3035
|
{ id: 'profile', label: 'Profile' },
|
|
@@ -2990,11 +3038,11 @@ const DEFAULT_TABS$1 = [
|
|
|
2990
3038
|
{ id: 'user-access', label: 'User Access' },
|
|
2991
3039
|
];
|
|
2992
3040
|
/** Router-agnostic counterpart of Hub's team-management submenu. */
|
|
2993
|
-
const TeamSubMenu = ({ tabs = DEFAULT_TABS$1, activeTab, onTabChange, className = '' }) => (jsx("nav", { className: [styles$
|
|
3041
|
+
const TeamSubMenu = ({ tabs = DEFAULT_TABS$1, activeTab, onTabChange, className = '' }) => (jsx("nav", { className: [styles$17.subMenu, className].filter(Boolean).join(' '), "aria-label": "Team management sections", "data-test": "team-management-tabs", children: tabs.map((tab) => (jsx("button", { type: "button", className: activeTab === tab.id ? styles$17.activeTab : '', "aria-current": activeTab === tab.id ? 'page' : undefined, "data-test": `team-management-tab-${tab.id}`, onClick: () => onTabChange?.(tab.id), children: tab.label }, tab.id))) }));
|
|
2994
3042
|
TeamHeader.displayName = 'TeamHeader';
|
|
2995
3043
|
TeamSubMenu.displayName = 'TeamSubMenu';
|
|
2996
3044
|
|
|
2997
|
-
var styles$
|
|
3045
|
+
var styles$16 = {"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"};
|
|
2998
3046
|
|
|
2999
3047
|
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" }) }));
|
|
3000
3048
|
const BusIcon$1 = () => (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" })] }));
|
|
@@ -3004,41 +3052,41 @@ const ArrowIcon = () => (jsxs("svg", { width: "12", height: "12", viewBox: "0 0
|
|
|
3004
3052
|
* Base TripSegment component wrapper
|
|
3005
3053
|
*/
|
|
3006
3054
|
const TripSegment = ({ type: _type, variant = 'light', className = '', children, }) => {
|
|
3007
|
-
return (jsx("div", { className: `${styles$
|
|
3055
|
+
return (jsx("div", { className: `${styles$16.segment} ${styles$16[variant]} ${className}`, children: children }));
|
|
3008
3056
|
};
|
|
3009
3057
|
/**
|
|
3010
3058
|
* AirSegment component for displaying flight information
|
|
3011
3059
|
*/
|
|
3012
3060
|
const AirSegment = ({ flights, variant = 'light', className = '', }) => {
|
|
3013
3061
|
if (!flights || flights.length === 0) {
|
|
3014
|
-
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
3062
|
+
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsx("span", { className: styles$16.empty, children: "No flights" }) }));
|
|
3015
3063
|
}
|
|
3016
|
-
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$
|
|
3064
|
+
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$16.item, children: [jsxs("div", { className: styles$16.itemHeader, children: [jsx(PlaneIcon$2, {}), jsx("span", { className: styles$16.itemType, children: flight.type === 'charter' ? 'Charter' : 'Commercial' })] }), jsxs("div", { className: styles$16.route, children: [jsx("span", { className: styles$16.location, children: flight.departure }), jsx(ArrowIcon, {}), jsx("span", { className: styles$16.location, children: flight.arrival })] }), jsxs("div", { className: styles$16.details, children: [jsx("span", { children: flight.departureDate }), flight.departureTime && jsx("span", { children: flight.departureTime })] }), flight.airline && (jsxs("div", { className: styles$16.details, children: [jsx("span", { children: flight.airline }), flight.flightNumber && jsxs("span", { children: ["#", flight.flightNumber] })] }))] }, i))) }));
|
|
3017
3065
|
};
|
|
3018
3066
|
/**
|
|
3019
3067
|
* GroundSegment component for displaying ground transportation
|
|
3020
3068
|
*/
|
|
3021
3069
|
const GroundSegment = ({ segments, variant = 'light', className = '', }) => {
|
|
3022
3070
|
if (!segments || segments.length === 0) {
|
|
3023
|
-
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
3071
|
+
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsx("span", { className: styles$16.empty, children: "No ground transportation" }) }));
|
|
3024
3072
|
}
|
|
3025
|
-
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$
|
|
3073
|
+
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$16.item, children: [jsxs("div", { className: styles$16.itemHeader, children: [jsx(BusIcon$1, {}), jsx("span", { className: styles$16.itemType, children: segment.type.charAt(0).toUpperCase() + segment.type.slice(1) })] }), jsxs("div", { className: styles$16.route, children: [jsx("span", { className: styles$16.location, children: segment.pickupLocation }), jsx(ArrowIcon, {}), jsx("span", { className: styles$16.location, children: segment.dropoffLocation })] }), jsxs("div", { className: styles$16.details, children: [jsx("span", { children: segment.pickupDate }), segment.pickupTime && jsx("span", { children: segment.pickupTime })] }), segment.company && (jsxs("div", { className: styles$16.details, children: [jsx("span", { children: segment.company }), segment.vehicleCount && jsxs("span", { children: [segment.vehicleCount, " vehicles"] })] }))] }, i))) }));
|
|
3026
3074
|
};
|
|
3027
3075
|
/**
|
|
3028
3076
|
* HotelSegment component for displaying hotel information
|
|
3029
3077
|
*/
|
|
3030
3078
|
const HotelSegment = ({ hotels, variant = 'light', className = '', }) => {
|
|
3031
3079
|
if (!hotels || hotels.length === 0) {
|
|
3032
|
-
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsx("span", { className: styles$
|
|
3080
|
+
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsx("span", { className: styles$16.empty, children: "No hotels" }) }));
|
|
3033
3081
|
}
|
|
3034
|
-
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$
|
|
3082
|
+
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$16.item, children: [jsxs("div", { className: styles$16.itemHeader, children: [jsx(HotelIcon$2, {}), jsx("span", { className: styles$16.itemName, children: hotel.name })] }), hotel.city && (jsx("div", { className: styles$16.details, children: jsx("span", { children: hotel.city }) })), jsxs("div", { className: styles$16.dates, children: [jsx("span", { children: hotel.checkIn }), jsx("span", { children: "\u2013" }), jsx("span", { children: hotel.checkOut })] }), hotel.roomCount && (jsx("div", { className: styles$16.details, children: jsxs("span", { children: [hotel.roomCount, " rooms"] }) }))] }, i))) }));
|
|
3035
3083
|
};
|
|
3036
3084
|
TripSegment.displayName = 'TripSegment';
|
|
3037
3085
|
AirSegment.displayName = 'AirSegment';
|
|
3038
3086
|
GroundSegment.displayName = 'GroundSegment';
|
|
3039
3087
|
HotelSegment.displayName = 'HotelSegment';
|
|
3040
3088
|
|
|
3041
|
-
var styles$
|
|
3089
|
+
var styles$15 = {"calculator":"AcmiQuoteCalculator-module_calculator__-6rXx","errorSummary":"AcmiQuoteCalculator-module_errorSummary__3UXtU","alertMessage":"AcmiQuoteCalculator-module_alertMessage__B-nGB","columns":"AcmiQuoteCalculator-module_columns__VlLlN","panel":"AcmiQuoteCalculator-module_panel__y5d5u","panelTitle":"AcmiQuoteCalculator-module_panelTitle__LSjm3","legs":"AcmiQuoteCalculator-module_legs__ULi1q","leg":"AcmiQuoteCalculator-module_leg__HJ-sm","automaticLeg":"AcmiQuoteCalculator-module_automaticLeg__Hvg55","legIndex":"AcmiQuoteCalculator-module_legIndex__Bkql5","legError":"AcmiQuoteCalculator-module_legError__nUX-M","actions":"AcmiQuoteCalculator-module_actions__fzH-d","results":"AcmiQuoteCalculator-module_results__U83fJ","resultGrid":"AcmiQuoteCalculator-module_resultGrid__f7Ktc","finalPrice":"AcmiQuoteCalculator-module_finalPrice__KGEGz","contractFacts":"AcmiQuoteCalculator-module_contractFacts__m55AN","pricedLegs":"AcmiQuoteCalculator-module_pricedLegs__AxxFS","pricedLegHeader":"AcmiQuoteCalculator-module_pricedLegHeader__e7bmc","pricedLeg":"AcmiQuoteCalculator-module_pricedLeg__I1XjZ"};
|
|
3042
3090
|
|
|
3043
3091
|
/** Carriers STM currently holds ACMI agreements with. */
|
|
3044
3092
|
const ACMI_CARRIER_OPTIONS = [
|
|
@@ -3154,19 +3202,19 @@ const AcmiQuoteCalculator = ({ carrierOptions = ACMI_CARRIER_OPTIONS, aircraftOp
|
|
|
3154
3202
|
const seatHint = specs
|
|
3155
3203
|
? `Maximum ${specs.seats} passengers for this aircraft`
|
|
3156
3204
|
: 'Select an aircraft to see seat capacity';
|
|
3157
|
-
return (jsxs("div", { className: [styles$
|
|
3158
|
-
styles$
|
|
3159
|
-
positioningMode === 'automatic' ? styles$
|
|
3160
|
-
].filter(Boolean).join(' '), "data-test": "acmi-leg", children: [jsxs("span", { className: styles$
|
|
3205
|
+
return (jsxs("div", { className: [styles$15.calculator, className].filter(Boolean).join(' '), "data-test": "acmi-quote-calculator", children: [showErrors && errorList.length > 0 && (jsx(Alert, { variant: "error", title: "Fix these before calculating", children: jsx("ul", { className: styles$15.errorSummary, "data-test": "acmi-error-summary", children: errorList.map(([field, message]) => (jsx("li", { children: message }, field))) }) })), calculationError && (jsx(Alert, { variant: "error", title: "Quote could not be calculated", children: jsx("p", { className: styles$15.alertMessage, "data-test": "acmi-calculation-error", children: calculationError }) })), jsxs("div", { className: styles$15.columns, children: [jsxs("section", { className: styles$15.panel, "aria-label": "Quote configuration", children: [jsx("h3", { className: styles$15.panelTitle, children: "Quote Configuration" }), jsx(Select, { id: "acmi-carrier", label: "Carrier", placeholder: "Select Carrier\u2026", options: carrierOptions, value: inputs.carrier, error: showErrors ? errors.carrier : undefined, onChange: (event) => updateCarrier(event.target.value), "data-test": "acmi-carrier" }), jsx(Select, { id: "acmi-aircraft", label: "Aircraft Type", placeholder: "Select Aircraft\u2026", options: availableAircraftOptions, value: inputs.aircraft, disabled: !inputs.carrier, error: showErrors ? errors.aircraft : undefined, onChange: (event) => update('aircraft', event.target.value), "data-test": "acmi-aircraft" }), jsx(Input, { id: "acmi-passengers", type: "number", label: "Number of Passengers", placeholder: "Enter passenger count", helperText: seatHint, value: inputs.passengers, error: showErrors ? errors.passengers : undefined, onChange: (event) => update('passengers', event.target.value), "data-test": "acmi-passengers" }), jsx(Input, { id: "acmi-fuel-price", type: "number", step: "0.01", label: "Fuel Price ($/gallon)", placeholder: "e.g. 5.50", value: inputs.fuelPrice, error: showErrors ? errors.fuelPrice : undefined, onChange: (event) => update('fuelPrice', event.target.value), "data-test": "acmi-fuel-price" }), jsx(Input, { id: "acmi-markup", type: "number", step: "0.1", label: "Markup %", helperText: "Standard is 7% \u2014 adjustable as needed", value: inputs.markupPercent, onChange: (event) => update('markupPercent', event.target.value), "data-test": "acmi-markup" }), jsx(Input, { id: "acmi-insurance", label: "Insurance (Flat Fee)", helperText: `${currency.format(insuranceFlat)} per trip (locked)`, value: currency.format(insuranceFlat), readOnly: true, disabled: true, "data-test": "acmi-insurance" }), jsx(Input, { id: "acmi-crew-nights", type: "number", label: "Crew Nights (RON)", helperText: "Number of nights crew stays away from base", value: inputs.crewNights, onChange: (event) => update('crewNights', event.target.value), "data-test": "acmi-crew-nights" }), showTripMonth && (jsx(Select, { id: "acmi-trip-month", label: "Trip Month (for Historic Winds)", options: TRIP_MONTH_OPTIONS, helperText: "Use this only when the configured pricing service applies a historic winds profile.", value: inputs.tripMonth, onChange: (event) => update('tripMonth', event.target.value), "data-test": "acmi-trip-month" }))] }), jsxs("section", { className: styles$15.panel, "aria-label": "Flight itinerary", children: [jsx("h3", { className: styles$15.panelTitle, children: "Flight Itinerary" }), jsx(Alert, { variant: "primary", children: positioningMode === 'automatic' ? (jsxs(Fragment, { children: ["Enter ", jsx("strong", { children: "live legs only" }), ", in trip order. The host pricing engine adds positioning ferry legs automatically. Leave flight time blank to use its route estimate; an entered time is treated as an explicit contractual input."] })) : (jsxs(Fragment, { children: ["Enter ", jsx("strong", { children: "every flown leg in order" }), ", including positioning. Mark each leg as live or ferry. Leave flight time blank to use the pricing engine\u2019s route estimate; an entered time is treated as an explicit contractual input."] })) }), showErrors && errors.legs && (jsx("p", { className: styles$15.legError, role: "alert", "data-test": "acmi-legs-error", children: errors.legs })), jsx("ol", { className: styles$15.legs, children: inputs.legs.map((leg, index) => (jsxs("li", { className: [
|
|
3206
|
+
styles$15.leg,
|
|
3207
|
+
positioningMode === 'automatic' ? styles$15.automaticLeg : '',
|
|
3208
|
+
].filter(Boolean).join(' '), "data-test": "acmi-leg", children: [jsxs("span", { className: styles$15.legIndex, children: ["Leg ", index + 1] }), positioningMode === 'explicit' && (jsx(Select, { id: `${leg.id}-type`, size: "sm", label: "Leg type", options: [
|
|
3161
3209
|
{ value: 'live', label: 'Live' },
|
|
3162
3210
|
{ value: 'ferry', label: 'Ferry' },
|
|
3163
|
-
], value: leg.type ?? 'live', onChange: (event) => updateLeg(leg.id, { type: event.target.value }), "data-test": "acmi-leg-type" })), jsx(Input, { id: `${leg.id}-origin`, size: "sm", label: "From", maxLength: 4, value: leg.origin, onChange: (event) => updateLeg(leg.id, { origin: event.target.value.toUpperCase() }), "data-test": "acmi-leg-origin" }), jsx(Input, { id: `${leg.id}-destination`, size: "sm", label: "To", maxLength: 4, value: leg.destination, onChange: (event) => updateLeg(leg.id, { destination: event.target.value.toUpperCase() }), "data-test": "acmi-leg-destination" }), jsx(Input, { id: `${leg.id}-flight-time`, size: "sm", type: "number", step: "0.1", label: "Flight time (h, optional)", value: leg.flightTime, onChange: (event) => updateLeg(leg.id, { flightTime: event.target.value }), "data-test": "acmi-leg-flight-time" }), jsx(Button, { variant: "ghost", size: "sm", square: true, "aria-label": `Remove leg ${index + 1}`, disabled: inputs.legs.length === 1, onClick: () => removeLeg(leg.id), "data-test": "acmi-remove-leg", children: jsx(TrashIcon$2, { size: 16 }) })] }, leg.id))) }), jsxs("div", { className: styles$
|
|
3211
|
+
], value: leg.type ?? 'live', onChange: (event) => updateLeg(leg.id, { type: event.target.value }), "data-test": "acmi-leg-type" })), jsx(Input, { id: `${leg.id}-origin`, size: "sm", label: "From", maxLength: 4, value: leg.origin, onChange: (event) => updateLeg(leg.id, { origin: event.target.value.toUpperCase() }), "data-test": "acmi-leg-origin" }), jsx(Input, { id: `${leg.id}-destination`, size: "sm", label: "To", maxLength: 4, value: leg.destination, onChange: (event) => updateLeg(leg.id, { destination: event.target.value.toUpperCase() }), "data-test": "acmi-leg-destination" }), jsx(Input, { id: `${leg.id}-flight-time`, size: "sm", type: "number", step: "0.1", label: "Flight time (h, optional)", value: leg.flightTime, onChange: (event) => updateLeg(leg.id, { flightTime: event.target.value }), "data-test": "acmi-leg-flight-time" }), jsx(Button, { variant: "ghost", size: "sm", square: true, "aria-label": `Remove leg ${index + 1}`, disabled: inputs.legs.length === 1, onClick: () => removeLeg(leg.id), "data-test": "acmi-remove-leg", children: jsx(TrashIcon$2, { size: 16 }) })] }, leg.id))) }), jsxs("div", { className: styles$15.actions, children: [jsx(Button, { variant: "outline", size: "sm", leftIcon: jsx(PlusIcon$2, { size: 16 }), onClick: addLeg, "data-test": "acmi-add-leg", children: "Add Flight Leg" }), jsx(Button, { size: "sm", loading: calculating, onClick: calculate, "data-test": "acmi-calculate", children: calculating ? 'Calculating' : 'Calculate Quote' }), result && onSubmitForApproval && (jsx(Button, { variant: "secondary", size: "sm", onClick: () => onSubmitForApproval(inputs), "data-test": "acmi-submit-approval", children: "Use This Total" }))] })] })] }), result && (jsxs("section", { className: styles$15.results, "aria-label": "Quote summary", "data-test": "acmi-results", children: [jsx("h3", { className: styles$15.panelTitle, children: "Quote Summary" }), jsxs("dl", { className: styles$15.resultGrid, children: [jsxs("div", { children: [jsx("dt", { children: "Operating Subtotal" }), jsx("dd", { children: currency.format(result.operatingSubtotal) })] }), jsxs("div", { children: [jsx("dt", { children: "Markup Applied" }), jsx("dd", { children: currency.format(result.markupAmount) })] }), jsxs("div", { children: [jsx("dt", { children: "Insurance (Flat Fee)" }), jsx("dd", { children: currency.format(result.insuranceAmount) })] }), jsxs("div", { children: [jsx("dt", { children: "Pre-Tax Total" }), jsx("dd", { children: currency.format(result.preTaxTotal) })] }), jsxs("div", { children: [jsx("dt", { children: "Federal Excise Tax" }), jsx("dd", { children: currency.format(result.fet) })] }), jsxs("div", { children: [jsx("dt", { children: "Segment Fees" }), jsx("dd", { children: currency.format(result.segmentFees) })] })] }), jsxs("p", { className: styles$15.finalPrice, "data-test": "acmi-final-price", children: [jsx("span", { children: "Total Quoted Price" }), jsx("strong", { children: currency.format(result.finalPrice) })] }), result.pricingDetails && (jsxs("dl", { className: styles$15.contractFacts, "data-test": "acmi-pricing-details", children: [jsxs("div", { "data-test": "acmi-ferry-floor", children: [jsx("dt", { children: "Ferry block time" }), jsxs("dd", { children: [result.pricingDetails.ferryBlockHours.toFixed(2), " h", result.pricingDetails.ferryMinimumHours
|
|
3164
3212
|
? ` · ${result.pricingDetails.ferryMinimumHours.toFixed(2)} h minimum per estimated SkyWest ferry leg`
|
|
3165
|
-
: ''] })] }), jsxs("div", { "data-test": "acmi-fuel-buffer", children: [jsx("dt", { children: "Fuel buffer" }), jsxs("dd", { children: [(result.pricingDetails.fuelBufferPercent * 100).toFixed(0), "% \u00B7 ", currency.format(result.pricingDetails.fuelBufferAmount)] })] }), jsxs("div", { "data-test": "acmi-screening", children: [jsx("dt", { children: "Security screening" }), jsx("dd", { children: currency.format(result.pricingDetails.screeningAmount) })] })] })), result.legs && result.legs.length > 0 && (jsxs("div", { className: styles$
|
|
3213
|
+
: ''] })] }), jsxs("div", { "data-test": "acmi-fuel-buffer", children: [jsx("dt", { children: "Fuel buffer" }), jsxs("dd", { children: [(result.pricingDetails.fuelBufferPercent * 100).toFixed(0), "% \u00B7 ", currency.format(result.pricingDetails.fuelBufferAmount)] })] }), jsxs("div", { "data-test": "acmi-screening", children: [jsx("dt", { children: "Security screening" }), jsx("dd", { children: currency.format(result.pricingDetails.screeningAmount) })] })] })), result.legs && result.legs.length > 0 && (jsxs("div", { className: styles$15.pricedLegs, "data-test": "acmi-priced-legs", children: [jsx("h4", { children: "Backend-priced itinerary" }), jsxs("div", { className: styles$15.pricedLegHeader, "aria-hidden": "true", children: [jsx("span", { children: "Leg" }), jsx("span", { children: "Type" }), jsx("span", { children: "Block" }), jsx("span", { children: "Total" })] }), result.legs.map((leg) => (jsxs("div", { className: styles$15.pricedLeg, "data-test": "acmi-priced-leg", children: [jsxs("span", { children: [leg.origin, " \u2192 ", leg.destination] }), jsx("span", { "data-test": "acmi-priced-leg-type", children: leg.type === 'ferry' ? 'Ferry' : 'Live' }), jsxs("span", { "data-test": "acmi-priced-leg-block", children: [leg.blockHours.toFixed(2), " h"] }), jsx("span", { children: currency.format(leg.total) })] }, leg.id)))] }))] }))] }));
|
|
3166
3214
|
};
|
|
3167
3215
|
AcmiQuoteCalculator.displayName = 'AcmiQuoteCalculator';
|
|
3168
3216
|
|
|
3169
|
-
var styles$
|
|
3217
|
+
var styles$14 = {"wrapper":"AgentGroupTravelRequestsTable-module_wrapper__xKyhF","toolbar":"AgentGroupTravelRequestsTable-module_toolbar__VMiqx","showHideAll":"AgentGroupTravelRequestsTable-module_showHideAll__t6kBh","filters":"AgentGroupTravelRequestsTable-module_filters__c1W6C","filterField":"AgentGroupTravelRequestsTable-module_filterField__n9Qu8","tableScroll":"AgentGroupTravelRequestsTable-module_tableScroll__-rt-g","table":"AgentGroupTravelRequestsTable-module_table__Yb4lC","colExpand":"AgentGroupTravelRequestsTable-module_colExpand__WcfMW","colDelete":"AgentGroupTravelRequestsTable-module_colDelete__Yi5vY","colDate":"AgentGroupTravelRequestsTable-module_colDate__XyzfB","accountRow":"AgentGroupTravelRequestsTable-module_accountRow__4bDJV","requestRow":"AgentGroupTravelRequestsTable-module_requestRow__UJ5Mm","empty":"AgentGroupTravelRequestsTable-module_empty__XemcW","expander":"AgentGroupTravelRequestsTable-module_expander__fNedP","iconButton":"AgentGroupTravelRequestsTable-module_iconButton__2Yu4i","muted":"AgentGroupTravelRequestsTable-module_muted__Dy5as","idLink":"AgentGroupTravelRequestsTable-module_idLink__sEuEa","hasNotes":"AgentGroupTravelRequestsTable-module_hasNotes__W4TlG","startSoon":"AgentGroupTravelRequestsTable-module_startSoon__cbWHx","dueStatus":"AgentGroupTravelRequestsTable-module_dueStatus__E0FBZ","dueGreen":"AgentGroupTravelRequestsTable-module_dueGreen__5mSLo","dueRed":"AgentGroupTravelRequestsTable-module_dueRed__qgngM","dueGray":"AgentGroupTravelRequestsTable-module_dueGray__xH3dv","pnrButton":"AgentGroupTravelRequestsTable-module_pnrButton__5VKxA","pnrGreen":"AgentGroupTravelRequestsTable-module_pnrGreen__aBwwW","pnrBlue":"AgentGroupTravelRequestsTable-module_pnrBlue__gta71","pnrGray":"AgentGroupTravelRequestsTable-module_pnrGray__-SLa0","deleteButton":"AgentGroupTravelRequestsTable-module_deleteButton__oeLl9","subPnrRow":"AgentGroupTravelRequestsTable-module_subPnrRow__z8ctM","subPnrPanel":"AgentGroupTravelRequestsTable-module_subPnrPanel__jf5pq","legend":"AgentGroupTravelRequestsTable-module_legend__Wr9jV"};
|
|
3170
3218
|
|
|
3171
3219
|
const PNR_PLACEHOLDER = '111111';
|
|
3172
3220
|
const COLUMN_COUNT = 19;
|
|
@@ -3223,18 +3271,18 @@ const computeTravelTypeCodes = (request) => {
|
|
|
3223
3271
|
codes.push(request.groupHotel ? 'GH' : 'H');
|
|
3224
3272
|
return codes;
|
|
3225
3273
|
};
|
|
3226
|
-
const DUE_TONE_CLASS = { green: styles$
|
|
3227
|
-
const PNR_TONE_CLASS = { green: styles$
|
|
3274
|
+
const DUE_TONE_CLASS = { green: styles$14.dueGreen, red: styles$14.dueRed, gray: styles$14.dueGray };
|
|
3275
|
+
const PNR_TONE_CLASS = { green: styles$14.pnrGreen, blue: styles$14.pnrBlue, gray: styles$14.pnrGray };
|
|
3228
3276
|
const DueStatusCell = ({ status, today, onToggle, }) => {
|
|
3229
3277
|
const tone = dueStatusTone(status, today);
|
|
3230
3278
|
const canToggle = Boolean(onToggle) && (Boolean(status.dueDate) || status.complete);
|
|
3231
3279
|
const label = status.dueDate ? formatShortDate$1(status.dueDate) : status.complete ? 'Complete' : '—';
|
|
3232
|
-
const className = [styles$
|
|
3280
|
+
const className = [styles$14.dueStatus, DUE_TONE_CLASS[tone]].join(' ');
|
|
3233
3281
|
if (!canToggle)
|
|
3234
3282
|
return jsx("span", { className: className, children: label });
|
|
3235
3283
|
return (jsx("button", { type: "button", className: className, onClick: onToggle, title: "Click to toggle complete", children: label }));
|
|
3236
3284
|
};
|
|
3237
|
-
const PnrButton = ({ label, tone, onClick, dataTest, }) => (jsx("button", { type: "button", className: [styles$
|
|
3285
|
+
const PnrButton = ({ label, tone, onClick, dataTest, }) => (jsx("button", { type: "button", className: [styles$14.pnrButton, PNR_TONE_CLASS[tone]].join(' '), title: "Click to copy", onClick: onClick, "data-test": dataTest, children: label }));
|
|
3238
3286
|
/** Hub's agent-facing list of open Group Travel Requests, grouped by school, one row per PNR group. */
|
|
3239
3287
|
const AgentGroupTravelRequestsTable = ({ requests, sports = [], views = [], today = new Date().toISOString().slice(0, 10), onOpenRequest, onViewMasterTrip, onDeleteRequest, onCopyPnr, onToggleDueStatus, onSubmittedDateChange, onQuoteSentDateChange, className = '', }) => {
|
|
3240
3288
|
const [sportFilter, setSportFilter] = useState('');
|
|
@@ -3289,15 +3337,15 @@ const AgentGroupTravelRequestsTable = ({ requests, sports = [], views = [], toda
|
|
|
3289
3337
|
setDateEdits((current) => ({ ...current, [id]: { ...current[id], submittedDate: value } }));
|
|
3290
3338
|
onSubmittedDateChange?.(id, value);
|
|
3291
3339
|
};
|
|
3292
|
-
return (jsxs("div", { className: [styles$
|
|
3340
|
+
return (jsxs("div", { className: [styles$14.wrapper, className].filter(Boolean).join(' '), "data-test": "agent-gtr-table", children: [jsxs("div", { className: styles$14.toolbar, children: [jsxs("button", { type: "button", className: styles$14.showHideAll, title: "Show/Hide all PNRs", onClick: toggleExpandAll, disabled: multiPnrIds.length === 0, "data-test": "agent-gtr-toggle-all", children: [allExpanded ? jsx(ChevronUpIcon, { size: 16 }) : jsx(ChevronDownIcon$1, { size: 16 }), jsx("span", { children: allExpanded ? 'Collapse all PNRs' : 'Expand all PNRs' })] }), jsxs("div", { className: styles$14.filters, children: [jsxs("label", { className: styles$14.filterField, children: [jsx("span", { children: "Filter by sport" }), jsxs("select", { value: sportFilter, onChange: (event) => setSportFilter(event.target.value), "data-test": "agent-gtr-sport-filter", children: [jsx("option", { value: "", children: "All Sports" }), sports.map((sport) => (jsx("option", { value: sport.code, children: sport.label }, sport.code)))] })] }), views.length > 0 && (jsxs("label", { className: styles$14.filterField, children: [jsx("span", { children: "Filter by view" }), jsxs("select", { value: viewFilter, onChange: (event) => setViewFilter(event.target.value), "data-test": "agent-gtr-view-filter", children: [jsx("option", { value: "", children: "All Accounts" }), views.map((view) => (jsx("option", { value: view.id, children: view.label }, view.id)))] })] }))] })] }), jsx("div", { className: styles$14.tableScroll, children: jsxs("table", { className: styles$14.table, children: [jsx("thead", { children: jsxs("tr", { children: [jsx("th", { className: styles$14.colExpand, children: jsx("span", { className: "sr-only", children: "Expand" }) }), jsx("th", { children: "Source" }), jsx("th", { children: "Master Trip" }), jsx("th", { children: "ID" }), jsx("th", { children: "Start Date" }), jsx("th", { children: "Name" }), jsx("th", { children: "Sport" }), jsxs("th", { children: [jsx(PlaneIcon$3, { size: 16 }), jsx("span", { className: "sr-only", children: "Carrier" })] }), jsx("th", { children: "Routing" }), jsx("th", { children: "Submitted" }), jsx("th", { children: "Type" }), jsx("th", { children: "Quote Sent" }), jsx("th", { children: "Confirmation" }), jsx("th", { children: "Deposit" }), jsx("th", { children: "Utilization" }), jsx("th", { children: "Names" }), jsx("th", { children: "Ticketing" }), jsx("th", { children: "PNR" }), jsx("th", { className: styles$14.colDelete, children: jsx("span", { className: "sr-only", children: "Delete" }) })] }) }), jsxs("tbody", { children: [!groups.length && (jsx("tr", { children: jsx("td", { colSpan: COLUMN_COUNT, className: styles$14.empty, "data-test": "agent-gtr-empty", children: "No open group travel requests match these filters." }) })), groups.map((group) => (jsxs(Fragment$1, { children: [jsx("tr", { className: styles$14.accountRow, children: jsx("td", { colSpan: COLUMN_COUNT, children: group.accountName }) }), group.items.map((request) => {
|
|
3293
3341
|
const isMulti = request.pnrs.length > 1;
|
|
3294
3342
|
const isExpanded = expandedIds.has(request.id);
|
|
3295
3343
|
const startSoon = daysUntil(request.startDate, today) < 8;
|
|
3296
|
-
return (jsxs(Fragment$1, { children: [jsxs("tr", { className: styles$
|
|
3297
|
-
})] }, `account-${group.accountName}`)))] })] }) }), jsx("p", { className: styles$
|
|
3344
|
+
return (jsxs(Fragment$1, { children: [jsxs("tr", { className: styles$14.requestRow, "data-test": "agent-gtr-row", children: [jsx("td", { className: styles$14.colExpand, children: isMulti && (jsx("button", { type: "button", className: styles$14.expander, "aria-expanded": isExpanded, "aria-label": `${isExpanded ? 'Collapse' : 'Expand'} PNRs for ${request.name}`, onClick: () => toggleExpanded(request.id), "data-test": "agent-gtr-expand-row", children: isExpanded ? jsx(ChevronDownIcon$1, { size: 16 }) : jsx(ChevronRightIcon$1, { size: 16 }) })) }), jsx("td", { children: request.source === 'client' ? 'C' : 'A' }), jsx("td", { children: request.masterTripId ? (jsx("button", { type: "button", className: styles$14.iconButton, "aria-label": `View master trip ${request.masterTripId}`, title: `View Master Trip ${request.masterTripId}`, onClick: () => onViewMasterTrip?.(request.masterTripId), children: jsx(SearchIcon$1, { size: 16 }) })) : (jsx("span", { className: styles$14.muted, children: "\u2014" })) }), jsx("td", { children: jsx("button", { type: "button", className: [styles$14.idLink, request.notes ? styles$14.hasNotes : ''].filter(Boolean).join(' '), title: request.notes || undefined, onClick: () => onOpenRequest?.(request.id), "data-test": "agent-gtr-open-request", children: request.id }) }), jsx("td", { className: startSoon ? styles$14.startSoon : '', children: formatShortDate$1(request.startDate) }), jsx("td", { children: truncate(request.name) }), jsx("td", { children: truncate(request.sport) }), jsx("td", { children: isMulti ? 'Multi' : request.carrier || '' }), jsx("td", { children: isMulti ? 'Multi' : request.routing }), jsx("td", { className: styles$14.colDate, children: jsx(Datepicker, { "aria-label": `Submitted date for request ${request.id}`, size: "sm", value: dateEdits[request.id]?.submittedDate ?? request.submittedDate ?? '', onChange: (event) => handleSubmittedDateChange(request.id, event.target.value), "data-test": "agent-gtr-submitted-date" }) }), jsx("td", { children: computeTravelTypeCodes(request).join(', ') }), jsx("td", { className: styles$14.colDate, children: jsx(Datepicker, { "aria-label": `Quote sent date for request ${request.id}`, size: "sm", value: dateEdits[request.id]?.quoteSentDate ?? request.quoteSentDate ?? '', onChange: (event) => handleQuoteSentDateChange(request.id, event.target.value), "data-test": "agent-gtr-quote-sent-date" }) }), DUE_FIELDS.map(({ field }) => (jsx("td", { children: jsx(DueStatusCell, { status: request[field], today: today, onToggle: onToggleDueStatus ? () => onToggleDueStatus(request.id, field) : undefined }) }, field))), jsx("td", { children: isMulti ? (jsx(PnrButton, { label: "Multi", tone: groupPnrTone(request.pnrs), onClick: () => toggleExpanded(request.id), dataTest: "agent-gtr-pnr-multi" })) : (jsx(PnrButton, { label: request.pnrs[0].recordLocator.toUpperCase(), tone: pnrTone(request.pnrs[0]), onClick: () => handleCopyPnr(request.pnrs[0].recordLocator), dataTest: "agent-gtr-pnr" })) }), jsx("td", { className: styles$14.colDelete, children: !isMulti && onDeleteRequest && (jsx("button", { type: "button", className: styles$14.deleteButton, "aria-label": `Delete request ${request.id}`, title: "Click to delete this trip", onClick: () => onDeleteRequest(request.id), "data-test": "agent-gtr-delete", children: jsx(TrashIcon$2, { size: 16 }) })) })] }), isMulti && isExpanded && (jsx("tr", { className: styles$14.subPnrRow, children: jsx("td", { colSpan: COLUMN_COUNT, children: jsx("div", { className: styles$14.subPnrPanel, "data-test": "agent-gtr-sub-pnrs", children: request.pnrs.map((pnr) => (jsx(PnrButton, { label: pnr.recordLocator.toUpperCase(), tone: pnrTone(pnr), onClick: () => handleCopyPnr(pnr.recordLocator), dataTest: "agent-gtr-sub-pnr" }, pnr.id))) }) }) }))] }, request.id));
|
|
3345
|
+
})] }, `account-${group.accountName}`)))] })] }) }), jsx("p", { className: styles$14.legend, children: "Types: A - Airline C - Car, H - Hotel" })] }));
|
|
3298
3346
|
};
|
|
3299
3347
|
|
|
3300
|
-
var styles$
|
|
3348
|
+
var styles$13 = {"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"};
|
|
3301
3349
|
|
|
3302
3350
|
/**
|
|
3303
3351
|
* Sidenav component for main navigation.
|
|
@@ -3306,8 +3354,8 @@ var styles$12 = {"sidenav":"Sidenav-module_sidenav__9DKVg","expanded":"Sidenav-m
|
|
|
3306
3354
|
const Sidenav = ({ logo, logoCollapsed, items, activeKey, onItemClick, defaultExpanded = true, footer, className = '', ...props }) => {
|
|
3307
3355
|
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
3308
3356
|
const classNames = [
|
|
3309
|
-
styles$
|
|
3310
|
-
expanded ? styles$
|
|
3357
|
+
styles$13.sidenav,
|
|
3358
|
+
expanded ? styles$13.expanded : styles$13.collapsed,
|
|
3311
3359
|
className,
|
|
3312
3360
|
]
|
|
3313
3361
|
.filter(Boolean)
|
|
@@ -3320,20 +3368,20 @@ const Sidenav = ({ logo, logoCollapsed, items, activeKey, onItemClick, defaultEx
|
|
|
3320
3368
|
onItemClick(item.key);
|
|
3321
3369
|
}
|
|
3322
3370
|
};
|
|
3323
|
-
return (jsxs("aside", { className: classNames, ...props, children: [jsx("button", { className: styles$
|
|
3371
|
+
return (jsxs("aside", { className: classNames, ...props, children: [jsx("button", { className: styles$13.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$13.logoContainer, children: expanded ? logo : logoCollapsed || logo }), jsx("nav", { className: styles$13.nav, children: items.map((item) => {
|
|
3324
3372
|
const isActive = item.key === activeKey;
|
|
3325
3373
|
const itemClasses = [
|
|
3326
|
-
styles$
|
|
3327
|
-
isActive ? styles$
|
|
3374
|
+
styles$13.navItem,
|
|
3375
|
+
isActive ? styles$13.active : '',
|
|
3328
3376
|
]
|
|
3329
3377
|
.filter(Boolean)
|
|
3330
3378
|
.join(' ');
|
|
3331
|
-
return (jsxs("button", { className: itemClasses, onClick: () => handleItemClick(item), "aria-current": isActive ? 'page' : undefined, title: !expanded ? item.label : undefined, children: [jsx("span", { className: styles$
|
|
3332
|
-
}) }), footer && jsx("div", { className: styles$
|
|
3379
|
+
return (jsxs("button", { className: itemClasses, onClick: () => handleItemClick(item), "aria-current": isActive ? 'page' : undefined, title: !expanded ? item.label : undefined, children: [jsx("span", { className: styles$13.icon, children: item.icon }), expanded && jsx("span", { className: styles$13.label, children: item.label })] }, item.key));
|
|
3380
|
+
}) }), footer && jsx("div", { className: styles$13.footer, children: footer })] }));
|
|
3333
3381
|
};
|
|
3334
3382
|
Sidenav.displayName = 'Sidenav';
|
|
3335
3383
|
|
|
3336
|
-
var styles$
|
|
3384
|
+
var styles$12 = {"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"};
|
|
3337
3385
|
|
|
3338
3386
|
/**
|
|
3339
3387
|
* Topbar component for the main header.
|
|
@@ -3344,7 +3392,7 @@ const Topbar = ({ account, accounts, onAccountSelect, onAccountClick, actions, l
|
|
|
3344
3392
|
const [searchQuery, setSearchQuery] = useState('');
|
|
3345
3393
|
const dropdownRef = useRef(null);
|
|
3346
3394
|
const searchInputRef = useRef(null);
|
|
3347
|
-
const classNames = [styles$
|
|
3395
|
+
const classNames = [styles$12.topbar, className].filter(Boolean).join(' ');
|
|
3348
3396
|
// Close dropdown on outside click
|
|
3349
3397
|
useEffect(() => {
|
|
3350
3398
|
if (!isOpen)
|
|
@@ -3393,27 +3441,27 @@ const Topbar = ({ account, accounts, onAccountSelect, onAccountClick, actions, l
|
|
|
3393
3441
|
const filteredAccounts = accounts?.filter(acc => acc.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
|
3394
3442
|
acc.code.toLowerCase().includes(searchQuery.toLowerCase())) || [];
|
|
3395
3443
|
const hasDropdown = accounts && accounts.length > 0;
|
|
3396
|
-
return (jsxs("header", { className: classNames, ...props, children: [jsxs("div", { className: styles$
|
|
3444
|
+
return (jsxs("header", { className: classNames, ...props, children: [jsxs("div", { className: styles$12.left, children: [leftContent, account && (jsxs("div", { className: styles$12.accountWrapper, ref: dropdownRef, children: [jsxs("button", { className: `${styles$12.accountSelector} ${isOpen ? styles$12.open : ''}`, onClick: handleToggle, "aria-expanded": isOpen, "aria-haspopup": hasDropdown ? 'listbox' : undefined, children: [jsx("span", { className: styles$12.accountCode, children: account.code }), jsx("span", { className: styles$12.accountName, children: account.name }), hasDropdown && (jsx(ChevronDownIcon$1, { size: 16, className: `${styles$12.chevron} ${isOpen ? styles$12.chevronOpen : ''}` }))] }), isOpen && hasDropdown && (jsxs("div", { className: styles$12.dropdown, role: "listbox", children: [jsxs("div", { className: styles$12.dropdownSearch, children: [jsxs("svg", { className: styles$12.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$12.searchInput })] }), jsx("div", { className: styles$12.dropdownList, children: filteredAccounts.length > 0 ? (filteredAccounts.map((acc) => (jsxs("button", { className: `${styles$12.dropdownItem} ${acc.code === account.code ? styles$12.selected : ''}`, onClick: () => handleSelectAccount(acc), role: "option", "aria-selected": acc.code === account.code, children: [jsx("span", { className: styles$12.dropdownItemCode, children: acc.code }), jsx("span", { className: styles$12.dropdownItemName, children: acc.name })] }, acc.code)))) : (jsx("div", { className: styles$12.noResults, children: "No accounts found" })) })] }))] }))] }), actions && jsx("div", { className: styles$12.actions, children: actions })] }));
|
|
3397
3445
|
};
|
|
3398
3446
|
Topbar.displayName = 'Topbar';
|
|
3399
3447
|
|
|
3400
|
-
var styles$
|
|
3448
|
+
var styles$11 = {"appLayout":"AppLayout-module_appLayout__NFbZk","mainArea":"AppLayout-module_mainArea__t-6oq","content":"AppLayout-module_content__5kV7S"};
|
|
3401
3449
|
|
|
3402
3450
|
const AppLayout = ({ navItems = [], activeNavKey, logo, collapsedLogo, account, defaultExpanded = true, onNavItemClick, onAccountClick, children, navFooter, topbarActions, className, }) => {
|
|
3403
|
-
return (jsxs("div", { className: `${styles$
|
|
3451
|
+
return (jsxs("div", { className: `${styles$11.appLayout} ${className || ''}`, children: [jsx(Sidenav, { items: navItems, activeKey: activeNavKey, defaultExpanded: defaultExpanded, onItemClick: onNavItemClick, logo: logo, logoCollapsed: collapsedLogo, footer: navFooter }), jsxs("div", { className: styles$11.mainArea, children: [jsx(Topbar, { account: account, onAccountClick: onAccountClick, actions: topbarActions }), jsx("main", { className: styles$11.content, children: children })] })] }));
|
|
3404
3452
|
};
|
|
3405
3453
|
|
|
3406
|
-
var styles
|
|
3454
|
+
var styles$10 = {"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"};
|
|
3407
3455
|
|
|
3408
3456
|
/**
|
|
3409
3457
|
* Card component for grouping related content.
|
|
3410
3458
|
*/
|
|
3411
3459
|
const Card = forwardRef(({ variant = 'default', padding = 'md', interactive = false, className = '', children, ...props }, ref) => {
|
|
3412
3460
|
const classNames = [
|
|
3413
|
-
styles
|
|
3414
|
-
styles
|
|
3415
|
-
styles
|
|
3416
|
-
interactive ? styles
|
|
3461
|
+
styles$10.card,
|
|
3462
|
+
styles$10[variant],
|
|
3463
|
+
styles$10[`padding-${padding}`],
|
|
3464
|
+
interactive ? styles$10.interactive : '',
|
|
3417
3465
|
className,
|
|
3418
3466
|
]
|
|
3419
3467
|
.filter(Boolean)
|
|
@@ -3422,22 +3470,22 @@ const Card = forwardRef(({ variant = 'default', padding = 'md', interactive = fa
|
|
|
3422
3470
|
});
|
|
3423
3471
|
Card.displayName = 'Card';
|
|
3424
3472
|
const CardHeader = ({ title, subtitle, actions, className = '', children, ...props }) => {
|
|
3425
|
-
const classNames = [styles
|
|
3426
|
-
return (jsxs("div", { className: classNames, ...props, children: [jsxs("div", { className: styles
|
|
3473
|
+
const classNames = [styles$10.header, className].filter(Boolean).join(' ');
|
|
3474
|
+
return (jsxs("div", { className: classNames, ...props, children: [jsxs("div", { className: styles$10.headerContent, children: [title && jsx("h3", { className: styles$10.title, children: title }), subtitle && jsx("p", { className: styles$10.subtitle, children: subtitle }), children] }), actions && jsx("div", { className: styles$10.actions, children: actions })] }));
|
|
3427
3475
|
};
|
|
3428
3476
|
CardHeader.displayName = 'CardHeader';
|
|
3429
3477
|
const CardBody = ({ className = '', children, ...props }) => {
|
|
3430
|
-
const classNames = [styles
|
|
3478
|
+
const classNames = [styles$10.body, className].filter(Boolean).join(' ');
|
|
3431
3479
|
return (jsx("div", { className: classNames, ...props, children: children }));
|
|
3432
3480
|
};
|
|
3433
3481
|
CardBody.displayName = 'CardBody';
|
|
3434
3482
|
const CardFooter = ({ className = '', children, ...props }) => {
|
|
3435
|
-
const classNames = [styles
|
|
3483
|
+
const classNames = [styles$10.footer, className].filter(Boolean).join(' ');
|
|
3436
3484
|
return (jsx("div", { className: classNames, ...props, children: children }));
|
|
3437
3485
|
};
|
|
3438
3486
|
CardFooter.displayName = 'CardFooter';
|
|
3439
3487
|
|
|
3440
|
-
var styles
|
|
3488
|
+
var styles$$ = {"email":"CharterSourcingEmailPreview-module_email__KlhIq","preheader":"CharterSourcingEmailPreview-module_preheader__04juv","visuallyHidden":"CharterSourcingEmailPreview-module_visuallyHidden__Qgs3N","layoutTable":"CharterSourcingEmailPreview-module_layoutTable__dEH4i","brandCell":"CharterSourcingEmailPreview-module_brandCell__xvKZF","bodyCell":"CharterSourcingEmailPreview-module_bodyCell__glIXA","heading":"CharterSourcingEmailPreview-module_heading__ClFhy","stackCell":"CharterSourcingEmailPreview-module_stackCell__ut6ko","footerCell":"CharterSourcingEmailPreview-module_footerCell__4PwiB"};
|
|
3441
3489
|
|
|
3442
3490
|
const VARIANT_CONTENT = {
|
|
3443
3491
|
'admin-review': {
|
|
@@ -3774,11 +3822,11 @@ const CharterSourcingEmailPreview = (props) => {
|
|
|
3774
3822
|
['Return Date', quote.returnDate],
|
|
3775
3823
|
['Submitted By', quote.submittedBy],
|
|
3776
3824
|
];
|
|
3777
|
-
return (jsxs("article", { className: [styles
|
|
3825
|
+
return (jsxs("article", { className: [styles$$.email, styles$$[variant], className].filter(Boolean).join(' '), "aria-labelledby": headingId, "data-test": `charter-sourcing-email-${variant}`, children: [jsx("span", { className: styles$$.preheader, "aria-hidden": "true", "data-test": "charter-sourcing-email-preheader", children: content.preheader }), jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "600", className: styles$$.layoutTable, style: EMAIL_STYLE.layout, "data-test": "charter-sourcing-email-layout", children: jsxs("tbody", { children: [jsx("tr", { children: jsx("td", { className: styles$$.brandCell, style: EMAIL_STYLE.brandCell, children: jsx("header", { "data-test": "charter-sourcing-email-brand", children: jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", children: jsx("tbody", { children: jsxs("tr", { children: [jsx("td", { width: "54", style: { padding: 0, verticalAlign: 'middle' }, children: jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "42", style: EMAIL_STYLE.brandMarkTable, children: jsx("tbody", { children: jsx("tr", { children: jsx("td", { style: EMAIL_STYLE.brandMarkCell, "aria-hidden": "true", children: jsx(PlaneIcon$3, { size: 22 }) }) }) }) }) }), jsxs("td", { style: EMAIL_STYLE.brandCopyCell, children: [jsx("strong", { style: EMAIL_STYLE.brandName, children: "STM" }), jsx("br", {}), jsx("span", { style: EMAIL_STYLE.brandProduct, children: "Charters" })] })] }) }) }) }) }) }), jsx("tr", { children: jsxs("td", { className: styles$$.bodyCell, style: EMAIL_STYLE.bodyCell, "data-test": "charter-sourcing-email-body", children: [jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "48", style: { ...EMAIL_STYLE.statusTable, backgroundColor: theme.statusBackground }, children: jsx("tbody", { children: jsx("tr", { children: jsx("td", { style: { ...EMAIL_STYLE.statusCell, color: theme.accent }, "aria-hidden": "true", children: jsx(StatusIcon, { size: 24 }) }) }) }) }), jsx("p", { style: { ...EMAIL_STYLE.eyebrow, color: theme.accent }, "data-test": "charter-sourcing-email-status", children: content.eyebrow }), jsx("h1", { id: headingId, className: styles$$.heading, style: EMAIL_STYLE.heading, "data-test": "charter-sourcing-email-heading", children: content.heading }), jsx("p", { style: EMAIL_STYLE.greeting, children: "Hello," }), jsx("p", { style: EMAIL_STYLE.opening, children: content.opening }), jsxs("section", { style: EMAIL_STYLE.summary, "aria-labelledby": summaryHeadingId, children: [jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", style: EMAIL_STYLE.routeTable, "data-test": "charter-sourcing-email-route", children: jsx("tbody", { children: jsxs("tr", { children: [jsx("td", { className: styles$$.stackCell, style: EMAIL_STYLE.routeLabel, children: "Trip route" }), jsx("td", { className: styles$$.stackCell, style: EMAIL_STYLE.routeValue, children: present(route) })] }) }) }), jsx("h2", { id: summaryHeadingId, className: styles$$.visuallyHidden, children: "Quote details" }), jsx("table", { cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", style: EMAIL_STYLE.detailTable, "aria-labelledby": summaryHeadingId, "data-test": "charter-sourcing-email-summary", children: jsxs("tbody", { children: [detailFields.map(([label, value]) => (jsxs("tr", { "data-test": "charter-sourcing-email-summary-field", children: [jsx("th", { scope: "row", style: EMAIL_STYLE.detailLabel, children: label }), jsx("td", { style: EMAIL_STYLE.detailValue, children: present(value) })] }, label))), quote.totalCost !== undefined && (jsxs("tr", { "data-test": "charter-sourcing-email-total", children: [jsx("th", { scope: "row", style: { ...EMAIL_STYLE.detailLabel, ...EMAIL_STYLE.totalLabel }, children: "Total Cost" }), jsx("td", { style: { ...EMAIL_STYLE.detailValue, ...EMAIL_STYLE.totalValue }, children: present(quote.totalCost) })] }))] }) })] }), variant === 'submitter-updated' && (jsxs("section", { "data-test": "charter-sourcing-email-changes", children: [jsx("h2", { style: EMAIL_STYLE.changesHeading, children: "What changed" }), jsxs("table", { cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", style: EMAIL_STYLE.changesTable, children: [jsx("caption", { className: styles$$.visuallyHidden, children: "Fields changed by the Charter Sourcing administrator" }), jsx("thead", { children: jsxs("tr", { children: [jsx("th", { scope: "col", style: { ...EMAIL_STYLE.changesHeader, width: '40%' }, children: "Field" }), jsx("th", { scope: "col", style: { ...EMAIL_STYLE.changesHeader, width: '30%' }, children: "Previous" }), jsx("th", { scope: "col", style: { ...EMAIL_STYLE.changesHeader, width: '30%' }, children: "Updated" })] }) }), jsx("tbody", { children: changes.map((change, index) => (jsxs("tr", { "data-test": "charter-sourcing-email-change", children: [jsx("th", { scope: "row", style: EMAIL_STYLE.changesRowHeader, children: change.label }), jsx("td", { style: { ...EMAIL_STYLE.changesValue, ...EMAIL_STYLE.previousValue }, children: present(change.previousValue) }), jsx("td", { style: { ...EMAIL_STYLE.changesValue, ...EMAIL_STYLE.updatedValue }, children: present(change.updatedValue) })] }, `${change.label}-${index}`))) })] })] })), jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", style: EMAIL_STYLE.requestTable, children: jsx("tbody", { children: jsxs("tr", { children: [jsx("td", { className: styles$$.stackCell, style: EMAIL_STYLE.requestLabel, children: "Request ID" }), jsx("td", { className: styles$$.stackCell, style: EMAIL_STYLE.requestValue, "data-test": "charter-sourcing-email-request-id", children: present(quote.requestId) })] }) }) }), jsxs("p", { style: EMAIL_STYLE.signoff, children: ["Thanks,", jsx("br", {}), jsx("strong", { children: "STM Charters Team" })] }), testServerOriginalRecipient && (jsx("aside", { "data-test": "charter-sourcing-email-test-notice", children: jsx("table", { role: "presentation", cellPadding: 0, cellSpacing: 0, border: 0, width: "100%", style: EMAIL_STYLE.noticeTable, children: jsx("tbody", { children: jsx("tr", { children: jsxs("td", { style: EMAIL_STYLE.noticeCell, children: [jsx("strong", { children: "Test server delivery" }), jsx("br", {}), jsx("span", { children: "This message may not represent an actual charter quote." }), jsx("br", {}), jsxs("span", { children: ["Original recipient: ", testServerOriginalRecipient] })] }) }) }) }) }))] }) }), jsx("tr", { children: jsx("td", { className: styles$$.footerCell, style: EMAIL_STYLE.footerCell, children: jsxs("footer", { "data-test": "charter-sourcing-email-footer", children: [jsx("p", { style: EMAIL_STYLE.footerParagraph, children: "This transactional message was sent by STM Charters." }), jsx("p", { style: EMAIL_STYLE.footerParagraph, children: "Reply to contact the Charter Sourcing team." })] }) }) })] }) })] }));
|
|
3778
3826
|
};
|
|
3779
3827
|
CharterSourcingEmailPreview.displayName = 'CharterSourcingEmailPreview';
|
|
3780
3828
|
|
|
3781
|
-
var styles$
|
|
3829
|
+
var styles$_ = {"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"};
|
|
3782
3830
|
|
|
3783
3831
|
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" })] }));
|
|
3784
3832
|
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" })] }));
|
|
@@ -3789,18 +3837,18 @@ const PlusIcon$1 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0
|
|
|
3789
3837
|
*/
|
|
3790
3838
|
const ContactList = ({ title = 'Contacts', tooltip, contacts, onEdit, onRemove, onAdd, showAdd = true, addLabel = 'Add Contact', alert, className = '', }) => {
|
|
3791
3839
|
const listClasses = [
|
|
3792
|
-
styles$
|
|
3840
|
+
styles$_.container,
|
|
3793
3841
|
className,
|
|
3794
3842
|
].filter(Boolean).join(' ');
|
|
3795
|
-
return (jsxs("div", { className: listClasses, children: [alert && (jsx("div", { className: styles$
|
|
3843
|
+
return (jsxs("div", { className: listClasses, children: [alert && (jsx("div", { className: styles$_.alert, children: alert })), jsxs("div", { className: styles$_.card, children: [jsx("div", { className: styles$_.header, children: jsxs("div", { className: styles$_.titleRow, children: [jsx("h3", { className: styles$_.title, children: title }), tooltip && (jsx("span", { className: styles$_.tooltip, children: jsx(InfoIcon, {}) }))] }) }), jsxs("div", { className: styles$_.list, children: [contacts.map((contact) => (jsxs("div", { className: styles$_.contactItem, children: [jsxs("div", { className: styles$_.contactInfo, children: [jsxs("div", { className: styles$_.contactName, children: [contact.name, contact.isPrimary && (jsx("span", { className: styles$_.badge, children: "Primary" })), contact.isSecondary && (jsx("span", { className: `${styles$_.badge} ${styles$_.badgeSecondary}`, children: "Secondary" }))] }), contact.role && (jsx("div", { className: styles$_.contactRole, children: contact.role })), jsxs("div", { className: styles$_.contactDetails, children: [contact.email && (jsx("a", { href: `mailto:${contact.email}`, className: styles$_.contactLink, children: contact.email })), contact.phone && (jsx("span", { className: styles$_.contactPhone, children: contact.phone }))] })] }), jsxs("div", { className: styles$_.contactActions, children: [onEdit && (jsx("button", { type: "button", className: styles$_.actionButton, onClick: () => onEdit(contact), "aria-label": "Edit contact", children: jsx(EditIcon$1, {}) })), onRemove && (jsx("button", { type: "button", className: `${styles$_.actionButton} ${styles$_.actionButtonDanger}`, onClick: () => onRemove(contact), "aria-label": "Remove contact", children: jsx(TrashIcon$1, {}) }))] })] }, contact.id))), contacts.length === 0 && (jsx("div", { className: styles$_.empty, children: "No contacts added" }))] }), showAdd && onAdd && (jsx("div", { className: styles$_.footer, children: jsxs("button", { type: "button", className: styles$_.addButton, onClick: onAdd, children: [jsx(PlusIcon$1, {}), addLabel] }) }))] })] }));
|
|
3796
3844
|
};
|
|
3797
3845
|
ContactList.displayName = 'ContactList';
|
|
3798
3846
|
|
|
3799
|
-
var styles$
|
|
3847
|
+
var styles$Z = {"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"};
|
|
3800
3848
|
|
|
3801
|
-
const DrawerHeader = ({ title, children, showClose = true, onClose, className = '', }) => (jsxs("div", { className: `${styles$
|
|
3802
|
-
const DrawerBody = ({ children, className = '' }) => (jsx("div", { className: `${styles$
|
|
3803
|
-
const DrawerFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$
|
|
3849
|
+
const DrawerHeader = ({ title, children, showClose = true, onClose, className = '', }) => (jsxs("div", { className: `${styles$Z.header} ${className}`, children: [jsxs("div", { className: styles$Z.headerContent, children: [title && jsx("h2", { className: styles$Z.title, children: title }), children] }), showClose && (jsx("button", { type: "button", className: styles$Z.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" }) }) }))] }));
|
|
3850
|
+
const DrawerBody = ({ children, className = '' }) => (jsx("div", { className: `${styles$Z.body} ${className}`, children: children }));
|
|
3851
|
+
const DrawerFooter = ({ children, className = '' }) => (jsx("div", { className: `${styles$Z.footer} ${className}`, children: children }));
|
|
3804
3852
|
const Drawer = ({ isOpen, onClose, position = 'right', size = 'md', children, closeOnBackdropClick = true, closeOnEscape = true, showBackdrop = true, className = '', }) => {
|
|
3805
3853
|
const handleEscape = useCallback((e) => {
|
|
3806
3854
|
if (closeOnEscape && e.key === 'Escape') {
|
|
@@ -3828,7 +3876,7 @@ const Drawer = ({ isOpen, onClose, position = 'right', size = 'md', children, cl
|
|
|
3828
3876
|
const customSize = isNamed ? undefined : size;
|
|
3829
3877
|
if (!isOpen)
|
|
3830
3878
|
return null;
|
|
3831
|
-
return (jsxs("div", { className: styles$
|
|
3879
|
+
return (jsxs("div", { className: styles$Z.container, children: [showBackdrop && (jsx("div", { className: `${styles$Z.backdrop} ${isOpen ? styles$Z.backdropOpen : ''}`, onClick: handleBackdropClick })), jsx("div", { className: `${styles$Z.drawer} ${styles$Z[position]} ${namedSize ? styles$Z[`size${namedSize.charAt(0).toUpperCase()}${namedSize.slice(1)}`] : ''} ${isOpen ? styles$Z.drawerOpen : ''} ${className}`, style: customSize ? (position === 'left' || position === 'right' ? { width: customSize } : { height: customSize }) : undefined, role: "dialog", "aria-modal": "true", children: React.Children.map(children, (child) => {
|
|
3832
3880
|
if (React.isValidElement(child) && child.type === DrawerHeader) {
|
|
3833
3881
|
return React.cloneElement(child, {
|
|
3834
3882
|
onClose,
|
|
@@ -3841,7 +3889,7 @@ Drawer.Header = DrawerHeader;
|
|
|
3841
3889
|
Drawer.Body = DrawerBody;
|
|
3842
3890
|
Drawer.Footer = DrawerFooter;
|
|
3843
3891
|
|
|
3844
|
-
var styles$
|
|
3892
|
+
var styles$Y = {"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","readOnlyStatus":"DueDatesDrawer-module_readOnlyStatus__23fdg"};
|
|
3845
3893
|
|
|
3846
3894
|
const isTravelDueDateCompleted = (item) => item.status.trim().toLowerCase() === 'completed' || !!item.completeddatetime;
|
|
3847
3895
|
const isTravelDueDateOverdue = (item) => !item.completeddatetime && !!item.pastdue;
|
|
@@ -3858,7 +3906,7 @@ const DueDateCard$1 = ({ item, onToggle, onTaskClick }) => {
|
|
|
3858
3906
|
const completed = isTravelDueDateCompleted(item);
|
|
3859
3907
|
const dueDate = parseLocalDate$1(item.duedate);
|
|
3860
3908
|
const pastDue = !!dueDate && dueDate < new Date() && !completed;
|
|
3861
|
-
return (jsxs("article", { className: styles$
|
|
3909
|
+
return (jsxs("article", { className: styles$Y.card, children: [jsxs("div", { className: styles$Y.cardTitle, children: [onToggle ? (jsx("button", { type: "button", "aria-label": `${completed ? 'Reopen' : 'Complete'} ${item.tasktitle}`, className: [styles$Y.status, completed ? styles$Y.completed : pastDue ? styles$Y.pastDue : ''].filter(Boolean).join(' '), onClick: () => onToggle(item), "data-test": `due-date-toggle-${item.taskid}`, children: completed ? jsx(CheckIcon$2, { size: 12 }) : null })) : (jsx("span", { "aria-label": `${completed ? 'Completed' : pastDue ? 'Past due' : 'Incomplete'}: ${item.tasktitle}`, className: [styles$Y.status, styles$Y.readOnlyStatus, completed ? styles$Y.completed : pastDue ? styles$Y.pastDue : ''].filter(Boolean).join(' '), "data-test": `due-date-status-${item.taskid}`, children: completed ? jsx(CheckIcon$2, { size: 12 }) : null })), jsx("h5", { children: item.tasktitle })] }), item.description && jsx("p", { children: item.description }), jsxs("div", { className: styles$Y.tags, children: [jsx("span", { style: { backgroundColor: sportColor$1(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$Y.completion, children: [jsx(CheckIcon$2, { size: 14 }), jsxs("span", { children: [jsx("em", { children: "on" }), " ", formatDate$8(item.completeddatetime, { month: 'numeric', day: 'numeric', year: '2-digit' }), " ", jsx("em", { children: "by" }), " ", item.completedby] })] })] }));
|
|
3862
3910
|
};
|
|
3863
3911
|
/** Hub's searchable, status-aware due-dates drawer. */
|
|
3864
3912
|
const DueDatesDrawer = ({ isOpen, dueDates, selectedDate, selectedTrip, overdueOnly, onClose, onToggle, onTaskClick, className = '' }) => {
|
|
@@ -3870,9 +3918,32 @@ const DueDatesDrawer = ({ isOpen, dueDates, selectedDate, selectedTrip, overdueO
|
|
|
3870
3918
|
const matches = items.filter((item) => (!selectedTrip || item.masterTripGUID === String(selectedTrip)) && (!overdueOnly || isTravelDueDateOverdue(item)) && (!normalized || item.tasktitle.toLowerCase().includes(normalized) || item.sportCode.toLowerCase().includes(normalized) || item.description.toLowerCase().includes(normalized)));
|
|
3871
3919
|
return matches.length ? [[date, matches]] : [];
|
|
3872
3920
|
})), [dueDates, search, selectedDate, selectedTrip, overdueOnly]);
|
|
3873
|
-
return (jsxs("aside", { className: [styles$
|
|
3921
|
+
return (jsxs("aside", { className: [styles$Y.drawer, isOpen ? styles$Y.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$Y.body, children: [jsxs("label", { className: styles$Y.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$Y.empty, children: "No due dates found." }) : Object.entries(filtered).map(([date, items]) => (jsxs("section", { children: [jsx("h4", { children: formatDate$8(date, { month: 'long', day: 'numeric', year: 'numeric' }) }), jsx("div", { className: styles$Y.cards, children: items.map((item) => jsx(DueDateCard$1, { item: item, onToggle: onToggle, onTaskClick: onTaskClick }, `${date}-${item.taskid}`)) })] }, date)))] })] }));
|
|
3874
3922
|
};
|
|
3875
3923
|
|
|
3924
|
+
var styles$X = {"header":"GridHeaderRow-module_header__HaY4B","grid":"GridHeaderRow-module_grid__BvZkZ","heading":"GridHeaderRow-module_heading__fa7PW"};
|
|
3925
|
+
|
|
3926
|
+
/**
|
|
3927
|
+
* A grid heading strip on its own, without a table underneath it.
|
|
3928
|
+
*
|
|
3929
|
+
* GridTable renders its own headings and is the right answer whenever the
|
|
3930
|
+
* headings belong to the rows below them. This is for the cases where they do
|
|
3931
|
+
* not: two header strips side by side above one table, or a band that spans
|
|
3932
|
+
* several columns stacked over the real headings. Both need a heading row that
|
|
3933
|
+
* is not tied to a row set, which GridTable cannot express.
|
|
3934
|
+
*
|
|
3935
|
+
* Headings are plain text here, never sort controls — there are no rows to
|
|
3936
|
+
* sort. `sortable` on a column is ignored rather than rendering a button that
|
|
3937
|
+
* does nothing.
|
|
3938
|
+
*
|
|
3939
|
+
* Hidden below 768px, matching GridTable: at that width each row becomes a card
|
|
3940
|
+
* carrying its own labels, so a detached heading strip would caption nothing.
|
|
3941
|
+
*/
|
|
3942
|
+
function GridHeaderRow({ columns, gridTemplateColumns, above, below, className = '', style, }) {
|
|
3943
|
+
return (jsxs("div", { className: `${styles$X.header} ${className}`, style: style, "data-testid": "grid-header-row", children: [above, jsx("div", { className: styles$X.grid, style: { gridTemplateColumns }, role: "row", children: columns.map((column, i) => (jsxs("div", { role: "columnheader", className: `${styles$X.heading} ${column.labelClassName ?? ''}`, children: [column.icon, column.label, column.labelAs?.({ name: column.name })] }, column.name ?? i))) }), below] }));
|
|
3944
|
+
}
|
|
3945
|
+
GridHeaderRow.displayName = 'GridHeaderRow';
|
|
3946
|
+
|
|
3876
3947
|
var styles$W = {"table":"GridTable-module_table__eAyUR","grid":"GridTable-module_grid__Fas2-","header":"GridTable-module_header__Xlk1G","heading":"GridTable-module_heading__eQ0tp","sortable":"GridTable-module_sortable__3b0WI","headingInner":"GridTable-module_headingInner__mrWVH","headingIcon":"GridTable-module_headingIcon__0ezsg","sortIcon":"GridTable-module_sortIcon__pT9NY","body":"GridTable-module_body__rnNv7","row":"GridTable-module_row__5oYit","bordered":"GridTable-module_bordered__ONBuk","cellWrap":"GridTable-module_cellWrap__ioPRA","cell":"GridTable-module_cell__iciaC","value":"GridTable-module_value__qBeVT","stackedLabel":"GridTable-module_stackedLabel__snZdZ","empty":"GridTable-module_empty__sgW67","footer":"GridTable-module_footer__D-9Z4","totalCell":"GridTable-module_totalCell__zJPdZ","totalValue":"GridTable-module_totalValue__rqXX3"};
|
|
3877
3948
|
|
|
3878
3949
|
const ChevronUp = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: jsx("polyline", { points: "18 15 12 9 6 15" }) }));
|
|
@@ -15492,5 +15563,5 @@ const TripDetailPage = ({ header, airSegment, groundSegment, hotelSegment, files
|
|
|
15492
15563
|
};
|
|
15493
15564
|
TripDetailPage.displayName = 'TripDetailPage';
|
|
15494
15565
|
|
|
15495
|
-
export { ACMI_AIRCRAFT_OPTIONS, ACMI_CARRIER_OPTIONS, ACMI_INSURANCE_FLAT, Accordion, AcmiQuoteCalculator, AdministrationPage, AgentGroupTravelRequestsPage, AgentGroupTravelRequestsTable, AirSegment, Alert, AlertStyled, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, BID_TYPE_HEADINGS, Badge, BuildingIcon, BusIcon$2 as BusIcon, Button, ButtonStyled, CARRIER_CATERING_OPTIONS, CARRIER_CONTACT_TYPES, CHAMPIONSHIP_BID_TYPES, CHAMPIONSHIP_HEADINGS, CHARTER_CONTACT_GROUPS, CHARTER_SECTIONS, CalendarIcon$1 as CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon$1 as CarIcon, Card, CardBody, CardFooter, CardHeader, CarrierProfilePage, ChampionshipBidDetailPage, ChampionshipBidsPage, CharterBidResponsePage, CharterBidViewPage, CharterManifestPage, CharterSourcingEmailPreview, ChartersAccessManagementPage, ChartersHomePage, CheckIcon$2 as CheckIcon, Checkbox, ChevronDownIcon$1 as ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon$1 as ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactCard$1 as ContactCard, ContactList, ContactUsPage, CubeIcon, DOCUMENT_FILE_EXTENSIONS, DashboardIcon, DashboardPage, Datepicker, DetailList, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon$2 as EditIcon, EmptyState$1 as EmptyState, EyeIcon, FeatureFlagManagementPage, FieldLayout, FileUploadButton, FilterChip, FilterIcon$1 as FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GridTable, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_AGENTS_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HUB_OFF_FLEET_ITEM, HUB_SOURCING_ITEM, HUB_STM_CHARTERS_ITEM, HeadsetIcon, HomeIcon, HotelIcon$3 as HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, IndividualTravelRequestDetailPage, IndividualTravelRequestFormPage, InfoCenterPage, InfoIcon$1 as InfoIcon, InfoTile, Input, ItineraryPage, ItinerarySegmentCard, ItineraryTimeline, LightbulbIcon, LimoIcon, LockIcon$1 as LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, MultiUserSearch, NavItem, NotFoundPage, OFF_FLEET_LEARNED_DESCRIPTION, OFF_FLEET_LEARNED_EMPTY_COPY, OFF_FLEET_QUEUE_DESCRIPTION, OffFleetLearnedExamplesPage, OffFleetReviewQueuePage, OffFleetSubmissionDetailPage, PageBanners, PageHeader, Pagination, PhoneIcon, PlaneIcon$3 as PlaneIcon, PlusIcon$2 as PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, QuoteCostBreakdown, QuoteReviewActions, REGULAR_SEASON_BID_TYPES, RailIcon, RefreshIcon, RegularSeasonBidsPage, RegularSeasonBidsTable, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary$1 as RequestSummary, RosterProgramNumbersPage, RosterReportsPage, RosterToolbar, SOURCING_COST_CATEGORIES, SOURCING_COST_CATEGORY_LABELS, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon$1 as SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, SourcingQuoteDetailPage, SourcingReviewQueuePage, SourcingReviewQueueTable, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, TRIP_MONTH_OPTIONS, Table, Tag, TeamCalendarHeader, TeamCard, TeamContactsPanel, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleEditor, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarCardView, TeamTravelCalendarListView, TeamTravelCalendarPage, TeamTravelCalendarToolbar, TeamTravelCalendarView, TeamUserAccessForm, Textarea, ThemeProvider, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon$2 as TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon$1 as UsersIcon, WarningIcon$1 as WarningIcon, XIcon, absoluteFill, accentColors, alertTokens, boxShadow, brandColors, breakpoints, buildPaginationItems, buttonReset, computeLineItemTotal, computeQuoteTotals, computeTravelTypeCodes, css, darkTheme, lightTheme as defaultTheme, deriveProgramBidStatus, flexCenter, flexCol, flexRow, font, fontFamily, fontSize, fontWeight, formatCompactTripCost, formatItineraryDate, formatItineraryDateRange, formatItineraryMoney, formatTeamScheduleDueDate, formatTeamScheduleTravelDates, getCharterSourcingEmailRoute, getCharterSourcingEmailSubject, getPageCount, getSegmentDate, getSegmentStartMinutes, getSegmentTitle, getTeamTravelCalendarPeriodLabel, groupSegmentsByDay, isExpiringSoon, isProgramBiddable, isQuoteActionable, isTravelDueDateCompleted, isTravelDueDateOverdue, leading, lightTheme, lineClamp, lineHeight, matchesQuoteSearch, merge, moveTeamTravelCalendarPeriod, neutralColors, parseClockTime, parseItineraryDate, primaryColors, radius, rounded, semanticColors, shadow, size, space, spacing, srOnly, statusColors, styled, teamColors, textColors, toInlineStyle, trans, transition, truncate$1 as truncate, useTheme, weight };
|
|
15566
|
+
export { ACMI_AIRCRAFT_OPTIONS, ACMI_CARRIER_OPTIONS, ACMI_INSURANCE_FLAT, Accordion, AcmiQuoteCalculator, AdministrationPage, AgentGroupTravelRequestsPage, AgentGroupTravelRequestsTable, AirSegment, Alert, AlertStyled, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, BID_TYPE_HEADINGS, BackLink, Badge, BuildingIcon, BusIcon$2 as BusIcon, Button, ButtonStyled, CARRIER_CATERING_OPTIONS, CARRIER_CONTACT_TYPES, CHAMPIONSHIP_BID_TYPES, CHAMPIONSHIP_HEADINGS, CHARTER_CONTACT_GROUPS, CHARTER_SECTIONS, CalendarIcon$1 as CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon$1 as CarIcon, Card, CardBody, CardFooter, CardHeader, CarrierProfilePage, ChampionshipBidDetailPage, ChampionshipBidsPage, CharterBidResponsePage, CharterBidViewPage, CharterManifestPage, CharterSourcingEmailPreview, ChartersAccessManagementPage, ChartersHomePage, CheckIcon$2 as CheckIcon, Checkbox, ChevronDownIcon$1 as ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon$1 as ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactCard$1 as ContactCard, ContactList, ContactUsPage, CubeIcon, DOCUMENT_FILE_EXTENSIONS, DashboardIcon, DashboardPage, Datepicker, DetailList, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon$2 as EditIcon, EmptyState$1 as EmptyState, EyeIcon, FeatureFlagManagementPage, FieldLayout, FileUploadButton, FilterChip, FilterIcon$1 as FilterIcon, FormField, FormRow, FormSection, FormStack, GridHeaderRow, GridIcon, GridTable, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_AGENTS_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HUB_OFF_FLEET_ITEM, HUB_SOURCING_ITEM, HUB_STM_CHARTERS_ITEM, HeadsetIcon, HomeIcon, HotelIcon$3 as HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, IndividualTravelRequestDetailPage, IndividualTravelRequestFormPage, InfoCenterPage, InfoIcon$1 as InfoIcon, InfoTile, Input, ItineraryPage, ItinerarySegmentCard, ItineraryTimeline, LightbulbIcon, LimoIcon, LockIcon$1 as LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, MultiUserSearch, NavItem, NotFoundPage, OFF_FLEET_LEARNED_DESCRIPTION, OFF_FLEET_LEARNED_EMPTY_COPY, OFF_FLEET_QUEUE_DESCRIPTION, OffFleetLearnedExamplesPage, OffFleetReviewQueuePage, OffFleetSubmissionDetailPage, PageBanners, PageHeader, Pagination, PhoneIcon, PlaneIcon$3 as PlaneIcon, PlusIcon$2 as PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, QuoteCostBreakdown, QuoteReviewActions, REGULAR_SEASON_BID_TYPES, RailIcon, RefreshIcon, RegularSeasonBidsPage, RegularSeasonBidsTable, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary$1 as RequestSummary, ResultCount, RosterProgramNumbersPage, RosterReportsPage, RosterToolbar, SOURCING_COST_CATEGORIES, SOURCING_COST_CATEGORY_LABELS, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon$1 as SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, SourcingQuoteDetailPage, SourcingReviewQueuePage, SourcingReviewQueueTable, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, TRIP_MONTH_OPTIONS, Table, Tag, TeamCalendarHeader, TeamCard, TeamContactsPanel, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleEditor, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarCardView, TeamTravelCalendarListView, TeamTravelCalendarPage, TeamTravelCalendarToolbar, TeamTravelCalendarView, TeamUserAccessForm, Textarea, ThemeProvider, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon$2 as TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon$1 as UsersIcon, WarningIcon$1 as WarningIcon, XIcon, absoluteFill, accentColors, alertTokens, boxShadow, brandColors, breakpoints, buildPaginationItems, buttonReset, computeLineItemTotal, computeQuoteTotals, computeTravelTypeCodes, css, darkTheme, lightTheme as defaultTheme, deriveProgramBidStatus, flexCenter, flexCol, flexRow, font, fontFamily, fontSize, fontWeight, formatCompactTripCost, formatItineraryDate, formatItineraryDateRange, formatItineraryMoney, formatTeamScheduleDueDate, formatTeamScheduleTravelDates, getCharterSourcingEmailRoute, getCharterSourcingEmailSubject, getPageCount, getSegmentDate, getSegmentStartMinutes, getSegmentTitle, getTeamTravelCalendarPeriodLabel, groupSegmentsByDay, isExpiringSoon, isProgramBiddable, isQuoteActionable, isTravelDueDateCompleted, isTravelDueDateOverdue, leading, lightTheme, lineClamp, lineHeight, matchesQuoteSearch, merge, moveTeamTravelCalendarPeriod, neutralColors, parseClockTime, parseItineraryDate, primaryColors, radius, rounded, semanticColors, shadow, size, space, spacing, srOnly, statusColors, styled, teamColors, textColors, toInlineStyle, trans, transition, truncate$1 as truncate, useTheme, weight };
|
|
15496
15567
|
//# sourceMappingURL=index.esm.js.map
|