@okta/odyssey-react-mui 1.21.2 → 1.23.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 (593) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/@types/i18next.d.js.map +1 -1
  3. package/dist/Autocomplete.js +106 -38
  4. package/dist/Autocomplete.js.map +1 -1
  5. package/dist/Callout.js +12 -24
  6. package/dist/Callout.js.map +1 -1
  7. package/dist/Checkbox.js +26 -11
  8. package/dist/Checkbox.js.map +1 -1
  9. package/dist/CheckboxGroup.js +14 -3
  10. package/dist/CheckboxGroup.js.map +1 -1
  11. package/dist/DataTable/DataTable.js +10 -2
  12. package/dist/DataTable/DataTable.js.map +1 -1
  13. package/dist/DataTable/useScrollIndication.js +9 -5
  14. package/dist/DataTable/useScrollIndication.js.map +1 -1
  15. package/dist/Field.js +3 -1
  16. package/dist/Field.js.map +1 -1
  17. package/dist/FileUploader/FileUploadIllustration.js.map +1 -0
  18. package/dist/FileUploader/FileUploadPreview.js.map +1 -0
  19. package/dist/{labs/FileUpload.js → FileUploader/FileUploader.js} +6 -5
  20. package/dist/FileUploader/FileUploader.js.map +1 -0
  21. package/dist/FileUploader/index.js +13 -0
  22. package/dist/FileUploader/index.js.map +1 -0
  23. package/dist/OdysseyCacheProvider.js +4 -3
  24. package/dist/OdysseyCacheProvider.js.map +1 -1
  25. package/dist/OdysseyProvider.js +10 -3
  26. package/dist/OdysseyProvider.js.map +1 -1
  27. package/dist/OdysseyThemeProvider.js +3 -2
  28. package/dist/OdysseyThemeProvider.js.map +1 -1
  29. package/dist/Radio.js +33 -6
  30. package/dist/Radio.js.map +1 -1
  31. package/dist/RadioGroup.js +17 -5
  32. package/dist/RadioGroup.js.map +1 -1
  33. package/dist/Select.js +89 -31
  34. package/dist/Select.js.map +1 -1
  35. package/dist/{labs/Switch.js → Switch.js} +77 -23
  36. package/dist/Switch.js.map +1 -0
  37. package/dist/Tabs.js +7 -9
  38. package/dist/Tabs.js.map +1 -1
  39. package/dist/Tag.js +102 -4
  40. package/dist/Tag.js.map +1 -1
  41. package/dist/TextField.js +16 -39
  42. package/dist/TextField.js.map +1 -1
  43. package/dist/Toast.js +2 -2
  44. package/dist/Toast.js.map +1 -1
  45. package/dist/ToastStack.js.map +1 -1
  46. package/dist/createShadowDomElements.js +43 -0
  47. package/dist/createShadowDomElements.js.map +1 -0
  48. package/dist/i18n.js +1 -1
  49. package/dist/i18n.js.map +1 -1
  50. package/dist/index.js +3 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/index.scss +96 -8
  53. package/dist/labs/AppTile.js +124 -0
  54. package/dist/labs/AppTile.js.map +1 -0
  55. package/dist/labs/DataView/BulkActionsMenu.js.map +1 -0
  56. package/dist/labs/{DataComponents/StackContent.js → DataView/CardLayoutContent.js} +14 -14
  57. package/dist/labs/DataView/CardLayoutContent.js.map +1 -0
  58. package/dist/labs/{DataComponents/StackCard.js → DataView/DataCard.js} +6 -6
  59. package/dist/labs/DataView/DataCard.js.map +1 -0
  60. package/dist/labs/{DataComponents → DataView}/DataTable.js +6 -2
  61. package/dist/labs/DataView/DataTable.js.map +1 -0
  62. package/dist/labs/{DataComponents → DataView}/DataView.js +79 -30
  63. package/dist/labs/DataView/DataView.js.map +1 -0
  64. package/dist/labs/DataView/DetailPanel.js.map +1 -0
  65. package/dist/labs/DataView/LayoutSwitcher.js.map +1 -0
  66. package/dist/labs/DataView/RowActions.js.map +1 -0
  67. package/dist/labs/{DataComponents/TableContent.js → DataView/TableLayoutContent.js} +34 -20
  68. package/dist/labs/DataView/TableLayoutContent.js.map +1 -0
  69. package/dist/labs/{DataComponents → DataView}/TableSettings.js +2 -2
  70. package/dist/labs/DataView/TableSettings.js.map +1 -0
  71. package/dist/labs/DataView/componentTypes.js.map +1 -0
  72. package/dist/labs/{DataComponents → DataView}/constants.js +2 -2
  73. package/dist/labs/DataView/constants.js.map +1 -0
  74. package/dist/labs/DataView/dataTypes.js.map +1 -0
  75. package/dist/labs/DataView/fetchData.js.map +1 -0
  76. package/dist/labs/{DataComponents → DataView}/index.js +0 -1
  77. package/dist/labs/DataView/index.js.map +1 -0
  78. package/dist/labs/DataView/tableConstants.js.map +1 -0
  79. package/dist/labs/DataView/useFilterConversion.js.map +1 -0
  80. package/dist/labs/DateField.js +2 -0
  81. package/dist/labs/DateField.js.map +1 -1
  82. package/dist/labs/DatePicker.js +5 -1
  83. package/dist/labs/DatePicker.js.map +1 -1
  84. package/dist/labs/SideNav/CollapseIcon.js +44 -0
  85. package/dist/labs/SideNav/CollapseIcon.js.map +1 -0
  86. package/dist/labs/SideNav/OktaLogo.js +36 -0
  87. package/dist/labs/SideNav/OktaLogo.js.map +1 -0
  88. package/dist/labs/SideNav/SideNav.js +335 -0
  89. package/dist/labs/SideNav/SideNav.js.map +1 -0
  90. package/dist/labs/SideNav/SideNavFooterContent.js +49 -0
  91. package/dist/labs/SideNav/SideNavFooterContent.js.map +1 -0
  92. package/dist/labs/SideNav/SideNavHeader.js +81 -0
  93. package/dist/labs/SideNav/SideNavHeader.js.map +1 -0
  94. package/dist/labs/SideNav/SideNavItemContent.js +157 -0
  95. package/dist/labs/SideNav/SideNavItemContent.js.map +1 -0
  96. package/dist/labs/SideNav/SideNavItemLinkContent.js +71 -0
  97. package/dist/labs/SideNav/SideNavItemLinkContent.js.map +1 -0
  98. package/dist/labs/SideNav/index.js +14 -0
  99. package/dist/labs/SideNav/index.js.map +1 -0
  100. package/dist/labs/SideNav/types.js +2 -0
  101. package/dist/labs/SideNav/types.js.map +1 -0
  102. package/dist/labs/TopNav.js +2 -1
  103. package/dist/labs/TopNav.js.map +1 -1
  104. package/dist/labs/index.js +3 -4
  105. package/dist/labs/index.js.map +1 -1
  106. package/dist/labs/useDateFieldsTranslations.js +1 -1
  107. package/dist/labs/useDateFieldsTranslations.js.map +1 -1
  108. package/dist/properties/ts/odyssey-react-mui.js +3 -1
  109. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  110. package/dist/properties/ts/odyssey-react-mui_cs.js +17 -3
  111. package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  112. package/dist/properties/ts/odyssey-react-mui_da.js +17 -3
  113. package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
  114. package/dist/properties/ts/odyssey-react-mui_de.js +16 -2
  115. package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
  116. package/dist/properties/ts/odyssey-react-mui_el.js +18 -4
  117. package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
  118. package/dist/properties/ts/odyssey-react-mui_es.js +17 -3
  119. package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
  120. package/dist/properties/ts/odyssey-react-mui_fi.js +17 -3
  121. package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  122. package/dist/properties/ts/odyssey-react-mui_fr.js +17 -3
  123. package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  124. package/dist/properties/ts/odyssey-react-mui_ht.js +18 -4
  125. package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -1
  126. package/dist/properties/ts/odyssey-react-mui_hu.js +17 -3
  127. package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  128. package/dist/properties/ts/odyssey-react-mui_id.js +17 -3
  129. package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
  130. package/dist/properties/ts/odyssey-react-mui_it.js +17 -3
  131. package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
  132. package/dist/properties/ts/odyssey-react-mui_ja.js +16 -2
  133. package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  134. package/dist/properties/ts/odyssey-react-mui_ko.js +16 -2
  135. package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  136. package/dist/properties/ts/odyssey-react-mui_ms.js +17 -3
  137. package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  138. package/dist/properties/ts/odyssey-react-mui_nb.js +17 -3
  139. package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  140. package/dist/properties/ts/odyssey-react-mui_nl_NL.js +17 -3
  141. package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  142. package/dist/properties/ts/odyssey-react-mui_pl.js +17 -3
  143. package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  144. package/dist/properties/ts/odyssey-react-mui_pt_BR.js +17 -3
  145. package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  146. package/dist/properties/ts/odyssey-react-mui_ro.js +17 -3
  147. package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  148. package/dist/properties/ts/odyssey-react-mui_ru.js +17 -3
  149. package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  150. package/dist/properties/ts/odyssey-react-mui_sv.js +17 -3
  151. package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  152. package/dist/properties/ts/odyssey-react-mui_th.js +16 -2
  153. package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
  154. package/dist/properties/ts/odyssey-react-mui_tr.js +17 -3
  155. package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  156. package/dist/properties/ts/odyssey-react-mui_uk.js +17 -3
  157. package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  158. package/dist/properties/ts/odyssey-react-mui_vi.js +17 -3
  159. package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  160. package/dist/properties/ts/odyssey-react-mui_zh_CN.js +16 -2
  161. package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  162. package/dist/properties/ts/odyssey-react-mui_zh_TW.js +16 -2
  163. package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  164. package/dist/src/Autocomplete.d.ts +30 -0
  165. package/dist/src/Autocomplete.d.ts.map +1 -1
  166. package/dist/src/Callout.d.ts +11 -23
  167. package/dist/src/Callout.d.ts.map +1 -1
  168. package/dist/src/Checkbox.d.ts +2 -2
  169. package/dist/src/Checkbox.d.ts.map +1 -1
  170. package/dist/src/CheckboxGroup.d.ts +3 -3
  171. package/dist/src/CheckboxGroup.d.ts.map +1 -1
  172. package/dist/src/DataTable/DataTable.d.ts +9 -1
  173. package/dist/src/DataTable/DataTable.d.ts.map +1 -1
  174. package/dist/src/DataTable/useScrollIndication.d.ts.map +1 -1
  175. package/dist/src/Field.d.ts +3 -2
  176. package/dist/src/Field.d.ts.map +1 -1
  177. package/dist/src/FileUploader/FileUploadIllustration.d.ts.map +1 -0
  178. package/dist/src/{labs → FileUploader}/FileUploadPreview.d.ts +2 -2
  179. package/dist/src/FileUploader/FileUploadPreview.d.ts.map +1 -0
  180. package/dist/src/{labs/FileUpload.d.ts → FileUploader/FileUploader.d.ts} +5 -4
  181. package/dist/src/FileUploader/FileUploader.d.ts.map +1 -0
  182. package/dist/src/FileUploader/index.d.ts +13 -0
  183. package/dist/src/FileUploader/index.d.ts.map +1 -0
  184. package/dist/src/NativeSelect.d.ts +1 -1
  185. package/dist/src/OdysseyCacheProvider.d.ts +7 -3
  186. package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
  187. package/dist/src/OdysseyProvider.d.ts +1 -1
  188. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  189. package/dist/src/OdysseyThemeProvider.d.ts +3 -1
  190. package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
  191. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  192. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  193. package/dist/src/PasswordField.d.ts +1 -1
  194. package/dist/src/Radio.d.ts +6 -8
  195. package/dist/src/Radio.d.ts.map +1 -1
  196. package/dist/src/RadioGroup.d.ts +4 -5
  197. package/dist/src/RadioGroup.d.ts.map +1 -1
  198. package/dist/src/SearchField.d.ts +1 -1
  199. package/dist/src/Select.d.ts +38 -2
  200. package/dist/src/Select.d.ts.map +1 -1
  201. package/dist/src/{labs/Switch.d.ts → Switch.d.ts} +8 -4
  202. package/dist/src/Switch.d.ts.map +1 -0
  203. package/dist/src/Tabs.d.ts +6 -8
  204. package/dist/src/Tabs.d.ts.map +1 -1
  205. package/dist/src/Tag.d.ts +7 -1
  206. package/dist/src/Tag.d.ts.map +1 -1
  207. package/dist/src/TextField.d.ts +17 -40
  208. package/dist/src/TextField.d.ts.map +1 -1
  209. package/dist/src/ToastStack.d.ts +2 -2
  210. package/dist/src/ToastStack.d.ts.map +1 -1
  211. package/dist/src/{createShadowRootElement.d.ts → createShadowDomElements.d.ts} +6 -1
  212. package/dist/src/createShadowDomElements.d.ts.map +1 -0
  213. package/dist/src/i18n.d.ts +2 -2
  214. package/dist/src/i18n.d.ts.map +1 -1
  215. package/dist/src/index.d.ts +3 -2
  216. package/dist/src/index.d.ts.map +1 -1
  217. package/dist/src/labs/AppTile.d.ts +39 -0
  218. package/dist/src/labs/AppTile.d.ts.map +1 -0
  219. package/dist/src/labs/DataView/BulkActionsMenu.d.ts.map +1 -0
  220. package/dist/src/labs/{DataComponents/StackContent.d.ts → DataView/CardLayoutContent.d.ts} +7 -7
  221. package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -0
  222. package/dist/src/labs/{DataComponents/StackCard.d.ts → DataView/DataCard.d.ts} +4 -4
  223. package/dist/src/labs/DataView/DataCard.d.ts.map +1 -0
  224. package/dist/src/labs/DataView/DataTable.d.ts +16 -0
  225. package/dist/src/labs/DataView/DataTable.d.ts.map +1 -0
  226. package/dist/src/labs/{DataComponents → DataView}/DataView.d.ts +1 -1
  227. package/dist/src/labs/DataView/DataView.d.ts.map +1 -0
  228. package/dist/src/labs/{DataComponents → DataView}/DetailPanel.d.ts +2 -2
  229. package/dist/src/labs/DataView/DetailPanel.d.ts.map +1 -0
  230. package/dist/src/labs/DataView/LayoutSwitcher.d.ts.map +1 -0
  231. package/dist/src/labs/DataView/RowActions.d.ts.map +1 -0
  232. package/dist/src/labs/{DataComponents/TableContent.d.ts → DataView/TableLayoutContent.d.ts} +8 -7
  233. package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -0
  234. package/dist/src/labs/{DataComponents → DataView}/TableSettings.d.ts +3 -3
  235. package/dist/src/labs/DataView/TableSettings.d.ts.map +1 -0
  236. package/dist/src/labs/{DataComponents → DataView}/componentTypes.d.ts +21 -9
  237. package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -0
  238. package/dist/src/labs/{DataComponents → DataView}/constants.d.ts +1 -1
  239. package/dist/src/labs/DataView/constants.d.ts.map +1 -0
  240. package/dist/src/labs/DataView/dataTypes.d.ts.map +1 -0
  241. package/dist/src/labs/DataView/fetchData.d.ts.map +1 -0
  242. package/dist/src/labs/{DataComponents → DataView}/index.d.ts +0 -1
  243. package/dist/src/labs/DataView/index.d.ts.map +1 -0
  244. package/dist/src/labs/DataView/tableConstants.d.ts.map +1 -0
  245. package/dist/src/labs/{DataComponents → DataView}/useFilterConversion.d.ts +2 -2
  246. package/dist/src/labs/DataView/useFilterConversion.d.ts.map +1 -0
  247. package/dist/src/labs/DateField.d.ts +2 -2
  248. package/dist/src/labs/DateField.d.ts.map +1 -1
  249. package/dist/src/labs/DatePicker.d.ts +2 -2
  250. package/dist/src/labs/DatePicker.d.ts.map +1 -1
  251. package/dist/src/labs/SideNav/CollapseIcon.d.ts +17 -0
  252. package/dist/src/labs/SideNav/CollapseIcon.d.ts.map +1 -0
  253. package/dist/src/labs/SideNav/OktaLogo.d.ts +14 -0
  254. package/dist/src/labs/SideNav/OktaLogo.d.ts.map +1 -0
  255. package/dist/src/labs/SideNav/SideNav.d.ts +16 -0
  256. package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -0
  257. package/dist/{test-selectors/odysseyTestSelectors.js → src/labs/SideNav/SideNavFooterContent.d.ts} +6 -9
  258. package/dist/src/labs/SideNav/SideNavFooterContent.d.ts.map +1 -0
  259. package/dist/src/labs/SideNav/SideNavHeader.d.ts +16 -0
  260. package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -0
  261. package/dist/src/labs/SideNav/SideNavItemContent.d.ts +33 -0
  262. package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -0
  263. package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts +16 -0
  264. package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts.map +1 -0
  265. package/dist/src/labs/SideNav/index.d.ts +14 -0
  266. package/dist/src/labs/SideNav/index.d.ts.map +1 -0
  267. package/dist/src/labs/{SideNav.d.ts → SideNav/types.d.ts} +54 -33
  268. package/dist/src/labs/SideNav/types.d.ts.map +1 -0
  269. package/dist/src/labs/TopNav.d.ts +1 -0
  270. package/dist/src/labs/TopNav.d.ts.map +1 -1
  271. package/dist/src/labs/index.d.ts +2 -3
  272. package/dist/src/labs/index.d.ts.map +1 -1
  273. package/dist/src/properties/ts/odyssey-react-mui.d.ts +2 -0
  274. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  275. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +15 -1
  276. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  277. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +15 -1
  278. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  279. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +15 -1
  280. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  281. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +15 -1
  282. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  283. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +15 -1
  284. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  285. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +15 -1
  286. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  287. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +15 -1
  288. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  289. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +16 -2
  290. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
  291. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +15 -1
  292. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  293. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +15 -1
  294. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  295. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +15 -1
  296. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  297. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +15 -1
  298. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  299. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +15 -1
  300. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  301. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +15 -1
  302. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  303. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +15 -1
  304. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  305. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +15 -1
  306. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  307. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +15 -1
  308. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  309. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +15 -1
  310. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  311. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +15 -1
  312. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  313. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +15 -1
  314. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  315. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +15 -1
  316. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  317. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +15 -1
  318. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  319. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +15 -1
  320. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  321. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +15 -1
  322. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  323. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +15 -1
  324. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  325. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +15 -1
  326. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  327. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +15 -1
  328. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  329. package/dist/src/test-selectors/getByQuerySelector.d.ts +148 -0
  330. package/dist/src/test-selectors/getByQuerySelector.d.ts.map +1 -0
  331. package/dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts +14 -0
  332. package/dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts.map +1 -0
  333. package/dist/src/test-selectors/getComputedAccessibleText.d.ts +23 -0
  334. package/dist/src/test-selectors/getComputedAccessibleText.d.ts.map +1 -0
  335. package/dist/src/test-selectors/index.d.ts +2 -2
  336. package/dist/src/test-selectors/index.d.ts.map +1 -1
  337. package/{src/test-selectors/odysseyTestSelectors.ts → dist/src/test-selectors/interpolateString.d.ts} +4 -11
  338. package/dist/src/test-selectors/interpolateString.d.ts.map +1 -0
  339. package/dist/src/test-selectors/linkedHtmlSelectors.d.ts +24 -0
  340. package/dist/src/test-selectors/linkedHtmlSelectors.d.ts.map +1 -0
  341. package/dist/src/test-selectors/queryOdysseySelector.d.ts +5755 -0
  342. package/dist/src/test-selectors/queryOdysseySelector.d.ts.map +1 -0
  343. package/dist/src/test-selectors/querySelector.d.ts +59 -3613
  344. package/dist/src/test-selectors/querySelector.d.ts.map +1 -1
  345. package/dist/src/test-selectors/sanityChecks.d.ts +18 -0
  346. package/dist/src/test-selectors/sanityChecks.d.ts.map +1 -0
  347. package/dist/src/test-selectors/testSelector.d.ts +46 -0
  348. package/dist/src/test-selectors/testSelector.d.ts.map +1 -0
  349. package/dist/src/theme/components.d.ts +3 -1
  350. package/dist/src/theme/components.d.ts.map +1 -1
  351. package/dist/src/theme/createOdysseyMuiTheme.d.ts +3 -1
  352. package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
  353. package/dist/test-selectors/getByQuerySelector.js +64 -0
  354. package/dist/test-selectors/getByQuerySelector.js.map +1 -0
  355. package/dist/test-selectors/getComputedAccessibleErrorMessageText.js +25 -0
  356. package/dist/test-selectors/getComputedAccessibleErrorMessageText.js.map +1 -0
  357. package/dist/test-selectors/getComputedAccessibleText.js +24 -0
  358. package/dist/test-selectors/getComputedAccessibleText.js.map +1 -0
  359. package/dist/test-selectors/index.js +2 -2
  360. package/dist/test-selectors/index.js.map +1 -1
  361. package/dist/test-selectors/interpolateString.js +25 -0
  362. package/dist/test-selectors/interpolateString.js.map +1 -0
  363. package/dist/test-selectors/linkedHtmlSelectors.js +34 -0
  364. package/dist/test-selectors/linkedHtmlSelectors.js.map +1 -0
  365. package/dist/test-selectors/queryOdysseySelector.js +26 -0
  366. package/dist/test-selectors/queryOdysseySelector.js.map +1 -0
  367. package/dist/test-selectors/querySelector.js +82 -58
  368. package/dist/test-selectors/querySelector.js.map +1 -1
  369. package/dist/test-selectors/sanityChecks.js +33 -0
  370. package/dist/test-selectors/sanityChecks.js.map +1 -0
  371. package/dist/test-selectors/testSelector.js +2 -0
  372. package/dist/test-selectors/testSelector.js.map +1 -0
  373. package/dist/test-selectors/testSelectors.json +1 -1
  374. package/dist/theme/components.js +231 -146
  375. package/dist/theme/components.js.map +1 -1
  376. package/dist/theme/createOdysseyMuiTheme.js +3 -2
  377. package/dist/theme/createOdysseyMuiTheme.js.map +1 -1
  378. package/dist/tsconfig.production.tsbuildinfo +1 -1
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/jest.setup.js +3 -0
  381. package/package.json +5 -5
  382. package/scripts/generateTestSelectorsJson.ts +1 -1
  383. package/src/@types/i18next.d.ts +1 -1
  384. package/src/Autocomplete.tsx +140 -45
  385. package/src/Callout.tsx +13 -25
  386. package/src/Checkbox.tsx +39 -9
  387. package/src/CheckboxGroup.tsx +20 -4
  388. package/src/DataTable/DataTable.tsx +24 -1
  389. package/src/DataTable/useScrollIndication.tsx +11 -4
  390. package/src/Field.tsx +5 -2
  391. package/src/{labs → FileUploader}/FileUploadPreview.tsx +3 -3
  392. package/src/{labs/FileUpload.tsx → FileUploader/FileUploader.tsx} +7 -6
  393. package/src/FileUploader/index.ts +13 -0
  394. package/src/OdysseyCacheProvider.test.tsx +1 -0
  395. package/src/OdysseyCacheProvider.tsx +18 -4
  396. package/src/OdysseyProvider.tsx +12 -4
  397. package/src/OdysseyThemeProvider.tsx +6 -2
  398. package/src/Radio.tsx +41 -12
  399. package/src/RadioGroup.tsx +26 -7
  400. package/src/Select.tsx +116 -45
  401. package/src/{labs/Switch.tsx → Switch.tsx} +95 -41
  402. package/src/Tabs.tsx +8 -10
  403. package/src/Tag.tsx +134 -3
  404. package/src/TextField.tsx +18 -41
  405. package/src/Toast.tsx +1 -1
  406. package/src/ToastStack.tsx +2 -2
  407. package/src/createShadowDomElements.ts +53 -0
  408. package/src/i18n.ts +3 -3
  409. package/src/index.ts +7 -2
  410. package/src/labs/AppTile.tsx +200 -0
  411. package/src/labs/{DataComponents/StackContent.tsx → DataView/CardLayoutContent.tsx} +24 -19
  412. package/src/labs/{DataComponents/StackCard.tsx → DataView/DataCard.tsx} +7 -7
  413. package/src/labs/{DataComponents → DataView}/DataTable.tsx +8 -4
  414. package/src/labs/DataView/DataView.test.tsx +158 -0
  415. package/src/labs/{DataComponents → DataView}/DataView.tsx +119 -42
  416. package/src/labs/{DataComponents → DataView}/DetailPanel.tsx +2 -2
  417. package/src/labs/{DataComponents/TableContent.tsx → DataView/TableLayoutContent.tsx} +59 -27
  418. package/src/labs/{DataComponents → DataView}/TableSettings.tsx +5 -4
  419. package/src/labs/{DataComponents → DataView}/componentTypes.ts +24 -9
  420. package/src/labs/{DataComponents → DataView}/constants.tsx +2 -2
  421. package/src/labs/{DataComponents → DataView}/index.tsx +0 -1
  422. package/src/labs/{DataComponents → DataView}/useFilterConversion.ts +2 -2
  423. package/src/labs/DateField.tsx +3 -0
  424. package/src/labs/DatePicker.tsx +12 -1
  425. package/src/labs/SideNav/CollapseIcon.tsx +48 -0
  426. package/src/labs/SideNav/OktaLogo.tsx +39 -0
  427. package/src/labs/SideNav/SideNav.tsx +486 -0
  428. package/src/labs/SideNav/SideNavFooterContent.tsx +64 -0
  429. package/src/labs/SideNav/SideNavHeader.tsx +88 -0
  430. package/src/labs/SideNav/SideNavItemContent.tsx +216 -0
  431. package/src/labs/SideNav/SideNavItemLinkContent.tsx +87 -0
  432. package/src/labs/SideNav/index.ts +15 -0
  433. package/src/labs/SideNav/types.ts +152 -0
  434. package/src/labs/TopNav.tsx +3 -1
  435. package/src/labs/index.ts +3 -4
  436. package/src/labs/useDateFieldsTranslations.ts +1 -1
  437. package/src/properties/odyssey-react-mui.properties +2 -1
  438. package/src/properties/translations/odyssey-react-mui_cs.properties +15 -3
  439. package/src/properties/translations/odyssey-react-mui_da.properties +15 -3
  440. package/src/properties/translations/odyssey-react-mui_de.properties +14 -2
  441. package/src/properties/translations/odyssey-react-mui_el.properties +16 -4
  442. package/src/properties/translations/odyssey-react-mui_es.properties +15 -3
  443. package/src/properties/translations/odyssey-react-mui_fi.properties +15 -3
  444. package/src/properties/translations/odyssey-react-mui_fr.properties +15 -3
  445. package/src/properties/translations/odyssey-react-mui_ht.properties +17 -6
  446. package/src/properties/translations/odyssey-react-mui_hu.properties +15 -3
  447. package/src/properties/translations/odyssey-react-mui_id.properties +15 -3
  448. package/src/properties/translations/odyssey-react-mui_it.properties +15 -3
  449. package/src/properties/translations/odyssey-react-mui_ja.properties +14 -2
  450. package/src/properties/translations/odyssey-react-mui_ko.properties +14 -2
  451. package/src/properties/translations/odyssey-react-mui_ms.properties +15 -3
  452. package/src/properties/translations/odyssey-react-mui_nb.properties +15 -3
  453. package/src/properties/translations/odyssey-react-mui_nl_NL.properties +15 -3
  454. package/src/properties/translations/odyssey-react-mui_pl.properties +15 -3
  455. package/src/properties/translations/odyssey-react-mui_pt_BR.properties +15 -3
  456. package/src/properties/translations/odyssey-react-mui_ro.properties +15 -3
  457. package/src/properties/translations/odyssey-react-mui_ru.properties +15 -3
  458. package/src/properties/translations/odyssey-react-mui_sv.properties +15 -3
  459. package/src/properties/translations/odyssey-react-mui_th.properties +14 -2
  460. package/src/properties/translations/odyssey-react-mui_tr.properties +15 -3
  461. package/src/properties/translations/odyssey-react-mui_uk.properties +15 -3
  462. package/src/properties/translations/odyssey-react-mui_vi.properties +15 -3
  463. package/src/properties/translations/odyssey-react-mui_zh_CN.properties +14 -2
  464. package/src/properties/translations/odyssey-react-mui_zh_TW.properties +14 -2
  465. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  466. package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
  467. package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
  468. package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
  469. package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
  470. package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
  471. package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
  472. package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
  473. package/src/properties/ts/odyssey-react-mui_ht.ts +1 -1
  474. package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
  475. package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
  476. package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
  477. package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
  478. package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
  479. package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
  480. package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
  481. package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
  482. package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
  483. package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
  484. package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
  485. package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
  486. package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
  487. package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
  488. package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
  489. package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
  490. package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
  491. package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
  492. package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
  493. package/src/test-selectors/getByQuerySelector.ts +176 -0
  494. package/src/test-selectors/getComputedAccessibleErrorMessageText.ts +52 -0
  495. package/src/test-selectors/getComputedAccessibleText.ts +36 -0
  496. package/src/test-selectors/index.ts +2 -2
  497. package/src/test-selectors/interpolateString.ts +41 -0
  498. package/src/test-selectors/linkedHtmlSelectors.ts +73 -0
  499. package/src/test-selectors/queryOdysseySelector.ts +36 -0
  500. package/src/test-selectors/querySelector.ts +221 -170
  501. package/src/test-selectors/sanityChecks.ts +53 -0
  502. package/src/test-selectors/testSelector.ts +143 -0
  503. package/src/theme/components.tsx +238 -150
  504. package/src/theme/createOdysseyMuiTheme.ts +4 -1
  505. package/dist/createShadowRootElement.js +0 -26
  506. package/dist/createShadowRootElement.js.map +0 -1
  507. package/dist/labs/DataComponents/BulkActionsMenu.js.map +0 -1
  508. package/dist/labs/DataComponents/DataStack.js +0 -85
  509. package/dist/labs/DataComponents/DataStack.js.map +0 -1
  510. package/dist/labs/DataComponents/DataTable.js.map +0 -1
  511. package/dist/labs/DataComponents/DataView.js.map +0 -1
  512. package/dist/labs/DataComponents/DetailPanel.js.map +0 -1
  513. package/dist/labs/DataComponents/LayoutSwitcher.js.map +0 -1
  514. package/dist/labs/DataComponents/RowActions.js.map +0 -1
  515. package/dist/labs/DataComponents/StackCard.js.map +0 -1
  516. package/dist/labs/DataComponents/StackContent.js.map +0 -1
  517. package/dist/labs/DataComponents/TableContent.js.map +0 -1
  518. package/dist/labs/DataComponents/TableSettings.js.map +0 -1
  519. package/dist/labs/DataComponents/componentTypes.js.map +0 -1
  520. package/dist/labs/DataComponents/constants.js.map +0 -1
  521. package/dist/labs/DataComponents/dataTypes.js.map +0 -1
  522. package/dist/labs/DataComponents/fetchData.js.map +0 -1
  523. package/dist/labs/DataComponents/index.js.map +0 -1
  524. package/dist/labs/DataComponents/tableConstants.js.map +0 -1
  525. package/dist/labs/DataComponents/useFilterConversion.js.map +0 -1
  526. package/dist/labs/FileUpload.js.map +0 -1
  527. package/dist/labs/FileUploadIllustration.js.map +0 -1
  528. package/dist/labs/FileUploadPreview.js.map +0 -1
  529. package/dist/labs/SideNav.js +0 -478
  530. package/dist/labs/SideNav.js.map +0 -1
  531. package/dist/labs/Switch.js.map +0 -1
  532. package/dist/src/createShadowRootElement.d.ts.map +0 -1
  533. package/dist/src/labs/DataComponents/BulkActionsMenu.d.ts.map +0 -1
  534. package/dist/src/labs/DataComponents/DataStack.d.ts +0 -20
  535. package/dist/src/labs/DataComponents/DataStack.d.ts.map +0 -1
  536. package/dist/src/labs/DataComponents/DataTable.d.ts +0 -16
  537. package/dist/src/labs/DataComponents/DataTable.d.ts.map +0 -1
  538. package/dist/src/labs/DataComponents/DataView.d.ts.map +0 -1
  539. package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +0 -1
  540. package/dist/src/labs/DataComponents/LayoutSwitcher.d.ts.map +0 -1
  541. package/dist/src/labs/DataComponents/RowActions.d.ts.map +0 -1
  542. package/dist/src/labs/DataComponents/StackCard.d.ts.map +0 -1
  543. package/dist/src/labs/DataComponents/StackContent.d.ts.map +0 -1
  544. package/dist/src/labs/DataComponents/TableContent.d.ts.map +0 -1
  545. package/dist/src/labs/DataComponents/TableSettings.d.ts.map +0 -1
  546. package/dist/src/labs/DataComponents/componentTypes.d.ts.map +0 -1
  547. package/dist/src/labs/DataComponents/constants.d.ts.map +0 -1
  548. package/dist/src/labs/DataComponents/dataTypes.d.ts.map +0 -1
  549. package/dist/src/labs/DataComponents/fetchData.d.ts.map +0 -1
  550. package/dist/src/labs/DataComponents/index.d.ts.map +0 -1
  551. package/dist/src/labs/DataComponents/tableConstants.d.ts.map +0 -1
  552. package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +0 -1
  553. package/dist/src/labs/FileUpload.d.ts.map +0 -1
  554. package/dist/src/labs/FileUploadIllustration.d.ts.map +0 -1
  555. package/dist/src/labs/FileUploadPreview.d.ts.map +0 -1
  556. package/dist/src/labs/SideNav.d.ts.map +0 -1
  557. package/dist/src/labs/Switch.d.ts.map +0 -1
  558. package/dist/src/test-selectors/featureTestSelector.d.ts +0 -31
  559. package/dist/src/test-selectors/featureTestSelector.d.ts.map +0 -1
  560. package/dist/src/test-selectors/odysseyTestSelectors.d.ts +0 -120
  561. package/dist/src/test-selectors/odysseyTestSelectors.d.ts.map +0 -1
  562. package/dist/test-selectors/featureTestSelector.js +0 -2
  563. package/dist/test-selectors/featureTestSelector.js.map +0 -1
  564. package/dist/test-selectors/odysseyTestSelectors.js.map +0 -1
  565. package/src/createShadowRootElement.ts +0 -31
  566. package/src/labs/DataComponents/DataStack.tsx +0 -105
  567. package/src/labs/SideNav.tsx +0 -745
  568. package/src/test-selectors/featureTestSelector.ts +0 -41
  569. /package/dist/{labs → FileUploader}/FileUploadIllustration.js +0 -0
  570. /package/dist/{labs → FileUploader}/FileUploadPreview.js +0 -0
  571. /package/dist/labs/{DataComponents → DataView}/BulkActionsMenu.js +0 -0
  572. /package/dist/labs/{DataComponents → DataView}/DetailPanel.js +0 -0
  573. /package/dist/labs/{DataComponents → DataView}/LayoutSwitcher.js +0 -0
  574. /package/dist/labs/{DataComponents → DataView}/RowActions.js +0 -0
  575. /package/dist/labs/{DataComponents → DataView}/componentTypes.js +0 -0
  576. /package/dist/labs/{DataComponents → DataView}/dataTypes.js +0 -0
  577. /package/dist/labs/{DataComponents → DataView}/fetchData.js +0 -0
  578. /package/dist/labs/{DataComponents → DataView}/tableConstants.js +0 -0
  579. /package/dist/labs/{DataComponents → DataView}/useFilterConversion.js +0 -0
  580. /package/dist/src/{labs → FileUploader}/FileUploadIllustration.d.ts +0 -0
  581. /package/dist/src/labs/{DataComponents → DataView}/BulkActionsMenu.d.ts +0 -0
  582. /package/dist/src/labs/{DataComponents → DataView}/LayoutSwitcher.d.ts +0 -0
  583. /package/dist/src/labs/{DataComponents → DataView}/RowActions.d.ts +0 -0
  584. /package/dist/src/labs/{DataComponents → DataView}/dataTypes.d.ts +0 -0
  585. /package/dist/src/labs/{DataComponents → DataView}/fetchData.d.ts +0 -0
  586. /package/dist/src/labs/{DataComponents → DataView}/tableConstants.d.ts +0 -0
  587. /package/src/{labs → FileUploader}/FileUploadIllustration.tsx +0 -0
  588. /package/src/labs/{DataComponents → DataView}/BulkActionsMenu.tsx +0 -0
  589. /package/src/labs/{DataComponents → DataView}/LayoutSwitcher.tsx +0 -0
  590. /package/src/labs/{DataComponents → DataView}/RowActions.tsx +0 -0
  591. /package/src/labs/{DataComponents → DataView}/dataTypes.ts +0 -0
  592. /package/src/labs/{DataComponents → DataView}/fetchData.ts +0 -0
  593. /package/src/labs/{DataComponents → DataView}/tableConstants.tsx +0 -0
@@ -23,19 +23,19 @@ import { SwitchProps as MuiSwitchProps, FormLabel } from "@mui/material";
23
23
  import { useTranslation } from "react-i18next";
24
24
  import styled from "@emotion/styled";
25
25
 
26
- import { Box } from "../Box";
27
- import { FieldComponentProps } from "../FieldComponentProps";
28
- import { FieldHint } from "../FieldHint";
29
- import { CheckedFieldProps } from "../FormCheckedProps";
30
- import type { HtmlProps } from "../HtmlProps";
31
- import { CheckIcon } from "../icons.generated";
32
- import { ComponentControlledState, getControlState } from "../inputUtils";
26
+ import { Box } from "./Box";
27
+ import { FieldComponentProps } from "./FieldComponentProps";
28
+ import { FieldHint } from "./FieldHint";
29
+ import { CheckedFieldProps } from "./FormCheckedProps";
30
+ import type { HtmlProps } from "./HtmlProps";
31
+ import { CheckIcon } from "./icons.generated";
32
+ import { ComponentControlledState, getControlState } from "./inputUtils";
33
33
  import {
34
34
  DesignTokens,
35
35
  useOdysseyDesignTokens,
36
- } from "../OdysseyDesignTokensContext";
37
- import { stripRem, toRem } from "../remUtils";
38
- import { useUniqueId } from "../useUniqueId";
36
+ } from "./OdysseyDesignTokensContext";
37
+ import { stripRem, toRem } from "./remUtils";
38
+ import { useUniqueId } from "./useUniqueId";
39
39
 
40
40
  const { CONTROLLED } = ComponentControlledState;
41
41
 
@@ -43,13 +43,14 @@ const nonForwardedProps = [
43
43
  "isChecked",
44
44
  "isDisabled",
45
45
  "isFullWidth",
46
+ "isReadOnly",
46
47
  "odysseyDesignTokens",
47
48
  ];
48
49
 
49
50
  const SwitchAndLabelContainer = styled("div", {
50
51
  shouldForwardProp: (prop) => !nonForwardedProps.includes(prop),
51
52
  })<
52
- Pick<SwitchProps, "isFullWidth" | "isDisabled"> & {
53
+ Pick<SwitchProps, "isFullWidth" | "isDisabled" | "isReadOnly"> & {
53
54
  odysseyDesignTokens: DesignTokens;
54
55
  }
55
56
  >(({ isFullWidth, odysseyDesignTokens }) => ({
@@ -66,17 +67,16 @@ const SwitchContainer = styled.div({
66
67
  const StyledSwitchLabel = styled(FormLabel, {
67
68
  shouldForwardProp: (prop) => !nonForwardedProps.includes(prop),
68
69
  })<
69
- Pick<SwitchLabelComponentProps, "isDisabled"> & {
70
+ Pick<SwitchLabelComponentProps, "isDisabled" | "isReadOnly"> & {
70
71
  odysseyDesignTokens: DesignTokens;
71
72
  }
72
- >(({ isDisabled, odysseyDesignTokens }) => ({
73
+ >(({ isDisabled, isReadOnly, odysseyDesignTokens }) => ({
73
74
  display: "block",
74
75
  margin: 0,
75
- color: isDisabled
76
- ? odysseyDesignTokens.TypographyColorDisabled
77
- : odysseyDesignTokens.PaletteNeutralDark,
76
+ color: odysseyDesignTokens.PaletteNeutralDark,
78
77
 
79
78
  ...(isDisabled && {
79
+ color: odysseyDesignTokens.TypographyColorDisabled,
80
80
  p: {
81
81
  color: odysseyDesignTokens.TypographyColorDisabled,
82
82
  },
@@ -84,38 +84,57 @@ const StyledSwitchLabel = styled(FormLabel, {
84
84
  color: `${odysseyDesignTokens.TypographyColorDisabled} !important`,
85
85
  },
86
86
  }),
87
+
88
+ ...(isReadOnly && {
89
+ color: odysseyDesignTokens.HueNeutral700,
90
+ p: {
91
+ color: odysseyDesignTokens.HueNeutral700,
92
+ },
93
+ a: {
94
+ color: `${odysseyDesignTokens.HueNeutral700} !important`,
95
+ },
96
+ }),
87
97
  }));
88
98
 
89
99
  const SwitchTrack = styled("div", {
90
100
  shouldForwardProp: (prop) => !nonForwardedProps.includes(prop),
91
101
  })<
92
- Pick<SwitchProps, "isChecked" | "isDisabled"> & {
102
+ Pick<SwitchProps, "isChecked" | "isDisabled" | "isReadOnly"> & {
93
103
  odysseyDesignTokens: DesignTokens;
94
104
  }
95
- >(({ isChecked, isDisabled, odysseyDesignTokens }) => ({
105
+ >(({ isChecked, isDisabled, isReadOnly, odysseyDesignTokens }) => ({
96
106
  position: "relative",
97
107
  width: odysseyDesignTokens.Spacing7,
98
108
  height: `calc(${odysseyDesignTokens.Spacing4} + ${odysseyDesignTokens.Spacing1})`,
99
109
  borderRadius: odysseyDesignTokens.BorderRadiusOuter,
100
- backgroundColor: isDisabled
101
- ? odysseyDesignTokens.HueNeutral200
102
- : isChecked
103
- ? odysseyDesignTokens.PaletteSuccessLight
104
- : odysseyDesignTokens.HueNeutral300,
110
+ backgroundColor: odysseyDesignTokens.HueNeutral300,
105
111
  transition: `background-color ${odysseyDesignTokens.TransitionDurationMain}`,
112
+
113
+ ...(isDisabled && {
114
+ backgroundColor: odysseyDesignTokens.HueNeutral200,
115
+ }),
116
+
117
+ ...(isReadOnly && {
118
+ backgroundColor: odysseyDesignTokens.HueNeutral600,
119
+ }),
120
+
121
+ ...(isChecked &&
122
+ !isDisabled &&
123
+ !isReadOnly && {
124
+ backgroundColor: odysseyDesignTokens.PaletteSuccessLight,
125
+ }),
106
126
  }));
107
127
 
108
128
  const SwitchThumb = styled("span", {
109
129
  shouldForwardProp: (prop) => !nonForwardedProps.includes(prop),
110
130
  })<
111
- Pick<SwitchProps, "isChecked" | "isDisabled"> & {
131
+ Pick<SwitchProps, "isChecked" | "isDisabled" | "isReadOnly"> & {
112
132
  odysseyDesignTokens: DesignTokens;
113
133
  }
114
- >(({ isChecked, isDisabled, odysseyDesignTokens }) => {
134
+ >(({ isChecked, isDisabled, isReadOnly, odysseyDesignTokens }) => {
115
135
  const thumbOffset = toRem(3);
116
136
  const trackWidth = stripRem(odysseyDesignTokens.Spacing7);
117
137
  const thumbWidth = stripRem(odysseyDesignTokens.Spacing4) - toRem(2);
118
-
119
138
  const transformDistance = trackWidth - thumbWidth - thumbOffset * 2;
120
139
 
121
140
  return {
@@ -125,40 +144,57 @@ const SwitchThumb = styled("span", {
125
144
  width: `calc(${odysseyDesignTokens.Spacing4} - ${toRem(2)}rem)`,
126
145
  height: `calc(${odysseyDesignTokens.Spacing4} - ${toRem(2)}rem)`,
127
146
  borderRadius: odysseyDesignTokens.BorderRadiusRound,
128
- backgroundColor: isDisabled
129
- ? odysseyDesignTokens.HueNeutral50
130
- : odysseyDesignTokens.HueNeutralWhite,
131
- transform: isChecked
132
- ? `translate3d(${transformDistance}rem, -50%, 0)`
133
- : "translate3d(0, -50%, 0)",
147
+ backgroundColor: odysseyDesignTokens.HueNeutralWhite,
148
+ transform: "translate3d(0, -50%, 0)",
134
149
  transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,
150
+
151
+ ...(isDisabled && {
152
+ backgroundColor: odysseyDesignTokens.HueNeutral50,
153
+ }),
154
+
155
+ ...(isReadOnly && {
156
+ backgroundColor: odysseyDesignTokens.HueNeutral400,
157
+ }),
158
+
159
+ ...(isChecked && {
160
+ transform: `translate3d(${transformDistance}rem, -50%, 0)`,
161
+ }),
135
162
  };
136
163
  });
137
164
 
138
165
  const SwitchCheckMark = styled(CheckIcon, {
139
166
  shouldForwardProp: (prop) => !nonForwardedProps.includes(prop),
140
167
  })<
141
- Pick<SwitchProps, "isChecked" | "isDisabled"> & {
168
+ Pick<SwitchProps, "isChecked" | "isDisabled" | "isReadOnly"> & {
142
169
  odysseyDesignTokens: DesignTokens;
143
170
  }
144
- >(({ isChecked, isDisabled, odysseyDesignTokens }) => ({
171
+ >(({ isChecked, isDisabled, isReadOnly, odysseyDesignTokens }) => ({
145
172
  position: "absolute",
146
173
  top: "50%",
147
174
  left: 3,
148
175
  width: odysseyDesignTokens.Spacing4,
149
176
  transform: "translateY(-50%)",
150
177
  transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}`,
151
- opacity: isChecked ? 1 : 0,
178
+ opacity: 0,
152
179
  path: {
153
- fill: isDisabled
154
- ? odysseyDesignTokens.HueNeutral50
155
- : odysseyDesignTokens.HueNeutralWhite,
180
+ fill: odysseyDesignTokens.HueNeutralWhite,
156
181
  },
182
+
183
+ ...(isChecked && {
184
+ opacity: 1,
185
+ }),
186
+
187
+ ...((isDisabled || isReadOnly) && {
188
+ path: {
189
+ fill: odysseyDesignTokens.HueNeutral50,
190
+ },
191
+ }),
157
192
  }));
158
193
 
159
194
  const HiddenCheckbox = styled.input<{
160
195
  odysseyDesignTokens: DesignTokens;
161
- }>(({ odysseyDesignTokens }) => ({
196
+ isReadOnly?: boolean;
197
+ }>(({ odysseyDesignTokens, isReadOnly }) => ({
162
198
  position: "absolute",
163
199
  top: 0,
164
200
  left: 0,
@@ -166,7 +202,7 @@ const HiddenCheckbox = styled.input<{
166
202
  height: "100%",
167
203
  margin: 0,
168
204
  opacity: 0,
169
- cursor: "pointer",
205
+ cursor: isReadOnly ? "default" : "pointer",
170
206
  zIndex: 2,
171
207
 
172
208
  "&:focus-visible": {
@@ -194,6 +230,10 @@ export type SwitchProps = {
194
230
  * The value attribute of the Switch
195
231
  */
196
232
  value: string;
233
+ /**
234
+ * Determines whether the Switch is read-only
235
+ */
236
+ isReadOnly?: boolean;
197
237
  } & Pick<
198
238
  FieldComponentProps,
199
239
  "hint" | "HintLinkComponent" | "id" | "isFullWidth" | "isDisabled" | "name"
@@ -209,6 +249,7 @@ type SwitchLabelComponentProps = {
209
249
  isDisabled: SwitchProps["isDisabled"];
210
250
  isFullWidth: SwitchProps["isFullWidth"];
211
251
  label: SwitchProps["label"];
252
+ isReadOnly: SwitchProps["isReadOnly"];
212
253
  };
213
254
 
214
255
  const SwitchLabel = ({
@@ -218,6 +259,7 @@ const SwitchLabel = ({
218
259
  inputId,
219
260
  isDisabled,
220
261
  label,
262
+ isReadOnly,
221
263
  }: SwitchLabelComponentProps) => {
222
264
  const odysseyDesignTokens = useOdysseyDesignTokens();
223
265
 
@@ -226,6 +268,7 @@ const SwitchLabel = ({
226
268
  <StyledSwitchLabel
227
269
  htmlFor={inputId}
228
270
  isDisabled={isDisabled}
271
+ isReadOnly={isReadOnly}
229
272
  odysseyDesignTokens={odysseyDesignTokens}
230
273
  >
231
274
  {label}
@@ -252,6 +295,7 @@ const Switch = ({
252
295
  isDefaultChecked,
253
296
  isDisabled,
254
297
  isFullWidth = false,
298
+ isReadOnly = false,
255
299
  label,
256
300
  name,
257
301
  onChange,
@@ -292,12 +336,16 @@ const Switch = ({
292
336
 
293
337
  const handleOnChange = useCallback<ChangeEventHandler<HTMLInputElement>>(
294
338
  (event) => {
339
+ if (isReadOnly) {
340
+ event.preventDefault();
341
+ return;
342
+ }
295
343
  const target = event.target;
296
344
  const { checked, value } = target;
297
345
  setInternalSwitchChecked(checked);
298
346
  onChange?.({ checked, value });
299
347
  },
300
- [onChange, setInternalSwitchChecked],
348
+ [onChange, setInternalSwitchChecked, isReadOnly],
301
349
  );
302
350
 
303
351
  return (
@@ -321,6 +369,7 @@ const Switch = ({
321
369
  isDisabled={isDisabled}
322
370
  isFullWidth={isFullWidth}
323
371
  label={label}
372
+ isReadOnly={isReadOnly}
324
373
  />
325
374
  <SwitchContainer>
326
375
  <HiddenCheckbox
@@ -341,21 +390,26 @@ const Switch = ({
341
390
  odysseyDesignTokens={odysseyDesignTokens}
342
391
  type="checkbox"
343
392
  value={value}
393
+ readOnly={isReadOnly}
394
+ isReadOnly={isReadOnly}
344
395
  />
345
396
  <SwitchTrack
346
397
  data-switch-track
347
398
  isChecked={internalSwitchChecked}
348
399
  isDisabled={isDisabled}
400
+ isReadOnly={isReadOnly}
349
401
  odysseyDesignTokens={odysseyDesignTokens}
350
402
  >
351
403
  <SwitchThumb
352
404
  isChecked={internalSwitchChecked}
353
405
  isDisabled={isDisabled}
406
+ isReadOnly={isReadOnly}
354
407
  odysseyDesignTokens={odysseyDesignTokens}
355
408
  />
356
409
  <SwitchCheckMark
357
410
  isChecked={internalSwitchChecked}
358
411
  isDisabled={isDisabled}
412
+ isReadOnly={isReadOnly}
359
413
  odysseyDesignTokens={odysseyDesignTokens}
360
414
  />
361
415
  </SwitchTrack>
package/src/Tabs.tsx CHANGED
@@ -30,30 +30,28 @@ import { Badge, BadgeProps } from "./Badge";
30
30
  import { Box } from "./Box";
31
31
  import { HtmlProps } from "./HtmlProps";
32
32
  import { useOdysseyDesignTokens } from "./OdysseyDesignTokensContext";
33
- import { type FeatureTestSelector } from "./test-selectors";
33
+ import { type TestSelector } from "./test-selectors";
34
34
 
35
- export const TabsTestSelectors = {
36
- feature: {
35
+ export const TabsTestSelector = {
36
+ children: {
37
37
  tabItem: {
38
- selector: {
38
+ elementSelector: {
39
39
  method: "ByRole",
40
40
  options: {
41
- name: "${label}",
41
+ label: "name",
42
42
  },
43
- templateVariableNames: ["label"],
44
43
  role: "tab",
45
44
  },
46
45
  },
47
46
  },
48
- selector: {
47
+ elementSelector: {
49
48
  method: "ByRole",
50
49
  options: {
51
- name: "${ariaLabel}",
50
+ label: "name",
52
51
  },
53
52
  role: "tablist",
54
- templateVariableNames: ["ariaLabel"],
55
53
  },
56
- } as const satisfies FeatureTestSelector;
54
+ } as const satisfies TestSelector;
57
55
 
58
56
  export type TabItemProps = {
59
57
  /**
package/src/Tag.tsx CHANGED
@@ -12,9 +12,26 @@
12
12
 
13
13
  import { Chip as MuiChip, ChipProps as MuiChipProps } from "@mui/material";
14
14
  import { memo, ReactElement, useCallback, useContext } from "react";
15
+ import styled from "@emotion/styled";
15
16
  import { TagListContext } from "./TagListContext";
16
17
  import { MuiPropsContext, MuiPropsContextType } from "./MuiPropsContext";
17
18
  import { HtmlProps } from "./HtmlProps";
19
+ import {
20
+ DesignTokens,
21
+ useOdysseyDesignTokens,
22
+ } from "./OdysseyDesignTokensContext";
23
+ import { CloseCircleFilledIcon } from "./icons.generated";
24
+
25
+ export const tagColorVariants = [
26
+ "default",
27
+ "info",
28
+ "accentOne",
29
+ "accentTwo",
30
+ "accentThree",
31
+ "accentFour",
32
+ ] as const;
33
+
34
+ type TagColorVariant = (typeof tagColorVariants)[number];
18
35
 
19
36
  export type TagProps = {
20
37
  icon?: ReactElement;
@@ -31,9 +48,117 @@ export type TagProps = {
31
48
  * Callback fired when the remove button of the Tag is clicked
32
49
  */
33
50
  onRemove?: MuiChipProps["onDelete"];
51
+ /**
52
+ * Color variant of the Tag, affecting its appearance
53
+ */
54
+ colorVariant?: TagColorVariant;
34
55
  } & Pick<HtmlProps, "testId" | "translate">;
35
56
 
57
+ const getChipColors = (
58
+ colorVariant: TagColorVariant,
59
+ odysseyDesignTokens: DesignTokens,
60
+ ) => {
61
+ const colors = {
62
+ default: {
63
+ background: odysseyDesignTokens.HueNeutral100,
64
+ hover: odysseyDesignTokens.HueNeutral200,
65
+ active: odysseyDesignTokens.HueNeutral300,
66
+ text: odysseyDesignTokens.HueNeutral700,
67
+ border: odysseyDesignTokens.HueNeutral200,
68
+ deleteIcon: odysseyDesignTokens.HueNeutral500,
69
+ deleteIconHover: odysseyDesignTokens.HueNeutral600,
70
+ },
71
+ info: {
72
+ background: odysseyDesignTokens.HueBlue100,
73
+ hover: odysseyDesignTokens.HueBlue200,
74
+ active: odysseyDesignTokens.HueBlue300,
75
+ text: odysseyDesignTokens.HueBlue700,
76
+ border: odysseyDesignTokens.HueBlue200,
77
+ deleteIcon: odysseyDesignTokens.HueBlue500,
78
+ deleteIconHover: odysseyDesignTokens.HueBlue600,
79
+ },
80
+ accentOne: {
81
+ background: odysseyDesignTokens.HueAccentOne100,
82
+ hover: odysseyDesignTokens.HueAccentOne200,
83
+ active: odysseyDesignTokens.HueAccentOne300,
84
+ text: odysseyDesignTokens.HueAccentOne700,
85
+ border: odysseyDesignTokens.HueAccentOne200,
86
+ deleteIcon: odysseyDesignTokens.HueAccentOne500,
87
+ deleteIconHover: odysseyDesignTokens.HueAccentOne600,
88
+ },
89
+ accentTwo: {
90
+ background: odysseyDesignTokens.HueAccentTwo100,
91
+ hover: odysseyDesignTokens.HueAccentTwo200,
92
+ active: odysseyDesignTokens.HueAccentTwo300,
93
+ text: odysseyDesignTokens.HueAccentTwo700,
94
+ border: odysseyDesignTokens.HueAccentTwo200,
95
+ deleteIcon: odysseyDesignTokens.HueAccentTwo500,
96
+ deleteIconHover: odysseyDesignTokens.HueAccentTwo600,
97
+ },
98
+ accentThree: {
99
+ background: odysseyDesignTokens.HueAccentThree100,
100
+ hover: odysseyDesignTokens.HueAccentThree200,
101
+ active: odysseyDesignTokens.HueAccentThree300,
102
+ text: odysseyDesignTokens.HueAccentThree700,
103
+ border: odysseyDesignTokens.HueAccentThree200,
104
+ deleteIcon: odysseyDesignTokens.HueAccentThree500,
105
+ deleteIconHover: odysseyDesignTokens.HueAccentThree600,
106
+ },
107
+ accentFour: {
108
+ background: odysseyDesignTokens.HueAccentFour100,
109
+ hover: odysseyDesignTokens.HueAccentFour200,
110
+ active: odysseyDesignTokens.HueAccentFour300,
111
+ text: odysseyDesignTokens.HueAccentFour700,
112
+ border: odysseyDesignTokens.HueAccentFour200,
113
+ deleteIcon: odysseyDesignTokens.HueAccentFour500,
114
+ deleteIconHover: odysseyDesignTokens.HueAccentFour600,
115
+ },
116
+ };
117
+
118
+ return colors[colorVariant] || colors.default;
119
+ };
120
+
121
+ const StyledTag = styled(MuiChip, {
122
+ shouldForwardProp: (prop) =>
123
+ !["colorVariant", "odysseyDesignTokens"].includes(prop as string),
124
+ })<{
125
+ colorVariant: TagColorVariant;
126
+ odysseyDesignTokens: DesignTokens;
127
+ as?: React.ElementType; // Allow the 'as' prop to be forwarded
128
+ }>(({ colorVariant, odysseyDesignTokens }) => {
129
+ const colors = getChipColors(colorVariant, odysseyDesignTokens);
130
+
131
+ return {
132
+ backgroundColor: colors.background,
133
+ color: colors.text,
134
+ borderColor: colors.border,
135
+
136
+ "&.MuiChip-clickable:hover": {
137
+ backgroundColor: colors.hover,
138
+ },
139
+
140
+ "&.MuiChip-clickable:active": {
141
+ backgroundColor: colors.active,
142
+ },
143
+
144
+ "&.Mui-disabled": {
145
+ "& .MuiChip-deleteIcon": {
146
+ color: odysseyDesignTokens.HueNeutral300,
147
+ },
148
+ },
149
+
150
+ "& .MuiChip-deleteIcon": {
151
+ color: colors.deleteIcon,
152
+
153
+ "&:hover": {
154
+ color: colors.deleteIconHover,
155
+ },
156
+ },
157
+ };
158
+ });
159
+
36
160
  const Tag = ({
161
+ colorVariant = "default",
37
162
  icon,
38
163
  isDisabled,
39
164
  label,
@@ -42,21 +167,25 @@ const Tag = ({
42
167
  testId,
43
168
  translate,
44
169
  }: TagProps) => {
170
+ const odysseyDesignTokens = useOdysseyDesignTokens();
45
171
  const { chipElementType } = useContext(TagListContext);
46
172
 
47
173
  const renderTag = useCallback(
48
174
  (muiProps: MuiPropsContextType) => (
49
- <MuiChip
175
+ <StyledTag
50
176
  {...muiProps}
177
+ as={chipElementType}
51
178
  aria-disabled={isDisabled}
52
- clickable={onClick ? true : false}
53
- component={chipElementType}
179
+ clickable={Boolean(onClick)}
54
180
  data-se={testId}
181
+ colorVariant={colorVariant}
182
+ odysseyDesignTokens={odysseyDesignTokens}
55
183
  disabled={isDisabled}
56
184
  icon={icon}
57
185
  label={label}
58
186
  onClick={onClick}
59
187
  onDelete={onRemove}
188
+ deleteIcon={<CloseCircleFilledIcon />}
60
189
  translate={translate}
61
190
  />
62
191
  ),
@@ -69,6 +198,8 @@ const Tag = ({
69
198
  onRemove,
70
199
  testId,
71
200
  translate,
201
+ colorVariant,
202
+ odysseyDesignTokens,
72
203
  ],
73
204
  );
74
205
 
package/src/TextField.tsx CHANGED
@@ -30,56 +30,33 @@ import {
30
30
  import { Field } from "./Field";
31
31
  import { HtmlProps } from "./HtmlProps";
32
32
  import { FocusHandle, useInputValues, getControlState } from "./inputUtils";
33
- import { type FeatureTestSelector } from "./test-selectors";
33
+ import { type TestSelector } from "./test-selectors";
34
34
 
35
- export const TextFieldTestSelectors = {
36
- feature: {
37
- description: {
38
- selector: {
39
- method: "ByText",
40
- templateVariableNames: ["hint"],
41
- text: "${hint}",
42
- },
43
- },
44
- errorMessage: {
45
- selector: {
46
- method: "ByText",
47
- templateVariableNames: ["errorMessage"],
48
- text: "${errorMessage}",
49
- },
50
- },
51
- input: {
52
- selector: {
53
- method: "ByRole",
54
- options: {
55
- name: "${label}",
56
- },
57
- role: "textbox",
58
- templateVariableNames: ["label"],
59
- },
60
- },
61
- label: {
62
- selector: {
63
- method: "ByRole",
64
- options: {
65
- name: "${label}",
66
- },
67
- role: "LabelText",
68
- templateVariableNames: ["label"],
69
- },
70
- },
35
+ export const TextFieldTestSelector = {
36
+ accessibleText: {
37
+ errorMessage: "errorMessage",
38
+ hint: "description",
39
+ label: "label",
40
+ },
41
+ children: {
71
42
  link: {
72
- selector: {
43
+ elementSelector: {
73
44
  method: "ByRole",
74
45
  options: {
75
- name: "${label}",
46
+ label: "name",
76
47
  },
77
- templateVariableNames: ["label"],
78
48
  role: "link",
79
49
  },
80
50
  },
81
51
  },
82
- } as const satisfies FeatureTestSelector;
52
+ elementSelector: {
53
+ method: "ByRole",
54
+ options: {
55
+ label: "name",
56
+ },
57
+ role: "textbox",
58
+ },
59
+ } as const satisfies TestSelector;
83
60
 
84
61
  export const textFieldTypeValues = [
85
62
  "email",
package/src/Toast.tsx CHANGED
@@ -130,7 +130,7 @@ const Toast = ({
130
130
  >
131
131
  <AlertTitle translate={translate}>
132
132
  <ScreenReaderText translate={translate}>
133
- {t(`severity.${severity}:`)}
133
+ {t(`severity.${severity}`)}:
134
134
  </ScreenReaderText>
135
135
  {text}
136
136
  </AlertTitle>
@@ -14,14 +14,14 @@ import { memo, ReactElement } from "react";
14
14
  import { Box, Snackbar } from "@mui/material";
15
15
  import { Toast } from "./Toast";
16
16
 
17
- export type ToastStackProps = {
17
+ export type ToastListProps = {
18
18
  /**
19
19
  * The Toast or array of Toasts within the ToastStack
20
20
  */
21
21
  children: ReactElement<typeof Toast> | Array<ReactElement<typeof Toast>>;
22
22
  };
23
23
 
24
- const ToastStack = ({ children }: ToastStackProps) => {
24
+ const ToastStack = ({ children }: ToastListProps) => {
25
25
  return (
26
26
  <Snackbar open={true}>
27
27
  <Box
@@ -0,0 +1,53 @@
1
+ /*!
2
+ * Copyright (c) 2023-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
+ export const createShadowDomElements = (containerElement: HTMLElement) => {
14
+ const shadowRoot = containerElement.attachShadow({ mode: "open" });
15
+
16
+ // Container for Emotion `<style>` elements.
17
+ const emotionRootElement = document.createElement("div");
18
+ emotionRootElement.setAttribute("id", "style-root");
19
+ emotionRootElement.setAttribute("nonce", window.cspNonce);
20
+
21
+ // React app root component.
22
+ const shadowRootElement = document.createElement("div");
23
+ shadowRootElement.setAttribute("id", "shadow-root");
24
+ // This div could cause issues with layout of children.
25
+ // For flexibility, make it inherit its parent's height
26
+ shadowRootElement.style.setProperty("height", "inherit");
27
+
28
+ shadowRoot.appendChild(emotionRootElement);
29
+ shadowRoot.appendChild(shadowRootElement);
30
+
31
+ return { emotionRootElement, shadowRootElement };
32
+ };
33
+
34
+ /** @deprecated Use `createShadowDomElements` instead. */
35
+ export const createShadowRootElement = (
36
+ containerElement: HTMLElement,
37
+ ): [HTMLStyleElement, HTMLDivElement] => {
38
+ const shadowRoot = containerElement.attachShadow({ mode: "open" });
39
+
40
+ // the element that styles will be cached into
41
+ const emotionRootElement = document.createElement("style");
42
+ emotionRootElement.setAttribute("id", "style-root");
43
+ emotionRootElement.setAttribute("nonce", window.cspNonce);
44
+
45
+ // the element that emotion renders html into
46
+ const shadowRootElement = document.createElement("div");
47
+ shadowRootElement.setAttribute("id", "shadow-root");
48
+
49
+ shadowRoot.appendChild(emotionRootElement);
50
+ shadowRoot.appendChild(shadowRootElement);
51
+
52
+ return [emotionRootElement, shadowRootElement];
53
+ };