@shortstravelmgmt/component-lib 0.1.7 → 0.1.8
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 +20 -16
- package/dist/index.esm.js +227 -129
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +231 -133
- 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
|
@@ -7,12 +7,12 @@ const createIcon = (children, displayName) => {
|
|
|
7
7
|
return Icon;
|
|
8
8
|
};
|
|
9
9
|
// Travel / segment type icons
|
|
10
|
-
const PlaneIcon$
|
|
11
|
-
const CarIcon$
|
|
12
|
-
const HotelIcon$
|
|
10
|
+
const PlaneIcon$3 = createIcon(jsx("path", { d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z" }), 'PlaneIcon');
|
|
11
|
+
const CarIcon$1 = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2" }), jsx("circle", { cx: "7", cy: "17", r: "2" }), jsx("path", { d: "M9 17h6" }), jsx("circle", { cx: "17", cy: "17", r: "2" })] }), 'CarIcon');
|
|
12
|
+
const HotelIcon$3 = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M10 22v-6.57" }), jsx("path", { d: "M12 11h.01" }), jsx("path", { d: "M12 7h.01" }), jsx("path", { d: "M14 15.43V22" }), jsx("path", { d: "M15 16a5 5 0 0 0-6 0" }), jsx("path", { d: "M16 11h.01" }), jsx("path", { d: "M16 7h.01" }), jsx("path", { d: "M8 11h.01" }), jsx("path", { d: "M8 7h.01" }), jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2" })] }), 'HotelIcon');
|
|
13
13
|
const LimoIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8" }), jsx("path", { d: "M7 14h.01" }), jsx("path", { d: "M17 14h.01" }), jsx("rect", { width: "18", height: "8", x: "3", y: "10", rx: "2" }), jsx("path", { d: "M5 18v2" }), jsx("path", { d: "M19 18v2" })] }), 'LimoIcon');
|
|
14
14
|
const RailIcon = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M8 3.1V7a4 4 0 0 0 8 0V3.1" }), jsx("path", { d: "m9 15-1-1" }), jsx("path", { d: "m15 15 1-1" }), jsx("path", { d: "M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z" }), jsx("path", { d: "m8 19-2 3" }), jsx("path", { d: "m16 19 2 3" })] }), 'RailIcon');
|
|
15
|
-
const BusIcon$
|
|
15
|
+
const BusIcon$2 = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M8 6v6" }), jsx("path", { d: "M15 6v6" }), jsx("path", { d: "M2 12h19.6" }), jsx("path", { d: "M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3" }), jsx("circle", { cx: "7", cy: "18", r: "2" }), jsx("path", { d: "M9 18h5" }), jsx("circle", { cx: "16", cy: "18", r: "2" })] }), 'BusIcon');
|
|
16
16
|
// Control / chrome icons
|
|
17
17
|
const SearchIcon$1 = createIcon(jsxs(Fragment, { children: [jsx("circle", { cx: "11", cy: "11", r: "8" }), jsx("path", { d: "m21 21-4.3-4.3" })] }), 'SearchIcon');
|
|
18
18
|
const ChevronDownIcon$1 = createIcon(jsx("path", { d: "m6 9 6 6 6-6" }), 'ChevronDownIcon');
|
|
@@ -59,12 +59,12 @@ const LockIcon$1 = createIcon(jsxs(Fragment, { children: [jsx("rect", { width: "
|
|
|
59
59
|
const TrashIcon$2 = createIcon(jsxs(Fragment, { children: [jsx("path", { d: "M3 6h18" }), jsx("path", { d: "M8 6V4h8v2" }), jsx("path", { d: "m19 6-1 15H6L5 6" }), jsx("path", { d: "M10 11v5" }), jsx("path", { d: "M14 11v5" })] }), 'TrashIcon');
|
|
60
60
|
// Export all icons as a map for dynamic access
|
|
61
61
|
const Icons = {
|
|
62
|
-
Plane: PlaneIcon$
|
|
63
|
-
Car: CarIcon$
|
|
64
|
-
Hotel: HotelIcon$
|
|
62
|
+
Plane: PlaneIcon$3,
|
|
63
|
+
Car: CarIcon$1,
|
|
64
|
+
Hotel: HotelIcon$3,
|
|
65
65
|
Limo: LimoIcon,
|
|
66
66
|
Rail: RailIcon,
|
|
67
|
-
Bus: BusIcon$
|
|
67
|
+
Bus: BusIcon$2,
|
|
68
68
|
Search: SearchIcon$1,
|
|
69
69
|
ChevronDown: ChevronDownIcon$1,
|
|
70
70
|
ChevronUp: ChevronUpIcon,
|
|
@@ -1031,7 +1031,7 @@ const ServiceToggle = ({ label, icon, hasToggle = true, enabled = false, onToggl
|
|
|
1031
1031
|
onClick();
|
|
1032
1032
|
}
|
|
1033
1033
|
};
|
|
1034
|
-
return (jsxs("div", { className: styles$F.item, children: [jsxs("div", { className: `${styles$F.labelContainer} ${isClickable ? styles$F.clickable : ''}`, onClick: handleClick, children: [icon && jsx("span", { className: styles$F.icon, children: icon }), jsx("span", { className: styles$F.label, children: label })] }), hasToggle && (jsx(Toggle, { checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
|
|
1034
|
+
return (jsxs("div", { className: styles$F.item, children: [jsxs("div", { className: `${styles$F.labelContainer} ${isClickable ? styles$F.clickable : ''}`, onClick: handleClick, children: [icon && jsx("span", { className: styles$F.icon, children: icon }), jsx("span", { className: styles$F.label, children: label })] }), hasToggle && (jsx(Toggle, { "aria-label": label, checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
|
|
1035
1035
|
};
|
|
1036
1036
|
/**
|
|
1037
1037
|
* ServiceToggleList component for displaying a list of services with toggles.
|
|
@@ -1106,9 +1106,9 @@ TeamSubMenu.displayName = 'TeamSubMenu';
|
|
|
1106
1106
|
|
|
1107
1107
|
var styles$C = {"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"};
|
|
1108
1108
|
|
|
1109
|
-
const PlaneIcon$
|
|
1110
|
-
const BusIcon$
|
|
1111
|
-
const HotelIcon$
|
|
1109
|
+
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" }) }));
|
|
1110
|
+
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" })] }));
|
|
1111
|
+
const HotelIcon$2 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M3 21h18" }), jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
|
|
1112
1112
|
const ArrowIcon = () => (jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), jsx("polyline", { points: "12 5 19 12 12 19" })] }));
|
|
1113
1113
|
/**
|
|
1114
1114
|
* Base TripSegment component wrapper
|
|
@@ -1123,7 +1123,7 @@ const AirSegment = ({ flights, variant = 'light', className = '', }) => {
|
|
|
1123
1123
|
if (!flights || flights.length === 0) {
|
|
1124
1124
|
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsx("span", { className: styles$C.empty, children: "No flights" }) }));
|
|
1125
1125
|
}
|
|
1126
|
-
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(PlaneIcon$
|
|
1126
|
+
return (jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(PlaneIcon$2, {}), jsx("span", { className: styles$C.itemType, children: flight.type === 'charter' ? 'Charter' : 'Commercial' })] }), jsxs("div", { className: styles$C.route, children: [jsx("span", { className: styles$C.location, children: flight.departure }), jsx(ArrowIcon, {}), jsx("span", { className: styles$C.location, children: flight.arrival })] }), jsxs("div", { className: styles$C.details, children: [jsx("span", { children: flight.departureDate }), flight.departureTime && jsx("span", { children: flight.departureTime })] }), flight.airline && (jsxs("div", { className: styles$C.details, children: [jsx("span", { children: flight.airline }), flight.flightNumber && jsxs("span", { children: ["#", flight.flightNumber] })] }))] }, i))) }));
|
|
1127
1127
|
};
|
|
1128
1128
|
/**
|
|
1129
1129
|
* GroundSegment component for displaying ground transportation
|
|
@@ -1132,7 +1132,7 @@ const GroundSegment = ({ segments, variant = 'light', className = '', }) => {
|
|
|
1132
1132
|
if (!segments || segments.length === 0) {
|
|
1133
1133
|
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsx("span", { className: styles$C.empty, children: "No ground transportation" }) }));
|
|
1134
1134
|
}
|
|
1135
|
-
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(BusIcon$
|
|
1135
|
+
return (jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(BusIcon$1, {}), jsx("span", { className: styles$C.itemType, children: segment.type.charAt(0).toUpperCase() + segment.type.slice(1) })] }), jsxs("div", { className: styles$C.route, children: [jsx("span", { className: styles$C.location, children: segment.pickupLocation }), jsx(ArrowIcon, {}), jsx("span", { className: styles$C.location, children: segment.dropoffLocation })] }), jsxs("div", { className: styles$C.details, children: [jsx("span", { children: segment.pickupDate }), segment.pickupTime && jsx("span", { children: segment.pickupTime })] }), segment.company && (jsxs("div", { className: styles$C.details, children: [jsx("span", { children: segment.company }), segment.vehicleCount && jsxs("span", { children: [segment.vehicleCount, " vehicles"] })] }))] }, i))) }));
|
|
1136
1136
|
};
|
|
1137
1137
|
/**
|
|
1138
1138
|
* HotelSegment component for displaying hotel information
|
|
@@ -1141,7 +1141,7 @@ const HotelSegment = ({ hotels, variant = 'light', className = '', }) => {
|
|
|
1141
1141
|
if (!hotels || hotels.length === 0) {
|
|
1142
1142
|
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsx("span", { className: styles$C.empty, children: "No hotels" }) }));
|
|
1143
1143
|
}
|
|
1144
|
-
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(HotelIcon$
|
|
1144
|
+
return (jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxs("div", { className: styles$C.item, children: [jsxs("div", { className: styles$C.itemHeader, children: [jsx(HotelIcon$2, {}), jsx("span", { className: styles$C.itemName, children: hotel.name })] }), hotel.city && (jsx("div", { className: styles$C.details, children: jsx("span", { children: hotel.city }) })), jsxs("div", { className: styles$C.dates, children: [jsx("span", { children: hotel.checkIn }), jsx("span", { children: "\u2013" }), jsx("span", { children: hotel.checkOut })] }), hotel.roomCount && (jsx("div", { className: styles$C.details, children: jsxs("span", { children: [hotel.roomCount, " rooms"] }) }))] }, i))) }));
|
|
1145
1145
|
};
|
|
1146
1146
|
TripSegment.displayName = 'TripSegment';
|
|
1147
1147
|
AirSegment.displayName = 'AirSegment';
|
|
@@ -1419,17 +1419,17 @@ const HubAppShell = ({ children, navItems = HUB_NAV_ITEMS, individualTravelItem
|
|
|
1419
1419
|
|
|
1420
1420
|
var styles$t = {"container":"MembershipPrograms-module_container__qsGZu","loading":"MembershipPrograms-module_loading__tjDtr","alert":"MembershipPrograms-module_alert__GZc0f","header":"MembershipPrograms-module_header__ywXOE","title":"MembershipPrograms-module_title__WZGyt","addButton":"MembershipPrograms-module_addButton__rNlNb","empty":"MembershipPrograms-module_empty__pYrHW","list":"MembershipPrograms-module_list__8A9MG","group":"MembershipPrograms-module_group__v1Vc6","groupHeader":"MembershipPrograms-module_groupHeader__I5KJO","groupIcon":"MembershipPrograms-module_groupIcon__e1LIq","groupLabel":"MembershipPrograms-module_groupLabel__Wqift","programs":"MembershipPrograms-module_programs__hxHXQ","program":"MembershipPrograms-module_program__S3HTM","programInfo":"MembershipPrograms-module_programInfo__RJruG","programProvider":"MembershipPrograms-module_programProvider__c7enz","programName":"MembershipPrograms-module_programName__TN42s","programNumber":"MembershipPrograms-module_programNumber__GKav4","programStatus":"MembershipPrograms-module_programStatus__2imvX","programActions":"MembershipPrograms-module_programActions__36LkY","actionButton":"MembershipPrograms-module_actionButton__y-GI4","removeButton":"MembershipPrograms-module_removeButton__cTTuZ"};
|
|
1421
1421
|
|
|
1422
|
-
const PlaneIcon$
|
|
1423
|
-
const HotelIcon$
|
|
1424
|
-
const CarIcon
|
|
1422
|
+
const PlaneIcon$1 = () => (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" }) }));
|
|
1423
|
+
const HotelIcon$1 = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M3 21h18" }), jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
|
|
1424
|
+
const CarIcon = () => (jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M7 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsx("path", { d: "M17 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsx("path", { d: "M5 17h-2v-6l2 -5h9l4 5h1a2 2 0 0 1 2 2v4h-2m-4 0h-6m-6 -6h15m-6 0v-5" })] }));
|
|
1425
1425
|
const StarIcon = () => (jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) }));
|
|
1426
1426
|
const EditIcon = () => (jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }));
|
|
1427
1427
|
const TrashIcon = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("polyline", { points: "3 6 5 6 21 6" }), jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })] }));
|
|
1428
1428
|
const PlusIcon = () => (jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }));
|
|
1429
1429
|
const TYPE_ICONS = {
|
|
1430
|
-
airline: jsx(PlaneIcon$
|
|
1431
|
-
hotel: jsx(HotelIcon$
|
|
1432
|
-
car: jsx(CarIcon
|
|
1430
|
+
airline: jsx(PlaneIcon$1, {}),
|
|
1431
|
+
hotel: jsx(HotelIcon$1, {}),
|
|
1432
|
+
car: jsx(CarIcon, {}),
|
|
1433
1433
|
other: jsx(StarIcon, {}),
|
|
1434
1434
|
};
|
|
1435
1435
|
const TYPE_LABELS = {
|
|
@@ -1577,13 +1577,13 @@ const PageBanners = ({ systemBanners, alertBanners, className = '', }) => {
|
|
|
1577
1577
|
|
|
1578
1578
|
var styles$o = {"panel":"PreferencesPanel-module_panel__xsxcw","loading":"PreferencesPanel-module_loading__GopYy","alert":"PreferencesPanel-module_alert__9yYz3","title":"PreferencesPanel-module_title__Z5dpP","grid":"PreferencesPanel-module_grid__e0urP","section":"PreferencesPanel-module_section__6cbAx","sectionHeader":"PreferencesPanel-module_sectionHeader__X6e5h","sectionIcon":"PreferencesPanel-module_sectionIcon__jVJwn","sectionTitle":"PreferencesPanel-module_sectionTitle__29M-O","fields":"PreferencesPanel-module_fields__rryQ3","field":"PreferencesPanel-module_field__W3Z9z","fieldLabel":"PreferencesPanel-module_fieldLabel__usgRa","fieldValue":"PreferencesPanel-module_fieldValue__AEJ1C","fieldInput":"PreferencesPanel-module_fieldInput__rS8OR","footer":"PreferencesPanel-module_footer__qTYqi"};
|
|
1579
1579
|
|
|
1580
|
-
const PlaneIcon
|
|
1581
|
-
const BusIcon
|
|
1582
|
-
const HotelIcon
|
|
1580
|
+
const PlaneIcon = () => (jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsx("path", { d: "M21 16v-2l-8-5V3.5a1.5 1.5 0 0 0-3 0V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5Z" }) }));
|
|
1581
|
+
const BusIcon = () => (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsx("path", { d: "M8 6v6" }), jsx("path", { d: "M16 6v6" }), jsx("circle", { cx: "8", cy: "16", r: "1" }), jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
|
|
1582
|
+
const HotelIcon = () => (jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsx("path", { d: "M3 21h18" }), jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
|
|
1583
1583
|
const DEFAULT_ICONS = {
|
|
1584
|
-
air: jsx(PlaneIcon
|
|
1585
|
-
ground: jsx(BusIcon
|
|
1586
|
-
hotel: jsx(HotelIcon
|
|
1584
|
+
air: jsx(PlaneIcon, {}),
|
|
1585
|
+
ground: jsx(BusIcon, {}),
|
|
1586
|
+
hotel: jsx(HotelIcon, {}),
|
|
1587
1587
|
};
|
|
1588
1588
|
/**
|
|
1589
1589
|
* PreferencesPanel - Displays travel preferences in a multi-column layout
|
|
@@ -1624,11 +1624,11 @@ const SummarySection = ({ section, values }) => {
|
|
|
1624
1624
|
* RequestSummary component for displaying a summary of travel request form data.
|
|
1625
1625
|
* Shows enabled sections with their filled-in values.
|
|
1626
1626
|
*/
|
|
1627
|
-
const RequestSummary = ({ sections, values, enabledSections = {}, submissionInfo, className, title = 'Request Summary', }) => {
|
|
1627
|
+
const RequestSummary$1 = ({ sections, values, enabledSections = {}, submissionInfo, className, title = 'Request Summary', }) => {
|
|
1628
1628
|
const visibleSections = sections.filter(section => enabledSections[section.key] !== false);
|
|
1629
1629
|
return (jsxs("div", { className: `${styles$n.summary} ${className || ''}`, children: [jsx("h2", { className: styles$n.title, children: title }), submissionInfo && (jsxs("div", { className: styles$n.submissionInfo, children: [jsx("span", { className: styles$n.label, children: "Submitted by" }), jsx("span", { className: styles$n.value, children: submissionInfo.submittedBy }), jsx("span", { className: styles$n.label, children: "on" }), jsx("span", { className: styles$n.value, children: submissionInfo.submittedOn })] })), jsx("div", { className: styles$n.sections, children: visibleSections.map((section) => (jsx(SummarySection, { section: section, values: values }, section.key))) }), visibleSections.length === 0 && (jsx("p", { className: styles$n.empty, children: "No services selected" }))] }));
|
|
1630
1630
|
};
|
|
1631
|
-
RequestSummary.displayName = 'RequestSummary';
|
|
1631
|
+
RequestSummary$1.displayName = 'RequestSummary';
|
|
1632
1632
|
|
|
1633
1633
|
var styles$m = {"layout":"RequestFormLayout-module_layout__R-vaM","header":"RequestFormLayout-module_header__705In","headerContent":"RequestFormLayout-module_headerContent__Uu0br","headerTitle":"RequestFormLayout-module_headerTitle__W-fub","pagination":"RequestFormLayout-module_pagination__hTpNr","separator":"RequestFormLayout-module_separator__BgEsp","eventName":"RequestFormLayout-module_eventName__1zpgS","headerRight":"RequestFormLayout-module_headerRight__VjjY3","body":"RequestFormLayout-module_body__RBH8O","sidebar":"RequestFormLayout-module_sidebar__Ozr7m","showOnMobile":"RequestFormLayout-module_showOnMobile__kyyER","sidebarContent":"RequestFormLayout-module_sidebarContent__IdoMX","main":"RequestFormLayout-module_main__132ss","mainContent":"RequestFormLayout-module_mainContent__vnp1R","summarySidebar":"RequestFormLayout-module_summarySidebar__Vfg-z","summaryContent":"RequestFormLayout-module_summaryContent__Oppnd","footer":"RequestFormLayout-module_footer__yxDM5","footerContent":"RequestFormLayout-module_footerContent__GmTkE","button":"RequestFormLayout-module_button__-iWUv","primary":"RequestFormLayout-module_primary__cs2Fb","secondary":"RequestFormLayout-module_secondary__9WNRX"};
|
|
1634
1634
|
|
|
@@ -1787,9 +1787,9 @@ const headers = [
|
|
|
1787
1787
|
{ key: 'sportCode', label: 'Sport', icon: jsx(RunningIcon, {}) },
|
|
1788
1788
|
{ key: 'travelStartDate', label: 'Date(s)', icon: jsx(CalendarIcon$1, { size: 16 }) },
|
|
1789
1789
|
{ key: 'tripName', label: 'Trip Name', icon: jsx(DocumentIcon, { size: 16 }) },
|
|
1790
|
-
{ label: 'Air', icon: jsx(PlaneIcon$
|
|
1790
|
+
{ label: 'Air', icon: jsx(PlaneIcon$3, { size: 16 }) },
|
|
1791
1791
|
{ label: 'Ground', icon: jsx(GroundIcon, {}) },
|
|
1792
|
-
{ label: 'Hotel', icon: jsx(HotelIcon$
|
|
1792
|
+
{ label: 'Hotel', icon: jsx(HotelIcon$3, { size: 16 }) },
|
|
1793
1793
|
];
|
|
1794
1794
|
/** Hub's read-only expanded Team Schedule table. */
|
|
1795
1795
|
const TeamScheduleExpandedTable = ({ rows, teamCode, onTripClick, emptyMessage = 'No data available.', className = '' }) => {
|
|
@@ -2097,7 +2097,7 @@ const TeamRosterMemberForm = ({ mode = 'Add', values, initialValues, onChange, o
|
|
|
2097
2097
|
}, disabled: disabled, fullWidth: true }) })), jsxs(SectionCard, { icon: jsx(UserIcon, { size: 20 }), title: "Identity", subtitle: "Name as it appears on government ID", badge: jsx(SectionBadge, { complete: identityComplete }), children: [jsxs("div", { className: styles$f.threeColumnGrid, children: [jsx(Input, { label: "First Name *", value: formValues.firstName, onChange: (event) => updateValues({ firstName: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsxs("div", { className: styles$f.middleNameField, children: [jsxs("div", { className: styles$f.fieldHeader, children: [jsx("label", { htmlFor: "team-middle-name", children: "Middle Name" }), jsx(Checkbox, { label: "None", size: "sm", checked: formValues.noMiddleName, onChange: (event) => updateValues({
|
|
2098
2098
|
noMiddleName: event.target.checked,
|
|
2099
2099
|
middleName: event.target.checked ? '' : formValues.middleName,
|
|
2100
|
-
}), disabled: disabled })] }), jsx(Input, { id: "team-middle-name", "aria-label": "Middle Name", placeholder: formValues.noMiddleName ? 'None' : '', value: formValues.middleName, onChange: (event) => updateValues({ middleName: event.target.value }), required: !formValues.noMiddleName, disabled: disabled || formValues.noMiddleName, fullWidth: true })] }), jsx(Input, { label: "Last Name *", value: formValues.lastName, onChange: (event) => updateValues({ lastName: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(Select, { label: "Traveler Type *", placeholder: "Select traveler type", options: travelerTypeOptions, value: formValues.travelerType, onChange: (event) => updateValues({ travelerType: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(SectionCard, { icon: jsx(LockIcon$1, { size: 20 }), title: "Secure Flight", subtitle: "TSA-required for every air booking", badge: jsx(SectionBadge, { complete: secureFlightComplete, label: !formValues.weight || Number(formValues.weight) < 1 ? 'Add weight' : undefined }), children: jsxs("div", { className: styles$f.threeColumnGrid, children: [jsx(Input, { label: "Date of Birth *", type: "date", min: localDateString(minBirthDate), max: localDateString(new Date()), value: formValues.birthDate, onChange: (event) => updateValues({ birthDate: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Select, { label: "Gender *", placeholder: "Select gender", options: ['Male', 'Female', 'Unspecified (X)'].map((label) => ({ label, value: label })), value: formValues.gender, onChange: (event) => updateValues({ gender: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Weight (lbs) *", type: "number", min: "1", value: formValues.weight, onChange: (event) => updateValues({ weight: numericValue$1(event.target.value) }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Passport No.", placeholder: "Add for intl. travel", value: formValues.passportNumber, onChange: (event) => updateValues({ passportNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Known Traveler No.", placeholder: "KTN", value: formValues.knownTravelerNumber, onChange: (event) => updateValues({ knownTravelerNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "DHS Redress No.", placeholder: "Add if issued", value: formValues.dhsRedressNumber, onChange: (event) => updateValues({ dhsRedressNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true })] }) }), mode === 'Add' && (jsx(SectionCard, { icon: jsx(PlaneIcon$
|
|
2100
|
+
}), disabled: disabled })] }), jsx(Input, { id: "team-middle-name", "aria-label": "Middle Name", placeholder: formValues.noMiddleName ? 'None' : '', value: formValues.middleName, onChange: (event) => updateValues({ middleName: event.target.value }), required: !formValues.noMiddleName, disabled: disabled || formValues.noMiddleName, fullWidth: true })] }), jsx(Input, { label: "Last Name *", value: formValues.lastName, onChange: (event) => updateValues({ lastName: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(Select, { label: "Traveler Type *", placeholder: "Select traveler type", options: travelerTypeOptions, value: formValues.travelerType, onChange: (event) => updateValues({ travelerType: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsx(SectionCard, { icon: jsx(LockIcon$1, { size: 20 }), title: "Secure Flight", subtitle: "TSA-required for every air booking", badge: jsx(SectionBadge, { complete: secureFlightComplete, label: !formValues.weight || Number(formValues.weight) < 1 ? 'Add weight' : undefined }), children: jsxs("div", { className: styles$f.threeColumnGrid, children: [jsx(Input, { label: "Date of Birth *", type: "date", min: localDateString(minBirthDate), max: localDateString(new Date()), value: formValues.birthDate, onChange: (event) => updateValues({ birthDate: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Select, { label: "Gender *", placeholder: "Select gender", options: ['Male', 'Female', 'Unspecified (X)'].map((label) => ({ label, value: label })), value: formValues.gender, onChange: (event) => updateValues({ gender: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Weight (lbs) *", type: "number", min: "1", value: formValues.weight, onChange: (event) => updateValues({ weight: numericValue$1(event.target.value) }), required: true, disabled: disabled, fullWidth: true }), jsx(Input, { label: "Passport No.", placeholder: "Add for intl. travel", value: formValues.passportNumber, onChange: (event) => updateValues({ passportNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Known Traveler No.", placeholder: "KTN", value: formValues.knownTravelerNumber, onChange: (event) => updateValues({ knownTravelerNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "DHS Redress No.", placeholder: "Add if issued", value: formValues.dhsRedressNumber, onChange: (event) => updateValues({ dhsRedressNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true })] }) }), mode === 'Add' && (jsx(SectionCard, { icon: jsx(PlaneIcon$3, { size: 20 }), title: "Frequent Flyer", subtitle: "Airline loyalty program details", badge: jsx(SectionBadge, { optional: true }), children: jsxs("div", { className: styles$f.twoColumnGrid, children: [jsx(Select, { label: "Airline", placeholder: "Select airline", options: airlineOptions, value: formValues.airline, onChange: (event) => updateValues({ airline: event.target.value }), disabled: disabled, fullWidth: true }), jsx(Input, { label: "Frequent Flyer Number", value: formValues.frequentFlyerNumber, onChange: (event) => updateValues({ frequentFlyerNumber: event.target.value }), disabled: disabled, fullWidth: true })] }) })), jsx(SectionCard, { icon: jsx(InfoIcon$1, { size: 20 }), title: "Special Requests", subtitle: "Dietary, seating, accessibility, rooming", badge: jsx(SectionBadge, { optional: true }), children: jsx(Textarea, { "aria-label": "Special Requests", placeholder: "Add anything the travel desk should know\u2026", value: formValues.specialRequests, onChange: (event) => updateValues({ specialRequests: event.target.value }), rows: 3, disabled: disabled, fullWidth: true }) })] }));
|
|
2101
2101
|
};
|
|
2102
2102
|
const IMPORT_COPY = {
|
|
2103
2103
|
equipment: {
|
|
@@ -2239,7 +2239,7 @@ const DEFAULT_CARDS = [
|
|
|
2239
2239
|
key: 'suppliers',
|
|
2240
2240
|
title: 'Suppliers',
|
|
2241
2241
|
description: 'Manage air, car, and hotel suppliers',
|
|
2242
|
-
icon: jsx(PlaneIcon$
|
|
2242
|
+
icon: jsx(PlaneIcon$3, { size: 16 }),
|
|
2243
2243
|
},
|
|
2244
2244
|
];
|
|
2245
2245
|
/** Hub administration shell and system-card index. */
|
|
@@ -2276,7 +2276,7 @@ const CharterManifestPage = ({ tripName, travelStartDate, travelEndDate, seats,
|
|
|
2276
2276
|
}
|
|
2277
2277
|
return a.lastName.localeCompare(b.lastName);
|
|
2278
2278
|
}), [passengers, sort]);
|
|
2279
|
-
return (jsxs("div", { className: [styles$a.page, className].filter(Boolean).join(' '), "data-screen-label": "Charter Trip Manifest", children: [jsxs("header", { className: styles$a.header, children: [jsxs("div", { className: styles$a.headerRow, children: [jsx("button", { type: "button", "aria-label": "Back", className: styles$a.back, onClick: onBack, children: jsx(ChevronLeftIcon, { size: 28 }) }), jsxs("h1", { children: [jsx("strong", { children: "Manifest" }), jsx(ChevronRightIcon$1, { size: 24 }), jsx("span", { children: tripName })] }), jsxs("div", { className: styles$a.headerActions, children: [jsx(StatusPill, { sendState: sendState, locked: locked }), jsx(Button, { variant: "outline", leftIcon: jsx(DocumentIcon, { size: 16 }), disabled: carrierName === 'No carrier selected', onClick: onGenerateFile, children: "Generate File" })] })] }), (travelStartDate || travelEndDate) && (jsxs("div", { className: styles$a.dateRow, children: [jsx("span", { children: formatDate(travelStartDate) }), jsx("span", { className: styles$a.dateLine, children: "\u25B6" }), jsx("span", { children: formatDate(travelEndDate) })] })), jsxs("div", { className: styles$a.metaRow, children: [jsxs("span", { children: [jsx(PlaneIcon$
|
|
2279
|
+
return (jsxs("div", { className: [styles$a.page, className].filter(Boolean).join(' '), "data-screen-label": "Charter Trip Manifest", children: [jsxs("header", { className: styles$a.header, children: [jsxs("div", { className: styles$a.headerRow, children: [jsx("button", { type: "button", "aria-label": "Back", className: styles$a.back, onClick: onBack, children: jsx(ChevronLeftIcon, { size: 28 }) }), jsxs("h1", { children: [jsx("strong", { children: "Manifest" }), jsx(ChevronRightIcon$1, { size: 24 }), jsx("span", { children: tripName })] }), jsxs("div", { className: styles$a.headerActions, children: [jsx(StatusPill, { sendState: sendState, locked: locked }), jsx(Button, { variant: "outline", leftIcon: jsx(DocumentIcon, { size: 16 }), disabled: carrierName === 'No carrier selected', onClick: onGenerateFile, children: "Generate File" })] })] }), (travelStartDate || travelEndDate) && (jsxs("div", { className: styles$a.dateRow, children: [jsx("span", { children: formatDate(travelStartDate) }), jsx("span", { className: styles$a.dateLine, children: "\u25B6" }), jsx("span", { children: formatDate(travelEndDate) })] })), jsxs("div", { className: styles$a.metaRow, children: [jsxs("span", { children: [jsx(PlaneIcon$3, { size: 16 }), seats, " seats"] }), jsxs("span", { children: [jsx(CubeIcon, { size: 16 }), "Payload limit ", payloadLimit.toLocaleString(), " lb"] })] })] }), jsxs("div", { className: styles$a.layout, children: [jsxs("aside", { className: styles$a.rail, children: [jsxs("div", { children: [jsx("div", { className: styles$a.eyebrow, children: "Flight Manifest" }), jsx("div", { className: styles$a.scopeList, children: [{ id: 'all', label: 'Full Trip', detail: 'All flight segments' }, ...segments].map((item) => (jsxs("button", { type: "button", className: [styles$a.scope, scope === item.id ? styles$a.activeScope : ''].filter(Boolean).join(' '), onClick: () => setScope(item.id), children: [jsx("strong", { children: item.label }), jsx("span", { children: item.detail })] }, item.id))) })] }), segments.length > 0 && (jsx(Button, { variant: "outline", size: "sm", disabled: locked, onClick: onSplitSegments, children: "Split by Segment" })), jsxs("div", { className: styles$a.carrierCard, children: [jsx("div", { className: styles$a.eyebrow, children: "Carrier" }), jsx("strong", { children: carrierName }), jsx("p", { children: carrierNote }), jsx(Button, { variant: "outline", size: "sm", fullWidth: true, disabled: locked, leftIcon: jsx(SettingsIcon, { size: 15 }), onClick: onChangeCarrier, children: "Change Carrier" })] })] }), jsxs("main", { className: styles$a.main, children: [jsx("section", { className: styles$a.capacityCard, children: jsx(ManifestCapacityStats, { paxCount: passengers.length, seats: seats, paxWeight: passengerWeight, cargoWeight: cargoWeight, payloadLimit: payloadLimit }) }), jsxs("div", { className: styles$a.viewRow, children: [jsx(ManifestViewToggle, { view: view, onView: setView, paxCount: passengers.length, eqCount: equipment.length, locked: locked }), locked && jsx("span", { className: styles$a.lockedMessage, children: "Locked \u2014 coordinate any changes directly with the carrier." })] }), view === 'passengers' ? (jsxs("section", { children: [!locked && (jsxs("div", { className: styles$a.tableActions, children: [jsxs("strong", { children: [passengers.length, " Passengers"] }), jsxs("div", { children: [jsx("span", { children: "Order by" }), jsx("span", { className: styles$a.sortToggle, children: ['name', 'type'].map((option) => (jsx("button", { type: "button", className: sort === option ? styles$a.activeSort : '', onClick: () => setSort(option), children: option }, option))) }), jsx(Button, { size: "sm", leftIcon: jsx(PlusIcon$2, { size: 15 }), onClick: onAddPassengers, children: "Add Passengers" })] })] })), jsx("div", { className: styles$a.tableWrap, children: jsxs("table", { children: [jsx("thead", { children: jsxs("tr", { children: [jsx("th", { children: "#" }), jsx("th", { children: "Passenger" }), jsx("th", { children: "Type" }), jsx("th", { children: "TSA Screening" }), jsx("th", { children: "Personal" }), jsx("th", { children: "Carry-On" }), jsx("th", { children: "Checked" }), jsx("th", { children: "Seat" }), jsx("th", {})] }) }), jsxs("tbody", { children: [!sortedPassengers.length && jsx("tr", { children: jsx("td", { colSpan: 9, className: styles$a.empty, children: "No passengers on this manifest yet. Add passengers from the master list." }) }), sortedPassengers.map((passenger, index) => (jsxs("tr", { children: [jsx("td", { children: index + 1 }), jsxs("td", { children: [jsx("strong", { children: passenger.lastName }), jsxs("span", { children: [", ", passenger.firstName] })] }), jsx("td", { children: jsx(TypeTag, { type: passenger.travelerType }) }), jsx("td", { children: passenger.screeningType || '—' }), jsxs("td", { children: [passenger.personalWeight ?? 0, " lb"] }), jsxs("td", { children: [passenger.carryOnWeight ?? 0, " lb"] }), jsxs("td", { children: [passenger.checkedWeight ?? 0, " lb"] }), jsx("td", { children: passenger.seatAssignment || '—' }), jsx("td", { children: !locked && jsx("button", { type: "button", "aria-label": `Remove ${passenger.firstName} ${passenger.lastName}`, className: styles$a.remove, onClick: () => onRemovePassenger?.(passenger), children: jsx(TrashIcon$2, { size: 16 }) }) })] }, passenger.id)))] })] }) })] })) : (jsxs("section", { children: [!locked && jsxs("div", { className: styles$a.tableActions, children: [jsxs("strong", { children: [equipment.length, " Equipment Items"] }), jsx(Button, { size: "sm", leftIcon: jsx(PlusIcon$2, { size: 15 }), onClick: onAddEquipment, children: "Add Equipment" })] }), jsx("div", { className: styles$a.tableWrap, children: jsxs("table", { children: [jsx("thead", { children: jsxs("tr", { children: [jsx("th", { children: "Equipment" }), jsx("th", { children: "Quantity" }), jsx("th", { children: "Weight" }), jsx("th", { children: "Total" }), jsx("th", {})] }) }), jsx("tbody", { children: equipment.map((item) => jsxs("tr", { children: [jsx("td", { children: jsx("strong", { children: item.name }) }), jsx("td", { children: item.quantity }), jsxs("td", { children: [item.weight.toLocaleString(), " lb"] }), jsxs("td", { children: [(item.quantity * item.weight).toLocaleString(), " lb"] }), jsx("td", { children: !locked && jsx("button", { type: "button", "aria-label": `Remove ${item.name}`, className: styles$a.remove, onClick: () => onRemoveEquipment?.(item), children: jsx(TrashIcon$2, { size: 16 }) }) })] }, item.id)) })] }) })] })), !locked && (jsxs("section", { className: styles$a.finalize, children: [jsx(StatusPill, { sendState: sendState, locked: false }), jsx("p", { children: sendState === 'initial-sent' ? 'Initial manifest sent. The final manifest may be sent within 3 days of departure.' : 'No manifest has been transmitted to the carrier yet.' }), jsxs("div", { className: styles$a.finalizeActions, children: [sendState === 'none' && jsx(Button, { onClick: onSendInitial, children: "Send Initial Manifest" }), sendState === 'initial-sent' && jsxs(Fragment, { children: [jsx(Button, { onClick: onSendFinal, children: "Send Final Manifest" }), jsx(Button, { variant: "ghost", size: "sm", onClick: onUndoInitial, children: "Undo initial" })] })] })] }))] })] })] }));
|
|
2280
2280
|
};
|
|
2281
2281
|
|
|
2282
2282
|
var styles$9 = {"page":"ContactUsPage-module_page__j9LWO","container":"ContactUsPage-module_container__uRC-r","header":"ContactUsPage-module_header__I6ypu","printRow":"ContactUsPage-module_printRow__d7O34","primaryGrid":"ContactUsPage-module_primaryGrid__DwUt4","genericGrid":"ContactUsPage-module_genericGrid__Zn-A1","stack":"ContactUsPage-module_stack__uKL2n","card":"ContactUsPage-module_card__WPn4v","cardBody":"ContactUsPage-module_cardBody__FU1io","simpleContact":"ContactUsPage-module_simpleContact__E-jyI","field":"ContactUsPage-module_field__yiMo-","label":"ContactUsPage-module_label__C2fa2","emergencyLabel":"ContactUsPage-module_emergencyLabel__Twetf","emergencyDot":"ContactUsPage-module_emergencyDot__Yg4eF","fieldValue":"ContactUsPage-module_fieldValue__5VT5g","contactColumn":"ContactUsPage-module_contactColumn__U9DGB","support":"ContactUsPage-module_support__Pptkm","emergency":"ContactUsPage-module_emergency__ozZbU","contactPair":"ContactUsPage-module_contactPair__Fxg8p","motorcoachEmergency":"ContactUsPage-module_motorcoachEmergency__-Uo84","centeredState":"ContactUsPage-module_centeredState__eLf0U","error":"ContactUsPage-module_error__XXiUk","warning":"ContactUsPage-module_warning__1--Zg"};
|
|
@@ -2358,109 +2358,207 @@ const DashboardPage = ({ greeting = 'Good morning', firstName, accountName, widg
|
|
|
2358
2358
|
onReorder?.(dragFrom, index); setDragFrom(null); }, onDragEnd: () => { setDragFrom(null); dragGhost.current?.remove(); dragGhost.current = null; }, children: jsx(WidgetCard, { widget: widget, editMode: editMode, index: index, count: widgets.length, onRefresh: onRefresh, onRemove: onRemove, onResize: onResize, onReorder: onReorder, onTravelerRangeChange: onTravelerRangeChange, onNavigate: onNavigate }) }, widget.id)) }) : jsxs("div", { className: styles$8.emptyPage, children: [jsx(PlusIcon$2, { size: 28 }), jsx("strong", { children: "Your home page is empty" }), jsx("span", { children: "Use \"Customize\" to add cards from the catalog." })] }), catalogOpen && jsxs(Fragment, { children: [jsx("button", { type: "button", className: styles$8.scrim, "aria-label": "Close card catalog", onClick: () => setCatalogOpen(false) }), jsxs("aside", { className: styles$8.catalog, role: "dialog", "aria-modal": "true", "aria-label": "Add cards", children: [jsxs("header", { children: [jsxs("div", { children: [jsx("h2", { children: "Add a card" }), jsx("p", { children: "Cards available to your role for this account" })] }), jsx("button", { type: "button", "aria-label": "Close card catalog", onClick: () => setCatalogOpen(false), children: jsx(CloseIcon, { size: 20 }) })] }), jsx("div", { className: styles$8.catalogBody, children: CATALOG.map((item) => jsxs("div", { className: styles$8.catalogItem, children: [jsx("span", { className: styles$8.catalogIcon, children: jsx(WidgetIcon, { type: item.type }) }), jsxs("div", { children: [jsx("strong", { children: item.title }), jsx("span", { children: "Account" }), jsx("p", { children: item.description })] }), presentTypes.has(item.type) ? jsxs("span", { className: styles$8.added, children: [jsx(CheckIcon$2, { size: 16 }), "Added"] }) : jsxs("button", { type: "button", onClick: () => onAddWidget?.(item.type), children: [jsx(PlusIcon$2, { size: 16 }), "Add"] })] }, item.type)) }), jsx("footer", { children: "Each card can appear once on your home page." })] })] })] }));
|
|
2359
2359
|
};
|
|
2360
2360
|
|
|
2361
|
-
var styles$7 = {"
|
|
2361
|
+
var styles$7 = {"page":"GroupTravelRequestPage-module_page__0JriY","pageHeader":"GroupTravelRequestPage-module_pageHeader__oP6rE","workspace":"GroupTravelRequestPage-module_workspace__SIOli","serviceSidebar":"GroupTravelRequestPage-module_serviceSidebar__XUlqR","tripEvents":"GroupTravelRequestPage-module_tripEvents__6Upvv","formMain":"GroupTravelRequestPage-module_formMain__pFK7N","serviceSection":"GroupTravelRequestPage-module_serviceSection__10nXm","summarySidebar":"GroupTravelRequestPage-module_summarySidebar__HoAGy","summaryCard":"GroupTravelRequestPage-module_summaryCard__YvX-g","summarySection":"GroupTravelRequestPage-module_summarySection__uY5FU","summaryRow":"GroupTravelRequestPage-module_summaryRow__el7jN","emptySummary":"GroupTravelRequestPage-module_emptySummary__veL9N","field":"GroupTravelRequestPage-module_field__-HfoK","label":"GroupTravelRequestPage-module_label__sEOeK","input":"GroupTravelRequestPage-module_input__lXQDl","select":"GroupTravelRequestPage-module_select__D7ICw","textarea":"GroupTravelRequestPage-module_textarea__AYtX1","note":"GroupTravelRequestPage-module_note__9loDq","choiceFieldset":"GroupTravelRequestPage-module_choiceFieldset__dMlZv","radioGroup":"GroupTravelRequestPage-module_radioGroup__xP97-","radioLabel":"GroupTravelRequestPage-module_radioLabel__9wYXU","checkToggle":"GroupTravelRequestPage-module_checkToggle__PZAHF","segments":"GroupTravelRequestPage-module_segments__07a9Y","contactGroup":"GroupTravelRequestPage-module_contactGroup__MQ7mD","destinationList":"GroupTravelRequestPage-module_destinationList__uaHzR","segmentHeader":"GroupTravelRequestPage-module_segmentHeader__8a1Re","destinationRow":"GroupTravelRequestPage-module_destinationRow__swSrv","pageFooter":"GroupTravelRequestPage-module_pageFooter__mQcPZ","pageButtons":"GroupTravelRequestPage-module_pageButtons__jfH5X","currentPage":"GroupTravelRequestPage-module_currentPage__WfmWO","mobileTabs":"GroupTravelRequestPage-module_mobileTabs__GEAo2","mobileServices":"GroupTravelRequestPage-module_mobileServices__XN2Vw","mobileEnable":"GroupTravelRequestPage-module_mobileEnable__DRf4H","activeTab":"GroupTravelRequestPage-module_activeTab__dolkN","activeService":"GroupTravelRequestPage-module_activeService__VXHEF","mobileHidden":"GroupTravelRequestPage-module_mobileHidden__RYc4x","summaryMobileHidden":"GroupTravelRequestPage-module_summaryMobileHidden__0QaCt"};
|
|
2362
2362
|
|
|
2363
|
-
|
|
2364
|
-
const
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
const TRAVEL_SERVICES = [
|
|
2371
|
-
{ key: 'general', label: 'General Details', icon: jsx(EventsIcon, {}), hasToggle: false },
|
|
2372
|
-
{ key: 'air', label: 'Commercial Air', icon: jsx(PlaneIcon, {}), hasToggle: true },
|
|
2373
|
-
{ key: 'charter', label: 'Charter Air', icon: jsx(PlaneIcon, {}), hasToggle: true },
|
|
2374
|
-
{ key: 'hotel', label: 'Hotel', icon: jsx(HotelIcon, {}), hasToggle: true },
|
|
2375
|
-
{ key: 'ground', label: 'Ground Transportation', icon: jsx(CarIcon, {}), hasToggle: true },
|
|
2376
|
-
{ key: 'bus', label: 'Bus Needed', icon: jsx(BusIcon, {}), hasToggle: true },
|
|
2363
|
+
const FLIGHT_TYPES = ['One Way', 'Round Trip', 'Multiple Destinations'];
|
|
2364
|
+
const FLIGHT_TIMES = [
|
|
2365
|
+
'Early Morning (5:00am – 8:00am)',
|
|
2366
|
+
'Morning (8:00am – 12:00pm)',
|
|
2367
|
+
'Afternoon (12:00pm - 3:00pm)',
|
|
2368
|
+
'Late Afternoon (3:00pm – 6:00pm)',
|
|
2369
|
+
'Evening (6:00pm – 12:00am)',
|
|
2377
2370
|
];
|
|
2378
|
-
|
|
2379
|
-
const
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
{ label: 'Travel Party Size', value: null },
|
|
2385
|
-
{ label: 'Trip Start', value: null },
|
|
2386
|
-
{ label: 'Trip Return', value: null },
|
|
2387
|
-
{ label: 'Booking Contact', value: null },
|
|
2388
|
-
],
|
|
2389
|
-
},
|
|
2390
|
-
{
|
|
2391
|
-
key: 'air',
|
|
2392
|
-
title: 'Commercial Air Request',
|
|
2393
|
-
items: [
|
|
2394
|
-
{ label: 'Flight Type', value: null },
|
|
2395
|
-
{ label: 'Departure Airport', value: null },
|
|
2396
|
-
{ label: 'Arrival Airport', value: null },
|
|
2397
|
-
],
|
|
2398
|
-
},
|
|
2399
|
-
{
|
|
2400
|
-
key: 'hotel',
|
|
2401
|
-
title: 'Hotel Request',
|
|
2402
|
-
items: [
|
|
2403
|
-
{ label: 'Check-in Date', value: null },
|
|
2404
|
-
{ label: 'Check-out Date', value: null },
|
|
2405
|
-
{ label: 'Number of Rooms', value: null },
|
|
2406
|
-
],
|
|
2407
|
-
},
|
|
2408
|
-
{
|
|
2409
|
-
key: 'ground',
|
|
2410
|
-
title: 'Ground Transportation',
|
|
2411
|
-
items: [
|
|
2412
|
-
{ label: 'Vehicle Type', value: null },
|
|
2413
|
-
{ label: 'Pickup Location', value: null },
|
|
2414
|
-
],
|
|
2415
|
-
},
|
|
2371
|
+
const AIRCRAFT_SEATING = ['0-30', '30-50', '50-100', '100+'];
|
|
2372
|
+
const BUS_TYPES = [
|
|
2373
|
+
'Drive To & From Campus',
|
|
2374
|
+
'Airport Pickup & Dropoff',
|
|
2375
|
+
'Drive to Event/Fly Home',
|
|
2376
|
+
'Fly to Event/Drive Home',
|
|
2416
2377
|
];
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2378
|
+
const DEFAULT_CATERING = ['No Catering', 'Snacks and Beverages', 'Cold Meal', 'Hot Meal'];
|
|
2379
|
+
const EventsIcon = () => jsx(CalendarIcon$1, { size: 24 });
|
|
2380
|
+
const DEFAULT_SERVICES = [
|
|
2381
|
+
{ key: 'general', label: 'General', icon: jsx(EventsIcon, {}), hasToggle: false },
|
|
2382
|
+
{ key: 'air', label: 'Commercial Air', icon: jsx(PlaneIcon$3, { size: 22 }), hasToggle: true },
|
|
2383
|
+
{ key: 'charter', label: 'Charter Air', icon: jsx(PlaneIcon$3, { size: 22 }), hasToggle: true },
|
|
2384
|
+
{ key: 'hotel', label: 'Hotel', icon: jsx(HotelIcon$3, { size: 22 }), hasToggle: true },
|
|
2385
|
+
{ key: 'ground', label: 'Vehicle Rental', icon: jsx(CarIcon$1, { size: 22 }), hasToggle: true },
|
|
2386
|
+
{ key: 'busneeded', label: 'Bus Charter', icon: jsx(BusIcon$2, { size: 22 }), hasToggle: true },
|
|
2387
|
+
];
|
|
2388
|
+
const isEnabledValue = (value) => value === true || Number(value) === 1;
|
|
2389
|
+
const textValue = (value) => value === undefined ? '' : String(value);
|
|
2390
|
+
const suffix = (index) => index ? String(index + 1) : '';
|
|
2391
|
+
const airFieldName = (name, index) => index === 3 ? `air${name}${index + 1}` : `${name}${suffix(index)}`;
|
|
2392
|
+
const prefixedFieldName = (prefix, name, index) => `${prefix}${name}${suffix(index)}`;
|
|
2393
|
+
const hotelFieldName = (name, index) => `${name}${suffix(index)}`;
|
|
2394
|
+
const Field = ({ label, name, values, setValue, type = 'text', required, disabled, max, min, maxDate, placeholder, note, options, multiline, }) => {
|
|
2395
|
+
const inputId = `gtr-${name}`;
|
|
2396
|
+
const common = {
|
|
2397
|
+
id: inputId,
|
|
2398
|
+
name,
|
|
2399
|
+
value: textValue(values[name]),
|
|
2400
|
+
required,
|
|
2401
|
+
disabled,
|
|
2402
|
+
'aria-describedby': note ? `${inputId}-note` : undefined,
|
|
2403
|
+
onChange: (event) => setValue(name, event.target.value),
|
|
2404
|
+
};
|
|
2405
|
+
return (jsxs("div", { className: styles$7.field, children: [jsxs("label", { className: styles$7.label, htmlFor: inputId, children: [label, required && jsx("span", { "aria-hidden": "true", children: " *" })] }), multiline ? (jsx("textarea", { ...common, className: styles$7.textarea, rows: 3, maxLength: 5000, placeholder: placeholder })) : options ? (jsxs("select", { ...common, className: styles$7.select, children: [jsx("option", { value: "", children: "Select" }), options.map((option) => jsx("option", { value: option.value, children: option.label }, option.value))] })) : (jsx("input", { ...common, className: styles$7.input, type: type, max: type === 'date' ? maxDate : max, min: type === 'date' ? textValue(min) : min, placeholder: placeholder })), note && jsx("div", { className: styles$7.note, id: `${inputId}-note`, children: note })] }));
|
|
2406
|
+
};
|
|
2407
|
+
const ChoiceGroup = ({ label, name, options, values, setValue, required, }) => (jsxs("fieldset", { className: styles$7.choiceFieldset, children: [jsxs("legend", { className: styles$7.label, children: [label, required && jsx("span", { "aria-hidden": "true", children: " *" })] }), jsx("div", { className: styles$7.radioGroup, children: options.map((option) => (jsxs("label", { className: styles$7.radioLabel, children: [jsx("input", { type: "radio", name: name, value: option, checked: values[name] === option, onChange: () => setValue(name, option), required: required }), jsx("span", { children: option })] }, option))) })] }));
|
|
2408
|
+
const CheckToggle = ({ label, name, values, setValue, }) => (jsxs("div", { className: styles$7.checkToggle, children: [jsx(Toggle, { "aria-label": label, checked: isEnabledValue(values[name]), onChange: (checked) => setValue(name, checked ? 1 : 0), size: "sm" }), jsx("span", { children: label })] }));
|
|
2409
|
+
const YesNo = ({ label, name, values, setValue }) => (jsx(ChoiceGroup, { label: label, name: name, options: ['Yes', 'No'], values: { ...values, [name]: values[name] === 1 ? 'Yes' : values[name] === 0 ? 'No' : values[name] }, setValue: (_, value) => setValue(name, value === 'Yes' ? 1 : 0), required: true }));
|
|
2410
|
+
const SegmentHeader = ({ label, index, canDelete, onDelete }) => (jsxs("div", { className: styles$7.segmentHeader, children: [jsxs("span", { children: [label, " ", index + 1] }), canDelete && jsxs(Button, { type: "button", size: "sm", variant: "outline", rightIcon: jsx(TrashIcon$2, { size: 14 }), onClick: onDelete, children: ["Delete ", label] })] }));
|
|
2411
|
+
const FlightRequest = ({ prefix, values, setValue, cateringOptions, }) => {
|
|
2412
|
+
const typeName = `${prefix}multiplesegments`;
|
|
2413
|
+
const flightType = textValue(values[typeName]);
|
|
2414
|
+
const allowsMultiple = flightType === 'One Way' || flightType === 'Multiple Destinations';
|
|
2415
|
+
const [count, setCount] = useState(1);
|
|
2416
|
+
const isCharter = prefix === 'charter';
|
|
2417
|
+
const fieldName = (name, index) => isCharter ? prefixedFieldName('charter', name, index) : airFieldName(name, index);
|
|
2418
|
+
const segmentFields = isCharter
|
|
2419
|
+
? ['departlocation', 'departdate', 'departtime', 'departtime_tbd', 'departonewayoutboundpricing', 'arrivelocation', 'returndate', 'returntime', 'arrivetime_tbd', 'cateringoptions', 'departlocationfbo', 'preferredcarriers']
|
|
2420
|
+
: ['departlocation', 'departdate', 'departtime', 'departlowestfareanytime', 'arrivelocation', 'returndate', 'returntime', 'arrivelowestfareanytime', 'preferredcarriers', 'passengertargetfare'];
|
|
2421
|
+
const deleteSegment = (index) => {
|
|
2422
|
+
for (let position = index; position < count; position += 1) {
|
|
2423
|
+
segmentFields.forEach((field) => {
|
|
2424
|
+
const current = fieldName(field, position);
|
|
2425
|
+
const next = fieldName(field, position + 1);
|
|
2426
|
+
setValue(current, position === count - 1 ? '' : values[next]);
|
|
2427
|
+
});
|
|
2428
|
+
}
|
|
2429
|
+
setCount((current) => Math.max(1, current - 1));
|
|
2430
|
+
};
|
|
2431
|
+
return (jsxs(Fragment, { children: [isCharter && jsxs(Alert, { children: [jsx("strong", { children: "NOTE:" }), " Desired departure times are shared with carrier partners immediately, and availability may require schedule adjustments."] }), jsx(ChoiceGroup, { label: "Flight Type", name: typeName, options: FLIGHT_TYPES, values: values, setValue: (name, value) => {
|
|
2432
|
+
setValue(name, value);
|
|
2433
|
+
if (value === 'Round Trip')
|
|
2434
|
+
setCount(1);
|
|
2435
|
+
}, required: true }), jsxs("div", { className: styles$7.segments, children: [Array.from({ length: count }, (_, index) => {
|
|
2436
|
+
const departLocation = fieldName('departlocation', index);
|
|
2437
|
+
const departDate = fieldName('departdate', index);
|
|
2438
|
+
const departTime = fieldName('departtime', index);
|
|
2439
|
+
const arrivalLocation = fieldName('arrivelocation', index);
|
|
2440
|
+
const returnDate = fieldName('returndate', index);
|
|
2441
|
+
const returnTime = fieldName('returntime', index);
|
|
2442
|
+
return (jsxs(Accordion, { header: jsx(SegmentHeader, { label: "Flight", index: index, canDelete: allowsMultiple && count > 1, onDelete: () => deleteSegment(index) }), showTimeline: true, children: [jsx(Field, { label: "Departure Airport", name: departLocation, values: values, setValue: setValue, required: true }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Departure Date", name: departDate, values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: isCharter ? 'Desired Departure Time' : 'Departure Time', name: departTime, values: values, setValue: setValue, type: isCharter ? 'time' : 'text', options: isCharter ? undefined : FLIGHT_TIMES.map((option) => ({ label: option, value: option })), required: !isCharter })] }), isCharter
|
|
2443
|
+
? jsxs(Fragment, { children: [jsx(CheckToggle, { label: "Departure Time TBD", name: fieldName('departtime_tbd', index), values: values, setValue: setValue }), ['Round Trip', 'Multiple Destinations'].includes(flightType) && jsx(CheckToggle, { label: "Also Include Pricing for One Way Outbound Flight", name: fieldName('departonewayoutboundpricing', index), values: values, setValue: setValue })] })
|
|
2444
|
+
: jsx(CheckToggle, { label: "Also Consider Lowest Fare Anytime of Day", name: fieldName('departlowestfareanytime', index), values: values, setValue: setValue }), jsx(Field, { label: "Arrival Airport", name: arrivalLocation, values: values, setValue: setValue, required: true }), flightType === 'Round Trip' && jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Return Date", name: returnDate, values: values, setValue: setValue, type: "date", min: textValue(values[departDate]) || textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: isCharter ? 'Desired Return Time' : 'Return Time', name: returnTime, values: values, setValue: setValue, type: isCharter ? 'time' : 'text', options: isCharter ? undefined : FLIGHT_TIMES.map((option) => ({ label: option, value: option })), required: !isCharter })] }), isCharter
|
|
2445
|
+
? jsxs(Fragment, { children: [flightType === 'Round Trip' && jsx(CheckToggle, { label: "Return Time TBD", name: fieldName('arrivetime_tbd', index), values: values, setValue: setValue }), flightType === 'Round Trip' && jsx(CheckToggle, { label: "Also Include Pricing for One Way Return Flight", name: "charterarriveonewayreturnpricing", values: values, setValue: setValue }), jsxs(FormRow, { columns: 3, children: [jsx(Field, { label: "Catering Options", name: fieldName('cateringoptions', index), values: values, setValue: setValue, options: cateringOptions.map((option) => ({ label: option, value: option })), required: true }), jsx(Field, { label: "Preferred FBO (Departure Airport)", name: fieldName('departlocationfbo', index), values: values, setValue: setValue }), jsx(Field, { label: "Preferred Carriers", name: fieldName('preferredcarriers', index), values: values, setValue: setValue })] })] })
|
|
2446
|
+
: jsxs(Fragment, { children: [flightType === 'Round Trip' && jsx(CheckToggle, { label: "Also Consider Lowest Fare Anytime of Day", name: fieldName('arrivelowestfareanytime', index), values: values, setValue: setValue }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Preferred Carriers", name: fieldName('preferredcarriers', index), values: values, setValue: setValue }), jsx(Field, { label: "Target Fare Per Passenger", name: fieldName('passengertargetfare', index), values: values, setValue: setValue, type: "number", min: 0 })] })] })] }, `${prefix}-${index}`));
|
|
2447
|
+
}), allowsMultiple && count < 4 && jsx("div", { children: jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsx(PlusIcon$2, { size: 16 }), onClick: () => setCount((current) => current + 1), children: "Add Flight" }) })] }), isCharter && jsx(ChoiceGroup, { label: "Preferred Aircraft Seating", name: "charterpreferredseatingrange", options: AIRCRAFT_SEATING, values: values, setValue: setValue }), jsx(Field, { label: "General Notes on Air Request", name: isCharter ? 'details_charters' : 'details_air', values: values, setValue: setValue, multiline: true })] }));
|
|
2448
|
+
};
|
|
2449
|
+
const HotelRequest = ({ values, setValue }) => {
|
|
2450
|
+
const [count, setCount] = useState(1);
|
|
2451
|
+
const totalRooms = Array.from({ length: count }, (_, index) => Number(values[hotelFieldName('rooms', index)] || 0)).reduce((total, rooms) => total + rooms, 0);
|
|
2452
|
+
const deleteHotel = (index) => {
|
|
2453
|
+
const fields = ['hotellocation', 'hotelproperty', 'kings', 'doubles', 'rooms', 'checkin', 'checkout'];
|
|
2454
|
+
for (let position = index; position < count; position += 1) {
|
|
2455
|
+
fields.forEach((field) => setValue(hotelFieldName(field, position), position === count - 1 ? '' : values[hotelFieldName(field, position + 1)]));
|
|
2456
|
+
}
|
|
2457
|
+
setCount((current) => Math.max(1, current - 1));
|
|
2458
|
+
};
|
|
2459
|
+
const updateRooms = (index, type, value) => {
|
|
2460
|
+
setValue(hotelFieldName(type, index), value);
|
|
2461
|
+
const other = type === 'kings' ? 'doubles' : 'kings';
|
|
2462
|
+
setValue(hotelFieldName('rooms', index), Number(value || 0) + Number(values[hotelFieldName(other, index)] || 0));
|
|
2463
|
+
};
|
|
2464
|
+
return jsxs(Fragment, { children: [totalRooms > 0 && totalRooms < 8 && jsxs(Alert, { children: [jsx("strong", { children: "NOTE:" }), " Seven or fewer rooms are booked by an agent instead of STM Stay."] }), jsxs("div", { className: styles$7.segments, children: [Array.from({ length: count }, (_, index) => jsxs(Accordion, { header: jsx(SegmentHeader, { label: "Hotel", index: index, canDelete: count > 1, onDelete: () => deleteHotel(index) }), showTimeline: true, children: [jsx(Field, { label: "City", name: hotelFieldName('hotellocation', index), values: values, setValue: setValue, required: true }), jsx(Field, { label: "Preferred Hotel(s)", name: hotelFieldName('hotelproperty', index), values: values, setValue: setValue }), jsxs(FormRow, { columns: 3, children: [jsx(Field, { label: "# of King Rooms", name: hotelFieldName('kings', index), values: values, setValue: (_name, value) => updateRooms(index, 'kings', value), type: "number", min: 0, max: 999, required: true }), jsx(Field, { label: "# of Double Rooms", name: hotelFieldName('doubles', index), values: values, setValue: (_name, value) => updateRooms(index, 'doubles', value), type: "number", min: 0, max: 999, required: true }), jsx(Field, { label: "Total Rooms", name: hotelFieldName('rooms', index), values: values, setValue: setValue, disabled: true })] }), jsx(Alert, { variant: "error", children: "Please include bus driver room if needed." }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Check-In Date", name: hotelFieldName('checkin', index), values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: "Check-Out Date", name: hotelFieldName('checkout', index), values: values, setValue: setValue, type: "date", min: textValue(values[hotelFieldName('checkin', index)]) || textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true })] })] }, index)), count < 3 && jsx("div", { children: jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsx(PlusIcon$2, { size: 16 }), onClick: () => setCount((current) => current + 1), children: "Add Hotel" }) })] }), jsx(YesNo, { label: "Do you need a room for the bus driver?", name: "busdriverroom", values: values, setValue: setValue }), totalRooms > 7 && jsxs(Fragment, { children: [jsx(YesNo, { label: "Do you need meeting space for the team?", name: "teammeetingspaceflag", values: values, setValue: setValue }), Number(values.teammeetingspaceflag) === 1 && jsx(Field, { label: "How many people do you need the meeting space set for?", name: "teammeetingspace", values: values, setValue: setValue, type: "number", min: 1, max: 999, required: true })] }), jsx(Field, { label: "General Notes on Hotel Request", name: "details_hotel", values: values, setValue: setValue, multiline: true })] });
|
|
2465
|
+
};
|
|
2466
|
+
const VehicleRentalRequest = ({ values, setValue }) => {
|
|
2467
|
+
const hasAir = isEnabledValue(values.air) || isEnabledValue(values.charter);
|
|
2468
|
+
return jsxs(Fragment, { children: [jsxs(FormRow, { columns: 3, children: [jsx(Field, { label: "Pickup Date", name: "pickupdate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: "Pickup Time", name: "pickuptime", values: values, setValue: setValue, type: "time", required: !hasAir }), jsx(Field, { label: "Pickup Location", name: "pickuplocation", values: values, setValue: setValue, required: true })] }), hasAir && jsx(CheckToggle, { label: "I will be picking up from the airport", name: "carairportpickup", values: values, setValue: (name, value) => {
|
|
2469
|
+
setValue(name, value);
|
|
2470
|
+
if (Number(value) === 1)
|
|
2471
|
+
setValue('pickuplocation', values.arrivelocation || values.charterarrivelocation);
|
|
2472
|
+
} }), jsxs(FormRow, { columns: 3, children: [jsx(Field, { label: "Drop Off Date", name: "dropoffdate", values: values, setValue: setValue, type: "date", min: textValue(values.pickupdate) || textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: "Drop Off Time", name: "dropofftime", values: values, setValue: setValue, type: "time", required: !hasAir }), jsx(Field, { label: "Drop Off Location", name: "cardropofflocation", values: values, setValue: setValue, required: true })] }), hasAir && jsx(CheckToggle, { label: "I will be dropping off at the airport", name: "carairportdropoff", values: values, setValue: setValue }), jsx(Field, { label: "# of Rentals", name: "carqty", values: values, setValue: setValue, type: "number", min: 1, max: 99, required: true }), jsx(Field, { label: "Vehicle Type/Size Preference", name: "carsizepref", values: values, setValue: setValue, placeholder: "Economy, Compact, ..." }), jsx(Field, { label: "Driver Name(s) for Reservation", name: "cardriver", values: values, setValue: setValue, placeholder: "Name 1, Name 2", required: true }), jsx(Field, { label: "General Notes on Vehicle Rental Request", name: "details_ground", values: values, setValue: setValue, multiline: true })] });
|
|
2473
|
+
};
|
|
2474
|
+
const BusRequest = ({ values, setValue, schoolAddress }) => {
|
|
2475
|
+
const [destinations, setDestinations] = useState(1);
|
|
2476
|
+
const busType = textValue(values.bustype);
|
|
2477
|
+
const destinationName = (index) => `busdestination${suffix(index)}`;
|
|
2478
|
+
const updateBusType = (name, value) => {
|
|
2479
|
+
setValue(name, value);
|
|
2480
|
+
if (['Drive To & From Campus', 'Drive to Event/Fly Home'].includes(String(value)))
|
|
2481
|
+
setValue('buspickuplocation', schoolAddress);
|
|
2482
|
+
if (['Drive To & From Campus', 'Fly to Event/Drive Home'].includes(String(value)))
|
|
2483
|
+
setValue('busdropofflocation', schoolAddress);
|
|
2484
|
+
};
|
|
2485
|
+
const deleteDestination = (index) => {
|
|
2486
|
+
for (let position = index; position < destinations; position += 1)
|
|
2487
|
+
setValue(destinationName(position), position === destinations - 1 ? '' : values[destinationName(position + 1)]);
|
|
2488
|
+
setDestinations((current) => Math.max(1, current - 1));
|
|
2489
|
+
};
|
|
2490
|
+
return jsxs(Fragment, { children: [jsx(ChoiceGroup, { label: "Charter Bus Type", name: "bustype", options: BUS_TYPES, values: values, setValue: updateBusType, required: true }), busType && busType !== BUS_TYPES[0] && jsx(CheckToggle, { label: "Do you need local airport transfers?", name: "buslocalairporttransfers", values: values, setValue: setValue }), jsxs(FormRow, { columns: 3, children: [jsx(Field, { label: "Pickup Date", name: "buspickupdate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: "Pickup Time", name: "buspickuptime", values: values, setValue: setValue, type: "time", required: true }), jsx(Field, { label: "# of Buses", name: "numbuses", values: values, setValue: setValue, type: "number", min: 1, max: 99, required: true })] }), jsx(Field, { label: "Motorcoach/Airport Pickup Location", name: "buspickuplocation", values: values, setValue: setValue, required: true }), jsxs("div", { className: styles$7.destinationList, children: [jsx("span", { className: styles$7.label, children: "Destinations *" }), Array.from({ length: destinations }, (_, index) => jsxs("div", { className: styles$7.destinationRow, children: [jsx(Field, { label: `Destination ${index + 1}`, name: destinationName(index), values: values, setValue: setValue, placeholder: `Destination ${index + 1}`, required: true }), destinations > 1 && jsx(Button, { type: "button", size: "sm", variant: "outline", square: true, "aria-label": `Delete Destination ${index + 1}`, onClick: () => deleteDestination(index), children: jsx(TrashIcon$2, { size: 16 }) })] }, index)), destinations < 4 && jsx("div", { children: jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsx(PlusIcon$2, { size: 16 }), onClick: () => setDestinations((current) => current + 1), children: "Add Destination" }) })] }), busType === BUS_TYPES[1] && jsx(CheckToggle, { label: "Are you flying back from a different airport than you flew in to?", name: "busdifferentairport", values: values, setValue: setValue }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Return / Drop Off Date", name: "busreturndate", values: values, setValue: setValue, type: "date", min: textValue(values.buspickupdate) || textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsx(Field, { label: "Return / Drop Off Time", name: "busreturntime", values: values, setValue: setValue, type: "time", required: true })] }), jsx(Field, { label: "Motorcoach/Airport Dropoff Location", name: "busdropofflocation", values: values, setValue: setValue, required: true }), jsx(Field, { label: "General Notes on Bus Charter Request", name: "busdetails", values: values, setValue: setValue, multiline: true })] });
|
|
2491
|
+
};
|
|
2492
|
+
const SummaryRow = ({ label, value }) => !value ? null : jsxs("div", { className: styles$7.summaryRow, children: [jsx("span", { children: label }), jsx("strong", { children: String(value) })] });
|
|
2493
|
+
const RequestSummary = ({ values, enabled }) => {
|
|
2494
|
+
const sections = [
|
|
2495
|
+
enabled.air && { key: 'air', title: 'Commercial Air Request', rows: [['Flight Type', values.airmultiplesegments], ['Departure Airport', values.departlocation], ['Departure Date', values.departdate], ['Arrival Airport', values.arrivelocation]] },
|
|
2496
|
+
enabled.charter && { key: 'charter', title: 'Charter Air Request', rows: [['Flight Type', values.chartermultiplesegments], ['Departure Airport', values.charterdepartlocation], ['Departure Date', values.charterdepartdate], ['Arrival Airport', values.charterarrivelocation]] },
|
|
2497
|
+
enabled.hotel && { key: 'hotel', title: 'Hotel Request', rows: [['City', values.hotellocation], ['Preferred Hotel(s)', values.hotelproperty], ['# of King Rooms', values.kings], ['# of Double Rooms', values.doubles], ['Check In', values.checkin], ['Check Out', values.checkout]] },
|
|
2498
|
+
enabled.ground && { key: 'ground', title: 'Vehicle Rental Request', rows: [['Number of Rentals', values.carqty], ['Vehicle Type/Size Preference', values.carsizepref], ['Pickup Location', values.pickuplocation], ['Pickup Date', values.pickupdate], ['Drop-off Location', values.cardropofflocation]] },
|
|
2499
|
+
enabled.busneeded && { key: 'busneeded', title: 'Bus Charter Request', rows: [['Charter Bus Type', values.bustype], ['Number of Buses', values.numbuses], ['Pickup Location', values.buspickuplocation], ['Pickup Date', values.buspickupdate], ['Return Date', values.busreturndate]] },
|
|
2500
|
+
].filter(Boolean);
|
|
2501
|
+
const populated = sections.filter((section) => section.rows.some(([, value]) => Boolean(value)));
|
|
2502
|
+
return jsxs("div", { className: styles$7.summaryCard, children: [jsx("h2", { children: "Request Summary" }), populated.map((section) => jsxs("section", { className: styles$7.summarySection, children: [jsx("h3", { children: section.title }), section.rows.map(([label, value]) => jsx(SummaryRow, { label: label, value: value }, label))] }, section.key)), !populated.length && jsx("p", { className: styles$7.emptySummary, children: "No services selected" })] });
|
|
2503
|
+
};
|
|
2504
|
+
const GroupTravelRequestPage = ({ eventName = 'New Trip', totalPages = 1, onSubmit, onCancel, onChange, initialValues = {}, contacts = [], cateringOptions = DEFAULT_CATERING, schoolAddress = '', services = DEFAULT_SERVICES, summarySections, className = '', }) => {
|
|
2422
2505
|
const [currentPage, setCurrentPage] = useState(1);
|
|
2423
|
-
const [
|
|
2506
|
+
const [activeTab, setActiveTab] = useState('form');
|
|
2507
|
+
const [activeService, setActiveService] = useState('general');
|
|
2508
|
+
const [validationMessage, setValidationMessage] = useState('');
|
|
2509
|
+
const [values, setValues] = useState(() => ({
|
|
2510
|
+
air: 0,
|
|
2511
|
+
charter: 0,
|
|
2512
|
+
hotel: 0,
|
|
2513
|
+
ground: 0,
|
|
2514
|
+
busneeded: 0,
|
|
2515
|
+
...initialValues,
|
|
2516
|
+
...(initialValues.bus !== undefined && initialValues.busneeded === undefined ? { busneeded: initialValues.bus } : {}),
|
|
2517
|
+
}));
|
|
2518
|
+
const enabled = useMemo(() => ({
|
|
2424
2519
|
general: true,
|
|
2425
|
-
air:
|
|
2426
|
-
charter:
|
|
2427
|
-
hotel:
|
|
2428
|
-
ground:
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2520
|
+
air: isEnabledValue(values.air),
|
|
2521
|
+
charter: isEnabledValue(values.charter),
|
|
2522
|
+
hotel: isEnabledValue(values.hotel),
|
|
2523
|
+
ground: isEnabledValue(values.ground),
|
|
2524
|
+
busneeded: isEnabledValue(values.busneeded),
|
|
2525
|
+
}), [values]);
|
|
2526
|
+
const setValue = (name, value) => {
|
|
2527
|
+
setValues((current) => {
|
|
2528
|
+
const next = { ...current, [name]: value };
|
|
2529
|
+
onChange?.(next);
|
|
2530
|
+
return next;
|
|
2531
|
+
});
|
|
2532
|
+
setValidationMessage('');
|
|
2437
2533
|
};
|
|
2438
|
-
const
|
|
2439
|
-
|
|
2440
|
-
if (
|
|
2441
|
-
|
|
2442
|
-
}
|
|
2534
|
+
const toggleService = (key, checked) => {
|
|
2535
|
+
setValue(key === 'bus' ? 'busneeded' : key, checked ? 1 : 0);
|
|
2536
|
+
if (checked)
|
|
2537
|
+
setActiveService((key === 'bus' ? 'busneeded' : key));
|
|
2443
2538
|
};
|
|
2444
|
-
const
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
onCancel?.();
|
|
2539
|
+
const submit = (event) => {
|
|
2540
|
+
event.preventDefault();
|
|
2541
|
+
if (![enabled.air, enabled.charter, enabled.hotel, enabled.ground, enabled.busneeded].some(Boolean)) {
|
|
2542
|
+
setValidationMessage('At least one service must be selected.');
|
|
2543
|
+
return;
|
|
2450
2544
|
}
|
|
2451
|
-
};
|
|
2452
|
-
const handleNext = () => {
|
|
2453
2545
|
if (currentPage < totalPages) {
|
|
2454
|
-
setCurrentPage(
|
|
2455
|
-
|
|
2456
|
-
else {
|
|
2457
|
-
onSubmit?.(formValues);
|
|
2546
|
+
setCurrentPage((page) => page + 1);
|
|
2547
|
+
return;
|
|
2458
2548
|
}
|
|
2549
|
+
onSubmit?.(values);
|
|
2459
2550
|
};
|
|
2460
|
-
const
|
|
2461
|
-
|
|
2551
|
+
const previous = () => currentPage > 1 ? setCurrentPage((page) => page - 1) : onCancel?.();
|
|
2552
|
+
const contactOptions = contacts.map((contact) => ({ label: contact.name, value: String(contact.id) }));
|
|
2553
|
+
const selectContact = (field, id) => {
|
|
2554
|
+
const contact = contacts.find((item) => String(item.id) === String(id));
|
|
2555
|
+
setValue(`${field}id`, id);
|
|
2556
|
+
setValue(field, contact?.name ?? '');
|
|
2557
|
+
setValue(`${field}phone`, contact?.phone ?? '');
|
|
2558
|
+
setValue(`${field}email`, contact?.email ?? '');
|
|
2462
2559
|
};
|
|
2463
|
-
|
|
2560
|
+
const section = (key, title, icon, body) => enabled[key] && (jsx("div", { id: key, className: styles$7.serviceSection, "data-mobile-active": activeService === key, children: jsx(FormSection, { title: title, icon: icon, status: key === 'general' ? undefined : 'not-submitted', children: body }) }));
|
|
2561
|
+
return jsxs("form", { className: `${styles$7.page} ${className}`, onSubmit: submit, "aria-label": "Group Travel Request form", children: [jsx("header", { className: styles$7.pageHeader, children: jsxs("h1", { children: ["Group Travel Request ", totalPages > 1 && jsxs("span", { children: ["(", currentPage, "/", totalPages, ")"] }), " ", jsxs("span", { children: ["\u2013 ", eventName] })] }) }), jsxs("div", { className: styles$7.mobileTabs, children: [jsx("button", { type: "button", className: activeTab === 'form' ? styles$7.activeTab : '', onClick: () => setActiveTab('form'), children: "Request Form" }), jsx("button", { type: "button", className: activeTab === 'summary' ? styles$7.activeTab : '', onClick: () => setActiveTab('summary'), children: "Summary" })] }), activeTab === 'form' && jsx("div", { className: styles$7.mobileServices, children: services.map((service) => jsxs("button", { type: "button", className: activeService === service.key ? styles$7.activeService : '', onClick: () => setActiveService((service.key === 'bus' ? 'busneeded' : service.key)), children: [service.icon, jsx("span", { children: service.label })] }, service.key)) }), jsxs("div", { className: styles$7.workspace, children: [jsxs("aside", { className: styles$7.serviceSidebar, children: [jsx(ServiceToggleList, { services: services, enabledServices: enabled, onToggle: toggleService, onClick: (key) => document.getElementById(key)?.scrollIntoView({ behavior: 'smooth', block: 'start' }) }), jsxs("div", { className: styles$7.tripEvents, children: [jsx("h3", { children: "Trip Events" }), jsxs("p", { children: [jsx(CalendarIcon$1, { size: 17 }), " ", eventName] })] })] }), jsxs("main", { className: `${styles$7.formMain} ${activeTab !== 'form' ? styles$7.mobileHidden : ''}`, children: [validationMessage && jsx(Alert, { variant: "error", children: validationMessage }), activeService !== 'general' && !enabled[activeService] && jsxs("div", { className: styles$7.mobileEnable, children: [jsx("span", { children: "Enable Service" }), jsx(Toggle, { "aria-label": `Enable ${activeService}`, checked: false, onChange: (checked) => toggleService(activeService, checked), size: "sm" })] }), section('general', 'General Details', jsx(EventsIcon, {}), jsxs(Fragment, { children: [jsx(Field, { label: "Travel Party Size", name: "attendees", values: values, setValue: setValue, type: "number", min: 1, max: 999, note: "For Commercial Air requests, begin with the largest expected travel party.", required: true }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Trip Start", name: "tripstartdate", values: values, setValue: setValue, type: "date", required: true }), jsx(Field, { label: "Trip Return", name: "tripreturndate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), required: true })] }), jsxs("div", { className: styles$7.contactGroup, children: [jsx("span", { className: styles$7.label, children: "Booking Contact *" }), jsx(Field, { label: "Full Name", name: "bookingcontact", values: values, setValue: setValue, disabled: true }), jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Phone Number", name: "bookingcontactphone", values: values, setValue: setValue, disabled: true }), jsx(Field, { label: "Email Address", name: "bookingcontactemail", values: values, setValue: setValue, type: "email", disabled: true })] })] }), jsx(Field, { label: "Request Email CC", name: "ccemail", values: values, setValue: setValue, type: "email", note: "Email addresses, comma delimited." }), jsx(Field, { label: "Main Travel Contact", name: "travelcontactid", values: values, setValue: (_name, value) => selectContact('travelcontact', value), options: contactOptions, required: true }), values.travelcontact && jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Main Contact Phone", name: "travelcontactphone", values: values, setValue: setValue, disabled: true }), jsx(Field, { label: "Main Contact Email", name: "travelcontactemail", values: values, setValue: setValue, disabled: true })] }), jsx(Field, { label: "Alternate Travel Contact", name: "alternatetravelcontactid", values: values, setValue: (_name, value) => selectContact('alternatetravelcontact', value), options: contactOptions }), values.alternatetravelcontact && jsxs(FormRow, { columns: 2, children: [jsx(Field, { label: "Alternate Contact Phone", name: "alternatetravelcontactphone", values: values, setValue: setValue, disabled: true }), jsx(Field, { label: "Alternate Contact Email", name: "alternatetravelcontactemail", values: values, setValue: setValue, disabled: true })] }), jsx(YesNo, { label: "Is this request for an elimination event or tournament that could require early departure?", name: "tournamenttripelimination", values: values, setValue: setValue }), jsx(Field, { label: "General Notes Regarding This Trip", name: "notes", values: values, setValue: setValue, multiline: true })] })), section('air', 'Commercial Air Request', jsx(PlaneIcon$3, { size: 24 }), jsx(FlightRequest, { prefix: "air", values: values, setValue: setValue, cateringOptions: cateringOptions })), section('charter', 'Charter Air Request', jsx(PlaneIcon$3, { size: 24 }), jsx(FlightRequest, { prefix: "charter", values: values, setValue: setValue, cateringOptions: cateringOptions })), section('hotel', 'Hotel Request', jsx(HotelIcon$3, { size: 24 }), jsx(HotelRequest, { values: values, setValue: setValue })), section('ground', 'Vehicle Rental Request', jsx(CarIcon$1, { size: 24 }), jsx(VehicleRentalRequest, { values: values, setValue: setValue })), section('busneeded', 'Bus Charter Request', jsx(BusIcon$2, { size: 24 }), jsx(BusRequest, { values: values, setValue: setValue, schoolAddress: schoolAddress }))] }), jsx("aside", { className: `${styles$7.summarySidebar} ${activeTab !== 'summary' ? styles$7.summaryMobileHidden : ''}`, children: jsx(RequestSummary, { values: values, enabled: enabled }) })] }), jsxs("footer", { className: styles$7.pageFooter, children: [jsx(Button, { type: "button", variant: "secondary", onClick: previous, children: currentPage === 1 ? totalPages > 1 ? 'Cancel All' : 'Cancel' : 'Previous' }), totalPages > 1 && jsx("div", { className: styles$7.pageButtons, children: Array.from({ length: totalPages }, (_, index) => jsx("button", { type: "button", className: currentPage === index + 1 ? styles$7.currentPage : '', disabled: index + 1 > currentPage, onClick: () => setCurrentPage(index + 1), children: index + 1 }, index)) }), jsx(Button, { type: "submit", children: currentPage === totalPages ? totalPages > 1 ? 'Submit All' : 'Submit' : 'Next' })] })] });
|
|
2464
2562
|
};
|
|
2465
2563
|
GroupTravelRequestPage.displayName = 'GroupTravelRequestPage';
|
|
2466
2564
|
|
|
@@ -2547,9 +2645,9 @@ var styles$5 = {"page":"InfoCenterPage-module_page__HHBce","breadcrumb":"InfoCen
|
|
|
2547
2645
|
|
|
2548
2646
|
const CATEGORY_META = {
|
|
2549
2647
|
Alert: { label: 'Alert', icon: WarningIcon$1, alert: true },
|
|
2550
|
-
Air: { label: 'Air', icon: PlaneIcon$
|
|
2551
|
-
Car: { label: 'Car', icon: CarIcon$
|
|
2552
|
-
Hotel: { label: 'Hotel', icon: HotelIcon$
|
|
2648
|
+
Air: { label: 'Air', icon: PlaneIcon$3 },
|
|
2649
|
+
Car: { label: 'Car', icon: CarIcon$1 },
|
|
2650
|
+
Hotel: { label: 'Hotel', icon: HotelIcon$3 },
|
|
2553
2651
|
Policy: { label: 'Policy', icon: DocumentIcon },
|
|
2554
2652
|
General: { label: 'General', icon: DocumentIcon },
|
|
2555
2653
|
STM: { label: "Short's Info", icon: InfoIcon$1 },
|
|
@@ -2752,5 +2850,5 @@ const TripDetailPage = ({ header, airSegment, groundSegment, hotelSegment, files
|
|
|
2752
2850
|
};
|
|
2753
2851
|
TripDetailPage.displayName = 'TripDetailPage';
|
|
2754
2852
|
|
|
2755
|
-
export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon$
|
|
2853
|
+
export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon$2 as BusIcon, Button, CalendarIcon$1 as CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon$1 as CarIcon, Card, CardBody, CardFooter, CardHeader, CharterManifestPage, CheckIcon$2 as CheckIcon, Checkbox, ChevronDownIcon$1 as ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon$1 as ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon$2 as EditIcon, EyeIcon, FilterChip, FilterIcon$1 as FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GroundSegment, GroupTravelRequestPage, HUB_ADMIN_ITEM, HUB_INDIVIDUAL_TRAVEL_ITEM, HUB_NAV_ITEMS, HomeIcon, HotelIcon$3 as HotelIcon, HotelSegment, HubAppShell, Icons, IndividualTravelPage, InfoCenterPage, InfoIcon$1 as InfoIcon, Input, LightbulbIcon, LimoIcon, LockIcon$1 as LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, PageBanners, PhoneIcon, PlaneIcon$3 as PlaneIcon, PlusIcon$2 as PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, RailIcon, RefreshIcon, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary$1 as RequestSummary, RosterToolbar, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon$1 as SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, Table, Tag, TeamCard, TeamEquipmentForm, TeamHeader, TeamImportForm, TeamManagementPage, TeamProgramForm, TeamRosterMemberForm, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleEditor, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarPage, TeamUserAccessForm, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon$2 as TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UploadIcon, UserIcon, UsersIcon$1 as UsersIcon, WarningIcon$1 as WarningIcon, XIcon, formatCompactTripCost, formatTeamScheduleTravelDates, isTravelDueDateCompleted };
|
|
2756
2854
|
//# sourceMappingURL=index.esm.js.map
|