@okta/odyssey-react-mui 1.47.0 → 1.48.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 (727) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +21 -0
  3. package/dist/appswitcher/admin-app-default.svg +6 -0
  4. package/dist/appswitcher/admin-app-selected.svg +6 -0
  5. package/dist/appswitcher/aerial-default.svg +7 -0
  6. package/dist/appswitcher/aerial-selected.svg +7 -0
  7. package/dist/appswitcher/okta-dashboard-default.svg +7 -0
  8. package/dist/appswitcher/okta-dashboard-selected.svg +7 -0
  9. package/dist/appswitcher/privileged-access-default.svg +4 -0
  10. package/dist/appswitcher/privileged-access-selected.svg +4 -0
  11. package/dist/appswitcher/workflows-default.svg +5 -0
  12. package/dist/appswitcher/workflows-selected.svg +5 -0
  13. package/dist/assets/Accordion-MTHvu5cR.js +1 -0
  14. package/dist/assets/Accordion.stories-DniSJ38i.js +85 -0
  15. package/dist/assets/AccordionSummary-Byc6MkHu.js +1 -0
  16. package/dist/assets/AlertTitle-BDkgiA29.js +1 -0
  17. package/dist/assets/AppSwitcher-mUx_f1r6.js +21 -0
  18. package/dist/assets/AppSwitcher.stories-CENgxWSC.js +100 -0
  19. package/dist/assets/AppTile _labs_.stories-B5BjKm0o.js +136 -0
  20. package/dist/assets/ArrowDropDown-Dnrg-0Q8.js +1 -0
  21. package/dist/assets/ArrowRight-BquvVn3D.js +1 -0
  22. package/dist/assets/Autocomplete-Bh3XRXMy.js +1 -0
  23. package/dist/assets/Autocomplete-CknstIK_.js +1 -0
  24. package/dist/assets/Autocomplete.stories-DNDWoB5E.js +316 -0
  25. package/dist/assets/Badge-DFZYqSZN.js +11 -0
  26. package/dist/assets/Banner-25ZggH76.js +1 -0
  27. package/dist/assets/Banner.stories-Dz37neYC.js +74 -0
  28. package/dist/assets/BaseButton-Cd1oZPsh.js +11 -0
  29. package/dist/assets/BaseMenuButton-DCwowxQ6.js +1 -0
  30. package/dist/assets/Box-B-R2QRDU.js +1 -0
  31. package/dist/assets/Box-B6KmU4_J.js +1 -0
  32. package/dist/assets/Box-B92Cdrku.js +11 -0
  33. package/dist/assets/Box.stories-BCtoarqr.js +38 -0
  34. package/dist/assets/Breadcrumbs-BGJJeoxM.js +6 -0
  35. package/dist/assets/Breadcrumbs.stories-BTEZLo9U.js +79 -0
  36. package/dist/assets/Bug-Z3X3t5xp.js +1 -0
  37. package/dist/assets/Button-BvUGu5Sm.js +1 -0
  38. package/dist/{esm/DatePickers/index.js → assets/Button-DPUOjyZy.js} +2 -7
  39. package/dist/assets/Button.stories-CLRsJ0J2.js +271 -0
  40. package/dist/assets/ButtonBase-CrcIXP69.js +74 -0
  41. package/dist/assets/Calendar-DnwsjheN.js +1 -0
  42. package/dist/assets/Callout-qkeUDNKn.js +1 -0
  43. package/dist/assets/Callout.stories-DVWATUoj.js +105 -0
  44. package/dist/assets/Card-DL97TZJd.js +1 -0
  45. package/dist/assets/Card-DqLPNu4w.js +8 -0
  46. package/dist/assets/Card.stories-ROWJyBI0.js +56 -0
  47. package/dist/assets/CardActionArea-BaL2GhSM.js +1 -0
  48. package/dist/assets/CardActions-C1bW_Jqo.js +1 -0
  49. package/dist/assets/Checkbox-OauVZWc5.js +1 -0
  50. package/dist/assets/Checkbox-eGdyySzm.js +1 -0
  51. package/dist/assets/Checkbox.stories-DwmuFw2j.js +96 -0
  52. package/dist/assets/CheckboxGroup-BQ5GiUey.js +1 -0
  53. package/dist/assets/CheckboxGroup.stories-BbHNliqq.js +92 -0
  54. package/dist/assets/ChevronRight-BLkvXBUf.js +1 -0
  55. package/dist/assets/ChevronUp-Br-QC-XK.js +1 -0
  56. package/dist/assets/Chip-B9WkuA4b.js +1 -0
  57. package/dist/assets/CircularProgress-AX8KCiV6.js +28 -0
  58. package/dist/assets/CircularProgress-DxY3QwHW.js +1 -0
  59. package/dist/assets/CircularProgress.stories-a_Rse-5m.js +44 -0
  60. package/dist/assets/Clock-8HOQy_d4.js +1 -0
  61. package/dist/assets/Close-BjXKhBr_.js +1 -0
  62. package/dist/assets/Code Styling Guidelines-BkGO8zp-.js +14 -0
  63. package/dist/assets/Collapse-DtQCvyEw.js +1 -0
  64. package/dist/assets/Color-YHDXOIA2-CcoN0wsl.js +1 -0
  65. package/dist/assets/CssBaseline-CI1_OCUX.js +191 -0
  66. package/dist/assets/CssBaseline.stories-BSLs5ScZ.js +364 -0
  67. package/dist/assets/Custom Theming-WlDJkwzT.js +135 -0
  68. package/dist/assets/Custom Theming.stories-Kx3noLIn.js +95 -0
  69. package/dist/assets/DataFilters _labs_-BIYE5QJU.js +55 -0
  70. package/dist/assets/DataFilters _labs_.stories-BdV81MCI.js +31 -0
  71. package/dist/assets/DataFilters-KxLw7hL5.js +1 -0
  72. package/dist/assets/DataTable _labs_-D_W9CY5T.js +41 -0
  73. package/dist/assets/DataTable _labs_.stories-CTl54dDN.js +21 -0
  74. package/dist/assets/DataTable-BJQ8WkUd.js +21 -0
  75. package/dist/assets/DataTable-bZz790ci.js +404 -0
  76. package/dist/assets/DataTable.stories-9eBclyx2.js +438 -0
  77. package/dist/assets/DataView _labs_-AutzTAhE.js +332 -0
  78. package/dist/assets/DataView _labs_.stories-CO0XGhOV.js +438 -0
  79. package/dist/assets/DataView-CHGdxu-Z.js +91 -0
  80. package/dist/assets/DataView.stories-6cnSmpm3.js +954 -0
  81. package/dist/assets/DatePicker-BGoHW8Is.js +1 -0
  82. package/dist/assets/DatePicker-C6TIvuN7.js +11 -0
  83. package/dist/assets/DatePicker.stories-DldeVOlB.js +133 -0
  84. package/dist/assets/DateTimePicker-DKGE8593.js +1 -0
  85. package/dist/assets/DateTimePicker.stories-TBpe3AjQ.js +158 -0
  86. package/dist/assets/Design Tokens-BnlBB5OL.js +4 -0
  87. package/dist/assets/Dialog-BkOLgyLu.js +1 -0
  88. package/dist/assets/Dialog.stories-BQZpS-f5.js +201 -0
  89. package/dist/assets/DialogContent-B-pM1DP1.js +1 -0
  90. package/dist/assets/DialogTitle-DA2nrmUc.js +1 -0
  91. package/dist/assets/Divider-CAwVs6Y1.js +1 -0
  92. package/dist/assets/DocsRenderer-CFRXHY34-kO-n-5EB.js +2 -0
  93. package/dist/assets/Documentation-CBbHUjXC.js +1 -0
  94. package/dist/assets/Download-VHpUH0as.js +1 -0
  95. package/dist/assets/Drawer-C9M8pytV.js +33 -0
  96. package/dist/assets/Drawer.stories-DpNTQVxG.js +95 -0
  97. package/dist/assets/EmptyState-FpIKkMpd.js +11 -0
  98. package/dist/assets/EmptyState.stories-CkUF2dIR.js +11 -0
  99. package/dist/assets/ExampleButton.stories-CbAFs20l.js +320 -0
  100. package/dist/assets/Extending Translations-mp_vyXoH.js +145 -0
  101. package/dist/assets/ExternalLink-lox07hAR.js +1 -0
  102. package/dist/assets/Fade-CHnXmzFb.js +1 -0
  103. package/dist/assets/Field-BxkyNVQW.js +11 -0
  104. package/dist/assets/FieldHint-D5VttvwL.js +1 -0
  105. package/dist/assets/Fieldset-Dp9uCwiB.js +11 -0
  106. package/dist/assets/Fieldset.stories-Wa9hG8Z0.js +15 -0
  107. package/dist/assets/FileUploader.stories-CxYwF2DZ.js +58 -0
  108. package/dist/assets/Filter-BiREetkX.js +1 -0
  109. package/dist/assets/Folder-8esChg_E.js +1 -0
  110. package/dist/assets/Form Field Accessibility-BCFouYXt.js +18 -0
  111. package/dist/assets/Form-CJrxMkwr.js +11 -0
  112. package/dist/assets/Form.stories-Bc84FwlQ.js +69 -0
  113. package/dist/assets/FormControlLabel-CoGABX1G.js +1 -0
  114. package/dist/assets/FormGroup-D2d8E3Cw.js +1 -0
  115. package/dist/assets/FormHelperText-Ca69g4Je.js +1 -0
  116. package/dist/assets/FormLabel-EOlXQpGp.js +1 -0
  117. package/dist/assets/FullScreenOverlay-Bujsxbxh.js +11 -0
  118. package/dist/assets/Generating Icons-pN6RBs4J.js +16 -0
  119. package/dist/assets/Globe-BHk1B5d7.js +1 -0
  120. package/dist/assets/Grid-B7XSvQ_X.js +1 -0
  121. package/dist/assets/Group-DWmiPyzE.js +1 -0
  122. package/dist/assets/GroupPicker _labs_.stories-D0PDtKKA.js +33 -0
  123. package/dist/assets/Grow-6R6cTzr4.js +1 -0
  124. package/dist/assets/Hide-Bvhl5PVN.js +1 -0
  125. package/dist/assets/Hint-DTEjQAxl.js +11 -0
  126. package/dist/assets/Home-CUQc6tB8.js +1 -0
  127. package/dist/assets/Icon _icons_.stories-S2muaIBP.js +16 -0
  128. package/dist/assets/IconButton-Wwvz84xG.js +1 -0
  129. package/dist/assets/IconWithTooltip _icons_.stories-BiiIBhOv.js +19 -0
  130. package/dist/assets/InformationCircle-DYQV39lt.js +1 -0
  131. package/dist/assets/InputAdornment-Dj-8HF_1.js +1 -0
  132. package/dist/assets/InputBase-6reb9B7r.js +2 -0
  133. package/dist/assets/Installing odyssey-react-mui-DuIfuEaw.js +216 -0
  134. package/dist/assets/Introduction-BTH-MnwV.js +36 -0
  135. package/dist/assets/Layout-BndkhA1_.js +11 -0
  136. package/dist/assets/Layout.stories-BwMtW-cW.js +285 -0
  137. package/dist/assets/Legacy Migrations-BfDwGUg3.js +86 -0
  138. package/dist/assets/Link-BQo2zH0c.js +1 -0
  139. package/dist/assets/Link-C5sM1_ZF.js +11 -0
  140. package/dist/assets/Link-DcsndbPK.js +1 -0
  141. package/dist/assets/Link.stories-DiVQZsn1.js +43 -0
  142. package/dist/assets/List-CNCQEpRl.js +1 -0
  143. package/dist/assets/List-_p0jkXPM.js +1 -0
  144. package/dist/assets/ListItem-BLYwuKOG.js +1 -0
  145. package/dist/assets/ListSubheader-DO359rMr.js +1 -0
  146. package/dist/assets/Menu-CU_mHT7L.js +1 -0
  147. package/dist/assets/MenuButton-CGRa_Y2p.js +9 -0
  148. package/dist/assets/MenuButton-DvVmjwMC.js +11 -0
  149. package/dist/assets/MenuButton.stories-rLpv4nq1.js +246 -0
  150. package/dist/{esm/Pagination/index.js → assets/MenuContext-DKMyPMNY.js} +2 -7
  151. package/dist/assets/MenuItem-DoUaLmgU.js +1 -0
  152. package/dist/assets/MenuItem-oi_JaUho.js +1 -0
  153. package/dist/assets/MenuItem.stories-Ba6BR5kj.js +29 -0
  154. package/dist/assets/MenuList-0OHGr5AC.js +1 -0
  155. package/dist/assets/Modal-B12sS2Yh.js +1 -0
  156. package/dist/assets/More-BgQrTkKM.js +1 -0
  157. package/dist/{types/Pagination/index.d.ts → assets/MuiPropsContext-DhRylJZk.js} +2 -6
  158. package/dist/assets/NativeSelect.stories-CYtg4GGs.js +173 -0
  159. package/dist/assets/OdysseyProvider-BPLFYiwr.js +66 -0
  160. package/dist/assets/OdysseyStorybookThemeDecorator-CGH8visK.js +1 -0
  161. package/dist/assets/OdysseyThemeProvider-BykOaJq8.js +189 -0
  162. package/dist/assets/PageHeader.stories-Cg0XA0p_.js +57 -0
  163. package/dist/assets/PageHeader.stories-DHDJTskZ.js +329 -0
  164. package/dist/assets/PageTemplate _labs_-Bi3xwFV2.js +8 -0
  165. package/dist/assets/PageTemplate _labs_.stories-DdUcW43S.js +306 -0
  166. package/dist/assets/PageTemplate-mjLVQesI.js +21 -0
  167. package/dist/assets/PageTemplate.stories-BD8Hafdu.js +197 -0
  168. package/dist/assets/PaginatedTable _labs_.stories-Lt6yWTDo.js +65 -0
  169. package/dist/assets/Pagination-BTycGMV-.js +11 -0
  170. package/dist/assets/Pagination.stories-rN3x32X9.js +17 -0
  171. package/dist/assets/Paper-DwBg74qy.js +1 -0
  172. package/dist/assets/PasswordField.stories-BdnDY-tl.js +129 -0
  173. package/dist/assets/Picker _labs_.stories-D3FvB-m5.js +18 -0
  174. package/dist/assets/PickerWithOptionAdornment _labs_.stories-BxW5XACd.js +70 -0
  175. package/dist/assets/PlaceholderLogo-JfVvgA23.js +11 -0
  176. package/dist/assets/Popper-CSwIGEpk.js +1 -0
  177. package/dist/assets/Portal-CsPQSHsR.js +1 -0
  178. package/dist/assets/Radio-7iHx2pBU.js +1 -0
  179. package/dist/assets/Radio-AD-L5UNl.js +1 -0
  180. package/dist/assets/Radio.stories-eZmvoamt.js +63 -0
  181. package/dist/assets/RadioGroup-C_zn6OtS.js +1 -0
  182. package/dist/assets/RadioGroup-Mx_cTqVX.js +1 -0
  183. package/dist/assets/RadioGroup-yPcOJn0w.js +10 -0
  184. package/dist/assets/RadioGroup.stories-CackbN0d.js +138 -0
  185. package/dist/assets/Refresh-CgZVXlSy.js +1 -0
  186. package/dist/assets/ResourceAccessPolicyComponentsStorybookThemeDecorator-Xen2vDro.js +212 -0
  187. package/dist/assets/Right-to-Left (RTL)-CALRs8aM.js +62 -0
  188. package/dist/assets/ScreenReaderText-D9dVDvYs.js +15 -0
  189. package/dist/assets/ScreenReaderText-DbrZU7M5.js +1 -0
  190. package/dist/assets/ScreenReaderText.stories-CuVJmeWD.js +8 -0
  191. package/dist/assets/Search-BSlcf4bB.js +1 -0
  192. package/dist/assets/SearchDropdown _labs_.stories-CQype98o.js +53 -0
  193. package/dist/assets/SearchField-glDE5e-X.js +1 -0
  194. package/dist/assets/SearchField.stories-B_myC5_S.js +37 -0
  195. package/dist/assets/Select-BWJ6-p1Z.js +15 -0
  196. package/dist/assets/Select-VvpDulqk.js +1 -0
  197. package/dist/assets/Select.stories-BXXrgt5o.js +293 -0
  198. package/dist/assets/Server-DS5iERo2.js +1 -0
  199. package/dist/assets/Settings-SRsJGOHl.js +1 -0
  200. package/dist/assets/Setup-Ri7IU42o.js +7 -0
  201. package/dist/assets/Shadow DOM-DK_1Epv_.js +64 -0
  202. package/dist/assets/Show-DXIrBgNq.js +1 -0
  203. package/dist/assets/SideNav-CUpwLG1e.js +85 -0
  204. package/dist/assets/SideNav-QMiST_j6.js +131 -0
  205. package/dist/assets/SideNav.stories-l5XPKDfB.js +207 -0
  206. package/dist/assets/Skeleton-DAUyPclv.js +51 -0
  207. package/dist/assets/Snackbar-DWLMI8Az.js +1 -0
  208. package/dist/assets/Stack-t9yXrJ7r.js +1 -0
  209. package/dist/assets/Stack.stories-zmhDXY_k.js +1 -0
  210. package/dist/assets/StaticTable _labs_.stories-DJCAtW2q.js +34 -0
  211. package/dist/assets/Status-CdgTiE4c.js +1 -0
  212. package/dist/assets/Status.stories-D5tSpO2F.js +66 -0
  213. package/dist/assets/Surface-BCTO1YR-.js +1 -0
  214. package/dist/assets/Switch.stories-r3bYAZpt.js +61 -0
  215. package/dist/assets/SwitchBase-CWdXZnig.js +1 -0
  216. package/dist/assets/Sync-CCP_JZB8.js +1 -0
  217. package/dist/assets/Tabs-DCV9oDtT.js +23 -0
  218. package/dist/assets/Tabs-Dxt5P3aJ.js +1 -0
  219. package/dist/assets/Tabs.stories-CmjPJB02.js +100 -0
  220. package/dist/assets/Tag-C_iW2sj3.js +11 -0
  221. package/dist/assets/Tag.stories-uilRDgPB.js +96 -0
  222. package/dist/assets/TagList-cWni94xt.js +1 -0
  223. package/dist/assets/TextField-BIepBlYn.js +1 -0
  224. package/dist/assets/TextField.stories-DkCMFN0S.js +149 -0
  225. package/dist/assets/Toast.stories-BgAm1BNQ.js +134 -0
  226. package/dist/assets/ToastManager.stories-DToM8bFE.js +196 -0
  227. package/dist/{types/DataTable/index.d.ts → assets/Tooltip-DQDBPKMu.js} +2 -6
  228. package/dist/assets/Tooltip-D_pBGtcj.js +1 -0
  229. package/dist/assets/Tooltip.stories-CgIybZDx.js +68 -0
  230. package/dist/assets/TopNav-Dwo-KfAw.js +11 -0
  231. package/dist/assets/TopNav.stories-z9mNMFB3.js +13 -0
  232. package/dist/assets/TransitionGroupContext-DAL84N7p.js +1 -0
  233. package/dist/assets/Typography-B7ktrxCD.js +1 -0
  234. package/dist/assets/Typography-CQfngSjD.js +1 -0
  235. package/dist/assets/Typography-CSpPZFTF.js +1 -0
  236. package/dist/assets/Typography-DBt3ajUl.js +9 -0
  237. package/dist/assets/Typography.stories-CitS-iTX.js +73 -0
  238. package/dist/assets/Typography.stories-dzT0O_H3.js +139 -0
  239. package/dist/assets/UiShell.stories-BV5mK0Oz.js +558 -0
  240. package/dist/assets/UiShellProvider-Bm9plvoZ.js +31 -0
  241. package/dist/assets/Upload-DH1T10x5.js +1 -0
  242. package/dist/assets/User-CvYTA860.js +1 -0
  243. package/dist/assets/UserProfile-DrnAMPM1.js +11 -0
  244. package/dist/assets/UserProfile.stories-C4EJFTV8.js +14 -0
  245. package/dist/assets/UserProfileMenuButton.stories-Dhe9t4Oh.js +30 -0
  246. package/dist/assets/Video-D8qbHdF4.js +1 -0
  247. package/dist/assets/WorkflowsComponentsStorybookThemeDecorator-DJR9iMBt.js +197 -0
  248. package/dist/assets/_commonjsHelpers-gnU0ypJ3.js +1 -0
  249. package/dist/assets/assertThisInitialized-B9jnkVVz.js +1 -0
  250. package/dist/assets/axe-4JP0vCEZ.js +30 -0
  251. package/dist/assets/axeRun-B-LchFqf.js +11 -0
  252. package/dist/assets/chunk-XP5HYGXS-BpfKkqn7.js +1 -0
  253. package/dist/assets/client-ByW5HbEz.js +1 -0
  254. package/dist/assets/colorManipulator-C6C6_xuT.js +1 -0
  255. package/dist/{types/labs/PageTemplate/index.d.ts → assets/constants-CGUp4oSR.js} +1 -4
  256. package/dist/{esm/DataTable/index.js → assets/constants-CyailK6t.js} +1 -5
  257. package/dist/assets/createChainedFunction-BO_9K8Jh.js +1 -0
  258. package/dist/assets/createStyled-B0CJenTX.js +1 -0
  259. package/dist/assets/createSvgIcon-Bv_3NNsK.js +1 -0
  260. package/dist/assets/createUniqueId-ByTaVY63.js +1 -0
  261. package/dist/assets/debounce-Be36O1Ab.js +1 -0
  262. package/dist/assets/dialogActionsClasses-d6kliu8x.js +1 -0
  263. package/dist/assets/emotion-react-jsx-runtime.browser.esm-Cn-06VTs.js +1 -0
  264. package/dist/assets/entry-preview-Bi6MTClg.js +2 -0
  265. package/dist/assets/entry-preview-docs-BKXv92OK.js +46 -0
  266. package/dist/assets/fieldComponentPropsMetaData-BqbNLw6V.js +11 -0
  267. package/dist/assets/getReactElementRef-Bs64nbeG.js +1 -0
  268. package/dist/assets/getScrollbarSize-Bqq2hMjQ.js +1 -0
  269. package/dist/assets/i18next-7SyOfhCu.js +1 -0
  270. package/dist/{esm/labs/OdysseyPickers/index.js → assets/iconUtils-C1HBA-0w.js} +2 -8
  271. package/dist/assets/iframe-C7GWUW76.js +211 -0
  272. package/dist/assets/index-6QUE-j0v.js +1 -0
  273. package/dist/assets/index-B-lxVbXh.js +1 -0
  274. package/dist/assets/index-B5xazMy1.js +1 -0
  275. package/dist/assets/index-BJMTVygn.js +240 -0
  276. package/dist/assets/index-BJTM6NaI.js +192 -0
  277. package/dist/assets/index-BeeV6X6A.js +1 -0
  278. package/dist/assets/index-CXQShRbs.js +8 -0
  279. package/dist/assets/index-DfE121Jj.js +384 -0
  280. package/dist/assets/index-DieBXP3Z.js +24 -0
  281. package/dist/assets/index-DkrUiDVY.js +1 -0
  282. package/dist/assets/index-DoKqiSdS.js +1 -0
  283. package/dist/assets/index-DrFu-skq.js +6 -0
  284. package/dist/assets/index-NdkWRN8K.js +9 -0
  285. package/dist/assets/index.esm-BliC9-aw.js +1 -0
  286. package/dist/assets/index.esm-XFhSJO0s.js +138 -0
  287. package/dist/assets/index.modern-CkASn_bb.js +14 -0
  288. package/dist/assets/inheritsLoose-DTTkq0Su.js +1 -0
  289. package/dist/assets/inputUtils-Dbi8XkA6.js +11 -0
  290. package/dist/assets/isHostComponent-DVu5iVWx.js +1 -0
  291. package/dist/assets/jsx-runtime-CnH95YSl.js +9 -0
  292. package/dist/assets/matchers-7Z3WT2CE-T3xScrR7.js +14 -0
  293. package/dist/assets/ownerDocument-DW-IO8s5.js +1 -0
  294. package/dist/assets/ownerWindow-HkKU3E4x.js +1 -0
  295. package/dist/assets/personData-BOnk54P3.js +11 -0
  296. package/dist/assets/personData-L8dJyb3X.js +1 -0
  297. package/dist/assets/pickerComponentPropsMetadata-CozVRRyR.js +21 -0
  298. package/dist/assets/popper-aiaZgC6t.js +1 -0
  299. package/dist/assets/preview-B8lJiyuQ.js +34 -0
  300. package/dist/assets/preview-BAx1BwgB.js +1 -0
  301. package/dist/assets/preview-BBWR9nbA.js +1 -0
  302. package/dist/assets/preview-BWzBA1C2.js +396 -0
  303. package/dist/assets/preview-BaoH-L4j.js +1 -0
  304. package/dist/assets/preview-CYp4EYYZ.js +1 -0
  305. package/dist/assets/preview-CvbIS5ZJ.js +1 -0
  306. package/dist/assets/preview-DGUiP6tS.js +7 -0
  307. package/dist/assets/preview-DHQbi4pV.js +1 -0
  308. package/dist/assets/preview-DXRUsonv.js +2 -0
  309. package/dist/assets/preview-MBifGIx_.js +1 -0
  310. package/dist/assets/preview-NdtsJkHc.js +2 -0
  311. package/dist/{types/theme/index.d.ts → assets/pxToRem-BrMhKUxS.js} +2 -4
  312. package/dist/assets/queryOdysseySelector-CwauhQve.js +187 -0
  313. package/dist/assets/react-18-u8niHpKc.js +1 -0
  314. package/dist/assets/renderUiShell.stories-Pp6_Iqzc.js +866 -0
  315. package/dist/assets/resolveComponentProps-TTQVZ4OZ.js +1 -0
  316. package/dist/assets/tableSortLabelClasses-C7INAE6Y.js +1 -0
  317. package/dist/assets/test-utils-H9lH7T5D.js +9 -0
  318. package/dist/{esm/labs/DatePickers/index.js → assets/uiShellSharedConstants-DD9UP82e.js} +2 -5
  319. package/dist/assets/useAutocomplete-CD_GwhMI.js +11 -0
  320. package/dist/assets/useControlled-NQulfz4l.js +1 -0
  321. package/dist/assets/useFormControl-BMISTZuX.js +1 -0
  322. package/dist/assets/useIsFocusVisible-DH0qxT5e.js +1 -0
  323. package/dist/assets/useMobilePicker-CRiGjvfW.js +6 -0
  324. package/dist/assets/useMountLifecycleEffect-CjsUCFhB.js +11 -0
  325. package/dist/assets/useOdysseyDateFields-D1TYF4ew.js +61 -0
  326. package/dist/assets/useScrollIndication-Dq_i6CX-.js +31 -0
  327. package/dist/assets/useSlot-VN2O4BOA.js +1 -0
  328. package/dist/assets/useThemeProps-BgDANuN6.js +1 -0
  329. package/dist/assets/useThemeProps-DJ3F4KkW.js +1 -0
  330. package/dist/{esm/FileUploader/index.js → assets/useUniqueId-Bsgqe1tm.js} +2 -5
  331. package/dist/assets/utilities.esm-DpQ0TZP_.js +5 -0
  332. package/dist/assets/utils-BdcLUgCD.js +1 -0
  333. package/dist/assets/utils-iop7lDec.js +1 -0
  334. package/dist/assets/v4-CtRu48qb.js +1 -0
  335. package/dist/assets/visuallyHidden-Dan1xhjv.js +1 -0
  336. package/dist/cjs/DataTable/DataTable.cjs +18 -16
  337. package/dist/cjs/DataTable/DataTable.cjs.map +1 -1
  338. package/dist/cjs/DataTable/DataTableRowActions.cjs +13 -12
  339. package/dist/cjs/DataTable/DataTableRowActions.cjs.map +1 -1
  340. package/dist/cjs/DataTable/DataTableSettings.cjs +9 -8
  341. package/dist/cjs/DataTable/DataTableSettings.cjs.map +1 -1
  342. package/dist/cjs/DatePickers/DateFieldActionBar.cjs +3 -3
  343. package/dist/cjs/DatePickers/DateFieldActionBar.cjs.map +1 -1
  344. package/dist/cjs/DatePickers/DatePicker.cjs +2 -2
  345. package/dist/cjs/DatePickers/DatePicker.cjs.map +1 -1
  346. package/dist/cjs/DatePickers/datePickerTheme.cjs +2 -2
  347. package/dist/cjs/DatePickers/datePickerTheme.cjs.map +1 -1
  348. package/dist/cjs/Dialog.cjs +4 -4
  349. package/dist/cjs/Dialog.cjs.map +1 -1
  350. package/dist/cjs/Drawer.cjs +29 -18
  351. package/dist/cjs/Drawer.cjs.map +1 -1
  352. package/dist/cjs/{Checkbox.cjs → Fields/Checkbox.cjs} +7 -16
  353. package/dist/cjs/Fields/Checkbox.cjs.map +1 -0
  354. package/dist/cjs/{CheckboxGroup.cjs → Fields/CheckboxGroup.cjs} +1 -1
  355. package/dist/cjs/Fields/CheckboxGroup.cjs.map +1 -0
  356. package/dist/cjs/Fields/Hint.cjs +31 -0
  357. package/dist/cjs/Fields/Hint.cjs.map +1 -0
  358. package/dist/cjs/{Radio.cjs → Fields/Radio.cjs} +5 -14
  359. package/dist/cjs/Fields/Radio.cjs.map +1 -0
  360. package/dist/cjs/{RadioGroup.cjs → Fields/RadioGroup.cjs} +2 -2
  361. package/dist/cjs/Fields/RadioGroup.cjs.map +1 -0
  362. package/dist/cjs/FileUploader/FileUploader.cjs +6 -6
  363. package/dist/cjs/FileUploader/FileUploader.cjs.map +1 -1
  364. package/dist/cjs/Form.cjs.map +1 -1
  365. package/dist/cjs/OdysseyThemeProvider.cjs +2 -2
  366. package/dist/cjs/OdysseyThemeProvider.cjs.map +1 -1
  367. package/dist/cjs/OdysseyThemeProviderPropsContext.cjs.map +1 -1
  368. package/dist/cjs/Pagination/Pagination.cjs +7 -7
  369. package/dist/cjs/Pagination/Pagination.cjs.map +1 -1
  370. package/dist/cjs/Toast.cjs +4 -4
  371. package/dist/cjs/Toast.cjs.map +1 -1
  372. package/dist/cjs/__internal.cjs +187 -0
  373. package/dist/cjs/__internal.cjs.map +1 -1
  374. package/dist/cjs/index.cjs +685 -613
  375. package/dist/cjs/index.cjs.map +1 -1
  376. package/dist/cjs/labs/AppTile.cjs +2 -2
  377. package/dist/cjs/labs/AppTile.cjs.map +1 -1
  378. package/dist/cjs/labs/DataFilters.cjs +16 -16
  379. package/dist/cjs/labs/DataFilters.cjs.map +1 -1
  380. package/dist/cjs/labs/DataTablePagination.cjs +7 -7
  381. package/dist/cjs/labs/DataTablePagination.cjs.map +1 -1
  382. package/dist/cjs/labs/DataView/BulkActionsMenu.cjs +7 -6
  383. package/dist/cjs/labs/DataView/BulkActionsMenu.cjs.map +1 -1
  384. package/dist/cjs/labs/DataView/DataView.cjs +8 -7
  385. package/dist/cjs/labs/DataView/DataView.cjs.map +1 -1
  386. package/dist/cjs/labs/DataView/LayoutSwitcher.cjs +4 -3
  387. package/dist/cjs/labs/DataView/LayoutSwitcher.cjs.map +1 -1
  388. package/dist/cjs/labs/DataView/RowActions.cjs +10 -10
  389. package/dist/cjs/labs/DataView/RowActions.cjs.map +1 -1
  390. package/dist/cjs/labs/DataView/TableLayoutContent.cjs +11 -10
  391. package/dist/cjs/labs/DataView/TableLayoutContent.cjs.map +1 -1
  392. package/dist/cjs/labs/DataView/TableSettings.cjs +9 -8
  393. package/dist/cjs/labs/DataView/TableSettings.cjs.map +1 -1
  394. package/dist/cjs/labs/DataView/componentTypes.cjs.map +1 -1
  395. package/dist/cjs/labs/DataView/useFilterConversion.cjs.map +1 -1
  396. package/dist/cjs/labs/DatePickers/DateTimePicker.cjs +7 -7
  397. package/dist/cjs/labs/DatePickers/DateTimePicker.cjs.map +1 -1
  398. package/dist/cjs/labs/DatePickers/dateTimePickerTheme.cjs +3 -3
  399. package/dist/cjs/labs/DatePickers/dateTimePickerTheme.cjs.map +1 -1
  400. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs +2 -2
  401. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
  402. package/dist/cjs/labs/index.cjs +156 -28
  403. package/dist/cjs/labs/index.cjs.map +1 -1
  404. package/dist/cjs/ui-shell/SideNav/NavAccordion.cjs +2 -0
  405. package/dist/cjs/ui-shell/SideNav/NavAccordion.cjs.map +1 -1
  406. package/dist/cjs/ui-shell/SideNav/SideNav.cjs +5 -3
  407. package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
  408. package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
  409. package/dist/cjs/ui-shell/WideUiShellContent.cjs +9 -9
  410. package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -1
  411. package/dist/cjs/ui-shell/index.cjs +24 -12
  412. package/dist/cjs/ui-shell/index.cjs.map +1 -1
  413. package/dist/cjs/ui-shell/renderUiShell.cjs +4 -2
  414. package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
  415. package/dist/cjs/web-component/createShadowDomElements.cjs +2 -2
  416. package/dist/cjs/web-component/createShadowDomElements.cjs.map +1 -1
  417. package/dist/cjs/web-component/{removeGlobalStylesFromShadowDom.cjs → encapsulateShadowDomFromGlobalStyles.cjs} +4 -4
  418. package/dist/cjs/web-component/encapsulateShadowDomFromGlobalStyles.cjs.map +1 -0
  419. package/dist/cjs/web-component/index.cjs +4 -4
  420. package/dist/cjs/web-component/index.cjs.map +1 -1
  421. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs +1 -1
  422. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs.map +1 -1
  423. package/dist/cjs/web-component/renderReactInWebComponent.cjs +12 -8
  424. package/dist/cjs/web-component/renderReactInWebComponent.cjs.map +1 -1
  425. package/dist/esm/DataTable/DataTable.js +4 -2
  426. package/dist/esm/DataTable/DataTable.js.map +1 -1
  427. package/dist/esm/DataTable/DataTableRowActions.js +2 -1
  428. package/dist/esm/DataTable/DataTableRowActions.js.map +1 -1
  429. package/dist/esm/DataTable/DataTableSettings.js +2 -1
  430. package/dist/esm/DataTable/DataTableSettings.js.map +1 -1
  431. package/dist/esm/DatePickers/DateFieldActionBar.js +1 -1
  432. package/dist/esm/DatePickers/DateFieldActionBar.js.map +1 -1
  433. package/dist/esm/DatePickers/DatePicker.js +1 -1
  434. package/dist/esm/DatePickers/DatePicker.js.map +1 -1
  435. package/dist/esm/DatePickers/datePickerTheme.js +1 -1
  436. package/dist/esm/DatePickers/datePickerTheme.js.map +1 -1
  437. package/dist/esm/Dialog.js +1 -1
  438. package/dist/esm/Dialog.js.map +1 -1
  439. package/dist/esm/Drawer.js +26 -15
  440. package/dist/esm/Drawer.js.map +1 -1
  441. package/dist/esm/{Checkbox.js → Fields/Checkbox.js} +6 -16
  442. package/dist/esm/Fields/Checkbox.js.map +1 -0
  443. package/dist/esm/{CheckboxGroup.js → Fields/CheckboxGroup.js} +1 -1
  444. package/dist/esm/Fields/CheckboxGroup.js.map +1 -0
  445. package/dist/esm/Fields/Hint.js +24 -0
  446. package/dist/esm/Fields/Hint.js.map +1 -0
  447. package/dist/esm/{Radio.js → Fields/Radio.js} +4 -14
  448. package/dist/esm/Fields/Radio.js.map +1 -0
  449. package/dist/esm/{RadioGroup.js → Fields/RadioGroup.js} +2 -2
  450. package/dist/esm/Fields/RadioGroup.js.map +1 -0
  451. package/dist/esm/FileUploader/FileUploader.js +2 -3
  452. package/dist/esm/FileUploader/FileUploader.js.map +1 -1
  453. package/dist/esm/Form.js.map +1 -1
  454. package/dist/esm/OdysseyThemeProvider.js +1 -1
  455. package/dist/esm/OdysseyThemeProvider.js.map +1 -1
  456. package/dist/esm/OdysseyThemeProviderPropsContext.js.map +1 -1
  457. package/dist/esm/Pagination/Pagination.js +1 -1
  458. package/dist/esm/Pagination/Pagination.js.map +1 -1
  459. package/dist/esm/Toast.js +1 -1
  460. package/dist/esm/Toast.js.map +1 -1
  461. package/dist/esm/__internal.js +17 -0
  462. package/dist/esm/__internal.js.map +1 -1
  463. package/dist/esm/index.js +62 -54
  464. package/dist/esm/index.js.map +1 -1
  465. package/dist/esm/labs/AppTile.js +1 -1
  466. package/dist/esm/labs/AppTile.js.map +1 -1
  467. package/dist/esm/labs/DataFilters.js +5 -5
  468. package/dist/esm/labs/DataFilters.js.map +1 -1
  469. package/dist/esm/labs/DataTablePagination.js +1 -1
  470. package/dist/esm/labs/DataTablePagination.js.map +1 -1
  471. package/dist/esm/labs/DataView/BulkActionsMenu.js +2 -1
  472. package/dist/esm/labs/DataView/BulkActionsMenu.js.map +1 -1
  473. package/dist/esm/labs/DataView/DataView.js +3 -2
  474. package/dist/esm/labs/DataView/DataView.js.map +1 -1
  475. package/dist/esm/labs/DataView/LayoutSwitcher.js +2 -1
  476. package/dist/esm/labs/DataView/LayoutSwitcher.js.map +1 -1
  477. package/dist/esm/labs/DataView/RowActions.js +1 -1
  478. package/dist/esm/labs/DataView/RowActions.js.map +1 -1
  479. package/dist/esm/labs/DataView/TableLayoutContent.js +2 -1
  480. package/dist/esm/labs/DataView/TableLayoutContent.js.map +1 -1
  481. package/dist/esm/labs/DataView/TableSettings.js +2 -1
  482. package/dist/esm/labs/DataView/TableSettings.js.map +1 -1
  483. package/dist/esm/labs/DataView/componentTypes.js.map +1 -1
  484. package/dist/esm/labs/DataView/useFilterConversion.js.map +1 -1
  485. package/dist/esm/labs/DatePickers/DateTimePicker.js +2 -2
  486. package/dist/esm/labs/DatePickers/DateTimePicker.js.map +1 -1
  487. package/dist/esm/labs/DatePickers/dateTimePickerTheme.js +1 -1
  488. package/dist/esm/labs/DatePickers/dateTimePickerTheme.js.map +1 -1
  489. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js +1 -1
  490. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
  491. package/dist/esm/labs/index.js +18 -7
  492. package/dist/esm/labs/index.js.map +1 -1
  493. package/dist/esm/ui-shell/SideNav/NavAccordion.js +2 -0
  494. package/dist/esm/ui-shell/SideNav/NavAccordion.js.map +1 -1
  495. package/dist/esm/ui-shell/SideNav/SideNav.js +4 -2
  496. package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
  497. package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
  498. package/dist/esm/ui-shell/WideUiShellContent.js +3 -3
  499. package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -1
  500. package/dist/esm/ui-shell/index.js +4 -3
  501. package/dist/esm/ui-shell/index.js.map +1 -1
  502. package/dist/esm/ui-shell/renderUiShell.js +4 -2
  503. package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
  504. package/dist/esm/web-component/createShadowDomElements.js +2 -2
  505. package/dist/esm/web-component/createShadowDomElements.js.map +1 -1
  506. package/dist/esm/web-component/{removeGlobalStylesFromShadowDom.js → encapsulateShadowDomFromGlobalStyles.js} +2 -2
  507. package/dist/esm/web-component/encapsulateShadowDomFromGlobalStyles.js.map +1 -0
  508. package/dist/esm/web-component/index.js +1 -1
  509. package/dist/esm/web-component/index.js.map +1 -1
  510. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js +1 -1
  511. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js.map +1 -1
  512. package/dist/esm/web-component/renderReactInWebComponent.js +12 -8
  513. package/dist/esm/web-component/renderReactInWebComponent.js.map +1 -1
  514. package/dist/favicon.svg +1 -0
  515. package/dist/iframe.html +748 -0
  516. package/dist/index.cjs +231 -0
  517. package/dist/index.d.ts +22 -0
  518. package/dist/index.d.ts.map +1 -0
  519. package/dist/index.es.js +3173 -0
  520. package/dist/index.es.js.map +1 -0
  521. package/dist/index.html +203 -0
  522. package/dist/index.iife.js +9 -0
  523. package/dist/index.iife.js.map +1 -0
  524. package/dist/{esm/Buttons/index.js → index.js} +15 -9
  525. package/dist/index.json +1 -0
  526. package/dist/index.mjs +229 -0
  527. package/dist/index.scss +549 -0
  528. package/dist/index.umd.cjs +9 -0
  529. package/dist/index.umd.cjs.map +1 -0
  530. package/dist/nunito-sans-bold-italic.woff2 +0 -0
  531. package/dist/nunito-sans-bold.woff2 +0 -0
  532. package/dist/nunito-sans-italic.woff2 +0 -0
  533. package/dist/nunito-sans-regular.woff2 +0 -0
  534. package/dist/project.json +1 -0
  535. package/dist/sb-addons/a11y-3/manager-bundle.js +220 -0
  536. package/dist/sb-addons/docs-1/manager-bundle.js +242 -0
  537. package/dist/sb-addons/essentials-actions-5/manager-bundle.js +3 -0
  538. package/dist/sb-addons/essentials-backgrounds-6/manager-bundle.js +12 -0
  539. package/dist/sb-addons/essentials-controls-4/manager-bundle.js +402 -0
  540. package/dist/sb-addons/essentials-measure-9/manager-bundle.js +3 -0
  541. package/dist/sb-addons/essentials-outline-10/manager-bundle.js +3 -0
  542. package/dist/sb-addons/essentials-toolbars-8/manager-bundle.js +3 -0
  543. package/dist/sb-addons/essentials-viewport-7/manager-bundle.js +3 -0
  544. package/dist/sb-addons/interactions-11/manager-bundle.js +222 -0
  545. package/dist/sb-addons/links-2/manager-bundle.js +3 -0
  546. package/dist/sb-addons/rtl-12/manager-bundle.js +3 -0
  547. package/dist/sb-addons/storybook-13/manager-bundle.js +3 -0
  548. package/dist/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js +3 -0
  549. package/dist/sb-common-assets/favicon.svg +1 -0
  550. package/dist/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  551. package/dist/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  552. package/dist/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  553. package/dist/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  554. package/dist/sb-manager/globals-module-info.js +1052 -0
  555. package/dist/sb-manager/globals-runtime.js +42127 -0
  556. package/dist/sb-manager/globals.js +48 -0
  557. package/dist/sb-manager/runtime.js +12048 -0
  558. package/dist/tsconfig.production.tsbuildinfo +1 -1
  559. package/dist/tsconfig.tsbuildinfo +1 -0
  560. package/dist/types/DataTable/DataTable.d.ts +3 -3
  561. package/dist/types/DataTable/DataTable.d.ts.map +1 -1
  562. package/dist/types/DataTable/DataTableRowActions.d.ts +2 -1
  563. package/dist/types/DataTable/DataTableRowActions.d.ts.map +1 -1
  564. package/dist/types/DataTable/DataTableSettings.d.ts.map +1 -1
  565. package/dist/types/Dialog.d.ts +1 -1
  566. package/dist/types/Dialog.d.ts.map +1 -1
  567. package/dist/types/Drawer.d.ts +1 -1
  568. package/dist/types/Drawer.d.ts.map +1 -1
  569. package/dist/types/{Checkbox.d.ts → Fields/Checkbox.d.ts} +4 -4
  570. package/dist/types/Fields/Checkbox.d.ts.map +1 -0
  571. package/dist/types/{CheckboxGroup.d.ts → Fields/CheckboxGroup.d.ts} +2 -2
  572. package/dist/types/Fields/CheckboxGroup.d.ts.map +1 -0
  573. package/dist/types/Fields/Hint.d.ts +19 -0
  574. package/dist/types/Fields/Hint.d.ts.map +1 -0
  575. package/dist/types/{Radio.d.ts → Fields/Radio.d.ts} +3 -3
  576. package/dist/types/Fields/Radio.d.ts.map +1 -0
  577. package/dist/types/{RadioGroup.d.ts → Fields/RadioGroup.d.ts} +2 -2
  578. package/dist/types/Fields/RadioGroup.d.ts.map +1 -0
  579. package/dist/types/FileUploader/FileUploader.d.ts +1 -2
  580. package/dist/types/FileUploader/FileUploader.d.ts.map +1 -1
  581. package/dist/types/Form.d.ts +1 -1
  582. package/dist/types/Form.d.ts.map +1 -1
  583. package/dist/types/OdysseyThemeProviderPropsContext.d.ts +1 -1
  584. package/dist/types/__internal.d.ts +17 -0
  585. package/dist/types/__internal.d.ts.map +1 -1
  586. package/dist/types/getTranslationServices.browser.test.d.ts +1 -0
  587. package/dist/types/getTranslationServices.browser.test.js +88 -0
  588. package/dist/types/getTranslationServices.browser.test.js.map +1 -0
  589. package/dist/types/getTranslationServices.d.ts +91 -0
  590. package/dist/types/getTranslationServices.js +77 -0
  591. package/dist/types/getTranslationServices.js.map +1 -0
  592. package/dist/types/getTypedObjectEntries.d.ts +1 -0
  593. package/dist/types/getTypedObjectEntries.js +2 -0
  594. package/dist/types/getTypedObjectEntries.js.map +1 -0
  595. package/dist/types/index.d.ts +65 -54
  596. package/dist/types/index.d.ts.map +1 -1
  597. package/dist/types/index.js +3 -0
  598. package/dist/types/index.js.map +1 -0
  599. package/dist/types/labs/DataView/BulkActionsMenu.d.ts.map +1 -1
  600. package/dist/types/labs/DataView/DataView.d.ts.map +1 -1
  601. package/dist/types/labs/DataView/LayoutSwitcher.d.ts.map +1 -1
  602. package/dist/types/labs/DataView/RowActions.d.ts +2 -1
  603. package/dist/types/labs/DataView/RowActions.d.ts.map +1 -1
  604. package/dist/types/labs/DataView/TableLayoutContent.d.ts.map +1 -1
  605. package/dist/types/labs/DataView/TableSettings.d.ts.map +1 -1
  606. package/dist/types/labs/DataView/componentTypes.d.ts +1 -1
  607. package/dist/types/labs/DataView/componentTypes.d.ts.map +1 -1
  608. package/dist/types/labs/index.d.ts +19 -7
  609. package/dist/types/labs/index.d.ts.map +1 -1
  610. package/dist/types/translationServices.types.d.ts +2 -0
  611. package/dist/types/translationServices.types.js +34 -0
  612. package/dist/types/translationServices.types.js.map +1 -0
  613. package/dist/types/tsconfig.tsbuildinfo +1 -0
  614. package/dist/types/ui-shell/SideNav/NavAccordion.d.ts +1 -1
  615. package/dist/types/ui-shell/SideNav/NavAccordion.d.ts.map +1 -1
  616. package/dist/types/ui-shell/SideNav/SideNav.d.ts +0 -2
  617. package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
  618. package/dist/types/ui-shell/SideNav/types.d.ts +4 -0
  619. package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
  620. package/dist/types/ui-shell/index.d.ts +4 -3
  621. package/dist/types/ui-shell/index.d.ts.map +1 -1
  622. package/dist/types/ui-shell/renderUiShell.d.ts +5 -1
  623. package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
  624. package/dist/types/web-component/{removeGlobalStylesFromShadowDom.d.ts → encapsulateShadowDomFromGlobalStyles.d.ts} +2 -2
  625. package/dist/types/web-component/encapsulateShadowDomFromGlobalStyles.d.ts.map +1 -0
  626. package/dist/types/web-component/index.d.ts +1 -1
  627. package/dist/types/web-component/index.d.ts.map +1 -1
  628. package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts +1 -1
  629. package/dist/types/web-component/renderReactInWebComponent.d.ts +8 -2
  630. package/dist/types/web-component/renderReactInWebComponent.d.ts.map +1 -1
  631. package/ok.yaml +1 -0
  632. package/package.json +9 -9
  633. package/src/getTranslationServices.browser.test.tsx +173 -0
  634. package/src/getTranslationServices.tsx +286 -0
  635. package/src/getTypedObjectEntries.ts +3 -0
  636. package/src/index.ts +2 -0
  637. package/src/translationServices.types.ts +36 -0
  638. package/src/tsconfig.json +7 -0
  639. package/tsconfig.json +41 -0
  640. package/vite.config.project.ts +61 -0
  641. package/vite.config.ts +21 -0
  642. package/vite.config.ts.bak +33 -0
  643. package/{dist/esm/ui-shell/AppSwitcher/index.js → vitest-browser-setup.ts} +2 -2
  644. package/{dist/esm/theme/index.js → vitest-jsdom-setup.ts} +2 -3
  645. package/{dist/esm/ui-shell/TopNav/index.js → vitest-node-setup.ts} +1 -2
  646. package/vitest.config.project.ts +16 -0
  647. package/vitest.config.ts +27 -0
  648. package/vitest.config.ts.bak +27 -0
  649. package/dist/cjs/Buttons/index.cjs +0 -93
  650. package/dist/cjs/Buttons/index.cjs.map +0 -1
  651. package/dist/cjs/Checkbox.cjs.map +0 -1
  652. package/dist/cjs/CheckboxGroup.cjs.map +0 -1
  653. package/dist/cjs/DataTable/index.cjs +0 -20
  654. package/dist/cjs/DataTable/index.cjs.map +0 -1
  655. package/dist/cjs/DatePickers/index.cjs +0 -39
  656. package/dist/cjs/DatePickers/index.cjs.map +0 -1
  657. package/dist/cjs/FileUploader/index.cjs +0 -17
  658. package/dist/cjs/FileUploader/index.cjs.map +0 -1
  659. package/dist/cjs/Pagination/index.cjs +0 -36
  660. package/dist/cjs/Pagination/index.cjs.map +0 -1
  661. package/dist/cjs/Radio.cjs.map +0 -1
  662. package/dist/cjs/RadioGroup.cjs.map +0 -1
  663. package/dist/cjs/labs/DataView/index.cjs +0 -60
  664. package/dist/cjs/labs/DataView/index.cjs.map +0 -1
  665. package/dist/cjs/labs/DatePickers/index.cjs +0 -17
  666. package/dist/cjs/labs/DatePickers/index.cjs.map +0 -1
  667. package/dist/cjs/labs/OdysseyPickers/index.cjs +0 -48
  668. package/dist/cjs/labs/OdysseyPickers/index.cjs.map +0 -1
  669. package/dist/cjs/labs/PageTemplate/index.cjs +0 -28
  670. package/dist/cjs/labs/PageTemplate/index.cjs.map +0 -1
  671. package/dist/cjs/theme/index.cjs +0 -17
  672. package/dist/cjs/theme/index.cjs.map +0 -1
  673. package/dist/cjs/ui-shell/AppSwitcher/index.cjs +0 -17
  674. package/dist/cjs/ui-shell/AppSwitcher/index.cjs.map +0 -1
  675. package/dist/cjs/ui-shell/SideNav/index.cjs +0 -40
  676. package/dist/cjs/ui-shell/SideNav/index.cjs.map +0 -1
  677. package/dist/cjs/ui-shell/TopNav/index.cjs +0 -17
  678. package/dist/cjs/ui-shell/TopNav/index.cjs.map +0 -1
  679. package/dist/cjs/web-component/removeGlobalStylesFromShadowDom.cjs.map +0 -1
  680. package/dist/esm/Buttons/index.js.map +0 -1
  681. package/dist/esm/Checkbox.js.map +0 -1
  682. package/dist/esm/CheckboxGroup.js.map +0 -1
  683. package/dist/esm/DataTable/index.js.map +0 -1
  684. package/dist/esm/DatePickers/index.js.map +0 -1
  685. package/dist/esm/FileUploader/index.js.map +0 -1
  686. package/dist/esm/Pagination/index.js.map +0 -1
  687. package/dist/esm/Radio.js.map +0 -1
  688. package/dist/esm/RadioGroup.js.map +0 -1
  689. package/dist/esm/labs/DataView/index.js +0 -18
  690. package/dist/esm/labs/DataView/index.js.map +0 -1
  691. package/dist/esm/labs/DatePickers/index.js.map +0 -1
  692. package/dist/esm/labs/OdysseyPickers/index.js.map +0 -1
  693. package/dist/esm/labs/PageTemplate/index.js +0 -15
  694. package/dist/esm/labs/PageTemplate/index.js.map +0 -1
  695. package/dist/esm/theme/index.js.map +0 -1
  696. package/dist/esm/ui-shell/AppSwitcher/index.js.map +0 -1
  697. package/dist/esm/ui-shell/SideNav/index.js +0 -16
  698. package/dist/esm/ui-shell/SideNav/index.js.map +0 -1
  699. package/dist/esm/ui-shell/TopNav/index.js.map +0 -1
  700. package/dist/esm/web-component/removeGlobalStylesFromShadowDom.js.map +0 -1
  701. package/dist/types/Buttons/index.d.ts +0 -18
  702. package/dist/types/Buttons/index.d.ts.map +0 -1
  703. package/dist/types/Checkbox.d.ts.map +0 -1
  704. package/dist/types/CheckboxGroup.d.ts.map +0 -1
  705. package/dist/types/DataTable/index.d.ts.map +0 -1
  706. package/dist/types/DatePickers/index.d.ts +0 -15
  707. package/dist/types/DatePickers/index.d.ts.map +0 -1
  708. package/dist/types/FileUploader/index.d.ts +0 -13
  709. package/dist/types/FileUploader/index.d.ts.map +0 -1
  710. package/dist/types/Pagination/index.d.ts.map +0 -1
  711. package/dist/types/Radio.d.ts.map +0 -1
  712. package/dist/types/RadioGroup.d.ts.map +0 -1
  713. package/dist/types/labs/DataView/index.d.ts +0 -18
  714. package/dist/types/labs/DataView/index.d.ts.map +0 -1
  715. package/dist/types/labs/DatePickers/index.d.ts +0 -13
  716. package/dist/types/labs/DatePickers/index.d.ts.map +0 -1
  717. package/dist/types/labs/OdysseyPickers/index.d.ts +0 -16
  718. package/dist/types/labs/OdysseyPickers/index.d.ts.map +0 -1
  719. package/dist/types/labs/PageTemplate/index.d.ts.map +0 -1
  720. package/dist/types/theme/index.d.ts.map +0 -1
  721. package/dist/types/ui-shell/AppSwitcher/index.d.ts +0 -13
  722. package/dist/types/ui-shell/AppSwitcher/index.d.ts.map +0 -1
  723. package/dist/types/ui-shell/SideNav/index.d.ts +0 -15
  724. package/dist/types/ui-shell/SideNav/index.d.ts.map +0 -1
  725. package/dist/types/ui-shell/TopNav/index.d.ts +0 -13
  726. package/dist/types/ui-shell/TopNav/index.d.ts.map +0 -1
  727. package/dist/types/web-component/removeGlobalStylesFromShadowDom.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PickerWithOptionAdornment.js","names":["styled","Fragment","memo","useCallback","Box","useOdysseyDesignTokens","Tag","pxToRem","Heading6","ComposablePicker","Option","OptionDescriptionComponent","OptionLabelContainer","OptionMetadataComponent","jsx","_jsx","jsxs","_jsxs","OptionAdornmentContainer","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","flexShrink","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","children","alt","role","src","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","hasAdornment","component","OptionWithLabelDescriptionMetadata","metaData","TagAdornment","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","values","getTagProps","map","index","key","onDelete","sx","margin","Spacing1","icon","onRemove","customOptionRender","hasMetadata","renderOption","renderTags","MemoizedPickerWithOptionAdornment","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\nimport { Fragment, memo, ReactNode, useCallback } from \"react\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Tag } from \"../../Tag.js\";\nimport { pxToRem } from \"../../theme/index.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport {\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n ComposablePicker,\n ComposablePickerProps,\n} from \"./ComposablePicker.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n flexShrink: 0,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n \"&:has(> img)\": {\n height: `${pxToRem(16)}rem`,\n },\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n return (\n <Fragment key={option.value}>\n {hasMetadata ? (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onFocus={onFocus}\n onInputChange={onInputChangeProp}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n testId={testId}\n translate={translate}\n value={value}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PickerWithOptionAdornment.js","names":["styled","Fragment","memo","useCallback","Box","useOdysseyDesignTokens","Tag","pxToRem","Heading6","ComposablePicker","Option","OptionDescriptionComponent","OptionLabelContainer","OptionMetadataComponent","jsx","_jsx","jsxs","_jsxs","OptionAdornmentContainer","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","flexShrink","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","children","alt","role","src","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","hasAdornment","component","OptionWithLabelDescriptionMetadata","metaData","TagAdornment","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","values","getTagProps","map","index","key","onDelete","sx","margin","Spacing1","icon","onRemove","customOptionRender","hasMetadata","renderOption","renderTags","MemoizedPickerWithOptionAdornment","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\nimport { Fragment, memo, ReactNode, useCallback } from \"react\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Tag } from \"../../Tag.js\";\nimport { pxToRem } from \"../../theme/pxToRem.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport {\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n ComposablePicker,\n ComposablePickerProps,\n} from \"./ComposablePicker.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n flexShrink: 0,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n \"&:has(> img)\": {\n height: `${pxToRem(16)}rem`,\n },\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n return (\n <Fragment key={option.value}>\n {hasMetadata ? (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onFocus={onFocus}\n onInputChange={onInputChangeProp}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n testId={testId}\n translate={translate}\n value={value}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":"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","ignoreList":[]}
@@ -12,18 +12,29 @@
12
12
 
13
13
  export { LocalizationProvider } from "@mui/x-date-pickers";
14
14
  export { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
15
- export * from "../ui-shell/AppSwitcher/index.js";
16
- export * from "../ui-shell/SideNav/index.js";
17
- export * from "../ui-shell/TopNav/index.js";
15
+ export * from "../ui-shell/AppSwitcher/AppSwitcher.js";
16
+ export * from "../ui-shell/SideNav/NavAccordion.js";
17
+ export * from "../ui-shell/SideNav/SideNav.js";
18
+ export * from "../ui-shell/SideNav/types.js";
19
+ export * from "../ui-shell/TopNav/TopNav.js";
18
20
  export * from "../ui-shell/UiShell.js";
19
21
  export * from "./AppTile.js";
20
22
  export * from "./DataFilters.js";
21
23
  export * from "./DataTablePagination.js";
22
- export * from "./DataView/index.js";
23
- export * from "./DatePickers/index.js";
24
+ export * from "./DataView/componentTypes.js";
25
+ export * from "./DataView/constants.js";
26
+ export * from "./DataView/DataTable.js";
27
+ export * from "./DataView/dataTypes.js";
28
+ export * from "./DataView/DataView.js";
29
+ export * from "./DatePickers/DateTimeField.js";
30
+ export * from "./DatePickers/DateTimePicker.js";
24
31
  export * from "./materialReactTableTypes.js";
25
- export * from "./OdysseyPickers/index.js";
26
- export * from "./PageTemplate/index.js";
32
+ export { adornmentSizeValues } from "./OdysseyPickers/ComposablePicker.js";
33
+ export * from "./OdysseyPickers/Picker.js";
34
+ export * from "./OdysseyPickers/PickerWithOptionAdornment.js";
35
+ export * from "./OdysseyPickers/SearchDropdown.js";
36
+ export * from "./PageTemplate/Layout.js";
37
+ export * from "./PageTemplate/PageTemplate.js";
27
38
  export * from "./PaginatedTable.js";
28
39
  export * from "./StaticTable.js";
29
40
  export * from "./UserProfile.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["LocalizationProvider","AdapterDateFns","GroupPicker"],"sources":["../../../src/labs/index.ts"],"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\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/AppSwitcher/index.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/SideNav/index.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/TopNav/index.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/UiShell.js\";\n// export * from \"./AdaptablePicker\";\nexport * from \"./AppTile.js\";\nexport * from \"./DataFilters.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of the one shipping with DataTable */\nexport * from \"./DataTablePagination.js\";\nexport * from \"./DataView/index.js\";\nexport * from \"./DatePickers/index.js\";\nexport * from \"./materialReactTableTypes.js\";\nexport * from \"./OdysseyPickers/index.js\";\nexport * from \"./PageTemplate/index.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./PaginatedTable.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./StaticTable.js\";\nexport * from \"./UserProfile.js\";\nexport * from \"./UserProfileMenuButton.js\";\n\nexport {\n /** @deprecated Will be removed in a future Odyssey version. Use `PickerWithOptionAdornment` */\n GroupPicker,\n type GroupPickerOptionType,\n type GroupPickerProps,\n} from \"./GroupPicker.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,qBAAqB;AAE1D,SAASC,cAAc,QAAQ,oCAAoC;AAGnE,cAAc,kCAAkC;AAEhD,cAAc,8BAA8B;AAE5C,cAAc,6BAA6B;AAE3C,cAAc,wBAAwB;AAEtC,cAAc,cAAc;AAC5B,cAAc,kBAAkB;AAEhC,cAAc,0BAA0B;AACxC,cAAc,qBAAqB;AACnC,cAAc,wBAAwB;AACtC,cAAc,8BAA8B;AAC5C,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AAEvC,cAAc,qBAAqB;AAEnC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,4BAA4B;AAE1C,SAEEC,WAAW,QAGN,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["LocalizationProvider","AdapterDateFns","adornmentSizeValues","GroupPicker"],"sources":["../../../src/labs/index.ts"],"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\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/AppSwitcher/AppSwitcher.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/SideNav/NavAccordion.js\";\nexport * from \"../ui-shell/SideNav/SideNav.js\";\nexport * from \"../ui-shell/SideNav/types.js\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/TopNav/TopNav.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/UiShell.js\";\n// export * from \"./AdaptablePicker\";\nexport * from \"./AppTile.js\";\nexport * from \"./DataFilters.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of the one shipping with DataTable */\nexport * from \"./DataTablePagination.js\";\nexport * from \"./DataView/componentTypes.js\";\nexport * from \"./DataView/constants.js\";\nexport { type DataCardProps } from \"./DataView/DataCard.js\";\nexport * from \"./DataView/DataTable.js\";\nexport * from \"./DataView/dataTypes.js\";\nexport * from \"./DataView/DataView.js\";\n\nexport * from \"./DatePickers/DateTimeField.js\";\nexport * from \"./DatePickers/DateTimePicker.js\";\nexport * from \"./materialReactTableTypes.js\";\nexport { adornmentSizeValues } from \"./OdysseyPickers/ComposablePicker.js\";\nexport * from \"./OdysseyPickers/Picker.js\";\nexport * from \"./OdysseyPickers/PickerWithOptionAdornment.js\";\nexport * from \"./OdysseyPickers/SearchDropdown.js\";\nexport * from \"./PageTemplate/Layout.js\";\nexport * from \"./PageTemplate/PageTemplate.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./PaginatedTable.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./StaticTable.js\";\nexport * from \"./UserProfile.js\";\nexport * from \"./UserProfileMenuButton.js\";\n\nexport {\n /** @deprecated Will be removed in a future Odyssey version. Use `PickerWithOptionAdornment` */\n GroupPicker,\n type GroupPickerOptionType,\n type GroupPickerProps,\n} from \"./GroupPicker.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,qBAAqB;AAE1D,SAASC,cAAc,QAAQ,oCAAoC;AAGnE,cAAc,wCAAwC;AAEtD,cAAc,qCAAqC;AACnD,cAAc,gCAAgC;AAC9C,cAAc,8BAA8B;AAG5C,cAAc,8BAA8B;AAE5C,cAAc,wBAAwB;AAEtC,cAAc,cAAc;AAC5B,cAAc,kBAAkB;AAEhC,cAAc,0BAA0B;AACxC,cAAc,8BAA8B;AAC5C,cAAc,yBAAyB;AAEvC,cAAc,yBAAyB;AACvC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AAEtC,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,8BAA8B;AAC5C,SAASC,mBAAmB,QAAQ,sCAAsC;AAC1E,cAAc,4BAA4B;AAC1C,cAAc,+CAA+C;AAC7D,cAAc,oCAAoC;AAClD,cAAc,0BAA0B;AACxC,cAAc,gCAAgC;AAE9C,cAAc,qBAAqB;AAEnC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,4BAA4B;AAE1C,SAEEC,WAAW,QAGN,kBAAkB","ignoreList":[]}
@@ -118,6 +118,7 @@ const NavAccordion = ({
118
118
  isDefaultExpanded,
119
119
  isDisabled,
120
120
  isExpanded,
121
+ onChange,
121
122
  translate,
122
123
  startIcon
123
124
  }) => {
@@ -135,6 +136,7 @@ const NavAccordion = ({
135
136
  disabled: isDisabled,
136
137
  disableGutters: true,
137
138
  expanded: isExpanded,
139
+ onChange: onChange,
138
140
  children: [_jsxs(AccordionSummaryContainer, {
139
141
  "aria-controls": contentId,
140
142
  className: "nav-accordion-summary",
@@ -1 +1 @@
1
- {"version":3,"file":"NavAccordion.js","names":["styled","memo","ChevronDownIcon","useOdysseyDesignTokens","useUiShellContext","useUniqueId","useSideNavItemContent","jsx","_jsx","jsxs","_jsxs","SideNavAccordionContainer","shouldForwardProp","prop","backgroundColor","fontColor","width","color","AccordionLabelContainer","sideNavContrastColors","odysseyDesignTokens","isIconVisible","marginInlineStart","Spacing3","fontWeight","TypographyWeightBody","TypographyColorHeading","TypographyColorDisabled","itemDisabledFontColor","AccordionSummaryContainer","_AccordionSummary","isCompact","isDisabled","depth","borderRadius","BorderRadiusMain","paddingBlock","paddingInlineStart","Spacing4","paddingInlineEnd","alignItems","opacity","svg","path","fill","HueNeutral50","itemHoverBackgroundColor","outline","boxShadow","PalettePrimaryMain","focusRingColor","Spacing2","minHeight","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isExpanded","translate","startIcon","headerId","contentId","uiShellContext","sideNavItemContentContext","sideNavBackgroundColor","_Accordion","className","defaultExpanded","disabled","disableGutters","expanded","expandIcon","Boolean","_AccordionDetails","MemoizedNavAccordion","displayName"],"sources":["../../../../src/ui-shell/SideNav/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 Accordion as MuiAccordion,\n AccordionDetails as MuiAccordionDetails,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n} from \"@mui/material\";\nimport { memo, PropsWithChildren, ReactNode } from \"react\";\n\nimport type { HtmlProps } from \"../../HtmlProps.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { ChevronDownIcon } from \"../../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useUniqueId } from \"../../useUniqueId.js\";\nimport { useSideNavItemContent } from \"./SideNavItemContentContext.js\";\n\nconst SideNavAccordionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" && prop !== \"fontColor\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n fontColor?: ContrastColors[\"fontColor\"];\n}>(({ backgroundColor, fontColor }) => ({\n width: \"100%\",\n\n \".MuiAccordion-root\": {\n backgroundColor: backgroundColor,\n color: fontColor || \"inherit\",\n },\n}));\n\nexport type NavAccordionProps = {\n /**\n * Defines IDs for the header and the content of the Accordion\n */\n id?: string;\n /**\n * Determines if the Accordion component use compact layout\n */\n isCompact?: boolean;\n /**\n * Whether the item is expanded by default\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled\n */\n isDisabled?: boolean;\n /**\n * If true, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n isExpanded?: boolean;\n /**\n * The label text for the AccordionSummary\n */\n label: string;\n /**\n * Event fired when the expansion state of the accordion is changed\n */\n onChange?: MuiAccordionProps[\"onChange\"];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isIconVisible\" &&\n prop !== \"sideNavContrastColors\",\n})<{\n isIconVisible: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(({ sideNavContrastColors, odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n marginInlineStart: isIconVisible ? odysseyDesignTokens.Spacing3 : 0,\n fontWeight: odysseyDesignTokens.TypographyWeightBody,\n color:\n sideNavContrastColors?.fontColor ||\n odysseyDesignTokens.TypographyColorHeading,\n\n \".Mui-disabled &\": {\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n color: sideNavContrastColors?.itemDisabledFontColor,\n }),\n },\n}));\n\nconst AccordionSummaryContainer = styled(MuiAccordionSummary, {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isCompact\" &&\n prop !== \"isDisabled\" &&\n prop !== \"sideNavContrastColors\" &&\n prop !== \"depth\",\n})<{\n depth?: number;\n isCompact?: boolean;\n isDisabled?: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(\n ({\n odysseyDesignTokens,\n sideNavContrastColors,\n isCompact,\n isDisabled,\n depth = 1,\n }) => ({\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n paddingBlock: odysseyDesignTokens.Spacing3,\n paddingInlineStart: `calc(${odysseyDesignTokens.Spacing4} * ${depth})`,\n paddingInlineEnd: odysseyDesignTokens.Spacing4,\n alignItems: \"center\",\n\n \".MuiAccordionSummary-content\": {\n alignItems: \"center\",\n },\n\n ...(isDisabled && {\n opacity: \"1 !important\",\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.itemDisabledFontColor} !important`,\n },\n },\n }),\n }),\n\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n },\n }),\n\n ...(!isDisabled &&\n sideNavContrastColors?.fontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.fontColor} !important`,\n },\n },\n }),\n\n ...(sideNavContrastColors?.itemHoverBackgroundColor && {\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: sideNavContrastColors.itemHoverBackgroundColor,\n },\n }),\n }),\n\n \"&:focus-visible\": {\n backgroundColor: \"unset\",\n outline: \"none\",\n boxShadow: `inset 0 0 0 2px ${odysseyDesignTokens.PalettePrimaryMain}`,\n\n ...(sideNavContrastColors?.focusRingColor && {\n boxShadow: `inset 0 0 0 2px ${sideNavContrastColors.focusRingColor}`,\n }),\n },\n\n ...(isCompact && {\n paddingBlock: odysseyDesignTokens.Spacing2,\n minHeight: \"unset\",\n }),\n }),\n);\n\nconst NavAccordion = ({\n children,\n label,\n id: idOverride,\n isCompact,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n translate,\n startIcon,\n}: PropsWithChildren<NavAccordionProps>) => {\n const id = useUniqueId(idOverride);\n const headerId = `${id}-header`;\n const contentId = `${id}-content`;\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n const sideNavItemContentContext = useSideNavItemContent();\n\n return (\n <SideNavAccordionContainer\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <MuiAccordion\n className=\"nav-accordion\"\n defaultExpanded={isDefaultExpanded}\n disabled={isDisabled}\n disableGutters\n expanded={isExpanded}\n >\n <AccordionSummaryContainer\n aria-controls={contentId}\n className=\"nav-accordion-summary\"\n depth={sideNavItemContentContext.depth}\n expandIcon={<ChevronDownIcon />}\n id={headerId}\n isCompact={isCompact}\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n >\n {startIcon && startIcon}\n <AccordionLabelContainer\n isIconVisible={Boolean(startIcon)}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n translate={translate}\n >\n {label}\n </AccordionLabelContainer>\n </AccordionSummaryContainer>\n <MuiAccordionDetails\n aria-labelledby={headerId}\n className=\"nav-accordion-details\"\n >\n {children}\n </MuiAccordionDetails>\n </MuiAccordion>\n </SideNavAccordionContainer>\n );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NavAccordion.js","names":["styled","memo","ChevronDownIcon","useOdysseyDesignTokens","useUiShellContext","useUniqueId","useSideNavItemContent","jsx","_jsx","jsxs","_jsxs","SideNavAccordionContainer","shouldForwardProp","prop","backgroundColor","fontColor","width","color","AccordionLabelContainer","sideNavContrastColors","odysseyDesignTokens","isIconVisible","marginInlineStart","Spacing3","fontWeight","TypographyWeightBody","TypographyColorHeading","TypographyColorDisabled","itemDisabledFontColor","AccordionSummaryContainer","_AccordionSummary","isCompact","isDisabled","depth","borderRadius","BorderRadiusMain","paddingBlock","paddingInlineStart","Spacing4","paddingInlineEnd","alignItems","opacity","svg","path","fill","HueNeutral50","itemHoverBackgroundColor","outline","boxShadow","PalettePrimaryMain","focusRingColor","Spacing2","minHeight","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isExpanded","onChange","translate","startIcon","headerId","contentId","uiShellContext","sideNavItemContentContext","sideNavBackgroundColor","_Accordion","className","defaultExpanded","disabled","disableGutters","expanded","expandIcon","Boolean","_AccordionDetails","MemoizedNavAccordion","displayName"],"sources":["../../../../src/ui-shell/SideNav/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 Accordion as MuiAccordion,\n AccordionDetails as MuiAccordionDetails,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n} from \"@mui/material\";\nimport { memo, PropsWithChildren, ReactNode } from \"react\";\n\nimport type { HtmlProps } from \"../../HtmlProps.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { ChevronDownIcon } from \"../../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useUniqueId } from \"../../useUniqueId.js\";\nimport { useSideNavItemContent } from \"./SideNavItemContentContext.js\";\n\nconst SideNavAccordionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" && prop !== \"fontColor\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n fontColor?: ContrastColors[\"fontColor\"];\n}>(({ backgroundColor, fontColor }) => ({\n width: \"100%\",\n\n \".MuiAccordion-root\": {\n backgroundColor: backgroundColor,\n color: fontColor || \"inherit\",\n },\n}));\n\nexport type NavAccordionProps = {\n /**\n * Defines IDs for the header and the content of the Accordion\n */\n id?: string;\n /**\n * Determines if the Accordion component use compact layout\n */\n isCompact?: boolean;\n /**\n * Whether the item is expanded by default\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled\n */\n isDisabled?: boolean;\n /**\n * If true, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n isExpanded?: boolean;\n /**\n * The label text for the AccordionSummary\n */\n label: string;\n /**\n * Event fired when the expansion state of the accordion is changed\n */\n onChange?: MuiAccordionProps[\"onChange\"];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isIconVisible\" &&\n prop !== \"sideNavContrastColors\",\n})<{\n isIconVisible: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(({ sideNavContrastColors, odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n marginInlineStart: isIconVisible ? odysseyDesignTokens.Spacing3 : 0,\n fontWeight: odysseyDesignTokens.TypographyWeightBody,\n color:\n sideNavContrastColors?.fontColor ||\n odysseyDesignTokens.TypographyColorHeading,\n\n \".Mui-disabled &\": {\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n color: sideNavContrastColors?.itemDisabledFontColor,\n }),\n },\n}));\n\nconst AccordionSummaryContainer = styled(MuiAccordionSummary, {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isCompact\" &&\n prop !== \"isDisabled\" &&\n prop !== \"sideNavContrastColors\" &&\n prop !== \"depth\",\n})<{\n depth?: number;\n isCompact?: boolean;\n isDisabled?: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(\n ({\n odysseyDesignTokens,\n sideNavContrastColors,\n isCompact,\n isDisabled,\n depth = 1,\n }) => ({\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n paddingBlock: odysseyDesignTokens.Spacing3,\n paddingInlineStart: `calc(${odysseyDesignTokens.Spacing4} * ${depth})`,\n paddingInlineEnd: odysseyDesignTokens.Spacing4,\n alignItems: \"center\",\n\n \".MuiAccordionSummary-content\": {\n alignItems: \"center\",\n },\n\n ...(isDisabled && {\n opacity: \"1 !important\",\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.itemDisabledFontColor} !important`,\n },\n },\n }),\n }),\n\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n },\n }),\n\n ...(!isDisabled &&\n sideNavContrastColors?.fontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.fontColor} !important`,\n },\n },\n }),\n\n ...(sideNavContrastColors?.itemHoverBackgroundColor && {\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: sideNavContrastColors.itemHoverBackgroundColor,\n },\n }),\n }),\n\n \"&:focus-visible\": {\n backgroundColor: \"unset\",\n outline: \"none\",\n boxShadow: `inset 0 0 0 2px ${odysseyDesignTokens.PalettePrimaryMain}`,\n\n ...(sideNavContrastColors?.focusRingColor && {\n boxShadow: `inset 0 0 0 2px ${sideNavContrastColors.focusRingColor}`,\n }),\n },\n\n ...(isCompact && {\n paddingBlock: odysseyDesignTokens.Spacing2,\n minHeight: \"unset\",\n }),\n }),\n);\n\nconst NavAccordion = ({\n children,\n label,\n id: idOverride,\n isCompact,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n onChange,\n translate,\n startIcon,\n}: PropsWithChildren<NavAccordionProps>) => {\n const id = useUniqueId(idOverride);\n const headerId = `${id}-header`;\n const contentId = `${id}-content`;\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n const sideNavItemContentContext = useSideNavItemContent();\n\n return (\n <SideNavAccordionContainer\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <MuiAccordion\n className=\"nav-accordion\"\n defaultExpanded={isDefaultExpanded}\n disabled={isDisabled}\n disableGutters\n expanded={isExpanded}\n onChange={onChange}\n >\n <AccordionSummaryContainer\n aria-controls={contentId}\n className=\"nav-accordion-summary\"\n depth={sideNavItemContentContext.depth}\n expandIcon={<ChevronDownIcon />}\n id={headerId}\n isCompact={isCompact}\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n >\n {startIcon && startIcon}\n <AccordionLabelContainer\n isIconVisible={Boolean(startIcon)}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n translate={translate}\n >\n {label}\n </AccordionLabelContainer>\n </AccordionSummaryContainer>\n <MuiAccordionDetails\n aria-labelledby={headerId}\n className=\"nav-accordion-details\"\n >\n {children}\n </MuiAccordionDetails>\n </MuiAccordion>\n </SideNavAccordionContainer>\n );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":"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","ignoreList":[]}
@@ -32,8 +32,8 @@ import { SideNavSortableList } from "./SideNavSortableList.js";
32
32
  import { SIDE_NAV_TOGGLE_ICON_HALF_SIZE, SIDE_NAV_TOGGLE_ICON_SIZE, SideNavToggleButton } from "./SideNavToggleButton.js";
33
33
  import { useIsSideNavCollapsedSessionStorage } from "./useIsSideNavCollapsedSessionStorage.js";
34
34
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
35
- export const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;
36
- export const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;
35
+ const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;
36
+ const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;
37
37
  const flattenNestedItems = items => {
38
38
  return items.flatMap(item => {
39
39
  if (item.nestedNavItems) {
@@ -434,6 +434,7 @@ const SideNav = ({
434
434
  label,
435
435
  startIcon,
436
436
  nestedNavItems,
437
+ onChange,
437
438
  isSortable,
438
439
  translate
439
440
  } = item;
@@ -491,6 +492,7 @@ const SideNav = ({
491
492
  isDisabled: isDisabled,
492
493
  isExpanded: isExpanded,
493
494
  label: label,
495
+ onChange: onChange,
494
496
  startIcon: startIcon,
495
497
  children: nestedChildren
496
498
  })
@@ -1 +1 @@
1
- {"version":3,"file":"SideNav.js","names":["arrayMove","styled","memo","useCallback","useEffect","useMemo","useRef","useState","ErrorBoundary","useTranslation","useOdysseyDesignTokens","OdysseyThemeProvider","Overline","useUiShellContext","useMountLifecycleEffect","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useElementAtContainerEdge","NavAccordion","SideNavFooterContent","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavItemContentContext","SideNavSortableList","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","useIsSideNavCollapsedSessionStorage","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","flattenNestedItems","items","flatMap","item","nestedNavItems","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighbouringContentAtInlineStart","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","hasBlockStartPadding","overflowY","paddingBlockStart","Spacing2","paddingInline","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","leavesPaddingStart","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","isAtContainerInlineStart","element","current","monitoringElement","parentElement","blankElement","onMount","onUpdate","updateIsContentScrollable","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","firstItemWithIsSelected","find","sideNavItem","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","setSelectedItem","selectedItemId","updateNestedSelection","map","updatedSideNavItems","closeSideNavMenu","createAccordionContextValue","depth","createLeafItemContextValue","isSortable","absolutePaddingStart","renderSideNavItem","href","isDefaultExpanded","isDisabled","isExpanded","isSectionHeader","label","startIcon","translate","fallback","component","length","nestedChildren","role","onChange","setSortedItems","parentId","processSideNavItems","sortableItem","navItem","onItemSelected","scrollRef","disabled","Provider","value","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","ariaControls","clickAreaPadding","onClick","onHighlight","onKeyDown","fill","_","index","MemoizedSideNav","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 { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport { Property } from \"csstype\";\nimport {\n CSSProperties,\n KeyboardEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport type { SideNavItem, SideNavProps } from \"./types.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { useTranslation } from \"../../i18n.generated/i18n.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.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\";\nimport { useElementAtContainerEdge } from \"../useElementAtContainerEdge.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavSortableList } from \"./SideNavSortableList.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { BaseItem } from \"./SortableList/SortableList.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\n\nexport const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nexport const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst flattenNestedItems = (items: SideNavItem[]): SideNavItem[] => {\n return items.flatMap((item) => {\n if (item.nestedNavItems) {\n return [item, ...flattenNestedItems(item.nestedNavItems)];\n }\n return item;\n });\n};\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\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 } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\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 } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighbouringContentAtInlineStart: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighbouringContentAtInlineStart,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighbouringContentAtInlineStart\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighbouringContentAtInlineStart: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighbouringContentAtInlineStart,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\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 } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"hasBlockStartPadding\",\n})<{ hasBlockStartPadding?: boolean; odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens, hasBlockStartPadding }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,\n paddingInline: odysseyDesignTokens.Spacing2,\n }),\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 color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\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 backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies 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 } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies 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 } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies 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 height={odysseyDesignTokens.Spacing4}\n variant=\"circular\"\n width={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 hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n leavesPaddingStart,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\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 const sideNavRef = useRef<HTMLDivElement>(null);\n\n const { isAtContainerInlineStart } = useElementAtContainerEdge({\n element: sideNavRef.current,\n monitoringElement: sideNavRef.current?.parentElement?.parentElement,\n });\n\n const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;\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 // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\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 = flattenNestedItems(sideNavItemsList);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n // Recursive function to update nested items\n const updateNestedSelection = (items: SideNavItem[]): SideNavItem[] => {\n return items.map((item) => {\n if (item.nestedNavItems) {\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n nestedNavItems: updateNestedSelection(item.nestedNavItems),\n };\n }\n\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n };\n });\n };\n\n const updatedSideNavItems = updateNestedSelection(sideNavItemsList);\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const createAccordionContextValue = useCallback(\n (depth: number) => ({\n depth,\n }),\n [],\n );\n\n const createLeafItemContextValue = useCallback(\n (depth: number, isSortable?: boolean) => ({\n isCompact,\n depth,\n isSortable,\n absolutePaddingStart: leavesPaddingStart,\n }),\n [isCompact, leavesPaddingStart],\n );\n\n const renderSideNavItem = (item: SideNavItem, depth: number = 1) => {\n const {\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n label,\n startIcon,\n nestedNavItems,\n isSortable,\n translate,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={uiShellContext?.sideNavContrastColors?.fontColor}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (nestedNavItems && nestedNavItems.length > 0) {\n // Recursive case: item has nested children - ALWAYS render as accordion\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SideNavSortableList\n depth={depth + 1}\n items={nestedNavItems}\n onChange={setSortedItems}\n parentId={item.id}\n processSideNavItems={processSideNavItems}\n />\n ) : (\n processSideNavItems(nestedNavItems, depth + 1).map(\n (item) => item.sortableItem.navItem,\n )\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavItemContentContext.Provider\n key={id}\n value={createAccordionContextValue(depth)}\n >\n <NavAccordion\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isDisabled={isDisabled}\n isExpanded={isExpanded}\n label={label}\n startIcon={startIcon}\n >\n {nestedChildren}\n </NavAccordion>\n </SideNavItemContentContext.Provider>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n // Base case: leaf item with no children\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContentContext.Provider\n key={id}\n value={createLeafItemContextValue(depth, isSortable)}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(id)}\n startIcon={startIcon}\n translate={translate}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n\n const processSideNavItems = (\n items: SideNavItem[],\n depth: number = 1,\n ): (SideNavItem & { sortableItem: BaseItem })[] => {\n return items?.map((item) => ({\n ...item,\n sortableItem: {\n id: item.id,\n isSelected: item.isSelected,\n isDisabled: item.isDisabled,\n isSortable: item.isSortable,\n navItem: renderSideNavItem(item, depth),\n },\n }));\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 }, [onCollapse, onExpand, setIsSideNavCollapsed]);\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 const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, 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 const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighbouringContentAtInlineStart={hasNeighbouringContentAtInlineStart}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighbouringContentAtInlineStart={\n hasNeighbouringContentAtInlineStart\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\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 borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\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 data-se=\"scrollable-region\"\n hasBlockStartPadding={!appName}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavListContainer\n ref={scrollableContentRef}\n role=\"none\"\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processSideNavItems(sideNavItemsList).map(\n (item) => item.sortableItem.navItem,\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":"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","ignoreList":[]}
1
+ {"version":3,"file":"SideNav.js","names":["arrayMove","styled","memo","useCallback","useEffect","useMemo","useRef","useState","ErrorBoundary","useTranslation","useOdysseyDesignTokens","OdysseyThemeProvider","Overline","useUiShellContext","useMountLifecycleEffect","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useElementAtContainerEdge","NavAccordion","SideNavFooterContent","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavItemContentContext","SideNavSortableList","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","useIsSideNavCollapsedSessionStorage","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","flattenNestedItems","items","flatMap","item","nestedNavItems","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighbouringContentAtInlineStart","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","hasBlockStartPadding","overflowY","paddingBlockStart","Spacing2","paddingInline","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","leavesPaddingStart","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","isAtContainerInlineStart","element","current","monitoringElement","parentElement","blankElement","onMount","onUpdate","updateIsContentScrollable","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","firstItemWithIsSelected","find","sideNavItem","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","setSelectedItem","selectedItemId","updateNestedSelection","map","updatedSideNavItems","closeSideNavMenu","createAccordionContextValue","depth","createLeafItemContextValue","isSortable","absolutePaddingStart","renderSideNavItem","href","isDefaultExpanded","isDisabled","isExpanded","isSectionHeader","label","startIcon","onChange","translate","fallback","component","length","nestedChildren","role","setSortedItems","parentId","processSideNavItems","sortableItem","navItem","onItemSelected","scrollRef","disabled","Provider","value","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","ariaControls","clickAreaPadding","onClick","onHighlight","onKeyDown","fill","_","index","MemoizedSideNav","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 { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport { Property } from \"csstype\";\nimport {\n CSSProperties,\n KeyboardEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport type { SideNavItem, SideNavProps } from \"./types.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { useTranslation } from \"../../i18n.generated/i18n.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.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\";\nimport { useElementAtContainerEdge } from \"../useElementAtContainerEdge.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavSortableList } from \"./SideNavSortableList.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { BaseItem } from \"./SortableList/SortableList.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\n\nconst SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nconst SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst flattenNestedItems = (items: SideNavItem[]): SideNavItem[] => {\n return items.flatMap((item) => {\n if (item.nestedNavItems) {\n return [item, ...flattenNestedItems(item.nestedNavItems)];\n }\n return item;\n });\n};\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\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 } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\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 } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighbouringContentAtInlineStart: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighbouringContentAtInlineStart,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighbouringContentAtInlineStart\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighbouringContentAtInlineStart: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighbouringContentAtInlineStart,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\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 } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"hasBlockStartPadding\",\n})<{ hasBlockStartPadding?: boolean; odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens, hasBlockStartPadding }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,\n paddingInline: odysseyDesignTokens.Spacing2,\n }),\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 color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\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 backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies 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 } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies 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 } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies 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 height={odysseyDesignTokens.Spacing4}\n variant=\"circular\"\n width={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 hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n leavesPaddingStart,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\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 const sideNavRef = useRef<HTMLDivElement>(null);\n\n const { isAtContainerInlineStart } = useElementAtContainerEdge({\n element: sideNavRef.current,\n monitoringElement: sideNavRef.current?.parentElement?.parentElement,\n });\n\n const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;\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 // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\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 = flattenNestedItems(sideNavItemsList);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n // Recursive function to update nested items\n const updateNestedSelection = (items: SideNavItem[]): SideNavItem[] => {\n return items.map((item) => {\n if (item.nestedNavItems) {\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n nestedNavItems: updateNestedSelection(item.nestedNavItems),\n };\n }\n\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n };\n });\n };\n\n const updatedSideNavItems = updateNestedSelection(sideNavItemsList);\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const createAccordionContextValue = useCallback(\n (depth: number) => ({\n depth,\n }),\n [],\n );\n\n const createLeafItemContextValue = useCallback(\n (depth: number, isSortable?: boolean) => ({\n isCompact,\n depth,\n isSortable,\n absolutePaddingStart: leavesPaddingStart,\n }),\n [isCompact, leavesPaddingStart],\n );\n\n const renderSideNavItem = (item: SideNavItem, depth: number = 1) => {\n const {\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n label,\n startIcon,\n nestedNavItems,\n onChange,\n isSortable,\n translate,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={uiShellContext?.sideNavContrastColors?.fontColor}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (nestedNavItems && nestedNavItems.length > 0) {\n // Recursive case: item has nested children - ALWAYS render as accordion\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SideNavSortableList\n depth={depth + 1}\n items={nestedNavItems}\n onChange={setSortedItems}\n parentId={item.id}\n processSideNavItems={processSideNavItems}\n />\n ) : (\n processSideNavItems(nestedNavItems, depth + 1).map(\n (item) => item.sortableItem.navItem,\n )\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavItemContentContext.Provider\n key={id}\n value={createAccordionContextValue(depth)}\n >\n <NavAccordion\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isDisabled={isDisabled}\n isExpanded={isExpanded}\n label={label}\n onChange={onChange}\n startIcon={startIcon}\n >\n {nestedChildren}\n </NavAccordion>\n </SideNavItemContentContext.Provider>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n // Base case: leaf item with no children\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContentContext.Provider\n key={id}\n value={createLeafItemContextValue(depth, isSortable)}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(id)}\n startIcon={startIcon}\n translate={translate}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n\n const processSideNavItems = (\n items: SideNavItem[],\n depth: number = 1,\n ): (SideNavItem & { sortableItem: BaseItem })[] => {\n return items?.map((item) => ({\n ...item,\n sortableItem: {\n id: item.id,\n isSelected: item.isSelected,\n isDisabled: item.isDisabled,\n isSortable: item.isSortable,\n navItem: renderSideNavItem(item, depth),\n },\n }));\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 }, [onCollapse, onExpand, setIsSideNavCollapsed]);\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 const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, 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 const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighbouringContentAtInlineStart={hasNeighbouringContentAtInlineStart}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighbouringContentAtInlineStart={\n hasNeighbouringContentAtInlineStart\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\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 borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\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 data-se=\"scrollable-region\"\n hasBlockStartPadding={!appName}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavListContainer\n ref={scrollableContentRef}\n role=\"none\"\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processSideNavItems(sideNavItemsList).map(\n (item) => item.sortableItem.navItem,\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":"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","ignoreList":[]}