@okta/odyssey-react-mui 1.15.9 → 1.20.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 (960) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/Accordion.js +2 -0
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/Autocomplete.js +9 -0
  5. package/dist/Autocomplete.js.map +1 -1
  6. package/dist/Badge.js +1 -0
  7. package/dist/Badge.js.map +1 -1
  8. package/dist/Banner.js +6 -5
  9. package/dist/Banner.js.map +1 -1
  10. package/dist/Button.js +15 -11
  11. package/dist/Button.js.map +1 -1
  12. package/dist/Callout.js +45 -7
  13. package/dist/Callout.js.map +1 -1
  14. package/dist/{Tile.js → Card.js} +43 -28
  15. package/dist/Card.js.map +1 -0
  16. package/dist/DataTable/DataTable.js +68 -41
  17. package/dist/DataTable/DataTable.js.map +1 -1
  18. package/dist/DataTable/DataTableRowActions.js.map +1 -1
  19. package/dist/DataTable/constants.js +0 -1
  20. package/dist/DataTable/constants.js.map +1 -1
  21. package/dist/DataTable/index.js +0 -1
  22. package/dist/DataTable/index.js.map +1 -1
  23. package/dist/Dialog.js +9 -3
  24. package/dist/Dialog.js.map +1 -1
  25. package/dist/{labs/Drawer.js → Drawer.js} +5 -5
  26. package/dist/Drawer.js.map +1 -0
  27. package/dist/{DataTable/DataTableEmptyState.js → EmptyState.js} +17 -15
  28. package/dist/EmptyState.js.map +1 -0
  29. package/dist/ErrorMessageList.js +1 -1
  30. package/dist/ErrorMessageList.js.map +1 -1
  31. package/dist/FieldError.js +3 -2
  32. package/dist/FieldError.js.map +1 -1
  33. package/dist/HtmlProps.js.map +1 -1
  34. package/dist/MenuItem.js +1 -0
  35. package/dist/MenuItem.js.map +1 -1
  36. package/dist/OdysseyCacheProvider.js +5 -2
  37. package/dist/OdysseyCacheProvider.js.map +1 -1
  38. package/dist/OdysseyProvider.js +1 -1
  39. package/dist/OdysseyProvider.js.map +1 -1
  40. package/dist/OdysseyTranslationProvider.js +1 -6
  41. package/dist/OdysseyTranslationProvider.js.map +1 -1
  42. package/dist/{DataTable/DataTablePagination.js → Pagination/Pagination.js} +56 -59
  43. package/dist/Pagination/Pagination.js.map +1 -0
  44. package/dist/Pagination/constants.js +14 -0
  45. package/dist/Pagination/constants.js.map +1 -0
  46. package/dist/Pagination/index.js +15 -0
  47. package/dist/Pagination/index.js.map +1 -0
  48. package/dist/Pagination/usePagination.js +51 -0
  49. package/dist/Pagination/usePagination.js.map +1 -0
  50. package/dist/Radio.js +17 -5
  51. package/dist/Radio.js.map +1 -1
  52. package/dist/ScreenReaderText.js +4 -0
  53. package/dist/ScreenReaderText.js.map +1 -1
  54. package/dist/Select.js +1 -0
  55. package/dist/Select.js.map +1 -1
  56. package/dist/Status.js +5 -3
  57. package/dist/Status.js.map +1 -1
  58. package/dist/Surface.js +38 -0
  59. package/dist/Surface.js.map +1 -0
  60. package/dist/Tabs.js +22 -0
  61. package/dist/Tabs.js.map +1 -1
  62. package/dist/TextField.js +48 -0
  63. package/dist/TextField.js.map +1 -1
  64. package/dist/Toast.js +37 -34
  65. package/dist/Toast.js.map +1 -1
  66. package/dist/assertEnv.d.ts +18 -0
  67. package/dist/assertEnv.d.ts.map +1 -0
  68. package/dist/assertEnv.js +32 -0
  69. package/dist/icons.generated/Add.js +1 -1
  70. package/dist/icons.generated/Add.js.map +1 -1
  71. package/dist/icons.generated/AddCircle.js +1 -1
  72. package/dist/icons.generated/AddCircle.js.map +1 -1
  73. package/dist/icons.generated/Apps.js +1 -1
  74. package/dist/icons.generated/Apps.js.map +1 -1
  75. package/dist/icons.generated/ArrowBottom.js +2 -2
  76. package/dist/icons.generated/ArrowBottom.js.map +1 -1
  77. package/dist/icons.generated/ArrowDown.js +1 -1
  78. package/dist/icons.generated/ArrowDown.js.map +1 -1
  79. package/dist/icons.generated/ArrowLeft.js +1 -1
  80. package/dist/icons.generated/ArrowLeft.js.map +1 -1
  81. package/dist/icons.generated/ArrowLowerLeft.js +1 -1
  82. package/dist/icons.generated/ArrowLowerLeft.js.map +1 -1
  83. package/dist/icons.generated/ArrowLowerRight.js +1 -1
  84. package/dist/icons.generated/ArrowLowerRight.js.map +1 -1
  85. package/dist/icons.generated/ArrowRight.js +1 -1
  86. package/dist/icons.generated/ArrowRight.js.map +1 -1
  87. package/dist/icons.generated/ArrowTop.js +2 -2
  88. package/dist/icons.generated/ArrowTop.js.map +1 -1
  89. package/dist/icons.generated/ArrowUnsorted.js +1 -1
  90. package/dist/icons.generated/ArrowUnsorted.js.map +1 -1
  91. package/dist/icons.generated/ArrowUp.js +1 -1
  92. package/dist/icons.generated/ArrowUp.js.map +1 -1
  93. package/dist/icons.generated/ArrowUpperLeft.js +1 -1
  94. package/dist/icons.generated/ArrowUpperLeft.js.map +1 -1
  95. package/dist/icons.generated/ArrowUpperRight.js +1 -1
  96. package/dist/icons.generated/ArrowUpperRight.js.map +1 -1
  97. package/dist/icons.generated/Bug.js +1 -1
  98. package/dist/icons.generated/Bug.js.map +1 -1
  99. package/dist/icons.generated/Calendar.js +1 -1
  100. package/dist/icons.generated/Calendar.js.map +1 -1
  101. package/dist/icons.generated/Call.js +1 -1
  102. package/dist/icons.generated/Call.js.map +1 -1
  103. package/dist/icons.generated/Chat.js +1 -1
  104. package/dist/icons.generated/Chat.js.map +1 -1
  105. package/dist/icons.generated/Check.js +1 -1
  106. package/dist/icons.generated/Check.js.map +1 -1
  107. package/dist/icons.generated/CheckCircleFilled.js +1 -1
  108. package/dist/icons.generated/CheckCircleFilled.js.map +1 -1
  109. package/dist/icons.generated/ChevronDown.js +1 -1
  110. package/dist/icons.generated/ChevronDown.js.map +1 -1
  111. package/dist/icons.generated/ChevronLeft.js +1 -1
  112. package/dist/icons.generated/ChevronLeft.js.map +1 -1
  113. package/dist/icons.generated/ChevronRight.js +1 -1
  114. package/dist/icons.generated/ChevronRight.js.map +1 -1
  115. package/dist/icons.generated/ChevronUp.js +1 -1
  116. package/dist/icons.generated/ChevronUp.js.map +1 -1
  117. package/dist/icons.generated/Clock.js +1 -1
  118. package/dist/icons.generated/Clock.js.map +1 -1
  119. package/dist/icons.generated/Close.js +1 -1
  120. package/dist/icons.generated/Close.js.map +1 -1
  121. package/dist/icons.generated/CloseCircleFilled.js +1 -1
  122. package/dist/icons.generated/CloseCircleFilled.js.map +1 -1
  123. package/dist/icons.generated/CollapseLeft.js +1 -1
  124. package/dist/icons.generated/CollapseLeft.js.map +1 -1
  125. package/dist/icons.generated/CollapseRight.js +1 -1
  126. package/dist/icons.generated/CollapseRight.js.map +1 -1
  127. package/dist/icons.generated/Copy.js +1 -1
  128. package/dist/icons.generated/Copy.js.map +1 -1
  129. package/dist/icons.generated/Custom.js +39 -0
  130. package/dist/icons.generated/Custom.js.map +1 -0
  131. package/dist/icons.generated/DangerDiamond.js +1 -1
  132. package/dist/icons.generated/DangerDiamond.js.map +1 -1
  133. package/dist/icons.generated/DangerDiamondFilled.js +1 -1
  134. package/dist/icons.generated/DangerDiamondFilled.js.map +1 -1
  135. package/dist/icons.generated/Delete.js +1 -1
  136. package/dist/icons.generated/Delete.js.map +1 -1
  137. package/dist/icons.generated/Deny.js +1 -1
  138. package/dist/icons.generated/Deny.js.map +1 -1
  139. package/dist/icons.generated/Devices.js +1 -1
  140. package/dist/icons.generated/Devices.js.map +1 -1
  141. package/dist/icons.generated/Directory.js +1 -1
  142. package/dist/icons.generated/Directory.js.map +1 -1
  143. package/dist/icons.generated/Documentation.js +1 -1
  144. package/dist/icons.generated/Documentation.js.map +1 -1
  145. package/dist/icons.generated/Download.js +1 -1
  146. package/dist/icons.generated/Download.js.map +1 -1
  147. package/dist/icons.generated/DragIndicator.js +1 -1
  148. package/dist/icons.generated/DragIndicator.js.map +1 -1
  149. package/dist/icons.generated/Duo.js +47 -0
  150. package/dist/icons.generated/Duo.js.map +1 -0
  151. package/dist/icons.generated/Edit.js +1 -1
  152. package/dist/icons.generated/Edit.js.map +1 -1
  153. package/dist/icons.generated/Email.js +38 -0
  154. package/dist/icons.generated/Email.js.map +1 -0
  155. package/dist/icons.generated/ExpandLeft.js +1 -1
  156. package/dist/icons.generated/ExpandLeft.js.map +1 -1
  157. package/dist/icons.generated/ExpandRight.js +1 -1
  158. package/dist/icons.generated/ExpandRight.js.map +1 -1
  159. package/dist/icons.generated/ExternalLink.js +1 -1
  160. package/dist/icons.generated/ExternalLink.js.map +1 -1
  161. package/dist/icons.generated/Fido2.js +57 -0
  162. package/dist/icons.generated/Fido2.js.map +1 -0
  163. package/dist/icons.generated/Filter.js +1 -1
  164. package/dist/icons.generated/Filter.js.map +1 -1
  165. package/dist/icons.generated/Folder.js +1 -1
  166. package/dist/icons.generated/Folder.js.map +1 -1
  167. package/dist/icons.generated/Globe.js +1 -1
  168. package/dist/icons.generated/Globe.js.map +1 -1
  169. package/dist/icons.generated/GoogleAuth.js +54 -0
  170. package/dist/icons.generated/GoogleAuth.js.map +1 -0
  171. package/dist/icons.generated/Grid.js +1 -1
  172. package/dist/icons.generated/Grid.js.map +1 -1
  173. package/dist/icons.generated/Group.js +1 -1
  174. package/dist/icons.generated/Group.js.map +1 -1
  175. package/dist/icons.generated/Hide.js +1 -1
  176. package/dist/icons.generated/Hide.js.map +1 -1
  177. package/dist/icons.generated/Home.js +1 -1
  178. package/dist/icons.generated/Home.js.map +1 -1
  179. package/dist/icons.generated/Idp.js +42 -0
  180. package/dist/icons.generated/Idp.js.map +1 -0
  181. package/dist/icons.generated/InformationCircle.js +1 -1
  182. package/dist/icons.generated/InformationCircle.js.map +1 -1
  183. package/dist/icons.generated/InformationCircleFilled.js +1 -1
  184. package/dist/icons.generated/InformationCircleFilled.js.map +1 -1
  185. package/dist/icons.generated/Link.js +1 -1
  186. package/dist/icons.generated/Link.js.map +1 -1
  187. package/dist/icons.generated/List.js +1 -1
  188. package/dist/icons.generated/List.js.map +1 -1
  189. package/dist/icons.generated/Lock.js +1 -1
  190. package/dist/icons.generated/Lock.js.map +1 -1
  191. package/dist/icons.generated/More.js +1 -1
  192. package/dist/icons.generated/More.js.map +1 -1
  193. package/dist/icons.generated/Notification.js +1 -1
  194. package/dist/icons.generated/Notification.js.map +1 -1
  195. package/dist/icons.generated/OktaVerify.js +33 -0
  196. package/dist/icons.generated/OktaVerify.js.map +1 -0
  197. package/dist/icons.generated/OnPremMfa.js +39 -0
  198. package/dist/icons.generated/OnPremMfa.js.map +1 -0
  199. package/dist/icons.generated/OneTimePassword.js +49 -0
  200. package/dist/icons.generated/OneTimePassword.js.map +1 -0
  201. package/dist/icons.generated/Password.js +61 -0
  202. package/dist/icons.generated/Password.js.map +1 -0
  203. package/dist/icons.generated/Pause.js +1 -1
  204. package/dist/icons.generated/Pause.js.map +1 -1
  205. package/dist/icons.generated/QuestionCircle.js +1 -1
  206. package/dist/icons.generated/QuestionCircle.js.map +1 -1
  207. package/dist/icons.generated/QuestionCircleFilled.js +1 -1
  208. package/dist/icons.generated/QuestionCircleFilled.js.map +1 -1
  209. package/dist/icons.generated/Refresh.js +1 -1
  210. package/dist/icons.generated/Refresh.js.map +1 -1
  211. package/dist/icons.generated/Reset.js +1 -1
  212. package/dist/icons.generated/Reset.js.map +1 -1
  213. package/dist/icons.generated/Resume.js +1 -1
  214. package/dist/icons.generated/Resume.js.map +1 -1
  215. package/dist/icons.generated/Search.js +1 -1
  216. package/dist/icons.generated/Search.js.map +1 -1
  217. package/dist/icons.generated/SecurityQuestion.js +41 -0
  218. package/dist/icons.generated/SecurityQuestion.js.map +1 -0
  219. package/dist/icons.generated/Server.js +1 -1
  220. package/dist/icons.generated/Server.js.map +1 -1
  221. package/dist/icons.generated/Settings.js +1 -1
  222. package/dist/icons.generated/Settings.js.map +1 -1
  223. package/dist/icons.generated/Show.js +1 -1
  224. package/dist/icons.generated/Show.js.map +1 -1
  225. package/dist/icons.generated/SmartCard.js +49 -0
  226. package/dist/icons.generated/SmartCard.js.map +1 -0
  227. package/dist/icons.generated/Sms.js +49 -0
  228. package/dist/icons.generated/Sms.js.map +1 -0
  229. package/dist/icons.generated/Subtract.js +1 -1
  230. package/dist/icons.generated/Subtract.js.map +1 -1
  231. package/dist/icons.generated/SymantecVip.js +38 -0
  232. package/dist/icons.generated/SymantecVip.js.map +1 -0
  233. package/dist/icons.generated/Sync.js +1 -1
  234. package/dist/icons.generated/Sync.js.map +1 -1
  235. package/dist/icons.generated/ThumbsDown.js +33 -0
  236. package/dist/icons.generated/ThumbsDown.js.map +1 -0
  237. package/dist/icons.generated/ThumbsUp.js +33 -0
  238. package/dist/icons.generated/ThumbsUp.js.map +1 -0
  239. package/dist/icons.generated/Unlock.js +1 -1
  240. package/dist/icons.generated/Unlock.js.map +1 -1
  241. package/dist/icons.generated/Upload.js +1 -1
  242. package/dist/icons.generated/Upload.js.map +1 -1
  243. package/dist/icons.generated/User.js +1 -1
  244. package/dist/icons.generated/User.js.map +1 -1
  245. package/dist/icons.generated/Video.js +1 -1
  246. package/dist/icons.generated/Video.js.map +1 -1
  247. package/dist/icons.generated/VoiceCall.js +54 -0
  248. package/dist/icons.generated/VoiceCall.js.map +1 -0
  249. package/dist/icons.generated/Warning.js +1 -1
  250. package/dist/icons.generated/Warning.js.map +1 -1
  251. package/dist/icons.generated/WarningFilled.js +1 -1
  252. package/dist/icons.generated/WarningFilled.js.map +1 -1
  253. package/dist/icons.generated/Yubikey.js +31 -0
  254. package/dist/icons.generated/Yubikey.js.map +1 -0
  255. package/dist/icons.generated/index.js +18 -0
  256. package/dist/icons.generated/index.js.map +1 -1
  257. package/dist/index.d.ts +24 -0
  258. package/dist/index.d.ts.map +1 -0
  259. package/dist/index.js +7 -2
  260. package/dist/index.js.map +1 -1
  261. package/dist/index.scss +457 -0
  262. package/dist/labs/DataComponents/BulkActionsMenu.js +77 -0
  263. package/dist/labs/DataComponents/BulkActionsMenu.js.map +1 -0
  264. package/dist/labs/DataComponents/DataStack.js +79 -0
  265. package/dist/labs/DataComponents/DataStack.js.map +1 -0
  266. package/dist/labs/DataComponents/DataTable.js +90 -0
  267. package/dist/labs/DataComponents/DataTable.js.map +1 -0
  268. package/dist/labs/DataComponents/DataView.js +278 -0
  269. package/dist/labs/DataComponents/DataView.js.map +1 -0
  270. package/dist/{src/DataTable/DataTableEmptyState.d.ts → labs/DataComponents/DetailPanel.js} +14 -9
  271. package/dist/labs/DataComponents/DetailPanel.js.map +1 -0
  272. package/dist/labs/DataComponents/LayoutSwitcher.js +53 -0
  273. package/dist/labs/DataComponents/LayoutSwitcher.js.map +1 -0
  274. package/dist/labs/DataComponents/RowActions.js +80 -0
  275. package/dist/labs/DataComponents/RowActions.js.map +1 -0
  276. package/dist/labs/DataComponents/StackCard.js +163 -0
  277. package/dist/labs/DataComponents/StackCard.js.map +1 -0
  278. package/dist/labs/DataComponents/StackContent.js +143 -0
  279. package/dist/labs/DataComponents/StackContent.js.map +1 -0
  280. package/dist/labs/DataComponents/TableContent.js +248 -0
  281. package/dist/labs/DataComponents/TableContent.js.map +1 -0
  282. package/dist/labs/DataComponents/TableSettings.js +96 -0
  283. package/dist/labs/DataComponents/TableSettings.js.map +1 -0
  284. package/dist/labs/DataComponents/componentTypes.js +2 -0
  285. package/dist/labs/DataComponents/componentTypes.js.map +1 -0
  286. package/dist/labs/DataComponents/constants.js +17 -0
  287. package/dist/labs/DataComponents/constants.js.map +1 -0
  288. package/dist/labs/DataComponents/dataTypes.js +2 -0
  289. package/dist/labs/DataComponents/dataTypes.js.map +1 -0
  290. package/dist/labs/DataComponents/fetchData.js +33 -0
  291. package/dist/labs/DataComponents/fetchData.js.map +1 -0
  292. package/dist/labs/DataComponents/index.js +18 -0
  293. package/dist/labs/DataComponents/index.js.map +1 -0
  294. package/dist/labs/DataComponents/tableConstants.js +146 -0
  295. package/dist/labs/DataComponents/tableConstants.js.map +1 -0
  296. package/dist/labs/DataComponents/useFilterConversion.js +58 -0
  297. package/dist/labs/DataComponents/useFilterConversion.js.map +1 -0
  298. package/dist/labs/DataFilters.js +139 -82
  299. package/dist/labs/DataFilters.js.map +1 -1
  300. package/dist/labs/DateField.js +77 -0
  301. package/dist/labs/DateField.js.map +1 -0
  302. package/dist/labs/DatePicker.js +186 -23
  303. package/dist/labs/DatePicker.js.map +1 -1
  304. package/dist/labs/{DatePicker.types.js → DatePicker.types.d.js} +1 -1
  305. package/dist/labs/DatePicker.types.d.js.map +1 -0
  306. package/dist/labs/FileUpload.js +28 -25
  307. package/dist/labs/FileUpload.js.map +1 -1
  308. package/dist/labs/FileUploadIllustration.js +1 -1
  309. package/dist/labs/FileUploadIllustration.js.map +1 -1
  310. package/dist/labs/FileUploadPreview.js +1 -0
  311. package/dist/labs/FileUploadPreview.js.map +1 -1
  312. package/dist/labs/Layout.js +49 -0
  313. package/dist/labs/Layout.js.map +1 -0
  314. package/dist/labs/NavAccordion.js +80 -0
  315. package/dist/labs/NavAccordion.js.map +1 -0
  316. package/dist/labs/PageTemplate.js +140 -0
  317. package/dist/labs/PageTemplate.js.map +1 -0
  318. package/dist/labs/SideNav.js +478 -0
  319. package/dist/labs/SideNav.js.map +1 -0
  320. package/dist/labs/Switch.js +186 -77
  321. package/dist/labs/Switch.js.map +1 -1
  322. package/dist/labs/datePickerTheme.js +138 -80
  323. package/dist/labs/datePickerTheme.js.map +1 -1
  324. package/dist/labs/index.js +5 -1
  325. package/dist/labs/index.js.map +1 -1
  326. package/dist/labs/useDatePickerTranslations.js +71 -0
  327. package/dist/labs/useDatePickerTranslations.js.map +1 -0
  328. package/dist/preset.d.ts +23 -0
  329. package/dist/preset.d.ts.map +1 -0
  330. package/dist/preset.js +35 -0
  331. package/dist/properties/ts/odyssey-react-mui.js +68 -10
  332. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  333. package/dist/properties/ts/odyssey-react-mui_cs.js +55 -8
  334. package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  335. package/dist/properties/ts/odyssey-react-mui_da.js +55 -8
  336. package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
  337. package/dist/properties/ts/odyssey-react-mui_de.js +55 -8
  338. package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
  339. package/dist/properties/ts/odyssey-react-mui_el.js +55 -8
  340. package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
  341. package/dist/properties/ts/odyssey-react-mui_es.js +55 -8
  342. package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
  343. package/dist/properties/ts/odyssey-react-mui_fi.js +55 -8
  344. package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  345. package/dist/properties/ts/odyssey-react-mui_fr.js +55 -8
  346. package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  347. package/dist/properties/ts/odyssey-react-mui_ht.js +98 -0
  348. package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -0
  349. package/dist/properties/ts/odyssey-react-mui_hu.js +55 -8
  350. package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  351. package/dist/properties/ts/odyssey-react-mui_id.js +55 -8
  352. package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
  353. package/dist/properties/ts/odyssey-react-mui_it.js +55 -8
  354. package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
  355. package/dist/properties/ts/odyssey-react-mui_ja.js +55 -8
  356. package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  357. package/dist/properties/ts/odyssey-react-mui_ko.js +55 -8
  358. package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  359. package/dist/properties/ts/odyssey-react-mui_ms.js +55 -8
  360. package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  361. package/dist/properties/ts/odyssey-react-mui_nb.js +55 -8
  362. package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  363. package/dist/properties/ts/odyssey-react-mui_nl_NL.js +55 -8
  364. package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  365. package/dist/properties/ts/odyssey-react-mui_pl.js +55 -8
  366. package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  367. package/dist/properties/ts/odyssey-react-mui_pt_BR.js +55 -8
  368. package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  369. package/dist/properties/ts/odyssey-react-mui_ro.js +55 -8
  370. package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  371. package/dist/properties/ts/odyssey-react-mui_ru.js +55 -8
  372. package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  373. package/dist/properties/ts/odyssey-react-mui_sv.js +55 -8
  374. package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  375. package/dist/properties/ts/odyssey-react-mui_th.js +55 -8
  376. package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
  377. package/dist/properties/ts/odyssey-react-mui_tr.js +55 -8
  378. package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  379. package/dist/properties/ts/odyssey-react-mui_uk.js +55 -8
  380. package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  381. package/dist/properties/ts/odyssey-react-mui_vi.js +55 -8
  382. package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  383. package/dist/properties/ts/odyssey-react-mui_zh_CN.js +55 -8
  384. package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  385. package/dist/properties/ts/odyssey-react-mui_zh_TW.js +55 -8
  386. package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  387. package/dist/remUtils.js +14 -0
  388. package/dist/remUtils.js.map +1 -0
  389. package/dist/scripts/generateTestSelectorsJson.d.ts +13 -0
  390. package/dist/scripts/generateTestSelectorsJson.d.ts.map +1 -0
  391. package/dist/src/Accordion.d.ts +1 -1
  392. package/dist/src/Accordion.d.ts.map +1 -1
  393. package/dist/src/Autocomplete.d.ts +7 -1
  394. package/dist/src/Autocomplete.d.ts.map +1 -1
  395. package/dist/src/Badge.d.ts +2 -2
  396. package/dist/src/Badge.d.ts.map +1 -1
  397. package/dist/src/Banner.d.ts.map +1 -1
  398. package/dist/src/Button.d.ts +10 -6
  399. package/dist/src/Button.d.ts.map +1 -1
  400. package/dist/src/Callout.d.ts +38 -2
  401. package/dist/src/Callout.d.ts.map +1 -1
  402. package/dist/src/{Tile.d.ts → Card.d.ts} +6 -27
  403. package/dist/src/Card.d.ts.map +1 -0
  404. package/dist/src/DataTable/DataTable.d.ts +65 -48
  405. package/dist/src/DataTable/DataTable.d.ts.map +1 -1
  406. package/dist/src/DataTable/DataTableRowActions.d.ts +1 -1
  407. package/dist/src/DataTable/DataTableRowActions.d.ts.map +1 -1
  408. package/dist/src/DataTable/constants.d.ts +0 -1
  409. package/dist/src/DataTable/constants.d.ts.map +1 -1
  410. package/dist/src/DataTable/index.d.ts +1 -2
  411. package/dist/src/DataTable/index.d.ts.map +1 -1
  412. package/dist/src/DataTable/reorderDataRowsLocally.d.ts.map +1 -1
  413. package/dist/src/DataTable/useRowReordering.d.ts +3 -3
  414. package/dist/src/DataTable/useRowReordering.d.ts.map +1 -1
  415. package/dist/src/Dialog.d.ts +19 -7
  416. package/dist/src/Dialog.d.ts.map +1 -1
  417. package/dist/src/{labs/Drawer.d.ts → Drawer.d.ts} +3 -3
  418. package/dist/src/Drawer.d.ts.map +1 -0
  419. package/dist/src/EmptyState.d.ts +34 -0
  420. package/dist/src/EmptyState.d.ts.map +1 -0
  421. package/dist/src/ErrorMessageList.d.ts.map +1 -1
  422. package/dist/src/FieldError.d.ts.map +1 -1
  423. package/dist/src/HtmlProps.d.ts +1 -0
  424. package/dist/src/HtmlProps.d.ts.map +1 -1
  425. package/dist/src/MenuItem.d.ts.map +1 -1
  426. package/dist/src/OdysseyCacheProvider.d.ts +6 -2
  427. package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
  428. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  429. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  430. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  431. package/dist/src/Pagination/Pagination.d.ts +70 -0
  432. package/dist/src/Pagination/Pagination.d.ts.map +1 -0
  433. package/dist/src/Pagination/constants.d.ts +13 -0
  434. package/dist/src/Pagination/constants.d.ts.map +1 -0
  435. package/dist/src/Pagination/index.d.ts +15 -0
  436. package/dist/src/Pagination/index.d.ts.map +1 -0
  437. package/dist/src/Pagination/usePagination.d.ts +23 -0
  438. package/dist/src/Pagination/usePagination.d.ts.map +1 -0
  439. package/dist/src/Radio.d.ts +2 -2
  440. package/dist/src/Radio.d.ts.map +1 -1
  441. package/dist/src/ScreenReaderText.d.ts +3 -2
  442. package/dist/src/ScreenReaderText.d.ts.map +1 -1
  443. package/dist/src/Select.d.ts.map +1 -1
  444. package/dist/src/Status.d.ts +7 -2
  445. package/dist/src/Status.d.ts.map +1 -1
  446. package/dist/src/{labs/DatePicker.types.d.ts → Surface.d.ts} +7 -8
  447. package/dist/src/Surface.d.ts.map +1 -0
  448. package/dist/src/Tabs.d.ts +22 -0
  449. package/dist/src/Tabs.d.ts.map +1 -1
  450. package/dist/src/TextField.d.ts +48 -0
  451. package/dist/src/TextField.d.ts.map +1 -1
  452. package/dist/src/Toast.d.ts.map +1 -1
  453. package/dist/src/icons.generated/Add.d.ts +1 -1
  454. package/dist/src/icons.generated/AddCircle.d.ts +1 -1
  455. package/dist/src/icons.generated/Apps.d.ts +1 -1
  456. package/dist/src/icons.generated/ArrowBottom.d.ts +1 -1
  457. package/dist/src/icons.generated/ArrowDown.d.ts +1 -1
  458. package/dist/src/icons.generated/ArrowLeft.d.ts +1 -1
  459. package/dist/src/icons.generated/ArrowLowerLeft.d.ts +1 -1
  460. package/dist/src/icons.generated/ArrowLowerRight.d.ts +1 -1
  461. package/dist/src/icons.generated/ArrowRight.d.ts +1 -1
  462. package/dist/src/icons.generated/ArrowTop.d.ts +1 -1
  463. package/dist/src/icons.generated/ArrowUnsorted.d.ts +1 -1
  464. package/dist/src/icons.generated/ArrowUp.d.ts +1 -1
  465. package/dist/src/icons.generated/ArrowUpperLeft.d.ts +1 -1
  466. package/dist/src/icons.generated/ArrowUpperRight.d.ts +1 -1
  467. package/dist/src/icons.generated/Bug.d.ts +1 -1
  468. package/dist/src/icons.generated/Calendar.d.ts +1 -1
  469. package/dist/src/icons.generated/Call.d.ts +1 -1
  470. package/dist/src/icons.generated/Chat.d.ts +1 -1
  471. package/dist/src/icons.generated/Check.d.ts +1 -1
  472. package/dist/src/icons.generated/CheckCircleFilled.d.ts +1 -1
  473. package/dist/src/icons.generated/ChevronDown.d.ts +1 -1
  474. package/dist/src/icons.generated/ChevronLeft.d.ts +1 -1
  475. package/dist/src/icons.generated/ChevronRight.d.ts +1 -1
  476. package/dist/src/icons.generated/ChevronUp.d.ts +1 -1
  477. package/dist/src/icons.generated/Clock.d.ts +1 -1
  478. package/dist/src/icons.generated/Close.d.ts +1 -1
  479. package/dist/src/icons.generated/CloseCircleFilled.d.ts +1 -1
  480. package/dist/src/icons.generated/CollapseLeft.d.ts +1 -1
  481. package/dist/src/icons.generated/CollapseRight.d.ts +1 -1
  482. package/dist/src/icons.generated/Copy.d.ts +1 -1
  483. package/dist/src/icons.generated/Custom.d.ts +16 -0
  484. package/dist/src/icons.generated/Custom.d.ts.map +1 -0
  485. package/dist/src/icons.generated/DangerDiamond.d.ts +1 -1
  486. package/dist/src/icons.generated/DangerDiamondFilled.d.ts +1 -1
  487. package/dist/src/icons.generated/Delete.d.ts +1 -1
  488. package/dist/src/icons.generated/Deny.d.ts +1 -1
  489. package/dist/src/icons.generated/Devices.d.ts +1 -1
  490. package/dist/src/icons.generated/Directory.d.ts +1 -1
  491. package/dist/src/icons.generated/Documentation.d.ts +1 -1
  492. package/dist/src/icons.generated/Download.d.ts +1 -1
  493. package/dist/src/icons.generated/DragIndicator.d.ts +1 -1
  494. package/dist/src/icons.generated/Duo.d.ts +16 -0
  495. package/dist/src/icons.generated/Duo.d.ts.map +1 -0
  496. package/dist/src/icons.generated/Edit.d.ts +1 -1
  497. package/dist/src/icons.generated/Email.d.ts +16 -0
  498. package/dist/src/icons.generated/Email.d.ts.map +1 -0
  499. package/dist/src/icons.generated/ExpandLeft.d.ts +1 -1
  500. package/dist/src/icons.generated/ExpandRight.d.ts +1 -1
  501. package/dist/src/icons.generated/ExternalLink.d.ts +1 -1
  502. package/dist/src/icons.generated/Fido2.d.ts +16 -0
  503. package/dist/src/icons.generated/Fido2.d.ts.map +1 -0
  504. package/dist/src/icons.generated/Filter.d.ts +1 -1
  505. package/dist/src/icons.generated/Folder.d.ts +1 -1
  506. package/dist/src/icons.generated/Globe.d.ts +1 -1
  507. package/dist/src/icons.generated/GoogleAuth.d.ts +16 -0
  508. package/dist/src/icons.generated/GoogleAuth.d.ts.map +1 -0
  509. package/dist/src/icons.generated/Grid.d.ts +1 -1
  510. package/dist/src/icons.generated/Group.d.ts +1 -1
  511. package/dist/src/icons.generated/Hide.d.ts +1 -1
  512. package/dist/src/icons.generated/Home.d.ts +1 -1
  513. package/dist/src/icons.generated/Idp.d.ts +16 -0
  514. package/dist/src/icons.generated/Idp.d.ts.map +1 -0
  515. package/dist/src/icons.generated/InformationCircle.d.ts +1 -1
  516. package/dist/src/icons.generated/InformationCircleFilled.d.ts +1 -1
  517. package/dist/src/icons.generated/Link.d.ts +1 -1
  518. package/dist/src/icons.generated/List.d.ts +1 -1
  519. package/dist/src/icons.generated/Lock.d.ts +1 -1
  520. package/dist/src/icons.generated/More.d.ts +1 -1
  521. package/dist/src/icons.generated/Notification.d.ts +1 -1
  522. package/dist/src/icons.generated/OktaVerify.d.ts +16 -0
  523. package/dist/src/icons.generated/OktaVerify.d.ts.map +1 -0
  524. package/dist/src/icons.generated/OnPremMfa.d.ts +16 -0
  525. package/dist/src/icons.generated/OnPremMfa.d.ts.map +1 -0
  526. package/dist/src/icons.generated/OneTimePassword.d.ts +16 -0
  527. package/dist/src/icons.generated/OneTimePassword.d.ts.map +1 -0
  528. package/dist/src/icons.generated/Password.d.ts +16 -0
  529. package/dist/src/icons.generated/Password.d.ts.map +1 -0
  530. package/dist/src/icons.generated/Pause.d.ts +1 -1
  531. package/dist/src/icons.generated/QuestionCircle.d.ts +1 -1
  532. package/dist/src/icons.generated/QuestionCircleFilled.d.ts +1 -1
  533. package/dist/src/icons.generated/Refresh.d.ts +1 -1
  534. package/dist/src/icons.generated/Reset.d.ts +1 -1
  535. package/dist/src/icons.generated/Resume.d.ts +1 -1
  536. package/dist/src/icons.generated/Search.d.ts +1 -1
  537. package/dist/src/icons.generated/SecurityQuestion.d.ts +16 -0
  538. package/dist/src/icons.generated/SecurityQuestion.d.ts.map +1 -0
  539. package/dist/src/icons.generated/Server.d.ts +1 -1
  540. package/dist/src/icons.generated/Settings.d.ts +1 -1
  541. package/dist/src/icons.generated/Show.d.ts +1 -1
  542. package/dist/src/icons.generated/SmartCard.d.ts +16 -0
  543. package/dist/src/icons.generated/SmartCard.d.ts.map +1 -0
  544. package/dist/src/icons.generated/Sms.d.ts +16 -0
  545. package/dist/src/icons.generated/Sms.d.ts.map +1 -0
  546. package/dist/src/icons.generated/Subtract.d.ts +1 -1
  547. package/dist/src/icons.generated/SymantecVip.d.ts +16 -0
  548. package/dist/src/icons.generated/SymantecVip.d.ts.map +1 -0
  549. package/dist/src/icons.generated/Sync.d.ts +1 -1
  550. package/dist/src/icons.generated/ThumbsDown.d.ts +16 -0
  551. package/dist/src/icons.generated/ThumbsDown.d.ts.map +1 -0
  552. package/dist/src/icons.generated/ThumbsUp.d.ts +16 -0
  553. package/dist/src/icons.generated/ThumbsUp.d.ts.map +1 -0
  554. package/dist/src/icons.generated/Unlock.d.ts +1 -1
  555. package/dist/src/icons.generated/Upload.d.ts +1 -1
  556. package/dist/src/icons.generated/User.d.ts +1 -1
  557. package/dist/src/icons.generated/Video.d.ts +1 -1
  558. package/dist/src/icons.generated/VoiceCall.d.ts +16 -0
  559. package/dist/src/icons.generated/VoiceCall.d.ts.map +1 -0
  560. package/dist/src/icons.generated/Warning.d.ts +1 -1
  561. package/dist/src/icons.generated/WarningFilled.d.ts +1 -1
  562. package/dist/src/icons.generated/Yubikey.d.ts +16 -0
  563. package/dist/src/icons.generated/Yubikey.d.ts.map +1 -0
  564. package/dist/src/icons.generated/index.d.ts +18 -0
  565. package/dist/src/icons.generated/index.d.ts.map +1 -1
  566. package/dist/src/index.d.ts +7 -2
  567. package/dist/src/index.d.ts.map +1 -1
  568. package/dist/src/inputUtils.d.ts.map +1 -1
  569. package/dist/src/labs/DataComponents/BulkActionsMenu.d.ts +23 -0
  570. package/dist/src/labs/DataComponents/BulkActionsMenu.d.ts.map +1 -0
  571. package/dist/src/labs/DataComponents/DataStack.d.ts +21 -0
  572. package/dist/src/labs/DataComponents/DataStack.d.ts.map +1 -0
  573. package/dist/src/labs/DataComponents/DataTable.d.ts +17 -0
  574. package/dist/src/labs/DataComponents/DataTable.d.ts.map +1 -0
  575. package/dist/src/labs/DataComponents/DataView.d.ts +17 -0
  576. package/dist/src/labs/DataComponents/DataView.d.ts.map +1 -0
  577. package/dist/src/labs/DataComponents/DetailPanel.d.ts +20 -0
  578. package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +1 -0
  579. package/dist/src/labs/DataComponents/LayoutSwitcher.d.ts +21 -0
  580. package/dist/src/labs/DataComponents/LayoutSwitcher.d.ts.map +1 -0
  581. package/dist/src/labs/DataComponents/RowActions.d.ts +31 -0
  582. package/dist/src/labs/DataComponents/RowActions.d.ts.map +1 -0
  583. package/dist/src/labs/DataComponents/StackCard.d.ts +36 -0
  584. package/dist/src/labs/DataComponents/StackCard.d.ts.map +1 -0
  585. package/dist/src/labs/DataComponents/StackContent.d.ts +64 -0
  586. package/dist/src/labs/DataComponents/StackContent.d.ts.map +1 -0
  587. package/dist/src/labs/DataComponents/TableContent.d.ts +66 -0
  588. package/dist/src/labs/DataComponents/TableContent.d.ts.map +1 -0
  589. package/dist/src/labs/DataComponents/TableSettings.d.ts +21 -0
  590. package/dist/src/labs/DataComponents/TableSettings.d.ts.map +1 -0
  591. package/dist/src/labs/DataComponents/componentTypes.d.ts +81 -0
  592. package/dist/src/labs/DataComponents/componentTypes.d.ts.map +1 -0
  593. package/dist/src/labs/DataComponents/constants.d.ts +16 -0
  594. package/dist/src/labs/DataComponents/constants.d.ts.map +1 -0
  595. package/dist/src/labs/DataComponents/dataTypes.d.ts +52 -0
  596. package/dist/src/labs/DataComponents/dataTypes.d.ts.map +1 -0
  597. package/dist/src/labs/DataComponents/fetchData.d.ts +26 -0
  598. package/dist/src/labs/DataComponents/fetchData.d.ts.map +1 -0
  599. package/dist/src/labs/DataComponents/index.d.ts +18 -0
  600. package/dist/src/labs/DataComponents/index.d.ts.map +1 -0
  601. package/dist/src/labs/DataComponents/tableConstants.d.ts +100 -0
  602. package/dist/src/labs/DataComponents/tableConstants.d.ts.map +1 -0
  603. package/dist/src/labs/DataComponents/useFilterConversion.d.ts +20 -0
  604. package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +1 -0
  605. package/dist/src/labs/DataFilters.d.ts +14 -7
  606. package/dist/src/labs/DataFilters.d.ts.map +1 -1
  607. package/dist/src/labs/DateField.d.ts +23 -0
  608. package/dist/src/labs/DateField.d.ts.map +1 -0
  609. package/dist/src/labs/DatePicker.d.ts +31 -8
  610. package/dist/src/labs/DatePicker.d.ts.map +1 -1
  611. package/dist/src/labs/FileUpload.d.ts +2 -2
  612. package/dist/src/labs/FileUpload.d.ts.map +1 -1
  613. package/dist/src/labs/FileUploadPreview.d.ts.map +1 -1
  614. package/dist/src/labs/GroupPicker.d.ts.map +1 -1
  615. package/dist/src/labs/Layout.d.ts +28 -0
  616. package/dist/src/labs/Layout.d.ts.map +1 -0
  617. package/dist/src/labs/NavAccordion.d.ts +52 -0
  618. package/dist/src/labs/NavAccordion.d.ts.map +1 -0
  619. package/dist/src/labs/PageTemplate.d.ts +57 -0
  620. package/dist/src/labs/PageTemplate.d.ts.map +1 -0
  621. package/dist/src/labs/PaginatedTable.d.ts.map +1 -1
  622. package/dist/src/labs/SideNav.d.ts +120 -0
  623. package/dist/src/labs/SideNav.d.ts.map +1 -0
  624. package/dist/src/labs/StaticTable.d.ts.map +1 -1
  625. package/dist/src/labs/Switch.d.ts +3 -7
  626. package/dist/src/labs/Switch.d.ts.map +1 -1
  627. package/dist/src/labs/datePickerTheme.d.ts.map +1 -1
  628. package/dist/src/labs/index.d.ts +5 -1
  629. package/dist/src/labs/index.d.ts.map +1 -1
  630. package/dist/src/labs/useDatePickerTranslations.d.ts +15 -0
  631. package/dist/src/labs/useDatePickerTranslations.d.ts.map +1 -0
  632. package/dist/src/properties/ts/odyssey-react-mui.d.ts +66 -8
  633. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  634. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +54 -7
  635. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  636. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +54 -7
  637. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  638. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +54 -7
  639. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  640. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +54 -7
  641. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  642. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +54 -7
  643. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  644. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +54 -7
  645. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  646. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +54 -7
  647. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  648. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +98 -0
  649. package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -0
  650. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +54 -7
  651. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  652. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +54 -7
  653. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  654. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +54 -7
  655. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  656. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +54 -7
  657. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  658. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +54 -7
  659. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  660. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +54 -7
  661. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  662. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +54 -7
  663. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  664. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +54 -7
  665. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  666. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +54 -7
  667. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  668. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +54 -7
  669. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  670. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +54 -7
  671. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  672. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +54 -7
  673. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  674. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +54 -7
  675. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  676. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +54 -7
  677. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  678. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +54 -7
  679. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  680. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +54 -7
  681. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  682. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +54 -7
  683. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  684. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +54 -7
  685. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  686. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +54 -7
  687. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  688. package/dist/src/remUtils.d.ts +24 -0
  689. package/dist/src/remUtils.d.ts.map +1 -0
  690. package/dist/src/test-selectors/featureTestSelector.d.ts +31 -0
  691. package/dist/src/test-selectors/featureTestSelector.d.ts.map +1 -0
  692. package/dist/src/test-selectors/index.d.ts +15 -0
  693. package/dist/src/test-selectors/index.d.ts.map +1 -0
  694. package/dist/src/test-selectors/odysseyTestSelectors.d.ts +120 -0
  695. package/dist/src/test-selectors/odysseyTestSelectors.d.ts.map +1 -0
  696. package/dist/src/test-selectors/querySelector.d.ts +3632 -0
  697. package/dist/src/test-selectors/querySelector.d.ts.map +1 -0
  698. package/dist/src/theme/components.d.ts +1 -1
  699. package/dist/src/theme/components.d.ts.map +1 -1
  700. package/dist/src/theme/components.types.d.ts +5 -3
  701. package/dist/src/theme/components.types.d.ts.map +1 -1
  702. package/dist/src/theme/createOdysseyMuiTheme.d.ts +1 -1
  703. package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
  704. package/dist/src/theme/mixins.d.ts.map +1 -1
  705. package/dist/src/theme/palette.d.ts.map +1 -1
  706. package/dist/src/theme/shape.d.ts.map +1 -1
  707. package/dist/src/theme/spacing.d.ts.map +1 -1
  708. package/dist/src/theme/typography.d.ts.map +1 -1
  709. package/dist/test-selectors/featureTestSelector.js +2 -0
  710. package/dist/test-selectors/featureTestSelector.js.map +1 -0
  711. package/dist/test-selectors/index.js +15 -0
  712. package/dist/test-selectors/index.js.map +1 -0
  713. package/dist/test-selectors/odysseyTestSelectors.js +20 -0
  714. package/dist/test-selectors/odysseyTestSelectors.js.map +1 -0
  715. package/dist/test-selectors/querySelector.js +78 -0
  716. package/dist/test-selectors/querySelector.js.map +1 -0
  717. package/dist/test-selectors/testSelectors.json +1 -0
  718. package/dist/theme/components.js +248 -177
  719. package/dist/theme/components.js.map +1 -1
  720. package/dist/theme/components.types.js.map +1 -1
  721. package/dist/tsconfig.production.tsbuildinfo +1 -1
  722. package/dist/tsconfig.tsbuildinfo +1 -0
  723. package/i18n.config.json +3 -1
  724. package/package.json +13 -5
  725. package/scripts/generateTestSelectorsJson.ts +28 -0
  726. package/src/Accordion.tsx +3 -0
  727. package/src/Autocomplete.tsx +13 -0
  728. package/src/Badge.tsx +4 -3
  729. package/src/Banner.tsx +4 -4
  730. package/src/Button.tsx +30 -16
  731. package/src/Callout.tsx +59 -12
  732. package/src/{Tile.tsx → Card.tsx} +63 -57
  733. package/src/DataTable/DataTable.tsx +164 -95
  734. package/src/DataTable/DataTableRowActions.tsx +1 -1
  735. package/src/DataTable/constants.ts +0 -1
  736. package/src/DataTable/index.tsx +1 -1
  737. package/src/Dialog.tsx +38 -13
  738. package/src/{labs/Drawer.tsx → Drawer.tsx} +10 -9
  739. package/src/{DataTable/DataTableEmptyState.tsx → EmptyState.tsx} +34 -19
  740. package/src/ErrorMessageList.tsx +6 -1
  741. package/src/FieldError.tsx +10 -5
  742. package/src/HtmlProps.ts +1 -0
  743. package/src/MenuItem.tsx +1 -0
  744. package/src/OdysseyCacheProvider.tsx +11 -3
  745. package/src/OdysseyProvider.tsx +1 -1
  746. package/src/OdysseyTranslationProvider.tsx +1 -17
  747. package/src/{DataTable/DataTablePagination.tsx → Pagination/Pagination.tsx} +107 -74
  748. package/src/Pagination/constants.ts +13 -0
  749. package/src/Pagination/index.ts +15 -0
  750. package/src/Pagination/usePagination.ts +49 -0
  751. package/src/Radio.tsx +18 -6
  752. package/src/ScreenReaderText.tsx +15 -3
  753. package/src/Select.tsx +2 -0
  754. package/src/Status.tsx +14 -2
  755. package/src/Surface.tsx +48 -0
  756. package/src/Tabs.tsx +24 -0
  757. package/src/TextField.tsx +50 -0
  758. package/src/Toast.tsx +44 -40
  759. package/src/icons.generated/Add.tsx +1 -1
  760. package/src/icons.generated/AddCircle.tsx +1 -1
  761. package/src/icons.generated/Apps.tsx +1 -1
  762. package/src/icons.generated/ArrowBottom.tsx +2 -2
  763. package/src/icons.generated/ArrowDown.tsx +1 -1
  764. package/src/icons.generated/ArrowLeft.tsx +1 -1
  765. package/src/icons.generated/ArrowLowerLeft.tsx +1 -1
  766. package/src/icons.generated/ArrowLowerRight.tsx +1 -1
  767. package/src/icons.generated/ArrowRight.tsx +1 -1
  768. package/src/icons.generated/ArrowTop.tsx +2 -2
  769. package/src/icons.generated/ArrowUnsorted.tsx +1 -1
  770. package/src/icons.generated/ArrowUp.tsx +1 -1
  771. package/src/icons.generated/ArrowUpperLeft.tsx +1 -1
  772. package/src/icons.generated/ArrowUpperRight.tsx +1 -1
  773. package/src/icons.generated/Bug.tsx +1 -1
  774. package/src/icons.generated/Calendar.tsx +1 -1
  775. package/src/icons.generated/Call.tsx +1 -1
  776. package/src/icons.generated/Chat.tsx +1 -1
  777. package/src/icons.generated/Check.tsx +1 -1
  778. package/src/icons.generated/CheckCircleFilled.tsx +1 -1
  779. package/src/icons.generated/ChevronDown.tsx +1 -1
  780. package/src/icons.generated/ChevronLeft.tsx +1 -1
  781. package/src/icons.generated/ChevronRight.tsx +1 -1
  782. package/src/icons.generated/ChevronUp.tsx +1 -1
  783. package/src/icons.generated/Clock.tsx +1 -1
  784. package/src/icons.generated/Close.tsx +1 -1
  785. package/src/icons.generated/CloseCircleFilled.tsx +1 -1
  786. package/src/icons.generated/CollapseLeft.tsx +1 -1
  787. package/src/icons.generated/CollapseRight.tsx +1 -1
  788. package/src/icons.generated/Copy.tsx +1 -1
  789. package/src/icons.generated/Custom.tsx +49 -0
  790. package/src/icons.generated/DangerDiamond.tsx +1 -1
  791. package/src/icons.generated/DangerDiamondFilled.tsx +1 -1
  792. package/src/icons.generated/Delete.tsx +1 -1
  793. package/src/icons.generated/Deny.tsx +1 -1
  794. package/src/icons.generated/Devices.tsx +1 -1
  795. package/src/icons.generated/Directory.tsx +1 -1
  796. package/src/icons.generated/Documentation.tsx +1 -1
  797. package/src/icons.generated/Download.tsx +1 -1
  798. package/src/icons.generated/DragIndicator.tsx +1 -1
  799. package/src/icons.generated/Duo.tsx +59 -0
  800. package/src/icons.generated/Edit.tsx +1 -1
  801. package/src/icons.generated/Email.tsx +48 -0
  802. package/src/icons.generated/ExpandLeft.tsx +1 -1
  803. package/src/icons.generated/ExpandRight.tsx +1 -1
  804. package/src/icons.generated/ExternalLink.tsx +1 -1
  805. package/src/icons.generated/Fido2.tsx +71 -0
  806. package/src/icons.generated/Filter.tsx +1 -1
  807. package/src/icons.generated/Folder.tsx +1 -1
  808. package/src/icons.generated/Globe.tsx +1 -1
  809. package/src/icons.generated/GoogleAuth.tsx +67 -0
  810. package/src/icons.generated/Grid.tsx +1 -1
  811. package/src/icons.generated/Group.tsx +1 -1
  812. package/src/icons.generated/Hide.tsx +1 -1
  813. package/src/icons.generated/Home.tsx +1 -1
  814. package/src/icons.generated/Idp.tsx +51 -0
  815. package/src/icons.generated/InformationCircle.tsx +1 -1
  816. package/src/icons.generated/InformationCircleFilled.tsx +1 -1
  817. package/src/icons.generated/Link.tsx +1 -1
  818. package/src/icons.generated/List.tsx +1 -1
  819. package/src/icons.generated/Lock.tsx +1 -1
  820. package/src/icons.generated/More.tsx +1 -1
  821. package/src/icons.generated/Notification.tsx +1 -1
  822. package/src/icons.generated/OktaVerify.tsx +43 -0
  823. package/src/icons.generated/OnPremMfa.tsx +49 -0
  824. package/src/icons.generated/OneTimePassword.tsx +63 -0
  825. package/src/icons.generated/Password.tsx +77 -0
  826. package/src/icons.generated/Pause.tsx +1 -1
  827. package/src/icons.generated/QuestionCircle.tsx +1 -1
  828. package/src/icons.generated/QuestionCircleFilled.tsx +1 -1
  829. package/src/icons.generated/Refresh.tsx +1 -1
  830. package/src/icons.generated/Reset.tsx +1 -1
  831. package/src/icons.generated/Resume.tsx +1 -1
  832. package/src/icons.generated/Search.tsx +1 -1
  833. package/src/icons.generated/SecurityQuestion.tsx +48 -0
  834. package/src/icons.generated/Server.tsx +1 -1
  835. package/src/icons.generated/Settings.tsx +1 -1
  836. package/src/icons.generated/Show.tsx +1 -1
  837. package/src/icons.generated/SmartCard.tsx +62 -0
  838. package/src/icons.generated/Sms.tsx +52 -0
  839. package/src/icons.generated/Subtract.tsx +1 -1
  840. package/src/icons.generated/SymantecVip.tsx +49 -0
  841. package/src/icons.generated/Sync.tsx +1 -1
  842. package/src/icons.generated/ThumbsDown.tsx +43 -0
  843. package/src/icons.generated/ThumbsUp.tsx +43 -0
  844. package/src/icons.generated/Unlock.tsx +1 -1
  845. package/src/icons.generated/Upload.tsx +1 -1
  846. package/src/icons.generated/User.tsx +1 -1
  847. package/src/icons.generated/Video.tsx +1 -1
  848. package/src/icons.generated/VoiceCall.tsx +59 -0
  849. package/src/icons.generated/Warning.tsx +1 -1
  850. package/src/icons.generated/WarningFilled.tsx +1 -1
  851. package/src/icons.generated/Yubikey.tsx +41 -0
  852. package/src/icons.generated/index.ts +18 -0
  853. package/src/index.ts +7 -2
  854. package/src/labs/DataComponents/BulkActionsMenu.tsx +97 -0
  855. package/src/labs/DataComponents/DataStack.tsx +99 -0
  856. package/src/labs/DataComponents/DataTable.tsx +111 -0
  857. package/src/labs/DataComponents/DataView.tsx +394 -0
  858. package/src/labs/DataComponents/DetailPanel.tsx +31 -0
  859. package/src/labs/DataComponents/LayoutSwitcher.tsx +73 -0
  860. package/src/labs/DataComponents/RowActions.tsx +122 -0
  861. package/src/labs/DataComponents/StackCard.tsx +256 -0
  862. package/src/labs/DataComponents/StackContent.tsx +254 -0
  863. package/src/labs/DataComponents/TableContent.tsx +390 -0
  864. package/src/labs/DataComponents/TableSettings.tsx +138 -0
  865. package/src/labs/DataComponents/componentTypes.ts +111 -0
  866. package/src/labs/DataComponents/constants.tsx +20 -0
  867. package/src/labs/DataComponents/dataTypes.ts +77 -0
  868. package/src/labs/DataComponents/fetchData.ts +47 -0
  869. package/src/labs/DataComponents/index.tsx +19 -0
  870. package/src/labs/DataComponents/tableConstants.tsx +162 -0
  871. package/src/labs/DataComponents/useFilterConversion.ts +92 -0
  872. package/src/labs/DataFilters.tsx +250 -162
  873. package/src/labs/DateField.tsx +119 -0
  874. package/src/labs/DatePicker.tsx +304 -31
  875. package/src/labs/{DatePicker.types.ts → DatePicker.types.d.ts} +0 -10
  876. package/src/labs/FileUpload.tsx +30 -21
  877. package/src/labs/FileUploadIllustration.tsx +1 -1
  878. package/src/labs/FileUploadPreview.tsx +1 -0
  879. package/src/labs/Layout.tsx +85 -0
  880. package/src/labs/NavAccordion.tsx +133 -0
  881. package/src/labs/PageTemplate.tsx +225 -0
  882. package/src/labs/SideNav.tsx +745 -0
  883. package/src/labs/Switch.tsx +240 -119
  884. package/src/labs/datePickerTheme.tsx +119 -83
  885. package/src/labs/index.ts +7 -1
  886. package/src/labs/useDatePickerTranslations.ts +92 -0
  887. package/src/properties/odyssey-react-mui.properties +76 -10
  888. package/src/properties/translations/odyssey-react-mui_cs.properties +64 -7
  889. package/src/properties/translations/odyssey-react-mui_da.properties +64 -7
  890. package/src/properties/translations/odyssey-react-mui_de.properties +64 -7
  891. package/src/properties/translations/odyssey-react-mui_el.properties +64 -7
  892. package/src/properties/translations/odyssey-react-mui_es.properties +65 -8
  893. package/src/properties/translations/odyssey-react-mui_fi.properties +64 -7
  894. package/src/properties/translations/odyssey-react-mui_fr.properties +65 -8
  895. package/src/properties/translations/odyssey-react-mui_ht.properties +112 -0
  896. package/src/properties/translations/odyssey-react-mui_hu.properties +64 -7
  897. package/src/properties/translations/odyssey-react-mui_id.properties +64 -7
  898. package/src/properties/translations/odyssey-react-mui_it.properties +64 -7
  899. package/src/properties/translations/odyssey-react-mui_ja.properties +64 -7
  900. package/src/properties/translations/odyssey-react-mui_ko.properties +64 -7
  901. package/src/properties/translations/odyssey-react-mui_ms.properties +64 -7
  902. package/src/properties/translations/odyssey-react-mui_nb.properties +64 -7
  903. package/src/properties/translations/odyssey-react-mui_nl_NL.properties +64 -7
  904. package/src/properties/translations/odyssey-react-mui_pl.properties +65 -8
  905. package/src/properties/translations/odyssey-react-mui_pt_BR.properties +64 -7
  906. package/src/properties/translations/odyssey-react-mui_ro.properties +64 -7
  907. package/src/properties/translations/odyssey-react-mui_ru.properties +65 -8
  908. package/src/properties/translations/odyssey-react-mui_sv.properties +64 -7
  909. package/src/properties/translations/odyssey-react-mui_th.properties +64 -7
  910. package/src/properties/translations/odyssey-react-mui_tr.properties +64 -7
  911. package/src/properties/translations/odyssey-react-mui_uk.properties +64 -7
  912. package/src/properties/translations/odyssey-react-mui_vi.properties +64 -7
  913. package/src/properties/translations/odyssey-react-mui_zh_CN.properties +64 -7
  914. package/src/properties/translations/odyssey-react-mui_zh_TW.properties +64 -7
  915. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  916. package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
  917. package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
  918. package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
  919. package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
  920. package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
  921. package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
  922. package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
  923. package/src/properties/ts/odyssey-react-mui_ht.ts +1 -0
  924. package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
  925. package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
  926. package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
  927. package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
  928. package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
  929. package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
  930. package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
  931. package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
  932. package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
  933. package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
  934. package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
  935. package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
  936. package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
  937. package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
  938. package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
  939. package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
  940. package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
  941. package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
  942. package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
  943. package/src/remUtils.ts +27 -0
  944. package/src/test-selectors/featureTestSelector.ts +41 -0
  945. package/src/test-selectors/index.ts +15 -0
  946. package/src/test-selectors/odysseyTestSelectors.ts +22 -0
  947. package/src/test-selectors/querySelector.ts +198 -0
  948. package/src/theme/components.tsx +270 -189
  949. package/src/theme/components.types.ts +5 -3
  950. package/dist/DataTable/DataTableEmptyState.js.map +0 -1
  951. package/dist/DataTable/DataTablePagination.js.map +0 -1
  952. package/dist/Tile.js.map +0 -1
  953. package/dist/labs/DatePicker.types.js.map +0 -1
  954. package/dist/labs/Drawer.js.map +0 -1
  955. package/dist/src/DataTable/DataTableEmptyState.d.ts.map +0 -1
  956. package/dist/src/DataTable/DataTablePagination.d.ts +0 -33
  957. package/dist/src/DataTable/DataTablePagination.d.ts.map +0 -1
  958. package/dist/src/Tile.d.ts.map +0 -1
  959. package/dist/src/labs/DatePicker.types.d.ts.map +0 -1
  960. package/dist/src/labs/Drawer.d.ts.map +0 -1
@@ -44,10 +44,11 @@ const InputContainer = styled(BaseInputWrapper)({
44
44
  borderStyle: "solid"
45
45
  }
46
46
  }, ({
47
+ hasError,
47
48
  odysseyDesignTokens
48
49
  }) => ({
49
50
  padding: `${odysseyDesignTokens.Spacing6} ${odysseyDesignTokens.Spacing3}`,
50
- border: `1px dashed ${odysseyDesignTokens.HueNeutral300}`,
51
+ border: hasError ? `1px solid ${odysseyDesignTokens.PaletteDangerMain}` : `1px dashed ${odysseyDesignTokens.HueNeutral300}`,
51
52
  borderRadius: odysseyDesignTokens.BorderRadiusMain,
52
53
  transition: `border-color ${odysseyDesignTokens.TransitionTimingMain}, box-shadow ${odysseyDesignTokens.TransitionTimingMain}`,
53
54
  "&:hover": {
@@ -74,11 +75,15 @@ const ButtonAndInfoContainer = styled.div({
74
75
  alignItems: "center",
75
76
  justifyContent: "center"
76
77
  });
78
+ const CenterAlignedSupportText = styled.div({
79
+ textAlign: "center"
80
+ });
77
81
  const FileUpload = ({
78
82
  acceptedFileTypes,
79
83
  errorMessage,
80
84
  id,
81
85
  isDisabled = false,
86
+ isFullWidth,
82
87
  isOptional,
83
88
  hint,
84
89
  HintLinkComponent,
@@ -107,7 +112,7 @@ const FileUpload = ({
107
112
  event.target.value = "";
108
113
  }, [type, filesToUpload]);
109
114
  const triggerFileInputClick = useCallback(() => {
110
- inputRef.current?.focus();
115
+ inputRef.current?.click();
111
116
  }, [inputRef]);
112
117
  const removeFileFromFilesToUploadList = useCallback(name => {
113
118
  const deletedFileFilteredOut = filesToUpload.filter(file => file.name !== name);
@@ -119,7 +124,6 @@ const FileUpload = ({
119
124
  id,
120
125
  labelElementId
121
126
  }) => {
122
- const fileNames = filesToUpload.map(file => file.name);
123
127
  const acceptedFileTypesAsString = acceptedFileTypes?.join(",");
124
128
  const Input = () => _jsx("input", {
125
129
  accept: acceptedFileTypesAsString,
@@ -135,8 +139,8 @@ const FileUpload = ({
135
139
  type: "file"
136
140
  });
137
141
  if (variant === "button") {
138
- return _jsxs(_Fragment, {
139
- children: [_jsxs(BaseInputWrapper, {
142
+ return _jsx(_Fragment, {
143
+ children: _jsxs(BaseInputWrapper, {
140
144
  children: [_jsx(Input, {}), _jsx(Button, {
141
145
  isDisabled: isDisabled,
142
146
  label: t("fileupload.button.text"),
@@ -144,20 +148,19 @@ const FileUpload = ({
144
148
  startIcon: _jsx(UploadIcon, {}),
145
149
  variant: "secondary"
146
150
  })]
147
- }), _jsx(FileUploadPreview, {
148
- fileNames: fileNames,
149
- onFileRemove: removeFileFromFilesToUploadList,
150
- isDisabled: isDisabled
151
- })]
151
+ })
152
152
  });
153
153
  }
154
- return _jsxs(_Fragment, {
155
- children: [_jsxs(InputContainer, {
154
+ return _jsx(_Fragment, {
155
+ children: _jsxs(InputContainer, {
156
+ hasError: Boolean(errorMessage),
156
157
  odysseyDesignTokens: odysseyDesignTokens,
157
158
  children: [_jsx(Input, {}), _jsxs(ButtonAndInfoContainer, {
158
- children: [variant === "dragAndDropWithIcon" && _jsx(FileUploadIllustration, {}), _jsx(Support, {
159
- color: "textSecondary",
160
- children: t("fileupload.prompt.text")
159
+ children: [variant === "dragAndDropWithIcon" && _jsx(FileUploadIllustration, {}), _jsx(CenterAlignedSupportText, {
160
+ children: _jsx(Support, {
161
+ color: "textSecondary",
162
+ children: t("fileupload.prompt.text")
163
+ })
161
164
  }), _jsx(Button, {
162
165
  isDisabled: isDisabled,
163
166
  label: t("fileupload.button.text"),
@@ -166,15 +169,11 @@ const FileUpload = ({
166
169
  variant: "secondary"
167
170
  })]
168
171
  })]
169
- }), _jsx(FileUploadPreview, {
170
- fileNames: fileNames,
171
- onFileRemove: removeFileFromFilesToUploadList,
172
- isDisabled: isDisabled
173
- })]
172
+ })
174
173
  });
175
- }, [acceptedFileTypes, filesToUpload, isDisabled, inputRef, odysseyDesignTokens, removeFileFromFilesToUploadList, triggerFileInputClick, t, type, updateFilesToUpload, variant]);
176
- return _jsx(_Fragment, {
177
- children: _jsx(Field, {
174
+ }, [acceptedFileTypes, errorMessage, isDisabled, inputRef, odysseyDesignTokens, triggerFileInputClick, t, type, updateFilesToUpload, variant]);
175
+ return _jsxs(_Fragment, {
176
+ children: [_jsx(Field, {
178
177
  errorMessage: errorMessage,
179
178
  fieldType: "single",
180
179
  hasVisibleLabel: true,
@@ -182,11 +181,15 @@ const FileUpload = ({
182
181
  HintLinkComponent: HintLinkComponent,
183
182
  id: id,
184
183
  isDisabled: isDisabled,
185
- isFullWidth: true,
184
+ isFullWidth: isFullWidth && variant !== "button",
186
185
  isOptional: isOptional,
187
186
  label: label,
188
187
  renderFieldComponent: renderFileInput
189
- })
188
+ }), filesToUpload.length > 0 && _jsx(FileUploadPreview, {
189
+ fileNames: filesToUpload.map(file => file.name),
190
+ onFileRemove: removeFileFromFilesToUploadList,
191
+ isDisabled: isDisabled
192
+ })]
190
193
  });
191
194
  };
192
195
  const MemoizedFileUpload = memo(FileUpload);
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.js","names":["memo","useCallback","useEffect","useRef","useState","styled","useTranslation","Button","UploadIcon","Field","FileUploadPreview","FileUploadIllustration","useOdysseyDesignTokens","Support","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","fileUploadTypes","fileUploadVariants","BaseInputWrapper","div","position","alignSelf","input","width","height","opacity","InputContainer","display","alignItems","justifyContent","borderStyle","odysseyDesignTokens","padding","Spacing6","Spacing3","border","HueNeutral300","borderRadius","BorderRadiusMain","transition","TransitionTimingMain","borderColor","HueNeutral700","FocusOutlineColorPrimary","boxShadow","outline","FocusOutlineWidthMain","FocusOutlineStyle","outlineOffset","FocusOutlineOffsetTight","backgroundColor","HueNeutral50","BorderColorDisabled","color","TypographyColorDisabled","ButtonAndInfoContainer","flexDirection","FileUpload","acceptedFileTypes","errorMessage","id","isDisabled","isOptional","hint","HintLinkComponent","label","onChange","type","variant","t","inputRef","filesToUpload","setFilesToUpload","updateFilesToUpload","event","files","target","length","mergedFiles","value","triggerFileInputClick","current","focus","removeFileFromFilesToUploadList","name","deletedFileFilteredOut","filter","file","renderFileInput","ariaDescribedBy","errorMessageElementId","labelElementId","fileNames","map","acceptedFileTypesAsString","join","Input","accept","disabled","multiple","ref","title","children","onClick","startIcon","onFileRemove","fieldType","hasVisibleLabel","isFullWidth","renderFieldComponent","MemoizedFileUpload","displayName"],"sources":["../../src/labs/FileUpload.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 {\n memo,\n ChangeEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Button } from \"../Button\";\nimport { UploadIcon } from \"../icons.generated\";\nimport { Field, RenderFieldComponentProps } from \"../Field\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport { FileUploadPreview } from \"./FileUploadPreview\";\nimport { FileUploadIllustration } from \"./FileUploadIllustration\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { Support } from \"../Typography\";\n\nexport const fileUploadTypes = [\"single\", \"multiple\"] as const;\nexport const fileUploadVariants = [\n \"button\",\n \"dragAndDrop\",\n \"dragAndDropWithIcon\",\n] as const;\n\nconst BaseInputWrapper = styled.div({\n position: \"relative\",\n alignSelf: \"flex-start\",\n\n input: {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n opacity: 0,\n },\n});\n\nconst InputContainer = styled(BaseInputWrapper)<{\n odysseyDesignTokens: DesignTokens;\n}>(\n {\n display: \"flex\",\n alignSelf: \"unset\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \"&:has(input:focus)\": {\n borderStyle: \"solid\",\n },\n },\n ({ odysseyDesignTokens }) => ({\n padding: `${odysseyDesignTokens.Spacing6} ${odysseyDesignTokens.Spacing3}`,\n border: `1px dashed ${odysseyDesignTokens.HueNeutral300}`,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n transition: `border-color ${odysseyDesignTokens.TransitionTimingMain}, box-shadow ${odysseyDesignTokens.TransitionTimingMain}`,\n\n \"&:hover\": {\n borderColor: odysseyDesignTokens.HueNeutral700,\n },\n\n \"&:has(input:focus)\": {\n borderColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n boxShadow: `0 0 0 1px ${odysseyDesignTokens.FocusOutlineColorPrimary}`,\n outline: `${odysseyDesignTokens.FocusOutlineWidthMain} ${odysseyDesignTokens.FocusOutlineStyle} transparent`,\n outlineOffset: odysseyDesignTokens.FocusOutlineOffsetTight,\n },\n\n \"&:has(input:disabled)\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n border: `1px solid ${odysseyDesignTokens.BorderColorDisabled}`,\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n \"&:hover\": {\n borderColor: odysseyDesignTokens.BorderColorDisabled,\n },\n },\n }),\n);\n\nconst ButtonAndInfoContainer = styled.div({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n\nexport type FileUploadProps = {\n /**\n * an array of file types the user is able to upload. @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers for examples\n */\n acceptedFileTypes?: string[];\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * Function that is called when the list of ifles to upload is changed\n */\n onChange: (files: File[]) => void;\n /**\n * Either `single` or `multiple`. If `multiple`, multiple files can be uploaded\n */\n type?: (typeof fileUploadTypes)[number];\n /**\n * Either `button`, `dragAndDrop` or `dragAndDropWithIcon`. Will determine how component appears visually\n */\n variant: (typeof fileUploadVariants)[number];\n} & Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isDisabled\"\n | \"isOptional\"\n>;\n\nconst FileUpload = ({\n acceptedFileTypes,\n errorMessage,\n id,\n isDisabled = false,\n isOptional,\n hint,\n HintLinkComponent,\n label,\n onChange,\n type,\n variant,\n}: FileUploadProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n const inputRef = useRef<HTMLInputElement>(null);\n const [filesToUpload, setFilesToUpload] = useState<File[]>([]);\n\n useEffect(() => {\n onChange(filesToUpload);\n }, [filesToUpload, onChange]);\n\n const updateFilesToUpload = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target;\n\n if (files && files.length > 0) {\n const mergedFiles =\n type === \"multiple\"\n ? [...filesToUpload, ...files]\n : ([...files] satisfies File[] as File[]);\n\n setFilesToUpload(mergedFiles);\n }\n\n // reset input value to allow re-upload of a file with the same name\n event.target.value = \"\";\n },\n [type, filesToUpload],\n );\n\n const triggerFileInputClick = useCallback(() => {\n inputRef.current?.focus();\n }, [inputRef]);\n\n const removeFileFromFilesToUploadList = useCallback<(name: string) => void>(\n (name) => {\n const deletedFileFilteredOut = filesToUpload.filter(\n (file) => file.name !== name,\n );\n setFilesToUpload(deletedFileFilteredOut);\n },\n [filesToUpload],\n );\n\n const renderFileInput = useCallback(\n ({\n ariaDescribedBy,\n errorMessageElementId,\n id,\n labelElementId,\n }: RenderFieldComponentProps) => {\n const fileNames = filesToUpload.map((file) => file.name);\n const acceptedFileTypesAsString = acceptedFileTypes?.join(\",\");\n\n const Input = () => (\n <input\n accept={acceptedFileTypesAsString}\n aria-describedby={ariaDescribedBy}\n aria-errormessage={errorMessageElementId}\n aria-labelledby={labelElementId}\n disabled={isDisabled}\n id={id}\n multiple={type === \"multiple\"}\n onChange={updateFilesToUpload}\n ref={inputRef}\n title=\"\"\n type=\"file\"\n />\n );\n\n if (variant === \"button\") {\n return (\n <>\n <BaseInputWrapper>\n <Input />\n <Button\n isDisabled={isDisabled}\n label={t(\"fileupload.button.text\")}\n onClick={triggerFileInputClick}\n startIcon={<UploadIcon />}\n variant=\"secondary\"\n />\n </BaseInputWrapper>\n <FileUploadPreview\n fileNames={fileNames}\n onFileRemove={removeFileFromFilesToUploadList}\n isDisabled={isDisabled}\n />\n </>\n );\n }\n\n return (\n <>\n <InputContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Input />\n <ButtonAndInfoContainer>\n {variant === \"dragAndDropWithIcon\" && <FileUploadIllustration />}\n <Support color=\"textSecondary\">\n {t(\"fileupload.prompt.text\")}\n </Support>\n <Button\n isDisabled={isDisabled}\n label={t(\"fileupload.button.text\")}\n onClick={triggerFileInputClick}\n startIcon={<UploadIcon />}\n variant=\"secondary\"\n />\n </ButtonAndInfoContainer>\n </InputContainer>\n <FileUploadPreview\n fileNames={fileNames}\n onFileRemove={removeFileFromFilesToUploadList}\n isDisabled={isDisabled}\n />\n </>\n );\n },\n [\n acceptedFileTypes,\n filesToUpload,\n isDisabled,\n inputRef,\n odysseyDesignTokens,\n removeFileFromFilesToUploadList,\n triggerFileInputClick,\n t,\n type,\n updateFilesToUpload,\n variant,\n ],\n );\n\n return (\n <>\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={id}\n isDisabled={isDisabled}\n isFullWidth\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFileInput}\n />\n </>\n );\n};\n\nconst MemoizedFileUpload = memo(FileUpload);\nMemoizedFileUpload.displayName = \"FileUpload\";\n\nexport { MemoizedFileUpload as FileUpload };\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.js","names":["memo","useCallback","useEffect","useRef","useState","styled","useTranslation","Button","UploadIcon","Field","FileUploadPreview","FileUploadIllustration","useOdysseyDesignTokens","Support","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","fileUploadTypes","fileUploadVariants","BaseInputWrapper","div","position","alignSelf","input","width","height","opacity","InputContainer","display","alignItems","justifyContent","borderStyle","hasError","odysseyDesignTokens","padding","Spacing6","Spacing3","border","PaletteDangerMain","HueNeutral300","borderRadius","BorderRadiusMain","transition","TransitionTimingMain","borderColor","HueNeutral700","FocusOutlineColorPrimary","boxShadow","outline","FocusOutlineWidthMain","FocusOutlineStyle","outlineOffset","FocusOutlineOffsetTight","backgroundColor","HueNeutral50","BorderColorDisabled","color","TypographyColorDisabled","ButtonAndInfoContainer","flexDirection","CenterAlignedSupportText","textAlign","FileUpload","acceptedFileTypes","errorMessage","id","isDisabled","isFullWidth","isOptional","hint","HintLinkComponent","label","onChange","type","variant","t","inputRef","filesToUpload","setFilesToUpload","updateFilesToUpload","event","files","target","length","mergedFiles","value","triggerFileInputClick","current","click","removeFileFromFilesToUploadList","name","deletedFileFilteredOut","filter","file","renderFileInput","ariaDescribedBy","errorMessageElementId","labelElementId","acceptedFileTypesAsString","join","Input","accept","disabled","multiple","ref","title","children","onClick","startIcon","Boolean","fieldType","hasVisibleLabel","renderFieldComponent","fileNames","map","onFileRemove","MemoizedFileUpload","displayName"],"sources":["../../src/labs/FileUpload.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 {\n memo,\n ChangeEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Button } from \"../Button\";\nimport { UploadIcon } from \"../icons.generated\";\nimport { Field, RenderFieldComponentProps } from \"../Field\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport { FileUploadPreview } from \"./FileUploadPreview\";\nimport { FileUploadIllustration } from \"./FileUploadIllustration\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { Support } from \"../Typography\";\n\nexport const fileUploadTypes = [\"single\", \"multiple\"] as const;\nexport const fileUploadVariants = [\n \"button\",\n \"dragAndDrop\",\n \"dragAndDropWithIcon\",\n] as const;\n\nconst BaseInputWrapper = styled.div({\n position: \"relative\",\n alignSelf: \"flex-start\",\n\n input: {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n opacity: 0,\n },\n});\n\nconst InputContainer = styled(BaseInputWrapper)<{\n odysseyDesignTokens: DesignTokens;\n hasError: boolean;\n}>(\n {\n display: \"flex\",\n alignSelf: \"unset\",\n alignItems: \"center\",\n justifyContent: \"center\",\n\n \"&:has(input:focus)\": {\n borderStyle: \"solid\",\n },\n },\n ({ hasError, odysseyDesignTokens }) => ({\n padding: `${odysseyDesignTokens.Spacing6} ${odysseyDesignTokens.Spacing3}`,\n border: hasError\n ? `1px solid ${odysseyDesignTokens.PaletteDangerMain}`\n : `1px dashed ${odysseyDesignTokens.HueNeutral300}`,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n transition: `border-color ${odysseyDesignTokens.TransitionTimingMain}, box-shadow ${odysseyDesignTokens.TransitionTimingMain}`,\n\n \"&:hover\": {\n borderColor: odysseyDesignTokens.HueNeutral700,\n },\n\n \"&:has(input:focus)\": {\n borderColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n boxShadow: `0 0 0 1px ${odysseyDesignTokens.FocusOutlineColorPrimary}`,\n outline: `${odysseyDesignTokens.FocusOutlineWidthMain} ${odysseyDesignTokens.FocusOutlineStyle} transparent`,\n outlineOffset: odysseyDesignTokens.FocusOutlineOffsetTight,\n },\n\n \"&:has(input:disabled)\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n border: `1px solid ${odysseyDesignTokens.BorderColorDisabled}`,\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n \"&:hover\": {\n borderColor: odysseyDesignTokens.BorderColorDisabled,\n },\n },\n }),\n);\n\nconst ButtonAndInfoContainer = styled.div({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n\nconst CenterAlignedSupportText = styled.div({\n textAlign: \"center\",\n});\n\nexport type FileUploadProps = {\n /**\n * an array of file types the user is able to upload. @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers for examples\n */\n acceptedFileTypes?: string[];\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * Function that is called when the list of ifles to upload is changed\n */\n onChange: (files: File[]) => void;\n /**\n * Either `single` or `multiple`. If `multiple`, multiple files can be uploaded\n */\n type?: (typeof fileUploadTypes)[number];\n /**\n * Either `button`, `dragAndDrop` or `dragAndDropWithIcon`. Will determine how component appears visually\n */\n variant: (typeof fileUploadVariants)[number];\n} & Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isDisabled\"\n | \"isFullWidth\"\n | \"isOptional\"\n>;\n\nconst FileUpload = ({\n acceptedFileTypes,\n errorMessage,\n id,\n isDisabled = false,\n isFullWidth,\n isOptional,\n hint,\n HintLinkComponent,\n label,\n onChange,\n type,\n variant,\n}: FileUploadProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n const inputRef = useRef<HTMLInputElement>(null);\n const [filesToUpload, setFilesToUpload] = useState<File[]>([]);\n\n useEffect(() => {\n onChange(filesToUpload);\n }, [filesToUpload, onChange]);\n\n const updateFilesToUpload = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target;\n\n if (files && files.length > 0) {\n const mergedFiles =\n type === \"multiple\"\n ? [...filesToUpload, ...files]\n : ([...files] satisfies File[] as File[]);\n\n setFilesToUpload(mergedFiles);\n }\n\n // reset input value to allow re-upload of a file with the same name\n event.target.value = \"\";\n },\n [type, filesToUpload],\n );\n\n const triggerFileInputClick = useCallback(() => {\n inputRef.current?.click();\n }, [inputRef]);\n\n const removeFileFromFilesToUploadList = useCallback<(name: string) => void>(\n (name) => {\n const deletedFileFilteredOut = filesToUpload.filter(\n (file) => file.name !== name,\n );\n setFilesToUpload(deletedFileFilteredOut);\n },\n [filesToUpload],\n );\n\n const renderFileInput = useCallback(\n ({\n ariaDescribedBy,\n errorMessageElementId,\n id,\n labelElementId,\n }: RenderFieldComponentProps) => {\n const acceptedFileTypesAsString = acceptedFileTypes?.join(\",\");\n\n const Input = () => (\n <input\n accept={acceptedFileTypesAsString}\n aria-describedby={ariaDescribedBy}\n aria-errormessage={errorMessageElementId}\n aria-labelledby={labelElementId}\n disabled={isDisabled}\n id={id}\n multiple={type === \"multiple\"}\n onChange={updateFilesToUpload}\n ref={inputRef}\n title=\"\"\n type=\"file\"\n />\n );\n\n if (variant === \"button\") {\n return (\n <>\n <BaseInputWrapper>\n <Input />\n <Button\n isDisabled={isDisabled}\n label={t(\"fileupload.button.text\")}\n onClick={triggerFileInputClick}\n startIcon={<UploadIcon />}\n variant=\"secondary\"\n />\n </BaseInputWrapper>\n </>\n );\n }\n\n return (\n <>\n <InputContainer\n hasError={Boolean(errorMessage)}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Input />\n <ButtonAndInfoContainer>\n {variant === \"dragAndDropWithIcon\" && <FileUploadIllustration />}\n <CenterAlignedSupportText>\n <Support color=\"textSecondary\">\n {t(\"fileupload.prompt.text\")}\n </Support>\n </CenterAlignedSupportText>\n <Button\n isDisabled={isDisabled}\n label={t(\"fileupload.button.text\")}\n onClick={triggerFileInputClick}\n startIcon={<UploadIcon />}\n variant=\"secondary\"\n />\n </ButtonAndInfoContainer>\n </InputContainer>\n </>\n );\n },\n [\n acceptedFileTypes,\n errorMessage,\n isDisabled,\n inputRef,\n odysseyDesignTokens,\n triggerFileInputClick,\n t,\n type,\n updateFilesToUpload,\n variant,\n ],\n );\n\n return (\n <>\n <Field\n errorMessage={errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={id}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth && variant !== \"button\"}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFileInput}\n />\n {filesToUpload.length > 0 && (\n <FileUploadPreview\n fileNames={filesToUpload.map((file) => file.name)}\n onFileRemove={removeFileFromFilesToUploadList}\n isDisabled={isDisabled}\n />\n )}\n </>\n );\n};\n\nconst MemoizedFileUpload = memo(FileUpload);\nMemoizedFileUpload.displayName = \"FileUpload\";\n\nexport { MemoizedFileUpload as FileUpload };\n"],"mappings":"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"}
@@ -18,7 +18,7 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const UploadIllustrationContainer = styled.div(({
19
19
  odysseyDesignTokens
20
20
  }) => ({
21
- marginBlockEnd: odysseyDesignTokens.Spacing2,
21
+ marginBlockEnd: odysseyDesignTokens.Spacing3,
22
22
  padding: odysseyDesignTokens.Spacing3,
23
23
  backgroundColor: odysseyDesignTokens.HueNeutral50,
24
24
  borderRadius: "50%",
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadIllustration.js","names":["memo","styled","useOdysseyDesignTokens","jsx","_jsx","jsxs","_jsxs","UploadIllustrationContainer","div","odysseyDesignTokens","marginBlockEnd","Spacing2","padding","Spacing3","backgroundColor","HueNeutral50","borderRadius","svg","display","width","Spacing8","height","FileUploadIllustration","children","viewBox","fill","xmlns","d","HueNeutral200","MemoizedFileUploadIllustration","displayName"],"sources":["../../src/labs/FileUploadIllustration.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 { memo } from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\n\nconst UploadIllustrationContainer = styled.div<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n marginBlockEnd: odysseyDesignTokens.Spacing2,\n padding: odysseyDesignTokens.Spacing3,\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n borderRadius: \"50%\",\n\n svg: {\n display: \"flex\",\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n },\n}));\n\nconst FileUploadIllustration = () => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <UploadIllustrationContainer\n aria-hidden=\"true\"\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 44 45\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M32.0763 11.001C29.3564 3.7855 21.6595 -0.565827 13.7765 0.726748C5.35441 2.10773 -0.676662 9.50714 0.0603005 17.8612C0.441865 22.1865 2.56458 25.9787 5.71703 28.614L8.28246 25.545C5.90122 23.5544 4.32811 20.7209 4.04483 17.5097C3.50262 11.3633 7.94433 5.73648 14.4238 4.67404C20.9164 3.60944 27.0806 7.52016 28.6895 13.5191C28.9239 14.3932 29.7162 15.001 30.6212 15.001H32.9114C36.8985 15.001 39.9997 18.0938 39.9997 21.7505C39.9997 24.3423 38.4576 26.6352 36.1259 27.7678L37.8736 31.3658C41.4737 29.6171 43.9997 25.9917 43.9997 21.7505C43.9997 15.7428 38.963 11.001 32.9114 11.001H32.0763Z\"\n fill={odysseyDesignTokens.HueNeutral200}\n />\n <path\n d=\"M23.9994 29.3277V44.5H19.9994V29.3289L14.4142 34.9141L11.5858 32.0857L19.7373 23.9342C20.9869 22.6845 23.0131 22.6845 24.2627 23.9342L32.4142 32.0857L29.5858 34.9141L23.9994 29.3277Z\"\n fill={odysseyDesignTokens.HueNeutral200}\n />\n </svg>\n </UploadIllustrationContainer>\n );\n};\n\nconst MemoizedFileUploadIllustration = memo(FileUploadIllustration);\nMemoizedFileUploadIllustration.displayName = \"FileUploadIllustration\";\n\nexport { MemoizedFileUploadIllustration as FileUploadIllustration };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,OAAO;AAC5B,OAAOC,MAAM,MAAM,iBAAiB;AAAC,SAGnCC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIxB,MAAMC,2BAA2B,GAAGN,MAAM,CAACO,GAAG,CAE3C,CAAC;EAAEC;AAAoB,CAAC,MAAM;EAC/BC,cAAc,EAAED,mBAAmB,CAACE,QAAQ;EAC5CC,OAAO,EAAEH,mBAAmB,CAACI,QAAQ;EACrCC,eAAe,EAAEL,mBAAmB,CAACM,YAAY;EACjDC,YAAY,EAAE,KAAK;EAEnBC,GAAG,EAAE;IACHC,OAAO,EAAE,MAAM;IACfC,KAAK,EAAEV,mBAAmB,CAACW,QAAQ;IACnCC,MAAM,EAAEZ,mBAAmB,CAACW;EAC9B;AACF,CAAC,CAAC,CAAC;AAEH,MAAME,sBAAsB,GAAGA,CAAA,KAAM;EACnC,MAAMb,mBAAmB,GAAGP,sBAAsB,CAAC,CAAC;EAEpD,OACEE,IAAA,CAACG,2BAA2B;IAC1B,eAAY,MAAM;IAClBE,mBAAmB,EAAEA,mBAAoB;IAAAc,QAAA,EAEzCjB,KAAA;MACE,eAAY,MAAM;MAClBkB,OAAO,EAAC,WAAW;MACnBC,IAAI,EAAC,MAAM;MACXC,KAAK,EAAC,4BAA4B;MAAAH,QAAA,GAElCnB,IAAA;QACEuB,CAAC,EAAC,ilBAAilB;QACnlBF,IAAI,EAAEhB,mBAAmB,CAACmB;MAAc,CACzC,CAAC,EACFxB,IAAA;QACEuB,CAAC,EAAC,wLAAwL;QAC1LF,IAAI,EAAEhB,mBAAmB,CAACmB;MAAc,CACzC,CAAC;IAAA,CACC;EAAC,CACqB,CAAC;AAElC,CAAC;AAED,MAAMC,8BAA8B,GAAG7B,IAAI,CAACsB,sBAAsB,CAAC;AACnEO,8BAA8B,CAACC,WAAW,GAAG,wBAAwB;AAErE,SAASD,8BAA8B,IAAIP,sBAAsB"}
1
+ {"version":3,"file":"FileUploadIllustration.js","names":["memo","styled","useOdysseyDesignTokens","jsx","_jsx","jsxs","_jsxs","UploadIllustrationContainer","div","odysseyDesignTokens","marginBlockEnd","Spacing3","padding","backgroundColor","HueNeutral50","borderRadius","svg","display","width","Spacing8","height","FileUploadIllustration","children","viewBox","fill","xmlns","d","HueNeutral200","MemoizedFileUploadIllustration","displayName"],"sources":["../../src/labs/FileUploadIllustration.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 { memo } from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\n\nconst UploadIllustrationContainer = styled.div<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n marginBlockEnd: odysseyDesignTokens.Spacing3,\n padding: odysseyDesignTokens.Spacing3,\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n borderRadius: \"50%\",\n\n svg: {\n display: \"flex\",\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n },\n}));\n\nconst FileUploadIllustration = () => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <UploadIllustrationContainer\n aria-hidden=\"true\"\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 44 45\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M32.0763 11.001C29.3564 3.7855 21.6595 -0.565827 13.7765 0.726748C5.35441 2.10773 -0.676662 9.50714 0.0603005 17.8612C0.441865 22.1865 2.56458 25.9787 5.71703 28.614L8.28246 25.545C5.90122 23.5544 4.32811 20.7209 4.04483 17.5097C3.50262 11.3633 7.94433 5.73648 14.4238 4.67404C20.9164 3.60944 27.0806 7.52016 28.6895 13.5191C28.9239 14.3932 29.7162 15.001 30.6212 15.001H32.9114C36.8985 15.001 39.9997 18.0938 39.9997 21.7505C39.9997 24.3423 38.4576 26.6352 36.1259 27.7678L37.8736 31.3658C41.4737 29.6171 43.9997 25.9917 43.9997 21.7505C43.9997 15.7428 38.963 11.001 32.9114 11.001H32.0763Z\"\n fill={odysseyDesignTokens.HueNeutral200}\n />\n <path\n d=\"M23.9994 29.3277V44.5H19.9994V29.3289L14.4142 34.9141L11.5858 32.0857L19.7373 23.9342C20.9869 22.6845 23.0131 22.6845 24.2627 23.9342L32.4142 32.0857L29.5858 34.9141L23.9994 29.3277Z\"\n fill={odysseyDesignTokens.HueNeutral200}\n />\n </svg>\n </UploadIllustrationContainer>\n );\n};\n\nconst MemoizedFileUploadIllustration = memo(FileUploadIllustration);\nMemoizedFileUploadIllustration.displayName = \"FileUploadIllustration\";\n\nexport { MemoizedFileUploadIllustration as FileUploadIllustration };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,OAAO;AAC5B,OAAOC,MAAM,MAAM,iBAAiB;AAAC,SAGnCC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIxB,MAAMC,2BAA2B,GAAGN,MAAM,CAACO,GAAG,CAE3C,CAAC;EAAEC;AAAoB,CAAC,MAAM;EAC/BC,cAAc,EAAED,mBAAmB,CAACE,QAAQ;EAC5CC,OAAO,EAAEH,mBAAmB,CAACE,QAAQ;EACrCE,eAAe,EAAEJ,mBAAmB,CAACK,YAAY;EACjDC,YAAY,EAAE,KAAK;EAEnBC,GAAG,EAAE;IACHC,OAAO,EAAE,MAAM;IACfC,KAAK,EAAET,mBAAmB,CAACU,QAAQ;IACnCC,MAAM,EAAEX,mBAAmB,CAACU;EAC9B;AACF,CAAC,CAAC,CAAC;AAEH,MAAME,sBAAsB,GAAGA,CAAA,KAAM;EACnC,MAAMZ,mBAAmB,GAAGP,sBAAsB,CAAC,CAAC;EAEpD,OACEE,IAAA,CAACG,2BAA2B;IAC1B,eAAY,MAAM;IAClBE,mBAAmB,EAAEA,mBAAoB;IAAAa,QAAA,EAEzChB,KAAA;MACE,eAAY,MAAM;MAClBiB,OAAO,EAAC,WAAW;MACnBC,IAAI,EAAC,MAAM;MACXC,KAAK,EAAC,4BAA4B;MAAAH,QAAA,GAElClB,IAAA;QACEsB,CAAC,EAAC,ilBAAilB;QACnlBF,IAAI,EAAEf,mBAAmB,CAACkB;MAAc,CACzC,CAAC,EACFvB,IAAA;QACEsB,CAAC,EAAC,wLAAwL;QAC1LF,IAAI,EAAEf,mBAAmB,CAACkB;MAAc,CACzC,CAAC;IAAA,CACC;EAAC,CACqB,CAAC;AAElC,CAAC;AAED,MAAMC,8BAA8B,GAAG5B,IAAI,CAACqB,sBAAsB,CAAC;AACnEO,8BAA8B,CAACC,WAAW,GAAG,wBAAwB;AAErE,SAASD,8BAA8B,IAAIP,sBAAsB"}
@@ -95,6 +95,7 @@ const FileUploadPreview = ({
95
95
  }) => {
96
96
  const odysseyDesignTokens = useOdysseyDesignTokens();
97
97
  return _jsx(PreviewContainer, {
98
+ "data-file-preview-container": "true",
98
99
  isDisabled: isDisabled,
99
100
  odysseyDesignTokens: odysseyDesignTokens,
100
101
  children: fileNames?.map((name, index) => _jsx(UploadedFile, {
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadPreview.js","names":["memo","useCallback","styled","useTranslation","useOdysseyDesignTokens","DeleteIcon","MuiPropsContext","Tooltip","jsx","_jsx","jsxs","_jsxs","PreviewContainer","div","isDisabled","odysseyDesignTokens","color","TypographyColorDisabled","marginBlockStart","Spacing2","pointerEvents","UploadedFileContainer","display","justifyContent","alignItems","button","transform","padding","Spacing1","borderRadius","BorderRadiusMain","transition","TransitionTimingMain","backgroundColor","HueNeutral100","borderColor","FocusOutlineColorPrimary","boxShadow","outline","FocusOutlineWidthMain","FocusOutlineStyle","UploadedFile","name","onFileRemove","t","deleteHandler","renderDeleteButton","muiProps","_IconButton","onClick","size","children","tabIndex","ariaType","placement","text","Consumer","FileUploadPreview","fileNames","map","index","MemoizedFileUploadPreview","displayName"],"sources":["../../src/labs/FileUploadPreview.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 { memo, useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FileUploadProps } from \"./FileUpload\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { DeleteIcon } from \"../icons.generated\";\nimport { MuiPropsContext, MuiPropsContextType } from \"../MuiPropsContext\";\nimport { Tooltip } from \"../Tooltip\";\n\nconst PreviewContainer = styled.div<{\n isDisabled: FileUploadProps[\"isDisabled\"];\n odysseyDesignTokens: DesignTokens;\n}>(({ isDisabled, odysseyDesignTokens }) => ({\n color: isDisabled ? odysseyDesignTokens.TypographyColorDisabled : \"inherit\",\n marginBlockStart: odysseyDesignTokens.Spacing2,\n pointerEvents: isDisabled ? \"none\" : \"auto\",\n}));\n\nconst UploadedFileContainer = styled.div<{ odysseyDesignTokens: DesignTokens }>(\n {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n\n button: {\n transform: \"scale(0)\",\n },\n\n \"&:hover, &:focus-within, &:focus\": {\n button: {\n transform: \"scale(1)\",\n },\n },\n },\n ({ odysseyDesignTokens }) => ({\n padding: `${odysseyDesignTokens.Spacing1} ${odysseyDesignTokens.Spacing2}`,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n transition: `background-color ${odysseyDesignTokens.TransitionTimingMain}`,\n\n \"&:hover, &:focus-within\": {\n backgroundColor: odysseyDesignTokens.HueNeutral100,\n },\n\n \"&:focus\": {\n borderColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n boxShadow: `0 0 0 2px ${odysseyDesignTokens.FocusOutlineColorPrimary}`,\n outline: `${odysseyDesignTokens.FocusOutlineWidthMain} ${odysseyDesignTokens.FocusOutlineStyle} transparent`,\n },\n }),\n);\n\ntype UploadedFileProps = {\n name: string;\n onFileRemove?: (name: string) => void;\n};\n\nconst UploadedFile = ({ name, onFileRemove }: UploadedFileProps) => {\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const deleteHandler = useCallback(() => {\n onFileRemove?.(name);\n }, [onFileRemove, name]);\n\n const renderDeleteButton = useCallback(\n (muiProps: MuiPropsContextType) => {\n return (\n <IconButton\n {...muiProps}\n aria-label={t(\"fileupload.removefile.text\")}\n onClick={deleteHandler}\n size=\"small\"\n >\n <DeleteIcon />\n </IconButton>\n );\n },\n [deleteHandler, t],\n );\n\n return (\n <UploadedFileContainer\n // tabindex added to make this element focusable\n tabIndex={0}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {name}\n <Tooltip\n ariaType=\"description\"\n placement=\"top\"\n text={t(\"fileupload.removefile.text\")}\n >\n <MuiPropsContext.Consumer>\n {renderDeleteButton}\n </MuiPropsContext.Consumer>\n </Tooltip>\n </UploadedFileContainer>\n );\n};\n\ntype FileUploadPreviewProps = {\n fileNames: string[];\n isDisabled: FileUploadProps[\"isDisabled\"];\n onFileRemove?: (name: string) => void;\n};\n\nconst FileUploadPreview = ({\n fileNames,\n isDisabled,\n onFileRemove,\n}: FileUploadPreviewProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <PreviewContainer\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {fileNames?.map((name, index) => (\n <UploadedFile\n key={`${index}-${name}`}\n onFileRemove={onFileRemove}\n name={name}\n />\n ))}\n </PreviewContainer>\n );\n};\n\nconst MemoizedFileUploadPreview = memo(FileUploadPreview);\nMemoizedFileUploadPreview.displayName = \"FileUploadPreview\";\n\nexport { MemoizedFileUploadPreview as FileUploadPreview };\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadPreview.js","names":["memo","useCallback","styled","useTranslation","useOdysseyDesignTokens","DeleteIcon","MuiPropsContext","Tooltip","jsx","_jsx","jsxs","_jsxs","PreviewContainer","div","isDisabled","odysseyDesignTokens","color","TypographyColorDisabled","marginBlockStart","Spacing2","pointerEvents","UploadedFileContainer","display","justifyContent","alignItems","button","transform","padding","Spacing1","borderRadius","BorderRadiusMain","transition","TransitionTimingMain","backgroundColor","HueNeutral100","borderColor","FocusOutlineColorPrimary","boxShadow","outline","FocusOutlineWidthMain","FocusOutlineStyle","UploadedFile","name","onFileRemove","t","deleteHandler","renderDeleteButton","muiProps","_IconButton","onClick","size","children","tabIndex","ariaType","placement","text","Consumer","FileUploadPreview","fileNames","map","index","MemoizedFileUploadPreview","displayName"],"sources":["../../src/labs/FileUploadPreview.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 { memo, useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { IconButton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FileUploadProps } from \"./FileUpload\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { DeleteIcon } from \"../icons.generated\";\nimport { MuiPropsContext, MuiPropsContextType } from \"../MuiPropsContext\";\nimport { Tooltip } from \"../Tooltip\";\n\nconst PreviewContainer = styled.div<{\n isDisabled: FileUploadProps[\"isDisabled\"];\n odysseyDesignTokens: DesignTokens;\n}>(({ isDisabled, odysseyDesignTokens }) => ({\n color: isDisabled ? odysseyDesignTokens.TypographyColorDisabled : \"inherit\",\n marginBlockStart: odysseyDesignTokens.Spacing2,\n pointerEvents: isDisabled ? \"none\" : \"auto\",\n}));\n\nconst UploadedFileContainer = styled.div<{ odysseyDesignTokens: DesignTokens }>(\n {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n\n button: {\n transform: \"scale(0)\",\n },\n\n \"&:hover, &:focus-within, &:focus\": {\n button: {\n transform: \"scale(1)\",\n },\n },\n },\n ({ odysseyDesignTokens }) => ({\n padding: `${odysseyDesignTokens.Spacing1} ${odysseyDesignTokens.Spacing2}`,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n transition: `background-color ${odysseyDesignTokens.TransitionTimingMain}`,\n\n \"&:hover, &:focus-within\": {\n backgroundColor: odysseyDesignTokens.HueNeutral100,\n },\n\n \"&:focus\": {\n borderColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n boxShadow: `0 0 0 2px ${odysseyDesignTokens.FocusOutlineColorPrimary}`,\n outline: `${odysseyDesignTokens.FocusOutlineWidthMain} ${odysseyDesignTokens.FocusOutlineStyle} transparent`,\n },\n }),\n);\n\ntype UploadedFileProps = {\n name: string;\n onFileRemove?: (name: string) => void;\n};\n\nconst UploadedFile = ({ name, onFileRemove }: UploadedFileProps) => {\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const deleteHandler = useCallback(() => {\n onFileRemove?.(name);\n }, [onFileRemove, name]);\n\n const renderDeleteButton = useCallback(\n (muiProps: MuiPropsContextType) => {\n return (\n <IconButton\n {...muiProps}\n aria-label={t(\"fileupload.removefile.text\")}\n onClick={deleteHandler}\n size=\"small\"\n >\n <DeleteIcon />\n </IconButton>\n );\n },\n [deleteHandler, t],\n );\n\n return (\n <UploadedFileContainer\n // tabindex added to make this element focusable\n tabIndex={0}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {name}\n <Tooltip\n ariaType=\"description\"\n placement=\"top\"\n text={t(\"fileupload.removefile.text\")}\n >\n <MuiPropsContext.Consumer>\n {renderDeleteButton}\n </MuiPropsContext.Consumer>\n </Tooltip>\n </UploadedFileContainer>\n );\n};\n\ntype FileUploadPreviewProps = {\n fileNames: string[];\n isDisabled: FileUploadProps[\"isDisabled\"];\n onFileRemove?: (name: string) => void;\n};\n\nconst FileUploadPreview = ({\n fileNames,\n isDisabled,\n onFileRemove,\n}: FileUploadPreviewProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <PreviewContainer\n data-file-preview-container=\"true\"\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {fileNames?.map((name, index) => (\n <UploadedFile\n key={`${index}-${name}`}\n onFileRemove={onFileRemove}\n name={name}\n />\n ))}\n </PreviewContainer>\n );\n};\n\nconst MemoizedFileUploadPreview = memo(FileUploadPreview);\nMemoizedFileUploadPreview.displayName = \"FileUploadPreview\";\n\nexport { MemoizedFileUploadPreview as FileUploadPreview };\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 { Children, memo } from "react";
14
+ import styled from "@emotion/styled";
15
+ import { Box } from "../Box.js";
16
+ import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ const LayoutContent = styled("div", {
19
+ shouldForwardProp: prop => !["odysseyDesignTokens", "regions"].includes(prop)
20
+ })(({
21
+ odysseyDesignTokens,
22
+ regions
23
+ }) => ({
24
+ display: "grid",
25
+ gridTemplateColumns: regions,
26
+ gridColumnGap: odysseyDesignTokens.Spacing4,
27
+ columnGap: odysseyDesignTokens.Spacing4,
28
+ "& + &": {
29
+ marginBlockStart: odysseyDesignTokens.Spacing4
30
+ }
31
+ }));
32
+ const Layout = ({
33
+ regions,
34
+ children
35
+ }) => {
36
+ const odysseyDesignTokens = useOdysseyDesignTokens();
37
+ const mappedRegions = regions.map(region => `minmax(0, ${region}fr)`).join(" ");
38
+ return _jsx(Box, {
39
+ children: _jsx(LayoutContent, {
40
+ odysseyDesignTokens: odysseyDesignTokens,
41
+ regions: mappedRegions,
42
+ children: Children.toArray(children).map(child => child)
43
+ })
44
+ });
45
+ };
46
+ const MemoizedLayout = memo(Layout);
47
+ MemoizedLayout.displayName = "Layout";
48
+ export { MemoizedLayout as Layout };
49
+ //# sourceMappingURL=Layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.js","names":["Children","memo","styled","Box","useOdysseyDesignTokens","jsx","_jsx","LayoutContent","shouldForwardProp","prop","includes","odysseyDesignTokens","regions","display","gridTemplateColumns","gridColumnGap","Spacing4","columnGap","marginBlockStart","Layout","children","mappedRegions","map","region","join","toArray","child","MemoizedLayout","displayName"],"sources":["../../src/labs/Layout.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 { Children, ReactNode, memo } from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport { Box } from \"../Box\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext\";\n\ntype SupportedRegionRatios =\n | [1]\n | [1, 1]\n | [1, 2]\n | [2, 1]\n | [1, 3]\n | [3, 1]\n | [1, 1, 1]\n | [1, 1, 1, 1];\n\nexport type LayoutProps = {\n /**\n * The supported region ratios for the Grid. Each number is a fractional unit that is mapped to the 'fr' CSS unit.\n * e.g. [2, 1] defines a 2/3, 1/3 layout and [1, 1, 1] defines a 1/3, 1/3, 1/3 layout\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Basic_concepts_of_grid_layout#the_fr_unit\n */\n regions: SupportedRegionRatios;\n /**\n * The content of the Grid. May be a `string` or any other `ReactNode` or array of `ReactNode`s.\n */\n children?: ReactNode;\n};\n\ninterface LayoutContentProps {\n odysseyDesignTokens: DesignTokens;\n regions: string;\n}\n\nconst LayoutContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n ![\"odysseyDesignTokens\", \"regions\"].includes(prop),\n})<LayoutContentProps>(({ odysseyDesignTokens, regions }) => ({\n display: \"grid\",\n gridTemplateColumns: regions,\n gridColumnGap: odysseyDesignTokens.Spacing4,\n columnGap: odysseyDesignTokens.Spacing4,\n\n \"& + &\": {\n marginBlockStart: odysseyDesignTokens.Spacing4,\n },\n}));\n\nconst Layout = ({ regions, children }: LayoutProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const mappedRegions = regions\n .map((region) => `minmax(0, ${region}fr)`)\n .join(\" \");\n\n return (\n <Box>\n <LayoutContent\n odysseyDesignTokens={odysseyDesignTokens}\n regions={mappedRegions}\n >\n {Children.toArray(children).map((child) => child)}\n </LayoutContent>\n </Box>\n );\n};\n\nconst MemoizedLayout = memo(Layout);\nMemoizedLayout.displayName = \"Layout\";\n\nexport { MemoizedLayout as Layout };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAaC,IAAI,QAAQ,OAAO;AACjD,OAAOC,MAAM,MAAM,iBAAiB;AAAC,SAE5BC,GAAG;AAAA,SAGVC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AA+BxB,MAAMC,aAAa,GAAGL,MAAM,CAAC,KAAK,EAAE;EAClCM,iBAAiB,EAAGC,IAAI,IACtB,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACD,IAAI;AACrD,CAAC,CAAC,CAAqB,CAAC;EAAEE,mBAAmB;EAAEC;AAAQ,CAAC,MAAM;EAC5DC,OAAO,EAAE,MAAM;EACfC,mBAAmB,EAAEF,OAAO;EAC5BG,aAAa,EAAEJ,mBAAmB,CAACK,QAAQ;EAC3CC,SAAS,EAAEN,mBAAmB,CAACK,QAAQ;EAEvC,OAAO,EAAE;IACPE,gBAAgB,EAAEP,mBAAmB,CAACK;EACxC;AACF,CAAC,CAAC,CAAC;AAEH,MAAMG,MAAM,GAAGA,CAAC;EAAEP,OAAO;EAAEQ;AAAsB,CAAC,KAAK;EACrD,MAAMT,mBAAmB,GAAGP,sBAAsB,CAAC,CAAC;EACpD,MAAMiB,aAAa,GAAGT,OAAO,CAC1BU,GAAG,CAAEC,MAAM,IAAM,aAAYA,MAAO,KAAI,CAAC,CACzCC,IAAI,CAAC,GAAG,CAAC;EAEZ,OACElB,IAAA,CAACH,GAAG;IAAAiB,QAAA,EACFd,IAAA,CAACC,aAAa;MACZI,mBAAmB,EAAEA,mBAAoB;MACzCC,OAAO,EAAES,aAAc;MAAAD,QAAA,EAEtBpB,QAAQ,CAACyB,OAAO,CAACL,QAAQ,CAAC,CAACE,GAAG,CAAEI,KAAK,IAAKA,KAAK;IAAC,CACpC;EAAC,CACb,CAAC;AAEV,CAAC;AAED,MAAMC,cAAc,GAAG1B,IAAI,CAACkB,MAAM,CAAC;AACnCQ,cAAc,CAACC,WAAW,GAAG,QAAQ;AAErC,SAASD,cAAc,IAAIR,MAAM"}
@@ -0,0 +1,80 @@
1
+ import _Accordion from "@mui/material/Accordion";
2
+ import _AccordionDetails from "@mui/material/AccordionDetails";
3
+ import _AccordionSummary from "@mui/material/AccordionSummary";
4
+ /*!
5
+ * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
6
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
7
+ *
8
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ *
13
+ * See the License for the specific language governing permissions and limitations under the License.
14
+ */
15
+
16
+ import styled from "@emotion/styled";
17
+ import { memo } from "react";
18
+ import { ChevronRightIcon } from "../icons.generated/index.js";
19
+ import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
20
+ import { Support } from "../Typography.js";
21
+ import { useUniqueId } from "../useUniqueId.js";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { jsxs as _jsxs } from "react/jsx-runtime";
24
+ const AccordionLabelContainer = styled("span", {
25
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isIconVisible"
26
+ })(({
27
+ odysseyDesignTokens,
28
+ isIconVisible
29
+ }) => ({
30
+ width: "100%",
31
+ marginLeft: isIconVisible ? odysseyDesignTokens.Spacing2 : 0,
32
+ fontSize: odysseyDesignTokens.TypographyScale0,
33
+ fontWeight: odysseyDesignTokens.TypographyWeightHeading,
34
+ color: odysseyDesignTokens.TypographyColorHeading
35
+ }));
36
+ const NavAccordion = ({
37
+ children,
38
+ label,
39
+ id: idOverride,
40
+ isDefaultExpanded,
41
+ isDisabled,
42
+ isExpanded,
43
+ translate,
44
+ startIcon
45
+ }) => {
46
+ const id = useUniqueId(idOverride);
47
+ const headerId = `${id}-header`;
48
+ const contentId = `${id}-content`;
49
+ const odysseyDesignTokens = useOdysseyDesignTokens();
50
+ return _jsxs(_Accordion, {
51
+ defaultExpanded: isDefaultExpanded,
52
+ disabled: isDisabled,
53
+ disableGutters: true,
54
+ expanded: isExpanded,
55
+ className: "nav-accordion",
56
+ children: [_jsx(_AccordionSummary, {
57
+ className: "nav-accordion-summary",
58
+ "aria-controls": contentId,
59
+ expandIcon: _jsx(ChevronRightIcon, {}),
60
+ id: headerId,
61
+ children: _jsxs(Support, {
62
+ component: "div",
63
+ translate: translate,
64
+ children: [startIcon && startIcon, _jsx(AccordionLabelContainer, {
65
+ odysseyDesignTokens: odysseyDesignTokens,
66
+ isIconVisible: Boolean(startIcon),
67
+ children: label
68
+ })]
69
+ })
70
+ }), _jsx(_AccordionDetails, {
71
+ className: "nav-accordion-details",
72
+ "aria-labelledby": headerId,
73
+ children: children
74
+ })]
75
+ });
76
+ };
77
+ const MemoizedNavAccordion = memo(NavAccordion);
78
+ MemoizedNavAccordion.displayName = "NavAccordion";
79
+ export { MemoizedNavAccordion as NavAccordion };
80
+ //# sourceMappingURL=NavAccordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavAccordion.js","names":["styled","memo","ChevronRightIcon","useOdysseyDesignTokens","Support","useUniqueId","jsx","_jsx","jsxs","_jsxs","AccordionLabelContainer","shouldForwardProp","prop","odysseyDesignTokens","isIconVisible","width","marginLeft","Spacing2","fontSize","TypographyScale0","fontWeight","TypographyWeightHeading","color","TypographyColorHeading","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isDisabled","isExpanded","translate","startIcon","headerId","contentId","_Accordion","defaultExpanded","disabled","disableGutters","expanded","className","_AccordionSummary","expandIcon","component","Boolean","_AccordionDetails","MemoizedNavAccordion","displayName"],"sources":["../../src/labs/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n Accordion as MuiAccordion,\n AccordionDetails as MuiAccordionDetails,\n AccordionSummary as MuiAccordionSummary,\n AccordionProps as MuiAccordionProps,\n} from \"@mui/material\";\nimport { ReactNode, memo } from \"react\";\n\nimport type { HtmlProps } from \"../HtmlProps\";\nimport { ChevronRightIcon } from \"../icons.generated\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { Support } from \"../Typography\";\nimport { useUniqueId } from \"../useUniqueId\";\n\nexport type NavAccordionProps = {\n /**\n * The content of the Accordion itself\n */\n children: ReactNode;\n /**\n * The label text for the AccordionSummary\n */\n label: string;\n /**\n * Defines IDs for the header and the content of the Accordion\n */\n id?: string;\n /**\n * Whether the item is expanded by default\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled\n */\n isDisabled?: boolean;\n /**\n * If true, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n isExpanded?: boolean;\n /**\n * Event fired when the expansion state of the accordion is changed\n */\n onChange?: MuiAccordionProps[\"onChange\"];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isIconVisible\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isIconVisible: boolean;\n}>(({ odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n marginLeft: isIconVisible ? odysseyDesignTokens.Spacing2 : 0,\n fontSize: odysseyDesignTokens.TypographyScale0,\n fontWeight: odysseyDesignTokens.TypographyWeightHeading,\n color: odysseyDesignTokens.TypographyColorHeading,\n}));\n\nconst NavAccordion = ({\n children,\n label,\n id: idOverride,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n translate,\n startIcon,\n}: NavAccordionProps) => {\n const id = useUniqueId(idOverride);\n const headerId = `${id}-header`;\n const contentId = `${id}-content`;\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n return (\n <MuiAccordion\n defaultExpanded={isDefaultExpanded}\n disabled={isDisabled}\n disableGutters\n expanded={isExpanded}\n className=\"nav-accordion\"\n >\n <MuiAccordionSummary\n className=\"nav-accordion-summary\"\n aria-controls={contentId}\n expandIcon={<ChevronRightIcon />}\n id={headerId}\n >\n <Support component=\"div\" translate={translate}>\n {startIcon && startIcon}\n <AccordionLabelContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isIconVisible={Boolean(startIcon)}\n >\n {label}\n </AccordionLabelContainer>\n </Support>\n </MuiAccordionSummary>\n <MuiAccordionDetails\n className=\"nav-accordion-details\"\n aria-labelledby={headerId}\n >\n {children}\n </MuiAccordionDetails>\n </MuiAccordion>\n );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,iBAAiB;AAOpC,SAAoBC,IAAI,QAAQ,OAAO;AAAC,SAG/BC,gBAAgB;AAAA,SAGvBC,sBAAsB;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAsCpB,MAAMC,uBAAuB,GAAGV,MAAM,CAAC,MAAM,EAAE;EAC7CW,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,UAAU,EAAEF,aAAa,GAAGD,mBAAmB,CAACI,QAAQ,GAAG,CAAC;EAC5DC,QAAQ,EAAEL,mBAAmB,CAACM,gBAAgB;EAC9CC,UAAU,EAAEP,mBAAmB,CAACQ,uBAAuB;EACvDC,KAAK,EAAET,mBAAmB,CAACU;AAC7B,CAAC,CAAC,CAAC;AAEH,MAAMC,YAAY,GAAGA,CAAC;EACpBC,QAAQ;EACRC,KAAK;EACLC,EAAE,EAAEC,UAAU;EACdC,iBAAiB;EACjBC,UAAU;EACVC,UAAU;EACVC,SAAS;EACTC;AACiB,CAAC,KAAK;EACvB,MAAMN,EAAE,GAAGtB,WAAW,CAACuB,UAAU,CAAC;EAClC,MAAMM,QAAQ,GAAI,GAAEP,EAAG,SAAQ;EAC/B,MAAMQ,SAAS,GAAI,GAAER,EAAG,UAAS;EACjC,MAAMd,mBAAmB,GAAGV,sBAAsB,CAAC,CAAC;EAEpD,OACEM,KAAA,CAAA2B,UAAA;IACEC,eAAe,EAAER,iBAAkB;IACnCS,QAAQ,EAAER,UAAW;IACrBS,cAAc;IACdC,QAAQ,EAAET,UAAW;IACrBU,SAAS,EAAC,eAAe;IAAAhB,QAAA,GAEzBlB,IAAA,CAAAmC,iBAAA;MACED,SAAS,EAAC,uBAAuB;MACjC,iBAAeN,SAAU;MACzBQ,UAAU,EAAEpC,IAAA,CAACL,gBAAgB,IAAE,CAAE;MACjCyB,EAAE,EAAEO,QAAS;MAAAT,QAAA,EAEbhB,KAAA,CAACL,OAAO;QAACwC,SAAS,EAAC,KAAK;QAACZ,SAAS,EAAEA,SAAU;QAAAP,QAAA,GAC3CQ,SAAS,IAAIA,SAAS,EACvB1B,IAAA,CAACG,uBAAuB;UACtBG,mBAAmB,EAAEA,mBAAoB;UACzCC,aAAa,EAAE+B,OAAO,CAACZ,SAAS,CAAE;UAAAR,QAAA,EAEjCC;QAAK,CACiB,CAAC;MAAA,CACnB;IAAC,CACS,CAAC,EACtBnB,IAAA,CAAAuC,iBAAA;MACEL,SAAS,EAAC,uBAAuB;MACjC,mBAAiBP,QAAS;MAAAT,QAAA,EAEzBA;IAAQ,CACU,CAAC;EAAA,CACV,CAAC;AAEnB,CAAC;AAED,MAAMsB,oBAAoB,GAAG9C,IAAI,CAACuB,YAAY,CAAC;AAC/CuB,oBAAoB,CAACC,WAAW,GAAG,cAAc;AAEjD,SAASD,oBAAoB,IAAIvB,YAAY"}
@@ -0,0 +1,140 @@
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 } from "react";
14
+ import styled from "@emotion/styled";
15
+ import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
16
+ import { DocumentationIcon } from "../icons.generated/index.js";
17
+ import { Heading4, Subordinate } from "../Typography.js";
18
+ import { Link } from "../Link.js";
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { jsxs as _jsxs } from "react/jsx-runtime";
21
+ const TemplateContainer = styled("div", {
22
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isFullWidth"
23
+ })(({
24
+ odysseyDesignTokens,
25
+ isFullWidth
26
+ }) => ({
27
+ maxWidth: isFullWidth ? "100%" : `calc(1440px + ${odysseyDesignTokens.Spacing6} + ${odysseyDesignTokens.Spacing6})`,
28
+ marginInline: isFullWidth ? odysseyDesignTokens.Spacing6 : "auto",
29
+ padding: odysseyDesignTokens.Spacing6
30
+ }));
31
+ const TemplateHeader = styled("div")(() => ({
32
+ display: "flex",
33
+ alignItems: "flex-end",
34
+ justifyContent: "space-between"
35
+ }));
36
+ const TemplateHeaderPrimaryContent = styled("div")(() => ({
37
+ [".MuiTypography-root:last-child"]: {
38
+ marginBlockEnd: "0"
39
+ }
40
+ }));
41
+ const TemplateHeaderSecondaryContent = styled("div", {
42
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
43
+ })(({
44
+ odysseyDesignTokens
45
+ }) => ({
46
+ alignItems: "flex-end",
47
+ display: "flex",
48
+ flexDirection: "column",
49
+ gap: odysseyDesignTokens.Spacing2,
50
+ minHeight: odysseyDesignTokens.Spacing7,
51
+ justifyContent: "center"
52
+ }));
53
+ const TemplateHeaderButtons = styled("div", {
54
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
55
+ })(({
56
+ odysseyDesignTokens
57
+ }) => ({
58
+ display: "flex",
59
+ gap: odysseyDesignTokens.Spacing2
60
+ }));
61
+ const TemplateContent = styled("div", {
62
+ shouldForwardProp: prop => !["odysseyDesignTokens", "isDrawerOpen", "drawerVariant"].includes(prop)
63
+ })(({
64
+ odysseyDesignTokens,
65
+ isDrawerOpen,
66
+ drawerVariant
67
+ }) => ({
68
+ "@keyframes animate-drawer-open": {
69
+ "0%": {
70
+ gridTemplateColumns: "minmax(0, 1fr) 0"
71
+ },
72
+ "100%": {
73
+ gridTemplateColumns: "minmax(0, 1fr) 360px"
74
+ }
75
+ },
76
+ "@keyframes animate-drawer-close": {
77
+ "0%": {
78
+ gridTemplateColumns: "minmax(0, 1fr) 360px"
79
+ },
80
+ "100%": {
81
+ gridTemplateColumns: "minmax(0, 1fr) 0"
82
+ }
83
+ },
84
+ display: "grid",
85
+ gridGap: drawerVariant === "persistent" && !isDrawerOpen ? 0 : odysseyDesignTokens.Spacing4,
86
+ gap: drawerVariant === "persistent" && !isDrawerOpen ? 0 : odysseyDesignTokens.Spacing4,
87
+ marginBlock: odysseyDesignTokens.Spacing4,
88
+ gridTemplateColumns: drawerVariant === "persistent" ? isDrawerOpen ? "minmax(0, 1fr) 360px" : "minmax(0, 1fr) 0" : "minmax(0, 1fr)",
89
+ animation: drawerVariant === "persistent" && isDrawerOpen ? "animate-drawer-open 225ms cubic-bezier(0, 0, 0.2, 1)" : "animate-drawer-close 225ms cubic-bezier(0, 0, 0.2, 1)"
90
+ }));
91
+ const PageTemplate = ({
92
+ title,
93
+ description,
94
+ documentationLink,
95
+ documentationText,
96
+ primaryCallToActionComponent,
97
+ secondaryCallToActionComponent,
98
+ tertiaryCallToActionComponent,
99
+ children,
100
+ drawer,
101
+ isFullWidth = false
102
+ }) => {
103
+ const odysseyDesignTokens = useOdysseyDesignTokens();
104
+ const {
105
+ isOpen: isDrawerOpen,
106
+ variant: drawerVariant
107
+ } = drawer?.props ?? {};
108
+ return _jsxs(TemplateContainer, {
109
+ odysseyDesignTokens: odysseyDesignTokens,
110
+ isFullWidth: isFullWidth,
111
+ children: [_jsxs(TemplateHeader, {
112
+ children: [_jsxs(TemplateHeaderPrimaryContent, {
113
+ children: [title && _jsx(Heading4, {
114
+ children: title
115
+ }), description && _jsx(Subordinate, {
116
+ children: description
117
+ })]
118
+ }), _jsxs(TemplateHeaderSecondaryContent, {
119
+ odysseyDesignTokens: odysseyDesignTokens,
120
+ children: [documentationLink && _jsx(Link, {
121
+ href: documentationLink,
122
+ icon: _jsx(DocumentationIcon, {}),
123
+ children: documentationText
124
+ }), (primaryCallToActionComponent || secondaryCallToActionComponent || tertiaryCallToActionComponent) && _jsxs(TemplateHeaderButtons, {
125
+ odysseyDesignTokens: odysseyDesignTokens,
126
+ children: [tertiaryCallToActionComponent, secondaryCallToActionComponent, primaryCallToActionComponent]
127
+ })]
128
+ })]
129
+ }), _jsxs(TemplateContent, {
130
+ odysseyDesignTokens: odysseyDesignTokens,
131
+ isDrawerOpen: isDrawerOpen,
132
+ drawerVariant: drawerVariant,
133
+ children: [children, drawer]
134
+ })]
135
+ });
136
+ };
137
+ const MemoizedPageTemplate = memo(PageTemplate);
138
+ MemoizedPageTemplate.displayName = "PageTemplate";
139
+ export { MemoizedPageTemplate as PageTemplate };
140
+ //# sourceMappingURL=PageTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageTemplate.js","names":["memo","styled","useOdysseyDesignTokens","DocumentationIcon","Heading4","Subordinate","Link","jsx","_jsx","jsxs","_jsxs","TemplateContainer","shouldForwardProp","prop","odysseyDesignTokens","isFullWidth","maxWidth","Spacing6","marginInline","padding","TemplateHeader","display","alignItems","justifyContent","TemplateHeaderPrimaryContent","marginBlockEnd","TemplateHeaderSecondaryContent","flexDirection","gap","Spacing2","minHeight","Spacing7","TemplateHeaderButtons","TemplateContent","includes","isDrawerOpen","drawerVariant","gridTemplateColumns","gridGap","Spacing4","marginBlock","animation","PageTemplate","title","description","documentationLink","documentationText","primaryCallToActionComponent","secondaryCallToActionComponent","tertiaryCallToActionComponent","children","drawer","isOpen","variant","props","href","icon","MemoizedPageTemplate","displayName"],"sources":["../../src/labs/PageTemplate.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, ReactElement, ReactNode } from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { DocumentationIcon } from \"../icons.generated\";\nimport { Heading4, Subordinate } from \"../Typography\";\nimport { Link } from \"../Link\";\n\nexport type PageTemplateProps = {\n /**\n * The title of the layout to be situated in the layout header\n */\n title?: string;\n /**\n * A supplementary description to be situated in the layout header\n */\n description?: string;\n /**\n * The destination for a documentation `Link` to be situated in the layout header\n */\n documentationLink?: string;\n /**\n * The text for a documentation `Link` to be situated in the layout header\n */\n documentationText?: string;\n /**\n * An optional `Drawer` object. Can be of variant 'temporary' or 'persistent'.\n */\n drawer?: ReactElement;\n /**\n * An optional `Button` object to be situated in the layout header. Should almost always be of variant `primary`.\n */\n primaryCallToActionComponent?: ReactElement;\n /**\n * An optional `Button` object to be situated in the layout header, alongside the `callToActionPrimaryComponent`.\n */\n secondaryCallToActionComponent?: ReactElement;\n /**\n * An optional `Button` object to be situated in the layout header, alongside the other two `callToAction` components.\n */\n tertiaryCallToActionComponent?: ReactElement;\n /**\n * The content of the layout. May be a `string` or any other `ReactNode` or array of `ReactNode`s. Will often be `Grid` objects.\n */\n children?: ReactNode;\n /**\n * When set to `true`, the layout expands past its max width of 1440px and spans the entire available screen width.\n */\n isFullWidth?: boolean;\n};\n\ntype TemplateContentProps = {\n odysseyDesignTokens: DesignTokens;\n isDrawerOpen?: boolean;\n drawerVariant?: string;\n};\n\nconst TemplateContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isFullWidth\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isFullWidth: boolean;\n}>(({ odysseyDesignTokens, isFullWidth }) => ({\n maxWidth: isFullWidth\n ? \"100%\"\n : `calc(1440px + ${odysseyDesignTokens.Spacing6} + ${odysseyDesignTokens.Spacing6})`,\n marginInline: isFullWidth ? odysseyDesignTokens.Spacing6 : \"auto\",\n padding: odysseyDesignTokens.Spacing6,\n}));\n\nconst TemplateHeader = styled(\"div\")(() => ({\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n}));\n\nconst TemplateHeaderPrimaryContent = styled(\"div\")(() => ({\n [\".MuiTypography-root:last-child\"]: {\n marginBlockEnd: \"0\",\n },\n}));\n\nconst TemplateHeaderSecondaryContent = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n alignItems: \"flex-end\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: odysseyDesignTokens.Spacing2,\n minHeight: odysseyDesignTokens.Spacing7,\n justifyContent: \"center\",\n}));\n\nconst TemplateHeaderButtons = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n}));\n\nconst TemplateContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n ![\"odysseyDesignTokens\", \"isDrawerOpen\", \"drawerVariant\"].includes(prop),\n})<TemplateContentProps>(\n ({ odysseyDesignTokens, isDrawerOpen, drawerVariant }) => ({\n \"@keyframes animate-drawer-open\": {\n \"0%\": {\n gridTemplateColumns: \"minmax(0, 1fr) 0\",\n },\n \"100%\": {\n gridTemplateColumns: \"minmax(0, 1fr) 360px\",\n },\n },\n \"@keyframes animate-drawer-close\": {\n \"0%\": {\n gridTemplateColumns: \"minmax(0, 1fr) 360px\",\n },\n \"100%\": {\n gridTemplateColumns: \"minmax(0, 1fr) 0\",\n },\n },\n display: \"grid\",\n gridGap:\n drawerVariant === \"persistent\" && !isDrawerOpen\n ? 0\n : odysseyDesignTokens.Spacing4,\n gap:\n drawerVariant === \"persistent\" && !isDrawerOpen\n ? 0\n : odysseyDesignTokens.Spacing4,\n marginBlock: odysseyDesignTokens.Spacing4,\n gridTemplateColumns:\n drawerVariant === \"persistent\"\n ? isDrawerOpen\n ? \"minmax(0, 1fr) 360px\"\n : \"minmax(0, 1fr) 0\"\n : \"minmax(0, 1fr)\",\n animation:\n drawerVariant === \"persistent\" && isDrawerOpen\n ? \"animate-drawer-open 225ms cubic-bezier(0, 0, 0.2, 1)\"\n : \"animate-drawer-close 225ms cubic-bezier(0, 0, 0.2, 1)\",\n }),\n);\n\nconst PageTemplate = ({\n title,\n description,\n documentationLink,\n documentationText,\n primaryCallToActionComponent,\n secondaryCallToActionComponent,\n tertiaryCallToActionComponent,\n children,\n drawer,\n isFullWidth = false,\n}: PageTemplateProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { isOpen: isDrawerOpen, variant: drawerVariant } = drawer?.props ?? {};\n\n return (\n <TemplateContainer\n odysseyDesignTokens={odysseyDesignTokens}\n isFullWidth={isFullWidth}\n >\n <TemplateHeader>\n <TemplateHeaderPrimaryContent>\n {title && <Heading4>{title}</Heading4>}\n {description && <Subordinate>{description}</Subordinate>}\n </TemplateHeaderPrimaryContent>\n\n <TemplateHeaderSecondaryContent\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {documentationLink && (\n <Link href={documentationLink} icon={<DocumentationIcon />}>\n {documentationText}\n </Link>\n )}\n {(primaryCallToActionComponent ||\n secondaryCallToActionComponent ||\n tertiaryCallToActionComponent) && (\n <TemplateHeaderButtons odysseyDesignTokens={odysseyDesignTokens}>\n {tertiaryCallToActionComponent}\n {secondaryCallToActionComponent}\n {primaryCallToActionComponent}\n </TemplateHeaderButtons>\n )}\n </TemplateHeaderSecondaryContent>\n </TemplateHeader>\n <TemplateContent\n odysseyDesignTokens={odysseyDesignTokens}\n isDrawerOpen={isDrawerOpen}\n drawerVariant={drawerVariant}\n >\n {children}\n {drawer}\n </TemplateContent>\n </TemplateContainer>\n );\n};\n\nconst MemoizedPageTemplate = memo(PageTemplate);\nMemoizedPageTemplate.displayName = \"PageTemplate\";\n\nexport { MemoizedPageTemplate as PageTemplate };\n"],"mappings":"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"}