@shortstravelmgmt/component-lib 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -137,6 +137,7 @@ declare const ChevronUpIcon: React__default.FC<IconProps>;
137
137
  declare const ChevronRightIcon: React__default.FC<IconProps>;
138
138
  declare const ChevronLeftIcon: React__default.FC<IconProps>;
139
139
  declare const ArrowUpRightIcon: React__default.FC<IconProps>;
140
+ declare const ArrowDownLeftIcon: React__default.FC<IconProps>;
140
141
  declare const EyeIcon: React__default.FC<IconProps>;
141
142
  declare const DownloadIcon: React__default.FC<IconProps>;
142
143
  declare const FilterIcon: React__default.FC<IconProps>;
@@ -184,6 +185,7 @@ declare const Icons: {
184
185
  readonly ChevronRight: React__default.FC<IconProps>;
185
186
  readonly ChevronLeft: React__default.FC<IconProps>;
186
187
  readonly ArrowUpRight: React__default.FC<IconProps>;
188
+ readonly ArrowDownLeft: React__default.FC<IconProps>;
187
189
  readonly Eye: React__default.FC<IconProps>;
188
190
  readonly Download: React__default.FC<IconProps>;
189
191
  readonly Filter: React__default.FC<IconProps>;
@@ -491,6 +493,35 @@ interface AccordionProps {
491
493
  */
492
494
  declare const Accordion: React__default.FC<AccordionProps>;
493
495
 
496
+ interface SegmentedSelectorOption {
497
+ id: string;
498
+ label?: string;
499
+ alt?: string;
500
+ icon?: ReactNode;
501
+ }
502
+ interface SegmentedSelectorProps {
503
+ options: SegmentedSelectorOption[];
504
+ value: string;
505
+ onChange?: (value: string) => void;
506
+ disabled?: boolean;
507
+ size?: 'sm' | 'md' | 'lg';
508
+ className?: string;
509
+ ariaLabel?: string;
510
+ }
511
+ declare const SegmentedSelector: ({ options, value, onChange, disabled, size, className, ariaLabel, }: SegmentedSelectorProps) => React.JSX.Element;
512
+ type CalendarViewValue = 'calendar' | 'card' | 'list';
513
+ interface CalendarViewSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
514
+ value: CalendarViewValue;
515
+ onChange?: (value: CalendarViewValue) => void;
516
+ }
517
+ declare const CalendarViewSelector: ({ value, onChange, ...props }: CalendarViewSelectorProps) => React.JSX.Element;
518
+ type CalendarTypeValue = 'trips' | 'due_dates';
519
+ interface CalendarTypeSelectorProps extends Omit<SegmentedSelectorProps, 'options' | 'value' | 'onChange' | 'ariaLabel'> {
520
+ value: CalendarTypeValue;
521
+ onChange?: (value: CalendarTypeValue) => void;
522
+ }
523
+ declare const CalendarTypeSelector: ({ value, onChange, ...props }: CalendarTypeSelectorProps) => React.JSX.Element;
524
+
494
525
  type DropdownAlignment = 'left' | 'center' | 'right';
495
526
  interface DropdownProps {
496
527
  /** Label for the dropdown trigger button */
@@ -610,6 +641,14 @@ interface FormSectionProps {
610
641
  */
611
642
  declare const FormSection: React__default.FC<FormSectionProps>;
612
643
 
644
+ interface FormStackProps {
645
+ children: ReactNode;
646
+ gap?: 'sm' | 'md' | 'lg';
647
+ className?: string;
648
+ }
649
+ /** Standard vertical form-field rhythm used by Hub modal forms. */
650
+ declare const FormStack: ({ children, gap, className }: FormStackProps) => React.JSX.Element;
651
+
613
652
  type ManifestView = 'passengers' | 'equipment';
614
653
  interface ManifestViewToggleProps {
615
654
  view: ManifestView;
@@ -765,6 +804,23 @@ interface SearchFieldProps {
765
804
  }
766
805
  declare const SearchField: React__default.ForwardRefExoticComponent<SearchFieldProps & React__default.RefAttributes<HTMLInputElement>>;
767
806
 
807
+ interface SchoolContactFormProps {
808
+ mode?: 'Add' | 'Edit' | string;
809
+ createFromPortalUser?: ReactNode;
810
+ firstNameField: ReactNode;
811
+ middleInitialField: ReactNode;
812
+ lastNameField: ReactNode;
813
+ businessPhoneField: ReactNode;
814
+ cellPhoneField: ReactNode;
815
+ emailField: ReactNode;
816
+ className?: string;
817
+ }
818
+ /**
819
+ * Layout for Hub's school-contact editor. Field controls stay injectable so
820
+ * consuming applications retain their form state, validation, and masking.
821
+ */
822
+ declare const SchoolContactForm: ({ mode, createFromPortalUser, firstNameField, middleInitialField, lastNameField, businessPhoneField, cellPhoneField, emailField, className, }: SchoolContactFormProps) => React.JSX.Element;
823
+
768
824
  interface SegmentOption {
769
825
  /** Unique identifier for the option */
770
826
  value: string;
@@ -880,7 +936,23 @@ declare const ServiceToggle: React__default.FC<ServiceToggleProps>;
880
936
  */
881
937
  declare const ServiceToggleList: React__default.FC<ServiceToggleListProps>;
882
938
 
939
+ type SupplierTypeValue = 'A' | 'C' | 'H';
940
+ declare const SUPPLIER_TYPE_OPTIONS: Array<{
941
+ value: SupplierTypeValue;
942
+ label: string;
943
+ }>;
944
+ interface SupplierTypeToggleProps {
945
+ value?: SupplierTypeValue | '';
946
+ defaultValue?: SupplierTypeValue | '';
947
+ onChange?: (value: SupplierTypeValue | '') => void;
948
+ disabled?: boolean;
949
+ className?: string;
950
+ }
951
+ declare const SupplierTypeToggle: ({ value, defaultValue, onChange, disabled, className, }: SupplierTypeToggleProps) => React.JSX.Element;
952
+
883
953
  interface TeamHeaderProps {
954
+ /** Fully composed title. Overrides teamCode/teamName when supplied. */
955
+ title?: ReactNode;
884
956
  /** Team code (e.g., 'MBB') */
885
957
  teamCode?: string;
886
958
  /** Team name/description */
@@ -900,7 +972,22 @@ interface TeamHeaderProps {
900
972
  * TeamHeader - Header component for team management pages
901
973
  */
902
974
  declare const TeamHeader: {
903
- ({ teamCode, teamName, pretitle, backHref, onBack, actions, className, }: TeamHeaderProps): React.JSX.Element;
975
+ ({ title: suppliedTitle, teamCode, teamName, pretitle, backHref, onBack, actions, className, }: TeamHeaderProps): React.JSX.Element;
976
+ displayName: string;
977
+ };
978
+ interface TeamSubMenuTab {
979
+ id: string;
980
+ label: string;
981
+ }
982
+ interface TeamSubMenuProps {
983
+ tabs?: TeamSubMenuTab[];
984
+ activeTab?: string;
985
+ onTabChange?: (tabId: string) => void;
986
+ className?: string;
987
+ }
988
+ /** Router-agnostic counterpart of Hub's team-management submenu. */
989
+ declare const TeamSubMenu: {
990
+ ({ tabs, activeTab, onTabChange, className }: TeamSubMenuProps): React.JSX.Element;
904
991
  displayName: string;
905
992
  };
906
993
 
@@ -976,6 +1063,94 @@ declare const GroundSegment: React__default.FC<GroundSegmentProps>;
976
1063
  */
977
1064
  declare const HotelSegment: React__default.FC<HotelSegmentProps>;
978
1065
 
1066
+ interface SidenavItem {
1067
+ /** Unique key for the item */
1068
+ key: string;
1069
+ /** Display label */
1070
+ label: string;
1071
+ /** Icon component to display */
1072
+ icon: React__default.ReactNode;
1073
+ /** Whether item opens in new tab */
1074
+ external?: boolean;
1075
+ /** Click handler */
1076
+ onClick?: () => void;
1077
+ }
1078
+ interface SidenavProps extends HTMLAttributes<HTMLElement> {
1079
+ /** Logo component or image for expanded state */
1080
+ logo?: React__default.ReactNode;
1081
+ /** Logo component or image for collapsed state */
1082
+ logoCollapsed?: React__default.ReactNode;
1083
+ /** Navigation items */
1084
+ items: SidenavItem[];
1085
+ /** Currently active item key */
1086
+ activeKey?: string;
1087
+ /** Callback when an item is clicked */
1088
+ onItemClick?: (key: string) => void;
1089
+ /** Whether the sidenav starts expanded */
1090
+ defaultExpanded?: boolean;
1091
+ /** Footer content (e.g., user avatar) */
1092
+ footer?: React__default.ReactNode;
1093
+ }
1094
+ /**
1095
+ * Sidenav component for main navigation.
1096
+ * Supports expanded and collapsed states with icons and labels.
1097
+ */
1098
+ declare const Sidenav: React__default.FC<SidenavProps>;
1099
+
1100
+ interface AccountInfo {
1101
+ /** Account code/abbreviation */
1102
+ code: string;
1103
+ /** Full account name */
1104
+ name: string;
1105
+ }
1106
+ interface TopbarProps extends HTMLAttributes<HTMLElement> {
1107
+ /** Current account information */
1108
+ account?: AccountInfo;
1109
+ /** List of available accounts for dropdown */
1110
+ accounts?: AccountInfo[];
1111
+ /** Callback when account is selected */
1112
+ onAccountSelect?: (account: AccountInfo) => void;
1113
+ /** Callback when account selector is clicked (legacy, use onAccountSelect for dropdown) */
1114
+ onAccountClick?: () => void;
1115
+ /** Actions to display on the right side */
1116
+ actions?: React__default.ReactNode;
1117
+ /** Left side content (e.g., account selector) */
1118
+ leftContent?: React__default.ReactNode;
1119
+ }
1120
+ /**
1121
+ * Topbar component for the main header.
1122
+ * Includes account selector with dropdown and action buttons.
1123
+ */
1124
+ declare const Topbar: React__default.FC<TopbarProps>;
1125
+
1126
+ interface AppLayoutProps {
1127
+ /** Navigation items for the sidenav */
1128
+ navItems?: SidenavItem[];
1129
+ /** Currently active navigation item key */
1130
+ activeNavKey?: string;
1131
+ /** Logo element for the sidenav */
1132
+ logo?: React__default.ReactNode;
1133
+ /** Collapsed logo element for the sidenav */
1134
+ collapsedLogo?: React__default.ReactNode;
1135
+ /** Account info for the topbar */
1136
+ account?: AccountInfo;
1137
+ /** Whether the sidenav starts expanded */
1138
+ defaultExpanded?: boolean;
1139
+ /** Callback when navigation item is clicked */
1140
+ onNavItemClick?: (key: string) => void;
1141
+ /** Callback when account selector is clicked */
1142
+ onAccountClick?: () => void;
1143
+ /** Main content to render */
1144
+ children: React__default.ReactNode;
1145
+ /** Footer content for the sidenav */
1146
+ navFooter?: React__default.ReactNode;
1147
+ /** Additional actions for the topbar */
1148
+ topbarActions?: React__default.ReactNode;
1149
+ /** Additional CSS class */
1150
+ className?: string;
1151
+ }
1152
+ declare const AppLayout: React__default.FC<AppLayoutProps>;
1153
+
979
1154
  type CardVariant = 'default' | 'bordered' | 'elevated';
980
1155
  type CardPadding = 'none' | 'sm' | 'md' | 'lg';
981
1156
  interface CardProps extends HTMLAttributes<HTMLDivElement> {
@@ -1107,6 +1282,35 @@ declare const Drawer: React__default.FC<DrawerProps> & {
1107
1282
  Footer: typeof DrawerFooter;
1108
1283
  };
1109
1284
 
1285
+ interface TravelDueDateItem {
1286
+ duedate: string;
1287
+ completeddatetime: string;
1288
+ tasktitle: string;
1289
+ taskid: number;
1290
+ status: string;
1291
+ completedby: string;
1292
+ description: string;
1293
+ servicetype?: string;
1294
+ sportCode: string;
1295
+ tripId: string;
1296
+ tripName: string;
1297
+ masterTripGUID?: string;
1298
+ }
1299
+ type GroupedTravelDueDates = Record<string, TravelDueDateItem[]>;
1300
+ interface DueDatesDrawerProps {
1301
+ isOpen: boolean;
1302
+ dueDates: GroupedTravelDueDates;
1303
+ selectedDate?: string | null;
1304
+ selectedTrip?: string | null;
1305
+ onClose: () => void;
1306
+ onToggle?: (item: TravelDueDateItem) => void;
1307
+ onTaskClick?: (masterTripGUID: string) => void;
1308
+ className?: string;
1309
+ }
1310
+ declare const isTravelDueDateCompleted: (item: Pick<TravelDueDateItem, "status" | "completeddatetime">) => boolean;
1311
+ /** Hub's searchable, status-aware due-dates drawer. */
1312
+ declare const DueDatesDrawer: ({ isOpen, dueDates, selectedDate, selectedTrip, onClose, onToggle, onTaskClick, className }: DueDatesDrawerProps) => React.JSX.Element;
1313
+
1110
1314
  interface MembershipProgram {
1111
1315
  /** Unique identifier */
1112
1316
  id: string | number;
@@ -1372,39 +1576,67 @@ declare const SummarySection: React__default.FC<{
1372
1576
  */
1373
1577
  declare const RequestSummary: React__default.FC<RequestSummaryProps>;
1374
1578
 
1375
- interface SidenavItem {
1376
- /** Unique key for the item */
1377
- key: string;
1378
- /** Display label */
1379
- label: string;
1380
- /** Icon component to display */
1381
- icon: React__default.ReactNode;
1382
- /** Whether item opens in new tab */
1383
- external?: boolean;
1384
- /** Click handler */
1385
- onClick?: () => void;
1579
+ interface RequestFormHeaderProps {
1580
+ /** Title to display */
1581
+ title: string;
1582
+ /** Current page number (1-indexed) */
1583
+ currentPage?: number;
1584
+ /** Total pages */
1585
+ totalPages?: number;
1586
+ /** Event or request name */
1587
+ eventName?: string;
1588
+ /** Additional content on the right side */
1589
+ rightContent?: ReactNode;
1590
+ /** Additional CSS class */
1591
+ className?: string;
1386
1592
  }
1387
- interface SidenavProps extends HTMLAttributes<HTMLElement> {
1388
- /** Logo component or image for expanded state */
1389
- logo?: React__default.ReactNode;
1390
- /** Logo component or image for collapsed state */
1391
- logoCollapsed?: React__default.ReactNode;
1392
- /** Navigation items */
1393
- items: SidenavItem[];
1394
- /** Currently active item key */
1395
- activeKey?: string;
1396
- /** Callback when an item is clicked */
1397
- onItemClick?: (key: string) => void;
1398
- /** Whether the sidenav starts expanded */
1399
- defaultExpanded?: boolean;
1400
- /** Footer content (e.g., user avatar) */
1401
- footer?: React__default.ReactNode;
1593
+ interface RequestFormFooterProps {
1594
+ /** Callback for cancel/previous button */
1595
+ onPrevious: () => void;
1596
+ /** Callback for next/submit button */
1597
+ onNext: () => void;
1598
+ /** Whether on first page */
1599
+ isFirstPage?: boolean;
1600
+ /** Whether on last page */
1601
+ isLastPage?: boolean;
1602
+ /** Whether the form is currently submitting */
1603
+ isSubmitting?: boolean;
1604
+ /** Custom previous button text */
1605
+ previousText?: string;
1606
+ /** Custom next button text */
1607
+ nextText?: string;
1608
+ /** Additional CSS class */
1609
+ className?: string;
1610
+ }
1611
+ interface RequestFormLayoutProps {
1612
+ /** Header component */
1613
+ header?: ReactNode;
1614
+ /** Left sidebar content (service toggles) */
1615
+ sidebar?: ReactNode;
1616
+ /** Main form content */
1617
+ children: ReactNode;
1618
+ /** Right sidebar content (summary) */
1619
+ summary?: ReactNode;
1620
+ /** Footer component */
1621
+ footer?: ReactNode;
1622
+ /** Additional CSS class */
1623
+ className?: string;
1624
+ /** Whether to show the sidebar on mobile */
1625
+ showSidebarOnMobile?: boolean;
1402
1626
  }
1403
1627
  /**
1404
- * Sidenav component for main navigation.
1405
- * Supports expanded and collapsed states with icons and labels.
1628
+ * RequestFormHeader component for the fixed header in travel request forms.
1406
1629
  */
1407
- declare const Sidenav: React__default.FC<SidenavProps>;
1630
+ declare const RequestFormHeader: React__default.FC<RequestFormHeaderProps>;
1631
+ /**
1632
+ * RequestFormFooter component for the fixed footer with navigation buttons.
1633
+ */
1634
+ declare const RequestFormFooter: React__default.FC<RequestFormFooterProps>;
1635
+ /**
1636
+ * RequestFormLayout organism for travel request forms.
1637
+ * Provides a three-column layout with fixed header and footer.
1638
+ */
1639
+ declare const RequestFormLayout: React__default.FC<RequestFormLayoutProps>;
1408
1640
 
1409
1641
  interface TableColumn<T = any> {
1410
1642
  /** Unique key for the column */
@@ -1476,31 +1708,83 @@ declare const TeamCard: {
1476
1708
  displayName: string;
1477
1709
  };
1478
1710
 
1479
- interface AccountInfo {
1480
- /** Account code/abbreviation */
1481
- code: string;
1482
- /** Full account name */
1483
- name: string;
1711
+ interface SeasonOption {
1712
+ value: string;
1713
+ label: string;
1484
1714
  }
1485
- interface TopbarProps extends HTMLAttributes<HTMLElement> {
1486
- /** Current account information */
1487
- account?: AccountInfo;
1488
- /** List of available accounts for dropdown */
1489
- accounts?: AccountInfo[];
1490
- /** Callback when account is selected */
1491
- onAccountSelect?: (account: AccountInfo) => void;
1492
- /** Callback when account selector is clicked (legacy, use onAccountSelect for dropdown) */
1493
- onAccountClick?: () => void;
1494
- /** Actions to display on the right side */
1495
- actions?: React__default.ReactNode;
1496
- /** Left side content (e.g., account selector) */
1497
- leftContent?: React__default.ReactNode;
1715
+ interface TeamScheduleActionsProps {
1716
+ isCompactView: boolean;
1717
+ tripCount: number;
1718
+ seasonLabel: string;
1719
+ seasonValue?: string;
1720
+ seasonOptions?: SeasonOption[];
1721
+ previousSeasonDisabled?: boolean;
1722
+ exportDisabled?: boolean;
1723
+ exporting?: boolean;
1724
+ groupTravelDisabled?: boolean;
1725
+ mergeDisabled?: boolean;
1726
+ merging?: boolean;
1727
+ onViewSchedule?: () => void;
1728
+ onBack?: () => void;
1729
+ onPreviousSeason?: () => void;
1730
+ onNextSeason?: () => void;
1731
+ onSeasonChange?: (value: string) => void;
1732
+ onExport?: () => void;
1733
+ onGroupTravelRequest?: () => void;
1734
+ onMergeEvents?: () => void;
1735
+ className?: string;
1498
1736
  }
1499
- /**
1500
- * Topbar component for the main header.
1501
- * Includes account selector with dropdown and action buttons.
1502
- */
1503
- declare const Topbar: React__default.FC<TopbarProps>;
1737
+ /** Exact presentational counterpart of Hub's Team Schedule action controls. */
1738
+ declare const TeamScheduleActions: ({ isCompactView, tripCount, seasonLabel, seasonValue, seasonOptions, previousSeasonDisabled, exportDisabled, exporting, groupTravelDisabled, mergeDisabled, merging, onViewSchedule, onBack, onPreviousSeason, onNextSeason, onSeasonChange, onExport, onGroupTravelRequest, onMergeEvents, className, }: TeamScheduleActionsProps) => React.JSX.Element;
1739
+
1740
+ interface TeamScheduleCompactRow {
1741
+ id: string | number;
1742
+ trip: ReactNode;
1743
+ events: ReactNode;
1744
+ }
1745
+ interface TeamScheduleCompactTableProps {
1746
+ rows: TeamScheduleCompactRow[];
1747
+ tripHeaders?: ReactNode[];
1748
+ eventHeaders?: ReactNode[];
1749
+ onAddEvent?: () => void;
1750
+ addEventDisabled?: boolean;
1751
+ className?: string;
1752
+ }
1753
+ /** Hub's two-panel compact Team Schedule shell. Editable rows remain injectable. */
1754
+ declare const TeamScheduleCompactTable: ({ rows, tripHeaders, eventHeaders, onAddEvent, addEventDisabled, className, }: TeamScheduleCompactTableProps) => React.JSX.Element;
1755
+
1756
+ interface TeamScheduleExpandedRow {
1757
+ masterTripGUID: string;
1758
+ sportCode?: string;
1759
+ travelStartDate?: string;
1760
+ travelEndDate?: string;
1761
+ tripName: string;
1762
+ airSegment?: ReactNode;
1763
+ groundSegment?: ReactNode;
1764
+ hotelSegment?: ReactNode;
1765
+ }
1766
+ interface TeamScheduleExpandedTableProps {
1767
+ rows: TeamScheduleExpandedRow[];
1768
+ teamCode?: string;
1769
+ onTripClick?: (row: TeamScheduleExpandedRow) => void;
1770
+ emptyMessage?: string;
1771
+ className?: string;
1772
+ }
1773
+ declare const formatTeamScheduleTravelDates: (startValue?: string, endValue?: string) => string;
1774
+ /** Hub's read-only expanded Team Schedule table. */
1775
+ declare const TeamScheduleExpandedTable: ({ rows, teamCode, onTripClick, emptyMessage, className }: TeamScheduleExpandedTableProps) => React.JSX.Element;
1776
+
1777
+ interface TravelSummaryMetricsProps {
1778
+ tripsTraveled?: string | number;
1779
+ remainingTrips?: string | number;
1780
+ seasonTripCosts?: string | number;
1781
+ seasonLabel: string;
1782
+ overdueActions?: string | number;
1783
+ onOverdueActionsClick?: () => void;
1784
+ className?: string;
1785
+ }
1786
+ declare const formatCompactTripCost: (value?: string | number) => string | undefined;
1787
+ declare const TravelSummaryMetrics: ({ tripsTraveled, remainingTrips, seasonTripCosts, seasonLabel, overdueActions, onOverdueActionsClick, className, }: TravelSummaryMetricsProps) => React.JSX.Element;
1504
1788
 
1505
1789
  interface TravelerFormData {
1506
1790
  /** First name */
@@ -1602,96 +1886,6 @@ interface TripTableProps {
1602
1886
  }
1603
1887
  declare const TripTable: React__default.FC<TripTableProps>;
1604
1888
 
1605
- interface AppLayoutProps {
1606
- /** Navigation items for the sidenav */
1607
- navItems?: SidenavItem[];
1608
- /** Currently active navigation item key */
1609
- activeNavKey?: string;
1610
- /** Logo element for the sidenav */
1611
- logo?: React__default.ReactNode;
1612
- /** Collapsed logo element for the sidenav */
1613
- collapsedLogo?: React__default.ReactNode;
1614
- /** Account info for the topbar */
1615
- account?: AccountInfo;
1616
- /** Whether the sidenav starts expanded */
1617
- defaultExpanded?: boolean;
1618
- /** Callback when navigation item is clicked */
1619
- onNavItemClick?: (key: string) => void;
1620
- /** Callback when account selector is clicked */
1621
- onAccountClick?: () => void;
1622
- /** Main content to render */
1623
- children: React__default.ReactNode;
1624
- /** Footer content for the sidenav */
1625
- navFooter?: React__default.ReactNode;
1626
- /** Additional actions for the topbar */
1627
- topbarActions?: React__default.ReactNode;
1628
- /** Additional CSS class */
1629
- className?: string;
1630
- }
1631
- declare const AppLayout: React__default.FC<AppLayoutProps>;
1632
-
1633
- interface RequestFormHeaderProps {
1634
- /** Title to display */
1635
- title: string;
1636
- /** Current page number (1-indexed) */
1637
- currentPage?: number;
1638
- /** Total pages */
1639
- totalPages?: number;
1640
- /** Event or request name */
1641
- eventName?: string;
1642
- /** Additional content on the right side */
1643
- rightContent?: ReactNode;
1644
- /** Additional CSS class */
1645
- className?: string;
1646
- }
1647
- interface RequestFormFooterProps {
1648
- /** Callback for cancel/previous button */
1649
- onPrevious: () => void;
1650
- /** Callback for next/submit button */
1651
- onNext: () => void;
1652
- /** Whether on first page */
1653
- isFirstPage?: boolean;
1654
- /** Whether on last page */
1655
- isLastPage?: boolean;
1656
- /** Whether the form is currently submitting */
1657
- isSubmitting?: boolean;
1658
- /** Custom previous button text */
1659
- previousText?: string;
1660
- /** Custom next button text */
1661
- nextText?: string;
1662
- /** Additional CSS class */
1663
- className?: string;
1664
- }
1665
- interface RequestFormLayoutProps {
1666
- /** Header component */
1667
- header?: ReactNode;
1668
- /** Left sidebar content (service toggles) */
1669
- sidebar?: ReactNode;
1670
- /** Main form content */
1671
- children: ReactNode;
1672
- /** Right sidebar content (summary) */
1673
- summary?: ReactNode;
1674
- /** Footer component */
1675
- footer?: ReactNode;
1676
- /** Additional CSS class */
1677
- className?: string;
1678
- /** Whether to show the sidebar on mobile */
1679
- showSidebarOnMobile?: boolean;
1680
- }
1681
- /**
1682
- * RequestFormHeader component for the fixed header in travel request forms.
1683
- */
1684
- declare const RequestFormHeader: React__default.FC<RequestFormHeaderProps>;
1685
- /**
1686
- * RequestFormFooter component for the fixed footer with navigation buttons.
1687
- */
1688
- declare const RequestFormFooter: React__default.FC<RequestFormFooterProps>;
1689
- /**
1690
- * RequestFormLayout template for travel request forms.
1691
- * Provides a three-column layout with fixed header and footer.
1692
- */
1693
- declare const RequestFormLayout: React__default.FC<RequestFormLayoutProps>;
1694
-
1695
1889
  type AdministrationTab = 'system' | 'client';
1696
1890
  interface AdministrationCard {
1697
1891
  key: string;
@@ -1774,39 +1968,59 @@ interface ContactCardData {
1774
1968
  title: string;
1775
1969
  contacts: ContactInfo[];
1776
1970
  }
1971
+ interface ContactPair {
1972
+ sales?: ContactInfo;
1973
+ operations?: ContactInfo;
1974
+ }
1975
+ interface ContactUsData {
1976
+ accountManagers?: ContactInfo[];
1977
+ travelAgents?: ContactInfo[];
1978
+ charterAirContacts?: ContactPair[];
1979
+ motorcoachContacts?: ContactPair[];
1980
+ groupHotelContacts?: ContactInfo[];
1981
+ }
1777
1982
  interface ContactUsPageProps {
1778
- /** Page title */
1779
1983
  title?: string;
1780
- /** Alert/notification banner */
1781
- alert?: ReactNode;
1782
- /** Contact cards to display */
1984
+ state?: 'loading' | 'data' | 'empty' | 'error';
1985
+ errorMessage?: string;
1986
+ data?: ContactUsData;
1987
+ onPrint?: () => void;
1988
+ /** Generic cards remain available for non-Hub consumers. */
1783
1989
  cards?: ContactCardData[];
1784
- /** Custom content to render instead of cards */
1785
1990
  children?: ReactNode;
1786
- /** Additional class */
1787
1991
  className?: string;
1788
1992
  }
1789
- /**
1790
- * ContactUsPage - Contact information page layout
1791
- *
1792
- * Shows a page with:
1793
- * - Title
1794
- * - Optional alert banner
1795
- * - Contact cards grid
1796
- */
1797
- declare const ContactUsPage: {
1798
- ({ title, alert, cards, children, className, }: ContactUsPageProps): React.JSX.Element;
1799
- displayName: string;
1800
- };
1993
+ /** Exact presentational counterpart of the Hub Contact Us screen. */
1994
+ declare const ContactUsPage: ({ title, state, errorMessage, data, onPrint, cards, children, className, }: ContactUsPageProps) => React.JSX.Element | null;
1801
1995
 
1802
1996
  type DashboardWidgetSize = 'S' | 'M' | 'L';
1803
1997
  type DashboardWidgetState = 'loading' | 'data' | 'empty' | 'error';
1998
+ type DashboardTravelerRange = 'last7' | 'yesterday' | 'today' | 'tomorrow' | 'next7';
1804
1999
  interface DashboardWidgetRow {
1805
2000
  primary: string;
1806
2001
  secondary?: string;
1807
2002
  value?: string;
1808
2003
  badge?: string;
1809
2004
  }
2005
+ interface DashboardTravelerRecord {
2006
+ traveler: string;
2007
+ dates: string;
2008
+ types: string[];
2009
+ }
2010
+ interface DashboardUnusedTicketRecord {
2011
+ traveler: string;
2012
+ airline: string;
2013
+ airlineLogo?: string;
2014
+ exp: string;
2015
+ expDays: number;
2016
+ amount: string;
2017
+ }
2018
+ interface DashboardInfoCenterItem {
2019
+ id: string;
2020
+ title: string;
2021
+ body?: string;
2022
+ href?: string;
2023
+ }
1810
2024
  interface DashboardWidget {
1811
2025
  id: string;
1812
2026
  type: 'travelers' | 'unused' | 'info';
@@ -1815,8 +2029,17 @@ interface DashboardWidget {
1815
2029
  state?: DashboardWidgetState;
1816
2030
  pinned?: boolean;
1817
2031
  rows?: DashboardWidgetRow[];
2032
+ travelerRecords?: DashboardTravelerRecord[];
2033
+ unusedRecords?: DashboardUnusedTicketRecord[];
2034
+ unusedTotalAmount?: string;
2035
+ infoCenterRecords?: DashboardInfoCenterItem[];
1818
2036
  emptyMessage?: string;
1819
2037
  footerLabel?: string;
2038
+ footerPath?: string;
2039
+ footerSecondary?: {
2040
+ label: string;
2041
+ path: string;
2042
+ };
1820
2043
  }
1821
2044
  interface DashboardPageProps {
1822
2045
  greeting?: string;
@@ -1829,12 +2052,15 @@ interface DashboardPageProps {
1829
2052
  onRefresh?: (widget: DashboardWidget) => void;
1830
2053
  onRemove?: (widget: DashboardWidget) => void;
1831
2054
  onResize?: (widget: DashboardWidget, size: DashboardWidgetSize) => void;
2055
+ onReorder?: (from: number, to: number) => void;
1832
2056
  onReset?: () => void;
1833
2057
  onAddWidget?: (type: DashboardWidget['type']) => void;
2058
+ onTravelerRangeChange?: (widget: DashboardWidget, range: DashboardTravelerRange) => void;
2059
+ onNavigate?: (path: string, state?: unknown) => void;
1834
2060
  className?: string;
1835
2061
  }
1836
- /** Hub's personalized post-login landing page. */
1837
- declare const DashboardPage: ({ greeting, firstName, accountName, widgets, systemBanners, alertBanners, syncStatus, onRefresh, onRemove, onResize, onReset, onAddWidget, className, }: DashboardPageProps) => React.JSX.Element;
2062
+ /** Exact, service-free rendering of Hub's personalized home page. */
2063
+ declare const DashboardPage: ({ greeting, firstName, accountName, widgets, systemBanners, alertBanners, syncStatus, onRefresh, onRemove, onResize, onReorder, onReset, onAddWidget, onTravelerRangeChange, onNavigate, className }: DashboardPageProps) => React.JSX.Element;
1838
2064
 
1839
2065
  interface GroupTravelRequestPageProps {
1840
2066
  /** Event name to display in header */
@@ -1982,6 +2208,18 @@ interface TeamManagementTab {
1982
2208
  badge?: number;
1983
2209
  }
1984
2210
  interface TeamManagementPageProps {
2211
+ /** Hub overview or team-detail shell. */
2212
+ variant?: 'overview' | 'team';
2213
+ /** Overview page title. */
2214
+ title?: string;
2215
+ /** Overview team navigation panel. */
2216
+ teamPanel?: ReactNode;
2217
+ /** Overview contacts heading. */
2218
+ contactsTitle?: string;
2219
+ /** Overview contacts notice. */
2220
+ contactAlert?: ReactNode;
2221
+ /** Overview contacts list. */
2222
+ contacts?: ReactNode;
1985
2223
  /** Team header component */
1986
2224
  header?: ReactNode;
1987
2225
  /** Available tabs */
@@ -2003,7 +2241,7 @@ interface TeamManagementPageProps {
2003
2241
  * TeamManagementPage - Layout for team management with tabbed navigation
2004
2242
  */
2005
2243
  declare const TeamManagementPage: {
2006
- ({ header, tabs, activeTab, onTabChange, children, sidebar, footer, className, }: TeamManagementPageProps): React.JSX.Element;
2244
+ ({ variant, title, teamPanel, contactsTitle, contactAlert, contacts, header, tabs, activeTab, onTabChange, children, sidebar, footer, className, }: TeamManagementPageProps): React.JSX.Element;
2007
2245
  displayName: string;
2008
2246
  };
2009
2247
 
@@ -2024,6 +2262,8 @@ interface TeamSchedulePageProps {
2024
2262
  mobileTitle?: string;
2025
2263
  /** Summary metrics to display */
2026
2264
  metrics?: ScheduleMetric[];
2265
+ /** Exact Hub summary component. Overrides metrics when supplied. */
2266
+ summary?: ReactNode;
2027
2267
  /** Team filter content */
2028
2268
  teamFilter?: ReactNode;
2029
2269
  /** Service filter content */
@@ -2051,7 +2291,7 @@ interface TeamSchedulePageProps {
2051
2291
  * - Schedule table (compact or expanded view)
2052
2292
  */
2053
2293
  declare const TeamSchedulePage: {
2054
- ({ title, mobileTitle, metrics, teamFilter, serviceFilter, actions, compactView, expandedView, viewMode, isMobile, className, }: TeamSchedulePageProps): React.JSX.Element;
2294
+ ({ title, mobileTitle, metrics, summary, teamFilter, serviceFilter, actions, compactView, expandedView, viewMode, isMobile, className, }: TeamSchedulePageProps): React.JSX.Element;
2055
2295
  displayName: string;
2056
2296
  };
2057
2297
 
@@ -2068,6 +2308,8 @@ interface TeamTravelCalendarPageProps {
2068
2308
  mobileTitle?: string;
2069
2309
  /** Summary metrics to display */
2070
2310
  metrics?: CalendarMetric[];
2311
+ /** Exact summary component used by Hub. Overrides metrics when supplied. */
2312
+ summary?: ReactNode;
2071
2313
  /** Team filter content */
2072
2314
  teamFilter?: ReactNode;
2073
2315
  /** Service filter content */
@@ -2104,7 +2346,7 @@ interface TeamTravelCalendarPageProps {
2104
2346
  * - Sidebar for due dates
2105
2347
  */
2106
2348
  declare const TeamTravelCalendarPage: {
2107
- ({ title, mobileTitle, metrics, teamFilter, serviceFilter, viewSelector, typeSelector, calendarView, cardView, listView, sidebar, view, sidebarOpen, isMobile, className, }: TeamTravelCalendarPageProps): React.JSX.Element;
2349
+ ({ title, mobileTitle, metrics, summary, teamFilter, serviceFilter, viewSelector, typeSelector, calendarView, cardView, listView, sidebar, view, sidebarOpen: _sidebarOpen, isMobile, className, }: TeamTravelCalendarPageProps): React.JSX.Element;
2108
2350
  displayName: string;
2109
2351
  };
2110
2352
 
@@ -2142,5 +2384,5 @@ declare const TripDetailPage: {
2142
2384
  displayName: string;
2143
2385
  };
2144
2386
 
2145
- export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon, Button, CalendarIcon, CarIcon, Card, CardBody, CardFooter, CardHeader, CharterManifestPage, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, EditIcon, EyeIcon, FilterChip, FilterIcon, FormField, FormRow, FormSection, GridIcon, GroundSegment, GroupTravelRequestPage, HomeIcon, HotelIcon, HotelSegment, Icons, IndividualTravelPage, InfoCenterPage, InfoIcon, Input, LightbulbIcon, LimoIcon, LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, PageBanners, PhoneIcon, PlaneIcon, PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, RailIcon, RefreshIcon, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, RosterToolbar, SearchField, SearchIcon, Segment, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, Spinner, StatusBadge, SummarySection, Table, Tag, TeamCard, TeamHeader, TeamManagementPage, TeamSchedulePage, TeamTravelCalendarPage, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon, TravelServiceIcon, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UserIcon, UsersIcon, WarningIcon, XIcon };
2146
- export type { AccordionProps, AccountInfo, AdministrationCard, AdministrationPageProps, AdministrationTab, AirSegmentProps, AlertProps, AlertVariant, AppLayoutProps, AvatarGroupProps, AvatarProps, AvatarSize, BadgeProps, BadgeSize, BadgeVariant, ButtonProps, ButtonSize, ButtonVariant, CalendarMetric, CalendarView, CardBodyProps, CardFooterProps, CardHeaderProps, CardPadding, CardProps, CardVariant, CharterManifestEquipment, CharterManifestPageProps, CharterManifestPassenger, CharterManifestSegment, CheckboxProps, ConfirmModalProps, Contact, ContactCardData, ContactInfo, ContactListProps, ContactUsPageProps, DashboardPageProps, DatepickerProps, DatepickerSize, DrawerBodyProps, DrawerFooterProps, DrawerHeaderProps, DrawerPosition, DrawerProps, DrawerSize, DropdownAlignment, DropdownItemProps, DropdownProps, FilterChipProps, FilterOption, FlightData, FormFieldProps, FormRowProps, FormSectionProps, GroundData, GroundSegmentProps, GroupTravelRequestPageProps, HotelData, HotelSegmentProps, IconName, IconProps, IndividualTravelPageProps, InfoCenterArticle, InfoCenterPageProps, InfoCenterPageState, InputProps, InputSize, ManifestCapacityStatsProps, ManifestSendState, ManifestView, ManifestViewToggleProps, MembershipProgram, MembershipProgramsProps, MetricProps, ModalFooterProps, ModalProps, ModalSize, ModuleProps, ModuleSize, NavItemProps, NavItemSize, NavItemVariant, NotFoundPageProps, PageBannersProps, PreferenceField, PreferenceSection, PreferencesPanelProps, ProgressBarProps, ProgressCircleProps, ProgressSize, ProgressVariant, RequestFormFooterProps, RequestFormHeaderProps, RequestFormLayoutProps, RequestSummaryProps, RosterToolbarProps, ScheduleFilterOption, ScheduleMetric, SearchFieldProps, SegmentOption, SegmentProps, SegmentVariant, SelectFilterOption, SelectFilterProps, SelectOption, SelectOptionGroup, SelectProps, SelectSize, ServiceConfig, ServiceToggleListProps, ServiceToggleProps, SidenavItem, SidenavProps, SpinnerProps, SpinnerSize, StatusBadgeProps, StatusBadgeVariant, SummaryItem, SummarySectionConfig, SummarySegment, SystemBanner, TabKey, TableColumn, TableProps, TagProps, TagSize, TagVariant, TeamCardProps, TeamHeaderProps, TeamManagementPageProps, TeamManagementTab, TeamOption, TeamSchedulePageProps, TeamTravelCalendarPageProps, TextareaProps, TimepickerProps, TimepickerSize, TitleProps, TitleWeight, ToggleProps, ToggleSize, ToolbarAction, TooltipPosition, TooltipProps, TooltipVariant, TopbarProps, TravelAlertBanner, TravelServiceIconProps, TravelType, TravelerFormData, TravelerFormProps, TripData, TripDetailPageProps, TripSegmentProps, TripTableProps, TypeIconProps, VendorCode };
2387
+ export { Accordion, AdministrationPage, AirSegment, Alert, AppLayout, ArrowDownLeftIcon, ArrowUpRightIcon, Avatar, AvatarGroup, Badge, BuildingIcon, BusIcon, Button, CalendarIcon, CalendarTypeSelector, CalendarViewSelector, CarIcon, Card, CardBody, CardFooter, CardHeader, CharterManifestPage, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, ConfirmModal, ContactList, ContactUsPage, CubeIcon, DashboardIcon, DashboardPage, Datepicker, DocumentIcon, DownloadIcon, Drawer, DrawerBody, DrawerFooter, DrawerHeader, Dropdown, DueDatesDrawer, EditIcon, EyeIcon, FilterChip, FilterIcon, FormField, FormRow, FormSection, FormStack, GridIcon, GroundSegment, GroupTravelRequestPage, HomeIcon, HotelIcon, HotelSegment, Icons, IndividualTravelPage, InfoCenterPage, InfoIcon, Input, LightbulbIcon, LimoIcon, LockIcon, LogoIcon, MailIcon, ManifestCapacityStats, ManifestViewToggle, MegaphoneIcon, MembershipPrograms, MenuIcon, Metric, MinusIcon, Modal, ModalFooter, Module, ModuleDivider, ModuleVerticalDivider, NavItem, NotFoundPage, PageBanners, PhoneIcon, PlaneIcon, PlusIcon, PreferencesPanel, PrinterIcon, Progress, ProgressBar, ProgressCircle, RailIcon, RefreshIcon, ReportIcon, RequestFormFooter, RequestFormHeader, RequestFormLayout, RequestSummary, RosterToolbar, SUPPLIER_TYPE_OPTIONS, SchoolContactForm, SearchField, SearchIcon, Segment, SegmentedSelector, Select, SelectFilter, ServiceToggle, ServiceToggleList, SettingsIcon, Sidenav, Spinner, StatusBadge, SummarySection, SupplierTypeToggle, Table, Tag, TeamCard, TeamHeader, TeamManagementPage, TeamScheduleActions, TeamScheduleCompactTable, TeamScheduleExpandedTable, TeamSchedulePage, TeamSubMenu, TeamTravelCalendarPage, Textarea, Timepicker, Title, Toggle, Tooltip, Topbar, TrashIcon, TravelServiceIcon, TravelSummaryMetrics, TravelerForm, TrendDownIcon, TrendUpIcon, TripDetailPage, TripSegment, TripTable, TypeIcon, UserIcon, UsersIcon, WarningIcon, XIcon, formatCompactTripCost, formatTeamScheduleTravelDates, isTravelDueDateCompleted };
2388
+ export type { AccordionProps, AccountInfo, AdministrationCard, AdministrationPageProps, AdministrationTab, AirSegmentProps, AlertProps, AlertVariant, AppLayoutProps, AvatarGroupProps, AvatarProps, AvatarSize, BadgeProps, BadgeSize, BadgeVariant, ButtonProps, ButtonSize, ButtonVariant, CalendarMetric, CalendarTypeSelectorProps, CalendarTypeValue, CalendarView, CalendarViewSelectorProps, CalendarViewValue, CardBodyProps, CardFooterProps, CardHeaderProps, CardPadding, CardProps, CardVariant, CharterManifestEquipment, CharterManifestPageProps, CharterManifestPassenger, CharterManifestSegment, CheckboxProps, ConfirmModalProps, Contact, ContactCardData, ContactInfo, ContactListProps, ContactPair, ContactUsData, ContactUsPageProps, DashboardPageProps, DatepickerProps, DatepickerSize, DrawerBodyProps, DrawerFooterProps, DrawerHeaderProps, DrawerPosition, DrawerProps, DrawerSize, DropdownAlignment, DropdownItemProps, DropdownProps, DueDatesDrawerProps, FilterChipProps, FilterOption, FlightData, FormFieldProps, FormRowProps, FormSectionProps, FormStackProps, GroundData, GroundSegmentProps, GroupTravelRequestPageProps, GroupedTravelDueDates, HotelData, HotelSegmentProps, IconName, IconProps, IndividualTravelPageProps, InfoCenterArticle, InfoCenterPageProps, InfoCenterPageState, InputProps, InputSize, ManifestCapacityStatsProps, ManifestSendState, ManifestView, ManifestViewToggleProps, MembershipProgram, MembershipProgramsProps, MetricProps, ModalFooterProps, ModalProps, ModalSize, ModuleProps, ModuleSize, NavItemProps, NavItemSize, NavItemVariant, NotFoundPageProps, PageBannersProps, PreferenceField, PreferenceSection, PreferencesPanelProps, ProgressBarProps, ProgressCircleProps, ProgressSize, ProgressVariant, RequestFormFooterProps, RequestFormHeaderProps, RequestFormLayoutProps, RequestSummaryProps, RosterToolbarProps, ScheduleFilterOption, ScheduleMetric, SchoolContactFormProps, SearchFieldProps, SeasonOption, SegmentOption, SegmentProps, SegmentVariant, SegmentedSelectorOption, SegmentedSelectorProps, SelectFilterOption, SelectFilterProps, SelectOption, SelectOptionGroup, SelectProps, SelectSize, ServiceConfig, ServiceToggleListProps, ServiceToggleProps, SidenavItem, SidenavProps, SpinnerProps, SpinnerSize, StatusBadgeProps, StatusBadgeVariant, SummaryItem, SummarySectionConfig, SummarySegment, SupplierTypeToggleProps, SupplierTypeValue, SystemBanner, TabKey, TableColumn, TableProps, TagProps, TagSize, TagVariant, TeamCardProps, TeamHeaderProps, TeamManagementPageProps, TeamManagementTab, TeamOption, TeamScheduleActionsProps, TeamScheduleCompactRow, TeamScheduleCompactTableProps, TeamScheduleExpandedRow, TeamScheduleExpandedTableProps, TeamSchedulePageProps, TeamSubMenuProps, TeamSubMenuTab, TeamTravelCalendarPageProps, TextareaProps, TimepickerProps, TimepickerSize, TitleProps, TitleWeight, ToggleProps, ToggleSize, ToolbarAction, TooltipPosition, TooltipProps, TooltipVariant, TopbarProps, TravelAlertBanner, TravelDueDateItem, TravelServiceIconProps, TravelSummaryMetricsProps, TravelType, TravelerFormData, TravelerFormProps, TripData, TripDetailPageProps, TripSegmentProps, TripTableProps, TypeIconProps, VendorCode };