@shortstravelmgmt/component-lib 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts 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,67 @@ 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 TeamScheduleExpandedRow {
1741
+ masterTripGUID: string;
1742
+ sportCode?: string;
1743
+ travelStartDate?: string;
1744
+ travelEndDate?: string;
1745
+ tripName: string;
1746
+ airSegment?: ReactNode;
1747
+ groundSegment?: ReactNode;
1748
+ hotelSegment?: ReactNode;
1749
+ }
1750
+ interface TeamScheduleExpandedTableProps {
1751
+ rows: TeamScheduleExpandedRow[];
1752
+ teamCode?: string;
1753
+ onTripClick?: (row: TeamScheduleExpandedRow) => void;
1754
+ emptyMessage?: string;
1755
+ className?: string;
1756
+ }
1757
+ declare const formatTeamScheduleTravelDates: (startValue?: string, endValue?: string) => string;
1758
+ /** Hub's read-only expanded Team Schedule table. */
1759
+ declare const TeamScheduleExpandedTable: ({ rows, teamCode, onTripClick, emptyMessage, className }: TeamScheduleExpandedTableProps) => React.JSX.Element;
1760
+
1761
+ interface TravelSummaryMetricsProps {
1762
+ tripsTraveled?: string | number;
1763
+ remainingTrips?: string | number;
1764
+ seasonTripCosts?: string | number;
1765
+ seasonLabel: string;
1766
+ overdueActions?: string | number;
1767
+ onOverdueActionsClick?: () => void;
1768
+ className?: string;
1769
+ }
1770
+ declare const formatCompactTripCost: (value?: string | number) => string | undefined;
1771
+ declare const TravelSummaryMetrics: ({ tripsTraveled, remainingTrips, seasonTripCosts, seasonLabel, overdueActions, onOverdueActionsClick, className, }: TravelSummaryMetricsProps) => React.JSX.Element;
1504
1772
 
1505
1773
  interface TravelerFormData {
1506
1774
  /** First name */
@@ -1602,96 +1870,6 @@ interface TripTableProps {
1602
1870
  }
1603
1871
  declare const TripTable: React__default.FC<TripTableProps>;
1604
1872
 
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
1873
  type AdministrationTab = 'system' | 'client';
1696
1874
  interface AdministrationCard {
1697
1875
  key: string;
@@ -1774,39 +1952,59 @@ interface ContactCardData {
1774
1952
  title: string;
1775
1953
  contacts: ContactInfo[];
1776
1954
  }
1955
+ interface ContactPair {
1956
+ sales?: ContactInfo;
1957
+ operations?: ContactInfo;
1958
+ }
1959
+ interface ContactUsData {
1960
+ accountManagers?: ContactInfo[];
1961
+ travelAgents?: ContactInfo[];
1962
+ charterAirContacts?: ContactPair[];
1963
+ motorcoachContacts?: ContactPair[];
1964
+ groupHotelContacts?: ContactInfo[];
1965
+ }
1777
1966
  interface ContactUsPageProps {
1778
- /** Page title */
1779
1967
  title?: string;
1780
- /** Alert/notification banner */
1781
- alert?: ReactNode;
1782
- /** Contact cards to display */
1968
+ state?: 'loading' | 'data' | 'empty' | 'error';
1969
+ errorMessage?: string;
1970
+ data?: ContactUsData;
1971
+ onPrint?: () => void;
1972
+ /** Generic cards remain available for non-Hub consumers. */
1783
1973
  cards?: ContactCardData[];
1784
- /** Custom content to render instead of cards */
1785
1974
  children?: ReactNode;
1786
- /** Additional class */
1787
1975
  className?: string;
1788
1976
  }
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
- };
1977
+ /** Exact presentational counterpart of the Hub Contact Us screen. */
1978
+ declare const ContactUsPage: ({ title, state, errorMessage, data, onPrint, cards, children, className, }: ContactUsPageProps) => React.JSX.Element | null;
1801
1979
 
1802
1980
  type DashboardWidgetSize = 'S' | 'M' | 'L';
1803
1981
  type DashboardWidgetState = 'loading' | 'data' | 'empty' | 'error';
1982
+ type DashboardTravelerRange = 'last7' | 'yesterday' | 'today' | 'tomorrow' | 'next7';
1804
1983
  interface DashboardWidgetRow {
1805
1984
  primary: string;
1806
1985
  secondary?: string;
1807
1986
  value?: string;
1808
1987
  badge?: string;
1809
1988
  }
1989
+ interface DashboardTravelerRecord {
1990
+ traveler: string;
1991
+ dates: string;
1992
+ types: string[];
1993
+ }
1994
+ interface DashboardUnusedTicketRecord {
1995
+ traveler: string;
1996
+ airline: string;
1997
+ airlineLogo?: string;
1998
+ exp: string;
1999
+ expDays: number;
2000
+ amount: string;
2001
+ }
2002
+ interface DashboardInfoCenterItem {
2003
+ id: string;
2004
+ title: string;
2005
+ body?: string;
2006
+ href?: string;
2007
+ }
1810
2008
  interface DashboardWidget {
1811
2009
  id: string;
1812
2010
  type: 'travelers' | 'unused' | 'info';
@@ -1815,8 +2013,17 @@ interface DashboardWidget {
1815
2013
  state?: DashboardWidgetState;
1816
2014
  pinned?: boolean;
1817
2015
  rows?: DashboardWidgetRow[];
2016
+ travelerRecords?: DashboardTravelerRecord[];
2017
+ unusedRecords?: DashboardUnusedTicketRecord[];
2018
+ unusedTotalAmount?: string;
2019
+ infoCenterRecords?: DashboardInfoCenterItem[];
1818
2020
  emptyMessage?: string;
1819
2021
  footerLabel?: string;
2022
+ footerPath?: string;
2023
+ footerSecondary?: {
2024
+ label: string;
2025
+ path: string;
2026
+ };
1820
2027
  }
1821
2028
  interface DashboardPageProps {
1822
2029
  greeting?: string;
@@ -1829,12 +2036,15 @@ interface DashboardPageProps {
1829
2036
  onRefresh?: (widget: DashboardWidget) => void;
1830
2037
  onRemove?: (widget: DashboardWidget) => void;
1831
2038
  onResize?: (widget: DashboardWidget, size: DashboardWidgetSize) => void;
2039
+ onReorder?: (from: number, to: number) => void;
1832
2040
  onReset?: () => void;
1833
2041
  onAddWidget?: (type: DashboardWidget['type']) => void;
2042
+ onTravelerRangeChange?: (widget: DashboardWidget, range: DashboardTravelerRange) => void;
2043
+ onNavigate?: (path: string, state?: unknown) => void;
1834
2044
  className?: string;
1835
2045
  }
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;
2046
+ /** Exact, service-free rendering of Hub's personalized home page. */
2047
+ declare const DashboardPage: ({ greeting, firstName, accountName, widgets, systemBanners, alertBanners, syncStatus, onRefresh, onRemove, onResize, onReorder, onReset, onAddWidget, onTravelerRangeChange, onNavigate, className }: DashboardPageProps) => React.JSX.Element;
1838
2048
 
1839
2049
  interface GroupTravelRequestPageProps {
1840
2050
  /** Event name to display in header */
@@ -1982,6 +2192,18 @@ interface TeamManagementTab {
1982
2192
  badge?: number;
1983
2193
  }
1984
2194
  interface TeamManagementPageProps {
2195
+ /** Hub overview or team-detail shell. */
2196
+ variant?: 'overview' | 'team';
2197
+ /** Overview page title. */
2198
+ title?: string;
2199
+ /** Overview team navigation panel. */
2200
+ teamPanel?: ReactNode;
2201
+ /** Overview contacts heading. */
2202
+ contactsTitle?: string;
2203
+ /** Overview contacts notice. */
2204
+ contactAlert?: ReactNode;
2205
+ /** Overview contacts list. */
2206
+ contacts?: ReactNode;
1985
2207
  /** Team header component */
1986
2208
  header?: ReactNode;
1987
2209
  /** Available tabs */
@@ -2003,7 +2225,7 @@ interface TeamManagementPageProps {
2003
2225
  * TeamManagementPage - Layout for team management with tabbed navigation
2004
2226
  */
2005
2227
  declare const TeamManagementPage: {
2006
- ({ header, tabs, activeTab, onTabChange, children, sidebar, footer, className, }: TeamManagementPageProps): React.JSX.Element;
2228
+ ({ variant, title, teamPanel, contactsTitle, contactAlert, contacts, header, tabs, activeTab, onTabChange, children, sidebar, footer, className, }: TeamManagementPageProps): React.JSX.Element;
2007
2229
  displayName: string;
2008
2230
  };
2009
2231
 
@@ -2024,6 +2246,8 @@ interface TeamSchedulePageProps {
2024
2246
  mobileTitle?: string;
2025
2247
  /** Summary metrics to display */
2026
2248
  metrics?: ScheduleMetric[];
2249
+ /** Exact Hub summary component. Overrides metrics when supplied. */
2250
+ summary?: ReactNode;
2027
2251
  /** Team filter content */
2028
2252
  teamFilter?: ReactNode;
2029
2253
  /** Service filter content */
@@ -2051,7 +2275,7 @@ interface TeamSchedulePageProps {
2051
2275
  * - Schedule table (compact or expanded view)
2052
2276
  */
2053
2277
  declare const TeamSchedulePage: {
2054
- ({ title, mobileTitle, metrics, teamFilter, serviceFilter, actions, compactView, expandedView, viewMode, isMobile, className, }: TeamSchedulePageProps): React.JSX.Element;
2278
+ ({ title, mobileTitle, metrics, summary, teamFilter, serviceFilter, actions, compactView, expandedView, viewMode, isMobile, className, }: TeamSchedulePageProps): React.JSX.Element;
2055
2279
  displayName: string;
2056
2280
  };
2057
2281
 
@@ -2068,6 +2292,8 @@ interface TeamTravelCalendarPageProps {
2068
2292
  mobileTitle?: string;
2069
2293
  /** Summary metrics to display */
2070
2294
  metrics?: CalendarMetric[];
2295
+ /** Exact summary component used by Hub. Overrides metrics when supplied. */
2296
+ summary?: ReactNode;
2071
2297
  /** Team filter content */
2072
2298
  teamFilter?: ReactNode;
2073
2299
  /** Service filter content */
@@ -2104,7 +2330,7 @@ interface TeamTravelCalendarPageProps {
2104
2330
  * - Sidebar for due dates
2105
2331
  */
2106
2332
  declare const TeamTravelCalendarPage: {
2107
- ({ title, mobileTitle, metrics, teamFilter, serviceFilter, viewSelector, typeSelector, calendarView, cardView, listView, sidebar, view, sidebarOpen, isMobile, className, }: TeamTravelCalendarPageProps): React.JSX.Element;
2333
+ ({ title, mobileTitle, metrics, summary, teamFilter, serviceFilter, viewSelector, typeSelector, calendarView, cardView, listView, sidebar, view, sidebarOpen: _sidebarOpen, isMobile, className, }: TeamTravelCalendarPageProps): React.JSX.Element;
2108
2334
  displayName: string;
2109
2335
  };
2110
2336
 
@@ -2142,5 +2368,5 @@ declare const TripDetailPage: {
2142
2368
  displayName: string;
2143
2369
  };
2144
2370
 
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 };
2371
+ 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, 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 };
2372
+ 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, 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 };