@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.js CHANGED
@@ -9,12 +9,12 @@ const createIcon = (children, displayName) => {
9
9
  return Icon;
10
10
  };
11
11
  // Travel / segment type icons
12
- const PlaneIcon$4 = createIcon(jsxRuntime.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');
13
- const CarIcon$2 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.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" }), jsxRuntime.jsx("circle", { cx: "7", cy: "17", r: "2" }), jsxRuntime.jsx("path", { d: "M9 17h6" }), jsxRuntime.jsx("circle", { cx: "17", cy: "17", r: "2" })] }), 'CarIcon');
14
- const HotelIcon$4 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M10 22v-6.57" }), jsxRuntime.jsx("path", { d: "M12 11h.01" }), jsxRuntime.jsx("path", { d: "M12 7h.01" }), jsxRuntime.jsx("path", { d: "M14 15.43V22" }), jsxRuntime.jsx("path", { d: "M15 16a5 5 0 0 0-6 0" }), jsxRuntime.jsx("path", { d: "M16 11h.01" }), jsxRuntime.jsx("path", { d: "M16 7h.01" }), jsxRuntime.jsx("path", { d: "M8 11h.01" }), jsxRuntime.jsx("path", { d: "M8 7h.01" }), jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2" })] }), 'HotelIcon');
12
+ const PlaneIcon$3 = createIcon(jsxRuntime.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');
13
+ const CarIcon$1 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.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" }), jsxRuntime.jsx("circle", { cx: "7", cy: "17", r: "2" }), jsxRuntime.jsx("path", { d: "M9 17h6" }), jsxRuntime.jsx("circle", { cx: "17", cy: "17", r: "2" })] }), 'CarIcon');
14
+ const HotelIcon$3 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M10 22v-6.57" }), jsxRuntime.jsx("path", { d: "M12 11h.01" }), jsxRuntime.jsx("path", { d: "M12 7h.01" }), jsxRuntime.jsx("path", { d: "M14 15.43V22" }), jsxRuntime.jsx("path", { d: "M15 16a5 5 0 0 0-6 0" }), jsxRuntime.jsx("path", { d: "M16 11h.01" }), jsxRuntime.jsx("path", { d: "M16 7h.01" }), jsxRuntime.jsx("path", { d: "M8 11h.01" }), jsxRuntime.jsx("path", { d: "M8 7h.01" }), jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2" })] }), 'HotelIcon');
15
15
  const LimoIcon = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.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" }), jsxRuntime.jsx("path", { d: "M7 14h.01" }), jsxRuntime.jsx("path", { d: "M17 14h.01" }), jsxRuntime.jsx("rect", { width: "18", height: "8", x: "3", y: "10", rx: "2" }), jsxRuntime.jsx("path", { d: "M5 18v2" }), jsxRuntime.jsx("path", { d: "M19 18v2" })] }), 'LimoIcon');
16
16
  const RailIcon = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M8 3.1V7a4 4 0 0 0 8 0V3.1" }), jsxRuntime.jsx("path", { d: "m9 15-1-1" }), jsxRuntime.jsx("path", { d: "m15 15 1-1" }), jsxRuntime.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" }), jsxRuntime.jsx("path", { d: "m8 19-2 3" }), jsxRuntime.jsx("path", { d: "m16 19 2 3" })] }), 'RailIcon');
17
- const BusIcon$3 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M15 6v6" }), jsxRuntime.jsx("path", { d: "M2 12h19.6" }), jsxRuntime.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" }), jsxRuntime.jsx("circle", { cx: "7", cy: "18", r: "2" }), jsxRuntime.jsx("path", { d: "M9 18h5" }), jsxRuntime.jsx("circle", { cx: "16", cy: "18", r: "2" })] }), 'BusIcon');
17
+ const BusIcon$2 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M15 6v6" }), jsxRuntime.jsx("path", { d: "M2 12h19.6" }), jsxRuntime.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" }), jsxRuntime.jsx("circle", { cx: "7", cy: "18", r: "2" }), jsxRuntime.jsx("path", { d: "M9 18h5" }), jsxRuntime.jsx("circle", { cx: "16", cy: "18", r: "2" })] }), 'BusIcon');
18
18
  // Control / chrome icons
19
19
  const SearchIcon$1 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "11", cy: "11", r: "8" }), jsxRuntime.jsx("path", { d: "m21 21-4.3-4.3" })] }), 'SearchIcon');
20
20
  const ChevronDownIcon$1 = createIcon(jsxRuntime.jsx("path", { d: "m6 9 6 6 6-6" }), 'ChevronDownIcon');
@@ -61,12 +61,12 @@ const LockIcon$1 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
61
61
  const TrashIcon$2 = createIcon(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M3 6h18" }), jsxRuntime.jsx("path", { d: "M8 6V4h8v2" }), jsxRuntime.jsx("path", { d: "m19 6-1 15H6L5 6" }), jsxRuntime.jsx("path", { d: "M10 11v5" }), jsxRuntime.jsx("path", { d: "M14 11v5" })] }), 'TrashIcon');
62
62
  // Export all icons as a map for dynamic access
63
63
  const Icons = {
64
- Plane: PlaneIcon$4,
65
- Car: CarIcon$2,
66
- Hotel: HotelIcon$4,
64
+ Plane: PlaneIcon$3,
65
+ Car: CarIcon$1,
66
+ Hotel: HotelIcon$3,
67
67
  Limo: LimoIcon,
68
68
  Rail: RailIcon,
69
- Bus: BusIcon$3,
69
+ Bus: BusIcon$2,
70
70
  Search: SearchIcon$1,
71
71
  ChevronDown: ChevronDownIcon$1,
72
72
  ChevronUp: ChevronUpIcon,
@@ -1033,7 +1033,7 @@ const ServiceToggle = ({ label, icon, hasToggle = true, enabled = false, onToggl
1033
1033
  onClick();
1034
1034
  }
1035
1035
  };
1036
- return (jsxRuntime.jsxs("div", { className: styles$F.item, children: [jsxRuntime.jsxs("div", { className: `${styles$F.labelContainer} ${isClickable ? styles$F.clickable : ''}`, onClick: handleClick, children: [icon && jsxRuntime.jsx("span", { className: styles$F.icon, children: icon }), jsxRuntime.jsx("span", { className: styles$F.label, children: label })] }), hasToggle && (jsxRuntime.jsx(Toggle, { checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
1036
+ return (jsxRuntime.jsxs("div", { className: styles$F.item, children: [jsxRuntime.jsxs("div", { className: `${styles$F.labelContainer} ${isClickable ? styles$F.clickable : ''}`, onClick: handleClick, children: [icon && jsxRuntime.jsx("span", { className: styles$F.icon, children: icon }), jsxRuntime.jsx("span", { className: styles$F.label, children: label })] }), hasToggle && (jsxRuntime.jsx(Toggle, { "aria-label": label, checked: enabled, onChange: (checked) => onToggle?.(checked), disabled: disabled, size: "sm" }))] }));
1037
1037
  };
1038
1038
  /**
1039
1039
  * ServiceToggleList component for displaying a list of services with toggles.
@@ -1108,9 +1108,9 @@ TeamSubMenu.displayName = 'TeamSubMenu';
1108
1108
 
1109
1109
  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"};
1110
1110
 
1111
- const PlaneIcon$3 = () => (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1112
- const BusIcon$2 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M16 6v6" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
1113
- const HotelIcon$3 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1111
+ const PlaneIcon$2 = () => (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1112
+ const BusIcon$1 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M16 6v6" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
1113
+ const HotelIcon$2 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1114
1114
  const ArrowIcon = () => (jsxRuntime.jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), jsxRuntime.jsx("polyline", { points: "12 5 19 12 12 19" })] }));
1115
1115
  /**
1116
1116
  * Base TripSegment component wrapper
@@ -1125,7 +1125,7 @@ const AirSegment = ({ flights, variant = 'light', className = '', }) => {
1125
1125
  if (!flights || flights.length === 0) {
1126
1126
  return (jsxRuntime.jsx(TripSegment, { type: "air", variant: variant, className: className, children: jsxRuntime.jsx("span", { className: styles$C.empty, children: "No flights" }) }));
1127
1127
  }
1128
- return (jsxRuntime.jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(PlaneIcon$3, {}), jsxRuntime.jsx("span", { className: styles$C.itemType, children: flight.type === 'charter' ? 'Charter' : 'Commercial' })] }), jsxRuntime.jsxs("div", { className: styles$C.route, children: [jsxRuntime.jsx("span", { className: styles$C.location, children: flight.departure }), jsxRuntime.jsx(ArrowIcon, {}), jsxRuntime.jsx("span", { className: styles$C.location, children: flight.arrival })] }), jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: flight.departureDate }), flight.departureTime && jsxRuntime.jsx("span", { children: flight.departureTime })] }), flight.airline && (jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: flight.airline }), flight.flightNumber && jsxRuntime.jsxs("span", { children: ["#", flight.flightNumber] })] }))] }, i))) }));
1128
+ return (jsxRuntime.jsx(TripSegment, { type: "air", variant: variant, className: className, children: flights.map((flight, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(PlaneIcon$2, {}), jsxRuntime.jsx("span", { className: styles$C.itemType, children: flight.type === 'charter' ? 'Charter' : 'Commercial' })] }), jsxRuntime.jsxs("div", { className: styles$C.route, children: [jsxRuntime.jsx("span", { className: styles$C.location, children: flight.departure }), jsxRuntime.jsx(ArrowIcon, {}), jsxRuntime.jsx("span", { className: styles$C.location, children: flight.arrival })] }), jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: flight.departureDate }), flight.departureTime && jsxRuntime.jsx("span", { children: flight.departureTime })] }), flight.airline && (jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: flight.airline }), flight.flightNumber && jsxRuntime.jsxs("span", { children: ["#", flight.flightNumber] })] }))] }, i))) }));
1129
1129
  };
1130
1130
  /**
1131
1131
  * GroundSegment component for displaying ground transportation
@@ -1134,7 +1134,7 @@ const GroundSegment = ({ segments, variant = 'light', className = '', }) => {
1134
1134
  if (!segments || segments.length === 0) {
1135
1135
  return (jsxRuntime.jsx(TripSegment, { type: "ground", variant: variant, className: className, children: jsxRuntime.jsx("span", { className: styles$C.empty, children: "No ground transportation" }) }));
1136
1136
  }
1137
- return (jsxRuntime.jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(BusIcon$2, {}), jsxRuntime.jsx("span", { className: styles$C.itemType, children: segment.type.charAt(0).toUpperCase() + segment.type.slice(1) })] }), jsxRuntime.jsxs("div", { className: styles$C.route, children: [jsxRuntime.jsx("span", { className: styles$C.location, children: segment.pickupLocation }), jsxRuntime.jsx(ArrowIcon, {}), jsxRuntime.jsx("span", { className: styles$C.location, children: segment.dropoffLocation })] }), jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: segment.pickupDate }), segment.pickupTime && jsxRuntime.jsx("span", { children: segment.pickupTime })] }), segment.company && (jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: segment.company }), segment.vehicleCount && jsxRuntime.jsxs("span", { children: [segment.vehicleCount, " vehicles"] })] }))] }, i))) }));
1137
+ return (jsxRuntime.jsx(TripSegment, { type: "ground", variant: variant, className: className, children: segments.map((segment, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(BusIcon$1, {}), jsxRuntime.jsx("span", { className: styles$C.itemType, children: segment.type.charAt(0).toUpperCase() + segment.type.slice(1) })] }), jsxRuntime.jsxs("div", { className: styles$C.route, children: [jsxRuntime.jsx("span", { className: styles$C.location, children: segment.pickupLocation }), jsxRuntime.jsx(ArrowIcon, {}), jsxRuntime.jsx("span", { className: styles$C.location, children: segment.dropoffLocation })] }), jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: segment.pickupDate }), segment.pickupTime && jsxRuntime.jsx("span", { children: segment.pickupTime })] }), segment.company && (jsxRuntime.jsxs("div", { className: styles$C.details, children: [jsxRuntime.jsx("span", { children: segment.company }), segment.vehicleCount && jsxRuntime.jsxs("span", { children: [segment.vehicleCount, " vehicles"] })] }))] }, i))) }));
1138
1138
  };
1139
1139
  /**
1140
1140
  * HotelSegment component for displaying hotel information
@@ -1143,7 +1143,7 @@ const HotelSegment = ({ hotels, variant = 'light', className = '', }) => {
1143
1143
  if (!hotels || hotels.length === 0) {
1144
1144
  return (jsxRuntime.jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: jsxRuntime.jsx("span", { className: styles$C.empty, children: "No hotels" }) }));
1145
1145
  }
1146
- return (jsxRuntime.jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(HotelIcon$3, {}), jsxRuntime.jsx("span", { className: styles$C.itemName, children: hotel.name })] }), hotel.city && (jsxRuntime.jsx("div", { className: styles$C.details, children: jsxRuntime.jsx("span", { children: hotel.city }) })), jsxRuntime.jsxs("div", { className: styles$C.dates, children: [jsxRuntime.jsx("span", { children: hotel.checkIn }), jsxRuntime.jsx("span", { children: "\u2013" }), jsxRuntime.jsx("span", { children: hotel.checkOut })] }), hotel.roomCount && (jsxRuntime.jsx("div", { className: styles$C.details, children: jsxRuntime.jsxs("span", { children: [hotel.roomCount, " rooms"] }) }))] }, i))) }));
1146
+ return (jsxRuntime.jsx(TripSegment, { type: "hotel", variant: variant, className: className, children: hotels.map((hotel, i) => (jsxRuntime.jsxs("div", { className: styles$C.item, children: [jsxRuntime.jsxs("div", { className: styles$C.itemHeader, children: [jsxRuntime.jsx(HotelIcon$2, {}), jsxRuntime.jsx("span", { className: styles$C.itemName, children: hotel.name })] }), hotel.city && (jsxRuntime.jsx("div", { className: styles$C.details, children: jsxRuntime.jsx("span", { children: hotel.city }) })), jsxRuntime.jsxs("div", { className: styles$C.dates, children: [jsxRuntime.jsx("span", { children: hotel.checkIn }), jsxRuntime.jsx("span", { children: "\u2013" }), jsxRuntime.jsx("span", { children: hotel.checkOut })] }), hotel.roomCount && (jsxRuntime.jsx("div", { className: styles$C.details, children: jsxRuntime.jsxs("span", { children: [hotel.roomCount, " rooms"] }) }))] }, i))) }));
1147
1147
  };
1148
1148
  TripSegment.displayName = 'TripSegment';
1149
1149
  AirSegment.displayName = 'AirSegment';
@@ -1421,17 +1421,17 @@ const HubAppShell = ({ children, navItems = HUB_NAV_ITEMS, individualTravelItem
1421
1421
 
1422
1422
  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"};
1423
1423
 
1424
- const PlaneIcon$2 = () => (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1425
- const HotelIcon$2 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1426
- const CarIcon$1 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M7 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsxRuntime.jsx("path", { d: "M17 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsxRuntime.jsx("path", { d: "M5 17h-2v-6l2 -5h9l4 5h1a2 2 0 0 1 2 2v4h-2m-4 0h-6m-6 -6h15m-6 0v-5" })] }));
1424
+ const PlaneIcon$1 = () => (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1425
+ const HotelIcon$1 = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1426
+ const CarIcon = () => (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M7 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsxRuntime.jsx("path", { d: "M17 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), jsxRuntime.jsx("path", { d: "M5 17h-2v-6l2 -5h9l4 5h1a2 2 0 0 1 2 2v4h-2m-4 0h-6m-6 -6h15m-6 0v-5" })] }));
1427
1427
  const StarIcon = () => (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1428
1428
  const EditIcon = () => (jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.jsx("path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }));
1429
1429
  const TrashIcon = () => (jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("polyline", { points: "3 6 5 6 21 6" }), jsxRuntime.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" })] }));
1430
1430
  const PlusIcon = () => (jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), jsxRuntime.jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }));
1431
1431
  const TYPE_ICONS = {
1432
- airline: jsxRuntime.jsx(PlaneIcon$2, {}),
1433
- hotel: jsxRuntime.jsx(HotelIcon$2, {}),
1434
- car: jsxRuntime.jsx(CarIcon$1, {}),
1432
+ airline: jsxRuntime.jsx(PlaneIcon$1, {}),
1433
+ hotel: jsxRuntime.jsx(HotelIcon$1, {}),
1434
+ car: jsxRuntime.jsx(CarIcon, {}),
1435
1435
  other: jsxRuntime.jsx(StarIcon, {}),
1436
1436
  };
1437
1437
  const TYPE_LABELS = {
@@ -1579,13 +1579,13 @@ const PageBanners = ({ systemBanners, alertBanners, className = '', }) => {
1579
1579
 
1580
1580
  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"};
1581
1581
 
1582
- const PlaneIcon$1 = () => (jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1583
- const BusIcon$1 = () => (jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M16 6v6" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
1584
- const HotelIcon$1 = () => (jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1582
+ const PlaneIcon = () => (jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
1583
+ const BusIcon = () => (jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M16 6v6" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
1584
+ const HotelIcon = () => (jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" })] }));
1585
1585
  const DEFAULT_ICONS = {
1586
- air: jsxRuntime.jsx(PlaneIcon$1, {}),
1587
- ground: jsxRuntime.jsx(BusIcon$1, {}),
1588
- hotel: jsxRuntime.jsx(HotelIcon$1, {}),
1586
+ air: jsxRuntime.jsx(PlaneIcon, {}),
1587
+ ground: jsxRuntime.jsx(BusIcon, {}),
1588
+ hotel: jsxRuntime.jsx(HotelIcon, {}),
1589
1589
  };
1590
1590
  /**
1591
1591
  * PreferencesPanel - Displays travel preferences in a multi-column layout
@@ -1626,11 +1626,11 @@ const SummarySection = ({ section, values }) => {
1626
1626
  * RequestSummary component for displaying a summary of travel request form data.
1627
1627
  * Shows enabled sections with their filled-in values.
1628
1628
  */
1629
- const RequestSummary = ({ sections, values, enabledSections = {}, submissionInfo, className, title = 'Request Summary', }) => {
1629
+ const RequestSummary$1 = ({ sections, values, enabledSections = {}, submissionInfo, className, title = 'Request Summary', }) => {
1630
1630
  const visibleSections = sections.filter(section => enabledSections[section.key] !== false);
1631
1631
  return (jsxRuntime.jsxs("div", { className: `${styles$n.summary} ${className || ''}`, children: [jsxRuntime.jsx("h2", { className: styles$n.title, children: title }), submissionInfo && (jsxRuntime.jsxs("div", { className: styles$n.submissionInfo, children: [jsxRuntime.jsx("span", { className: styles$n.label, children: "Submitted by" }), jsxRuntime.jsx("span", { className: styles$n.value, children: submissionInfo.submittedBy }), jsxRuntime.jsx("span", { className: styles$n.label, children: "on" }), jsxRuntime.jsx("span", { className: styles$n.value, children: submissionInfo.submittedOn })] })), jsxRuntime.jsx("div", { className: styles$n.sections, children: visibleSections.map((section) => (jsxRuntime.jsx(SummarySection, { section: section, values: values }, section.key))) }), visibleSections.length === 0 && (jsxRuntime.jsx("p", { className: styles$n.empty, children: "No services selected" }))] }));
1632
1632
  };
1633
- RequestSummary.displayName = 'RequestSummary';
1633
+ RequestSummary$1.displayName = 'RequestSummary';
1634
1634
 
1635
1635
  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"};
1636
1636
 
@@ -1789,9 +1789,9 @@ const headers = [
1789
1789
  { key: 'sportCode', label: 'Sport', icon: jsxRuntime.jsx(RunningIcon, {}) },
1790
1790
  { key: 'travelStartDate', label: 'Date(s)', icon: jsxRuntime.jsx(CalendarIcon$1, { size: 16 }) },
1791
1791
  { key: 'tripName', label: 'Trip Name', icon: jsxRuntime.jsx(DocumentIcon, { size: 16 }) },
1792
- { label: 'Air', icon: jsxRuntime.jsx(PlaneIcon$4, { size: 16 }) },
1792
+ { label: 'Air', icon: jsxRuntime.jsx(PlaneIcon$3, { size: 16 }) },
1793
1793
  { label: 'Ground', icon: jsxRuntime.jsx(GroundIcon, {}) },
1794
- { label: 'Hotel', icon: jsxRuntime.jsx(HotelIcon$4, { size: 16 }) },
1794
+ { label: 'Hotel', icon: jsxRuntime.jsx(HotelIcon$3, { size: 16 }) },
1795
1795
  ];
1796
1796
  /** Hub's read-only expanded Team Schedule table. */
1797
1797
  const TeamScheduleExpandedTable = ({ rows, teamCode, onTripClick, emptyMessage = 'No data available.', className = '' }) => {
@@ -2099,7 +2099,7 @@ const TeamRosterMemberForm = ({ mode = 'Add', values, initialValues, onChange, o
2099
2099
  }, disabled: disabled, fullWidth: true }) })), jsxRuntime.jsxs(SectionCard, { icon: jsxRuntime.jsx(UserIcon, { size: 20 }), title: "Identity", subtitle: "Name as it appears on government ID", badge: jsxRuntime.jsx(SectionBadge, { complete: identityComplete }), children: [jsxRuntime.jsxs("div", { className: styles$f.threeColumnGrid, children: [jsxRuntime.jsx(Input, { label: "First Name *", value: formValues.firstName, onChange: (event) => updateValues({ firstName: event.target.value }), required: true, disabled: disabled, fullWidth: true }), jsxRuntime.jsxs("div", { className: styles$f.middleNameField, children: [jsxRuntime.jsxs("div", { className: styles$f.fieldHeader, children: [jsxRuntime.jsx("label", { htmlFor: "team-middle-name", children: "Middle Name" }), jsxRuntime.jsx(Checkbox, { label: "None", size: "sm", checked: formValues.noMiddleName, onChange: (event) => updateValues({
2100
2100
  noMiddleName: event.target.checked,
2101
2101
  middleName: event.target.checked ? '' : formValues.middleName,
2102
- }), disabled: disabled })] }), jsxRuntime.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 })] }), jsxRuntime.jsx(Input, { label: "Last Name *", value: formValues.lastName, onChange: (event) => updateValues({ lastName: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsxRuntime.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 })] }), jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(LockIcon$1, { size: 20 }), title: "Secure Flight", subtitle: "TSA-required for every air booking", badge: jsxRuntime.jsx(SectionBadge, { complete: secureFlightComplete, label: !formValues.weight || Number(formValues.weight) < 1 ? 'Add weight' : undefined }), children: jsxRuntime.jsxs("div", { className: styles$f.threeColumnGrid, children: [jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.jsx(Input, { label: "Known Traveler No.", placeholder: "KTN", value: formValues.knownTravelerNumber, onChange: (event) => updateValues({ knownTravelerNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsxRuntime.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' && (jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(PlaneIcon$4, { size: 20 }), title: "Frequent Flyer", subtitle: "Airline loyalty program details", badge: jsxRuntime.jsx(SectionBadge, { optional: true }), children: jsxRuntime.jsxs("div", { className: styles$f.twoColumnGrid, children: [jsxRuntime.jsx(Select, { label: "Airline", placeholder: "Select airline", options: airlineOptions, value: formValues.airline, onChange: (event) => updateValues({ airline: event.target.value }), disabled: disabled, fullWidth: true }), jsxRuntime.jsx(Input, { label: "Frequent Flyer Number", value: formValues.frequentFlyerNumber, onChange: (event) => updateValues({ frequentFlyerNumber: event.target.value }), disabled: disabled, fullWidth: true })] }) })), jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(InfoIcon$1, { size: 20 }), title: "Special Requests", subtitle: "Dietary, seating, accessibility, rooming", badge: jsxRuntime.jsx(SectionBadge, { optional: true }), children: jsxRuntime.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 }) })] }));
2102
+ }), disabled: disabled })] }), jsxRuntime.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 })] }), jsxRuntime.jsx(Input, { label: "Last Name *", value: formValues.lastName, onChange: (event) => updateValues({ lastName: event.target.value }), required: true, disabled: disabled, fullWidth: true })] }), jsxRuntime.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 })] }), jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(LockIcon$1, { size: 20 }), title: "Secure Flight", subtitle: "TSA-required for every air booking", badge: jsxRuntime.jsx(SectionBadge, { complete: secureFlightComplete, label: !formValues.weight || Number(formValues.weight) < 1 ? 'Add weight' : undefined }), children: jsxRuntime.jsxs("div", { className: styles$f.threeColumnGrid, children: [jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.jsx(Input, { label: "Known Traveler No.", placeholder: "KTN", value: formValues.knownTravelerNumber, onChange: (event) => updateValues({ knownTravelerNumber: event.target.value.toUpperCase() }), disabled: disabled, fullWidth: true }), jsxRuntime.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' && (jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(PlaneIcon$3, { size: 20 }), title: "Frequent Flyer", subtitle: "Airline loyalty program details", badge: jsxRuntime.jsx(SectionBadge, { optional: true }), children: jsxRuntime.jsxs("div", { className: styles$f.twoColumnGrid, children: [jsxRuntime.jsx(Select, { label: "Airline", placeholder: "Select airline", options: airlineOptions, value: formValues.airline, onChange: (event) => updateValues({ airline: event.target.value }), disabled: disabled, fullWidth: true }), jsxRuntime.jsx(Input, { label: "Frequent Flyer Number", value: formValues.frequentFlyerNumber, onChange: (event) => updateValues({ frequentFlyerNumber: event.target.value }), disabled: disabled, fullWidth: true })] }) })), jsxRuntime.jsx(SectionCard, { icon: jsxRuntime.jsx(InfoIcon$1, { size: 20 }), title: "Special Requests", subtitle: "Dietary, seating, accessibility, rooming", badge: jsxRuntime.jsx(SectionBadge, { optional: true }), children: jsxRuntime.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 }) })] }));
2103
2103
  };
2104
2104
  const IMPORT_COPY = {
2105
2105
  equipment: {
@@ -2241,7 +2241,7 @@ const DEFAULT_CARDS = [
2241
2241
  key: 'suppliers',
2242
2242
  title: 'Suppliers',
2243
2243
  description: 'Manage air, car, and hotel suppliers',
2244
- icon: jsxRuntime.jsx(PlaneIcon$4, { size: 16 }),
2244
+ icon: jsxRuntime.jsx(PlaneIcon$3, { size: 16 }),
2245
2245
  },
2246
2246
  ];
2247
2247
  /** Hub administration shell and system-card index. */
@@ -2278,7 +2278,7 @@ const CharterManifestPage = ({ tripName, travelStartDate, travelEndDate, seats,
2278
2278
  }
2279
2279
  return a.lastName.localeCompare(b.lastName);
2280
2280
  }), [passengers, sort]);
2281
- return (jsxRuntime.jsxs("div", { className: [styles$a.page, className].filter(Boolean).join(' '), "data-screen-label": "Charter Trip Manifest", children: [jsxRuntime.jsxs("header", { className: styles$a.header, children: [jsxRuntime.jsxs("div", { className: styles$a.headerRow, children: [jsxRuntime.jsx("button", { type: "button", "aria-label": "Back", className: styles$a.back, onClick: onBack, children: jsxRuntime.jsx(ChevronLeftIcon, { size: 28 }) }), jsxRuntime.jsxs("h1", { children: [jsxRuntime.jsx("strong", { children: "Manifest" }), jsxRuntime.jsx(ChevronRightIcon$1, { size: 24 }), jsxRuntime.jsx("span", { children: tripName })] }), jsxRuntime.jsxs("div", { className: styles$a.headerActions, children: [jsxRuntime.jsx(StatusPill, { sendState: sendState, locked: locked }), jsxRuntime.jsx(Button, { variant: "outline", leftIcon: jsxRuntime.jsx(DocumentIcon, { size: 16 }), disabled: carrierName === 'No carrier selected', onClick: onGenerateFile, children: "Generate File" })] })] }), (travelStartDate || travelEndDate) && (jsxRuntime.jsxs("div", { className: styles$a.dateRow, children: [jsxRuntime.jsx("span", { children: formatDate(travelStartDate) }), jsxRuntime.jsx("span", { className: styles$a.dateLine, children: "\u25B6" }), jsxRuntime.jsx("span", { children: formatDate(travelEndDate) })] })), jsxRuntime.jsxs("div", { className: styles$a.metaRow, children: [jsxRuntime.jsxs("span", { children: [jsxRuntime.jsx(PlaneIcon$4, { size: 16 }), seats, " seats"] }), jsxRuntime.jsxs("span", { children: [jsxRuntime.jsx(CubeIcon, { size: 16 }), "Payload limit ", payloadLimit.toLocaleString(), " lb"] })] })] }), jsxRuntime.jsxs("div", { className: styles$a.layout, children: [jsxRuntime.jsxs("aside", { className: styles$a.rail, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: styles$a.eyebrow, children: "Flight Manifest" }), jsxRuntime.jsx("div", { className: styles$a.scopeList, children: [{ id: 'all', label: 'Full Trip', detail: 'All flight segments' }, ...segments].map((item) => (jsxRuntime.jsxs("button", { type: "button", className: [styles$a.scope, scope === item.id ? styles$a.activeScope : ''].filter(Boolean).join(' '), onClick: () => setScope(item.id), children: [jsxRuntime.jsx("strong", { children: item.label }), jsxRuntime.jsx("span", { children: item.detail })] }, item.id))) })] }), segments.length > 0 && (jsxRuntime.jsx(Button, { variant: "outline", size: "sm", disabled: locked, onClick: onSplitSegments, children: "Split by Segment" })), jsxRuntime.jsxs("div", { className: styles$a.carrierCard, children: [jsxRuntime.jsx("div", { className: styles$a.eyebrow, children: "Carrier" }), jsxRuntime.jsx("strong", { children: carrierName }), jsxRuntime.jsx("p", { children: carrierNote }), jsxRuntime.jsx(Button, { variant: "outline", size: "sm", fullWidth: true, disabled: locked, leftIcon: jsxRuntime.jsx(SettingsIcon, { size: 15 }), onClick: onChangeCarrier, children: "Change Carrier" })] })] }), jsxRuntime.jsxs("main", { className: styles$a.main, children: [jsxRuntime.jsx("section", { className: styles$a.capacityCard, children: jsxRuntime.jsx(ManifestCapacityStats, { paxCount: passengers.length, seats: seats, paxWeight: passengerWeight, cargoWeight: cargoWeight, payloadLimit: payloadLimit }) }), jsxRuntime.jsxs("div", { className: styles$a.viewRow, children: [jsxRuntime.jsx(ManifestViewToggle, { view: view, onView: setView, paxCount: passengers.length, eqCount: equipment.length, locked: locked }), locked && jsxRuntime.jsx("span", { className: styles$a.lockedMessage, children: "Locked \u2014 coordinate any changes directly with the carrier." })] }), view === 'passengers' ? (jsxRuntime.jsxs("section", { children: [!locked && (jsxRuntime.jsxs("div", { className: styles$a.tableActions, children: [jsxRuntime.jsxs("strong", { children: [passengers.length, " Passengers"] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("span", { children: "Order by" }), jsxRuntime.jsx("span", { className: styles$a.sortToggle, children: ['name', 'type'].map((option) => (jsxRuntime.jsx("button", { type: "button", className: sort === option ? styles$a.activeSort : '', onClick: () => setSort(option), children: option }, option))) }), jsxRuntime.jsx(Button, { size: "sm", leftIcon: jsxRuntime.jsx(PlusIcon$2, { size: 15 }), onClick: onAddPassengers, children: "Add Passengers" })] })] })), jsxRuntime.jsx("div", { className: styles$a.tableWrap, children: jsxRuntime.jsxs("table", { children: [jsxRuntime.jsx("thead", { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("th", { children: "#" }), jsxRuntime.jsx("th", { children: "Passenger" }), jsxRuntime.jsx("th", { children: "Type" }), jsxRuntime.jsx("th", { children: "TSA Screening" }), jsxRuntime.jsx("th", { children: "Personal" }), jsxRuntime.jsx("th", { children: "Carry-On" }), jsxRuntime.jsx("th", { children: "Checked" }), jsxRuntime.jsx("th", { children: "Seat" }), jsxRuntime.jsx("th", {})] }) }), jsxRuntime.jsxs("tbody", { children: [!sortedPassengers.length && jsxRuntime.jsx("tr", { children: jsxRuntime.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) => (jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: index + 1 }), jsxRuntime.jsxs("td", { children: [jsxRuntime.jsx("strong", { children: passenger.lastName }), jsxRuntime.jsxs("span", { children: [", ", passenger.firstName] })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(TypeTag, { type: passenger.travelerType }) }), jsxRuntime.jsx("td", { children: passenger.screeningType || '—' }), jsxRuntime.jsxs("td", { children: [passenger.personalWeight ?? 0, " lb"] }), jsxRuntime.jsxs("td", { children: [passenger.carryOnWeight ?? 0, " lb"] }), jsxRuntime.jsxs("td", { children: [passenger.checkedWeight ?? 0, " lb"] }), jsxRuntime.jsx("td", { children: passenger.seatAssignment || '—' }), jsxRuntime.jsx("td", { children: !locked && jsxRuntime.jsx("button", { type: "button", "aria-label": `Remove ${passenger.firstName} ${passenger.lastName}`, className: styles$a.remove, onClick: () => onRemovePassenger?.(passenger), children: jsxRuntime.jsx(TrashIcon$2, { size: 16 }) }) })] }, passenger.id)))] })] }) })] })) : (jsxRuntime.jsxs("section", { children: [!locked && jsxRuntime.jsxs("div", { className: styles$a.tableActions, children: [jsxRuntime.jsxs("strong", { children: [equipment.length, " Equipment Items"] }), jsxRuntime.jsx(Button, { size: "sm", leftIcon: jsxRuntime.jsx(PlusIcon$2, { size: 15 }), onClick: onAddEquipment, children: "Add Equipment" })] }), jsxRuntime.jsx("div", { className: styles$a.tableWrap, children: jsxRuntime.jsxs("table", { children: [jsxRuntime.jsx("thead", { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("th", { children: "Equipment" }), jsxRuntime.jsx("th", { children: "Quantity" }), jsxRuntime.jsx("th", { children: "Weight" }), jsxRuntime.jsx("th", { children: "Total" }), jsxRuntime.jsx("th", {})] }) }), jsxRuntime.jsx("tbody", { children: equipment.map((item) => jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: jsxRuntime.jsx("strong", { children: item.name }) }), jsxRuntime.jsx("td", { children: item.quantity }), jsxRuntime.jsxs("td", { children: [item.weight.toLocaleString(), " lb"] }), jsxRuntime.jsxs("td", { children: [(item.quantity * item.weight).toLocaleString(), " lb"] }), jsxRuntime.jsx("td", { children: !locked && jsxRuntime.jsx("button", { type: "button", "aria-label": `Remove ${item.name}`, className: styles$a.remove, onClick: () => onRemoveEquipment?.(item), children: jsxRuntime.jsx(TrashIcon$2, { size: 16 }) }) })] }, item.id)) })] }) })] })), !locked && (jsxRuntime.jsxs("section", { className: styles$a.finalize, children: [jsxRuntime.jsx(StatusPill, { sendState: sendState, locked: false }), jsxRuntime.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.' }), jsxRuntime.jsxs("div", { className: styles$a.finalizeActions, children: [sendState === 'none' && jsxRuntime.jsx(Button, { onClick: onSendInitial, children: "Send Initial Manifest" }), sendState === 'initial-sent' && jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button, { onClick: onSendFinal, children: "Send Final Manifest" }), jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: onUndoInitial, children: "Undo initial" })] })] })] }))] })] })] }));
2281
+ return (jsxRuntime.jsxs("div", { className: [styles$a.page, className].filter(Boolean).join(' '), "data-screen-label": "Charter Trip Manifest", children: [jsxRuntime.jsxs("header", { className: styles$a.header, children: [jsxRuntime.jsxs("div", { className: styles$a.headerRow, children: [jsxRuntime.jsx("button", { type: "button", "aria-label": "Back", className: styles$a.back, onClick: onBack, children: jsxRuntime.jsx(ChevronLeftIcon, { size: 28 }) }), jsxRuntime.jsxs("h1", { children: [jsxRuntime.jsx("strong", { children: "Manifest" }), jsxRuntime.jsx(ChevronRightIcon$1, { size: 24 }), jsxRuntime.jsx("span", { children: tripName })] }), jsxRuntime.jsxs("div", { className: styles$a.headerActions, children: [jsxRuntime.jsx(StatusPill, { sendState: sendState, locked: locked }), jsxRuntime.jsx(Button, { variant: "outline", leftIcon: jsxRuntime.jsx(DocumentIcon, { size: 16 }), disabled: carrierName === 'No carrier selected', onClick: onGenerateFile, children: "Generate File" })] })] }), (travelStartDate || travelEndDate) && (jsxRuntime.jsxs("div", { className: styles$a.dateRow, children: [jsxRuntime.jsx("span", { children: formatDate(travelStartDate) }), jsxRuntime.jsx("span", { className: styles$a.dateLine, children: "\u25B6" }), jsxRuntime.jsx("span", { children: formatDate(travelEndDate) })] })), jsxRuntime.jsxs("div", { className: styles$a.metaRow, children: [jsxRuntime.jsxs("span", { children: [jsxRuntime.jsx(PlaneIcon$3, { size: 16 }), seats, " seats"] }), jsxRuntime.jsxs("span", { children: [jsxRuntime.jsx(CubeIcon, { size: 16 }), "Payload limit ", payloadLimit.toLocaleString(), " lb"] })] })] }), jsxRuntime.jsxs("div", { className: styles$a.layout, children: [jsxRuntime.jsxs("aside", { className: styles$a.rail, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: styles$a.eyebrow, children: "Flight Manifest" }), jsxRuntime.jsx("div", { className: styles$a.scopeList, children: [{ id: 'all', label: 'Full Trip', detail: 'All flight segments' }, ...segments].map((item) => (jsxRuntime.jsxs("button", { type: "button", className: [styles$a.scope, scope === item.id ? styles$a.activeScope : ''].filter(Boolean).join(' '), onClick: () => setScope(item.id), children: [jsxRuntime.jsx("strong", { children: item.label }), jsxRuntime.jsx("span", { children: item.detail })] }, item.id))) })] }), segments.length > 0 && (jsxRuntime.jsx(Button, { variant: "outline", size: "sm", disabled: locked, onClick: onSplitSegments, children: "Split by Segment" })), jsxRuntime.jsxs("div", { className: styles$a.carrierCard, children: [jsxRuntime.jsx("div", { className: styles$a.eyebrow, children: "Carrier" }), jsxRuntime.jsx("strong", { children: carrierName }), jsxRuntime.jsx("p", { children: carrierNote }), jsxRuntime.jsx(Button, { variant: "outline", size: "sm", fullWidth: true, disabled: locked, leftIcon: jsxRuntime.jsx(SettingsIcon, { size: 15 }), onClick: onChangeCarrier, children: "Change Carrier" })] })] }), jsxRuntime.jsxs("main", { className: styles$a.main, children: [jsxRuntime.jsx("section", { className: styles$a.capacityCard, children: jsxRuntime.jsx(ManifestCapacityStats, { paxCount: passengers.length, seats: seats, paxWeight: passengerWeight, cargoWeight: cargoWeight, payloadLimit: payloadLimit }) }), jsxRuntime.jsxs("div", { className: styles$a.viewRow, children: [jsxRuntime.jsx(ManifestViewToggle, { view: view, onView: setView, paxCount: passengers.length, eqCount: equipment.length, locked: locked }), locked && jsxRuntime.jsx("span", { className: styles$a.lockedMessage, children: "Locked \u2014 coordinate any changes directly with the carrier." })] }), view === 'passengers' ? (jsxRuntime.jsxs("section", { children: [!locked && (jsxRuntime.jsxs("div", { className: styles$a.tableActions, children: [jsxRuntime.jsxs("strong", { children: [passengers.length, " Passengers"] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("span", { children: "Order by" }), jsxRuntime.jsx("span", { className: styles$a.sortToggle, children: ['name', 'type'].map((option) => (jsxRuntime.jsx("button", { type: "button", className: sort === option ? styles$a.activeSort : '', onClick: () => setSort(option), children: option }, option))) }), jsxRuntime.jsx(Button, { size: "sm", leftIcon: jsxRuntime.jsx(PlusIcon$2, { size: 15 }), onClick: onAddPassengers, children: "Add Passengers" })] })] })), jsxRuntime.jsx("div", { className: styles$a.tableWrap, children: jsxRuntime.jsxs("table", { children: [jsxRuntime.jsx("thead", { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("th", { children: "#" }), jsxRuntime.jsx("th", { children: "Passenger" }), jsxRuntime.jsx("th", { children: "Type" }), jsxRuntime.jsx("th", { children: "TSA Screening" }), jsxRuntime.jsx("th", { children: "Personal" }), jsxRuntime.jsx("th", { children: "Carry-On" }), jsxRuntime.jsx("th", { children: "Checked" }), jsxRuntime.jsx("th", { children: "Seat" }), jsxRuntime.jsx("th", {})] }) }), jsxRuntime.jsxs("tbody", { children: [!sortedPassengers.length && jsxRuntime.jsx("tr", { children: jsxRuntime.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) => (jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: index + 1 }), jsxRuntime.jsxs("td", { children: [jsxRuntime.jsx("strong", { children: passenger.lastName }), jsxRuntime.jsxs("span", { children: [", ", passenger.firstName] })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(TypeTag, { type: passenger.travelerType }) }), jsxRuntime.jsx("td", { children: passenger.screeningType || '—' }), jsxRuntime.jsxs("td", { children: [passenger.personalWeight ?? 0, " lb"] }), jsxRuntime.jsxs("td", { children: [passenger.carryOnWeight ?? 0, " lb"] }), jsxRuntime.jsxs("td", { children: [passenger.checkedWeight ?? 0, " lb"] }), jsxRuntime.jsx("td", { children: passenger.seatAssignment || '—' }), jsxRuntime.jsx("td", { children: !locked && jsxRuntime.jsx("button", { type: "button", "aria-label": `Remove ${passenger.firstName} ${passenger.lastName}`, className: styles$a.remove, onClick: () => onRemovePassenger?.(passenger), children: jsxRuntime.jsx(TrashIcon$2, { size: 16 }) }) })] }, passenger.id)))] })] }) })] })) : (jsxRuntime.jsxs("section", { children: [!locked && jsxRuntime.jsxs("div", { className: styles$a.tableActions, children: [jsxRuntime.jsxs("strong", { children: [equipment.length, " Equipment Items"] }), jsxRuntime.jsx(Button, { size: "sm", leftIcon: jsxRuntime.jsx(PlusIcon$2, { size: 15 }), onClick: onAddEquipment, children: "Add Equipment" })] }), jsxRuntime.jsx("div", { className: styles$a.tableWrap, children: jsxRuntime.jsxs("table", { children: [jsxRuntime.jsx("thead", { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("th", { children: "Equipment" }), jsxRuntime.jsx("th", { children: "Quantity" }), jsxRuntime.jsx("th", { children: "Weight" }), jsxRuntime.jsx("th", { children: "Total" }), jsxRuntime.jsx("th", {})] }) }), jsxRuntime.jsx("tbody", { children: equipment.map((item) => jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: jsxRuntime.jsx("strong", { children: item.name }) }), jsxRuntime.jsx("td", { children: item.quantity }), jsxRuntime.jsxs("td", { children: [item.weight.toLocaleString(), " lb"] }), jsxRuntime.jsxs("td", { children: [(item.quantity * item.weight).toLocaleString(), " lb"] }), jsxRuntime.jsx("td", { children: !locked && jsxRuntime.jsx("button", { type: "button", "aria-label": `Remove ${item.name}`, className: styles$a.remove, onClick: () => onRemoveEquipment?.(item), children: jsxRuntime.jsx(TrashIcon$2, { size: 16 }) }) })] }, item.id)) })] }) })] })), !locked && (jsxRuntime.jsxs("section", { className: styles$a.finalize, children: [jsxRuntime.jsx(StatusPill, { sendState: sendState, locked: false }), jsxRuntime.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.' }), jsxRuntime.jsxs("div", { className: styles$a.finalizeActions, children: [sendState === 'none' && jsxRuntime.jsx(Button, { onClick: onSendInitial, children: "Send Initial Manifest" }), sendState === 'initial-sent' && jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button, { onClick: onSendFinal, children: "Send Final Manifest" }), jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", onClick: onUndoInitial, children: "Undo initial" })] })] })] }))] })] })] }));
2282
2282
  };
2283
2283
 
2284
2284
  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"};
@@ -2360,109 +2360,207 @@ const DashboardPage = ({ greeting = 'Good morning', firstName, accountName, widg
2360
2360
  onReorder?.(dragFrom, index); setDragFrom(null); }, onDragEnd: () => { setDragFrom(null); dragGhost.current?.remove(); dragGhost.current = null; }, children: jsxRuntime.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)) }) : jsxRuntime.jsxs("div", { className: styles$8.emptyPage, children: [jsxRuntime.jsx(PlusIcon$2, { size: 28 }), jsxRuntime.jsx("strong", { children: "Your home page is empty" }), jsxRuntime.jsx("span", { children: "Use \"Customize\" to add cards from the catalog." })] }), catalogOpen && jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("button", { type: "button", className: styles$8.scrim, "aria-label": "Close card catalog", onClick: () => setCatalogOpen(false) }), jsxRuntime.jsxs("aside", { className: styles$8.catalog, role: "dialog", "aria-modal": "true", "aria-label": "Add cards", children: [jsxRuntime.jsxs("header", { children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("h2", { children: "Add a card" }), jsxRuntime.jsx("p", { children: "Cards available to your role for this account" })] }), jsxRuntime.jsx("button", { type: "button", "aria-label": "Close card catalog", onClick: () => setCatalogOpen(false), children: jsxRuntime.jsx(CloseIcon, { size: 20 }) })] }), jsxRuntime.jsx("div", { className: styles$8.catalogBody, children: CATALOG.map((item) => jsxRuntime.jsxs("div", { className: styles$8.catalogItem, children: [jsxRuntime.jsx("span", { className: styles$8.catalogIcon, children: jsxRuntime.jsx(WidgetIcon, { type: item.type }) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("strong", { children: item.title }), jsxRuntime.jsx("span", { children: "Account" }), jsxRuntime.jsx("p", { children: item.description })] }), presentTypes.has(item.type) ? jsxRuntime.jsxs("span", { className: styles$8.added, children: [jsxRuntime.jsx(CheckIcon$2, { size: 16 }), "Added"] }) : jsxRuntime.jsxs("button", { type: "button", onClick: () => onAddWidget?.(item.type), children: [jsxRuntime.jsx(PlusIcon$2, { size: 16 }), "Add"] })] }, item.type)) }), jsxRuntime.jsx("footer", { children: "Each card can appear once on your home page." })] })] })] }));
2361
2361
  };
2362
2362
 
2363
- var styles$7 = {"sidebarSection":"GroupTravelRequestPage-module_sidebarSection__reGmm","sidebarTitle":"GroupTravelRequestPage-module_sidebarTitle__G-Oc7","formContent":"GroupTravelRequestPage-module_formContent__1nzfw","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","radioGroup":"GroupTravelRequestPage-module_radioGroup__xP97-","radioLabel":"GroupTravelRequestPage-module_radioLabel__9wYXU","segmentHeader":"GroupTravelRequestPage-module_segmentHeader__8a1Re"};
2363
+ 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"};
2364
2364
 
2365
- // Icons
2366
- const EventsIcon = () => (jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), jsxRuntime.jsx("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), jsxRuntime.jsx("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), jsxRuntime.jsx("line", { x1: "3", y1: "10", x2: "21", y2: "10" })] }));
2367
- const PlaneIcon = () => (jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.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" }) }));
2368
- const HotelIcon = () => (jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M3 21h18" }), jsxRuntime.jsx("path", { d: "M19 21V5a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v16" }), jsxRuntime.jsx("path", { d: "M9 21v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4" }), jsxRuntime.jsx("path", { d: "M10 9h4" }), jsxRuntime.jsx("path", { d: "M10 5h4" })] }));
2369
- const CarIcon = () => (jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.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 10H8s-2.7.6-4.5 1.1C2.7 11.3 2 12.1 2 13v3c0 .6.4 1 1 1h2" }), jsxRuntime.jsx("circle", { cx: "7", cy: "17", r: "2" }), jsxRuntime.jsx("path", { d: "M9 17h6" }), jsxRuntime.jsx("circle", { cx: "17", cy: "17", r: "2" })] }));
2370
- const BusIcon = () => (jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [jsxRuntime.jsx("path", { d: "M8 6v6" }), jsxRuntime.jsx("path", { d: "M16 6v6" }), jsxRuntime.jsx("path", { d: "M2 12h20" }), jsxRuntime.jsx("path", { d: "M4 18v2" }), jsxRuntime.jsx("path", { d: "M20 18v2" }), jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "14", rx: "2" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1" })] }));
2371
- // Service configuration
2372
- const TRAVEL_SERVICES = [
2373
- { key: 'general', label: 'General Details', icon: jsxRuntime.jsx(EventsIcon, {}), hasToggle: false },
2374
- { key: 'air', label: 'Commercial Air', icon: jsxRuntime.jsx(PlaneIcon, {}), hasToggle: true },
2375
- { key: 'charter', label: 'Charter Air', icon: jsxRuntime.jsx(PlaneIcon, {}), hasToggle: true },
2376
- { key: 'hotel', label: 'Hotel', icon: jsxRuntime.jsx(HotelIcon, {}), hasToggle: true },
2377
- { key: 'ground', label: 'Ground Transportation', icon: jsxRuntime.jsx(CarIcon, {}), hasToggle: true },
2378
- { key: 'bus', label: 'Bus Needed', icon: jsxRuntime.jsx(BusIcon, {}), hasToggle: true },
2365
+ const FLIGHT_TYPES = ['One Way', 'Round Trip', 'Multiple Destinations'];
2366
+ const FLIGHT_TIMES = [
2367
+ 'Early Morning (5:00am 8:00am)',
2368
+ 'Morning (8:00am 12:00pm)',
2369
+ 'Afternoon (12:00pm - 3:00pm)',
2370
+ 'Late Afternoon (3:00pm 6:00pm)',
2371
+ 'Evening (6:00pm – 12:00am)',
2379
2372
  ];
2380
- // Summary configuration
2381
- const SUMMARY_SECTIONS = [
2382
- {
2383
- key: 'general',
2384
- title: 'General Details',
2385
- items: [
2386
- { label: 'Travel Party Size', value: null },
2387
- { label: 'Trip Start', value: null },
2388
- { label: 'Trip Return', value: null },
2389
- { label: 'Booking Contact', value: null },
2390
- ],
2391
- },
2392
- {
2393
- key: 'air',
2394
- title: 'Commercial Air Request',
2395
- items: [
2396
- { label: 'Flight Type', value: null },
2397
- { label: 'Departure Airport', value: null },
2398
- { label: 'Arrival Airport', value: null },
2399
- ],
2400
- },
2401
- {
2402
- key: 'hotel',
2403
- title: 'Hotel Request',
2404
- items: [
2405
- { label: 'Check-in Date', value: null },
2406
- { label: 'Check-out Date', value: null },
2407
- { label: 'Number of Rooms', value: null },
2408
- ],
2409
- },
2410
- {
2411
- key: 'ground',
2412
- title: 'Ground Transportation',
2413
- items: [
2414
- { label: 'Vehicle Type', value: null },
2415
- { label: 'Pickup Location', value: null },
2416
- ],
2417
- },
2373
+ const AIRCRAFT_SEATING = ['0-30', '30-50', '50-100', '100+'];
2374
+ const BUS_TYPES = [
2375
+ 'Drive To & From Campus',
2376
+ 'Airport Pickup & Dropoff',
2377
+ 'Drive to Event/Fly Home',
2378
+ 'Fly to Event/Drive Home',
2418
2379
  ];
2419
- /**
2420
- * GroupTravelRequestPage component provides a complete travel request form page.
2421
- * Includes service toggles, form sections, and summary panel.
2422
- */
2423
- const GroupTravelRequestPage = ({ eventName = 'New Trip', totalPages = 1, onSubmit, onCancel, initialValues = {}, services = TRAVEL_SERVICES, summarySections = SUMMARY_SECTIONS, className, }) => {
2380
+ const DEFAULT_CATERING = ['No Catering', 'Snacks and Beverages', 'Cold Meal', 'Hot Meal'];
2381
+ const EventsIcon = () => jsxRuntime.jsx(CalendarIcon$1, { size: 24 });
2382
+ const DEFAULT_SERVICES = [
2383
+ { key: 'general', label: 'General', icon: jsxRuntime.jsx(EventsIcon, {}), hasToggle: false },
2384
+ { key: 'air', label: 'Commercial Air', icon: jsxRuntime.jsx(PlaneIcon$3, { size: 22 }), hasToggle: true },
2385
+ { key: 'charter', label: 'Charter Air', icon: jsxRuntime.jsx(PlaneIcon$3, { size: 22 }), hasToggle: true },
2386
+ { key: 'hotel', label: 'Hotel', icon: jsxRuntime.jsx(HotelIcon$3, { size: 22 }), hasToggle: true },
2387
+ { key: 'ground', label: 'Vehicle Rental', icon: jsxRuntime.jsx(CarIcon$1, { size: 22 }), hasToggle: true },
2388
+ { key: 'busneeded', label: 'Bus Charter', icon: jsxRuntime.jsx(BusIcon$2, { size: 22 }), hasToggle: true },
2389
+ ];
2390
+ const isEnabledValue = (value) => value === true || Number(value) === 1;
2391
+ const textValue = (value) => value === undefined ? '' : String(value);
2392
+ const suffix = (index) => index ? String(index + 1) : '';
2393
+ const airFieldName = (name, index) => index === 3 ? `air${name}${index + 1}` : `${name}${suffix(index)}`;
2394
+ const prefixedFieldName = (prefix, name, index) => `${prefix}${name}${suffix(index)}`;
2395
+ const hotelFieldName = (name, index) => `${name}${suffix(index)}`;
2396
+ const Field = ({ label, name, values, setValue, type = 'text', required, disabled, max, min, maxDate, placeholder, note, options, multiline, }) => {
2397
+ const inputId = `gtr-${name}`;
2398
+ const common = {
2399
+ id: inputId,
2400
+ name,
2401
+ value: textValue(values[name]),
2402
+ required,
2403
+ disabled,
2404
+ 'aria-describedby': note ? `${inputId}-note` : undefined,
2405
+ onChange: (event) => setValue(name, event.target.value),
2406
+ };
2407
+ return (jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsxs("label", { className: styles$7.label, htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { "aria-hidden": "true", children: " *" })] }), multiline ? (jsxRuntime.jsx("textarea", { ...common, className: styles$7.textarea, rows: 3, maxLength: 5000, placeholder: placeholder })) : options ? (jsxRuntime.jsxs("select", { ...common, className: styles$7.select, children: [jsxRuntime.jsx("option", { value: "", children: "Select" }), options.map((option) => jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))] })) : (jsxRuntime.jsx("input", { ...common, className: styles$7.input, type: type, max: type === 'date' ? maxDate : max, min: type === 'date' ? textValue(min) : min, placeholder: placeholder })), note && jsxRuntime.jsx("div", { className: styles$7.note, id: `${inputId}-note`, children: note })] }));
2408
+ };
2409
+ const ChoiceGroup = ({ label, name, options, values, setValue, required, }) => (jsxRuntime.jsxs("fieldset", { className: styles$7.choiceFieldset, children: [jsxRuntime.jsxs("legend", { className: styles$7.label, children: [label, required && jsxRuntime.jsx("span", { "aria-hidden": "true", children: " *" })] }), jsxRuntime.jsx("div", { className: styles$7.radioGroup, children: options.map((option) => (jsxRuntime.jsxs("label", { className: styles$7.radioLabel, children: [jsxRuntime.jsx("input", { type: "radio", name: name, value: option, checked: values[name] === option, onChange: () => setValue(name, option), required: required }), jsxRuntime.jsx("span", { children: option })] }, option))) })] }));
2410
+ const CheckToggle = ({ label, name, values, setValue, }) => (jsxRuntime.jsxs("div", { className: styles$7.checkToggle, children: [jsxRuntime.jsx(Toggle, { "aria-label": label, checked: isEnabledValue(values[name]), onChange: (checked) => setValue(name, checked ? 1 : 0), size: "sm" }), jsxRuntime.jsx("span", { children: label })] }));
2411
+ const YesNo = ({ label, name, values, setValue }) => (jsxRuntime.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 }));
2412
+ const SegmentHeader = ({ label, index, canDelete, onDelete }) => (jsxRuntime.jsxs("div", { className: styles$7.segmentHeader, children: [jsxRuntime.jsxs("span", { children: [label, " ", index + 1] }), canDelete && jsxRuntime.jsxs(Button, { type: "button", size: "sm", variant: "outline", rightIcon: jsxRuntime.jsx(TrashIcon$2, { size: 14 }), onClick: onDelete, children: ["Delete ", label] })] }));
2413
+ const FlightRequest = ({ prefix, values, setValue, cateringOptions, }) => {
2414
+ const typeName = `${prefix}multiplesegments`;
2415
+ const flightType = textValue(values[typeName]);
2416
+ const allowsMultiple = flightType === 'One Way' || flightType === 'Multiple Destinations';
2417
+ const [count, setCount] = React.useState(1);
2418
+ const isCharter = prefix === 'charter';
2419
+ const fieldName = (name, index) => isCharter ? prefixedFieldName('charter', name, index) : airFieldName(name, index);
2420
+ const segmentFields = isCharter
2421
+ ? ['departlocation', 'departdate', 'departtime', 'departtime_tbd', 'departonewayoutboundpricing', 'arrivelocation', 'returndate', 'returntime', 'arrivetime_tbd', 'cateringoptions', 'departlocationfbo', 'preferredcarriers']
2422
+ : ['departlocation', 'departdate', 'departtime', 'departlowestfareanytime', 'arrivelocation', 'returndate', 'returntime', 'arrivelowestfareanytime', 'preferredcarriers', 'passengertargetfare'];
2423
+ const deleteSegment = (index) => {
2424
+ for (let position = index; position < count; position += 1) {
2425
+ segmentFields.forEach((field) => {
2426
+ const current = fieldName(field, position);
2427
+ const next = fieldName(field, position + 1);
2428
+ setValue(current, position === count - 1 ? '' : values[next]);
2429
+ });
2430
+ }
2431
+ setCount((current) => Math.max(1, current - 1));
2432
+ };
2433
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isCharter && jsxRuntime.jsxs(Alert, { children: [jsxRuntime.jsx("strong", { children: "NOTE:" }), " Desired departure times are shared with carrier partners immediately, and availability may require schedule adjustments."] }), jsxRuntime.jsx(ChoiceGroup, { label: "Flight Type", name: typeName, options: FLIGHT_TYPES, values: values, setValue: (name, value) => {
2434
+ setValue(name, value);
2435
+ if (value === 'Round Trip')
2436
+ setCount(1);
2437
+ }, required: true }), jsxRuntime.jsxs("div", { className: styles$7.segments, children: [Array.from({ length: count }, (_, index) => {
2438
+ const departLocation = fieldName('departlocation', index);
2439
+ const departDate = fieldName('departdate', index);
2440
+ const departTime = fieldName('departtime', index);
2441
+ const arrivalLocation = fieldName('arrivelocation', index);
2442
+ const returnDate = fieldName('returndate', index);
2443
+ const returnTime = fieldName('returntime', index);
2444
+ return (jsxRuntime.jsxs(Accordion, { header: jsxRuntime.jsx(SegmentHeader, { label: "Flight", index: index, canDelete: allowsMultiple && count > 1, onDelete: () => deleteSegment(index) }), showTimeline: true, children: [jsxRuntime.jsx(Field, { label: "Departure Airport", name: departLocation, values: values, setValue: setValue, required: true }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Departure Date", name: departDate, values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsxRuntime.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
2445
+ ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(CheckToggle, { label: "Departure Time TBD", name: fieldName('departtime_tbd', index), values: values, setValue: setValue }), ['Round Trip', 'Multiple Destinations'].includes(flightType) && jsxRuntime.jsx(CheckToggle, { label: "Also Include Pricing for One Way Outbound Flight", name: fieldName('departonewayoutboundpricing', index), values: values, setValue: setValue })] })
2446
+ : jsxRuntime.jsx(CheckToggle, { label: "Also Consider Lowest Fare Anytime of Day", name: fieldName('departlowestfareanytime', index), values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "Arrival Airport", name: arrivalLocation, values: values, setValue: setValue, required: true }), flightType === 'Round Trip' && jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.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 }), jsxRuntime.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
2447
+ ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [flightType === 'Round Trip' && jsxRuntime.jsx(CheckToggle, { label: "Return Time TBD", name: fieldName('arrivetime_tbd', index), values: values, setValue: setValue }), flightType === 'Round Trip' && jsxRuntime.jsx(CheckToggle, { label: "Also Include Pricing for One Way Return Flight", name: "charterarriveonewayreturnpricing", values: values, setValue: setValue }), jsxRuntime.jsxs(FormRow, { columns: 3, children: [jsxRuntime.jsx(Field, { label: "Catering Options", name: fieldName('cateringoptions', index), values: values, setValue: setValue, options: cateringOptions.map((option) => ({ label: option, value: option })), required: true }), jsxRuntime.jsx(Field, { label: "Preferred FBO (Departure Airport)", name: fieldName('departlocationfbo', index), values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "Preferred Carriers", name: fieldName('preferredcarriers', index), values: values, setValue: setValue })] })] })
2448
+ : jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [flightType === 'Round Trip' && jsxRuntime.jsx(CheckToggle, { label: "Also Consider Lowest Fare Anytime of Day", name: fieldName('arrivelowestfareanytime', index), values: values, setValue: setValue }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Preferred Carriers", name: fieldName('preferredcarriers', index), values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "Target Fare Per Passenger", name: fieldName('passengertargetfare', index), values: values, setValue: setValue, type: "number", min: 0 })] })] })] }, `${prefix}-${index}`));
2449
+ }), allowsMultiple && count < 4 && jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsxRuntime.jsx(PlusIcon$2, { size: 16 }), onClick: () => setCount((current) => current + 1), children: "Add Flight" }) })] }), isCharter && jsxRuntime.jsx(ChoiceGroup, { label: "Preferred Aircraft Seating", name: "charterpreferredseatingrange", options: AIRCRAFT_SEATING, values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "General Notes on Air Request", name: isCharter ? 'details_charters' : 'details_air', values: values, setValue: setValue, multiline: true })] }));
2450
+ };
2451
+ const HotelRequest = ({ values, setValue }) => {
2452
+ const [count, setCount] = React.useState(1);
2453
+ const totalRooms = Array.from({ length: count }, (_, index) => Number(values[hotelFieldName('rooms', index)] || 0)).reduce((total, rooms) => total + rooms, 0);
2454
+ const deleteHotel = (index) => {
2455
+ const fields = ['hotellocation', 'hotelproperty', 'kings', 'doubles', 'rooms', 'checkin', 'checkout'];
2456
+ for (let position = index; position < count; position += 1) {
2457
+ fields.forEach((field) => setValue(hotelFieldName(field, position), position === count - 1 ? '' : values[hotelFieldName(field, position + 1)]));
2458
+ }
2459
+ setCount((current) => Math.max(1, current - 1));
2460
+ };
2461
+ const updateRooms = (index, type, value) => {
2462
+ setValue(hotelFieldName(type, index), value);
2463
+ const other = type === 'kings' ? 'doubles' : 'kings';
2464
+ setValue(hotelFieldName('rooms', index), Number(value || 0) + Number(values[hotelFieldName(other, index)] || 0));
2465
+ };
2466
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [totalRooms > 0 && totalRooms < 8 && jsxRuntime.jsxs(Alert, { children: [jsxRuntime.jsx("strong", { children: "NOTE:" }), " Seven or fewer rooms are booked by an agent instead of STM Stay."] }), jsxRuntime.jsxs("div", { className: styles$7.segments, children: [Array.from({ length: count }, (_, index) => jsxRuntime.jsxs(Accordion, { header: jsxRuntime.jsx(SegmentHeader, { label: "Hotel", index: index, canDelete: count > 1, onDelete: () => deleteHotel(index) }), showTimeline: true, children: [jsxRuntime.jsx(Field, { label: "City", name: hotelFieldName('hotellocation', index), values: values, setValue: setValue, required: true }), jsxRuntime.jsx(Field, { label: "Preferred Hotel(s)", name: hotelFieldName('hotelproperty', index), values: values, setValue: setValue }), jsxRuntime.jsxs(FormRow, { columns: 3, children: [jsxRuntime.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 }), jsxRuntime.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 }), jsxRuntime.jsx(Field, { label: "Total Rooms", name: hotelFieldName('rooms', index), values: values, setValue: setValue, disabled: true })] }), jsxRuntime.jsx(Alert, { variant: "error", children: "Please include bus driver room if needed." }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.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 }), jsxRuntime.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 && jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsxRuntime.jsx(PlusIcon$2, { size: 16 }), onClick: () => setCount((current) => current + 1), children: "Add Hotel" }) })] }), jsxRuntime.jsx(YesNo, { label: "Do you need a room for the bus driver?", name: "busdriverroom", values: values, setValue: setValue }), totalRooms > 7 && jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(YesNo, { label: "Do you need meeting space for the team?", name: "teammeetingspaceflag", values: values, setValue: setValue }), Number(values.teammeetingspaceflag) === 1 && jsxRuntime.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 })] }), jsxRuntime.jsx(Field, { label: "General Notes on Hotel Request", name: "details_hotel", values: values, setValue: setValue, multiline: true })] });
2467
+ };
2468
+ const VehicleRentalRequest = ({ values, setValue }) => {
2469
+ const hasAir = isEnabledValue(values.air) || isEnabledValue(values.charter);
2470
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(FormRow, { columns: 3, children: [jsxRuntime.jsx(Field, { label: "Pickup Date", name: "pickupdate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsxRuntime.jsx(Field, { label: "Pickup Time", name: "pickuptime", values: values, setValue: setValue, type: "time", required: !hasAir }), jsxRuntime.jsx(Field, { label: "Pickup Location", name: "pickuplocation", values: values, setValue: setValue, required: true })] }), hasAir && jsxRuntime.jsx(CheckToggle, { label: "I will be picking up from the airport", name: "carairportpickup", values: values, setValue: (name, value) => {
2471
+ setValue(name, value);
2472
+ if (Number(value) === 1)
2473
+ setValue('pickuplocation', values.arrivelocation || values.charterarrivelocation);
2474
+ } }), jsxRuntime.jsxs(FormRow, { columns: 3, children: [jsxRuntime.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 }), jsxRuntime.jsx(Field, { label: "Drop Off Time", name: "dropofftime", values: values, setValue: setValue, type: "time", required: !hasAir }), jsxRuntime.jsx(Field, { label: "Drop Off Location", name: "cardropofflocation", values: values, setValue: setValue, required: true })] }), hasAir && jsxRuntime.jsx(CheckToggle, { label: "I will be dropping off at the airport", name: "carairportdropoff", values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "# of Rentals", name: "carqty", values: values, setValue: setValue, type: "number", min: 1, max: 99, required: true }), jsxRuntime.jsx(Field, { label: "Vehicle Type/Size Preference", name: "carsizepref", values: values, setValue: setValue, placeholder: "Economy, Compact, ..." }), jsxRuntime.jsx(Field, { label: "Driver Name(s) for Reservation", name: "cardriver", values: values, setValue: setValue, placeholder: "Name 1, Name 2", required: true }), jsxRuntime.jsx(Field, { label: "General Notes on Vehicle Rental Request", name: "details_ground", values: values, setValue: setValue, multiline: true })] });
2475
+ };
2476
+ const BusRequest = ({ values, setValue, schoolAddress }) => {
2477
+ const [destinations, setDestinations] = React.useState(1);
2478
+ const busType = textValue(values.bustype);
2479
+ const destinationName = (index) => `busdestination${suffix(index)}`;
2480
+ const updateBusType = (name, value) => {
2481
+ setValue(name, value);
2482
+ if (['Drive To & From Campus', 'Drive to Event/Fly Home'].includes(String(value)))
2483
+ setValue('buspickuplocation', schoolAddress);
2484
+ if (['Drive To & From Campus', 'Fly to Event/Drive Home'].includes(String(value)))
2485
+ setValue('busdropofflocation', schoolAddress);
2486
+ };
2487
+ const deleteDestination = (index) => {
2488
+ for (let position = index; position < destinations; position += 1)
2489
+ setValue(destinationName(position), position === destinations - 1 ? '' : values[destinationName(position + 1)]);
2490
+ setDestinations((current) => Math.max(1, current - 1));
2491
+ };
2492
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ChoiceGroup, { label: "Charter Bus Type", name: "bustype", options: BUS_TYPES, values: values, setValue: updateBusType, required: true }), busType && busType !== BUS_TYPES[0] && jsxRuntime.jsx(CheckToggle, { label: "Do you need local airport transfers?", name: "buslocalairporttransfers", values: values, setValue: setValue }), jsxRuntime.jsxs(FormRow, { columns: 3, children: [jsxRuntime.jsx(Field, { label: "Pickup Date", name: "buspickupdate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), maxDate: textValue(values.tripreturndate), required: true }), jsxRuntime.jsx(Field, { label: "Pickup Time", name: "buspickuptime", values: values, setValue: setValue, type: "time", required: true }), jsxRuntime.jsx(Field, { label: "# of Buses", name: "numbuses", values: values, setValue: setValue, type: "number", min: 1, max: 99, required: true })] }), jsxRuntime.jsx(Field, { label: "Motorcoach/Airport Pickup Location", name: "buspickuplocation", values: values, setValue: setValue, required: true }), jsxRuntime.jsxs("div", { className: styles$7.destinationList, children: [jsxRuntime.jsx("span", { className: styles$7.label, children: "Destinations *" }), Array.from({ length: destinations }, (_, index) => jsxRuntime.jsxs("div", { className: styles$7.destinationRow, children: [jsxRuntime.jsx(Field, { label: `Destination ${index + 1}`, name: destinationName(index), values: values, setValue: setValue, placeholder: `Destination ${index + 1}`, required: true }), destinations > 1 && jsxRuntime.jsx(Button, { type: "button", size: "sm", variant: "outline", square: true, "aria-label": `Delete Destination ${index + 1}`, onClick: () => deleteDestination(index), children: jsxRuntime.jsx(TrashIcon$2, { size: 16 }) })] }, index)), destinations < 4 && jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Button, { type: "button", size: "sm", variant: "secondary", rightIcon: jsxRuntime.jsx(PlusIcon$2, { size: 16 }), onClick: () => setDestinations((current) => current + 1), children: "Add Destination" }) })] }), busType === BUS_TYPES[1] && jsxRuntime.jsx(CheckToggle, { label: "Are you flying back from a different airport than you flew in to?", name: "busdifferentairport", values: values, setValue: setValue }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.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 }), jsxRuntime.jsx(Field, { label: "Return / Drop Off Time", name: "busreturntime", values: values, setValue: setValue, type: "time", required: true })] }), jsxRuntime.jsx(Field, { label: "Motorcoach/Airport Dropoff Location", name: "busdropofflocation", values: values, setValue: setValue, required: true }), jsxRuntime.jsx(Field, { label: "General Notes on Bus Charter Request", name: "busdetails", values: values, setValue: setValue, multiline: true })] });
2493
+ };
2494
+ const SummaryRow = ({ label, value }) => !value ? null : jsxRuntime.jsxs("div", { className: styles$7.summaryRow, children: [jsxRuntime.jsx("span", { children: label }), jsxRuntime.jsx("strong", { children: String(value) })] });
2495
+ const RequestSummary = ({ values, enabled }) => {
2496
+ const sections = [
2497
+ 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]] },
2498
+ 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]] },
2499
+ 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]] },
2500
+ 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]] },
2501
+ 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]] },
2502
+ ].filter(Boolean);
2503
+ const populated = sections.filter((section) => section.rows.some(([, value]) => Boolean(value)));
2504
+ return jsxRuntime.jsxs("div", { className: styles$7.summaryCard, children: [jsxRuntime.jsx("h2", { children: "Request Summary" }), populated.map((section) => jsxRuntime.jsxs("section", { className: styles$7.summarySection, children: [jsxRuntime.jsx("h3", { children: section.title }), section.rows.map(([label, value]) => jsxRuntime.jsx(SummaryRow, { label: label, value: value }, label))] }, section.key)), !populated.length && jsxRuntime.jsx("p", { className: styles$7.emptySummary, children: "No services selected" })] });
2505
+ };
2506
+ const GroupTravelRequestPage = ({ eventName = 'New Trip', totalPages = 1, onSubmit, onCancel, onChange, initialValues = {}, contacts = [], cateringOptions = DEFAULT_CATERING, schoolAddress = '', services = DEFAULT_SERVICES, summarySections, className = '', }) => {
2424
2507
  const [currentPage, setCurrentPage] = React.useState(1);
2425
- const [enabledServices, setEnabledServices] = React.useState({
2508
+ const [activeTab, setActiveTab] = React.useState('form');
2509
+ const [activeService, setActiveService] = React.useState('general');
2510
+ const [validationMessage, setValidationMessage] = React.useState('');
2511
+ const [values, setValues] = React.useState(() => ({
2512
+ air: 0,
2513
+ charter: 0,
2514
+ hotel: 0,
2515
+ ground: 0,
2516
+ busneeded: 0,
2517
+ ...initialValues,
2518
+ ...(initialValues.bus !== undefined && initialValues.busneeded === undefined ? { busneeded: initialValues.bus } : {}),
2519
+ }));
2520
+ const enabled = React.useMemo(() => ({
2426
2521
  general: true,
2427
- air: false,
2428
- charter: false,
2429
- hotel: false,
2430
- ground: false,
2431
- bus: false,
2432
- ...Object.fromEntries(Object.entries(initialValues)
2433
- .filter(([key]) => services.some(s => s.key === key))
2434
- .map(([key, value]) => [key, Boolean(value)])),
2435
- });
2436
- const [formValues, setFormValues] = React.useState(initialValues);
2437
- const handleToggle = (key, enabled) => {
2438
- setEnabledServices(prev => ({ ...prev, [key]: enabled }));
2522
+ air: isEnabledValue(values.air),
2523
+ charter: isEnabledValue(values.charter),
2524
+ hotel: isEnabledValue(values.hotel),
2525
+ ground: isEnabledValue(values.ground),
2526
+ busneeded: isEnabledValue(values.busneeded),
2527
+ }), [values]);
2528
+ const setValue = (name, value) => {
2529
+ setValues((current) => {
2530
+ const next = { ...current, [name]: value };
2531
+ onChange?.(next);
2532
+ return next;
2533
+ });
2534
+ setValidationMessage('');
2439
2535
  };
2440
- const handleServiceClick = (key) => {
2441
- const element = document.getElementById(key);
2442
- if (element) {
2443
- element.scrollIntoView({ behavior: 'smooth', block: 'start' });
2444
- }
2536
+ const toggleService = (key, checked) => {
2537
+ setValue(key === 'bus' ? 'busneeded' : key, checked ? 1 : 0);
2538
+ if (checked)
2539
+ setActiveService((key === 'bus' ? 'busneeded' : key));
2445
2540
  };
2446
- const handlePrevious = () => {
2447
- if (currentPage > 1) {
2448
- setCurrentPage(currentPage - 1);
2449
- }
2450
- else {
2451
- onCancel?.();
2541
+ const submit = (event) => {
2542
+ event.preventDefault();
2543
+ if (![enabled.air, enabled.charter, enabled.hotel, enabled.ground, enabled.busneeded].some(Boolean)) {
2544
+ setValidationMessage('At least one service must be selected.');
2545
+ return;
2452
2546
  }
2453
- };
2454
- const handleNext = () => {
2455
2547
  if (currentPage < totalPages) {
2456
- setCurrentPage(currentPage + 1);
2457
- }
2458
- else {
2459
- onSubmit?.(formValues);
2548
+ setCurrentPage((page) => page + 1);
2549
+ return;
2460
2550
  }
2551
+ onSubmit?.(values);
2461
2552
  };
2462
- const updateFormValue = (key, value) => {
2463
- setFormValues(prev => ({ ...prev, [key]: value }));
2553
+ const previous = () => currentPage > 1 ? setCurrentPage((page) => page - 1) : onCancel?.();
2554
+ const contactOptions = contacts.map((contact) => ({ label: contact.name, value: String(contact.id) }));
2555
+ const selectContact = (field, id) => {
2556
+ const contact = contacts.find((item) => String(item.id) === String(id));
2557
+ setValue(`${field}id`, id);
2558
+ setValue(field, contact?.name ?? '');
2559
+ setValue(`${field}phone`, contact?.phone ?? '');
2560
+ setValue(`${field}email`, contact?.email ?? '');
2464
2561
  };
2465
- return (jsxRuntime.jsx(RequestFormLayout, { className: className, header: jsxRuntime.jsx(RequestFormHeader, { title: "Group Travel Request", currentPage: totalPages > 1 ? currentPage : undefined, totalPages: totalPages > 1 ? totalPages : undefined, eventName: eventName }), sidebar: jsxRuntime.jsxs("div", { className: styles$7.sidebarSection, children: [jsxRuntime.jsx("h3", { className: styles$7.sidebarTitle, children: "Services" }), jsxRuntime.jsx(ServiceToggleList, { services: services, enabledServices: enabledServices, onToggle: handleToggle, onClick: handleServiceClick })] }), summary: jsxRuntime.jsx(RequestSummary, { sections: summarySections, values: formValues, enabledSections: enabledServices }), footer: jsxRuntime.jsx(RequestFormFooter, { onPrevious: handlePrevious, onNext: handleNext, isFirstPage: currentPage === 1, isLastPage: currentPage === totalPages }), children: jsxRuntime.jsxs("div", { className: styles$7.formContent, children: [jsxRuntime.jsxs(FormSection, { id: "general", title: "General Details", icon: jsxRuntime.jsx(EventsIcon, {}), children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Travel Party Size *" }), jsxRuntime.jsx("input", { type: "number", className: styles$7.input, style: { width: '200px' }, min: 1, max: 999, value: formValues['Travel Party Size'] || '', onChange: (e) => updateFormValue('Travel Party Size', e.target.value) })] }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Trip Start *" }), jsxRuntime.jsx("input", { type: "date", className: styles$7.input, value: formValues['Trip Start'] || '', onChange: (e) => updateFormValue('Trip Start', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Trip Return *" }), jsxRuntime.jsx("input", { type: "date", className: styles$7.input, value: formValues['Trip Return'] || '', onChange: (e) => updateFormValue('Trip Return', e.target.value) })] })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Booking Contact *" }), jsxRuntime.jsx("input", { type: "text", className: styles$7.input, placeholder: "Full Name", value: formValues['Booking Contact'] || '', onChange: (e) => updateFormValue('Booking Contact', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "General Notes" }), jsxRuntime.jsx("textarea", { className: styles$7.textarea, rows: 4, placeholder: "Any notes regarding this trip...", value: formValues['General Notes'] || '', onChange: (e) => updateFormValue('General Notes', e.target.value) })] })] }), enabledServices.air && (jsxRuntime.jsxs(FormSection, { id: "air", title: "Commercial Air Request", icon: jsxRuntime.jsx(PlaneIcon, {}), children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Flight Type *" }), jsxRuntime.jsx("div", { className: styles$7.radioGroup, children: ['One Way', 'Round Trip', 'Multiple Destinations'].map(option => (jsxRuntime.jsxs("label", { className: styles$7.radioLabel, children: [jsxRuntime.jsx("input", { type: "radio", name: "flightType", value: option, checked: formValues['Flight Type'] === option, onChange: (e) => updateFormValue('Flight Type', e.target.value) }), jsxRuntime.jsx("span", { children: option })] }, option))) })] }), jsxRuntime.jsxs(Accordion, { header: jsxRuntime.jsx("span", { className: styles$7.segmentHeader, children: "Flight 1" }), showTimeline: true, children: [jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Departure Airport *" }), jsxRuntime.jsx("input", { type: "text", className: styles$7.input, placeholder: "e.g., JFK", value: formValues['Departure Airport'] || '', onChange: (e) => updateFormValue('Departure Airport', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Arrival Airport *" }), jsxRuntime.jsx("input", { type: "text", className: styles$7.input, placeholder: "e.g., LAX", value: formValues['Arrival Airport'] || '', onChange: (e) => updateFormValue('Arrival Airport', e.target.value) })] })] }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Departure Date *" }), jsxRuntime.jsx("input", { type: "date", className: styles$7.input, value: formValues['Departure Date'] || '', onChange: (e) => updateFormValue('Departure Date', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Departure Time *" }), jsxRuntime.jsxs("select", { className: styles$7.select, value: formValues['Departure Time'] || '', onChange: (e) => updateFormValue('Departure Time', e.target.value), children: [jsxRuntime.jsx("option", { value: "", children: "Select time range" }), jsxRuntime.jsx("option", { value: "Early Morning (5:00am \u2013 8:00am)", children: "Early Morning (5:00am \u2013 8:00am)" }), jsxRuntime.jsx("option", { value: "Morning (8:00am \u2013 12:00pm)", children: "Morning (8:00am \u2013 12:00pm)" }), jsxRuntime.jsx("option", { value: "Afternoon (12:00pm - 3:00pm)", children: "Afternoon (12:00pm - 3:00pm)" }), jsxRuntime.jsx("option", { value: "Late Afternoon (3:00pm \u2013 6:00pm)", children: "Late Afternoon (3:00pm \u2013 6:00pm)" }), jsxRuntime.jsx("option", { value: "Evening (6:00pm \u2013 12:00am)", children: "Evening (6:00pm \u2013 12:00am)" })] })] })] })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Air Travel Notes" }), jsxRuntime.jsx("textarea", { className: styles$7.textarea, rows: 3, placeholder: "Any special requirements for air travel..." })] })] })), enabledServices.hotel && (jsxRuntime.jsxs(FormSection, { id: "hotel", title: "Hotel Request", icon: jsxRuntime.jsx(HotelIcon, {}), children: [jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Check-in Date *" }), jsxRuntime.jsx("input", { type: "date", className: styles$7.input, value: formValues['Check-in Date'] || '', onChange: (e) => updateFormValue('Check-in Date', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Check-out Date *" }), jsxRuntime.jsx("input", { type: "date", className: styles$7.input, value: formValues['Check-out Date'] || '', onChange: (e) => updateFormValue('Check-out Date', e.target.value) })] })] }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Number of Rooms *" }), jsxRuntime.jsx("input", { type: "number", className: styles$7.input, min: 1, value: formValues['Number of Rooms'] || '', onChange: (e) => updateFormValue('Number of Rooms', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Room Type" }), jsxRuntime.jsxs("select", { className: styles$7.select, value: formValues['Room Type'] || '', onChange: (e) => updateFormValue('Room Type', e.target.value), children: [jsxRuntime.jsx("option", { value: "", children: "Select room type" }), jsxRuntime.jsx("option", { value: "Standard", children: "Standard" }), jsxRuntime.jsx("option", { value: "Double", children: "Double" }), jsxRuntime.jsx("option", { value: "Suite", children: "Suite" })] })] })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Hotel Preferences" }), jsxRuntime.jsx("textarea", { className: styles$7.textarea, rows: 3, placeholder: "Preferred hotel chain, location requirements, amenities...", value: formValues['Hotel Preferences'] || '', onChange: (e) => updateFormValue('Hotel Preferences', e.target.value) })] })] })), enabledServices.ground && (jsxRuntime.jsxs(FormSection, { id: "ground", title: "Ground Transportation", icon: jsxRuntime.jsx(CarIcon, {}), children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Vehicle Type *" }), jsxRuntime.jsxs("select", { className: styles$7.select, value: formValues['Vehicle Type'] || '', onChange: (e) => updateFormValue('Vehicle Type', e.target.value), children: [jsxRuntime.jsx("option", { value: "", children: "Select vehicle type" }), jsxRuntime.jsx("option", { value: "Sedan", children: "Sedan" }), jsxRuntime.jsx("option", { value: "SUV", children: "SUV" }), jsxRuntime.jsx("option", { value: "Van", children: "Van" }), jsxRuntime.jsx("option", { value: "Limousine", children: "Limousine" })] })] }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Pickup Location *" }), jsxRuntime.jsx("input", { type: "text", className: styles$7.input, placeholder: "Airport, hotel, etc.", value: formValues['Pickup Location'] || '', onChange: (e) => updateFormValue('Pickup Location', e.target.value) })] }), jsxRuntime.jsxs("div", { className: styles$7.field, children: [jsxRuntime.jsx("label", { className: styles$7.label, children: "Dropoff Location *" }), jsxRuntime.jsx("input", { type: "text", className: styles$7.input, placeholder: "Hotel, venue, etc.", value: formValues['Dropoff Location'] || '', onChange: (e) => updateFormValue('Dropoff Location', e.target.value) })] })] })] }))] }) }));
2562
+ const section = (key, title, icon, body) => enabled[key] && (jsxRuntime.jsx("div", { id: key, className: styles$7.serviceSection, "data-mobile-active": activeService === key, children: jsxRuntime.jsx(FormSection, { title: title, icon: icon, status: key === 'general' ? undefined : 'not-submitted', children: body }) }));
2563
+ return jsxRuntime.jsxs("form", { className: `${styles$7.page} ${className}`, onSubmit: submit, "aria-label": "Group Travel Request form", children: [jsxRuntime.jsx("header", { className: styles$7.pageHeader, children: jsxRuntime.jsxs("h1", { children: ["Group Travel Request ", totalPages > 1 && jsxRuntime.jsxs("span", { children: ["(", currentPage, "/", totalPages, ")"] }), " ", jsxRuntime.jsxs("span", { children: ["\u2013 ", eventName] })] }) }), jsxRuntime.jsxs("div", { className: styles$7.mobileTabs, children: [jsxRuntime.jsx("button", { type: "button", className: activeTab === 'form' ? styles$7.activeTab : '', onClick: () => setActiveTab('form'), children: "Request Form" }), jsxRuntime.jsx("button", { type: "button", className: activeTab === 'summary' ? styles$7.activeTab : '', onClick: () => setActiveTab('summary'), children: "Summary" })] }), activeTab === 'form' && jsxRuntime.jsx("div", { className: styles$7.mobileServices, children: services.map((service) => jsxRuntime.jsxs("button", { type: "button", className: activeService === service.key ? styles$7.activeService : '', onClick: () => setActiveService((service.key === 'bus' ? 'busneeded' : service.key)), children: [service.icon, jsxRuntime.jsx("span", { children: service.label })] }, service.key)) }), jsxRuntime.jsxs("div", { className: styles$7.workspace, children: [jsxRuntime.jsxs("aside", { className: styles$7.serviceSidebar, children: [jsxRuntime.jsx(ServiceToggleList, { services: services, enabledServices: enabled, onToggle: toggleService, onClick: (key) => document.getElementById(key)?.scrollIntoView({ behavior: 'smooth', block: 'start' }) }), jsxRuntime.jsxs("div", { className: styles$7.tripEvents, children: [jsxRuntime.jsx("h3", { children: "Trip Events" }), jsxRuntime.jsxs("p", { children: [jsxRuntime.jsx(CalendarIcon$1, { size: 17 }), " ", eventName] })] })] }), jsxRuntime.jsxs("main", { className: `${styles$7.formMain} ${activeTab !== 'form' ? styles$7.mobileHidden : ''}`, children: [validationMessage && jsxRuntime.jsx(Alert, { variant: "error", children: validationMessage }), activeService !== 'general' && !enabled[activeService] && jsxRuntime.jsxs("div", { className: styles$7.mobileEnable, children: [jsxRuntime.jsx("span", { children: "Enable Service" }), jsxRuntime.jsx(Toggle, { "aria-label": `Enable ${activeService}`, checked: false, onChange: (checked) => toggleService(activeService, checked), size: "sm" })] }), section('general', 'General Details', jsxRuntime.jsx(EventsIcon, {}), jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.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 }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Trip Start", name: "tripstartdate", values: values, setValue: setValue, type: "date", required: true }), jsxRuntime.jsx(Field, { label: "Trip Return", name: "tripreturndate", values: values, setValue: setValue, type: "date", min: textValue(values.tripstartdate), required: true })] }), jsxRuntime.jsxs("div", { className: styles$7.contactGroup, children: [jsxRuntime.jsx("span", { className: styles$7.label, children: "Booking Contact *" }), jsxRuntime.jsx(Field, { label: "Full Name", name: "bookingcontact", values: values, setValue: setValue, disabled: true }), jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Phone Number", name: "bookingcontactphone", values: values, setValue: setValue, disabled: true }), jsxRuntime.jsx(Field, { label: "Email Address", name: "bookingcontactemail", values: values, setValue: setValue, type: "email", disabled: true })] })] }), jsxRuntime.jsx(Field, { label: "Request Email CC", name: "ccemail", values: values, setValue: setValue, type: "email", note: "Email addresses, comma delimited." }), jsxRuntime.jsx(Field, { label: "Main Travel Contact", name: "travelcontactid", values: values, setValue: (_name, value) => selectContact('travelcontact', value), options: contactOptions, required: true }), values.travelcontact && jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Main Contact Phone", name: "travelcontactphone", values: values, setValue: setValue, disabled: true }), jsxRuntime.jsx(Field, { label: "Main Contact Email", name: "travelcontactemail", values: values, setValue: setValue, disabled: true })] }), jsxRuntime.jsx(Field, { label: "Alternate Travel Contact", name: "alternatetravelcontactid", values: values, setValue: (_name, value) => selectContact('alternatetravelcontact', value), options: contactOptions }), values.alternatetravelcontact && jsxRuntime.jsxs(FormRow, { columns: 2, children: [jsxRuntime.jsx(Field, { label: "Alternate Contact Phone", name: "alternatetravelcontactphone", values: values, setValue: setValue, disabled: true }), jsxRuntime.jsx(Field, { label: "Alternate Contact Email", name: "alternatetravelcontactemail", values: values, setValue: setValue, disabled: true })] }), jsxRuntime.jsx(YesNo, { label: "Is this request for an elimination event or tournament that could require early departure?", name: "tournamenttripelimination", values: values, setValue: setValue }), jsxRuntime.jsx(Field, { label: "General Notes Regarding This Trip", name: "notes", values: values, setValue: setValue, multiline: true })] })), section('air', 'Commercial Air Request', jsxRuntime.jsx(PlaneIcon$3, { size: 24 }), jsxRuntime.jsx(FlightRequest, { prefix: "air", values: values, setValue: setValue, cateringOptions: cateringOptions })), section('charter', 'Charter Air Request', jsxRuntime.jsx(PlaneIcon$3, { size: 24 }), jsxRuntime.jsx(FlightRequest, { prefix: "charter", values: values, setValue: setValue, cateringOptions: cateringOptions })), section('hotel', 'Hotel Request', jsxRuntime.jsx(HotelIcon$3, { size: 24 }), jsxRuntime.jsx(HotelRequest, { values: values, setValue: setValue })), section('ground', 'Vehicle Rental Request', jsxRuntime.jsx(CarIcon$1, { size: 24 }), jsxRuntime.jsx(VehicleRentalRequest, { values: values, setValue: setValue })), section('busneeded', 'Bus Charter Request', jsxRuntime.jsx(BusIcon$2, { size: 24 }), jsxRuntime.jsx(BusRequest, { values: values, setValue: setValue, schoolAddress: schoolAddress }))] }), jsxRuntime.jsx("aside", { className: `${styles$7.summarySidebar} ${activeTab !== 'summary' ? styles$7.summaryMobileHidden : ''}`, children: jsxRuntime.jsx(RequestSummary, { values: values, enabled: enabled }) })] }), jsxRuntime.jsxs("footer", { className: styles$7.pageFooter, children: [jsxRuntime.jsx(Button, { type: "button", variant: "secondary", onClick: previous, children: currentPage === 1 ? totalPages > 1 ? 'Cancel All' : 'Cancel' : 'Previous' }), totalPages > 1 && jsxRuntime.jsx("div", { className: styles$7.pageButtons, children: Array.from({ length: totalPages }, (_, index) => jsxRuntime.jsx("button", { type: "button", className: currentPage === index + 1 ? styles$7.currentPage : '', disabled: index + 1 > currentPage, onClick: () => setCurrentPage(index + 1), children: index + 1 }, index)) }), jsxRuntime.jsx(Button, { type: "submit", children: currentPage === totalPages ? totalPages > 1 ? 'Submit All' : 'Submit' : 'Next' })] })] });
2466
2564
  };
2467
2565
  GroupTravelRequestPage.displayName = 'GroupTravelRequestPage';
2468
2566
 
@@ -2549,9 +2647,9 @@ var styles$5 = {"page":"InfoCenterPage-module_page__HHBce","breadcrumb":"InfoCen
2549
2647
 
2550
2648
  const CATEGORY_META = {
2551
2649
  Alert: { label: 'Alert', icon: WarningIcon$1, alert: true },
2552
- Air: { label: 'Air', icon: PlaneIcon$4 },
2553
- Car: { label: 'Car', icon: CarIcon$2 },
2554
- Hotel: { label: 'Hotel', icon: HotelIcon$4 },
2650
+ Air: { label: 'Air', icon: PlaneIcon$3 },
2651
+ Car: { label: 'Car', icon: CarIcon$1 },
2652
+ Hotel: { label: 'Hotel', icon: HotelIcon$3 },
2555
2653
  Policy: { label: 'Policy', icon: DocumentIcon },
2556
2654
  General: { label: 'General', icon: DocumentIcon },
2557
2655
  STM: { label: "Short's Info", icon: InfoIcon$1 },
@@ -2765,12 +2863,12 @@ exports.Avatar = Avatar;
2765
2863
  exports.AvatarGroup = AvatarGroup;
2766
2864
  exports.Badge = Badge;
2767
2865
  exports.BuildingIcon = BuildingIcon;
2768
- exports.BusIcon = BusIcon$3;
2866
+ exports.BusIcon = BusIcon$2;
2769
2867
  exports.Button = Button;
2770
2868
  exports.CalendarIcon = CalendarIcon$1;
2771
2869
  exports.CalendarTypeSelector = CalendarTypeSelector;
2772
2870
  exports.CalendarViewSelector = CalendarViewSelector;
2773
- exports.CarIcon = CarIcon$2;
2871
+ exports.CarIcon = CarIcon$1;
2774
2872
  exports.Card = Card;
2775
2873
  exports.CardBody = CardBody;
2776
2874
  exports.CardFooter = CardFooter;
@@ -2813,7 +2911,7 @@ exports.HUB_ADMIN_ITEM = HUB_ADMIN_ITEM;
2813
2911
  exports.HUB_INDIVIDUAL_TRAVEL_ITEM = HUB_INDIVIDUAL_TRAVEL_ITEM;
2814
2912
  exports.HUB_NAV_ITEMS = HUB_NAV_ITEMS;
2815
2913
  exports.HomeIcon = HomeIcon;
2816
- exports.HotelIcon = HotelIcon$4;
2914
+ exports.HotelIcon = HotelIcon$3;
2817
2915
  exports.HotelSegment = HotelSegment;
2818
2916
  exports.HubAppShell = HubAppShell;
2819
2917
  exports.Icons = Icons;
@@ -2842,7 +2940,7 @@ exports.NavItem = NavItem;
2842
2940
  exports.NotFoundPage = NotFoundPage;
2843
2941
  exports.PageBanners = PageBanners;
2844
2942
  exports.PhoneIcon = PhoneIcon;
2845
- exports.PlaneIcon = PlaneIcon$4;
2943
+ exports.PlaneIcon = PlaneIcon$3;
2846
2944
  exports.PlusIcon = PlusIcon$2;
2847
2945
  exports.PreferencesPanel = PreferencesPanel;
2848
2946
  exports.PrinterIcon = PrinterIcon;
@@ -2855,7 +2953,7 @@ exports.ReportIcon = ReportIcon;
2855
2953
  exports.RequestFormFooter = RequestFormFooter;
2856
2954
  exports.RequestFormHeader = RequestFormHeader;
2857
2955
  exports.RequestFormLayout = RequestFormLayout;
2858
- exports.RequestSummary = RequestSummary;
2956
+ exports.RequestSummary = RequestSummary$1;
2859
2957
  exports.RosterToolbar = RosterToolbar;
2860
2958
  exports.SUPPLIER_TYPE_OPTIONS = SUPPLIER_TYPE_OPTIONS;
2861
2959
  exports.SchoolContactForm = SchoolContactForm;