@okta/odyssey-react-mui 1.32.4 → 1.34.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.
Files changed (363) hide show
  1. package/dist/cjs/Autocomplete.cjs +1 -1
  2. package/dist/cjs/Autocomplete.cjs.map +1 -1
  3. package/dist/cjs/Breadcrumbs.cjs +23 -7
  4. package/dist/cjs/Breadcrumbs.cjs.map +1 -1
  5. package/dist/cjs/Buttons/BaseButton.cjs +1 -1
  6. package/dist/cjs/Buttons/BaseButton.cjs.map +1 -1
  7. package/dist/cjs/DatePickers/datePickerTheme.cjs +1 -1
  8. package/dist/cjs/DatePickers/datePickerTheme.cjs.map +1 -1
  9. package/dist/cjs/OdysseyProvider.cjs +2 -2
  10. package/dist/cjs/OdysseyProvider.cjs.map +1 -1
  11. package/dist/cjs/OdysseyThemeProvider.cjs +2 -2
  12. package/dist/cjs/OdysseyThemeProvider.cjs.map +1 -1
  13. package/dist/cjs/hexToRgb.cjs.map +1 -1
  14. package/dist/cjs/labs/DatePickers/DateTimePicker.cjs.map +1 -1
  15. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
  16. package/dist/cjs/properties/ts/odyssey-react-mui.cjs +1 -0
  17. package/dist/cjs/properties/ts/odyssey-react-mui.cjs.map +1 -1
  18. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs +1 -0
  19. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs.map +1 -1
  20. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs +1 -0
  21. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs.map +1 -1
  22. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs +1 -0
  23. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs.map +1 -1
  24. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs +1 -0
  25. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs.map +1 -1
  26. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs +1 -0
  27. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs.map +1 -1
  28. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs +1 -0
  29. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs.map +1 -1
  30. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs +1 -0
  31. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs.map +1 -1
  32. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs +1 -0
  33. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs.map +1 -1
  34. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs +1 -0
  35. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs.map +1 -1
  36. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs +1 -0
  37. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs.map +1 -1
  38. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs +1 -0
  39. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs.map +1 -1
  40. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs +1 -0
  41. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs.map +1 -1
  42. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs +1 -0
  43. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs.map +1 -1
  44. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs +1 -0
  45. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs.map +1 -1
  46. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs +1 -0
  47. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs.map +1 -1
  48. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs +1 -0
  49. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs.map +1 -1
  50. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs +1 -0
  51. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs.map +1 -1
  52. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs +1 -0
  53. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs.map +1 -1
  54. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs +1 -0
  55. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs.map +1 -1
  56. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs +1 -0
  57. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs.map +1 -1
  58. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs +1 -0
  59. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs.map +1 -1
  60. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs +1 -0
  61. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs.map +1 -1
  62. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs +1 -0
  63. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs.map +1 -1
  64. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs +1 -0
  65. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs.map +1 -1
  66. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs +1 -0
  67. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs.map +1 -1
  68. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs +1 -0
  69. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs.map +1 -1
  70. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs +1 -0
  71. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs.map +1 -1
  72. package/dist/cjs/theme/pxToRem.cjs +21 -0
  73. package/dist/cjs/theme/pxToRem.cjs.map +1 -0
  74. package/dist/cjs/theme/theme.cjs +22 -0
  75. package/dist/cjs/theme/theme.cjs.map +1 -1
  76. package/dist/cjs/theme/useMediaQuery.cjs +34 -0
  77. package/dist/cjs/theme/useMediaQuery.cjs.map +1 -0
  78. package/dist/cjs/ui-shell/AppSwitcher/AppSwitcher.cjs +3 -3
  79. package/dist/cjs/ui-shell/AppSwitcher/AppSwitcher.cjs.map +1 -1
  80. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs +353 -0
  81. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs.map +1 -0
  82. package/dist/cjs/ui-shell/SideNav/SideNav.cjs +62 -44
  83. package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
  84. package/dist/cjs/ui-shell/SideNav/SideNavHeader.cjs +8 -5
  85. package/dist/cjs/ui-shell/SideNav/SideNavHeader.cjs.map +1 -1
  86. package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs +3 -0
  87. package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs.map +1 -1
  88. package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs +5 -5
  89. package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs.map +1 -1
  90. package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +2 -1
  91. package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
  92. package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
  93. package/dist/cjs/ui-shell/TopNav/HamburgerMenuIcon.cjs +37 -0
  94. package/dist/cjs/ui-shell/TopNav/HamburgerMenuIcon.cjs.map +1 -0
  95. package/dist/cjs/ui-shell/TopNav/TopNav.cjs +5 -5
  96. package/dist/cjs/ui-shell/TopNav/TopNav.cjs.map +1 -1
  97. package/dist/cjs/ui-shell/UiShell.cjs +43 -18
  98. package/dist/cjs/ui-shell/UiShell.cjs.map +1 -1
  99. package/dist/cjs/ui-shell/UiShellProvider.cjs +14 -4
  100. package/dist/cjs/ui-shell/UiShellProvider.cjs.map +1 -1
  101. package/dist/cjs/ui-shell/WideUiShellContent.cjs +171 -0
  102. package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -0
  103. package/dist/cjs/ui-shell/index.cjs +37 -9
  104. package/dist/cjs/ui-shell/index.cjs.map +1 -1
  105. package/dist/cjs/ui-shell/renderUiShell.cjs +32 -20
  106. package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
  107. package/dist/cjs/ui-shell/uiShellContentTypes.cjs +20 -0
  108. package/dist/cjs/ui-shell/uiShellContentTypes.cjs.map +1 -0
  109. package/dist/cjs/ui-shell/uiShellSharedConstants.cjs +23 -0
  110. package/dist/cjs/ui-shell/uiShellSharedConstants.cjs.map +1 -0
  111. package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs +108 -0
  112. package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs.map +1 -0
  113. package/dist/cjs/ui-shell/useScrollState.cjs +2 -4
  114. package/dist/cjs/ui-shell/useScrollState.cjs.map +1 -1
  115. package/dist/cjs/ui-shell/useUiShellBreakpoints.cjs +41 -0
  116. package/dist/cjs/ui-shell/useUiShellBreakpoints.cjs.map +1 -0
  117. package/dist/cjs/web-component/createReactRootElements.cjs.map +1 -1
  118. package/dist/cjs/web-component/renderReactInWebComponent.cjs +6 -1
  119. package/dist/cjs/web-component/renderReactInWebComponent.cjs.map +1 -1
  120. package/dist/esm/Autocomplete.js +1 -1
  121. package/dist/esm/Autocomplete.js.map +1 -1
  122. package/dist/esm/Breadcrumbs.js +23 -7
  123. package/dist/esm/Breadcrumbs.js.map +1 -1
  124. package/dist/esm/Buttons/BaseButton.js +1 -1
  125. package/dist/esm/Buttons/BaseButton.js.map +1 -1
  126. package/dist/esm/DatePickers/datePickerTheme.js +1 -1
  127. package/dist/esm/DatePickers/datePickerTheme.js.map +1 -1
  128. package/dist/esm/OdysseyProvider.js +2 -2
  129. package/dist/esm/OdysseyProvider.js.map +1 -1
  130. package/dist/esm/OdysseyThemeProvider.js +2 -2
  131. package/dist/esm/OdysseyThemeProvider.js.map +1 -1
  132. package/dist/esm/hexToRgb.js.map +1 -1
  133. package/dist/esm/labs/DatePickers/DateTimePicker.js.map +1 -1
  134. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
  135. package/dist/esm/properties/ts/odyssey-react-mui.js +1 -0
  136. package/dist/esm/properties/ts/odyssey-react-mui.js.map +1 -1
  137. package/dist/esm/properties/ts/odyssey-react-mui_cs.js +1 -0
  138. package/dist/esm/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  139. package/dist/esm/properties/ts/odyssey-react-mui_da.js +1 -0
  140. package/dist/esm/properties/ts/odyssey-react-mui_da.js.map +1 -1
  141. package/dist/esm/properties/ts/odyssey-react-mui_de.js +1 -0
  142. package/dist/esm/properties/ts/odyssey-react-mui_de.js.map +1 -1
  143. package/dist/esm/properties/ts/odyssey-react-mui_el.js +1 -0
  144. package/dist/esm/properties/ts/odyssey-react-mui_el.js.map +1 -1
  145. package/dist/esm/properties/ts/odyssey-react-mui_es.js +1 -0
  146. package/dist/esm/properties/ts/odyssey-react-mui_es.js.map +1 -1
  147. package/dist/esm/properties/ts/odyssey-react-mui_fi.js +1 -0
  148. package/dist/esm/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  149. package/dist/esm/properties/ts/odyssey-react-mui_fr.js +1 -0
  150. package/dist/esm/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  151. package/dist/esm/properties/ts/odyssey-react-mui_ht.js +1 -0
  152. package/dist/esm/properties/ts/odyssey-react-mui_ht.js.map +1 -1
  153. package/dist/esm/properties/ts/odyssey-react-mui_hu.js +1 -0
  154. package/dist/esm/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  155. package/dist/esm/properties/ts/odyssey-react-mui_id.js +1 -0
  156. package/dist/esm/properties/ts/odyssey-react-mui_id.js.map +1 -1
  157. package/dist/esm/properties/ts/odyssey-react-mui_it.js +1 -0
  158. package/dist/esm/properties/ts/odyssey-react-mui_it.js.map +1 -1
  159. package/dist/esm/properties/ts/odyssey-react-mui_ja.js +1 -0
  160. package/dist/esm/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  161. package/dist/esm/properties/ts/odyssey-react-mui_ko.js +1 -0
  162. package/dist/esm/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  163. package/dist/esm/properties/ts/odyssey-react-mui_ms.js +1 -0
  164. package/dist/esm/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  165. package/dist/esm/properties/ts/odyssey-react-mui_nb.js +1 -0
  166. package/dist/esm/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  167. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js +1 -0
  168. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  169. package/dist/esm/properties/ts/odyssey-react-mui_pl.js +1 -0
  170. package/dist/esm/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  171. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js +1 -0
  172. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  173. package/dist/esm/properties/ts/odyssey-react-mui_ro.js +1 -0
  174. package/dist/esm/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  175. package/dist/esm/properties/ts/odyssey-react-mui_ru.js +1 -0
  176. package/dist/esm/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  177. package/dist/esm/properties/ts/odyssey-react-mui_sv.js +1 -0
  178. package/dist/esm/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  179. package/dist/esm/properties/ts/odyssey-react-mui_th.js +1 -0
  180. package/dist/esm/properties/ts/odyssey-react-mui_th.js.map +1 -1
  181. package/dist/esm/properties/ts/odyssey-react-mui_tr.js +1 -0
  182. package/dist/esm/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  183. package/dist/esm/properties/ts/odyssey-react-mui_uk.js +1 -0
  184. package/dist/esm/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  185. package/dist/esm/properties/ts/odyssey-react-mui_vi.js +1 -0
  186. package/dist/esm/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  187. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js +1 -0
  188. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  189. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js +1 -0
  190. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  191. package/dist/esm/theme/pxToRem.js +14 -0
  192. package/dist/esm/theme/pxToRem.js.map +1 -0
  193. package/dist/esm/theme/theme.js +2 -0
  194. package/dist/esm/theme/theme.js.map +1 -1
  195. package/dist/esm/theme/useMediaQuery.js +27 -0
  196. package/dist/esm/theme/useMediaQuery.js.map +1 -0
  197. package/dist/esm/ui-shell/AppSwitcher/AppSwitcher.js +2 -2
  198. package/dist/esm/ui-shell/AppSwitcher/AppSwitcher.js.map +1 -1
  199. package/dist/esm/ui-shell/NarrowUiShellContent.js +347 -0
  200. package/dist/esm/ui-shell/NarrowUiShellContent.js.map +1 -0
  201. package/dist/esm/ui-shell/SideNav/SideNav.js +61 -43
  202. package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
  203. package/dist/esm/ui-shell/SideNav/SideNavHeader.js +7 -4
  204. package/dist/esm/ui-shell/SideNav/SideNavHeader.js.map +1 -1
  205. package/dist/esm/ui-shell/SideNav/SideNavItemContent.js +3 -0
  206. package/dist/esm/ui-shell/SideNav/SideNavItemContent.js.map +1 -1
  207. package/dist/esm/ui-shell/SideNav/SideNavLogo.js +5 -5
  208. package/dist/esm/ui-shell/SideNav/SideNavLogo.js.map +1 -1
  209. package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +2 -1
  210. package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
  211. package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
  212. package/dist/esm/ui-shell/TopNav/HamburgerMenuIcon.js +32 -0
  213. package/dist/esm/ui-shell/TopNav/HamburgerMenuIcon.js.map +1 -0
  214. package/dist/esm/ui-shell/TopNav/TopNav.js +2 -2
  215. package/dist/esm/ui-shell/TopNav/TopNav.js.map +1 -1
  216. package/dist/esm/ui-shell/UiShell.js +43 -18
  217. package/dist/esm/ui-shell/UiShell.js.map +1 -1
  218. package/dist/esm/ui-shell/UiShellProvider.js +12 -3
  219. package/dist/esm/ui-shell/UiShellProvider.js.map +1 -1
  220. package/dist/esm/ui-shell/WideUiShellContent.js +165 -0
  221. package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -0
  222. package/dist/esm/ui-shell/index.js +3 -1
  223. package/dist/esm/ui-shell/index.js.map +1 -1
  224. package/dist/esm/ui-shell/renderUiShell.js +32 -20
  225. package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
  226. package/dist/esm/ui-shell/uiShellContentTypes.js +14 -0
  227. package/dist/esm/ui-shell/uiShellContentTypes.js.map +1 -0
  228. package/dist/esm/ui-shell/uiShellSharedConstants.js +17 -0
  229. package/dist/esm/ui-shell/uiShellSharedConstants.js.map +1 -0
  230. package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js +99 -0
  231. package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js.map +1 -0
  232. package/dist/esm/ui-shell/useScrollState.js +3 -5
  233. package/dist/esm/ui-shell/useScrollState.js.map +1 -1
  234. package/dist/esm/ui-shell/useUiShellBreakpoints.js +34 -0
  235. package/dist/esm/ui-shell/useUiShellBreakpoints.js.map +1 -0
  236. package/dist/esm/web-component/createReactRootElements.js.map +1 -1
  237. package/dist/esm/web-component/renderReactInWebComponent.js +6 -1
  238. package/dist/esm/web-component/renderReactInWebComponent.js.map +1 -1
  239. package/dist/index.cjs +1 -1
  240. package/dist/index.mjs +1 -1
  241. package/dist/index.scss +1 -1
  242. package/dist/tsconfig.production.tsbuildinfo +1 -1
  243. package/dist/types/Autocomplete.d.ts +1 -1
  244. package/dist/types/Breadcrumbs.d.ts +4 -3
  245. package/dist/types/Breadcrumbs.d.ts.map +1 -1
  246. package/dist/types/Buttons/BaseButton.d.ts +1 -1
  247. package/dist/types/OdysseyProvider.d.ts +1 -1
  248. package/dist/types/OdysseyProvider.d.ts.map +1 -1
  249. package/dist/types/OdysseyThemeProvider.d.ts.map +1 -1
  250. package/dist/types/OdysseyTranslationProvider.d.ts +1 -1
  251. package/dist/types/OdysseyTranslationProvider.d.ts.map +1 -1
  252. package/dist/types/hexToRgb.d.ts.map +1 -1
  253. package/dist/types/i18n.d.ts +28 -0
  254. package/dist/types/i18n.d.ts.map +1 -1
  255. package/dist/types/labs/DatePickers/DateTimePicker.d.ts.map +1 -1
  256. package/dist/types/properties/ts/odyssey-react-mui.d.ts +1 -0
  257. package/dist/types/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  258. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts +1 -0
  259. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  260. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts +1 -0
  261. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  262. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts +1 -0
  263. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  264. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts +1 -0
  265. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  266. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts +1 -0
  267. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  268. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts +1 -0
  269. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  270. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts +1 -0
  271. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  272. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts +1 -0
  273. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
  274. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts +1 -0
  275. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  276. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts +1 -0
  277. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  278. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts +1 -0
  279. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  280. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts +1 -0
  281. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  282. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts +1 -0
  283. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  284. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts +1 -0
  285. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  286. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts +1 -0
  287. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  288. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts +1 -0
  289. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  290. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts +1 -0
  291. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  292. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts +1 -0
  293. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  294. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts +1 -0
  295. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  296. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts +1 -0
  297. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  298. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts +1 -0
  299. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  300. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts +1 -0
  301. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  302. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts +1 -0
  303. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  304. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts +1 -0
  305. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  306. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts +1 -0
  307. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  308. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts +1 -0
  309. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  310. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts +1 -0
  311. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  312. package/dist/types/theme/pxToRem.d.ts +13 -0
  313. package/dist/types/theme/pxToRem.d.ts.map +1 -0
  314. package/dist/types/theme/theme.d.ts +2 -0
  315. package/dist/types/theme/theme.d.ts.map +1 -1
  316. package/dist/types/theme/useMediaQuery.d.ts +13 -0
  317. package/dist/types/theme/useMediaQuery.d.ts.map +1 -0
  318. package/dist/types/ui-shell/AppSwitcher/AppSwitcher.d.ts.map +1 -1
  319. package/dist/types/ui-shell/NarrowUiShellContent.d.ts +17 -0
  320. package/dist/types/ui-shell/NarrowUiShellContent.d.ts.map +1 -0
  321. package/dist/types/ui-shell/SideNav/SideNav.d.ts +1 -3
  322. package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
  323. package/dist/types/ui-shell/SideNav/SideNavHeader.d.ts.map +1 -1
  324. package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts.map +1 -1
  325. package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts +1 -1
  326. package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts.map +1 -1
  327. package/dist/types/ui-shell/SideNav/SideNavToggleButton.d.ts.map +1 -1
  328. package/dist/types/ui-shell/SideNav/types.d.ts +7 -1
  329. package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
  330. package/dist/types/ui-shell/TopNav/HamburgerMenuIcon.d.ts +16 -0
  331. package/dist/types/ui-shell/TopNav/HamburgerMenuIcon.d.ts.map +1 -0
  332. package/dist/types/ui-shell/TopNav/TopNav.d.ts +0 -1
  333. package/dist/types/ui-shell/TopNav/TopNav.d.ts.map +1 -1
  334. package/dist/types/ui-shell/UiShell.d.ts +12 -14
  335. package/dist/types/ui-shell/UiShell.d.ts.map +1 -1
  336. package/dist/types/ui-shell/UiShellProvider.d.ts +37 -8
  337. package/dist/types/ui-shell/UiShellProvider.d.ts.map +1 -1
  338. package/dist/types/ui-shell/WideUiShellContent.d.ts +16 -0
  339. package/dist/types/ui-shell/WideUiShellContent.d.ts.map +1 -0
  340. package/dist/types/ui-shell/index.d.ts +3 -1
  341. package/dist/types/ui-shell/index.d.ts.map +1 -1
  342. package/dist/types/ui-shell/renderUiShell.d.ts +9 -11
  343. package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
  344. package/dist/types/ui-shell/{UiShellContent.d.ts → uiShellContentTypes.d.ts} +45 -31
  345. package/dist/types/ui-shell/uiShellContentTypes.d.ts.map +1 -0
  346. package/dist/types/ui-shell/uiShellSharedConstants.d.ts +18 -0
  347. package/dist/types/ui-shell/uiShellSharedConstants.d.ts.map +1 -0
  348. package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts +38 -0
  349. package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts.map +1 -0
  350. package/dist/types/ui-shell/useScrollState.d.ts +0 -1
  351. package/dist/types/ui-shell/useScrollState.d.ts.map +1 -1
  352. package/dist/types/ui-shell/useUiShellBreakpoints.d.ts +18 -0
  353. package/dist/types/ui-shell/useUiShellBreakpoints.d.ts.map +1 -0
  354. package/dist/types/web-component/createReactRootElements.d.ts +6 -4
  355. package/dist/types/web-component/createReactRootElements.d.ts.map +1 -1
  356. package/dist/types/web-component/renderReactInWebComponent.d.ts +12 -5
  357. package/dist/types/web-component/renderReactInWebComponent.d.ts.map +1 -1
  358. package/package.json +6 -6
  359. package/dist/cjs/ui-shell/UiShellContent.cjs +0 -242
  360. package/dist/cjs/ui-shell/UiShellContent.cjs.map +0 -1
  361. package/dist/esm/ui-shell/UiShellContent.js +0 -234
  362. package/dist/esm/ui-shell/UiShellContent.js.map +0 -1
  363. package/dist/types/ui-shell/UiShellContent.d.ts.map +0 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SideNav = exports.SIDENAV_COLLAPSE_ICON_POSITION = exports.DEFAULT_SIDE_NAV_WIDTH = void 0;
6
+ exports.SideNav = void 0;
7
7
  var _Skeleton2 = _interopRequireDefault(require("@mui/material/Skeleton"));
8
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var _react = require("react");
@@ -21,6 +21,7 @@ var _SideNavToggleButton = require("./SideNavToggleButton.cjs");
21
21
  var _SortableList = require("./SortableList/SortableList.cjs");
22
22
  var _Typography = require("../../Typography.cjs");
23
23
  var _UiShellProvider = require("../../ui-shell/UiShellProvider.cjs");
24
+ var _uiShellSharedConstants = require("../uiShellSharedConstants.cjs");
24
25
  var _jsxRuntime = require("react/jsx-runtime");
25
26
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
27
  /*!
@@ -35,8 +36,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
35
36
  * See the License for the specific language governing permissions and limitations under the License.
36
37
  */
37
38
 
38
- const DEFAULT_SIDE_NAV_WIDTH = exports.DEFAULT_SIDE_NAV_WIDTH = "300px";
39
- const SIDENAV_COLLAPSE_ICON_POSITION = exports.SIDENAV_COLLAPSE_ICON_POSITION = "77px";
40
39
  const StyledCollapsibleContent = (0, _styled.default)("div", {
41
40
  shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isSideNavCollapsed"
42
41
  })(({
@@ -44,8 +43,8 @@ const StyledCollapsibleContent = (0, _styled.default)("div", {
44
43
  isSideNavCollapsed
45
44
  }) => ({
46
45
  position: "relative",
47
- display: "inline-grid",
48
- gridTemplateColumns: DEFAULT_SIDE_NAV_WIDTH,
46
+ display: "grid",
47
+ gridTemplateColumns: _uiShellSharedConstants.SIDE_NAV_WIDTH,
49
48
  height: "100%",
50
49
  transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,
51
50
  transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,
@@ -61,7 +60,7 @@ const StyledOpacityTransitionContainer = (0, _styled.default)("div", {
61
60
  odysseyDesignTokens,
62
61
  isSideNavCollapsed
63
62
  }) => ({
64
- display: "inline-grid",
63
+ display: "grid",
65
64
  gridTemplateRows: "max-content 1fr max-content",
66
65
  height: "100%",
67
66
  transition: `opacity 50ms`,
@@ -71,7 +70,7 @@ const StyledOpacityTransitionContainer = (0, _styled.default)("div", {
71
70
  opacity: 0
72
71
  })
73
72
  }));
74
- const StyledSideNav = (0, _styled.default)("nav", {
73
+ const StyledSideNavContainer = (0, _styled.default)("nav", {
75
74
  shouldForwardProp: prop => prop !== "backgroundColor" && prop !== "odysseyDesignTokens" && prop !== "isAppContentWhiteBackground" && prop !== "isSideNavCollapsed"
76
75
  })(({
77
76
  backgroundColor,
@@ -79,10 +78,10 @@ const StyledSideNav = (0, _styled.default)("nav", {
79
78
  isSideNavCollapsed,
80
79
  odysseyDesignTokens
81
80
  }) => ({
82
- position: "relative",
83
- display: "inline-block",
84
- height: "100%",
85
81
  backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,
82
+ height: "100%",
83
+ position: "relative",
84
+ width: "fit-content",
86
85
  ...(isAppContentWhiteBackground && {
87
86
  borderRightWidth: odysseyDesignTokens.BorderWidthMain,
88
87
  borderRightStyle: odysseyDesignTokens.BorderStyleMain,
@@ -99,7 +98,7 @@ const StyledSideNav = (0, _styled.default)("nav", {
99
98
  transform: `translateX(0)`,
100
99
  transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}`,
101
100
  width: odysseyDesignTokens.Spacing2,
102
- zIndex: 2
101
+ zIndex: _uiShellSharedConstants.UI_SHELL_OVERLAY_Z_INDEX
103
102
  },
104
103
  "&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)": {
105
104
  ...(isSideNavCollapsed && {
@@ -114,13 +113,13 @@ const StyledSideNav = (0, _styled.default)("nav", {
114
113
  },
115
114
  "[data-sidenav-toggle='true']": {
116
115
  position: "absolute",
117
- top: SIDENAV_COLLAPSE_ICON_POSITION,
116
+ top: _uiShellSharedConstants.SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,
118
117
  right: 0,
119
118
  transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,
120
119
  transform: `translate3d(100%, 0, 0)`
121
120
  }
122
121
  }));
123
- const SideNavHeaderContainer = (0, _styled.default)("div", {
122
+ const StyledSideNavHeaderContainer = (0, _styled.default)("div", {
124
123
  shouldForwardProp: prop => prop !== "borderColor" && prop !== "hasContentScrolled" && prop !== "odysseyDesignTokens"
125
124
  })(({
126
125
  borderColor,
@@ -137,24 +136,23 @@ const SideNavHeaderContainer = (0, _styled.default)("div", {
137
136
  })
138
137
  })
139
138
  }));
140
- const SideNavListContainer = (0, _styled.default)("ul")(() => ({
139
+ const StyledSideNavListContainer = (0, _styled.default)("ul")(() => ({
141
140
  padding: 0,
142
141
  listStyle: "none",
143
142
  listStyleType: "none",
144
143
  margin: 0
145
144
  }));
146
- const SideNavScrollableContainer = (0, _styled.default)("div", {
145
+ const StyledSideNavScrollableContainer = (0, _styled.default)("div", {
147
146
  shouldForwardProp: prop => prop !== "odysseyDesignTokens"
148
147
  })(({
149
148
  odysseyDesignTokens
150
149
  }) => ({
151
- display: "grid",
150
+ display: "inline-grid",
152
151
  gridTemplateRows: "1fr max-content",
153
- flex: "1 1 100%",
154
152
  overflowY: "auto",
155
153
  paddingInline: odysseyDesignTokens.Spacing2
156
154
  }));
157
- const SectionHeaderContainer = (0, _styled.default)("li", {
155
+ const StyledSectionHeaderContainer = (0, _styled.default)("li", {
158
156
  shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "contrastFontColor"
159
157
  })(({
160
158
  contrastFontColor,
@@ -165,7 +163,7 @@ const SectionHeaderContainer = (0, _styled.default)("li", {
165
163
  marginBlock: `${odysseyDesignTokens.Spacing3}`,
166
164
  color: contrastFontColor || odysseyDesignTokens.HueNeutral600
167
165
  }));
168
- const SideNavFooter = (0, _styled.default)("div", {
166
+ const StyledSideNavFooter = (0, _styled.default)("div", {
169
167
  shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "sideNavBackgroundColor"
170
168
  })(({
171
169
  odysseyDesignTokens,
@@ -178,7 +176,7 @@ const SideNavFooter = (0, _styled.default)("div", {
178
176
  backgroundColor: sideNavBackgroundColor
179
177
  })
180
178
  }));
181
- const PersistentSideNavFooter = (0, _styled.default)(SideNavFooter, {
179
+ const StyledPersistentSideNavFooter = (0, _styled.default)(StyledSideNavFooter, {
182
180
  shouldForwardProp: prop => prop !== "isContentScrollable" && prop !== "odysseyDesignTokens" && prop !== "sideNavBackgroundColor"
183
181
  })(({
184
182
  isContentScrollable,
@@ -188,7 +186,7 @@ const PersistentSideNavFooter = (0, _styled.default)(SideNavFooter, {
188
186
  transitionProperty: "box-shadow",
189
187
  transitionDuration: odysseyDesignTokens.TransitionDurationMain,
190
188
  transitionTiming: odysseyDesignTokens.TransitionTimingMain,
191
- zIndex: 2,
189
+ zIndex: _uiShellSharedConstants.UI_SHELL_BASE_Z_INDEX,
192
190
  ...(isContentScrollable && {
193
191
  boxShadow: "0px -8px 8px -8px rgba(39, 39, 39, 0.08)"
194
192
  }),
@@ -196,7 +194,7 @@ const PersistentSideNavFooter = (0, _styled.default)(SideNavFooter, {
196
194
  backgroundColor: sideNavBackgroundColor
197
195
  })
198
196
  }));
199
- const SideNavFooterItemsContainer = (0, _styled.default)("div", {
197
+ const StyledSideNavFooterItemsContainer = (0, _styled.default)("div", {
200
198
  shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "sideNavContrastColors"
201
199
  })(({
202
200
  odysseyDesignTokens,
@@ -227,7 +225,7 @@ const SideNavFooterItemsContainer = (0, _styled.default)("div", {
227
225
  })
228
226
  }
229
227
  }));
230
- const LoadingItemContainer = (0, _styled.default)("div", {
228
+ const StyledLoadingItemContainer = (0, _styled.default)("div", {
231
229
  shouldForwardProp: prop => prop !== "odysseyDesignTokens"
232
230
  })(({
233
231
  odysseyDesignTokens
@@ -241,7 +239,7 @@ const LoadingItemContainer = (0, _styled.default)("div", {
241
239
  const getHasScrollableContent = scrollableContainer => scrollableContainer.scrollHeight > scrollableContainer.clientHeight;
242
240
  const LoadingItem = () => {
243
241
  const odysseyDesignTokens = (0, _OdysseyDesignTokensContext.useOdysseyDesignTokens)();
244
- return (0, _jsxRuntime.jsxs)(LoadingItemContainer, {
242
+ return (0, _jsxRuntime.jsxs)(StyledLoadingItemContainer, {
245
243
  odysseyDesignTokens: odysseyDesignTokens,
246
244
  children: [(0, _jsxRuntime.jsx)(_Skeleton2.default, {
247
245
  variant: "circular",
@@ -262,13 +260,14 @@ const SideNav = ({
262
260
  isCollapsed = false,
263
261
  isCompact,
264
262
  isLoading,
263
+ isObtrusive,
265
264
  logoProps,
266
265
  onCollapse,
267
266
  onExpand,
268
267
  onSort,
269
268
  sideNavItems
270
269
  }) => {
271
- const [isSideNavCollapsed, setSideNavCollapsed] = (0, _react.useState)(isCollapsed);
270
+ const [isSideNavCollapsed, setIsSideNavCollapsed] = (0, _react.useState)(isCollapsed);
272
271
  const [hasContentScrolled, setHasContentScrolled] = (0, _react.useState)(false);
273
272
  const [isContentScrollable, setIsContentScrollable] = (0, _react.useState)(false);
274
273
  const [sideNavItemsList, updateSideNavItemsList] = (0, _react.useState)(sideNavItems);
@@ -282,7 +281,7 @@ const SideNav = ({
282
281
  const intersectionObserverRef = (0, _react.useRef)(null);
283
282
  const blankElement = (0, _react.useMemo)(() => (0, _jsxRuntime.jsx)("div", {}), []);
284
283
  (0, _react.useEffect)(() => updateSideNavItemsList(sideNavItems), [sideNavItems]);
285
- (0, _react.useEffect)(() => setSideNavCollapsed(isCollapsed), [isCollapsed]);
284
+ (0, _react.useEffect)(() => setIsSideNavCollapsed(isCollapsed), [isCollapsed]);
286
285
  (0, _react.useEffect)(() => {
287
286
  const updateIsContentScrollable = () => {
288
287
  if (scrollableContentRef.current && scrollableContentRef.current.parentElement) {
@@ -367,7 +366,10 @@ const SideNav = ({
367
366
  } : item;
368
367
  });
369
368
  updateSideNavItemsList(updatedSideNavItems);
370
- }, [sideNavItemsList]);
369
+ if (isCollapsed || isObtrusive) {
370
+ uiShellContext?.closeSideNavMenu();
371
+ }
372
+ }, [isCollapsed, isObtrusive, sideNavItemsList, uiShellContext]);
371
373
  const processedSideNavItems = (0, _react.useMemo)(() => {
372
374
  return sideNavItemsList?.map(item => ({
373
375
  ...item,
@@ -395,19 +397,33 @@ const SideNav = ({
395
397
  }));
396
398
  }, [getRefIfThisIsFirstNodeWithIsSelected, sideNavItemsList, sideNavItemContentProviderValue, setSelectedItem]);
397
399
  const sideNavExpandClickHandler = (0, _react.useCallback)(() => {
398
- if (isSideNavCollapsed) {
399
- onExpand?.();
400
- } else {
401
- onCollapse?.();
402
- }
403
- setSideNavCollapsed(!isSideNavCollapsed);
404
- }, [isSideNavCollapsed, setSideNavCollapsed, onExpand, onCollapse]);
400
+ setIsSideNavCollapsed(isSideNavCollapsed => {
401
+ if (isSideNavCollapsed) {
402
+ onExpand?.();
403
+ } else {
404
+ onCollapse?.();
405
+ }
406
+ return !isSideNavCollapsed;
407
+ });
408
+ }, [onExpand, onCollapse]);
405
409
  const sideNavExpandKeyHandler = (0, _react.useCallback)(event => {
406
410
  if (event?.key === "Enter" || event?.code === "Space") {
407
411
  event.preventDefault();
408
412
  sideNavExpandClickHandler();
409
413
  }
410
414
  }, [sideNavExpandClickHandler]);
415
+ (0, _react.useEffect)(() => {
416
+ if (isCollapsed) {
417
+ const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {
418
+ onCollapse?.();
419
+ setIsSideNavCollapsed(true);
420
+ });
421
+ return () => {
422
+ unsubscribe?.();
423
+ };
424
+ }
425
+ return () => {};
426
+ }, [isCollapsed, onCollapse, uiShellContext]);
411
427
  const setSortedItems = (0, _react.useCallback)((parentId, activeId, activeIndex, overIndex) => {
412
428
  const sortedSideNavItems = sideNavItemsList.map(item => item.id === parentId && item.nestedNavItems ? {
413
429
  ...item,
@@ -416,7 +432,7 @@ const SideNav = ({
416
432
  updateSideNavItemsList(sortedSideNavItems);
417
433
  onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);
418
434
  }, [onSort, sideNavItemsList]);
419
- return (0, _jsxRuntime.jsxs)(StyledSideNav, {
435
+ return (0, _jsxRuntime.jsxs)(StyledSideNavContainer, {
420
436
  "aria-label": t("navigation.label"),
421
437
  backgroundColor: uiShellContext?.sideNavBackgroundColor,
422
438
  id: "side-nav-expandable",
@@ -436,19 +452,21 @@ const SideNav = ({
436
452
  children: (0, _jsxRuntime.jsxs)(StyledOpacityTransitionContainer, {
437
453
  isSideNavCollapsed: isSideNavCollapsed,
438
454
  odysseyDesignTokens: odysseyDesignTokens,
439
- children: [(0, _jsxRuntime.jsx)(SideNavHeaderContainer, {
455
+ children: [appName || isLoading || logoProps ? (0, _jsxRuntime.jsx)(StyledSideNavHeaderContainer, {
440
456
  hasContentScrolled: hasContentScrolled,
441
457
  odysseyDesignTokens: odysseyDesignTokens,
442
458
  borderColor: uiShellContext?.sideNavContrastColors?.fontColor,
443
- children: (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
459
+ children: isLoading && !appName && !logoProps ? (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
460
+ isLoading: isLoading
461
+ }) : (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
444
462
  appName: appName,
445
463
  isLoading: isLoading,
446
464
  logoProps: logoProps
447
465
  })
448
- }), (0, _jsxRuntime.jsxs)(SideNavScrollableContainer, {
466
+ }) : (0, _jsxRuntime.jsx)("div", {}), (0, _jsxRuntime.jsxs)(StyledSideNavScrollableContainer, {
449
467
  odysseyDesignTokens: odysseyDesignTokens,
450
468
  "data-se": "scrollable-region",
451
- children: [(0, _jsxRuntime.jsx)(SideNavListContainer, {
469
+ children: [(0, _jsxRuntime.jsx)(StyledSideNavListContainer, {
452
470
  role: "none",
453
471
  ref: scrollableContentRef,
454
472
  children: isLoading ? Array(6).fill(null).map((_, index) => (0, _jsxRuntime.jsx)(LoadingItem, {}, index)) : processedSideNavItems?.map(item => {
@@ -466,7 +484,7 @@ const SideNav = ({
466
484
  if (isSectionHeader) {
467
485
  return (0, _jsxRuntime.jsx)(_reactErrorBoundary.ErrorBoundary, {
468
486
  fallback: blankElement,
469
- children: (0, _jsxRuntime.jsx)(SectionHeaderContainer, {
487
+ children: (0, _jsxRuntime.jsx)(StyledSectionHeaderContainer, {
470
488
  contrastFontColor: uiShellContext?.sideNavContrastColors?.fontColor,
471
489
  id: id,
472
490
  odysseyDesignTokens: odysseyDesignTokens,
@@ -491,7 +509,7 @@ const SideNav = ({
491
509
  isExpanded: isExpanded,
492
510
  startIcon: startIcon,
493
511
  isDisabled: isDisabled,
494
- children: (0, _jsxRuntime.jsx)(SideNavListContainer, {
512
+ children: (0, _jsxRuntime.jsx)(StyledSideNavListContainer, {
495
513
  role: "none",
496
514
  children: isSortable ? (0, _jsxRuntime.jsx)(_SortableList.SortableList, {
497
515
  parentId: item.id,
@@ -525,10 +543,10 @@ const SideNav = ({
525
543
  });
526
544
  }
527
545
  })
528
- }), !isLoading && footerItems && !hasCustomFooter && (0, _jsxRuntime.jsx)(SideNavFooter, {
546
+ }), !isLoading && footerItems && !hasCustomFooter && (0, _jsxRuntime.jsx)(StyledSideNavFooter, {
529
547
  odysseyDesignTokens: odysseyDesignTokens,
530
548
  sideNavBackgroundColor: uiShellContext?.sideNavBackgroundColor,
531
- children: (0, _jsxRuntime.jsx)(SideNavFooterItemsContainer, {
549
+ children: (0, _jsxRuntime.jsx)(StyledSideNavFooterItemsContainer, {
532
550
  odysseyDesignTokens: odysseyDesignTokens,
533
551
  sideNavContrastColors: uiShellContext?.sideNavContrastColors,
534
552
  children: (0, _jsxRuntime.jsx)(_SideNavFooterContent.SideNavFooterContent, {
@@ -536,7 +554,7 @@ const SideNav = ({
536
554
  })
537
555
  })
538
556
  })]
539
- }), !isLoading && !footerItems && hasCustomFooter && (0, _jsxRuntime.jsx)(PersistentSideNavFooter, {
557
+ }), !isLoading && !footerItems && hasCustomFooter && (0, _jsxRuntime.jsx)(StyledPersistentSideNavFooter, {
540
558
  isContentScrollable: isContentScrollable,
541
559
  odysseyDesignTokens: odysseyDesignTokens,
542
560
  sideNavBackgroundColor: uiShellContext?.sideNavBackgroundColor,
@@ -1 +1 @@
1
- {"version":3,"file":"SideNav.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_sortable","_reactErrorBoundary","_NavAccordion","_OdysseyDesignTokensContext","_OdysseyThemeProvider","_SideNavHeader","_SideNavItemContent","_SideNavFooterContent","_SideNavItemContentContext","_SideNavToggleButton","_SortableList","_Typography","_UiShellProvider","_jsxRuntime","e","__esModule","default","DEFAULT_SIDE_NAV_WIDTH","exports","SIDENAV_COLLAPSE_ICON_POSITION","StyledCollapsibleContent","styled","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNav","backgroundColor","isAppContentWhiteBackground","HueNeutralWhite","borderRightWidth","BorderWidthMain","borderRightStyle","BorderStyleMain","borderRightColor","HueNeutral100","HueNeutral200","content","right","top","transform","width","Spacing2","zIndex","Spacing3","SideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","SideNavListContainer","padding","listStyle","listStyleType","margin","SideNavScrollableContainer","flex","overflowY","paddingInline","SectionHeaderContainer","contrastFontColor","paddingBlock","Spacing1","Spacing4","marginBlock","color","HueNeutral600","SideNavFooter","sideNavBackgroundColor","PersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","SideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","LoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","useOdysseyDesignTokens","jsxs","children","jsx","_Skeleton2","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","isCollapsible","isCollapsed","isCompact","isLoading","logoProps","onCollapse","onExpand","onSort","sideNavItems","setSideNavCollapsed","useState","setHasContentScrolled","setIsContentScrollable","sideNavItemsList","updateSideNavItemsList","uiShellContext","useUiShellContext","t","useTranslation","scrollableContentRef","useRef","resizeObserverRef","intersectionObserverRef","blankElement","useMemo","useEffect","updateIsContentScrollable","current","parentElement","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","nestedNavItems","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","useCallback","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","SideNavItemContentContext","Provider","value","SideNavItemContent","scrollRef","onItemSelected","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","arrayMove","appBackgroundColor","SideNavToggleButton","ariaControls","onClick","onKeyDown","OdysseyThemeProvider","SideNavHeader","role","ref","fill","_","index","label","isSectionHeader","startIcon","isDefaultExpanded","isExpanded","ErrorBoundary","fallback","Overline","component","StyledSideNavListItem","disabled","NavAccordion","SortableList","items","onChange","renderItem","sortableItem","Item","createElement","SideNavFooterContent","MemoizedSideNav","memo","displayName"],"sources":["../../../../src/ui-shell/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 useRef,\n useEffect,\n KeyboardEventHandler,\n} from \"react\";\nimport { Skeleton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Property } from \"csstype\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport type { SideNavProps } from \"./types.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavToggleButton } from \"./SideNavToggleButton.js\";\nimport { SortableList } from \"./SortableList/SortableList.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\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 odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"inline-grid\",\n gridTemplateColumns: DEFAULT_SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed && {\n gridTemplateColumns: 0,\n opacity: 0,\n }),\n}));\n\nconst StyledOpacityTransitionContainer = 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 display: \"inline-grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed && {\n opacity: 0,\n }),\n }),\n);\n\nconst StyledSideNav = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\",\n})<{\n isAppContentWhiteBackground: boolean;\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n display: \"inline-block\",\n height: \"100%\",\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n\n ...(isAppContentWhiteBackground && {\n borderRightWidth: odysseyDesignTokens.BorderWidthMain,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightColor: odysseyDesignTokens.HueNeutral100,\n }),\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 zIndex: 2,\n },\n\n \"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)\":\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 !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})(\n ({\n borderColor,\n hasContentScrolled,\n odysseyDesignTokens,\n }: {\n borderColor: ContrastColors[\"fontColor\"];\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 borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderBottomStyle,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor && {\n borderBottomColor: borderColor.concat(\"15\"),\n }),\n }),\n }),\n);\n\nconst SideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n}));\n\nconst SideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"grid\",\n gridTemplateRows: \"1fr max-content\",\n flex: \"1 1 100%\",\n overflowY: \"auto\",\n paddingInline: odysseyDesignTokens.Spacing2,\n}));\n\nconst SectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n }),\n);\n\nconst SideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n\n ...(sideNavBackgroundColor && {\n backgroundColor: sideNavBackgroundColor,\n }),\n }),\n);\n\nconst PersistentSideNavFooter = styled(SideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: 2,\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 ...(sideNavBackgroundColor && {\n backgroundColor: sideNavBackgroundColor,\n }),\n }),\n);\n\nconst SideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor && {\n color: sideNavContrastColors?.fontColor,\n }),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor && {\n color: sideNavContrastColors?.fontColor,\n }),\n },\n\n ...(sideNavContrastColors?.fontColor && {\n color: sideNavContrastColors?.fontColor,\n }),\n },\n}));\n\nconst LoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\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 isCollapsed = false,\n isCompact,\n isLoading,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setSideNavCollapsed] = useState(isCollapsed);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(sideNavItems);\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems), [sideNavItems]);\n\n // update sidenav collapse status\n useEffect(() => setSideNavCollapsed(isCollapsed), [isCollapsed]);\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\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 }, [sideNavItemsList]);\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 = sideNavItemsList.flatMap((sideNavItem) =>\n sideNavItem.nestedNavItems\n ? [sideNavItem, ...sideNavItem.nestedNavItems]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItemsList]);\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]);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n const updatedSideNavItems = sideNavItemsList.map((item) => {\n if (item.id === selectedItemId) {\n item.isSelected = true;\n } else if (item.isSelected) {\n delete item.isSelected;\n }\n\n return item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: item.nestedNavItems.map((childItem) => {\n if (childItem.id === selectedItemId) {\n childItem.isSelected = true;\n } else if (childItem.isSelected) {\n delete childItem.isSelected;\n }\n return childItem;\n }),\n }\n : item;\n });\n updateSideNavItemsList(updatedSideNavItems);\n },\n [sideNavItemsList],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => {\n return {\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n key={childProps.id}\n >\n <SideNavItemContent\n {...childProps}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n onItemSelected={setSelectedItem}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n };\n }),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n sideNavItemsList,\n sideNavItemContentProviderValue,\n setSelectedItem,\n ]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\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 const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n return (\n <StyledSideNav\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\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 <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavHeaderContainer\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\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=\"none\" ref={scrollableContentRef}>\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n childNavItems,\n isSortable,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </SectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n return (\n <ErrorBoundary fallback={blankElement}>\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 role=\"none\">\n {isSortable ? (\n <SortableList\n parentId={item.id}\n items={childNavItems}\n onChange={setSortedItems}\n renderItem={(sortableItem) => (\n <SortableList.Item\n id={sortableItem.id}\n isDisabled={sortableItem.isDisabled}\n isSelected={sortableItem.isSelected}\n isSortable={sortableItem.isSortable}\n >\n {sortableItem.navItem}\n </SortableList.Item>\n )}\n />\n ) : (\n childNavItems.map((item) => item.navItem)\n )}\n </SideNavListContainer>\n </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SideNavItemContentContext.Provider\n key={item.id}\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n key={item.id}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n })}\n </SideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <SideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <SideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </SideNavFooterItemsContainer>\n </SideNavFooter>\n )}\n </SideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <PersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </PersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\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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","ignoreList":[]}
1
+ {"version":3,"file":"SideNav.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_sortable","_reactErrorBoundary","_NavAccordion","_OdysseyDesignTokensContext","_OdysseyThemeProvider","_SideNavHeader","_SideNavItemContent","_SideNavFooterContent","_SideNavItemContentContext","_SideNavToggleButton","_SortableList","_Typography","_UiShellProvider","_uiShellSharedConstants","_jsxRuntime","e","__esModule","default","StyledCollapsibleContent","styled","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","SIDE_NAV_WIDTH","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","isAppContentWhiteBackground","HueNeutralWhite","width","borderRightWidth","BorderWidthMain","borderRightStyle","BorderStyleMain","borderRightColor","HueNeutral100","HueNeutral200","content","right","top","transform","Spacing2","zIndex","UI_SHELL_OVERLAY_Z_INDEX","Spacing3","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","overflowY","paddingInline","StyledSectionHeaderContainer","contrastFontColor","paddingBlock","Spacing1","Spacing4","marginBlock","color","HueNeutral600","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","UI_SHELL_BASE_Z_INDEX","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","useOdysseyDesignTokens","jsxs","children","jsx","_Skeleton2","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","onCollapse","onExpand","onSort","sideNavItems","setIsSideNavCollapsed","useState","setHasContentScrolled","setIsContentScrollable","sideNavItemsList","updateSideNavItemsList","uiShellContext","useUiShellContext","t","useTranslation","scrollableContentRef","useRef","resizeObserverRef","intersectionObserverRef","blankElement","useMemo","useEffect","updateIsContentScrollable","current","parentElement","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","nestedNavItems","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","useCallback","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","closeSideNavMenu","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","SideNavItemContentContext","Provider","value","SideNavItemContent","scrollRef","onItemSelected","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","arrayMove","appBackgroundColor","SideNavToggleButton","ariaControls","onClick","onKeyDown","OdysseyThemeProvider","SideNavHeader","role","ref","fill","_","index","label","isSectionHeader","startIcon","isDefaultExpanded","isExpanded","ErrorBoundary","fallback","Overline","component","StyledSideNavListItem","disabled","NavAccordion","SortableList","items","onChange","renderItem","sortableItem","Item","createElement","SideNavFooterContent","MemoizedSideNav","exports","memo","displayName"],"sources":["../../../../src/ui-shell/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 useRef,\n useEffect,\n KeyboardEventHandler,\n CSSProperties,\n} from \"react\";\nimport { Skeleton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Property } from \"csstype\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport type { SideNavProps } from \"./types.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavToggleButton } from \"./SideNavToggleButton.js\";\nimport { SortableList } from \"./SortableList/SortableList.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport {\n SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n SIDE_NAV_WIDTH,\n UI_SHELL_BASE_Z_INDEX,\n UI_SHELL_OVERLAY_Z_INDEX,\n} from \"../uiShellSharedConstants.js\";\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n gridTemplateColumns: 0,\n opacity: 0,\n } as CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = 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 display: \"grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n opacity: 0,\n } as CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\",\n})<{\n isAppContentWhiteBackground: boolean;\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n odysseyDesignTokens,\n }) => ({\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n ...(isAppContentWhiteBackground &&\n ({\n borderRightWidth: odysseyDesignTokens.BorderWidthMain,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightColor: odysseyDesignTokens.HueNeutral100,\n } as CSSProperties)),\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 zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n \"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)\":\n {\n ...(isSideNavCollapsed &&\n ({\n \"&::after\": {\n opacity: 1,\n transform: `translateX(100%)`,\n } as CSSProperties,\n\n \"[data-sidenav-toggle='true']\": {\n transform: `translate3d(calc(100% + ${odysseyDesignTokens.Spacing3}), 0, 0)`,\n } as CSSProperties,\n } as CSSProperties)),\n },\n\n \"[data-sidenav-toggle='true']\": {\n position: \"absolute\",\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n right: 0,\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n transform: `translate3d(100%, 0, 0)`,\n },\n }),\n);\n\nconst StyledSideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ borderColor, hasContentScrolled, odysseyDesignTokens }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor &&\n ({\n borderBottomColor: borderColor.concat(\"15\"),\n } as CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingInline: odysseyDesignTokens.Spacing2,\n}));\n\nconst StyledSectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n }),\n);\n\nconst StyledSideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } as CSSProperties)),\n }),\n);\n\nconst StyledPersistentSideNavFooter = styled(StyledSideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable &&\n ({\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n } as CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } as CSSProperties)),\n }),\n);\n\nconst StyledSideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } as CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } as CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } as CSSProperties)),\n },\n}));\n\nconst StyledLoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\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 <StyledLoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n height={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </StyledLoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setIsSideNavCollapsed] = useState(isCollapsed);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(sideNavItems);\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems), [sideNavItems]);\n\n // update sidenav collapse status\n useEffect(() => setIsSideNavCollapsed(isCollapsed), [isCollapsed]);\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\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 }, [sideNavItemsList]);\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 = sideNavItemsList.flatMap((sideNavItem) =>\n sideNavItem.nestedNavItems\n ? [sideNavItem, ...sideNavItem.nestedNavItems]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItemsList]);\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]);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n const updatedSideNavItems = sideNavItemsList.map((item) => {\n if (item.id === selectedItemId) {\n item.isSelected = true;\n } else if (item.isSelected) {\n delete item.isSelected;\n }\n\n return item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: item.nestedNavItems.map((childItem) => {\n if (childItem.id === selectedItemId) {\n childItem.isSelected = true;\n } else if (childItem.isSelected) {\n delete childItem.isSelected;\n }\n return childItem;\n }),\n }\n : item;\n });\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n uiShellContext?.closeSideNavMenu();\n }\n },\n [isCollapsed, isObtrusive, sideNavItemsList, uiShellContext],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => {\n return {\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n key={childProps.id}\n >\n <SideNavItemContent\n {...childProps}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n onItemSelected={setSelectedItem}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n };\n }),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n sideNavItemsList,\n sideNavItemContentProviderValue,\n setSelectedItem,\n ]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n setIsSideNavCollapsed((isSideNavCollapsed) => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n return !isSideNavCollapsed;\n });\n }, [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 useEffect(() => {\n if (isCollapsed) {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }\n\n return () => {};\n }, [isCollapsed, onCollapse, uiShellContext]);\n\n const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\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\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {appName || isLoading || logoProps ? (\n <StyledSideNavHeaderContainer\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n >\n {isLoading && !appName && !logoProps ? (\n <SideNavHeader isLoading={isLoading} />\n ) : (\n <SideNavHeader\n appName={appName}\n isLoading={isLoading}\n logoProps={logoProps}\n />\n )}\n </StyledSideNavHeaderContainer>\n ) : (\n <div />\n )}\n\n <StyledSideNavScrollableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n data-se=\"scrollable-region\"\n >\n <StyledSideNavListContainer\n role=\"none\"\n ref={scrollableContentRef}\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n childNavItems,\n isSortable,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <StyledSectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n return (\n <ErrorBoundary fallback={blankElement}>\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 <StyledSideNavListContainer role=\"none\">\n {isSortable ? (\n <SortableList\n parentId={item.id}\n items={childNavItems}\n onChange={setSortedItems}\n renderItem={(sortableItem) => (\n <SortableList.Item\n id={sortableItem.id}\n isDisabled={sortableItem.isDisabled}\n isSelected={sortableItem.isSelected}\n isSortable={sortableItem.isSortable}\n >\n {sortableItem.navItem}\n </SortableList.Item>\n )}\n />\n ) : (\n childNavItems.map((item) => item.navItem)\n )}\n </StyledSideNavListContainer>\n </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SideNavItemContentContext.Provider\n key={item.id}\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n key={item.id}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n })}\n </StyledSideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <StyledSideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <StyledSideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </StyledSideNavFooterItemsContainer>\n </StyledSideNavFooter>\n )}\n </StyledSideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <StyledPersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </StyledPersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNavContainer>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":";;;;;;;AAYA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAWA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEA,IAAAI,mBAAA,GAAAJ,OAAA;AAIA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,2BAAA,GAAAN,OAAA;AAIA,IAAAO,qBAAA,GAAAP,OAAA;AAEA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,mBAAA,GAAAT,OAAA;AAIA,IAAAU,qBAAA,GAAAV,OAAA;AACA,IAAAW,0BAAA,GAAAX,OAAA;AACA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,aAAA,GAAAb,OAAA;AACA,IAAAc,WAAA,GAAAd,OAAA;AACA,IAAAe,gBAAA,GAAAf,OAAA;AAIA,IAAAgB,uBAAA,GAAAhB,OAAA;AAKsC,IAAAiB,WAAA,GAAAjB,OAAA;AAAA,SAAAD,uBAAAmB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAzDtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiDA,MAAMG,wBAAwB,GAAG,IAAAC,eAAM,EAAC,KAAK,EAAE;EAC7CC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CAGC,CAAC;EAAEC,mBAAmB;EAAEC;AAAmB,CAAC,MAAM;EACnDC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE,MAAM;EACfC,mBAAmB,EAAEC,sCAAc;EACnCC,MAAM,EAAE,MAAM;EACdC,UAAU,EAAE,yBAAyBP,mBAAmB,CAACQ,sBAAsB,iBAAiB;EAChGC,wBAAwB,EAAET,mBAAmB,CAACU,oBAAoB;EAClEC,QAAQ,EAAE,QAAQ;EAElB,IAAIV,kBAAkB,IACnB;IACCG,mBAAmB,EAAE,CAAC;IACtBQ,OAAO,EAAE;EACX,CAAmB;AACvB,CAAC,CAAC,CAAC;AAEH,MAAMC,gCAAgC,GAAG,IAAAhB,eAAM,EAAC,KAAK,EAAE;EACrDC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CACA,CAAC;EACCC,mBAAmB;EACnBC;AAIF,CAAC,MAAM;EACLE,OAAO,EAAE,MAAM;EACfW,gBAAgB,EAAE,6BAA6B;EAC/CR,MAAM,EAAE,MAAM;EACdC,UAAU,EAAE,cAAc;EAC1BE,wBAAwB,EAAET,mBAAmB,CAACU,oBAAoB;EAClEC,QAAQ,EAAE,QAAQ;EAElB,IAAIV,kBAAkB,IACnB;IACCW,OAAO,EAAE;EACX,CAAmB;AACvB,CAAC,CACH,CAAC;AAED,MAAMG,sBAAsB,GAAG,IAAAlB,eAAM,EAAC,KAAK,EAAE;EAC3CC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,iBAAiB,IAC1BA,IAAI,KAAK,qBAAqB,IAC9BA,IAAI,KAAK,6BAA6B,IACtCA,IAAI,KAAK;AACb,CAAC,CAAC,CAMA,CAAC;EACCiB,eAAe;EACfC,2BAA2B;EAC3BhB,kBAAkB;EAClBD;AACF,CAAC,MAAM;EACLgB,eAAe,EAAEA,eAAe,IAAIhB,mBAAmB,CAACkB,eAAe;EACvEZ,MAAM,EAAE,MAAM;EACdJ,QAAQ,EAAE,UAAU;EACpBiB,KAAK,EAAE,aAAa;EAEpB,IAAIF,2BAA2B,IAC5B;IACCG,gBAAgB,EAAEpB,mBAAmB,CAACqB,eAAe;IACrDC,gBAAgB,EACdtB,mBAAmB,CAACuB,eAA4C;IAClEC,gBAAgB,EAAExB,mBAAmB,CAACyB;EACxC,CAAmB,CAAC;EAEtB,UAAU,EAAE;IACVT,eAAe,EAAEhB,mBAAmB,CAAC0B,aAAa;IAClDC,OAAO,EAAE,IAAI;IACbrB,MAAM,EAAE,MAAM;IACdM,OAAO,EAAE,CAAC;IACVV,QAAQ,EAAE,UAAU;IACpB0B,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE,CAAC;IACNC,SAAS,EAAE,eAAe;IAC1BvB,UAAU,EAAE,WAAWP,mBAAmB,CAACQ,sBAAsB,eAAeR,mBAAmB,CAACQ,sBAAsB,EAAE;IAC5HW,KAAK,EAAEnB,mBAAmB,CAAC+B,QAAQ;IACnCC,MAAM,EAAEC;EACV,CAAC;EAED,8FAA8F,EAC5F;IACE,IAAIhC,kBAAkB,IACnB;MACC,UAAU,EAAE;QACVW,OAAO,EAAE,CAAC;QACVkB,SAAS,EAAE;MACb,CAAkB;MAElB,8BAA8B,EAAE;QAC9BA,SAAS,EAAE,2BAA2B9B,mBAAmB,CAACkC,QAAQ;MACpE;IACF,CAAmB;EACvB,CAAC;EAEH,8BAA8B,EAAE;IAC9BhC,QAAQ,EAAE,UAAU;IACpB2B,GAAG,EAAEM,gEAAwC;IAC7CP,KAAK,EAAE,CAAC;IACRrB,UAAU,EAAE,aAAaP,mBAAmB,CAACQ,sBAAsB,EAAE;IACrEsB,SAAS,EAAE;EACb;AACF,CAAC,CACH,CAAC;AAED,MAAMM,4BAA4B,GAAG,IAAAvC,eAAM,EAAC,KAAK,EAAE;EACjDC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,aAAa,IACtBA,IAAI,KAAK,oBAAoB,IAC7BA,IAAI,KAAK;AACb,CAAC,CAAC,CAIC,CAAC;EAAEsC,WAAW;EAAEC,kBAAkB;EAAEtC;AAAoB,CAAC,MAAM;EAChEuC,UAAU,EAAE,CAAC;EAEb,IAAID,kBAAkB,IACnB;IACCE,iBAAiB,EAAExC,mBAAmB,CAACqB,eAAe;IACtDoB,iBAAiB,EAAEzC,mBAAmB,CAACuB,eAAe;IACtDmB,iBAAiB,EAAE1C,mBAAmB,CAACyB,aAAa;IAEpD,IAAIY,WAAW,IACZ;MACCK,iBAAiB,EAAEL,WAAW,CAACM,MAAM,CAAC,IAAI;IAC5C,CAAmB;EACvB,CAAmB;AACvB,CAAC,CAAC,CAAC;AAEH,MAAMC,0BAA0B,GAAG,IAAA/C,eAAM,EAAC,IAAI,CAAC,CAAC,OAAO;EACrDgD,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,MAAM;EACjBC,aAAa,EAAE,MAAM;EACrBC,MAAM,EAAE;AACV,CAAC,CAAC,CAAC;AAEH,MAAMC,gCAAgC,GAAG,IAAApD,eAAM,EAAC,KAAK,EAAE;EACrDC,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAwC,CAAC;EAAEC;AAAoB,CAAC,MAAM;EACtEG,OAAO,EAAE,aAAa;EACtBW,gBAAgB,EAAE,iBAAiB;EACnCoC,SAAS,EAAE,MAAM;EACjBC,aAAa,EAAEnD,mBAAmB,CAAC+B;AACrC,CAAC,CAAC,CAAC;AAEH,MAAMqB,4BAA4B,GAAG,IAAAvD,eAAM,EAAC,IAAI,EAAE;EAChDC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CACA,CAAC;EACCsD,iBAAiB;EACjBrD;AAIF,CAAC,MAAM;EACLsD,YAAY,EAAEtD,mBAAmB,CAACuD,QAAQ;EAC1CJ,aAAa,EAAEnD,mBAAmB,CAACwD,QAAQ;EAC3CC,WAAW,EAAE,GAAGzD,mBAAmB,CAACkC,QAAQ,EAAE;EAC9CwB,KAAK,EAAEL,iBAAiB,IAAIrD,mBAAmB,CAAC2D;AAClD,CAAC,CACH,CAAC;AAED,MAAMC,mBAAmB,GAAG,IAAA/D,eAAM,EAAC,KAAK,EAAE;EACxCC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CACA,CAAC;EACCC,mBAAmB;EACnB6D;AAIF,CAAC,MAAM;EACLtB,UAAU,EAAE,CAAC;EACbM,OAAO,EAAE7C,mBAAmB,CAACwD,QAAQ;EACrCxC,eAAe,EAAEhB,mBAAmB,CAACkB,eAAe;EAEpD,IAAI2C,sBAAsB,IACvB;IACC7C,eAAe,EAAE6C;EACnB,CAAmB;AACvB,CAAC,CACH,CAAC;AAED,MAAMC,6BAA6B,GAAG,IAAAjE,eAAM,EAAC+D,mBAAmB,EAAE;EAChE9D,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAC9BA,IAAI,KAAK,qBAAqB,IAC9BA,IAAI,KAAK;AACb,CAAC,CAAC,CACA,CAAC;EACCgE,mBAAmB;EACnB/D,mBAAmB;EACnB6D;AAKF,CAAC,MAAM;EACLG,kBAAkB,EAAE,YAAY;EAChCC,kBAAkB,EAAEjE,mBAAmB,CAACQ,sBAAsB;EAC9D0D,gBAAgB,EAAElE,mBAAmB,CAACU,oBAAoB;EAC1DsB,MAAM,EAAEmC,6CAAqB;EAG7B,IAAIJ,mBAAmB,IACpB;IACCK,SAAS,EAAE;EACb,CAAmB,CAAC;EAEtB,IAAIP,sBAAsB,IACvB;IACC7C,eAAe,EAAE6C;EACnB,CAAmB;AACvB,CAAC,CACH,CAAC;AAED,MAAMQ,iCAAiC,GAAG,IAAAxE,eAAM,EAAC,KAAK,EAAE;EACtDC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CAGC,CAAC;EAAEC,mBAAmB;EAAEsE;AAAsB,CAAC,MAAM;EACtDnE,OAAO,EAAE,MAAM;EACfoE,QAAQ,EAAE,MAAM;EAChBC,UAAU,EAAE,QAAQ;EACpBC,QAAQ,EAAEzE,mBAAmB,CAAC0E,sBAAsB;EAEpD,SAAS,EAAE;IACThB,KAAK,EAAE1D,mBAAmB,CAAC2D,aAAa;IACxCpD,UAAU,EAAE,SAASP,mBAAmB,CAACQ,sBAAsB,EAAE;IAEjE,WAAW,EAAE;MACXkD,KAAK,EAAE1D,mBAAmB,CAAC2D,aAAa;MAExC,IAAIW,qBAAqB,EAAEK,SAAS,IACjC;QACCjB,KAAK,EAAEY,qBAAqB,EAAEK;MAChC,CAAmB;IACvB,CAAC;IAED,SAAS,EAAE;MACTC,cAAc,EAAE,MAAM;MACtBlB,KAAK,EAAE1D,mBAAmB,CAAC6E,aAAa;MAExC,IAAIP,qBAAqB,EAAEK,SAAS,IACjC;QACCjB,KAAK,EAAEY,qBAAqB,EAAEK;MAChC,CAAmB;IACvB,CAAC;IAED,IAAIL,qBAAqB,EAAEK,SAAS,IACjC;MACCjB,KAAK,EAAEY,qBAAqB,EAAEK;IAChC,CAAmB;EACvB;AACF,CAAC,CAAC,CAAC;AAEH,MAAMG,0BAA0B,GAAG,IAAAjF,eAAM,EAAC,KAAK,EAAE;EAC/CC,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAwC,CAAC;EAAEC;AAAoB,CAAC,MAAM;EACtEwE,UAAU,EAAE,QAAQ;EACpBrE,OAAO,EAAE,MAAM;EACf4E,GAAG,EAAE/E,mBAAmB,CAAC+B,QAAQ;EACjCuB,YAAY,EAAEtD,mBAAmB,CAAC+B,QAAQ;EAC1CoB,aAAa,EAAEnD,mBAAmB,CAACwD;AACrC,CAAC,CAAC,CAAC;AAEH,MAAMwB,uBAAuB,GAAIC,mBAAgC,IAC/DA,mBAAmB,CAACC,YAAY,GAAGD,mBAAmB,CAACE,YAAY;AAErE,MAAMC,WAAW,GAAGA,CAAA,KAAM;EACxB,MAAMpF,mBAAiC,GAAG,IAAAqF,kDAAsB,EAAC,CAAC;EAClE,OACE,IAAA7F,WAAA,CAAA8F,IAAA,EAACR,0BAA0B;IAAC9E,mBAAmB,EAAEA,mBAAoB;IAAAuF,QAAA,GACnE,IAAA/F,WAAA,CAAAgG,GAAA,EAAAC,UAAA,CAAA9F,OAAA;MACE+F,OAAO,EAAC,UAAU;MAClBvE,KAAK,EAAEnB,mBAAmB,CAACwD,QAAS;MACpClD,MAAM,EAAEN,mBAAmB,CAACwD;IAAS,CACtC,CAAC,EACF,IAAAhE,WAAA,CAAAgG,GAAA,EAAAC,UAAA,CAAA9F,OAAA;MAAU+F,OAAO,EAAC,SAAS;MAACvE,KAAK,EAAC;IAAM,CAAE,CAAC;EAAA,CACjB,CAAC;AAEjC,CAAC;AAED,MAAMwE,OAAO,GAAGA,CAAC;EACfC,OAAO;EACPC,eAAe;EACfC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,WAAW,GAAG,KAAK;EACnBC,SAAS;EACTC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC,UAAU;EACVC,QAAQ;EACRC,MAAM;EACNC;AACY,CAAC,KAAK;EAClB,MAAM,CAACxG,kBAAkB,EAAEyG,qBAAqB,CAAC,GAAG,IAAAC,eAAQ,EAACV,WAAW,CAAC;EACzE,MAAM,CAAC3D,kBAAkB,EAAEsE,qBAAqB,CAAC,GAAG,IAAAD,eAAQ,EAAC,KAAK,CAAC;EACnE,MAAM,CAAC5C,mBAAmB,EAAE8C,sBAAsB,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EACrE,MAAM,CAACG,gBAAgB,EAAEC,sBAAsB,CAAC,GAAG,IAAAJ,eAAQ,EAACF,YAAY,CAAC;EAEzE,MAAMO,cAAc,GAAG,IAAAC,kCAAiB,EAAC,CAAC;EAC1C,MAAMjH,mBAAiC,GAAG,IAAAqF,kDAAsB,EAAC,CAAC;EAClE,MAAM;IAAE6B;EAAE,CAAC,GAAG,IAAAC,4BAAc,EAAC,CAAC;EAE9B,MAAMC,oBAAoB,GAAG,IAAAC,aAAM,EAAmB,IAAI,CAAC;EAC3D,MAAMC,iBAAiB,GAAG,IAAAD,aAAM,EAAwB,IAAI,CAAC;EAC7D,MAAME,uBAAuB,GAAG,IAAAF,aAAM,EAA8B,IAAI,CAAC;EAEzE,MAAMG,YAAY,GAAG,IAAAC,cAAO,EAAC,MAAM,IAAAjI,WAAA,CAAAgG,GAAA,WAAM,CAAC,EAAE,EAAE,CAAC;EAK/C,IAAAkC,gBAAS,EAAC,MAAMX,sBAAsB,CAACN,YAAY,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAGrE,IAAAiB,gBAAS,EAAC,MAAMhB,qBAAqB,CAACT,WAAW,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAElE,IAAAyB,gBAAS,EAAC,MAAM;IAEd,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;MACtC,IACEP,oBAAoB,CAACQ,OAAO,IAC5BR,oBAAoB,CAACQ,OAAO,CAACC,aAAa,EAC1C;QACAhB,sBAAsB,CACpB7B,uBAAuB,CAACoC,oBAAoB,CAACQ,OAAO,CAACC,aAAa,CACpE,CAAC;MACH;IACF,CAAC;IAID,IAAIC,2BAAqE;IACzE,IAAI,CAACR,iBAAiB,CAACM,OAAO,EAAE;MAC9BN,iBAAiB,CAACM,OAAO,GAAG,IAAIG,cAAc,CAAC,MAAM;QACnDC,oBAAoB,CAACF,2BAA2B,CAAC;QACjDA,2BAA2B,GAAGG,qBAAqB,CACjDN,yBACF,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,IAAIL,iBAAiB,CAACM,OAAO,IAAIR,oBAAoB,CAACQ,OAAO,EAAE;MAE7DN,iBAAiB,CAACM,OAAO,CAACM,OAAO,CAACd,oBAAoB,CAACQ,OAAO,CAAC;MAC/D,IAAIR,oBAAoB,CAACQ,OAAO,CAACC,aAAa,EAAE;QAE9CP,iBAAiB,CAACM,OAAO,CAACM,OAAO,CAC/Bd,oBAAoB,CAACQ,OAAO,CAACC,aAC/B,CAAC;MACH;IACF;IAGAF,yBAAyB,CAAC,CAAC;IAI3B,IAAI,CAACJ,uBAAuB,CAACK,OAAO,IAAIR,oBAAoB,CAACQ,OAAO,EAAE;MACpEL,uBAAuB,CAACK,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;QACxBzB,qBAAqB,CAAC,CAACyB,cAAc,CAAC;MACxC,CAAC,EACD;QACEO,IAAI,EAAExB,oBAAoB,CAACQ,OAAO,CAACC,aAAa;QAChDgB,SAAS,EAAE;MACb,CACF,CAAC;IACH;IAEA,IAAItB,uBAAuB,CAACK,OAAO,IAAIR,oBAAoB,CAACQ,OAAO,EAAE;MACnE,MAAMkB,SAAS,GAAG1B,oBAAoB,CAACQ,OAAO;MAC9C,MAAM,CAACmB,SAAS,CAAC,GAAGC,KAAK,CAACC,IAAI,CAACH,SAAS,EAAEvD,QAAQ,IAAI,EAAE,CAAC;MAEzD,IAAIwD,SAAS,EAAE;QACbxB,uBAAuB,CAACK,OAAO,CAACM,OAAO,CAACa,SAAS,CAAC;MACpD;IACF;IAGA,OAAO,MAAM;MACX,IAAIzB,iBAAiB,CAACM,OAAO,EAAE;QAC7BN,iBAAiB,CAACM,OAAO,CAACsB,UAAU,CAAC,CAAC;QACtC5B,iBAAiB,CAACM,OAAO,GAAG,IAAI;MAClC;MACA,IAAIL,uBAAuB,CAACK,OAAO,EAAE;QACnCL,uBAAuB,CAACK,OAAO,CAACsB,UAAU,CAAC,CAAC;QAC5C3B,uBAAuB,CAACK,OAAO,GAAG,IAAI;MACxC;MACAI,oBAAoB,CAACF,2BAA2B,CAAC;IACnD,CAAC;EACH,CAAC,EAAE,CAAChB,gBAAgB,CAAC,CAAC;EAEtB,MAAMqC,iBAAiB,GAAG,IAAA9B,aAAM,EAAgB,IAAI,CAAC;EAMrD,MAAM+B,gCAAgC,GAAG,IAAA3B,cAAO,EAAC,MAAM;IACrD,MAAM4B,cAAc,GAAGvC,gBAAgB,CAACwC,OAAO,CAAEC,WAAW,IAC1DA,WAAW,CAACC,cAAc,GACtB,CAACD,WAAW,EAAE,GAAGA,WAAW,CAACC,cAAc,CAAC,GAC5CD,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,CAAC9C,gBAAgB,CAAC,CAAC;EAMtB,IAAAY,gBAAS,EAAC,MAAM;IACd,IAAI0B,gCAAgC,IAAID,iBAAiB,CAACvB,OAAO,EAAE;MACjEuB,iBAAiB,CAACvB,OAAO,CAACiC,cAAc,CAAC,CAAC;IAC5C;EACF,CAAC,EAAE,CAACT,gCAAgC,CAAC,CAAC;EAOtC,MAAMU,qCAAqC,GAAG,IAAAC,kBAAW,EACtDC,MAAc,IACbA,MAAM,KAAKZ,gCAAgC,GACvCD,iBAAiB,GACjBc,SAAS,EACf,CAACb,gCAAgC,CACnC,CAAC;EAED,MAAMc,+BAA+B,GAAG,IAAAzC,cAAO,EAC7C,OAAO;IAAEvB,SAAS;IAAEiE,KAAK,EAAE;EAAE,CAAC,CAAC,EAC/B,CAACjE,SAAS,CACZ,CAAC;EAED,MAAMkE,eAAe,GAAG,IAAAL,kBAAW,EAChCM,cAAsB,IAAK;IAC1B,MAAMC,mBAAmB,GAAGxD,gBAAgB,CAACyD,GAAG,CAAEC,IAAI,IAAK;MACzD,IAAIA,IAAI,CAACZ,EAAE,KAAKS,cAAc,EAAE;QAC9BG,IAAI,CAACb,UAAU,GAAG,IAAI;MACxB,CAAC,MAAM,IAAIa,IAAI,CAACb,UAAU,EAAE;QAC1B,OAAOa,IAAI,CAACb,UAAU;MACxB;MAEA,OAAOa,IAAI,CAAChB,cAAc,GACtB;QACE,GAAGgB,IAAI;QACPhB,cAAc,EAAEgB,IAAI,CAAChB,cAAc,CAACe,GAAG,CAAEE,SAAS,IAAK;UACrD,IAAIA,SAAS,CAACb,EAAE,KAAKS,cAAc,EAAE;YACnCI,SAAS,CAACd,UAAU,GAAG,IAAI;UAC7B,CAAC,MAAM,IAAIc,SAAS,CAACd,UAAU,EAAE;YAC/B,OAAOc,SAAS,CAACd,UAAU;UAC7B;UACA,OAAOc,SAAS;QAClB,CAAC;MACH,CAAC,GACDD,IAAI;IACV,CAAC,CAAC;IACFzD,sBAAsB,CAACuD,mBAAmB,CAAC;IAE3C,IAAIrE,WAAW,IAAIG,WAAW,EAAE;MAC9BY,cAAc,EAAE0D,gBAAgB,CAAC,CAAC;IACpC;EACF,CAAC,EACD,CAACzE,WAAW,EAAEG,WAAW,EAAEU,gBAAgB,EAAEE,cAAc,CAC7D,CAAC;EAED,MAAM2D,qBAAqB,GAAG,IAAAlD,cAAO,EAAC,MAAM;IAC1C,OAAOX,gBAAgB,EAAEyD,GAAG,CAAEC,IAAI,KAAM;MACtC,GAAGA,IAAI;MACPI,aAAa,EAAEJ,IAAI,CAAChB,cAAc,EAAEe,GAAG,CAAEM,UAAU,IAAK;QACtD,OAAO;UACLjB,EAAE,EAAEiB,UAAU,CAACjB,EAAE;UACjBD,UAAU,EAAEkB,UAAU,CAAClB,UAAU;UACjCmB,UAAU,EAAED,UAAU,CAACC,UAAU;UACjCC,UAAU,EAAEF,UAAU,CAACE,UAAU;UACjCC,OAAO,EACL,IAAAxL,WAAA,CAAAgG,GAAA,EAACtG,0BAAA,CAAA+L,yBAAyB,CAACC,QAAQ;YACjCC,KAAK,EAAE;cACL,GAAGjB,+BAA+B;cAClCC,KAAK,EAAE,CAAC;cACRY,UAAU,EAAEP,IAAI,CAACO;YACnB,CAAE;YAAAxF,QAAA,EAGF,IAAA/F,WAAA,CAAAgG,GAAA,EAACxG,mBAAA,CAAAoM,kBAAkB;cAAA,GACbP,UAAU;cACdQ,SAAS,EAAEvB,qCAAqC,CAACe,UAAU,CAACjB,EAAE,CAAE;cAChE0B,cAAc,EAAElB,eAAgB;cAChCmB,SAAS,EAAEV,UAAU,CAACU;YAAU,CACjC;UAAC,GAPGV,UAAU,CAACjB,EAQkB;QAExC,CAAC;MACH,CAAC;IACH,CAAC,CAAC,CAAC;EACL,CAAC,EAAE,CACDE,qCAAqC,EACrChD,gBAAgB,EAChBoD,+BAA+B,EAC/BE,eAAe,CAChB,CAAC;EAEF,MAAMoB,yBAAyB,GAAG,IAAAzB,kBAAW,EAAC,MAAM;IAClDrD,qBAAqB,CAAEzG,kBAAkB,IAAK;MAC5C,IAAIA,kBAAkB,EAAE;QACtBsG,QAAQ,GAAG,CAAC;MACd,CAAC,MAAM;QACLD,UAAU,GAAG,CAAC;MAChB;MAEA,OAAO,CAACrG,kBAAkB;IAC5B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACsG,QAAQ,EAAED,UAAU,CAAC,CAAC;EAE1B,MAAMmF,uBAAuB,GAAG,IAAA1B,kBAAW,EAGxC2B,KAAK,IAAK;IACT,IAAIA,KAAK,EAAEC,GAAG,KAAK,OAAO,IAAID,KAAK,EAAEE,IAAI,KAAK,OAAO,EAAE;MACrDF,KAAK,CAACG,cAAc,CAAC,CAAC;MACtBL,yBAAyB,CAAC,CAAC;IAC7B;EACF,CAAC,EACD,CAACA,yBAAyB,CAC5B,CAAC;EAED,IAAA9D,gBAAS,EAAC,MAAM;IACd,IAAIzB,WAAW,EAAE;MACf,MAAM6F,WAAW,GAAG9E,cAAc,EAAE+E,2BAA2B,CAAC,MAAM;QACpEzF,UAAU,GAAG,CAAC;QACdI,qBAAqB,CAAC,IAAI,CAAC;MAC7B,CAAC,CAAC;MAEF,OAAO,MAAM;QACXoF,WAAW,GAAG,CAAC;MACjB,CAAC;IACH;IAEA,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,CAAC7F,WAAW,EAAEK,UAAU,EAAEU,cAAc,CAAC,CAAC;EAE7C,MAAMgF,cAAc,GAAG,IAAAjC,kBAAW,EAChC,CACEkC,QAAgB,EAChBC,QAA0B,EAC1BC,WAAmB,EACnBC,SAAiB,KACd;IACH,MAAMC,kBAAkB,GAAGvF,gBAAgB,CAACyD,GAAG,CAAEC,IAAI,IACnDA,IAAI,CAACZ,EAAE,KAAKqC,QAAQ,IAAIzB,IAAI,CAAChB,cAAc,GACvC;MACE,GAAGgB,IAAI;MACPhB,cAAc,EAAE,IAAA8C,mBAAS,EACvB9B,IAAI,CAAChB,cAAc,EACnB2C,WAAW,EACXC,SACF;IACF,CAAC,GACD5B,IACN,CAAC;IACDzD,sBAAsB,CAACsF,kBAAkB,CAAC;IAC1C7F,MAAM,GAAG6F,kBAAkB,EAAEJ,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,CAAC;EAC1E,CAAC,EACD,CAAC5F,MAAM,EAAEM,gBAAgB,CAC3B,CAAC;EAED,OACE,IAAAtH,WAAA,CAAA8F,IAAA,EAACvE,sBAAsB;IACrB,cAAYmG,CAAC,CAAC,kBAAkB,CAAE;IAClClG,eAAe,EAAEgG,cAAc,EAAEnD,sBAAuB;IACxD+F,EAAE,EAAC,qBAAqB;IACxB3I,2BAA2B,EACzB+F,cAAc,EAAEuF,kBAAkB,KAClCvM,mBAAmB,CAACkB,eACrB;IACDjB,kBAAkB,EAAEA,kBAAmB;IACvCD,mBAAmB,EAAEA,mBAAoB;IAAAuF,QAAA,GAExCS,aAAa,IACZ,IAAAxG,WAAA,CAAAgG,GAAA,EAACrG,oBAAA,CAAAqN,mBAAmB;MAClBC,YAAY,EAAC,qBAAqB;MAClCxM,kBAAkB,EAAEA,kBAAmB;MACvCyM,OAAO,EAAElB,yBAA0B;MACnCmB,SAAS,EAAElB;IAAwB,CACpC,CACF,EAED,IAAAjM,WAAA,CAAAgG,GAAA,EAAC1G,qBAAA,CAAA8N,oBAAoB;MAAArH,QAAA,EACnB,IAAA/F,WAAA,CAAAgG,GAAA,EAAC5F,wBAAwB;QACvB,WAAQ,oBAAoB;QAC5BK,kBAAkB,EAAEA,kBAAmB;QACvCD,mBAAmB,EAAEA,mBAAoB;QAAAuF,QAAA,EAEzC,IAAA/F,WAAA,CAAA8F,IAAA,EAACzE,gCAAgC;UAC/BZ,kBAAkB,EAAEA,kBAAmB;UACvCD,mBAAmB,EAAEA,mBAAoB;UAAAuF,QAAA,GAExCK,OAAO,IAAIO,SAAS,IAAIE,SAAS,GAChC,IAAA7G,WAAA,CAAAgG,GAAA,EAACpD,4BAA4B;YAC3BE,kBAAkB,EAAEA,kBAAmB;YACvCtC,mBAAmB,EAAEA,mBAAoB;YACzCqC,WAAW,EAAE2E,cAAc,EAAE1C,qBAAqB,EAAEK,SAAU;YAAAY,QAAA,EAE7DY,SAAS,IAAI,CAACP,OAAO,IAAI,CAACS,SAAS,GAClC,IAAA7G,WAAA,CAAAgG,GAAA,EAACzG,cAAA,CAAA8N,aAAa;cAAC1G,SAAS,EAAEA;YAAU,CAAE,CAAC,GAEvC,IAAA3G,WAAA,CAAAgG,GAAA,EAACzG,cAAA,CAAA8N,aAAa;cACZjH,OAAO,EAAEA,OAAQ;cACjBO,SAAS,EAAEA,SAAU;cACrBE,SAAS,EAAEA;YAAU,CACtB;UACF,CAC2B,CAAC,GAE/B,IAAA7G,WAAA,CAAAgG,GAAA,WAAM,CACP,EAED,IAAAhG,WAAA,CAAA8F,IAAA,EAACrC,gCAAgC;YAC/BjD,mBAAmB,EAAEA,mBAAoB;YACzC,WAAQ,mBAAmB;YAAAuF,QAAA,GAE3B,IAAA/F,WAAA,CAAAgG,GAAA,EAAC5C,0BAA0B;cACzBkK,IAAI,EAAC,MAAM;cACXC,GAAG,EAAE3F,oBAAqB;cAAA7B,QAAA,EAEzBY,SAAS,GACN6C,KAAK,CAAC,CAAC,CAAC,CACLgE,IAAI,CAAC,IAAI,CAAC,CACVzC,GAAG,CAAC,CAAC0C,CAAC,EAAEC,KAAK,KAAK,IAAA1N,WAAA,CAAAgG,GAAA,EAACJ,WAAW,MAAM8H,KAAQ,CAAC,CAAC,GACjDvC,qBAAqB,EAAEJ,GAAG,CAAEC,IAAI,IAAK;gBACnC,MAAM;kBACJZ,EAAE;kBACFuD,KAAK;kBACLC,eAAe;kBACfC,SAAS;kBACTzC,aAAa;kBACbG,UAAU;kBACVuC,iBAAiB;kBACjBxC,UAAU;kBACVyC;gBACF,CAAC,GAAG/C,IAAI;gBAER,IAAI4C,eAAe,EAAE;kBACnB,OACE,IAAA5N,WAAA,CAAAgG,GAAA,EAAC7G,mBAAA,CAAA6O,aAAa;oBAACC,QAAQ,EAAEjG,YAAa;oBAAAjC,QAAA,EACpC,IAAA/F,WAAA,CAAAgG,GAAA,EAACpC,4BAA4B;sBAC3BC,iBAAiB,EACf2D,cAAc,EAAE1C,qBAAqB,EAAEK,SACxC;sBACDiF,EAAE,EAAEA,EAAG;sBAEP5J,mBAAmB,EAAEA,mBAAoB;sBAAAuF,QAAA,EAEzC,IAAA/F,WAAA,CAAAgG,GAAA,EAACnG,WAAA,CAAAqO,QAAQ;wBAACC,SAAS,EAAC,IAAI;wBAAApI,QAAA,EAAE4H;sBAAK,CAAW;oBAAC,GAHtCvD,EAIuB;kBAAC,CAClB,CAAC;gBAEpB,CAAC,MAAM,IAAIgB,aAAa,EAAE;kBACxB,OACE,IAAApL,WAAA,CAAAgG,GAAA,EAAC7G,mBAAA,CAAA6O,aAAa;oBAACC,QAAQ,EAAEjG,YAAa;oBAAAjC,QAAA,EACpC,IAAA/F,WAAA,CAAAgG,GAAA,EAACxG,mBAAA,CAAA4O,qBAAqB;sBACpBhE,EAAE,EAAEA,EAAG;sBAEP5J,mBAAmB,EAAEA,mBAAoB;sBACzC6N,QAAQ,EAAE/C,UAAW;sBACrB,iBAAeA,UAAW;sBAAAvF,QAAA,EAE1B,IAAA/F,WAAA,CAAAgG,GAAA,EAAC5G,aAAA,CAAAkP,YAAY;wBACXX,KAAK,EAAEA,KAAM;wBACbjH,SAAS,EAAEA,SAAU;wBACrBoH,iBAAiB,EAAEA,iBAAkB;wBACrCC,UAAU,EAAEA,UAAW;wBACvBF,SAAS,EAAEA,SAAU;wBACrBvC,UAAU,EAAEA,UAAW;wBAAAvF,QAAA,EAEvB,IAAA/F,WAAA,CAAAgG,GAAA,EAAC5C,0BAA0B;0BAACkK,IAAI,EAAC,MAAM;0BAAAvH,QAAA,EACpCwF,UAAU,GACT,IAAAvL,WAAA,CAAAgG,GAAA,EAACpG,aAAA,CAAA2O,YAAY;4BACX9B,QAAQ,EAAEzB,IAAI,CAACZ,EAAG;4BAClBoE,KAAK,EAAEpD,aAAc;4BACrBqD,QAAQ,EAAEjC,cAAe;4BACzBkC,UAAU,EAAGC,YAAY,IACvB,IAAA3O,WAAA,CAAAgG,GAAA,EAACpG,aAAA,CAAA2O,YAAY,CAACK,IAAI;8BAChBxE,EAAE,EAAEuE,YAAY,CAACvE,EAAG;8BACpBkB,UAAU,EAAEqD,YAAY,CAACrD,UAAW;8BACpCnB,UAAU,EAAEwE,YAAY,CAACxE,UAAW;8BACpCoB,UAAU,EAAEoD,YAAY,CAACpD,UAAW;8BAAAxF,QAAA,EAEnC4I,YAAY,CAACnD;4BAAO,CACJ;0BACnB,CACH,CAAC,GAEFJ,aAAa,CAACL,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACQ,OAAO;wBACzC,CACyB;sBAAC,CACjB;oBAAC,GAlCVpB,EAmCgB;kBAAC,CACX,CAAC;gBAEpB,CAAC,MAAM;kBACL,OACE,IAAApK,WAAA,CAAAgG,GAAA,EAAC7G,mBAAA,CAAA6O,aAAa;oBAACC,QAAQ,EAAEjG,YAAa;oBAAAjC,QAAA,EACpC,IAAA/F,WAAA,CAAAgG,GAAA,EAACtG,0BAAA,CAAA+L,yBAAyB,CAACC,QAAQ;sBAEjCC,KAAK,EAAEjB,+BAAgC;sBAAA3E,QAAA,EAEvC,IAAA/G,MAAA,CAAA6P,aAAA,EAACrP,mBAAA,CAAAoM,kBAAkB;wBAAA,GACbZ,IAAI;wBACRmB,GAAG,EAAEnB,IAAI,CAACZ,EAAG;wBACb0B,cAAc,EAAElB,eAAgB;wBAChCiB,SAAS,EAAEvB,qCAAqC,CAC9CU,IAAI,CAACZ,EACP,CAAE;wBACFyD,SAAS,EAAE7C,IAAI,CAAC6C;sBAAU,CAC3B;oBAAC,GAXG7C,IAAI,CAACZ,EAYwB;kBAAC,CACxB,CAAC;gBAEpB;cACF,CAAC;YAAC,CACoB,CAAC,EAC5B,CAACzD,SAAS,IAAIL,WAAW,IAAI,CAACC,eAAe,IAC5C,IAAAvG,WAAA,CAAAgG,GAAA,EAAC5B,mBAAmB;cAClB5D,mBAAmB,EAAEA,mBAAoB;cACzC6D,sBAAsB,EACpBmD,cAAc,EAAEnD,sBACjB;cAAA0B,QAAA,EAED,IAAA/F,WAAA,CAAAgG,GAAA,EAACnB,iCAAiC;gBAChCrE,mBAAmB,EAAEA,mBAAoB;gBACzCsE,qBAAqB,EACnB0C,cAAc,EAAE1C,qBACjB;gBAAAiB,QAAA,EAED,IAAA/F,WAAA,CAAAgG,GAAA,EAACvG,qBAAA,CAAAqP,oBAAoB;kBAACxI,WAAW,EAAEA;gBAAY,CAAE;cAAC,CACjB;YAAC,CACjB,CACtB;UAAA,CAC+B,CAAC,EAClC,CAACK,SAAS,IAAI,CAACL,WAAW,IAAIC,eAAe,IAC5C,IAAAvG,WAAA,CAAAgG,GAAA,EAAC1B,6BAA6B;YAC5BC,mBAAmB,EAAEA,mBAAoB;YACzC/D,mBAAmB,EAAEA,mBAAoB;YACzC6D,sBAAsB,EAAEmD,cAAc,EAAEnD,sBAAuB;YAAA0B,QAAA,EAE9DM;UAAe,CACa,CAChC;QAAA,CAC+B;MAAC,CACX;IAAC,CACP,CAAC;EAAA,CACD,CAAC;AAE7B,CAAC;AAED,MAAM0I,eAAe,GAAAC,OAAA,CAAA7I,OAAA,GAAG,IAAA8I,WAAI,EAAC9I,OAAO,CAAC;AACrC4I,eAAe,CAACG,WAAW,GAAG,SAAS","ignoreList":[]}
@@ -10,8 +10,8 @@ var _react = require("react");
10
10
  var _OdysseyDesignTokensContext = require("../../OdysseyDesignTokensContext.cjs");
11
11
  var _SideNavLogo = require("./SideNavLogo.cjs");
12
12
  var _Typography = require("../../Typography.cjs");
13
- var _index = require("../TopNav/index.cjs");
14
13
  var _UiShellProvider = require("../../ui-shell/UiShellProvider.cjs");
14
+ var _uiShellSharedConstants = require("../uiShellSharedConstants.cjs");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
17
  /*!
@@ -30,20 +30,21 @@ const SideNavHeaderContainer = (0, _styled.default)("div")({
30
30
  position: "relative",
31
31
  display: "flex",
32
32
  flexDirection: "column",
33
- zIndex: 1
33
+ zIndex: _uiShellSharedConstants.UI_SHELL_BASE_Z_INDEX
34
34
  });
35
35
  const SideNavLogoContainer = (0, _styled.default)("div", {
36
- shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isSameBackgroundAsMain"
36
+ shouldForwardProp: prop => prop !== "headerBackgroundColor" && prop !== "isSameBackgroundAsMain" && prop !== "odysseyDesignTokens"
37
37
  })(({
38
+ headerBackgroundColor,
38
39
  isSameBackgroundAsMain,
39
40
  odysseyDesignTokens
40
41
  }) => ({
41
42
  display: "flex",
42
43
  alignItems: "center",
43
- height: _index.TOP_NAV_HEIGHT,
44
+ height: _uiShellSharedConstants.TOP_NAV_HEIGHT,
44
45
  paddingBlock: odysseyDesignTokens.Spacing4,
45
46
  paddingInline: odysseyDesignTokens.Spacing5,
46
- backgroundColor: isSameBackgroundAsMain ? "transparent" : odysseyDesignTokens.HueNeutralWhite,
47
+ backgroundColor: isSameBackgroundAsMain ? headerBackgroundColor : odysseyDesignTokens.HueNeutralWhite,
47
48
  "svg, img": {
48
49
  maxHeight: "100%",
49
50
  width: "auto",
@@ -78,7 +79,9 @@ const SideNavHeader = ({
78
79
  return (0, _jsxRuntime.jsxs)(SideNavHeaderContainer, {
79
80
  children: [(0, _jsxRuntime.jsx)(SideNavLogoContainer, {
80
81
  isSameBackgroundAsMain: logoProps?.isSameBackgroundAsMain,
82
+ headerBackgroundColor: uiShellContext?.sideNavBackgroundColor,
81
83
  odysseyDesignTokens: odysseyDesignTokens,
84
+ "data-se": "sidenav-header-logo-container",
82
85
  children: isLoading ? (0, _jsxRuntime.jsx)(_Skeleton2.default, {
83
86
  variant: "rounded",
84
87
  height: 24,