@okta/odyssey-react-mui 1.21.2 → 1.22.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 (432) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/Autocomplete.js +76 -38
  3. package/dist/Autocomplete.js.map +1 -1
  4. package/dist/Checkbox.js +26 -11
  5. package/dist/Checkbox.js.map +1 -1
  6. package/dist/CheckboxGroup.js +14 -3
  7. package/dist/CheckboxGroup.js.map +1 -1
  8. package/dist/DataTable/DataTable.js +10 -2
  9. package/dist/DataTable/DataTable.js.map +1 -1
  10. package/dist/DataTable/useScrollIndication.js +2 -2
  11. package/dist/DataTable/useScrollIndication.js.map +1 -1
  12. package/dist/Field.js +3 -1
  13. package/dist/Field.js.map +1 -1
  14. package/dist/OdysseyCacheProvider.js +4 -3
  15. package/dist/OdysseyCacheProvider.js.map +1 -1
  16. package/dist/OdysseyProvider.js +6 -3
  17. package/dist/OdysseyProvider.js.map +1 -1
  18. package/dist/OdysseyThemeProvider.js +3 -2
  19. package/dist/OdysseyThemeProvider.js.map +1 -1
  20. package/dist/Radio.js +34 -7
  21. package/dist/Radio.js.map +1 -1
  22. package/dist/RadioGroup.js +17 -5
  23. package/dist/RadioGroup.js.map +1 -1
  24. package/dist/Select.js +53 -31
  25. package/dist/Select.js.map +1 -1
  26. package/dist/ToastStack.js.map +1 -1
  27. package/dist/{createShadowRootElement.js → createShadowDomElements.js} +22 -6
  28. package/dist/createShadowDomElements.js.map +1 -0
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.scss +5 -5
  32. package/dist/labs/AppTile.js +124 -0
  33. package/dist/labs/AppTile.js.map +1 -0
  34. package/dist/labs/DataView/BulkActionsMenu.js.map +1 -0
  35. package/dist/labs/{DataComponents/StackContent.js → DataView/CardLayoutContent.js} +14 -14
  36. package/dist/labs/DataView/CardLayoutContent.js.map +1 -0
  37. package/dist/labs/{DataComponents/StackCard.js → DataView/DataCard.js} +6 -6
  38. package/dist/labs/DataView/DataCard.js.map +1 -0
  39. package/dist/labs/{DataComponents → DataView}/DataTable.js +6 -2
  40. package/dist/labs/DataView/DataTable.js.map +1 -0
  41. package/dist/labs/{DataComponents → DataView}/DataView.js +25 -15
  42. package/dist/labs/DataView/DataView.js.map +1 -0
  43. package/dist/labs/DataView/DetailPanel.js.map +1 -0
  44. package/dist/labs/DataView/LayoutSwitcher.js.map +1 -0
  45. package/dist/labs/DataView/RowActions.js.map +1 -0
  46. package/dist/labs/{DataComponents/TableContent.js → DataView/TableLayoutContent.js} +17 -17
  47. package/dist/labs/DataView/TableLayoutContent.js.map +1 -0
  48. package/dist/labs/{DataComponents → DataView}/TableSettings.js +2 -2
  49. package/dist/labs/DataView/TableSettings.js.map +1 -0
  50. package/dist/labs/DataView/componentTypes.js.map +1 -0
  51. package/dist/labs/{DataComponents → DataView}/constants.js +2 -2
  52. package/dist/labs/DataView/constants.js.map +1 -0
  53. package/dist/labs/DataView/dataTypes.js.map +1 -0
  54. package/dist/labs/DataView/fetchData.js.map +1 -0
  55. package/dist/labs/{DataComponents → DataView}/index.js +0 -1
  56. package/dist/labs/DataView/index.js.map +1 -0
  57. package/dist/labs/DataView/tableConstants.js.map +1 -0
  58. package/dist/labs/DataView/useFilterConversion.js.map +1 -0
  59. package/dist/labs/SideNav/CollapseIcon.js +44 -0
  60. package/dist/labs/SideNav/CollapseIcon.js.map +1 -0
  61. package/dist/labs/SideNav/SideNav.js +246 -0
  62. package/dist/labs/SideNav/SideNav.js.map +1 -0
  63. package/dist/labs/SideNav/SideNavFooterContent.js +49 -0
  64. package/dist/labs/SideNav/SideNavFooterContent.js.map +1 -0
  65. package/dist/labs/SideNav/SideNavHeader.js +58 -0
  66. package/dist/labs/SideNav/SideNavHeader.js.map +1 -0
  67. package/dist/labs/SideNav/SideNavItemContent.js +157 -0
  68. package/dist/labs/SideNav/SideNavItemContent.js.map +1 -0
  69. package/dist/labs/SideNav/SideNavItemLinkContent.js +71 -0
  70. package/dist/labs/SideNav/SideNavItemLinkContent.js.map +1 -0
  71. package/dist/labs/SideNav/index.js +14 -0
  72. package/dist/labs/SideNav/index.js.map +1 -0
  73. package/dist/labs/SideNav/types.js +2 -0
  74. package/dist/labs/SideNav/types.js.map +1 -0
  75. package/dist/labs/Switch.js +70 -16
  76. package/dist/labs/Switch.js.map +1 -1
  77. package/dist/labs/index.js +3 -2
  78. package/dist/labs/index.js.map +1 -1
  79. package/dist/properties/ts/odyssey-react-mui_cs.js +17 -3
  80. package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  81. package/dist/properties/ts/odyssey-react-mui_da.js +17 -3
  82. package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
  83. package/dist/properties/ts/odyssey-react-mui_de.js +16 -2
  84. package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
  85. package/dist/properties/ts/odyssey-react-mui_el.js +18 -4
  86. package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
  87. package/dist/properties/ts/odyssey-react-mui_es.js +17 -3
  88. package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
  89. package/dist/properties/ts/odyssey-react-mui_fi.js +17 -3
  90. package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  91. package/dist/properties/ts/odyssey-react-mui_fr.js +17 -3
  92. package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  93. package/dist/properties/ts/odyssey-react-mui_ht.js +18 -4
  94. package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -1
  95. package/dist/properties/ts/odyssey-react-mui_hu.js +17 -3
  96. package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  97. package/dist/properties/ts/odyssey-react-mui_id.js +17 -3
  98. package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
  99. package/dist/properties/ts/odyssey-react-mui_it.js +17 -3
  100. package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
  101. package/dist/properties/ts/odyssey-react-mui_ja.js +16 -2
  102. package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  103. package/dist/properties/ts/odyssey-react-mui_ko.js +16 -2
  104. package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  105. package/dist/properties/ts/odyssey-react-mui_ms.js +17 -3
  106. package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  107. package/dist/properties/ts/odyssey-react-mui_nb.js +17 -3
  108. package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  109. package/dist/properties/ts/odyssey-react-mui_nl_NL.js +17 -3
  110. package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  111. package/dist/properties/ts/odyssey-react-mui_pl.js +17 -3
  112. package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  113. package/dist/properties/ts/odyssey-react-mui_pt_BR.js +17 -3
  114. package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  115. package/dist/properties/ts/odyssey-react-mui_ro.js +17 -3
  116. package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  117. package/dist/properties/ts/odyssey-react-mui_ru.js +17 -3
  118. package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  119. package/dist/properties/ts/odyssey-react-mui_sv.js +17 -3
  120. package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  121. package/dist/properties/ts/odyssey-react-mui_th.js +16 -2
  122. package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
  123. package/dist/properties/ts/odyssey-react-mui_tr.js +17 -3
  124. package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  125. package/dist/properties/ts/odyssey-react-mui_uk.js +17 -3
  126. package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  127. package/dist/properties/ts/odyssey-react-mui_vi.js +17 -3
  128. package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  129. package/dist/properties/ts/odyssey-react-mui_zh_CN.js +16 -2
  130. package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  131. package/dist/properties/ts/odyssey-react-mui_zh_TW.js +16 -2
  132. package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  133. package/dist/src/Autocomplete.d.ts.map +1 -1
  134. package/dist/src/Checkbox.d.ts +2 -2
  135. package/dist/src/Checkbox.d.ts.map +1 -1
  136. package/dist/src/CheckboxGroup.d.ts +3 -3
  137. package/dist/src/CheckboxGroup.d.ts.map +1 -1
  138. package/dist/src/DataTable/DataTable.d.ts +9 -1
  139. package/dist/src/DataTable/DataTable.d.ts.map +1 -1
  140. package/dist/src/Field.d.ts +3 -2
  141. package/dist/src/Field.d.ts.map +1 -1
  142. package/dist/src/OdysseyCacheProvider.d.ts +7 -3
  143. package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
  144. package/dist/src/OdysseyProvider.d.ts +1 -1
  145. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  146. package/dist/src/OdysseyThemeProvider.d.ts +3 -1
  147. package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
  148. package/dist/src/Radio.d.ts +6 -8
  149. package/dist/src/Radio.d.ts.map +1 -1
  150. package/dist/src/RadioGroup.d.ts +4 -5
  151. package/dist/src/RadioGroup.d.ts.map +1 -1
  152. package/dist/src/Select.d.ts +2 -2
  153. package/dist/src/Select.d.ts.map +1 -1
  154. package/dist/src/ToastStack.d.ts +2 -2
  155. package/dist/src/ToastStack.d.ts.map +1 -1
  156. package/dist/src/{createShadowRootElement.d.ts → createShadowDomElements.d.ts} +6 -1
  157. package/dist/src/createShadowDomElements.d.ts.map +1 -0
  158. package/dist/src/index.d.ts +1 -1
  159. package/dist/src/labs/AppTile.d.ts +39 -0
  160. package/dist/src/labs/AppTile.d.ts.map +1 -0
  161. package/dist/src/labs/DataView/BulkActionsMenu.d.ts.map +1 -0
  162. package/dist/src/labs/{DataComponents/StackContent.d.ts → DataView/CardLayoutContent.d.ts} +7 -7
  163. package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -0
  164. package/dist/src/labs/{DataComponents/StackCard.d.ts → DataView/DataCard.d.ts} +4 -4
  165. package/dist/src/labs/DataView/DataCard.d.ts.map +1 -0
  166. package/dist/src/labs/DataView/DataTable.d.ts +16 -0
  167. package/dist/src/labs/DataView/DataTable.d.ts.map +1 -0
  168. package/dist/src/labs/{DataComponents → DataView}/DataView.d.ts +1 -1
  169. package/dist/src/labs/DataView/DataView.d.ts.map +1 -0
  170. package/dist/src/labs/{DataComponents → DataView}/DetailPanel.d.ts +2 -2
  171. package/dist/src/labs/DataView/DetailPanel.d.ts.map +1 -0
  172. package/dist/src/labs/DataView/LayoutSwitcher.d.ts.map +1 -0
  173. package/dist/src/labs/DataView/RowActions.d.ts.map +1 -0
  174. package/dist/src/labs/{DataComponents/TableContent.d.ts → DataView/TableLayoutContent.d.ts} +7 -7
  175. package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -0
  176. package/dist/src/labs/{DataComponents → DataView}/TableSettings.d.ts +3 -3
  177. package/dist/src/labs/DataView/TableSettings.d.ts.map +1 -0
  178. package/dist/src/labs/{DataComponents → DataView}/componentTypes.d.ts +11 -9
  179. package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -0
  180. package/dist/src/labs/{DataComponents → DataView}/constants.d.ts +1 -1
  181. package/dist/src/labs/DataView/constants.d.ts.map +1 -0
  182. package/dist/src/labs/DataView/dataTypes.d.ts.map +1 -0
  183. package/dist/src/labs/DataView/fetchData.d.ts.map +1 -0
  184. package/dist/src/labs/{DataComponents → DataView}/index.d.ts +0 -1
  185. package/dist/src/labs/DataView/index.d.ts.map +1 -0
  186. package/dist/src/labs/DataView/tableConstants.d.ts.map +1 -0
  187. package/dist/src/labs/{DataComponents → DataView}/useFilterConversion.d.ts +2 -2
  188. package/dist/src/labs/DataView/useFilterConversion.d.ts.map +1 -0
  189. package/dist/src/labs/SideNav/CollapseIcon.d.ts +17 -0
  190. package/dist/src/labs/SideNav/CollapseIcon.d.ts.map +1 -0
  191. package/dist/src/labs/SideNav/SideNav.d.ts +15 -0
  192. package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -0
  193. package/dist/src/labs/SideNav/SideNavFooterContent.d.ts +17 -0
  194. package/dist/src/labs/SideNav/SideNavFooterContent.d.ts.map +1 -0
  195. package/dist/src/labs/SideNav/SideNavHeader.d.ts +16 -0
  196. package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -0
  197. package/dist/src/labs/SideNav/SideNavItemContent.d.ts +33 -0
  198. package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -0
  199. package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts +16 -0
  200. package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts.map +1 -0
  201. package/dist/src/labs/SideNav/index.d.ts +14 -0
  202. package/dist/src/labs/SideNav/index.d.ts.map +1 -0
  203. package/dist/src/labs/{SideNav.d.ts → SideNav/types.d.ts} +31 -33
  204. package/dist/src/labs/SideNav/types.d.ts.map +1 -0
  205. package/dist/src/labs/Switch.d.ts +5 -1
  206. package/dist/src/labs/Switch.d.ts.map +1 -1
  207. package/dist/src/labs/index.d.ts +2 -1
  208. package/dist/src/labs/index.d.ts.map +1 -1
  209. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +15 -1
  210. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  211. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +15 -1
  212. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  213. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +15 -1
  214. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  215. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +15 -1
  216. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  217. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +15 -1
  218. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  219. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +15 -1
  220. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  221. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +15 -1
  222. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  223. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +16 -2
  224. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
  225. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +15 -1
  226. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  227. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +15 -1
  228. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  229. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +15 -1
  230. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  231. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +15 -1
  232. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  233. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +15 -1
  234. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  235. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +15 -1
  236. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  237. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +15 -1
  238. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  239. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +15 -1
  240. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  241. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +15 -1
  242. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  243. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +15 -1
  244. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  245. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +15 -1
  246. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  247. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +15 -1
  248. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  249. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +15 -1
  250. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  251. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +15 -1
  252. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  253. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +15 -1
  254. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  255. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +15 -1
  256. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  257. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +15 -1
  258. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  259. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +15 -1
  260. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  261. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +15 -1
  262. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  263. package/dist/src/theme/components.d.ts +3 -1
  264. package/dist/src/theme/components.d.ts.map +1 -1
  265. package/dist/src/theme/createOdysseyMuiTheme.d.ts +3 -1
  266. package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
  267. package/dist/theme/components.js +232 -146
  268. package/dist/theme/components.js.map +1 -1
  269. package/dist/theme/createOdysseyMuiTheme.js +3 -2
  270. package/dist/theme/createOdysseyMuiTheme.js.map +1 -1
  271. package/dist/tsconfig.production.tsbuildinfo +1 -1
  272. package/package.json +3 -4
  273. package/src/Autocomplete.tsx +108 -45
  274. package/src/Checkbox.tsx +39 -9
  275. package/src/CheckboxGroup.tsx +20 -4
  276. package/src/DataTable/DataTable.tsx +24 -1
  277. package/src/DataTable/useScrollIndication.tsx +2 -2
  278. package/src/Field.tsx +5 -2
  279. package/src/OdysseyCacheProvider.tsx +18 -4
  280. package/src/OdysseyProvider.tsx +6 -3
  281. package/src/OdysseyThemeProvider.tsx +6 -2
  282. package/src/Radio.tsx +42 -13
  283. package/src/RadioGroup.tsx +26 -7
  284. package/src/Select.tsx +78 -45
  285. package/src/ToastStack.tsx +2 -2
  286. package/src/{createShadowRootElement.ts → createShadowDomElements.ts} +24 -5
  287. package/src/index.ts +1 -1
  288. package/src/labs/AppTile.tsx +200 -0
  289. package/src/labs/{DataComponents/StackContent.tsx → DataView/CardLayoutContent.tsx} +24 -19
  290. package/src/labs/{DataComponents/StackCard.tsx → DataView/DataCard.tsx} +7 -7
  291. package/src/labs/{DataComponents → DataView}/DataTable.tsx +8 -4
  292. package/src/labs/{DataComponents → DataView}/DataView.tsx +46 -17
  293. package/src/labs/{DataComponents → DataView}/DetailPanel.tsx +2 -2
  294. package/src/labs/{DataComponents/TableContent.tsx → DataView/TableLayoutContent.tsx} +31 -26
  295. package/src/labs/{DataComponents → DataView}/TableSettings.tsx +5 -4
  296. package/src/labs/{DataComponents → DataView}/componentTypes.ts +11 -9
  297. package/src/labs/{DataComponents → DataView}/constants.tsx +2 -2
  298. package/src/labs/{DataComponents → DataView}/index.tsx +0 -1
  299. package/src/labs/{DataComponents → DataView}/useFilterConversion.ts +2 -2
  300. package/src/labs/SideNav/CollapseIcon.tsx +48 -0
  301. package/src/labs/SideNav/SideNav.tsx +350 -0
  302. package/src/labs/SideNav/SideNavFooterContent.tsx +64 -0
  303. package/src/labs/SideNav/SideNavHeader.tsx +65 -0
  304. package/src/labs/SideNav/SideNavItemContent.tsx +216 -0
  305. package/src/labs/SideNav/SideNavItemLinkContent.tsx +87 -0
  306. package/src/labs/SideNav/index.ts +15 -0
  307. package/src/labs/SideNav/types.ts +125 -0
  308. package/src/labs/Switch.tsx +85 -31
  309. package/src/labs/index.ts +3 -1
  310. package/src/properties/translations/odyssey-react-mui_cs.properties +15 -3
  311. package/src/properties/translations/odyssey-react-mui_da.properties +15 -3
  312. package/src/properties/translations/odyssey-react-mui_de.properties +14 -2
  313. package/src/properties/translations/odyssey-react-mui_el.properties +16 -4
  314. package/src/properties/translations/odyssey-react-mui_es.properties +15 -3
  315. package/src/properties/translations/odyssey-react-mui_fi.properties +15 -3
  316. package/src/properties/translations/odyssey-react-mui_fr.properties +15 -3
  317. package/src/properties/translations/odyssey-react-mui_ht.properties +17 -6
  318. package/src/properties/translations/odyssey-react-mui_hu.properties +15 -3
  319. package/src/properties/translations/odyssey-react-mui_id.properties +15 -3
  320. package/src/properties/translations/odyssey-react-mui_it.properties +15 -3
  321. package/src/properties/translations/odyssey-react-mui_ja.properties +14 -2
  322. package/src/properties/translations/odyssey-react-mui_ko.properties +14 -2
  323. package/src/properties/translations/odyssey-react-mui_ms.properties +15 -3
  324. package/src/properties/translations/odyssey-react-mui_nb.properties +15 -3
  325. package/src/properties/translations/odyssey-react-mui_nl_NL.properties +15 -3
  326. package/src/properties/translations/odyssey-react-mui_pl.properties +15 -3
  327. package/src/properties/translations/odyssey-react-mui_pt_BR.properties +15 -3
  328. package/src/properties/translations/odyssey-react-mui_ro.properties +15 -3
  329. package/src/properties/translations/odyssey-react-mui_ru.properties +15 -3
  330. package/src/properties/translations/odyssey-react-mui_sv.properties +15 -3
  331. package/src/properties/translations/odyssey-react-mui_th.properties +14 -2
  332. package/src/properties/translations/odyssey-react-mui_tr.properties +15 -3
  333. package/src/properties/translations/odyssey-react-mui_uk.properties +15 -3
  334. package/src/properties/translations/odyssey-react-mui_vi.properties +15 -3
  335. package/src/properties/translations/odyssey-react-mui_zh_CN.properties +14 -2
  336. package/src/properties/translations/odyssey-react-mui_zh_TW.properties +14 -2
  337. package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
  338. package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
  339. package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
  340. package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
  341. package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
  342. package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
  343. package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
  344. package/src/properties/ts/odyssey-react-mui_ht.ts +1 -1
  345. package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
  346. package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
  347. package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
  348. package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
  349. package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
  350. package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
  351. package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
  352. package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
  353. package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
  354. package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
  355. package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
  356. package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
  357. package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
  358. package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
  359. package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
  360. package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
  361. package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
  362. package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
  363. package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
  364. package/src/theme/components.tsx +240 -150
  365. package/src/theme/createOdysseyMuiTheme.ts +4 -1
  366. package/dist/createShadowRootElement.js.map +0 -1
  367. package/dist/labs/DataComponents/BulkActionsMenu.js.map +0 -1
  368. package/dist/labs/DataComponents/DataStack.js +0 -85
  369. package/dist/labs/DataComponents/DataStack.js.map +0 -1
  370. package/dist/labs/DataComponents/DataTable.js.map +0 -1
  371. package/dist/labs/DataComponents/DataView.js.map +0 -1
  372. package/dist/labs/DataComponents/DetailPanel.js.map +0 -1
  373. package/dist/labs/DataComponents/LayoutSwitcher.js.map +0 -1
  374. package/dist/labs/DataComponents/RowActions.js.map +0 -1
  375. package/dist/labs/DataComponents/StackCard.js.map +0 -1
  376. package/dist/labs/DataComponents/StackContent.js.map +0 -1
  377. package/dist/labs/DataComponents/TableContent.js.map +0 -1
  378. package/dist/labs/DataComponents/TableSettings.js.map +0 -1
  379. package/dist/labs/DataComponents/componentTypes.js.map +0 -1
  380. package/dist/labs/DataComponents/constants.js.map +0 -1
  381. package/dist/labs/DataComponents/dataTypes.js.map +0 -1
  382. package/dist/labs/DataComponents/fetchData.js.map +0 -1
  383. package/dist/labs/DataComponents/index.js.map +0 -1
  384. package/dist/labs/DataComponents/tableConstants.js.map +0 -1
  385. package/dist/labs/DataComponents/useFilterConversion.js.map +0 -1
  386. package/dist/labs/SideNav.js +0 -478
  387. package/dist/labs/SideNav.js.map +0 -1
  388. package/dist/src/createShadowRootElement.d.ts.map +0 -1
  389. package/dist/src/labs/DataComponents/BulkActionsMenu.d.ts.map +0 -1
  390. package/dist/src/labs/DataComponents/DataStack.d.ts +0 -20
  391. package/dist/src/labs/DataComponents/DataStack.d.ts.map +0 -1
  392. package/dist/src/labs/DataComponents/DataTable.d.ts +0 -16
  393. package/dist/src/labs/DataComponents/DataTable.d.ts.map +0 -1
  394. package/dist/src/labs/DataComponents/DataView.d.ts.map +0 -1
  395. package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +0 -1
  396. package/dist/src/labs/DataComponents/LayoutSwitcher.d.ts.map +0 -1
  397. package/dist/src/labs/DataComponents/RowActions.d.ts.map +0 -1
  398. package/dist/src/labs/DataComponents/StackCard.d.ts.map +0 -1
  399. package/dist/src/labs/DataComponents/StackContent.d.ts.map +0 -1
  400. package/dist/src/labs/DataComponents/TableContent.d.ts.map +0 -1
  401. package/dist/src/labs/DataComponents/TableSettings.d.ts.map +0 -1
  402. package/dist/src/labs/DataComponents/componentTypes.d.ts.map +0 -1
  403. package/dist/src/labs/DataComponents/constants.d.ts.map +0 -1
  404. package/dist/src/labs/DataComponents/dataTypes.d.ts.map +0 -1
  405. package/dist/src/labs/DataComponents/fetchData.d.ts.map +0 -1
  406. package/dist/src/labs/DataComponents/index.d.ts.map +0 -1
  407. package/dist/src/labs/DataComponents/tableConstants.d.ts.map +0 -1
  408. package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +0 -1
  409. package/dist/src/labs/SideNav.d.ts.map +0 -1
  410. package/src/labs/DataComponents/DataStack.tsx +0 -105
  411. package/src/labs/SideNav.tsx +0 -745
  412. /package/dist/labs/{DataComponents → DataView}/BulkActionsMenu.js +0 -0
  413. /package/dist/labs/{DataComponents → DataView}/DetailPanel.js +0 -0
  414. /package/dist/labs/{DataComponents → DataView}/LayoutSwitcher.js +0 -0
  415. /package/dist/labs/{DataComponents → DataView}/RowActions.js +0 -0
  416. /package/dist/labs/{DataComponents → DataView}/componentTypes.js +0 -0
  417. /package/dist/labs/{DataComponents → DataView}/dataTypes.js +0 -0
  418. /package/dist/labs/{DataComponents → DataView}/fetchData.js +0 -0
  419. /package/dist/labs/{DataComponents → DataView}/tableConstants.js +0 -0
  420. /package/dist/labs/{DataComponents → DataView}/useFilterConversion.js +0 -0
  421. /package/dist/src/labs/{DataComponents → DataView}/BulkActionsMenu.d.ts +0 -0
  422. /package/dist/src/labs/{DataComponents → DataView}/LayoutSwitcher.d.ts +0 -0
  423. /package/dist/src/labs/{DataComponents → DataView}/RowActions.d.ts +0 -0
  424. /package/dist/src/labs/{DataComponents → DataView}/dataTypes.d.ts +0 -0
  425. /package/dist/src/labs/{DataComponents → DataView}/fetchData.d.ts +0 -0
  426. /package/dist/src/labs/{DataComponents → DataView}/tableConstants.d.ts +0 -0
  427. /package/src/labs/{DataComponents → DataView}/BulkActionsMenu.tsx +0 -0
  428. /package/src/labs/{DataComponents → DataView}/LayoutSwitcher.tsx +0 -0
  429. /package/src/labs/{DataComponents → DataView}/RowActions.tsx +0 -0
  430. /package/src/labs/{DataComponents → DataView}/dataTypes.ts +0 -0
  431. /package/src/labs/{DataComponents → DataView}/fetchData.ts +0 -0
  432. /package/src/labs/{DataComponents → DataView}/tableConstants.tsx +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNav.js","names":["styled","memo","useMemo","useState","useCallback","useRef","useEffect","Box","ExpandLeftIcon","NavAccordion","useOdysseyDesignTokens","SideNavHeader","SideNavItemContent","SideNavListItemContainer","SideNavFooterContent","jsx","_jsx","jsxs","_jsxs","SideNavCollapsedContainer","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","backgroundColor","HueNeutral300","paddingTop","Spacing5","cursor","width","opacity","visibility","transitionProperty","transitionDuration","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","SideNavExpandContainer","HueNeutralWhite","flexDirection","display","SideNavListContainer","ul","padding","listStyle","listStyleType","SectionHeader","fontSize","TypographySizeOverline","fontWeight","TypographyWeightHeadingBold","color","HueNeutral600","Spacing3","paddingBottom","paddingLeft","Spacing4","textTransform","SideNavFooterContainer","Spacing2","justifyContent","flexWrap","alignItems","TypographyColorHeading","textDecoration","SideNav","navHeaderText","isCollapsible","onCollapse","onExpand","sideNavItems","footerItems","setSideNavCollapsed","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","children","firstItemWithIsSelected","find","isSelected","id","current","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","processedSideNavItems","map","item","childProps","scrollRef","sideNavCollapseHandler","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","sideNavStyles","height","sideNavHeaderContainerStyles","position","top","sideNavListContainerStyles","flex","overflowY","sideNavFooterContainerStyles","bottom","expandLeftIconStyles","margin","Spacing1","sx","tabIndex","role","onClick","onKeyDown","testId","label","isSectionHeader","startIcon","isDefaultExpanded","isDisabled","isExpanded","MemoizedSideNav","displayName"],"sources":["../../../src/labs/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n memo,\n useMemo,\n useState,\n useCallback,\n KeyboardEvent,\n useRef,\n useEffect,\n} from \"react\";\n\nimport { Box } from \"../../Box\";\nimport { ExpandLeftIcon } from \"../../icons.generated\";\nimport { NavAccordion } from \"../NavAccordion\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport type { SideNavProps } from \"./types\";\nimport { SideNavHeader } from \"./SideNavHeader\";\nimport {\n SideNavItemContent,\n SideNavListItemContainer,\n} from \"./SideNavItemContent\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent\";\n\nconst SideNavCollapsedContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutral300,\n paddingTop: odysseyDesignTokens.Spacing5,\n cursor: \"pointer\",\n width: isSideNavCollapsed ? \"auto\" : 0,\n opacity: isSideNavCollapsed ? 1 : 0,\n visibility: isSideNavCollapsed ? \"visible\" : \"hidden\",\n transitionProperty: \"opacity\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n }),\n);\n\nconst SideNavExpandContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexDirection: \"column\",\n display: \"flex\",\n opacity: isSideNavCollapsed ? 0 : 1,\n visibility: isSideNavCollapsed ? \"hidden\" : \"visible\",\n width: isSideNavCollapsed ? \"0\" : \"100%\",\n transitionProperty: \"opacity, width\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n }),\n);\n\nconst SideNavListContainer = styled.ul({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n});\n\nconst SectionHeader = styled(\"li\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n fontWeight: odysseyDesignTokens.TypographyWeightHeadingBold,\n color: odysseyDesignTokens.HueNeutral600,\n paddingTop: odysseyDesignTokens.Spacing3,\n paddingBottom: odysseyDesignTokens.Spacing3,\n paddingLeft: odysseyDesignTokens.Spacing4,\n textTransform: \"uppercase\",\n}));\n\nconst SideNavFooterContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n paddingTop: odysseyDesignTokens.Spacing2,\n paddingBottom: odysseyDesignTokens.Spacing2,\n display: \"flex\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n \"& a\": {\n color: `${odysseyDesignTokens.TypographyColorHeading} !important`,\n },\n \"& a:hover\": {\n textDecoration: \"none\",\n },\n \"& a:visited\": {\n color: odysseyDesignTokens.TypographyColorHeading,\n },\n}));\n\nconst SideNav = ({\n navHeaderText,\n isCollapsible,\n onCollapse,\n onExpand,\n sideNavItems,\n footerItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setSideNavCollapsed] = useState(false);\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = sideNavItems.flatMap((sideNavItem) =>\n sideNavItem.children\n ? [sideNavItem, ...sideNavItem.children]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItems]);\n /**\n * Once we've rendered and if we have an item to scroll to, do the scroll action.\n * This must rely on checking firstSideNavItemIdWithIsSelected or it will not run\n * once the actual ref is populated.\n */\n useEffect(() => {\n if (firstSideNavItemIdWithIsSelected && scrollIntoViewRef.current) {\n scrollIntoViewRef.current.scrollIntoView();\n }\n }, [firstSideNavItemIdWithIsSelected, scrollIntoViewRef]);\n\n /**\n * We only want to put a ref on a node iff it is the first selected node.\n * This function returns the ref only if the ID provided matches the first\n * selected node, otherwise returns undefined (so that the node has no ref)\n */\n const getRefIfThisIsFirstNodeWithIsSelected = useCallback(\n (itemId: string) =>\n itemId === firstSideNavItemIdWithIsSelected\n ? scrollIntoViewRef\n : undefined,\n [firstSideNavItemIdWithIsSelected],\n );\n\n const processedSideNavItems = useMemo(\n () =>\n sideNavItems.map((item) => ({\n ...item,\n children: item.children?.map((childProps) => (\n <SideNavItemContent\n key={childProps.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n {...childProps}\n />\n )),\n })),\n [getRefIfThisIsFirstNodeWithIsSelected, sideNavItems],\n );\n\n const sideNavCollapseHandler = useCallback(() => {\n setSideNavCollapsed(!isSideNavCollapsed);\n onCollapse?.();\n }, [isSideNavCollapsed, setSideNavCollapsed, onCollapse]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n setSideNavCollapsed(!isSideNavCollapsed);\n onExpand?.();\n }, [isSideNavCollapsed, setSideNavCollapsed, onExpand]);\n\n const sideNavExpandKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n setSideNavCollapsed(!isSideNavCollapsed);\n onExpand?.();\n }\n },\n [isSideNavCollapsed, setSideNavCollapsed, onExpand],\n );\n\n const sideNavStyles = useMemo(\n () => ({\n display: \"flex\",\n height: \"100vh\",\n }),\n [],\n );\n\n const sideNavHeaderContainerStyles = useMemo(\n () => ({\n position: \"sticky\",\n top: 0,\n }),\n [],\n );\n\n const sideNavListContainerStyles = useMemo(\n () => ({\n flex: 1,\n overflowY: \"auto\",\n }),\n [],\n );\n\n const sideNavFooterContainerStyles = useMemo(\n () => ({\n position: \"sticky\",\n bottom: 0,\n paddingTop: odysseyDesignTokens.Spacing2,\n }),\n [odysseyDesignTokens],\n );\n\n const expandLeftIconStyles = useMemo(\n () => ({\n fontSize: \"1em\",\n margin: `0 ${odysseyDesignTokens.Spacing1}`,\n }),\n [odysseyDesignTokens],\n );\n\n return (\n <Box sx={sideNavStyles}>\n <SideNavCollapsedContainer\n tabIndex={0}\n role=\"button\"\n odysseyDesignTokens={odysseyDesignTokens}\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onKeyDown={sideNavExpandKeyHandler}\n data-se=\"collapsed-region\"\n data-aria-label=\"expand side navigation\"\n >\n <ExpandLeftIcon sx={expandLeftIconStyles} />\n </SideNavCollapsedContainer>\n <SideNavExpandContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isSideNavCollapsed={isSideNavCollapsed}\n data-se=\"expanded-region\"\n >\n <Box sx={sideNavHeaderContainerStyles}>\n <SideNavHeader\n navHeaderText={navHeaderText}\n isCollapsible={isCollapsible}\n onCollapse={sideNavCollapseHandler}\n />\n </Box>\n <Box sx={sideNavListContainerStyles} testId=\"scrollable-region\">\n <SideNavListContainer>\n {processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n children,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <SectionHeader\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {label}\n </SectionHeader>\n );\n } else if (children) {\n return (\n <SideNavListItemContainer\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <NavAccordion\n label={label}\n isDefaultExpanded={isDefaultExpanded}\n isExpanded={isExpanded}\n startIcon={startIcon}\n isDisabled={isDisabled}\n >\n <SideNavListContainer id={`${id}-list`}>\n {children}\n </SideNavListContainer>\n </NavAccordion>\n </SideNavListItemContainer>\n );\n } else {\n return (\n <SideNavItemContent\n key={item.id}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n {...item}\n />\n );\n }\n })}\n </SideNavListContainer>\n </Box>\n {footerItems && (\n <Box sx={sideNavFooterContainerStyles}>\n <SideNavFooterContainer odysseyDesignTokens={odysseyDesignTokens}>\n <SideNavFooterContent footerItems={footerItems} />\n </SideNavFooterContainer>\n </Box>\n )}\n </SideNavExpandContainer>\n </Box>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /*!
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { memo, useMemo } from "react";
14
+ import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
15
+ import { Box } from "../../Box.js";
16
+ import { Link } from "../../Link.js";
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ import { jsxs as _jsxs } from "react/jsx-runtime";
19
+ const SideNavFooterContent = ({
20
+ footerItems
21
+ }) => {
22
+ const odysseyDesignTokens = useOdysseyDesignTokens();
23
+ const footerContent = useMemo(() => {
24
+ return footerItems?.map((item, index) => _jsxs(Box, {
25
+ sx: {
26
+ display: "flex"
27
+ },
28
+ children: [item.href ? _jsx(Link, {
29
+ href: item.href,
30
+ children: item.label
31
+ }, item.id) : _jsx(Box, {
32
+ component: "span",
33
+ children: item.label
34
+ }, item.id), index < footerItems.length - 1 && _jsx(Box, {
35
+ sx: {
36
+ marginLeft: odysseyDesignTokens.Spacing4,
37
+ marginRight: odysseyDesignTokens.Spacing4,
38
+ color: odysseyDesignTokens.HueNeutral300
39
+ },
40
+ children: "|"
41
+ }, `${item.id}-separator`)]
42
+ }, `${item.id}-wrapper`));
43
+ }, [footerItems, odysseyDesignTokens]);
44
+ return footerContent;
45
+ };
46
+ const MemoizedSideNavFooterContent = memo(SideNavFooterContent);
47
+ MemoizedSideNavFooterContent.displayName = "SideNavFooterContent";
48
+ export { MemoizedSideNavFooterContent as SideNavFooterContent };
49
+ //# sourceMappingURL=SideNavFooterContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavFooterContent.js","names":["memo","useMemo","useOdysseyDesignTokens","Box","Link","jsx","_jsx","jsxs","_jsxs","SideNavFooterContent","footerItems","odysseyDesignTokens","footerContent","map","item","index","sx","display","children","href","label","id","component","length","marginLeft","Spacing4","marginRight","color","HueNeutral300","MemoizedSideNavFooterContent","displayName"],"sources":["../../../src/labs/SideNav/SideNavFooterContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { memo, useMemo } from \"react\";\nimport { useOdysseyDesignTokens } from \"../../OdysseyDesignTokensContext\";\nimport type { SideNavFooterItem } from \"./types\";\nimport { Box } from \"../../Box\";\nimport { Link } from \"../../Link\";\n\nconst SideNavFooterContent = ({\n footerItems,\n}: {\n footerItems: SideNavFooterItem[];\n}) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const footerContent = useMemo(() => {\n return footerItems?.map((item, index) => (\n <Box\n key={`${item.id}-wrapper`}\n sx={{\n display: \"flex\",\n }}\n >\n {item.href ? (\n <Link key={item.id} href={item.href}>\n {item.label}\n </Link>\n ) : (\n <Box component=\"span\" key={item.id}>\n {item.label}\n </Box>\n )}\n {index < footerItems.length - 1 && (\n <Box\n key={`${item.id}-separator`}\n sx={{\n marginLeft: odysseyDesignTokens.Spacing4,\n marginRight: odysseyDesignTokens.Spacing4,\n color: odysseyDesignTokens.HueNeutral300,\n }}\n >\n |\n </Box>\n )}\n </Box>\n ));\n }, [footerItems, odysseyDesignTokens]);\n\n return footerContent;\n};\nconst MemoizedSideNavFooterContent = memo(SideNavFooterContent);\nMemoizedSideNavFooterContent.displayName = \"SideNavFooterContent\";\n\nexport { MemoizedSideNavFooterContent as SideNavFooterContent };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AAAC,SAC7BC,sBAAsB;AAAA,SAEtBC,GAAG;AAAA,SACHC,IAAI;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEb,MAAMC,oBAAoB,GAAGA,CAAC;EAC5BC;AAGF,CAAC,KAAK;EACJ,MAAMC,mBAAmB,GAAGT,sBAAsB,CAAC,CAAC;EAEpD,MAAMU,aAAa,GAAGX,OAAO,CAAC,MAAM;IAClC,OAAOS,WAAW,EAAEG,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAClCP,KAAA,CAACL,GAAG;MAEFa,EAAE,EAAE;QACFC,OAAO,EAAE;MACX,CAAE;MAAAC,QAAA,GAEDJ,IAAI,CAACK,IAAI,GACRb,IAAA,CAACF,IAAI;QAAee,IAAI,EAAEL,IAAI,CAACK,IAAK;QAAAD,QAAA,EACjCJ,IAAI,CAACM;MAAK,GADFN,IAAI,CAACO,EAEV,CAAC,GAEPf,IAAA,CAACH,GAAG;QAACmB,SAAS,EAAC,MAAM;QAAAJ,QAAA,EAClBJ,IAAI,CAACM;MAAK,GADcN,IAAI,CAACO,EAE3B,CACN,EACAN,KAAK,GAAGL,WAAW,CAACa,MAAM,GAAG,CAAC,IAC7BjB,IAAA,CAACH,GAAG;QAEFa,EAAE,EAAE;UACFQ,UAAU,EAAEb,mBAAmB,CAACc,QAAQ;UACxCC,WAAW,EAAEf,mBAAmB,CAACc,QAAQ;UACzCE,KAAK,EAAEhB,mBAAmB,CAACiB;QAC7B,CAAE;QAAAV,QAAA,EACH;MAED,GARQ,GAAEJ,IAAI,CAACO,EAAG,YAQb,CACN;IAAA,GAzBK,GAAEP,IAAI,CAACO,EAAG,UA0Bb,CACN,CAAC;EACJ,CAAC,EAAE,CAACX,WAAW,EAAEC,mBAAmB,CAAC,CAAC;EAEtC,OAAOC,aAAa;AACtB,CAAC;AACD,MAAMiB,4BAA4B,GAAG7B,IAAI,CAACS,oBAAoB,CAAC;AAC/DoB,4BAA4B,CAACC,WAAW,GAAG,sBAAsB;AAEjE,SAASD,4BAA4B,IAAIpB,oBAAoB"}
@@ -0,0 +1,58 @@
1
+ /*!
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import styled from "@emotion/styled";
14
+ import { memo, useMemo } from "react";
15
+ import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
16
+ import { Box } from "../../Box.js";
17
+ import { Heading6 } from "../../Typography.js";
18
+ import { CollapseIcon } from "./CollapseIcon.js";
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { jsxs as _jsxs } from "react/jsx-runtime";
21
+ const SideNavHeaderContainer = styled("div", {
22
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
23
+ })(({
24
+ odysseyDesignTokens
25
+ }) => ({
26
+ display: "flex",
27
+ justifyContent: "space-between",
28
+ alignItems: "center",
29
+ paddingLeft: odysseyDesignTokens.Spacing4,
30
+ paddingRight: odysseyDesignTokens.Spacing4,
31
+ paddingTop: odysseyDesignTokens.Spacing3,
32
+ paddingBottom: odysseyDesignTokens.Spacing3
33
+ }));
34
+ const SideNavHeader = ({
35
+ navHeaderText,
36
+ isCollapsible,
37
+ onCollapse
38
+ }) => {
39
+ const odysseyDesignTokens = useOdysseyDesignTokens();
40
+ const sideNavHeaderStyles = useMemo(() => ({
41
+ marginTop: odysseyDesignTokens.Spacing2
42
+ }), [odysseyDesignTokens]);
43
+ return _jsxs(SideNavHeaderContainer, {
44
+ odysseyDesignTokens: odysseyDesignTokens,
45
+ children: [_jsx(Box, {
46
+ sx: sideNavHeaderStyles,
47
+ children: _jsx(Heading6, {
48
+ children: navHeaderText
49
+ })
50
+ }), isCollapsible && _jsx(CollapseIcon, {
51
+ onClick: onCollapse
52
+ })]
53
+ });
54
+ };
55
+ const MemoizedSideNavHeader = memo(SideNavHeader);
56
+ MemoizedSideNavHeader.displayName = "SideNavHeader";
57
+ export { MemoizedSideNavHeader as SideNavHeader };
58
+ //# sourceMappingURL=SideNavHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavHeader.js","names":["styled","memo","useMemo","useOdysseyDesignTokens","Box","Heading6","CollapseIcon","jsx","_jsx","jsxs","_jsxs","SideNavHeaderContainer","shouldForwardProp","prop","odysseyDesignTokens","display","justifyContent","alignItems","paddingLeft","Spacing4","paddingRight","paddingTop","Spacing3","paddingBottom","SideNavHeader","navHeaderText","isCollapsible","onCollapse","sideNavHeaderStyles","marginTop","Spacing2","children","sx","onClick","MemoizedSideNavHeader","displayName"],"sources":["../../../src/labs/SideNav/SideNavHeader.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { memo, ReactNode, useMemo } from \"react\";\nimport {\n type DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport { Box } from \"../../Box\";\nimport { Heading6 } from \"../../Typography\";\nimport { CollapseIcon } from \"./CollapseIcon\";\nimport type { SideNavProps } from \"./types\";\n\nconst SideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingLeft: odysseyDesignTokens.Spacing4,\n paddingRight: odysseyDesignTokens.Spacing4,\n paddingTop: odysseyDesignTokens.Spacing3,\n paddingBottom: odysseyDesignTokens.Spacing3,\n}));\n\nconst SideNavHeader = ({\n navHeaderText,\n isCollapsible,\n onCollapse,\n}: Pick<\n SideNavProps,\n \"navHeaderText\" | \"isCollapsible\" | \"onCollapse\"\n>): ReactNode => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const sideNavHeaderStyles = useMemo(\n () => ({\n marginTop: odysseyDesignTokens.Spacing2,\n }),\n [odysseyDesignTokens],\n );\n\n return (\n <SideNavHeaderContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Box sx={sideNavHeaderStyles}>\n <Heading6>{navHeaderText}</Heading6>\n </Box>\n {isCollapsible && <CollapseIcon onClick={onCollapse} />}\n </SideNavHeaderContainer>\n );\n};\nconst MemoizedSideNavHeader = memo(SideNavHeader);\nMemoizedSideNavHeader.displayName = \"SideNavHeader\";\n\nexport { MemoizedSideNavHeader as SideNavHeader };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,IAAI,EAAaC,OAAO,QAAQ,OAAO;AAAC,SAG/CC,sBAAsB;AAAA,SAEfC,GAAG;AAAA,SACHC,QAAQ;AAAA,SACRC,YAAY;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGrB,MAAMC,sBAAsB,GAAGX,MAAM,CAAC,KAAK,EAAE;EAC3CY,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAAC,CAAC;EAAEC;AAA2D,CAAC,MAAM;EACtEC,OAAO,EAAE,MAAM;EACfC,cAAc,EAAE,eAAe;EAC/BC,UAAU,EAAE,QAAQ;EACpBC,WAAW,EAAEJ,mBAAmB,CAACK,QAAQ;EACzCC,YAAY,EAAEN,mBAAmB,CAACK,QAAQ;EAC1CE,UAAU,EAAEP,mBAAmB,CAACQ,QAAQ;EACxCC,aAAa,EAAET,mBAAmB,CAACQ;AACrC,CAAC,CAAC,CAAC;AAEH,MAAME,aAAa,GAAGA,CAAC;EACrBC,aAAa;EACbC,aAAa;EACbC;AAIF,CAAC,KAAgB;EACf,MAAMb,mBAAmB,GAAGX,sBAAsB,CAAC,CAAC;EAEpD,MAAMyB,mBAAmB,GAAG1B,OAAO,CACjC,OAAO;IACL2B,SAAS,EAAEf,mBAAmB,CAACgB;EACjC,CAAC,CAAC,EACF,CAAChB,mBAAmB,CACtB,CAAC;EAED,OACEJ,KAAA,CAACC,sBAAsB;IAACG,mBAAmB,EAAEA,mBAAoB;IAAAiB,QAAA,GAC/DvB,IAAA,CAACJ,GAAG;MAAC4B,EAAE,EAAEJ,mBAAoB;MAAAG,QAAA,EAC3BvB,IAAA,CAACH,QAAQ;QAAA0B,QAAA,EAAEN;MAAa,CAAW;IAAC,CACjC,CAAC,EACLC,aAAa,IAAIlB,IAAA,CAACF,YAAY;MAAC2B,OAAO,EAAEN;IAAW,CAAE,CAAC;EAAA,CACjC,CAAC;AAE7B,CAAC;AACD,MAAMO,qBAAqB,GAAGjC,IAAI,CAACuB,aAAa,CAAC;AACjDU,qBAAqB,CAACC,WAAW,GAAG,eAAe;AAEnD,SAASD,qBAAqB,IAAIV,aAAa"}
@@ -0,0 +1,157 @@
1
+ /*!
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import styled from "@emotion/styled";
14
+ import { useRef, useImperativeHandle, useCallback, memo } from "react";
15
+ import { Link } from "../../Link.js";
16
+ import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
17
+ import { SideNavItemLinkContent } from "./SideNavItemLinkContent.js";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ export const SideNavListItemContainer = styled("li", {
20
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isSelected" && prop !== "isDisabled"
21
+ })(({
22
+ odysseyDesignTokens,
23
+ isSelected,
24
+ isDisabled
25
+ }) => ({
26
+ display: "flex",
27
+ alignItems: "center",
28
+ cursor: isDisabled ? "default" : "pointer",
29
+ pointerEvents: isDisabled ? "none" : "auto",
30
+ backgroundColor: isSelected ? odysseyDesignTokens.HueNeutral50 : "unset",
31
+ margin: `${odysseyDesignTokens.Spacing1} 0`,
32
+ "&:last-child": {
33
+ marginBottom: odysseyDesignTokens.Spacing2
34
+ },
35
+ "& a": {
36
+ display: "flex",
37
+ alignItems: "center",
38
+ width: "100%",
39
+ minHeight: "48px",
40
+ padding: `${odysseyDesignTokens.Spacing3} ${odysseyDesignTokens.Spacing4}`,
41
+ color: `${odysseyDesignTokens.TypographyColorHeading} !important`,
42
+ pointerEvents: isDisabled ? "none" : "auto"
43
+ },
44
+ "& a:hover": {
45
+ textDecoration: "none",
46
+ cursor: isDisabled ? "default" : "pointer",
47
+ backgroundColor: !isDisabled ? odysseyDesignTokens.HueNeutral50 : "inherit"
48
+ },
49
+ "& a:focus-visible": {
50
+ outlineOffset: 0,
51
+ borderRadius: 0,
52
+ outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,
53
+ backgroundColor: !isDisabled ? odysseyDesignTokens.HueNeutral50 : "inherit"
54
+ }
55
+ }));
56
+ const scrollToNode = node => {
57
+ if (node) {
58
+ node?.scrollIntoView({
59
+ behavior: "instant",
60
+ block: "center",
61
+ inline: "nearest"
62
+ });
63
+ }
64
+ };
65
+ const SideNavItemContent = ({
66
+ id,
67
+ label,
68
+ href,
69
+ target,
70
+ startIcon,
71
+ severity,
72
+ statusLabel,
73
+ endIcon,
74
+ onClick,
75
+ isSelected,
76
+ isDisabled,
77
+ scrollRef
78
+ }) => {
79
+ const localScrollRef = useRef(null);
80
+ useImperativeHandle(scrollRef, () => {
81
+ return {
82
+ scrollIntoView: () => {
83
+ scrollToNode(localScrollRef.current);
84
+ }
85
+ };
86
+ }, []);
87
+ const odysseyDesignTokens = useOdysseyDesignTokens();
88
+ const NavItemContentClickContainer = styled("div", {
89
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
90
+ })(() => ({
91
+ display: "flex",
92
+ alignItems: "center",
93
+ width: "100%",
94
+ minHeight: "48px",
95
+ padding: `${odysseyDesignTokens.Spacing3} ${odysseyDesignTokens.Spacing4}`,
96
+ color: `${isDisabled ? odysseyDesignTokens.TypographyColorDisabled : odysseyDesignTokens.TypographyColorHeading} !important`,
97
+ "&:focus-visible": {
98
+ borderRadius: 0,
99
+ outlineColor: odysseyDesignTokens.FocusOutlineColorPrimary,
100
+ outlineStyle: odysseyDesignTokens.FocusOutlineStyle,
101
+ outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,
102
+ backgroundColor: odysseyDesignTokens.HueNeutral50,
103
+ textDecoration: "none"
104
+ }
105
+ }));
106
+ const sideNavItemContentKeyHandler = useCallback(event => {
107
+ if (event?.key === "Enter") {
108
+ event.preventDefault();
109
+ onClick?.();
110
+ }
111
+ }, [onClick]);
112
+ return _jsx(SideNavListItemContainer, {
113
+ ref: localScrollRef,
114
+ id: id,
115
+ disabled: isDisabled,
116
+ "aria-disabled": isDisabled,
117
+ isDisabled: isDisabled,
118
+ isSelected: isSelected,
119
+ odysseyDesignTokens: odysseyDesignTokens,
120
+ children: isDisabled ? _jsx(NavItemContentClickContainer, {
121
+ children: _jsx(SideNavItemLinkContent, {
122
+ label: label,
123
+ startIcon: startIcon,
124
+ endIcon: endIcon,
125
+ statusLabel: statusLabel,
126
+ severity: severity
127
+ })
128
+ }) : !href ? _jsx(NavItemContentClickContainer, {
129
+ role: "button",
130
+ tabIndex: 0,
131
+ onClick: onClick,
132
+ onKeyDown: sideNavItemContentKeyHandler,
133
+ children: _jsx(SideNavItemLinkContent, {
134
+ label: label,
135
+ startIcon: startIcon,
136
+ endIcon: endIcon,
137
+ statusLabel: statusLabel,
138
+ severity: severity
139
+ })
140
+ }) : _jsx(Link, {
141
+ href: href,
142
+ target: target,
143
+ onClick: onClick,
144
+ children: _jsx(SideNavItemLinkContent, {
145
+ label: label,
146
+ startIcon: startIcon,
147
+ endIcon: endIcon,
148
+ statusLabel: statusLabel,
149
+ severity: severity
150
+ })
151
+ })
152
+ }, id);
153
+ };
154
+ const MemoizedSideNavItemContent = memo(SideNavItemContent);
155
+ MemoizedSideNavItemContent.displayName = "SideNavItemContent";
156
+ export { MemoizedSideNavItemContent as SideNavItemContent };
157
+ //# sourceMappingURL=SideNavItemContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavItemContent.js","names":["styled","useRef","useImperativeHandle","useCallback","memo","Link","useOdysseyDesignTokens","SideNavItemLinkContent","jsx","_jsx","SideNavListItemContainer","shouldForwardProp","prop","odysseyDesignTokens","isSelected","isDisabled","display","alignItems","cursor","pointerEvents","backgroundColor","HueNeutral50","margin","Spacing1","marginBottom","Spacing2","width","minHeight","padding","Spacing3","Spacing4","color","TypographyColorHeading","textDecoration","outlineOffset","borderRadius","outlineWidth","FocusOutlineWidthMain","scrollToNode","node","scrollIntoView","behavior","block","inline","SideNavItemContent","id","label","href","target","startIcon","severity","statusLabel","endIcon","onClick","scrollRef","localScrollRef","current","NavItemContentClickContainer","TypographyColorDisabled","outlineColor","FocusOutlineColorPrimary","outlineStyle","FocusOutlineStyle","sideNavItemContentKeyHandler","event","key","preventDefault","ref","disabled","children","role","tabIndex","onKeyDown","MemoizedSideNavItemContent","displayName"],"sources":["../../../src/labs/SideNav/SideNavItemContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n useRef,\n useImperativeHandle,\n useCallback,\n memo,\n KeyboardEvent,\n} from \"react\";\nimport { Link } from \"../../Link\";\nimport {\n type DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport { SideNavItemLinkContent } from \"./SideNavItemLinkContent\";\nimport type { SideNavItem } from \"./types\";\n\nexport const SideNavListItemContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isSelected\" &&\n prop !== \"isDisabled\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isSelected?: boolean;\n disabled?: boolean;\n isDisabled?: boolean;\n}>(({ odysseyDesignTokens, isSelected, isDisabled }) => ({\n display: \"flex\",\n alignItems: \"center\",\n cursor: isDisabled ? \"default\" : \"pointer\",\n pointerEvents: isDisabled ? \"none\" : \"auto\",\n backgroundColor: isSelected ? odysseyDesignTokens.HueNeutral50 : \"unset\",\n margin: `${odysseyDesignTokens.Spacing1} 0`,\n \"&:last-child\": {\n marginBottom: odysseyDesignTokens.Spacing2,\n },\n \"& a\": {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n minHeight: \"48px\",\n padding: `${odysseyDesignTokens.Spacing3} ${odysseyDesignTokens.Spacing4}`,\n color: `${odysseyDesignTokens.TypographyColorHeading} !important`,\n pointerEvents: isDisabled ? \"none\" : \"auto\",\n },\n \"& a:hover\": {\n textDecoration: \"none\",\n cursor: isDisabled ? \"default\" : \"pointer\",\n backgroundColor: !isDisabled ? odysseyDesignTokens.HueNeutral50 : \"inherit\",\n },\n \"& a:focus-visible\": {\n outlineOffset: 0,\n borderRadius: 0,\n outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,\n backgroundColor: !isDisabled ? odysseyDesignTokens.HueNeutral50 : \"inherit\",\n },\n}));\n\nconst scrollToNode = (node: HTMLElement | null) => {\n if (node) {\n node?.scrollIntoView({\n behavior: \"instant\",\n block: \"center\",\n inline: \"nearest\",\n });\n }\n};\n\ntype ScrollIntoViewHandle = {\n scrollIntoView: () => void;\n};\n\nconst SideNavItemContent = ({\n id,\n label,\n href,\n target,\n startIcon,\n severity,\n statusLabel,\n endIcon,\n onClick,\n isSelected,\n isDisabled,\n scrollRef,\n}: Pick<\n SideNavItem,\n | \"id\"\n | \"label\"\n | \"href\"\n | \"target\"\n | \"startIcon\"\n | \"severity\"\n | \"statusLabel\"\n | \"endIcon\"\n | \"onClick\"\n | \"isSelected\"\n | \"isDisabled\"\n> & {\n /**\n * The ref used to scroll to this item\n */\n scrollRef?: React.RefObject<ScrollIntoViewHandle>;\n}) => {\n const localScrollRef = useRef<HTMLLIElement>(null);\n useImperativeHandle(\n scrollRef,\n () => {\n return {\n scrollIntoView: () => {\n scrollToNode(localScrollRef.current);\n },\n };\n },\n [],\n );\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const NavItemContentClickContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n })(() => ({\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n minHeight: \"48px\",\n padding: `${odysseyDesignTokens.Spacing3} ${odysseyDesignTokens.Spacing4}`,\n color: `${isDisabled ? odysseyDesignTokens.TypographyColorDisabled : odysseyDesignTokens.TypographyColorHeading} !important`,\n \"&:focus-visible\": {\n borderRadius: 0,\n outlineColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n outlineStyle: odysseyDesignTokens.FocusOutlineStyle,\n outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n textDecoration: \"none\",\n },\n }));\n\n const sideNavItemContentKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event?.key === \"Enter\") {\n event.preventDefault();\n onClick?.();\n }\n },\n [onClick],\n );\n\n return (\n <SideNavListItemContainer\n ref={localScrollRef}\n id={id}\n key={id}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n isDisabled={isDisabled}\n isSelected={isSelected}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {\n // Use Link for nav items with links and div for disabled or non-link items\n isDisabled ? (\n <NavItemContentClickContainer>\n <SideNavItemLinkContent\n label={label}\n startIcon={startIcon}\n endIcon={endIcon}\n statusLabel={statusLabel}\n severity={severity}\n />\n </NavItemContentClickContainer>\n ) : !href ? (\n <NavItemContentClickContainer\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={sideNavItemContentKeyHandler}\n >\n <SideNavItemLinkContent\n label={label}\n startIcon={startIcon}\n endIcon={endIcon}\n statusLabel={statusLabel}\n severity={severity}\n />\n </NavItemContentClickContainer>\n ) : (\n <Link href={href} target={target} onClick={onClick}>\n <SideNavItemLinkContent\n label={label}\n startIcon={startIcon}\n endIcon={endIcon}\n statusLabel={statusLabel}\n severity={severity}\n />\n </Link>\n )\n }\n </SideNavListItemContainer>\n );\n};\nconst MemoizedSideNavItemContent = memo(SideNavItemContent);\nMemoizedSideNavItemContent.displayName = \"SideNavItemContent\";\n\nexport { MemoizedSideNavItemContent as SideNavItemContent };\n"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /*!
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import styled from "@emotion/styled";
14
+ import { memo, useMemo } from "react";
15
+ import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
16
+ import { Box } from "../../Box.js";
17
+ import { Status } from "../../Status.js";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ import { jsxs as _jsxs } from "react/jsx-runtime";
20
+ import { Fragment as _Fragment } from "react/jsx-runtime";
21
+ const SideNavItemLabelContainer = styled("div", {
22
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isIconVisible"
23
+ })(({
24
+ odysseyDesignTokens,
25
+ isIconVisible
26
+ }) => ({
27
+ width: "100%",
28
+ display: "flex",
29
+ flexWrap: "wrap",
30
+ alignItems: "center",
31
+ fontSize: odysseyDesignTokens.TypographyScale0,
32
+ fontWeight: odysseyDesignTokens.TypographyWeightHeading,
33
+ marginLeft: isIconVisible ? odysseyDesignTokens.Spacing2 : 0,
34
+ "& a": {
35
+ color: `${odysseyDesignTokens.TypographyColorHeading} !important`,
36
+ fontSize: odysseyDesignTokens.TypographyScale0
37
+ },
38
+ "& a:hover": {
39
+ textDecoration: "none",
40
+ cursor: "pointer"
41
+ }
42
+ }));
43
+ const SideNavItemLinkContent = ({
44
+ label,
45
+ startIcon,
46
+ endIcon,
47
+ severity,
48
+ statusLabel
49
+ }) => {
50
+ const odysseyDesignTokens = useOdysseyDesignTokens();
51
+ const sideNavItemContentStyles = useMemo(() => ({
52
+ marginLeft: odysseyDesignTokens.Spacing2
53
+ }), [odysseyDesignTokens]);
54
+ return _jsxs(_Fragment, {
55
+ children: [startIcon && startIcon, _jsxs(SideNavItemLabelContainer, {
56
+ odysseyDesignTokens: odysseyDesignTokens,
57
+ isIconVisible: Boolean(startIcon),
58
+ children: [label, severity && _jsx(Box, {
59
+ sx: sideNavItemContentStyles,
60
+ children: _jsx(Status, {
61
+ severity: severity,
62
+ label: statusLabel || ""
63
+ })
64
+ })]
65
+ }), endIcon && endIcon]
66
+ });
67
+ };
68
+ const MemoizedSideNavItemLinkContent = memo(SideNavItemLinkContent);
69
+ MemoizedSideNavItemLinkContent.displayName = "SideNavItemLinkContent";
70
+ export { MemoizedSideNavItemLinkContent as SideNavItemLinkContent };
71
+ //# sourceMappingURL=SideNavItemLinkContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavItemLinkContent.js","names":["styled","memo","useMemo","useOdysseyDesignTokens","Box","Status","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SideNavItemLabelContainer","shouldForwardProp","prop","odysseyDesignTokens","isIconVisible","width","display","flexWrap","alignItems","fontSize","TypographyScale0","fontWeight","TypographyWeightHeading","marginLeft","Spacing2","color","TypographyColorHeading","textDecoration","cursor","SideNavItemLinkContent","label","startIcon","endIcon","severity","statusLabel","sideNavItemContentStyles","children","Boolean","sx","MemoizedSideNavItemLinkContent","displayName"],"sources":["../../../src/labs/SideNav/SideNavItemLinkContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { memo, ReactNode, useMemo } from \"react\";\nimport {\n type DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport { Box } from \"../../Box\";\nimport { Status } from \"../../Status\";\nimport type { SideNavItem } from \"./types\";\n\nconst SideNavItemLabelContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isIconVisible\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isIconVisible: boolean;\n}>(({ odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographyScale0,\n fontWeight: odysseyDesignTokens.TypographyWeightHeading,\n marginLeft: isIconVisible ? odysseyDesignTokens.Spacing2 : 0,\n \"& a\": {\n color: `${odysseyDesignTokens.TypographyColorHeading} !important`,\n fontSize: odysseyDesignTokens.TypographyScale0,\n },\n \"& a:hover\": {\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n}));\n\nconst SideNavItemLinkContent = ({\n label,\n startIcon,\n endIcon,\n severity,\n statusLabel,\n}: Pick<\n SideNavItem,\n \"label\" | \"startIcon\" | \"endIcon\" | \"severity\" | \"statusLabel\"\n>): ReactNode => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const sideNavItemContentStyles = useMemo(\n () => ({\n marginLeft: odysseyDesignTokens.Spacing2,\n }),\n [odysseyDesignTokens],\n );\n\n return (\n <>\n {startIcon && startIcon}\n <SideNavItemLabelContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isIconVisible={Boolean(startIcon)}\n >\n {label}\n {severity && (\n <Box sx={sideNavItemContentStyles}>\n <Status severity={severity} label={statusLabel || \"\"} />\n </Box>\n )}\n </SideNavItemLabelContainer>\n {endIcon && endIcon}\n </>\n );\n};\nconst MemoizedSideNavItemLinkContent = memo(SideNavItemLinkContent);\nMemoizedSideNavItemLinkContent.displayName = \"SideNavItemLinkContent\";\n\nexport { MemoizedSideNavItemLinkContent as SideNavItemLinkContent };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,iBAAiB;AACpC,SAASC,IAAI,EAAaC,OAAO,QAAQ,OAAO;AAAC,SAG/CC,sBAAsB;AAAA,SAEfC,GAAG;AAAA,SACHC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAGf,MAAMC,yBAAyB,GAAGZ,MAAM,CAAC,KAAK,EAAE;EAC9Ca,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAC,CAGC,CAAC;EAAEC,mBAAmB;EAAEC;AAAc,CAAC,MAAM;EAC9CC,KAAK,EAAE,MAAM;EACbC,OAAO,EAAE,MAAM;EACfC,QAAQ,EAAE,MAAM;EAChBC,UAAU,EAAE,QAAQ;EACpBC,QAAQ,EAAEN,mBAAmB,CAACO,gBAAgB;EAC9CC,UAAU,EAAER,mBAAmB,CAACS,uBAAuB;EACvDC,UAAU,EAAET,aAAa,GAAGD,mBAAmB,CAACW,QAAQ,GAAG,CAAC;EAC5D,KAAK,EAAE;IACLC,KAAK,EAAG,GAAEZ,mBAAmB,CAACa,sBAAuB,aAAY;IACjEP,QAAQ,EAAEN,mBAAmB,CAACO;EAChC,CAAC;EACD,WAAW,EAAE;IACXO,cAAc,EAAE,MAAM;IACtBC,MAAM,EAAE;EACV;AACF,CAAC,CAAC,CAAC;AAEH,MAAMC,sBAAsB,GAAGA,CAAC;EAC9BC,KAAK;EACLC,SAAS;EACTC,OAAO;EACPC,QAAQ;EACRC;AAIF,CAAC,KAAgB;EACf,MAAMrB,mBAAmB,GAAGZ,sBAAsB,CAAC,CAAC;EAEpD,MAAMkC,wBAAwB,GAAGnC,OAAO,CACtC,OAAO;IACLuB,UAAU,EAAEV,mBAAmB,CAACW;EAClC,CAAC,CAAC,EACF,CAACX,mBAAmB,CACtB,CAAC;EAED,OACEN,KAAA,CAAAE,SAAA;IAAA2B,QAAA,GACGL,SAAS,IAAIA,SAAS,EACvBxB,KAAA,CAACG,yBAAyB;MACxBG,mBAAmB,EAAEA,mBAAoB;MACzCC,aAAa,EAAEuB,OAAO,CAACN,SAAS,CAAE;MAAAK,QAAA,GAEjCN,KAAK,EACLG,QAAQ,IACP5B,IAAA,CAACH,GAAG;QAACoC,EAAE,EAAEH,wBAAyB;QAAAC,QAAA,EAChC/B,IAAA,CAACF,MAAM;UAAC8B,QAAQ,EAAEA,QAAS;UAACH,KAAK,EAAEI,WAAW,IAAI;QAAG,CAAE;MAAC,CACrD,CACN;IAAA,CACwB,CAAC,EAC3BF,OAAO,IAAIA,OAAO;EAAA,CACnB,CAAC;AAEP,CAAC;AACD,MAAMO,8BAA8B,GAAGxC,IAAI,CAAC8B,sBAAsB,CAAC;AACnEU,8BAA8B,CAACC,WAAW,GAAG,wBAAwB;AAErE,SAASD,8BAA8B,IAAIV,sBAAsB"}
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+ export { SideNav } from "./SideNav.js";
13
+ export * from "./types.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["SideNav"],"sources":["../../../src/labs/SideNav/index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport { SideNav } from \"./SideNav\";\n\nexport * from \"./types\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,SAYSA,OAAO;AAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/labs/SideNav/types.ts"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport type { ReactElement } from \"react\";\nimport type { HtmlProps } from \"../../HtmlProps\";\nimport type { statusSeverityValues } from \"../../Status\";\n\nexport type SideNavProps = {\n /**\n * Side Nav header text that is usually reserved to show the App name\n */\n navHeaderText: string;\n /**\n * Determines whether the side nav is collapsible\n */\n isCollapsible?: boolean;\n /**\n * Footer items in the side nav\n */\n footerItems?: SideNavFooterItem[];\n /**\n * Triggers when the side nav is collapsed\n */\n onCollapse?(): void;\n /**\n * Triggers when the side nav is expanded\n */\n onExpand?(): void;\n /**\n * Nav items in the side nav\n */\n sideNavItems: SideNavItem[];\n} & Pick<HtmlProps, \"testId\">;\n\nexport type SideNavItem = {\n id: string;\n label: string;\n /**\n * The icon element to display at the end of the Nav Item\n */\n endIcon?: ReactElement;\n /**\n * Whether the item is disabled. When set to true the nav item is set to Disabled color,\n * the link/item is not clickable, and item with children is not expandable.\n */\n isDisabled?: boolean;\n /**\n * Whether the item is active/selected\n */\n isSelected?: boolean;\n /**\n * Event fired when the nav item is clicked\n */\n onClick?(): void;\n /**\n * The status element to display after the label\n */\n severity?: (typeof statusSeverityValues)[number];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactElement;\n /**\n * The label to display inside the status\n */\n statusLabel?: string;\n /**\n * The link target prop. e.g., \"_blank\"\n */\n target?: string;\n} & (\n | {\n /**\n * Determines if the side nav item is a section header\n */\n isSectionHeader: true;\n href?: never;\n children?: never;\n isDefaultExpanded?: never;\n isExpanded?: never;\n }\n | {\n /**\n * link added to the nav item. if it is undefined, static text will be displayed.\n * fires onClick event when it is passed\n */\n href: string;\n children?: never;\n isSectionHeader?: never;\n isDefaultExpanded?: never;\n isExpanded?: never;\n }\n | {\n /**\n * An array of side nav items to be displayed as children within Accordion\n */\n children?: SideNavItem[];\n /**\n * Whether the accordion (nav item with children) is expanded by default\n */\n isDefaultExpanded?: 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 isSectionHeader?: never;\n href?: never;\n }\n);\n\nexport type SideNavFooterItem = {\n href?: string;\n id: string;\n label: string;\n};\n"],"mappings":""}