@okta/odyssey-react-mui 1.25.0 → 1.26.0
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/CHANGELOG.md +11 -0
- package/dist/Autocomplete.js +30 -191
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Box.js +2 -0
- package/dist/Box.js.map +1 -1
- package/dist/Card.js +1 -0
- package/dist/Card.js.map +1 -1
- package/dist/OdysseyDesignTokensContext.js +3 -2
- package/dist/OdysseyDesignTokensContext.js.map +1 -1
- package/dist/OdysseyProvider.js +9 -7
- package/dist/OdysseyProvider.js.map +1 -1
- package/dist/OdysseyThemeProvider.js +33 -13
- package/dist/OdysseyThemeProvider.js.map +1 -1
- package/dist/Pagination/Pagination.js +46 -14
- package/dist/Pagination/Pagination.js.map +1 -1
- package/dist/Surface.js +4 -1
- package/dist/Surface.js.map +1 -1
- package/dist/Tag.js +42 -27
- package/dist/Tag.js.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/index.scss +1 -1
- package/dist/labs/AppTile.js +137 -39
- package/dist/labs/AppTile.js.map +1 -1
- package/dist/labs/DataView/CardLayoutContent.js +7 -8
- package/dist/labs/DataView/CardLayoutContent.js.map +1 -1
- package/dist/labs/DataView/DataCard.js +96 -43
- package/dist/labs/DataView/DataCard.js.map +1 -1
- package/dist/labs/DataView/TableLayoutContent.js +3 -2
- package/dist/labs/DataView/TableLayoutContent.js.map +1 -1
- package/dist/labs/DataView/componentTypes.js.map +1 -1
- package/dist/labs/DataView/index.js.map +1 -1
- package/dist/labs/OdysseyPickers/ComposablePicker.js +113 -0
- package/dist/labs/OdysseyPickers/ComposablePicker.js.map +1 -0
- package/dist/labs/OdysseyPickers/Picker.js +261 -0
- package/dist/labs/OdysseyPickers/Picker.js.map +1 -0
- package/dist/labs/OdysseyPickers/PickerVirtualizationListBox.js +132 -0
- package/dist/labs/OdysseyPickers/PickerVirtualizationListBox.js.map +1 -0
- package/dist/labs/OdysseyPickers/PickerWithOptionAdornment.js +291 -0
- package/dist/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -0
- package/dist/{src/createShadowDomElements.d.ts → labs/OdysseyPickers/index.js} +4 -7
- package/dist/labs/OdysseyPickers/index.js.map +1 -0
- package/dist/labs/PageTemplate.js +14 -10
- package/dist/labs/PageTemplate.js.map +1 -1
- package/dist/labs/SideNav/CollapseIcon.js +11 -25
- package/dist/labs/SideNav/CollapseIcon.js.map +1 -1
- package/dist/labs/SideNav/HandleIcon.js +32 -0
- package/dist/labs/SideNav/HandleIcon.js.map +1 -0
- package/dist/labs/{NavAccordion.js → SideNav/NavAccordion.js} +35 -6
- package/dist/labs/SideNav/NavAccordion.js.map +1 -0
- package/dist/labs/SideNav/OktaAura.js +32 -0
- package/dist/labs/SideNav/OktaAura.js.map +1 -0
- package/dist/labs/SideNav/OktaLogo.js +6 -9
- package/dist/labs/SideNav/OktaLogo.js.map +1 -1
- package/dist/labs/SideNav/SideNav.js +239 -169
- package/dist/labs/SideNav/SideNav.js.map +1 -1
- package/dist/labs/SideNav/SideNavFooterContent.js +32 -18
- package/dist/labs/SideNav/SideNavFooterContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavHeader.js +48 -37
- package/dist/labs/SideNav/SideNavHeader.js.map +1 -1
- package/dist/labs/SideNav/SideNavItemContent.js +100 -58
- package/dist/labs/SideNav/SideNavItemContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavItemContentContext.js +19 -0
- package/dist/labs/SideNav/SideNavItemContentContext.js.map +1 -0
- package/dist/labs/SideNav/SideNavItemLinkContent.js +14 -13
- package/dist/labs/SideNav/SideNavItemLinkContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavLogo.js +42 -0
- package/dist/labs/SideNav/SideNavLogo.js.map +1 -0
- package/dist/labs/SideNav/SideNavToggleButton.js +170 -0
- package/dist/labs/SideNav/SideNavToggleButton.js.map +1 -0
- package/dist/labs/SideNav/types.js.map +1 -1
- package/dist/labs/TopNav/TopNav.js +65 -0
- package/dist/labs/TopNav/TopNav.js.map +1 -0
- package/dist/labs/TopNav/TopNavLinksList.js +38 -0
- package/dist/labs/TopNav/TopNavLinksList.js.map +1 -0
- package/dist/labs/TopNav/TopNavListItem.js +132 -0
- package/dist/labs/TopNav/TopNavListItem.js.map +1 -0
- package/dist/labs/TopNav/UserProfile.js +65 -0
- package/dist/labs/TopNav/UserProfile.js.map +1 -0
- package/dist/labs/TopNav/index.js +14 -0
- package/dist/labs/TopNav/index.js.map +1 -0
- package/dist/labs/UiShell/UiShell.js +68 -0
- package/dist/labs/UiShell/UiShell.js.map +1 -0
- package/dist/labs/UiShell/UiShellContent.js +114 -0
- package/dist/labs/UiShell/UiShellContent.js.map +1 -0
- package/dist/labs/UiShell/bufferLatest.js +37 -0
- package/dist/labs/UiShell/bufferLatest.js.map +1 -0
- package/dist/labs/UiShell/createMessageBus.js +30 -0
- package/dist/labs/UiShell/createMessageBus.js.map +1 -0
- package/dist/labs/UiShell/createStore.js +24 -0
- package/dist/labs/UiShell/createStore.js.map +1 -0
- package/dist/labs/UiShell/index.js +15 -0
- package/dist/labs/UiShell/index.js.map +1 -0
- package/dist/labs/UiShell/renderUiShell.js +78 -0
- package/dist/labs/UiShell/renderUiShell.js.map +1 -0
- package/dist/labs/UiShell/useHasUiShell.js +22 -0
- package/dist/labs/UiShell/useHasUiShell.js.map +1 -0
- package/dist/labs/UiShell/useScrollState.js +41 -0
- package/dist/labs/UiShell/useScrollState.js.map +1 -0
- package/dist/labs/index.js +5 -3
- package/dist/labs/index.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui.js +7 -1
- package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_cs.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_da.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_de.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_el.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_es.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fi.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fr.js +5 -3
- package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ht.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_hu.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_id.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_it.js +4 -2
- package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ja.js +9 -7
- package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ko.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ms.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nb.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pl.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ro.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ru.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_sv.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_th.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_tr.js +4 -2
- package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_uk.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_vi.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
- package/dist/src/Autocomplete.d.ts +21 -22
- package/dist/src/Autocomplete.d.ts.map +1 -1
- package/dist/src/Box.d.ts +3 -1
- package/dist/src/Box.d.ts.map +1 -1
- package/dist/src/Card.d.ts.map +1 -1
- package/dist/src/OdysseyDesignTokensContext.d.ts +5 -4
- package/dist/src/OdysseyDesignTokensContext.d.ts.map +1 -1
- package/dist/src/OdysseyProvider.d.ts +3 -3
- package/dist/src/OdysseyProvider.d.ts.map +1 -1
- package/dist/src/OdysseyThemeProvider.d.ts +10 -12
- package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/src/Pagination/Pagination.d.ts +21 -7
- package/dist/src/Pagination/Pagination.d.ts.map +1 -1
- package/dist/src/Surface.d.ts.map +1 -1
- package/dist/src/Tag.d.ts +5 -2
- package/dist/src/Tag.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/labs/AppTile.d.ts +3 -1
- package/dist/src/labs/AppTile.d.ts.map +1 -1
- package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -1
- package/dist/src/labs/DataView/DataCard.d.ts +9 -3
- package/dist/src/labs/DataView/DataCard.d.ts.map +1 -1
- package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -1
- package/dist/src/labs/DataView/componentTypes.d.ts +1 -1
- package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -1
- package/dist/src/labs/DataView/index.d.ts +1 -0
- package/dist/src/labs/DataView/index.d.ts.map +1 -1
- package/dist/src/labs/OdysseyPickers/ComposablePicker.d.ts +33 -0
- package/dist/src/labs/OdysseyPickers/ComposablePicker.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/Picker.d.ts +98 -0
- package/dist/src/labs/OdysseyPickers/Picker.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/PickerVirtualizationListBox.d.ts +17 -0
- package/dist/src/labs/OdysseyPickers/PickerVirtualizationListBox.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts +26 -0
- package/dist/src/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/index.d.ts +15 -0
- package/dist/src/labs/OdysseyPickers/index.d.ts.map +1 -0
- package/dist/src/labs/PageTemplate.d.ts +1 -1
- package/dist/src/labs/PageTemplate.d.ts.map +1 -1
- package/dist/src/labs/SideNav/CollapseIcon.d.ts +1 -4
- package/dist/src/labs/SideNav/CollapseIcon.d.ts.map +1 -1
- package/dist/src/labs/SideNav/HandleIcon.d.ts +14 -0
- package/dist/src/labs/SideNav/HandleIcon.d.ts.map +1 -0
- package/dist/src/labs/{NavAccordion.d.ts → SideNav/NavAccordion.d.ts} +6 -2
- package/dist/src/labs/SideNav/NavAccordion.d.ts.map +1 -0
- package/dist/src/labs/SideNav/OktaAura.d.ts +14 -0
- package/dist/src/labs/SideNav/OktaAura.d.ts.map +1 -0
- package/dist/src/labs/SideNav/OktaLogo.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNav.d.ts +2 -1
- package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavFooterContent.d.ts +1 -1
- package/dist/src/labs/SideNav/SideNavFooterContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavHeader.d.ts +12 -3
- package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts +2 -3
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavItemContentContext.d.ts +18 -0
- package/dist/src/labs/SideNav/SideNavItemContentContext.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts +1 -1
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavLogo.d.ts +15 -0
- package/dist/src/labs/SideNav/SideNavLogo.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavToggleButton.d.ts +38 -0
- package/dist/src/labs/SideNav/SideNavToggleButton.d.ts.map +1 -0
- package/dist/src/labs/SideNav/types.d.ts +67 -33
- package/dist/src/labs/SideNav/types.d.ts.map +1 -1
- package/dist/src/labs/TopNav/TopNav.d.ts +31 -0
- package/dist/src/labs/TopNav/TopNav.d.ts.map +1 -0
- package/dist/src/labs/TopNav/TopNavLinksList.d.ts +44 -0
- package/dist/src/labs/TopNav/TopNavLinksList.d.ts.map +1 -0
- package/dist/src/labs/TopNav/TopNavListItem.d.ts +42 -0
- package/dist/src/labs/TopNav/TopNavListItem.d.ts.map +1 -0
- package/dist/src/labs/TopNav/UserProfile.d.ts +29 -0
- package/dist/src/labs/TopNav/UserProfile.d.ts.map +1 -0
- package/dist/src/labs/TopNav/index.d.ts +14 -0
- package/dist/src/labs/TopNav/index.d.ts.map +1 -0
- package/dist/src/labs/UiShell/UiShell.d.ts +33 -0
- package/dist/src/labs/UiShell/UiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/UiShellContent.d.ts +47 -0
- package/dist/src/labs/UiShell/UiShellContent.d.ts.map +1 -0
- package/dist/src/labs/UiShell/bufferLatest.d.ts +31 -0
- package/dist/src/labs/UiShell/bufferLatest.d.ts.map +1 -0
- package/dist/src/labs/UiShell/createMessageBus.d.ts +24 -0
- package/dist/src/labs/UiShell/createMessageBus.d.ts.map +1 -0
- package/dist/src/labs/UiShell/createStore.d.ts +22 -0
- package/dist/src/labs/UiShell/createStore.d.ts.map +1 -0
- package/dist/src/labs/UiShell/index.d.ts +16 -0
- package/dist/src/labs/UiShell/index.d.ts.map +1 -0
- package/dist/src/labs/UiShell/renderUiShell.d.ts +45 -0
- package/dist/src/labs/UiShell/renderUiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/useHasUiShell.d.ts +13 -0
- package/dist/src/labs/UiShell/useHasUiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/useScrollState.d.ts +16 -0
- package/dist/src/labs/UiShell/useScrollState.d.ts.map +1 -0
- package/dist/src/labs/index.d.ts +6 -2
- package/dist/src/labs/index.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui.d.ts +6 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
- package/dist/src/test-selectors/querySelector.d.ts +2 -2
- package/dist/src/theme/components.d.ts +3 -1
- package/dist/src/theme/components.d.ts.map +1 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts +2 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
- package/dist/src/useAutocomplete.d.ts +29 -0
- package/dist/src/useAutocomplete.d.ts.map +1 -0
- package/dist/src/useContrastMode.d.ts +46 -0
- package/dist/src/useContrastMode.d.ts.map +1 -0
- package/dist/src/web-component/index.d.ts +14 -0
- package/dist/src/web-component/index.d.ts.map +1 -0
- package/dist/src/web-component/renderReactInWebComponent.d.ts +76 -0
- package/dist/src/web-component/renderReactInWebComponent.d.ts.map +1 -0
- package/dist/src/web-component/shadow-dom.d.ts +23 -0
- package/dist/src/web-component/shadow-dom.d.ts.map +1 -0
- package/dist/test-selectors/querySelector.js.map +1 -1
- package/dist/theme/components.js +36 -32
- package/dist/theme/components.js.map +1 -1
- package/dist/theme/createOdysseyMuiTheme.js +3 -2
- package/dist/theme/createOdysseyMuiTheme.js.map +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/useAutocomplete.js +105 -0
- package/dist/useAutocomplete.js.map +1 -0
- package/dist/useContrastMode.js +93 -0
- package/dist/useContrastMode.js.map +1 -0
- package/dist/web-component/index.js +14 -0
- package/dist/web-component/index.js.map +1 -0
- package/dist/web-component/renderReactInWebComponent.js +72 -0
- package/dist/web-component/renderReactInWebComponent.js.map +1 -0
- package/dist/{createShadowDomElements.js → web-component/shadow-dom.js} +10 -12
- package/dist/web-component/shadow-dom.js.map +1 -0
- package/jest.config.cjs +1 -1
- package/jest.setup.js +0 -3
- package/package.json +4 -3
- package/src/Autocomplete.tsx +40 -330
- package/src/Box.tsx +4 -2
- package/src/Card.tsx +1 -0
- package/src/OdysseyDesignTokensContext.tsx +6 -3
- package/src/OdysseyProvider.tsx +13 -8
- package/src/OdysseyThemeProvider.test.tsx +209 -0
- package/src/OdysseyThemeProvider.tsx +42 -26
- package/src/Pagination/Pagination.test.tsx +305 -0
- package/src/Pagination/Pagination.tsx +86 -38
- package/src/Surface.tsx +2 -1
- package/src/Tag.tsx +64 -39
- package/src/createUniqueAlphabeticalId.test.ts +1 -1
- package/src/createUniqueId.test.ts +1 -1
- package/src/index.ts +6 -7
- package/src/labs/AppTile.tsx +169 -40
- package/src/labs/DataView/CardLayoutContent.tsx +12 -14
- package/src/labs/DataView/DataCard.tsx +137 -69
- package/src/labs/DataView/DataView.test.tsx +6 -4
- package/src/labs/DataView/TableLayoutContent.tsx +6 -2
- package/src/labs/DataView/componentTypes.ts +1 -1
- package/src/labs/DataView/index.tsx +1 -0
- package/src/labs/OdysseyPickers/ComposablePicker.test.tsx +29 -0
- package/src/labs/OdysseyPickers/ComposablePicker.tsx +188 -0
- package/src/labs/OdysseyPickers/Picker.tsx +381 -0
- package/src/labs/OdysseyPickers/PickerVirtualizationListBox.tsx +191 -0
- package/src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx +429 -0
- package/src/labs/OdysseyPickers/index.ts +15 -0
- package/src/labs/PageTemplate.tsx +18 -10
- package/src/labs/SideNav/CollapseIcon.tsx +14 -28
- package/src/labs/SideNav/HandleIcon.tsx +35 -0
- package/src/labs/{NavAccordion.tsx → SideNav/NavAccordion.tsx} +48 -8
- package/src/labs/SideNav/OktaAura.tsx +35 -0
- package/src/labs/SideNav/OktaLogo.tsx +5 -10
- package/src/labs/SideNav/SideNav.test.tsx +323 -0
- package/src/labs/SideNav/SideNav.tsx +291 -204
- package/src/labs/SideNav/SideNavFooterContent.tsx +36 -28
- package/src/labs/SideNav/SideNavHeader.tsx +62 -45
- package/src/labs/SideNav/SideNavItemContent.tsx +142 -62
- package/src/labs/SideNav/SideNavItemContentContext.tsx +27 -0
- package/src/labs/SideNav/SideNavItemLinkContent.tsx +17 -14
- package/src/labs/SideNav/SideNavLogo.tsx +41 -0
- package/src/labs/SideNav/SideNavToggleButton.tsx +249 -0
- package/src/labs/SideNav/types.ts +72 -33
- package/src/labs/TopNav/TopNav.tsx +95 -0
- package/src/labs/TopNav/TopNavLinksList.tsx +68 -0
- package/src/labs/TopNav/TopNavListItem.tsx +209 -0
- package/src/labs/TopNav/UserProfile.tsx +79 -0
- package/src/labs/TopNav/index.ts +14 -0
- package/src/labs/UiShell/UiShell.test.tsx +284 -0
- package/src/labs/UiShell/UiShell.tsx +109 -0
- package/src/labs/UiShell/UiShellContent.tsx +170 -0
- package/src/labs/UiShell/bufferLatest.test.ts +79 -0
- package/src/labs/UiShell/bufferLatest.ts +64 -0
- package/src/labs/UiShell/createMessageBus.test.ts +115 -0
- package/src/labs/UiShell/createMessageBus.ts +53 -0
- package/src/labs/UiShell/createStore.test.ts +103 -0
- package/src/labs/UiShell/createStore.ts +37 -0
- package/src/labs/UiShell/index.ts +17 -0
- package/src/labs/UiShell/renderUiShell.test.tsx +197 -0
- package/src/labs/UiShell/renderUiShell.tsx +132 -0
- package/src/labs/UiShell/useHasUiShell.ts +25 -0
- package/src/labs/UiShell/useScrollState.ts +56 -0
- package/src/labs/index.ts +10 -3
- package/src/properties/odyssey-react-mui.properties +7 -0
- package/src/properties/translations/odyssey-react-mui_cs.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_da.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_de.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_el.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_es.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_fi.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_fr.properties +4 -3
- package/src/properties/translations/odyssey-react-mui_ht.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_hu.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_id.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_it.properties +3 -2
- package/src/properties/translations/odyssey-react-mui_ja.properties +8 -7
- package/src/properties/translations/odyssey-react-mui_ko.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ms.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_nb.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_nl_NL.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_pl.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_pt_BR.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ro.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ru.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_sv.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_th.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_tr.properties +3 -2
- package/src/properties/translations/odyssey-react-mui_uk.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_vi.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_zh_CN.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_zh_TW.properties +2 -1
- package/src/properties/ts/odyssey-react-mui.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ht.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
- package/src/test-selectors/querySelector.ts +1 -1
- package/src/theme/components.tsx +50 -33
- package/src/theme/createOdysseyMuiTheme.ts +4 -3
- package/src/theme/useContrastMode.test.tsx +503 -0
- package/src/useAutocomplete.tsx +183 -0
- package/src/useContrastMode.tsx +149 -0
- package/src/web-component/index.ts +14 -0
- package/src/web-component/renderReactInWebComponent.test.tsx +156 -0
- package/src/web-component/renderReactInWebComponent.ts +153 -0
- package/src/web-component/shadow-dom.test.ts +24 -0
- package/src/{createShadowDomElements.ts → web-component/shadow-dom.ts} +15 -14
- package/dist/ContrastModeProvider.js +0 -86
- package/dist/ContrastModeProvider.js.map +0 -1
- package/dist/createShadowDomElements.js.map +0 -1
- package/dist/labs/NavAccordion.js.map +0 -1
- package/dist/labs/TopNav.js +0 -281
- package/dist/labs/TopNav.js.map +0 -1
- package/dist/src/ContrastModeProvider.d.ts +0 -34
- package/dist/src/ContrastModeProvider.d.ts.map +0 -1
- package/dist/src/createShadowDomElements.d.ts.map +0 -1
- package/dist/src/labs/NavAccordion.d.ts.map +0 -1
- package/dist/src/labs/TopNav.d.ts +0 -78
- package/dist/src/labs/TopNav.d.ts.map +0 -1
- package/src/ContrastModeProvider.tsx +0 -131
- package/src/labs/TopNav.tsx +0 -396
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.js","names":["styled","memo","useMemo","useState","useCallback","useRef","useEffect","ExpandLeftIcon","NavAccordion","useOdysseyDesignTokens","OktaLogo","SideNavHeader","SideNavItemContent","SideNavListItemContainer","SideNavFooterContent","jsx","_jsx","jsxs","_jsxs","DEFAULT_SIDE_NAV_WIDTH","SideNavContainer","shouldForwardProp","prop","expandedWidth","display","height","maxWidth","overflow","SideNavCollapsedContainer","odysseyDesignTokens","isSideNavCollapsed","backgroundColor","HueNeutral300","paddingTop","Spacing5","cursor","width","opacity","visibility","transitionProperty","transitionDuration","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","SideNavExpandContainer","HueNeutralWhite","flexDirection","borderRight","BorderWidthMain","BorderStyleMain","HueNeutral50","SideNavHeaderContainer","hasContentScrolled","position","top","borderBottom","SideNavListContainer","ul","padding","listStyle","listStyleType","SideNavScrollableContainer","div","flex","overflowY","SectionHeader","fontFamily","TypographyFamilyHeading","fontSize","TypographySizeOverline","fontWeight","TypographyWeightHeadingBold","color","HueNeutral600","Spacing3","paddingBottom","paddingLeft","Spacing4","textTransform","SideNavFooter","isContentScrollable","bottom","Spacing2","transitionTiming","boxShadow","DepthHigh","SideNavFooterItemsContainer","justifyContent","flexWrap","alignItems","TypographyColorHeading","textDecoration","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","SideNav","navHeaderText","isCollapsible","onCollapse","onExpand","sideNavItems","footerItems","footerComponent","logo","setSideNavCollapsed","setIsContentScrollable","setHasContentScrolled","scrollableContentRef","resizeObserverRef","intersectionObserverRef","updateIsContentScrollable","current","parentElement","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","li","firstChild","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","children","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","processedSideNavItems","map","item","childProps","scrollRef","sideNavCollapseHandler","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","expandLeftIconStyles","margin","Spacing1","tabIndex","role","onClick","onKeyDown","sx","ref","label","isSectionHeader","startIcon","isDefaultExpanded","isDisabled","isExpanded","MemoizedSideNav","displayName"],"sources":["../../../src/labs/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n memo,\n useMemo,\n useState,\n useCallback,\n KeyboardEvent,\n useRef,\n useEffect,\n} from \"react\";\n\nimport { ExpandLeftIcon } from \"../../icons.generated\";\nimport { NavAccordion } from \"../NavAccordion\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport type { SideNavProps } from \"./types\";\nimport { OktaLogo } from \"./OktaLogo\";\nimport { SideNavHeader } from \"./SideNavHeader\";\nimport {\n SideNavItemContent,\n SideNavListItemContainer,\n} from \"./SideNavItemContent\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent\";\n\nexport const DEFAULT_SIDE_NAV_WIDTH = \"300px\";\n\nconst SideNavContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"expandedWidth\",\n})(({ expandedWidth }: { expandedWidth: SideNavProps[\"expandedWidth\"] }) => ({\n display: \"flex\",\n height: \"100%\",\n maxWidth: expandedWidth,\n overflow: \"hidden\",\n}));\n\nconst SideNavCollapsedContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutral300,\n paddingTop: odysseyDesignTokens.Spacing5,\n cursor: \"pointer\",\n width: isSideNavCollapsed ? \"auto\" : 0,\n opacity: isSideNavCollapsed ? 1 : 0,\n visibility: isSideNavCollapsed ? \"visible\" : \"hidden\",\n transitionProperty: \"opacity\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n }),\n);\n\nconst SideNavExpandContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"expandedWidth\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n expandedWidth,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n expandedWidth: string;\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexDirection: \"column\",\n display: \"flex\",\n opacity: isSideNavCollapsed ? 0 : 1,\n visibility: isSideNavCollapsed ? \"hidden\" : \"visible\",\n width: isSideNavCollapsed ? \"0\" : expandedWidth,\n transitionProperty: \"opacity, width\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n borderRight: `${odysseyDesignTokens.BorderWidthMain} ${odysseyDesignTokens.BorderStyleMain} ${odysseyDesignTokens.HueNeutral50}`,\n }),\n);\n\nconst SideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasContentScrolled\" && prop !== \"odysseyDesignTokens\",\n})(\n ({\n hasContentScrolled,\n odysseyDesignTokens,\n }: {\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n position: \"sticky\",\n top: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled && {\n borderBottom: `${odysseyDesignTokens.BorderWidthMain} ${odysseyDesignTokens.BorderStyleMain} ${odysseyDesignTokens.HueNeutral50}`,\n }),\n }),\n);\n\nconst SideNavListContainer = styled.ul({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n});\n\nconst SideNavScrollableContainer = styled.div({\n flex: 1,\n overflowY: \"auto\",\n});\n\nconst SectionHeader = styled(\"li\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n fontFamily: odysseyDesignTokens.TypographyFamilyHeading,\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n fontWeight: odysseyDesignTokens.TypographyWeightHeadingBold,\n color: odysseyDesignTokens.HueNeutral600,\n paddingTop: odysseyDesignTokens.Spacing3,\n paddingBottom: odysseyDesignTokens.Spacing3,\n paddingLeft: odysseyDesignTokens.Spacing4,\n textTransform: \"uppercase\",\n}));\n\nconst SideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" && prop !== \"odysseyDesignTokens\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n position: \"sticky\",\n bottom: 0,\n paddingTop: odysseyDesignTokens.Spacing2,\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable && {\n boxShadow: odysseyDesignTokens.DepthHigh,\n }),\n }),\n);\n\nconst SideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n paddingTop: odysseyDesignTokens.Spacing2,\n paddingBottom: odysseyDesignTokens.Spacing2,\n display: \"flex\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n \"& a\": {\n color: `${odysseyDesignTokens.TypographyColorHeading} !important`,\n },\n \"& a:hover\": {\n textDecoration: \"none\",\n },\n \"& a:visited\": {\n color: odysseyDesignTokens.TypographyColorHeading,\n },\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst SideNav = ({\n navHeaderText,\n isCollapsible,\n onCollapse,\n onExpand,\n sideNavItems,\n expandedWidth = DEFAULT_SIDE_NAV_WIDTH,\n footerItems,\n footerComponent,\n logo,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setSideNavCollapsed] = useState(false);\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n useEffect(() => {\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ul = scrollableContentRef.current;\n const li = ul?.firstChild;\n intersectionObserverRef.current.observe(li as HTMLElement);\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, []);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = sideNavItems.flatMap((sideNavItem) =>\n sideNavItem.children\n ? [sideNavItem, ...sideNavItem.children]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItems]);\n /**\n * Once we've rendered and if we have an item to scroll to, do the scroll action.\n * This must rely on checking firstSideNavItemIdWithIsSelected or it will not run\n * once the actual ref is populated.\n */\n useEffect(() => {\n if (firstSideNavItemIdWithIsSelected && scrollIntoViewRef.current) {\n scrollIntoViewRef.current.scrollIntoView();\n }\n }, [firstSideNavItemIdWithIsSelected, scrollIntoViewRef]);\n\n /**\n * We only want to put a ref on a node iff it is the first selected node.\n * This function returns the ref only if the ID provided matches the first\n * selected node, otherwise returns undefined (so that the node has no ref)\n */\n const getRefIfThisIsFirstNodeWithIsSelected = useCallback(\n (itemId: string) =>\n itemId === firstSideNavItemIdWithIsSelected\n ? scrollIntoViewRef\n : undefined,\n [firstSideNavItemIdWithIsSelected],\n );\n\n const processedSideNavItems = useMemo(\n () =>\n sideNavItems.map((item) => ({\n ...item,\n children: item.children?.map((childProps) => (\n <SideNavItemContent\n key={childProps.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n {...childProps}\n />\n )),\n })),\n [getRefIfThisIsFirstNodeWithIsSelected, sideNavItems],\n );\n\n const sideNavCollapseHandler = useCallback(() => {\n setSideNavCollapsed(!isSideNavCollapsed);\n onCollapse?.();\n }, [isSideNavCollapsed, setSideNavCollapsed, onCollapse]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n setSideNavCollapsed(!isSideNavCollapsed);\n onExpand?.();\n }, [isSideNavCollapsed, setSideNavCollapsed, onExpand]);\n\n const sideNavExpandKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n setSideNavCollapsed(!isSideNavCollapsed);\n onExpand?.();\n }\n },\n [isSideNavCollapsed, setSideNavCollapsed, onExpand],\n );\n\n const expandLeftIconStyles = useMemo(\n () => ({\n fontSize: \"1em\",\n margin: `0 ${odysseyDesignTokens.Spacing1}`,\n }),\n [odysseyDesignTokens],\n );\n\n return (\n <SideNavContainer expandedWidth={expandedWidth}>\n <SideNavCollapsedContainer\n tabIndex={0}\n role=\"button\"\n odysseyDesignTokens={odysseyDesignTokens}\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onKeyDown={sideNavExpandKeyHandler}\n data-se=\"collapsed-region\"\n data-aria-label=\"expand side navigation\"\n >\n <ExpandLeftIcon sx={expandLeftIconStyles} />\n </SideNavCollapsedContainer>\n <SideNavExpandContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isSideNavCollapsed={isSideNavCollapsed}\n data-se=\"expanded-region\"\n expandedWidth={expandedWidth}\n aria-label={navHeaderText}\n >\n <SideNavHeaderContainer\n odysseyDesignTokens={odysseyDesignTokens}\n hasContentScrolled={hasContentScrolled}\n >\n <SideNavHeader\n logo={logo || <OktaLogo />}\n navHeaderText={navHeaderText}\n isCollapsible={isCollapsible}\n onCollapse={sideNavCollapseHandler}\n />\n </SideNavHeaderContainer>\n <SideNavScrollableContainer data-se=\"scrollable-region\">\n <SideNavListContainer ref={scrollableContentRef}>\n {processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n children,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <SectionHeader\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {label}\n </SectionHeader>\n );\n } else if (children) {\n return (\n <SideNavListItemContainer\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <NavAccordion\n label={label}\n isDefaultExpanded={isDefaultExpanded}\n isExpanded={isExpanded}\n startIcon={startIcon}\n isDisabled={isDisabled}\n >\n <SideNavListContainer id={`${id}-list`}>\n {children}\n </SideNavListContainer>\n </NavAccordion>\n </SideNavListItemContainer>\n );\n } else {\n return (\n <SideNavItemContent\n key={item.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n {...item}\n />\n );\n }\n })}\n </SideNavListContainer>\n </SideNavScrollableContainer>\n {(footerItems || footerComponent) && (\n <SideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n isContentScrollable={isContentScrollable}\n >\n {footerComponent}\n {footerItems && !footerComponent && (\n <SideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavFooterContent footerItems={footerItems} />\n </SideNavFooterItemsContainer>\n )}\n </SideNavFooter>\n )}\n </SideNavExpandContainer>\n </SideNavContainer>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SACEC,IAAI,EACJC,OAAO,EACPC,QAAQ,EACRC,WAAW,EAEXC,MAAM,EACNC,SAAS,QACJ,OAAO;AAAC,SAENC,cAAc;AAAA,SACdC,YAAY;AAAA,SAGnBC,sBAAsB;AAAA,SAGfC,QAAQ;AAAA,SACRC,aAAa;AAAA,SAEpBC,kBAAkB,EAClBC,wBAAwB;AAAA,SAEjBC,oBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE7B,OAAO,MAAMC,sBAAsB,GAAG,OAAO;AAE7C,MAAMC,gBAAgB,GAAGpB,MAAM,CAAC,KAAK,EAAE;EACrCqB,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAAgE,CAAC,MAAM;EAC3EC,OAAO,EAAE,MAAM;EACfC,MAAM,EAAE,MAAM;EACdC,QAAQ,EAAEH,aAAa;EACvBI,QAAQ,EAAE;AACZ,CAAC,CAAC,CAAC;AAEH,MAAMC,yBAAyB,GAAG5B,MAAM,CAAC,KAAK,EAAE;EAC9CqB,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CACA,CAAC;EACCO,mBAAmB;EACnBC;AAIF,CAAC,MAAM;EACLC,eAAe,EAAEF,mBAAmB,CAACG,aAAa;EAClDC,UAAU,EAAEJ,mBAAmB,CAACK,QAAQ;EACxCC,MAAM,EAAE,SAAS;EACjBC,KAAK,EAAEN,kBAAkB,GAAG,MAAM,GAAG,CAAC;EACtCO,OAAO,EAAEP,kBAAkB,GAAG,CAAC,GAAG,CAAC;EACnCQ,UAAU,EAAER,kBAAkB,GAAG,SAAS,GAAG,QAAQ;EACrDS,kBAAkB,EAAE,SAAS;EAC7BC,kBAAkB,EAAEX,mBAAmB,CAACY,sBAAsB;EAC9DC,wBAAwB,EAAEb,mBAAmB,CAACc;AAChD,CAAC,CACH,CAAC;AAED,MAAMC,sBAAsB,GAAG5C,MAAM,CAAC,KAAK,EAAE;EAC3CqB,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAC9BA,IAAI,KAAK,oBAAoB,IAC7BA,IAAI,KAAK;AACb,CAAC,CAAC,CACA,CAAC;EACCO,mBAAmB;EACnBC,kBAAkB;EAClBP;AAKF,CAAC,MAAM;EACLQ,eAAe,EAAEF,mBAAmB,CAACgB,eAAe;EACpDC,aAAa,EAAE,QAAQ;EACvBtB,OAAO,EAAE,MAAM;EACfa,OAAO,EAAEP,kBAAkB,GAAG,CAAC,GAAG,CAAC;EACnCQ,UAAU,EAAER,kBAAkB,GAAG,QAAQ,GAAG,SAAS;EACrDM,KAAK,EAAEN,kBAAkB,GAAG,GAAG,GAAGP,aAAa;EAC/CgB,kBAAkB,EAAE,gBAAgB;EACpCC,kBAAkB,EAAEX,mBAAmB,CAACY,sBAAsB;EAC9DC,wBAAwB,EAAEb,mBAAmB,CAACc,oBAAoB;EAClEI,WAAW,EAAG,GAAElB,mBAAmB,CAACmB,eAAgB,IAAGnB,mBAAmB,CAACoB,eAAgB,IAAGpB,mBAAmB,CAACqB,YAAa;AACjI,CAAC,CACH,CAAC;AAED,MAAMC,sBAAsB,GAAGnD,MAAM,CAAC,KAAK,EAAE;EAC3CqB,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,oBAAoB,IAAIA,IAAI,KAAK;AAC9C,CAAC,CAAC,CACA,CAAC;EACC8B,kBAAkB;EAClBvB;AAIF,CAAC,MAAM;EACLwB,QAAQ,EAAE,QAAQ;EAClBC,GAAG,EAAE,CAAC;EAEN,IAAIF,kBAAkB,IAAI;IACxBG,YAAY,EAAG,GAAE1B,mBAAmB,CAACmB,eAAgB,IAAGnB,mBAAmB,CAACoB,eAAgB,IAAGpB,mBAAmB,CAACqB,YAAa;EAClI,CAAC;AACH,CAAC,CACH,CAAC;AAED,MAAMM,oBAAoB,GAAGxD,MAAM,CAACyD,EAAE,CAAC;EACrCC,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,MAAM;EACjBC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,MAAMC,0BAA0B,GAAG7D,MAAM,CAAC8D,GAAG,CAAC;EAC5CC,IAAI,EAAE,CAAC;EACPC,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAGjE,MAAM,CAAC,IAAI,EAAE;EACjCqB,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEO;AAA2D,CAAC,MAAM;EACtEqC,UAAU,EAAErC,mBAAmB,CAACsC,uBAAuB;EACvDC,QAAQ,EAAEvC,mBAAmB,CAACwC,sBAAsB;EACpDC,UAAU,EAAEzC,mBAAmB,CAAC0C,2BAA2B;EAC3DC,KAAK,EAAE3C,mBAAmB,CAAC4C,aAAa;EACxCxC,UAAU,EAAEJ,mBAAmB,CAAC6C,QAAQ;EACxCC,aAAa,EAAE9C,mBAAmB,CAAC6C,QAAQ;EAC3CE,WAAW,EAAE/C,mBAAmB,CAACgD,QAAQ;EACzCC,aAAa,EAAE;AACjB,CAAC,CAAC,CAAC;AAEH,MAAMC,aAAa,GAAG/E,MAAM,CAAC,KAAK,EAAE;EAClCqB,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CACA,CAAC;EACC0D,mBAAmB;EACnBnD;AAIF,CAAC,MAAM;EACLwB,QAAQ,EAAE,QAAQ;EAClB4B,MAAM,EAAE,CAAC;EACThD,UAAU,EAAEJ,mBAAmB,CAACqD,QAAQ;EACxC3C,kBAAkB,EAAE,YAAY;EAChCC,kBAAkB,EAAEX,mBAAmB,CAACY,sBAAsB;EAC9D0C,gBAAgB,EAAEtD,mBAAmB,CAACc,oBAAoB;EAE1D,IAAIqC,mBAAmB,IAAI;IACzBI,SAAS,EAAEvD,mBAAmB,CAACwD;EACjC,CAAC;AACH,CAAC,CACH,CAAC;AAED,MAAMC,2BAA2B,GAAGtF,MAAM,CAAC,KAAK,EAAE;EAChDqB,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEO;AAA2D,CAAC,MAAM;EACtEI,UAAU,EAAEJ,mBAAmB,CAACqD,QAAQ;EACxCP,aAAa,EAAE9C,mBAAmB,CAACqD,QAAQ;EAC3C1D,OAAO,EAAE,MAAM;EACf+D,cAAc,EAAE,QAAQ;EACxBC,QAAQ,EAAE,MAAM;EAChBC,UAAU,EAAE,QAAQ;EACpBrB,QAAQ,EAAEvC,mBAAmB,CAACwC,sBAAsB;EACpD,KAAK,EAAE;IACLG,KAAK,EAAG,GAAE3C,mBAAmB,CAAC6D,sBAAuB;EACvD,CAAC;EACD,WAAW,EAAE;IACXC,cAAc,EAAE;EAClB,CAAC;EACD,aAAa,EAAE;IACbnB,KAAK,EAAE3C,mBAAmB,CAAC6D;EAC7B;AACF,CAAC,CAAC,CAAC;AAEH,MAAME,uBAAuB,GAAIC,mBAAgC,IAC/DA,mBAAmB,CAACC,YAAY,GAAGD,mBAAmB,CAACE,YAAY;AAErE,MAAMC,OAAO,GAAGA,CAAC;EACfC,aAAa;EACbC,aAAa;EACbC,UAAU;EACVC,QAAQ;EACRC,YAAY;EACZ9E,aAAa,GAAGJ,sBAAsB;EACtCmF,WAAW;EACXC,eAAe;EACfC;AACY,CAAC,KAAK;EAClB,MAAM,CAAC1E,kBAAkB,EAAE2E,mBAAmB,CAAC,GAAGtG,QAAQ,CAAC,KAAK,CAAC;EACjE,MAAM0B,mBAAmB,GAAGpB,sBAAsB,CAAC,CAAC;EACpD,MAAM,CAACuE,mBAAmB,EAAE0B,sBAAsB,CAAC,GAAGvG,QAAQ,CAAC,KAAK,CAAC;EACrE,MAAM,CAACiD,kBAAkB,EAAEuD,qBAAqB,CAAC,GAAGxG,QAAQ,CAAC,KAAK,CAAC;EACnE,MAAMyG,oBAAoB,GAAGvG,MAAM,CAAmB,IAAI,CAAC;EAC3D,MAAMwG,iBAAiB,GAAGxG,MAAM,CAAwB,IAAI,CAAC;EAC7D,MAAMyG,uBAAuB,GAAGzG,MAAM,CAA8B,IAAI,CAAC;EAEzEC,SAAS,CAAC,MAAM;IACd,MAAMyG,yBAAyB,GAAGA,CAAA,KAAM;MACtC,IACEH,oBAAoB,CAACI,OAAO,IAC5BJ,oBAAoB,CAACI,OAAO,CAACC,aAAa,EAC1C;QACAP,sBAAsB,CACpBd,uBAAuB,CAACgB,oBAAoB,CAACI,OAAO,CAACC,aAAa,CACpE,CAAC;MACH;IACF,CAAC;IAID,IAAIC,2BAAqE;IACzE,IAAI,CAACL,iBAAiB,CAACG,OAAO,EAAE;MAC9BH,iBAAiB,CAACG,OAAO,GAAG,IAAIG,cAAc,CAAC,MAAM;QACnDC,oBAAoB,CAACF,2BAA2B,CAAC;QACjDA,2BAA2B,GAAGG,qBAAqB,CACjDN,yBACF,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,IAAIF,iBAAiB,CAACG,OAAO,IAAIJ,oBAAoB,CAACI,OAAO,EAAE;MAE7DH,iBAAiB,CAACG,OAAO,CAACM,OAAO,CAACV,oBAAoB,CAACI,OAAO,CAAC;MAC/D,IAAIJ,oBAAoB,CAACI,OAAO,CAACC,aAAa,EAAE;QAE9CJ,iBAAiB,CAACG,OAAO,CAACM,OAAO,CAC/BV,oBAAoB,CAACI,OAAO,CAACC,aAC/B,CAAC;MACH;IACF;IAGAF,yBAAyB,CAAC,CAAC;IAI3B,IAAI,CAACD,uBAAuB,CAACE,OAAO,IAAIJ,oBAAoB,CAACI,OAAO,EAAE;MACpEF,uBAAuB,CAACE,OAAO,GAAG,IAAIO,oBAAoB,CACvDC,OAAO,IAAK;QAIX,MAAMC,cAAc,GAAGD,OAAO,CAC3BE,KAAK,CAAC,CAAC,CACPC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,IAAI,GAAGD,CAAC,CAACC,IAAI,CAAC,CAC/BC,EAAE,CAAC,CAAC,CAAC,EAAEN,cAAc;QACxBd,qBAAqB,CAAC,CAACc,cAAc,CAAC;MACxC,CAAC,EACD;QACEO,IAAI,EAAEpB,oBAAoB,CAACI,OAAO,CAACC,aAAa;QAChDgB,SAAS,EAAE;MACb,CACF,CAAC;IACH;IACA,IAAInB,uBAAuB,CAACE,OAAO,IAAIJ,oBAAoB,CAACI,OAAO,EAAE;MACnE,MAAMvD,EAAE,GAAGmD,oBAAoB,CAACI,OAAO;MACvC,MAAMkB,EAAE,GAAGzE,EAAE,EAAE0E,UAAU;MACzBrB,uBAAuB,CAACE,OAAO,CAACM,OAAO,CAACY,EAAiB,CAAC;IAC5D;IAGA,OAAO,MAAM;MACX,IAAIrB,iBAAiB,CAACG,OAAO,EAAE;QAC7BH,iBAAiB,CAACG,OAAO,CAACoB,UAAU,CAAC,CAAC;QACtCvB,iBAAiB,CAACG,OAAO,GAAG,IAAI;MAClC;MACA,IAAIF,uBAAuB,CAACE,OAAO,EAAE;QACnCF,uBAAuB,CAACE,OAAO,CAACoB,UAAU,CAAC,CAAC;QAC5CtB,uBAAuB,CAACE,OAAO,GAAG,IAAI;MACxC;MACAI,oBAAoB,CAACF,2BAA2B,CAAC;IACnD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,iBAAiB,GAAGhI,MAAM,CAAgB,IAAI,CAAC;EAMrD,MAAMiI,gCAAgC,GAAGpI,OAAO,CAAC,MAAM;IACrD,MAAMqI,cAAc,GAAGlC,YAAY,CAACmC,OAAO,CAAEC,WAAW,IACtDA,WAAW,CAACC,QAAQ,GAChB,CAACD,WAAW,EAAE,GAAGA,WAAW,CAACC,QAAQ,CAAC,GACtCD,WACN,CAAC;IACD,MAAME,uBAAuB,GAAGJ,cAAc,CAACK,IAAI,CAChDH,WAAW,IAAKA,WAAW,CAACI,UAC/B,CAAC;IACD,OAAOF,uBAAuB,EAAEG,EAAE;EACpC,CAAC,EAAE,CAACzC,YAAY,CAAC,CAAC;EAMlB/F,SAAS,CAAC,MAAM;IACd,IAAIgI,gCAAgC,IAAID,iBAAiB,CAACrB,OAAO,EAAE;MACjEqB,iBAAiB,CAACrB,OAAO,CAAC+B,cAAc,CAAC,CAAC;IAC5C;EACF,CAAC,EAAE,CAACT,gCAAgC,EAAED,iBAAiB,CAAC,CAAC;EAOzD,MAAMW,qCAAqC,GAAG5I,WAAW,CACtD6I,MAAc,IACbA,MAAM,KAAKX,gCAAgC,GACvCD,iBAAiB,GACjBa,SAAS,EACf,CAACZ,gCAAgC,CACnC,CAAC;EAED,MAAMa,qBAAqB,GAAGjJ,OAAO,CACnC,MACEmG,YAAY,CAAC+C,GAAG,CAAEC,IAAI,KAAM;IAC1B,GAAGA,IAAI;IACPX,QAAQ,EAAEW,IAAI,CAACX,QAAQ,EAAEU,GAAG,CAAEE,UAAU,IACtCtI,IAAA,CAACJ,kBAAkB;MAEjB2I,SAAS,EAAEP,qCAAqC,CAACM,UAAU,CAACR,EAAE,CAAE;MAAA,GAC5DQ;IAAU,GAFTA,UAAU,CAACR,EAGjB,CACF;EACH,CAAC,CAAC,CAAC,EACL,CAACE,qCAAqC,EAAE3C,YAAY,CACtD,CAAC;EAED,MAAMmD,sBAAsB,GAAGpJ,WAAW,CAAC,MAAM;IAC/CqG,mBAAmB,CAAC,CAAC3E,kBAAkB,CAAC;IACxCqE,UAAU,GAAG,CAAC;EAChB,CAAC,EAAE,CAACrE,kBAAkB,EAAE2E,mBAAmB,EAAEN,UAAU,CAAC,CAAC;EAEzD,MAAMsD,yBAAyB,GAAGrJ,WAAW,CAAC,MAAM;IAClDqG,mBAAmB,CAAC,CAAC3E,kBAAkB,CAAC;IACxCsE,QAAQ,GAAG,CAAC;EACd,CAAC,EAAE,CAACtE,kBAAkB,EAAE2E,mBAAmB,EAAEL,QAAQ,CAAC,CAAC;EAEvD,MAAMsD,uBAAuB,GAAGtJ,WAAW,CACxCuJ,KAAoC,IAAK;IACxC,IAAIA,KAAK,EAAEC,GAAG,KAAK,OAAO,IAAID,KAAK,EAAEE,IAAI,KAAK,OAAO,EAAE;MACrDF,KAAK,CAACG,cAAc,CAAC,CAAC;MACtBrD,mBAAmB,CAAC,CAAC3E,kBAAkB,CAAC;MACxCsE,QAAQ,GAAG,CAAC;IACd;EACF,CAAC,EACD,CAACtE,kBAAkB,EAAE2E,mBAAmB,EAAEL,QAAQ,CACpD,CAAC;EAED,MAAM2D,oBAAoB,GAAG7J,OAAO,CAClC,OAAO;IACLkE,QAAQ,EAAE,KAAK;IACf4F,MAAM,EAAG,KAAInI,mBAAmB,CAACoI,QAAS;EAC5C,CAAC,CAAC,EACF,CAACpI,mBAAmB,CACtB,CAAC;EAED,OACEX,KAAA,CAACE,gBAAgB;IAACG,aAAa,EAAEA,aAAc;IAAAmH,QAAA,GAC7C1H,IAAA,CAACY,yBAAyB;MACxBsI,QAAQ,EAAE,CAAE;MACZC,IAAI,EAAC,QAAQ;MACbtI,mBAAmB,EAAEA,mBAAoB;MACzCC,kBAAkB,EAAEA,kBAAmB;MACvCsI,OAAO,EAAEX,yBAA0B;MACnCY,SAAS,EAAEX,uBAAwB;MACnC,WAAQ,kBAAkB;MAC1B,mBAAgB,wBAAwB;MAAAhB,QAAA,EAExC1H,IAAA,CAACT,cAAc;QAAC+J,EAAE,EAAEP;MAAqB,CAAE;IAAC,CACnB,CAAC,EAC5B7I,KAAA,CAAC0B,sBAAsB;MACrBf,mBAAmB,EAAEA,mBAAoB;MACzCC,kBAAkB,EAAEA,kBAAmB;MACvC,WAAQ,iBAAiB;MACzBP,aAAa,EAAEA,aAAc;MAC7B,cAAY0E,aAAc;MAAAyC,QAAA,GAE1B1H,IAAA,CAACmC,sBAAsB;QACrBtB,mBAAmB,EAAEA,mBAAoB;QACzCuB,kBAAkB,EAAEA,kBAAmB;QAAAsF,QAAA,EAEvC1H,IAAA,CAACL,aAAa;UACZ6F,IAAI,EAAEA,IAAI,IAAIxF,IAAA,CAACN,QAAQ,IAAE,CAAE;UAC3BuF,aAAa,EAAEA,aAAc;UAC7BC,aAAa,EAAEA,aAAc;UAC7BC,UAAU,EAAEqD;QAAuB,CACpC;MAAC,CACoB,CAAC,EACzBxI,IAAA,CAAC6C,0BAA0B;QAAC,WAAQ,mBAAmB;QAAA6E,QAAA,EACrD1H,IAAA,CAACwC,oBAAoB;UAAC+G,GAAG,EAAE3D,oBAAqB;UAAA8B,QAAA,EAC7CS,qBAAqB,EAAEC,GAAG,CAAEC,IAAI,IAAK;YACpC,MAAM;cACJP,EAAE;cACF0B,KAAK;cACLC,eAAe;cACfC,SAAS;cACThC,QAAQ;cACRiC,iBAAiB;cACjBC,UAAU;cACVC;YACF,CAAC,GAAGxB,IAAI;YAER,IAAIoB,eAAe,EAAE;cACnB,OACEzJ,IAAA,CAACiD,aAAa;gBACZ6E,EAAE,EAAEA,EAAG;gBAEPjH,mBAAmB,EAAEA,mBAAoB;gBAAA6G,QAAA,EAExC8B;cAAK,GAHD1B,EAIQ,CAAC;YAEpB,CAAC,MAAM,IAAIJ,QAAQ,EAAE;cACnB,OACE1H,IAAA,CAACH,wBAAwB;gBACvBiI,EAAE,EAAEA,EAAG;gBAEPjH,mBAAmB,EAAEA,mBAAoB;gBAAA6G,QAAA,EAEzC1H,IAAA,CAACR,YAAY;kBACXgK,KAAK,EAAEA,KAAM;kBACbG,iBAAiB,EAAEA,iBAAkB;kBACrCE,UAAU,EAAEA,UAAW;kBACvBH,SAAS,EAAEA,SAAU;kBACrBE,UAAU,EAAEA,UAAW;kBAAAlC,QAAA,EAEvB1H,IAAA,CAACwC,oBAAoB;oBAACsF,EAAE,EAAG,GAAEA,EAAG,OAAO;oBAAAJ,QAAA,EACpCA;kBAAQ,CACW;gBAAC,CACX;cAAC,GAbVI,EAcmB,CAAC;YAE/B,CAAC,MAAM;cACL,OACE9H,IAAA,CAACJ,kBAAkB;gBAEjB2I,SAAS,EAAEP,qCAAqC,CAACK,IAAI,CAACP,EAAE,CAAE;gBAAA,GACtDO;cAAI,GAFHA,IAAI,CAACP,EAGX,CAAC;YAEN;UACF,CAAC;QAAC,CACkB;MAAC,CACG,CAAC,EAC5B,CAACxC,WAAW,IAAIC,eAAe,KAC9BrF,KAAA,CAAC6D,aAAa;QACZlD,mBAAmB,EAAEA,mBAAoB;QACzCmD,mBAAmB,EAAEA,mBAAoB;QAAA0D,QAAA,GAExCnC,eAAe,EACfD,WAAW,IAAI,CAACC,eAAe,IAC9BvF,IAAA,CAACsE,2BAA2B;UAC1BzD,mBAAmB,EAAEA,mBAAoB;UAAA6G,QAAA,EAEzC1H,IAAA,CAACF,oBAAoB;YAACwF,WAAW,EAAEA;UAAY,CAAE;QAAC,CACvB,CAC9B;MAAA,CACY,CAChB;IAAA,CACqB,CAAC;EAAA,CACT,CAAC;AAEvB,CAAC;AAED,MAAMwE,eAAe,GAAG7K,IAAI,CAAC+F,OAAO,CAAC;AACrC8E,eAAe,CAACC,WAAW,GAAG,SAAS;AAEvC,SAASD,eAAe,IAAI9E,OAAO"}
|
|
1
|
+
{"version":3,"file":"SideNav.js","names":["styled","memo","useMemo","useState","useCallback","useRef","useEffect","useTranslation","NavAccordion","useOdysseyDesignTokens","OdysseyThemeProvider","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavFooterContent","SideNavItemContentContext","SideNavToggleButton","jsx","_jsx","jsxs","_jsxs","createElement","_createElement","DEFAULT_SIDE_NAV_WIDTH","SIDENAV_COLLAPSE_ICON_POSITION","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","gridTemplateRows","minWidth","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledSideNav","backgroundColor","HueNeutralWhite","HueNeutral200","content","right","top","transform","width","Spacing2","Spacing3","SideNavHeaderContainer","hasContentScrolled","flexShrink","borderBottom","BorderWidthMain","BorderStyleMain","HueNeutral50","SideNavListContainer","padding","listStyle","listStyleType","SideNavScrollableContainer","flex","overflowY","paddingInline","SectionHeaderContainer","paddingBlock","Spacing4","SectionHeader","fontFamily","TypographyFamilyHeading","fontSize","TypographySizeOverline","fontWeight","TypographyWeightHeadingBold","color","HueNeutral600","textTransform","SideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","SideNavFooterItemsContainer","Spacing5","flexWrap","alignItems","a","TypographyColorHeading","textDecoration","LoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","isCollapsible","isCompact","isLoading","logoProps","onCollapse","onExpand","sideNavItems","setSideNavCollapsed","setIsContentScrollable","setHasContentScrolled","scrollableContentRef","resizeObserverRef","intersectionObserverRef","t","updateIsContentScrollable","current","parentElement","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","sideNavItemContentProviderValue","depth","processedSideNavItems","map","item","childProps","Provider","value","key","scrollRef","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","code","preventDefault","ariaControls","onClick","onKeyDown","role","ref","_","index","label","isSectionHeader","startIcon","isDefaultExpanded","isDisabled","isExpanded","disabled","MemoizedSideNav","displayName"],"sources":["../../../src/labs/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled, { CSSObject } from \"@emotion/styled\";\nimport {\n memo,\n useMemo,\n useState,\n useCallback,\n useRef,\n useEffect,\n KeyboardEventHandler,\n} from \"react\";\nimport { Skeleton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { NavAccordion } from \"./NavAccordion\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider\";\nimport type { SideNavProps } from \"./types\";\nimport { SideNavHeader } from \"./SideNavHeader\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext\";\nimport { SideNavToggleButton } from \"./SideNavToggleButton\";\n\nexport const DEFAULT_SIDE_NAV_WIDTH = \"300px\";\n\n// The side nav collapse icon is placed absolutely from the top (Logo container + nav header height)\n// to align it in the middle of the nav header text\nexport const SIDENAV_COLLAPSE_ICON_POSITION = \"77px\";\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n position: \"relative\",\n display: \"inline-grid\",\n gridTemplateColumns: isSideNavCollapsed ? 0 : DEFAULT_SIDE_NAV_WIDTH,\n gridTemplateRows: \"max-content 1fr max-content\",\n minWidth: isSideNavCollapsed ? 0 : DEFAULT_SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n opacity: isSideNavCollapsed ? 0 : 1,\n }),\n);\n\nconst StyledSideNav = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n position: \"relative\",\n display: \"inline-block\",\n height: \"100%\",\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n content: \"''\",\n height: \"100%\",\n opacity: 0,\n position: \"absolute\",\n right: 0,\n top: 0,\n transform: `translateX(0)`,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}`,\n width: odysseyDesignTokens.Spacing2,\n },\n\n \"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus)\":\n {\n ...(isSideNavCollapsed && {\n \"&::after\": {\n opacity: 1,\n transform: `translateX(100%)`,\n },\n\n \"[data-sidenav-toggle='true']\": {\n transform: `translate3d(calc(100% + ${odysseyDesignTokens.Spacing3}), 0, 0)`,\n },\n }),\n },\n\n \"[data-sidenav-toggle='true']\": {\n position: \"absolute\",\n top: SIDENAV_COLLAPSE_ICON_POSITION,\n right: 0,\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n transform: `translate3d(100%, 0, 0)`,\n },\n }),\n);\n\nconst SideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasContentScrolled\" && prop !== \"odysseyDesignTokens\",\n})(\n ({\n hasContentScrolled,\n odysseyDesignTokens,\n }: {\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottom: `${odysseyDesignTokens.BorderWidthMain} ${odysseyDesignTokens.BorderStyleMain} ${odysseyDesignTokens.HueNeutral50}`,\n } satisfies CSSObject)),\n }),\n);\n\nconst SideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n}));\n\nconst SideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n flex: \"1 1 100%\",\n overflowY: \"auto\",\n paddingInline: odysseyDesignTokens.Spacing2,\n}));\n\nconst SectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n paddingBlock: odysseyDesignTokens.Spacing3,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst SectionHeader = styled(\"h3\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n fontFamily: odysseyDesignTokens.TypographyFamilyHeading,\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n fontWeight: odysseyDesignTokens.TypographyWeightHeadingBold,\n color: odysseyDesignTokens.HueNeutral600,\n textTransform: \"uppercase\",\n}));\n\nconst SideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" && prop !== \"odysseyDesignTokens\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n flexShrink: 0,\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable && {\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n }),\n }),\n);\n\nconst SideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n paddingBlock: odysseyDesignTokens.Spacing4,\n // paddingBlockEnd: odysseyDesignTokens.Spacing4,\n paddingInline: odysseyDesignTokens.Spacing5,\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n a: {\n color: `${odysseyDesignTokens.TypographyColorHeading} !important`,\n\n \"&:hover\": {\n textDecoration: \"none\",\n },\n \"&:visited\": {\n color: odysseyDesignTokens.TypographyColorHeading,\n },\n },\n}));\n\nconst LoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst LoadingItem = () => {\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n return (\n <LoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n height={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </LoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n isCollapsible,\n isCompact,\n isLoading,\n logoProps,\n onCollapse,\n onExpand,\n sideNavItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setSideNavCollapsed] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n useEffect(() => {\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ulElement = scrollableContentRef.current;\n const [liElement] = Array.from(ulElement?.children || []);\n\n if (liElement) {\n intersectionObserverRef.current.observe(liElement);\n }\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, [sideNavItems]);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = sideNavItems.flatMap((sideNavItem) =>\n sideNavItem.children\n ? [sideNavItem, ...sideNavItem.children]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItems]);\n /**\n * Once we've rendered and if we have an item to scroll to, do the scroll action.\n * This must rely on checking firstSideNavItemIdWithIsSelected or it will not run\n * once the actual ref is populated.\n */\n useEffect(() => {\n if (firstSideNavItemIdWithIsSelected && scrollIntoViewRef.current) {\n scrollIntoViewRef.current.scrollIntoView();\n }\n }, [firstSideNavItemIdWithIsSelected, scrollIntoViewRef]);\n\n /**\n * We only want to put a ref on a node iff it is the first selected node.\n * This function returns the ref only if the ID provided matches the first\n * selected node, otherwise returns undefined (so that the node has no ref)\n */\n const getRefIfThisIsFirstNodeWithIsSelected = useCallback(\n (itemId: string) =>\n itemId === firstSideNavItemIdWithIsSelected\n ? scrollIntoViewRef\n : undefined,\n [firstSideNavItemIdWithIsSelected],\n );\n\n const sideNavItemContentProviderValue = useMemo(\n () => ({ isCompact, depth: 1 }),\n [isCompact],\n );\n\n const processedSideNavItems = useMemo(\n () =>\n sideNavItems.map((item) => ({\n ...item,\n children: item.children?.map((childProps) => {\n return (\n <SideNavItemContentContext.Provider\n value={{ ...sideNavItemContentProviderValue, depth: 2 }}\n key={childProps.id}\n >\n <SideNavItemContent\n {...childProps}\n key={childProps.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n />\n </SideNavItemContentContext.Provider>\n );\n }),\n })),\n [\n getRefIfThisIsFirstNodeWithIsSelected,\n sideNavItems,\n sideNavItemContentProviderValue,\n ],\n );\n\n const sideNavExpandClickHandler = useCallback(() => {\n isSideNavCollapsed ? onExpand?.() : onCollapse?.();\n setSideNavCollapsed(!isSideNavCollapsed);\n }, [isSideNavCollapsed, setSideNavCollapsed, onExpand, onCollapse]);\n\n const sideNavExpandKeyHandler = useCallback<\n KeyboardEventHandler<HTMLButtonElement>\n >(\n (event) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n sideNavExpandClickHandler();\n }\n },\n [sideNavExpandClickHandler],\n );\n\n return (\n <StyledSideNav\n aria-label={t(\"navigation.label\")}\n id=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {isCollapsible && (\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onKeyDown={sideNavExpandKeyHandler}\n />\n )}\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavHeaderContainer\n odysseyDesignTokens={odysseyDesignTokens}\n hasContentScrolled={hasContentScrolled}\n >\n <SideNavHeader\n appName={appName}\n isLoading={isLoading}\n logoProps={logoProps}\n />\n </SideNavHeaderContainer>\n <SideNavScrollableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n data-se=\"scrollable-region\"\n >\n <SideNavListContainer role=\"list\" ref={scrollableContentRef}>\n {isLoading\n ? [...Array(6)].map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n children,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <SectionHeaderContainer\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SectionHeader\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {label}\n </SectionHeader>\n </SectionHeaderContainer>\n );\n } else if (children) {\n return (\n <StyledSideNavListItem\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n >\n <NavAccordion\n label={label}\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isExpanded={isExpanded}\n startIcon={startIcon}\n isDisabled={isDisabled}\n >\n <SideNavListContainer id={`${id}-list`} role=\"list\">\n {children}\n </SideNavListContainer>\n </NavAccordion>\n </StyledSideNavListItem>\n );\n } else {\n return (\n <SideNavItemContentContext.Provider\n key={item.id}\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n key={item.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n />\n </SideNavItemContentContext.Provider>\n );\n }\n })}\n </SideNavListContainer>\n </SideNavScrollableContainer>\n {!isLoading && (footerItems || hasCustomFooter) && (\n <SideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n isContentScrollable={isContentScrollable}\n >\n {hasCustomFooter\n ? footerComponent\n : footerItems && (\n <SideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavFooterContent footerItems={footerItems} />\n </SideNavFooterItemsContainer>\n )}\n </SideNavFooter>\n )}\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNav>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"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"}
|
|
@@ -11,37 +11,51 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { memo, useMemo } from "react";
|
|
14
|
+
import styled from "@emotion/styled";
|
|
14
15
|
import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
|
|
15
16
|
import { Box } from "../../Box.js";
|
|
16
17
|
import { Link } from "../../Link.js";
|
|
18
|
+
import { useTranslation } from "react-i18next";
|
|
17
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
|
-
|
|
20
|
+
const StyledFooterNav = styled("nav")({
|
|
21
|
+
display: "flex"
|
|
22
|
+
});
|
|
23
|
+
const StyledFooterItemContainer = styled("div", {
|
|
24
|
+
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
25
|
+
})(({
|
|
26
|
+
odysseyDesignTokens
|
|
27
|
+
}) => ({
|
|
28
|
+
"& + &": {
|
|
29
|
+
marginInlineStart: odysseyDesignTokens.Spacing4,
|
|
30
|
+
paddingInlineStart: odysseyDesignTokens.Spacing4,
|
|
31
|
+
borderInlineStart: `1px solid ${odysseyDesignTokens.HueNeutral300}`
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
19
34
|
const SideNavFooterContent = ({
|
|
20
35
|
footerItems
|
|
21
36
|
}) => {
|
|
22
37
|
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
const {
|
|
39
|
+
t
|
|
40
|
+
} = useTranslation();
|
|
41
|
+
const memoizedFooterContent = useMemo(() => {
|
|
42
|
+
return footerItems?.map(item => _jsx(StyledFooterItemContainer, {
|
|
43
|
+
odysseyDesignTokens: odysseyDesignTokens,
|
|
44
|
+
role: "menuitem",
|
|
45
|
+
children: item.href ? _jsx(Link, {
|
|
29
46
|
href: item.href,
|
|
30
47
|
children: item.label
|
|
31
|
-
}
|
|
48
|
+
}) : _jsx(Box, {
|
|
32
49
|
component: "span",
|
|
33
50
|
children: item.label
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
marginLeft: odysseyDesignTokens.Spacing4,
|
|
37
|
-
marginRight: odysseyDesignTokens.Spacing4,
|
|
38
|
-
color: odysseyDesignTokens.HueNeutral300
|
|
39
|
-
},
|
|
40
|
-
children: "|"
|
|
41
|
-
}, `${item.id}-separator`)]
|
|
42
|
-
}, `${item.id}-wrapper`));
|
|
51
|
+
})
|
|
52
|
+
}, item.id));
|
|
43
53
|
}, [footerItems, odysseyDesignTokens]);
|
|
44
|
-
return
|
|
54
|
+
return _jsx(StyledFooterNav, {
|
|
55
|
+
role: "menubar",
|
|
56
|
+
"aria-label": t("navigation.footer"),
|
|
57
|
+
children: memoizedFooterContent
|
|
58
|
+
});
|
|
45
59
|
};
|
|
46
60
|
const MemoizedSideNavFooterContent = memo(SideNavFooterContent);
|
|
47
61
|
MemoizedSideNavFooterContent.displayName = "SideNavFooterContent";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavFooterContent.js","names":["memo","useMemo","useOdysseyDesignTokens","Box","Link","jsx","_jsx","
|
|
1
|
+
{"version":3,"file":"SideNavFooterContent.js","names":["memo","useMemo","styled","useOdysseyDesignTokens","Box","Link","useTranslation","jsx","_jsx","StyledFooterNav","display","StyledFooterItemContainer","shouldForwardProp","prop","odysseyDesignTokens","marginInlineStart","Spacing4","paddingInlineStart","borderInlineStart","HueNeutral300","SideNavFooterContent","footerItems","t","memoizedFooterContent","map","item","role","children","href","label","component","id","MemoizedSideNavFooterContent","displayName"],"sources":["../../../src/labs/SideNav/SideNavFooterContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { memo, useMemo } from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport type { SideNavFooterItem } from \"./types\";\nimport { Box } from \"../../Box\";\nimport { Link } from \"../../Link\";\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledFooterNav = styled(\"nav\")({\n display: \"flex\",\n});\n\nconst StyledFooterItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n \"& + &\": {\n marginInlineStart: odysseyDesignTokens.Spacing4,\n paddingInlineStart: odysseyDesignTokens.Spacing4,\n borderInlineStart: `1px solid ${odysseyDesignTokens.HueNeutral300}`,\n },\n}));\n\nconst SideNavFooterContent = ({\n footerItems,\n}: {\n footerItems: SideNavFooterItem[];\n}) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const memoizedFooterContent = useMemo(() => {\n return footerItems?.map((item) => (\n <StyledFooterItemContainer\n key={item.id}\n odysseyDesignTokens={odysseyDesignTokens}\n role=\"menuitem\"\n >\n {item.href ? (\n <Link href={item.href}>{item.label}</Link>\n ) : (\n <Box component=\"span\">{item.label}</Box>\n )}\n </StyledFooterItemContainer>\n ));\n }, [footerItems, odysseyDesignTokens]);\n\n return (\n <StyledFooterNav role=\"menubar\" aria-label={t(\"navigation.footer\")}>\n {memoizedFooterContent}\n </StyledFooterNav>\n );\n};\nconst MemoizedSideNavFooterContent = memo(SideNavFooterContent);\nMemoizedSideNavFooterContent.displayName = \"SideNavFooterContent\";\n\nexport { MemoizedSideNavFooterContent as SideNavFooterContent };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,OAAOC,MAAM,MAAM,iBAAiB;AAAC,SAGnCC,sBAAsB;AAAA,SAIfC,GAAG;AAAA,SACHC,IAAI;AACb,SAASC,cAAc,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/C,MAAMC,eAAe,GAAGP,MAAM,CAAC,KAAK,CAAC,CAAC;EACpCQ,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,yBAAyB,GAAGT,MAAM,CAAC,KAAK,EAAE;EAC9CU,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAA2D,CAAC,MAAM;EACtE,OAAO,EAAE;IACPC,iBAAiB,EAAED,mBAAmB,CAACE,QAAQ;IAC/CC,kBAAkB,EAAEH,mBAAmB,CAACE,QAAQ;IAChDE,iBAAiB,EAAG,aAAYJ,mBAAmB,CAACK,aAAc;EACpE;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,oBAAoB,GAAGA,CAAC;EAC5BC;AAGF,CAAC,KAAK;EACJ,MAAMP,mBAAmB,GAAGX,sBAAsB,CAAC,CAAC;EACpD,MAAM;IAAEmB;EAAE,CAAC,GAAGhB,cAAc,CAAC,CAAC;EAE9B,MAAMiB,qBAAqB,GAAGtB,OAAO,CAAC,MAAM;IAC1C,OAAOoB,WAAW,EAAEG,GAAG,CAAEC,IAAI,IAC3BjB,IAAA,CAACG,yBAAyB;MAExBG,mBAAmB,EAAEA,mBAAoB;MACzCY,IAAI,EAAC,UAAU;MAAAC,QAAA,EAEdF,IAAI,CAACG,IAAI,GACRpB,IAAA,CAACH,IAAI;QAACuB,IAAI,EAAEH,IAAI,CAACG,IAAK;QAAAD,QAAA,EAAEF,IAAI,CAACI;MAAK,CAAO,CAAC,GAE1CrB,IAAA,CAACJ,GAAG;QAAC0B,SAAS,EAAC,MAAM;QAAAH,QAAA,EAAEF,IAAI,CAACI;MAAK,CAAM;IACxC,GARIJ,IAAI,CAACM,EASe,CAC5B,CAAC;EACJ,CAAC,EAAE,CAACV,WAAW,EAAEP,mBAAmB,CAAC,CAAC;EAEtC,OACEN,IAAA,CAACC,eAAe;IAACiB,IAAI,EAAC,SAAS;IAAC,cAAYJ,CAAC,CAAC,mBAAmB,CAAE;IAAAK,QAAA,EAChEJ;EAAqB,CACP,CAAC;AAEtB,CAAC;AACD,MAAMS,4BAA4B,GAAGhC,IAAI,CAACoB,oBAAoB,CAAC;AAC/DY,4BAA4B,CAACC,WAAW,GAAG,sBAAsB;AAEjE,SAASD,4BAA4B,IAAIZ,oBAAoB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _Skeleton from "@mui/material/Skeleton";
|
|
1
2
|
/*!
|
|
2
3
|
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
4
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -11,27 +12,40 @@
|
|
|
11
12
|
*/
|
|
12
13
|
|
|
13
14
|
import styled from "@emotion/styled";
|
|
14
|
-
import { memo
|
|
15
|
+
import { memo } from "react";
|
|
15
16
|
import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
|
|
16
|
-
import {
|
|
17
|
+
import { SideNavLogo } from "./SideNavLogo.js";
|
|
17
18
|
import { Heading6 } from "../../Typography.js";
|
|
18
|
-
import {
|
|
19
|
-
import { TOP_NAV_HEIGHT_TOKEN } from "../TopNav.js";
|
|
19
|
+
import { TOP_NAV_HEIGHT } from "../TopNav/index.js";
|
|
20
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
21
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
const SideNavHeaderContainer = styled("div", {
|
|
23
|
+
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
24
|
+
})(({
|
|
25
|
+
odysseyDesignTokens
|
|
26
|
+
}) => ({
|
|
27
|
+
position: "relative",
|
|
28
|
+
display: "flex",
|
|
29
|
+
flexDirection: "column",
|
|
30
|
+
backgroundColor: odysseyDesignTokens.HueNeutralWhite,
|
|
31
|
+
zIndex: 1
|
|
32
|
+
}));
|
|
22
33
|
const SideNavLogoContainer = styled("div", {
|
|
23
34
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
24
35
|
})(({
|
|
25
36
|
odysseyDesignTokens
|
|
26
37
|
}) => ({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
display: "flex",
|
|
39
|
+
alignItems: "center",
|
|
40
|
+
height: TOP_NAV_HEIGHT,
|
|
41
|
+
padding: odysseyDesignTokens.Spacing4,
|
|
42
|
+
"svg, img": {
|
|
43
|
+
maxHeight: "100%",
|
|
44
|
+
width: "auto",
|
|
45
|
+
maxWidth: "100%"
|
|
46
|
+
}
|
|
33
47
|
}));
|
|
34
|
-
const
|
|
48
|
+
const SideNavHeadingContainer = styled("div", {
|
|
35
49
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
36
50
|
})(({
|
|
37
51
|
odysseyDesignTokens
|
|
@@ -39,39 +53,36 @@ const SideNavHeaderContainer = styled("div", {
|
|
|
39
53
|
display: "flex",
|
|
40
54
|
justifyContent: "space-between",
|
|
41
55
|
alignItems: "center",
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
56
|
+
padding: odysseyDesignTokens.Spacing4,
|
|
57
|
+
width: "100%",
|
|
58
|
+
["& .MuiTypography-root"]: {
|
|
59
|
+
margin: 0,
|
|
60
|
+
width: "100%"
|
|
61
|
+
}
|
|
46
62
|
}));
|
|
47
63
|
const SideNavHeader = ({
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
logo
|
|
64
|
+
appName,
|
|
65
|
+
isLoading,
|
|
66
|
+
logoProps
|
|
52
67
|
}) => {
|
|
53
68
|
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}), [odysseyDesignTokens]);
|
|
57
|
-
return _jsxs(Box, {
|
|
58
|
-
sx: {
|
|
59
|
-
display: "flex",
|
|
60
|
-
flexDirection: "column"
|
|
61
|
-
},
|
|
69
|
+
return _jsxs(SideNavHeaderContainer, {
|
|
70
|
+
odysseyDesignTokens: odysseyDesignTokens,
|
|
62
71
|
children: [_jsx(SideNavLogoContainer, {
|
|
63
72
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
64
|
-
children:
|
|
65
|
-
|
|
73
|
+
children: isLoading ? _jsx(_Skeleton, {
|
|
74
|
+
variant: "rounded",
|
|
75
|
+
height: 24,
|
|
76
|
+
width: 67
|
|
77
|
+
}) : _jsx(SideNavLogo, {
|
|
78
|
+
...logoProps
|
|
79
|
+
})
|
|
80
|
+
}), _jsx(SideNavHeadingContainer, {
|
|
66
81
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
67
|
-
children:
|
|
68
|
-
|
|
69
|
-
children: _jsx(
|
|
70
|
-
|
|
71
|
-
})
|
|
72
|
-
}), isCollapsible && _jsx(CollapseIcon, {
|
|
73
|
-
onClick: onCollapse
|
|
74
|
-
})]
|
|
82
|
+
children: _jsx(Heading6, {
|
|
83
|
+
component: "h2",
|
|
84
|
+
children: isLoading ? _jsx(_Skeleton, {}) : appName
|
|
85
|
+
})
|
|
75
86
|
})]
|
|
76
87
|
});
|
|
77
88
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavHeader.js","names":["styled","memo","
|
|
1
|
+
{"version":3,"file":"SideNavHeader.js","names":["styled","memo","useOdysseyDesignTokens","SideNavLogo","Heading6","TOP_NAV_HEIGHT","jsx","_jsx","jsxs","_jsxs","SideNavHeaderContainer","shouldForwardProp","prop","odysseyDesignTokens","position","display","flexDirection","backgroundColor","HueNeutralWhite","zIndex","SideNavLogoContainer","alignItems","height","padding","Spacing4","maxHeight","width","maxWidth","SideNavHeadingContainer","justifyContent","margin","SideNavHeader","appName","isLoading","logoProps","children","_Skeleton","variant","component","MemoizedSideNavHeader","displayName"],"sources":["../../../src/labs/SideNav/SideNavHeader.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { memo } from \"react\";\nimport { Skeleton } from \"@mui/material\";\n\nimport {\n type DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport { SideNavLogo } from \"./SideNavLogo\";\nimport { SideNavProps } from \"./types\";\nimport { Heading6 } from \"../../Typography\";\nimport { TOP_NAV_HEIGHT } from \"../TopNav\";\n\nconst SideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n zIndex: 1,\n}));\n\nconst SideNavLogoContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n height: TOP_NAV_HEIGHT,\n padding: odysseyDesignTokens.Spacing4,\n\n \"svg, img\": {\n maxHeight: \"100%\",\n width: \"auto\",\n maxWidth: \"100%\",\n },\n}));\n\nconst SideNavHeadingContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: odysseyDesignTokens.Spacing4,\n width: \"100%\",\n\n [\"& .MuiTypography-root\"]: {\n margin: 0,\n width: \"100%\",\n },\n}));\n\nexport type SideNavHeaderProps = {\n /**\n * The app's name.\n */\n appName: string;\n /**\n * If the side nav currently has no items, it will be loading.\n */\n isLoading?: boolean;\n} & Pick<SideNavProps, \"logoProps\">;\n\nconst SideNavHeader = ({\n appName,\n isLoading,\n logoProps,\n}: SideNavHeaderProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <SideNavHeaderContainer odysseyDesignTokens={odysseyDesignTokens}>\n <SideNavLogoContainer odysseyDesignTokens={odysseyDesignTokens}>\n {isLoading ? (\n // The skeleton takes the hardcoded dimensions of the Okta logo\n <Skeleton variant=\"rounded\" height={24} width={67} />\n ) : (\n <SideNavLogo {...logoProps} />\n )}\n </SideNavLogoContainer>\n\n <SideNavHeadingContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"h2\">{isLoading ? <Skeleton /> : appName}</Heading6>\n </SideNavHeadingContainer>\n </SideNavHeaderContainer>\n );\n};\n\nconst MemoizedSideNavHeader = memo(SideNavHeader);\nMemoizedSideNavHeader.displayName = \"SideNavHeader\";\n\nexport { MemoizedSideNavHeader as SideNavHeader };\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,IAAI,QAAQ,OAAO;AAAC,SAK3BC,sBAAsB;AAAA,SAEfC,WAAW;AAAA,SAEXC,QAAQ;AAAA,SACRC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEvB,MAAMC,sBAAsB,GAAGV,MAAM,CAAC,KAAK,EAAE;EAC3CW,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAA2D,CAAC,MAAM;EACtEC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE,MAAM;EACfC,aAAa,EAAE,QAAQ;EACvBC,eAAe,EAAEJ,mBAAmB,CAACK,eAAe;EACpDC,MAAM,EAAE;AACV,CAAC,CAAC,CAAC;AAEH,MAAMC,oBAAoB,GAAGpB,MAAM,CAAC,KAAK,EAAE;EACzCW,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAA2D,CAAC,MAAM;EACtEE,OAAO,EAAE,MAAM;EACfM,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAEjB,cAAc;EACtBkB,OAAO,EAAEV,mBAAmB,CAACW,QAAQ;EAErC,UAAU,EAAE;IACVC,SAAS,EAAE,MAAM;IACjBC,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,uBAAuB,GAAG5B,MAAM,CAAC,KAAK,EAAE;EAC5CW,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAA2D,CAAC,MAAM;EACtEE,OAAO,EAAE,MAAM;EACfc,cAAc,EAAE,eAAe;EAC/BR,UAAU,EAAE,QAAQ;EACpBE,OAAO,EAAEV,mBAAmB,CAACW,QAAQ;EACrCE,KAAK,EAAE,MAAM;EAEb,CAAC,uBAAuB,GAAG;IACzBI,MAAM,EAAE,CAAC;IACTJ,KAAK,EAAE;EACT;AACF,CAAC,CAAC,CAAC;AAaH,MAAMK,aAAa,GAAGA,CAAC;EACrBC,OAAO;EACPC,SAAS;EACTC;AACkB,CAAC,KAAK;EACxB,MAAMrB,mBAAmB,GAAGX,sBAAsB,CAAC,CAAC;EAEpD,OACEO,KAAA,CAACC,sBAAsB;IAACG,mBAAmB,EAAEA,mBAAoB;IAAAsB,QAAA,GAC/D5B,IAAA,CAACa,oBAAoB;MAACP,mBAAmB,EAAEA,mBAAoB;MAAAsB,QAAA,EAC5DF,SAAS,GAER1B,IAAA,CAAA6B,SAAA;QAAUC,OAAO,EAAC,SAAS;QAACf,MAAM,EAAE,EAAG;QAACI,KAAK,EAAE;MAAG,CAAE,CAAC,GAErDnB,IAAA,CAACJ,WAAW;QAAA,GAAK+B;MAAS,CAAG;IAC9B,CACmB,CAAC,EAEvB3B,IAAA,CAACqB,uBAAuB;MAACf,mBAAmB,EAAEA,mBAAoB;MAAAsB,QAAA,EAChE5B,IAAA,CAACH,QAAQ;QAACkC,SAAS,EAAC,IAAI;QAAAH,QAAA,EAAEF,SAAS,GAAG1B,IAAA,CAAA6B,SAAA,IAAW,CAAC,GAAGJ;MAAO,CAAW;IAAC,CACjD,CAAC;EAAA,CACJ,CAAC;AAE7B,CAAC;AAED,MAAMO,qBAAqB,GAAGtC,IAAI,CAAC8B,aAAa,CAAC;AACjDQ,qBAAqB,CAACC,WAAW,GAAG,eAAe;AAEnD,SAASD,qBAAqB,IAAIR,aAAa"}
|