@learningpool/ui 1.6.0 → 1.6.1

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 (437) hide show
  1. package/.eslintrc.js +40 -0
  2. package/.github/pull_request_template.md +23 -0
  3. package/.github/renovate.json +57 -0
  4. package/.github/workflows/integration.yml +53 -0
  5. package/.github/workflows/wss.yml +22 -0
  6. package/.jest-test-results.json +1 -0
  7. package/.releaserc +32 -0
  8. package/.storybook/learningpoolTheme.js +39 -0
  9. package/.storybook/main.js +21 -0
  10. package/.storybook/manager-head.html +175 -0
  11. package/.storybook/manager.js +34 -0
  12. package/.storybook/preview-head.html +212 -0
  13. package/.storybook/preview.js +120 -0
  14. package/.storybook/storybook-sort.js +54 -0
  15. package/CHANGELOG.md +6 -0
  16. package/amplify.yml +16 -0
  17. package/babel.config.json +14 -0
  18. package/{assets → dist/assets}/Images.d.ts +0 -0
  19. package/{assets → dist/assets}/Images.js +0 -0
  20. package/{components → dist/components}/atoms/Autocomplete/Autocomplete.d.ts +0 -0
  21. package/{components → dist/components}/atoms/Autocomplete/Autocomplete.js +0 -0
  22. package/{components → dist/components}/atoms/Button/Button.d.ts +0 -0
  23. package/{components → dist/components}/atoms/Button/Button.js +0 -0
  24. package/{components → dist/components}/atoms/Checkbox/Checkbox.d.ts +0 -0
  25. package/{components → dist/components}/atoms/Checkbox/Checkbox.js +0 -0
  26. package/{components → dist/components}/atoms/IconButton/IconButton.d.ts +0 -0
  27. package/{components → dist/components}/atoms/IconButton/IconButton.js +0 -0
  28. package/{components → dist/components}/atoms/Radio/Radio.d.ts +0 -0
  29. package/{components → dist/components}/atoms/Radio/Radio.js +0 -0
  30. package/{components → dist/components}/atoms/Select/Select.d.ts +0 -0
  31. package/{components → dist/components}/atoms/Select/Select.js +0 -0
  32. package/{components → dist/components}/atoms/Slider/Slider.d.ts +0 -0
  33. package/{components → dist/components}/atoms/Slider/Slider.js +0 -0
  34. package/{components → dist/components}/atoms/Switch/Switch.d.ts +0 -0
  35. package/{components → dist/components}/atoms/Switch/Switch.js +0 -0
  36. package/{components → dist/components}/atoms/TextField/TextField.d.ts +0 -0
  37. package/{components → dist/components}/atoms/TextField/TextField.js +0 -0
  38. package/{components → dist/components}/atoms/ToggleButton/ToggleButton.d.ts +0 -0
  39. package/{components → dist/components}/atoms/ToggleButton/ToggleButton.js +0 -0
  40. package/{components → dist/components}/datadisplay/Avatar/Avatar.d.ts +0 -0
  41. package/{components → dist/components}/datadisplay/Avatar/Avatar.js +0 -0
  42. package/{components → dist/components}/datadisplay/Chip/Chip.d.ts +0 -0
  43. package/{components → dist/components}/datadisplay/Chip/Chip.js +0 -0
  44. package/{components → dist/components}/datadisplay/List/List.d.ts +0 -0
  45. package/{components → dist/components}/datadisplay/List/List.js +0 -0
  46. package/{components → dist/components}/datadisplay/Tooltip/Tooltip.d.ts +0 -0
  47. package/{components → dist/components}/datadisplay/Tooltip/Tooltip.js +0 -0
  48. package/{components → dist/components}/feedback/Alert/Alert.d.ts +0 -0
  49. package/{components → dist/components}/feedback/Alert/Alert.js +0 -0
  50. package/{components → dist/components}/landmarks/Header/Header.d.ts +0 -0
  51. package/{components → dist/components}/landmarks/Header/Header.js +0 -0
  52. package/{components → dist/components}/landmarks/Header/HeaderActionButtons.d.ts +0 -0
  53. package/{components → dist/components}/landmarks/Header/HeaderActionButtons.js +0 -0
  54. package/{components → dist/components}/landmarks/Header/HeaderStyles.d.ts +0 -0
  55. package/{components → dist/components}/landmarks/Header/HeaderStyles.js +0 -0
  56. package/{components → dist/components}/navigation/Drawer/Drawer.d.ts +0 -0
  57. package/{components → dist/components}/navigation/Drawer/Drawer.js +0 -0
  58. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigation.d.ts +0 -0
  59. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigation.js +64 -41
  60. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationAvatar.d.ts +0 -0
  61. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationAvatar.js +23 -19
  62. package/dist/components/navigation/MobileNavigation/MobileNavigationAvatarStyles.d.ts +3296 -0
  63. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationAvatarStyles.js +4 -4
  64. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationDrawer.d.ts +0 -0
  65. package/dist/components/navigation/MobileNavigation/MobileNavigationDrawer.js +71 -0
  66. package/dist/components/navigation/MobileNavigation/MobileNavigationDrawerStyles.d.ts +1215 -0
  67. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationDrawerStyles.js +2 -2
  68. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItem.d.ts +0 -0
  69. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItem.js +0 -0
  70. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenu.d.ts +0 -0
  71. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenu.js +0 -0
  72. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenuStyles.d.ts +0 -0
  73. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenuStyles.js +0 -0
  74. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemStyles.d.ts +0 -0
  75. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemStyles.js +0 -0
  76. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationMotion.d.ts +0 -0
  77. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationMotion.js +0 -0
  78. package/dist/components/navigation/MobileNavigation/MobileNavigationNotchIndicator.d.ts +3 -0
  79. package/dist/components/navigation/MobileNavigation/MobileNavigationNotchIndicator.js +19 -0
  80. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationSearch.d.ts +0 -0
  81. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationSearch.js +8 -6
  82. package/dist/components/navigation/MobileNavigation/MobileNavigationSearchStyles.d.ts +1080 -0
  83. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationSearchStyles.js +2 -2
  84. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationStyles.d.ts +0 -0
  85. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationStyles.js +0 -0
  86. package/dist/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.d.ts +3 -0
  87. package/dist/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.js +28 -0
  88. package/dist/components/navigation/MobileNavigation/MobileNavigationToggleX.d.ts +3 -0
  89. package/dist/components/navigation/MobileNavigation/MobileNavigationToggleX.js +28 -0
  90. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigation.d.ts +0 -0
  91. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigation.js +18 -16
  92. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationAvatar.d.ts +0 -0
  93. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationAvatar.js +20 -25
  94. package/dist/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.d.ts +3296 -0
  95. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.js +4 -4
  96. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.d.ts +0 -0
  97. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.js +5 -1
  98. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.d.ts +0 -0
  99. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.js +0 -0
  100. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.d.ts +0 -0
  101. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.js +0 -0
  102. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.d.ts +0 -0
  103. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.js +0 -0
  104. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationMotion.d.ts +0 -0
  105. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationMotion.js +0 -0
  106. package/dist/components/navigation/VerticalNavigation/VerticalNavigationStyles.d.ts +1163 -0
  107. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationStyles.js +3 -2
  108. package/{components → dist/components}/pages/ErrorPage/ErrorPage.d.ts +0 -0
  109. package/{components → dist/components}/pages/ErrorPage/ErrorPage.js +0 -0
  110. package/{components → dist/components}/pages/ErrorPage/ErrorPageStyles.d.ts +0 -0
  111. package/{components → dist/components}/pages/ErrorPage/ErrorPageStyles.js +0 -0
  112. package/{components → dist/components}/pages/SideInSide/SideInSide.d.ts +0 -0
  113. package/{components → dist/components}/pages/SideInSide/SideInSide.js +0 -0
  114. package/{components → dist/components}/pages/SideInSide/SideInSideStyles.d.ts +0 -0
  115. package/{components → dist/components}/pages/SideInSide/SideInSideStyles.js +0 -0
  116. package/{components → dist/components}/stream/AppSwitcher/AppSwitcher.d.ts +0 -0
  117. package/{components → dist/components}/stream/AppSwitcher/AppSwitcher.js +0 -0
  118. package/{components → dist/components}/stream/AppSwitcher/AppSwitcherItem.d.ts +0 -0
  119. package/{components → dist/components}/stream/AppSwitcher/AppSwitcherItem.js +0 -0
  120. package/{components → dist/components}/stream/AppSwitcher/AppSwitcherStyles.d.ts +0 -0
  121. package/{components → dist/components}/stream/AppSwitcher/AppSwitcherStyles.js +0 -0
  122. package/{components → dist/components}/stream/AppSwitcher/constants.d.ts +0 -0
  123. package/{components → dist/components}/stream/AppSwitcher/constants.js +0 -0
  124. package/{index.d.ts → dist/index.d.ts} +0 -0
  125. package/{index.js → dist/index.js} +0 -0
  126. package/{lang → dist/lang}/en-us.d.ts +0 -0
  127. package/{lang → dist/lang}/en-us.js +0 -0
  128. package/dist/package.json +41 -0
  129. package/{types → dist/types}/components/navigation/VerticalNavigation.d.ts +0 -0
  130. package/{types → dist/types}/components/navigation/VerticalNavigation.js +0 -0
  131. package/{types → dist/types}/components/navigation/VerticalNavigationAvatar.d.ts +1 -0
  132. package/{types → dist/types}/components/navigation/VerticalNavigationAvatar.js +0 -0
  133. package/{types → dist/types}/components/stream/AppSwitcher.d.ts +0 -0
  134. package/{types → dist/types}/components/stream/AppSwitcher.js +0 -0
  135. package/{types → dist/types}/index.d.ts +0 -0
  136. package/{types → dist/types}/index.js +0 -0
  137. package/{utils → dist/utils}/constants.d.ts +0 -0
  138. package/{utils → dist/utils}/constants.js +0 -0
  139. package/dist/utils/helpers.d.ts +21 -0
  140. package/dist/utils/helpers.js +64 -0
  141. package/{utils → dist/utils}/hooks.d.ts +0 -0
  142. package/{utils → dist/utils}/hooks.js +0 -0
  143. package/{utils → dist/utils}/index.d.ts +0 -0
  144. package/{utils → dist/utils}/index.js +0 -0
  145. package/{utils → dist/utils}/theme.d.ts +0 -0
  146. package/{utils → dist/utils}/theme.js +0 -0
  147. package/jest.config.ts +11 -0
  148. package/jest.setup.ts +5 -0
  149. package/{LICENSE → license} +0 -0
  150. package/merge.js +27 -0
  151. package/package.json +71 -4
  152. package/public/android-chrome-192x192.png +0 -0
  153. package/public/android-chrome-512x512.png +0 -0
  154. package/public/apple-touch-icon.png +0 -0
  155. package/public/assets/atoms.svg +5 -0
  156. package/public/assets/automation.svg +1 -0
  157. package/public/assets/avatar-1.jpg +0 -0
  158. package/public/assets/avatar-2.jpg +0 -0
  159. package/public/assets/avatar-3.jpg +0 -0
  160. package/public/assets/flux/icon-dark.svg +6 -0
  161. package/public/assets/flux/icon-light.svg +1 -0
  162. package/public/assets/flux/icon-white.svg +6 -0
  163. package/public/assets/flux/icon.svg +6 -0
  164. package/public/assets/flux/logo-dark.svg +22 -0
  165. package/public/assets/flux/logo-light.svg +1 -0
  166. package/public/assets/flux/logo-white.svg +22 -0
  167. package/public/assets/flux/logo.svg +22 -0
  168. package/public/assets/iPhone6.jpg +0 -0
  169. package/public/assets/iPhone6Plus.jpg +0 -0
  170. package/public/assets/lp-logo.png +0 -0
  171. package/public/assets/lplogo.svg +1 -0
  172. package/public/assets/molecules.svg +8 -0
  173. package/public/assets/organisms.svg +21 -0
  174. package/public/assets/pages.svg +4 -0
  175. package/public/assets/particles.svg +3 -0
  176. package/public/assets/stream-dark.png +0 -0
  177. package/public/assets/stream-suite-logo.svg +38 -0
  178. package/public/assets/stream-white.png +0 -0
  179. package/public/assets/stream.png +0 -0
  180. package/public/assets/templates.svg +3 -0
  181. package/public/favicon-16x16.png +0 -0
  182. package/public/favicon-32x32.png +0 -0
  183. package/public/favicon.ico +0 -0
  184. package/public/index.html +43 -0
  185. package/public/logo192.png +0 -0
  186. package/public/logo512.png +0 -0
  187. package/public/manifest.json +25 -0
  188. package/public/robots.txt +3 -0
  189. package/public/site.webmanifest +1 -0
  190. package/{README.md → readme.md} +0 -0
  191. package/src/docs.tsx +167 -0
  192. package/src/lib/assets/Images.tsx +47 -0
  193. package/src/lib/assets/stream-suite-logo.svg +38 -0
  194. package/src/lib/components/atoms/Autocomplete/Autocomplete.test.tsx +179 -0
  195. package/src/lib/components/atoms/Autocomplete/Autocomplete.tsx +14 -0
  196. package/src/lib/components/atoms/Button/Button.test.tsx +166 -0
  197. package/src/lib/components/atoms/Button/Button.tsx +16 -0
  198. package/src/lib/components/atoms/Checkbox/Checkbox.test.tsx +85 -0
  199. package/src/lib/components/atoms/Checkbox/Checkbox.tsx +10 -0
  200. package/src/lib/components/atoms/IconButton/IconButton.test.tsx +60 -0
  201. package/src/lib/components/atoms/IconButton/IconButton.tsx +9 -0
  202. package/src/lib/components/atoms/Radio/Radio.test.tsx +136 -0
  203. package/src/lib/components/atoms/Radio/Radio.tsx +10 -0
  204. package/src/lib/components/atoms/Select/Select.test.tsx +158 -0
  205. package/src/lib/components/atoms/Select/Select.tsx +12 -0
  206. package/src/lib/components/atoms/Slider/Slider.test.tsx +103 -0
  207. package/src/lib/components/atoms/Slider/Slider.tsx +10 -0
  208. package/src/lib/components/atoms/Switch/Switch.test.tsx +96 -0
  209. package/src/lib/components/atoms/Switch/Switch.tsx +10 -0
  210. package/src/lib/components/atoms/TextField/TextField.test.tsx +131 -0
  211. package/src/lib/components/atoms/TextField/TextField.tsx +31 -0
  212. package/src/lib/components/atoms/ToggleButton/ToggleButton.test.tsx +122 -0
  213. package/src/lib/components/atoms/ToggleButton/ToggleButton.tsx +10 -0
  214. package/src/lib/components/datadisplay/Avatar/Avatar.test.tsx +187 -0
  215. package/src/lib/components/datadisplay/Avatar/Avatar.tsx +35 -0
  216. package/src/lib/components/datadisplay/Avatar/avatar-1.jpg +0 -0
  217. package/src/lib/components/datadisplay/Chip/Chip.test.tsx +82 -0
  218. package/src/lib/components/datadisplay/Chip/Chip.tsx +11 -0
  219. package/src/lib/components/datadisplay/List/List.test.tsx +168 -0
  220. package/src/lib/components/datadisplay/List/List.tsx +8 -0
  221. package/src/lib/components/datadisplay/Tooltip/Tooltip.test.tsx +98 -0
  222. package/src/lib/components/datadisplay/Tooltip/Tooltip.tsx +9 -0
  223. package/src/lib/components/feedback/Alert/Alert.test.tsx +139 -0
  224. package/src/lib/components/feedback/Alert/Alert.tsx +10 -0
  225. package/src/lib/components/landmarks/Header/Header.tsx +140 -0
  226. package/src/lib/components/landmarks/Header/HeaderActionButtons.tsx +117 -0
  227. package/src/lib/components/landmarks/Header/HeaderStyles.tsx +62 -0
  228. package/src/lib/components/navigation/Drawer/Drawer.test.tsx +95 -0
  229. package/src/lib/components/navigation/Drawer/Drawer.tsx +21 -0
  230. package/src/lib/components/navigation/MobileNavigation/MobileNavigation.tsx +276 -0
  231. package/src/lib/components/navigation/MobileNavigation/MobileNavigationAvatar.tsx +334 -0
  232. package/src/lib/components/navigation/MobileNavigation/MobileNavigationAvatarStyles.tsx +77 -0
  233. package/src/lib/components/navigation/MobileNavigation/MobileNavigationDrawer.tsx +197 -0
  234. package/src/lib/components/navigation/MobileNavigation/MobileNavigationDrawerStyles.tsx +143 -0
  235. package/src/lib/components/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItem.tsx +192 -0
  236. package/src/lib/components/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenu.tsx +67 -0
  237. package/src/lib/components/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenuStyles.tsx +192 -0
  238. package/src/lib/components/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemStyles.tsx +217 -0
  239. package/src/lib/components/navigation/MobileNavigation/MobileNavigationMotion.tsx +119 -0
  240. package/src/lib/components/navigation/MobileNavigation/MobileNavigationNotchIndicator.tsx +35 -0
  241. package/src/lib/components/navigation/MobileNavigation/MobileNavigationSearch.tsx +114 -0
  242. package/src/lib/components/navigation/MobileNavigation/MobileNavigationSearchStyles.tsx +47 -0
  243. package/src/lib/components/navigation/MobileNavigation/MobileNavigationStyles.tsx +320 -0
  244. package/src/lib/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.tsx +59 -0
  245. package/src/lib/components/navigation/MobileNavigation/MobileNavigationToggleX.tsx +51 -0
  246. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigation.tsx +467 -0
  247. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationAvatar.tsx +208 -0
  248. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.tsx +75 -0
  249. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.tsx +196 -0
  250. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.tsx +94 -0
  251. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.tsx +212 -0
  252. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.tsx +240 -0
  253. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationMotion.tsx +119 -0
  254. package/src/lib/components/navigation/VerticalNavigation/VerticalNavigationStyles.tsx +303 -0
  255. package/src/lib/components/pages/ErrorPage/ErrorPage.test.tsx +78 -0
  256. package/src/lib/components/pages/ErrorPage/ErrorPage.tsx +50 -0
  257. package/src/lib/components/pages/ErrorPage/ErrorPageStyles.tsx +30 -0
  258. package/src/lib/components/pages/SideInSide/SideInSide.tsx +100 -0
  259. package/src/lib/components/pages/SideInSide/SideInSideStyles.tsx +62 -0
  260. package/src/lib/components/stream/AppSwitcher/AppSwitcher.tsx +392 -0
  261. package/src/lib/components/stream/AppSwitcher/AppSwitcherItem.tsx +83 -0
  262. package/src/lib/components/stream/AppSwitcher/AppSwitcherStyles.tsx +325 -0
  263. package/src/lib/components/stream/AppSwitcher/constants.tsx +28 -0
  264. package/src/lib/index.tsx +148 -0
  265. package/src/lib/lang/en-us.js +6 -0
  266. package/src/lib/types/components/navigation/VerticalNavigation.ts +52 -0
  267. package/src/lib/types/components/navigation/VerticalNavigationAvatar.ts +26 -0
  268. package/src/lib/types/components/stream/AppSwitcher.ts +10 -0
  269. package/src/lib/types/index.ts +9 -0
  270. package/src/lib/utils/constants.tsx +11 -0
  271. package/src/lib/utils/helpers.tsx +77 -0
  272. package/src/lib/utils/hooks.tsx +33 -0
  273. package/src/lib/utils/index.tsx +4 -0
  274. package/src/lib/utils/theme.tsx +79 -0
  275. package/src/react-app-env.d.ts +1 -0
  276. package/src/setupTests.ts +5 -0
  277. package/src/stories/Components/DataDisplay/Avatar/Accessibility.stories.mdx +34 -0
  278. package/src/stories/Components/DataDisplay/Avatar/AllCombinations.tsx +56 -0
  279. package/src/stories/Components/DataDisplay/Avatar/Avatar.stories.tsx +19 -0
  280. package/src/stories/Components/DataDisplay/Avatar/Examples.stories.tsx +278 -0
  281. package/src/stories/Components/DataDisplay/Avatar/Overview.stories.mdx +47 -0
  282. package/src/stories/Components/DataDisplay/Chip/Accessibility.stories.mdx +29 -0
  283. package/src/stories/Components/DataDisplay/Chip/AllCombinations.tsx +58 -0
  284. package/src/stories/Components/DataDisplay/Chip/Chip.stories.tsx +21 -0
  285. package/src/stories/Components/DataDisplay/Chip/Examples.stories.tsx +126 -0
  286. package/src/stories/Components/DataDisplay/Chip/Overview.stories.mdx +57 -0
  287. package/src/stories/Components/DataDisplay/List/Accessibility.stories.mdx +54 -0
  288. package/src/stories/Components/DataDisplay/List/AllCombinations.tsx +396 -0
  289. package/src/stories/Components/DataDisplay/List/Examples.stories.tsx +501 -0
  290. package/src/stories/Components/DataDisplay/List/List.stories.tsx +35 -0
  291. package/src/stories/Components/DataDisplay/List/Overview.stories.mdx +69 -0
  292. package/src/stories/Components/DataDisplay/Table/Overview.stories.mdx +70 -0
  293. package/src/stories/Components/DataDisplay/Tooltip/Accessibility.stories.mdx +39 -0
  294. package/src/stories/Components/DataDisplay/Tooltip/AllCombinations.tsx +134 -0
  295. package/src/stories/Components/DataDisplay/Tooltip/Examples.stories.tsx +237 -0
  296. package/src/stories/Components/DataDisplay/Tooltip/Overview.stories.mdx +58 -0
  297. package/src/stories/Components/DataDisplay/Tooltip/Tooltip.stories.tsx +22 -0
  298. package/src/stories/Components/Feedback/Alert/Accessibility.stories.mdx +25 -0
  299. package/src/stories/Components/Feedback/Alert/Alert.stories.tsx +22 -0
  300. package/src/stories/Components/Feedback/Alert/AllCombinations.tsx +37 -0
  301. package/src/stories/Components/Feedback/Alert/Examples.stories.tsx +137 -0
  302. package/src/stories/Components/Feedback/Alert/Overview.stories.mdx +62 -0
  303. package/src/stories/Components/Inputs/Autocomplete/Accessibility.stories.mdx +31 -0
  304. package/src/stories/Components/Inputs/Autocomplete/AllCombinations.tsx +182 -0
  305. package/src/stories/Components/Inputs/Autocomplete/Autocomplete.stories.tsx +31 -0
  306. package/src/stories/Components/Inputs/Autocomplete/Examples.stories.tsx +233 -0
  307. package/src/stories/Components/Inputs/Autocomplete/Overview.stories.mdx +52 -0
  308. package/src/stories/Components/Inputs/Button/Accessibility.stories.mdx +52 -0
  309. package/src/stories/Components/Inputs/Button/AllCombinations.tsx +53 -0
  310. package/src/stories/Components/Inputs/Button/Button.stories.tsx +23 -0
  311. package/src/stories/Components/Inputs/Button/Examples.stories.tsx +190 -0
  312. package/src/stories/Components/Inputs/Button/Overview.stories.mdx +52 -0
  313. package/src/stories/Components/Inputs/Checkbox/Accessibility.stories.mdx +38 -0
  314. package/src/stories/Components/Inputs/Checkbox/AllCombinations.tsx +55 -0
  315. package/src/stories/Components/Inputs/Checkbox/Checkbox.stories.tsx +22 -0
  316. package/src/stories/Components/Inputs/Checkbox/Examples.stories.tsx +363 -0
  317. package/src/stories/Components/Inputs/Checkbox/Overview.stories.mdx +63 -0
  318. package/src/stories/Components/Inputs/IconButton/Examples.stories.tsx +24 -0
  319. package/src/stories/Components/Inputs/IconButton/IconButton.stories.tsx +26 -0
  320. package/src/stories/Components/Inputs/Radio/Accessibility.stories.mdx +61 -0
  321. package/src/stories/Components/Inputs/Radio/AllCombinations.tsx +75 -0
  322. package/src/stories/Components/Inputs/Radio/Examples.stories.tsx +333 -0
  323. package/src/stories/Components/Inputs/Radio/Overview.stories.mdx +74 -0
  324. package/src/stories/Components/Inputs/Radio/Radio.stories.tsx +22 -0
  325. package/src/stories/Components/Inputs/Select/Accessibility.stories.mdx +51 -0
  326. package/src/stories/Components/Inputs/Select/AllCombinations.tsx +63 -0
  327. package/src/stories/Components/Inputs/Select/Examples.stories.tsx +803 -0
  328. package/src/stories/Components/Inputs/Select/Overview.stories.mdx +73 -0
  329. package/src/stories/Components/Inputs/Select/Select.stories.tsx +22 -0
  330. package/src/stories/Components/Inputs/Slider/Accessibility.stories.mdx +43 -0
  331. package/src/stories/Components/Inputs/Slider/AllCombinations.tsx +30 -0
  332. package/src/stories/Components/Inputs/Slider/Examples.stories.tsx +146 -0
  333. package/src/stories/Components/Inputs/Slider/Overview.stories.mdx +59 -0
  334. package/src/stories/Components/Inputs/Slider/Slider.stories.tsx +27 -0
  335. package/src/stories/Components/Inputs/Switch/Accessibility.stories.mdx +34 -0
  336. package/src/stories/Components/Inputs/Switch/AllCombinations.tsx +45 -0
  337. package/src/stories/Components/Inputs/Switch/Examples.stories.tsx +213 -0
  338. package/src/stories/Components/Inputs/Switch/Overview.stories.mdx +62 -0
  339. package/src/stories/Components/Inputs/Switch/Switch.stories.tsx +22 -0
  340. package/src/stories/Components/Inputs/TextField/Accessibility.stories.mdx +29 -0
  341. package/src/stories/Components/Inputs/TextField/AllCombinations.tsx +57 -0
  342. package/src/stories/Components/Inputs/TextField/Examples.stories.tsx +127 -0
  343. package/src/stories/Components/Inputs/TextField/Overview.stories.mdx +60 -0
  344. package/src/stories/Components/Inputs/TextField/TextField.stories.tsx +261 -0
  345. package/src/stories/Components/Inputs/ToggleButton/Accessibility.stories.mdx +32 -0
  346. package/src/stories/Components/Inputs/ToggleButton/AllCombinations.tsx +113 -0
  347. package/src/stories/Components/Inputs/ToggleButton/Examples.stories.tsx +339 -0
  348. package/src/stories/Components/Inputs/ToggleButton/Overview.stories.mdx +55 -0
  349. package/src/stories/Components/Inputs/ToggleButton/ToggleButton.stories.tsx +19 -0
  350. package/src/stories/Components/Landmarks/Header/Examples.stories.tsx +197 -0
  351. package/src/stories/Components/Landmarks/Header/Header.stories.tsx +34 -0
  352. package/src/stories/Components/Landmarks/Header/Overview.stories.mdx +44 -0
  353. package/src/stories/Components/Navigation/Drawer/Accessibility.stories.mdx +13 -0
  354. package/src/stories/Components/Navigation/Drawer/Drawer.stories.tsx +80 -0
  355. package/src/stories/Components/Navigation/Drawer/Examples.stories.tsx +440 -0
  356. package/src/stories/Components/Navigation/Drawer/Overview.stories.mdx +43 -0
  357. package/src/stories/Components/Navigation/MobileNavigation/Accessibility.stories.mdx +14 -0
  358. package/src/stories/Components/Navigation/MobileNavigation/Examples.stories.tsx +384 -0
  359. package/src/stories/Components/Navigation/MobileNavigation/MobileNavigation.stories.tsx +24 -0
  360. package/src/stories/Components/Navigation/MobileNavigation/Overview.stories.mdx +47 -0
  361. package/src/stories/Components/Navigation/VerticalNavigation/Accessibility.stories.mdx +14 -0
  362. package/src/stories/Components/Navigation/VerticalNavigation/Examples.stories.tsx +307 -0
  363. package/src/stories/Components/Navigation/VerticalNavigation/Overview.stories.mdx +47 -0
  364. package/src/stories/Components/Navigation/VerticalNavigation/VerticalNavigation.stories.tsx +24 -0
  365. package/src/stories/ContactUs.stories.mdx +21 -0
  366. package/src/stories/Experimental/Test.stories.mdx +46 -0
  367. package/src/stories/GettingStarted/Designer.stories.mdx +86 -0
  368. package/src/stories/GettingStarted/Developer.stories.mdx +134 -0
  369. package/src/stories/Guidelines/Accessibility/AssistiveTechnology.stories.mdx +70 -0
  370. package/src/stories/Guidelines/Accessibility/ColorAndContrast.stories.mdx +109 -0
  371. package/src/stories/Guidelines/Accessibility/Hierarchy.stories.mdx +119 -0
  372. package/src/stories/Guidelines/Accessibility/Imagery.stories.mdx +136 -0
  373. package/src/stories/Guidelines/Accessibility/Overview.stories.mdx +44 -0
  374. package/src/stories/Guidelines/Accessibility/Principles.stories.mdx +156 -0
  375. package/src/stories/Guidelines/Accessibility/SoundAndMotion.stories.mdx +59 -0
  376. package/src/stories/Guidelines/Accessibility/Typography.stories.mdx +69 -0
  377. package/src/stories/Guidelines/Accessibility/Writing.stories.mdx +188 -0
  378. package/src/stories/Guidelines/Styleguide/ColorSwatch.tsx +53 -0
  379. package/src/stories/Guidelines/Styleguide/Colors.stories.mdx +118 -0
  380. package/src/stories/Guidelines/Styleguide/Typography.stories.mdx +84 -0
  381. package/src/stories/Introduction.stories.mdx +65 -0
  382. package/src/stories/Pages/ErrorPage.stories.tsx +30 -0
  383. package/src/stories/Pages/SideInSide.stories.tsx +195 -0
  384. package/src/stories/Roadmap.stories.mdx +19 -0
  385. package/src/stories/Templates/Login.stories.mdx +46 -0
  386. package/src/stories/assets/Atomic_Design_Icons-Dark.svg +24 -0
  387. package/src/stories/assets/Atomic_Design_Icons-Light.svg +25 -0
  388. package/src/stories/assets/accessibility-1.png +0 -0
  389. package/src/stories/assets/accessibility-2.png +0 -0
  390. package/src/stories/assets/accessibility-3.png +0 -0
  391. package/src/stories/assets/accessibility-banner.png +0 -0
  392. package/src/stories/assets/atoms.svg +6 -0
  393. package/src/stories/assets/design_system_2022-02-11_12.22pm.png +0 -0
  394. package/src/stories/assets/figma-tokens.png +0 -0
  395. package/src/stories/assets/hierarchy-1.jpg +0 -0
  396. package/src/stories/assets/hierarchy-2.jpg +0 -0
  397. package/src/stories/assets/hierarchy-3.jpg +0 -0
  398. package/src/stories/assets/icon-contrast-1.jpg +0 -0
  399. package/src/stories/assets/icon-contrast-2.jpg +0 -0
  400. package/src/stories/assets/imagery-1.png +0 -0
  401. package/src/stories/assets/imagery-2.png +0 -0
  402. package/src/stories/assets/imagery-3.png +0 -0
  403. package/src/stories/assets/imagery-4.jpg +0 -0
  404. package/src/stories/assets/molecules.svg +9 -0
  405. package/src/stories/assets/organisms.svg +22 -0
  406. package/src/stories/assets/pages.svg +5 -0
  407. package/src/stories/assets/particles.svg +4 -0
  408. package/src/stories/assets/templates.svg +4 -0
  409. package/src/stories/assets/testData.tsx +102 -0
  410. package/src/stories/assets/text-contrast-1.jpg +0 -0
  411. package/src/stories/assets/text-contrast-2.jpg +0 -0
  412. package/src/stories/assets/typography-1.png +0 -0
  413. package/src/stories/assets/visual-clues-1.png +0 -0
  414. package/src/stories/assets/visual-clues-2.png +0 -0
  415. package/src/stories/assets/writing-1.jpg +0 -0
  416. package/src/stories/assets/writing-2.png +0 -0
  417. package/src/stories/assets/writing-3.png +0 -0
  418. package/src/stories/assets/writing-4.png +0 -0
  419. package/src/stories/utils/CustomIcons.tsx +44 -0
  420. package/tsconfig.eslint.json +16 -0
  421. package/tsconfig.json +50 -0
  422. package/components/navigation/MobileNavigation/MobileNavigationAvatarStyles.d.ts +0 -827
  423. package/components/navigation/MobileNavigation/MobileNavigationDrawer.js +0 -147
  424. package/components/navigation/MobileNavigation/MobileNavigationDrawerStyles.d.ts +0 -392
  425. package/components/navigation/MobileNavigation/MobileNavigationNotchIndicator.d.ts +0 -3
  426. package/components/navigation/MobileNavigation/MobileNavigationNotchIndicator.js +0 -31
  427. package/components/navigation/MobileNavigation/MobileNavigationSearchStyles.d.ts +0 -257
  428. package/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.d.ts +0 -3
  429. package/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.js +0 -33
  430. package/components/navigation/MobileNavigation/MobileNavigationToggleX.d.ts +0 -3
  431. package/components/navigation/MobileNavigation/MobileNavigationToggleX.js +0 -27
  432. package/components/navigation/MobileNavigation/MobileNavigationToggleXStyles.d.ts +0 -36
  433. package/components/navigation/MobileNavigation/MobileNavigationToggleXStyles.js +0 -10
  434. package/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.d.ts +0 -827
  435. package/components/navigation/VerticalNavigation/VerticalNavigationStyles.d.ts +0 -88
  436. package/utils/helpers.d.ts +0 -6
  437. package/utils/helpers.js +0 -17
@@ -0,0 +1,139 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import Alert from './Alert'
5
+ import AlertTitle from '@mui/material/AlertTitle'
6
+ import CheckIcon from '@mui/icons-material/Check'
7
+ import Button from '../../../../lib/components/atoms/Button/Button'
8
+
9
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
10
+ // unmount and cleanup DOM after the test is finished.
11
+ afterEach(cleanup)
12
+
13
+ describe('Test -- Alert component', () => {
14
+ it('renders a Alert', () => {
15
+ render(<Alert severity="error">This is an error</Alert>)
16
+
17
+ expect(screen.getByRole('alert')).toMatchInlineSnapshot(`
18
+ <div
19
+ class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation0 MuiAlert-root MuiAlert-standardError MuiAlert-standard css-xilmwd-MuiPaper-root-MuiAlert-root"
20
+ role="alert"
21
+ >
22
+ <div
23
+ class="MuiAlert-icon css-1ytlwq5-MuiAlert-icon"
24
+ >
25
+ <svg
26
+ aria-hidden="true"
27
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeInherit css-1vooibu-MuiSvgIcon-root"
28
+ data-testid="ErrorOutlineIcon"
29
+ focusable="false"
30
+ viewBox="0 0 24 24"
31
+ >
32
+ <path
33
+ d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
34
+ />
35
+ </svg>
36
+ </div>
37
+ <div
38
+ class="MuiAlert-message css-1pxa9xg-MuiAlert-message"
39
+ >
40
+ This is an error
41
+ </div>
42
+ </div>
43
+ `)
44
+ })
45
+
46
+ it('renders a visible description', () => {
47
+ render(
48
+ <Alert>
49
+ <AlertTitle>AlertTitle Test</AlertTitle>
50
+ This is an alert
51
+ </Alert>
52
+ )
53
+
54
+ expect(screen.getByText('AlertTitle Test')).toBeVisible()
55
+ })
56
+
57
+ it('renders the proper icons', () => {
58
+ // Check error icon
59
+ const { rerender } = render(
60
+ <Alert severity="error">This is an alert</Alert>
61
+ )
62
+ expect(screen.getByTestId('ErrorOutlineIcon')).toBeVisible()
63
+
64
+ // Check warning icon
65
+ rerender(<Alert severity="warning">This is an alert</Alert>)
66
+ expect(screen.getByTestId('ReportProblemOutlinedIcon')).toBeVisible()
67
+
68
+ // Check info icon
69
+ rerender(<Alert severity="info">This is an alert</Alert>)
70
+ expect(screen.getByTestId('InfoOutlinedIcon')).toBeVisible()
71
+
72
+ // Check success icon
73
+ rerender(<Alert severity="success">This is an alert</Alert>)
74
+ expect(screen.getByTestId('SuccessOutlinedIcon')).toBeVisible()
75
+
76
+ // Check custom icon
77
+ rerender(
78
+ <Alert icon={<CheckIcon fontSize="inherit" />}>This is an alert</Alert>
79
+ )
80
+ expect(screen.getByTestId('CheckIcon')).toBeVisible()
81
+ })
82
+
83
+ it('renders the proper action elements', () => {
84
+ // Check action renders Button
85
+ const { rerender } = render(
86
+ <Alert action={<Button data-testid="AlertTest">UNDO</Button>}>
87
+ This is an alert
88
+ </Alert>
89
+ )
90
+ expect(screen.getByTestId('AlertTest')).toBeVisible()
91
+
92
+ // Check onClose renders icon
93
+ rerender(<Alert onClose={() => {}}>This is an alert</Alert>)
94
+ expect(screen.getByTestId('CloseIcon')).toBeVisible()
95
+ })
96
+
97
+ it('responds to a delete click event', () => {
98
+ const mockCallBack = jest.fn()
99
+ render(<Alert onClose={mockCallBack}>This is an alert</Alert>)
100
+ userEvent.click(screen.getByRole('button'))
101
+ expect(mockCallBack.mock.calls.length).toEqual(1)
102
+ })
103
+
104
+ it('has the proper attributes', () => {
105
+ // Check the role attribute
106
+ const { rerender } = render(
107
+ <Alert data-testid="AlertTest">This is an alert</Alert>
108
+ )
109
+ expect(screen.getByTestId('AlertTest')).toHaveAttribute('role', 'alert')
110
+
111
+ // Check the action button attributes
112
+ rerender(
113
+ <Alert
114
+ data-testid="AlertTest"
115
+ action={<Button data-testid="AlertTestButton">UNDO</Button>}
116
+ >
117
+ This is an alert
118
+ </Alert>
119
+ )
120
+ expect(screen.getByTestId('AlertTestButton')).toBeVisible()
121
+ expect(screen.getByTestId('AlertTestButton')).toHaveAttribute(
122
+ 'type',
123
+ 'button'
124
+ )
125
+ expect(screen.getByTestId('AlertTestButton')).toHaveAttribute(
126
+ 'tabindex',
127
+ '0'
128
+ )
129
+
130
+ // Check the onClose attributes
131
+ rerender(<Alert onClose={() => {}}>This is an alert</Alert>)
132
+ expect(screen.getByLabelText('Close')).toBeVisible()
133
+ expect(screen.getByLabelText('Close')).toHaveAttribute(
134
+ 'aria-label',
135
+ 'Close'
136
+ )
137
+ expect(screen.getByLabelText('Close')).toHaveAttribute('tabindex', '0')
138
+ })
139
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUIAlert, { AlertProps } from '@mui/material/Alert'
3
+
4
+ interface IAlertProps extends AlertProps {}
5
+
6
+ export default function Alert ({ ...rest }: IAlertProps): JSX.Element {
7
+ return (
8
+ <MUIAlert {...rest} />
9
+ )
10
+ }
@@ -0,0 +1,140 @@
1
+ import React, { useEffect } from 'react'
2
+ import Button from '@mui/material/Button'
3
+ import Link from '@mui/material/Link'
4
+ import Typography from '@mui/material/Typography'
5
+ import useMediaQuery from '@mui/material/useMediaQuery'
6
+ import useTheme from '@mui/material/styles/useTheme'
7
+ import HeaderActionButtons from './HeaderActionButtons'
8
+ import { StyledAdditionalButtonsContainer, StyledBreadcrumbs, StyledHeaderPrimary, StyledHeaderSecondary, StyledPaper } from './HeaderStyles'
9
+ import { DEFAULT_MAX_CHARACTERS_PER_LINE } from '../../../utils/constants'
10
+
11
+ interface AdditionalButtonItemProps {
12
+ label: string
13
+ onClick?: any
14
+ icon?: React.ReactElement
15
+ hide?: boolean
16
+ }
17
+
18
+ interface BreadcrumbItemProps {
19
+ label: string
20
+ href: string
21
+ color?: string
22
+ }
23
+
24
+ interface HeaderProps {
25
+ title: string
26
+ titleComponent?: React.ElementType<any>
27
+ maxCharactersPerLine?: number
28
+ subtitle?: string
29
+ callToAction?: any
30
+ callToActionComponent?: 'button' | 'link' | string
31
+ additionalButtons?: AdditionalButtonItemProps[]
32
+ isSticky?: boolean
33
+
34
+ // Breadcrumbs
35
+ breadcrumbItems?: BreadcrumbItemProps[]
36
+ maxBreadcumbItems?: number
37
+ }
38
+
39
+ const Header = (
40
+ props: HeaderProps
41
+ ): React.ReactElement => {
42
+ const {
43
+ title, subtitle, breadcrumbItems, maxBreadcumbItems,
44
+ callToAction, callToActionComponent, isSticky, titleComponent,
45
+ maxCharactersPerLine, ...rest
46
+ } = props
47
+ let { additionalButtons } = props
48
+ const theme = useTheme()
49
+ const isMediumAndUp = useMediaQuery(theme.breakpoints.up('md'))
50
+
51
+ useEffect(() => {
52
+ if (!callToAction) {
53
+ return
54
+ }
55
+
56
+ callToAction.hide = isMediumAndUp
57
+
58
+ // No additional buttons exist so CallToAction is the only item in the list
59
+ if (!additionalButtons || additionalButtons.length === 0) {
60
+ if (callToAction) {
61
+ additionalButtons = []
62
+ additionalButtons.push(callToAction)
63
+ return
64
+ }
65
+ }
66
+
67
+ // Additional buttons exist so add the CallToAction as the first item in the list
68
+ if (additionalButtons && additionalButtons.length > 0) {
69
+ const callToActionIndex = additionalButtons.indexOf(callToAction)
70
+ const hasCallToActionInArray = callToActionIndex !== -1
71
+
72
+ if (!hasCallToActionInArray) {
73
+ // Add the CallToAction item to the top of the Menu
74
+ additionalButtons.splice(0, 0, callToAction)
75
+ }
76
+
77
+ if (hasCallToActionInArray) {
78
+ // Show or hide the CallToAction item based on 'isMediumAndUp'
79
+ additionalButtons[callToActionIndex].hide = callToAction.hide
80
+ }
81
+ }
82
+ }, [props.additionalButtons, isMediumAndUp])
83
+
84
+ return (
85
+ <StyledPaper
86
+ {...rest}
87
+ elevation={0}
88
+ className={`${isSticky && 'is-sticky'}`}
89
+ >
90
+ <StyledHeaderPrimary>
91
+ {breadcrumbItems && breadcrumbItems.length > 0 && (
92
+ <StyledBreadcrumbs
93
+ maxItems={maxBreadcumbItems ?? 2}
94
+ aria-label='breadcrumb'
95
+ separator={theme.direction === 'ltr' ? '/' : '\\'}
96
+ >
97
+ {breadcrumbItems.map(breadcrumbItem => (
98
+ <Link
99
+ underline='hover'
100
+ color={breadcrumbItem.color ?? 'inherit'}
101
+ href={breadcrumbItem.href}
102
+ >
103
+ {breadcrumbItem.label}
104
+ </Link>
105
+ ))}
106
+ </StyledBreadcrumbs>
107
+ )}
108
+
109
+ <Typography
110
+ component={titleComponent ?? 'h1'}
111
+ // Good support for 'ch' https://caniuse.com/ch-unit
112
+ style={{ maxWidth: `${maxCharactersPerLine ?? DEFAULT_MAX_CHARACTERS_PER_LINE}ch` }}
113
+ >{title}</Typography>
114
+ {subtitle && (
115
+ <Typography
116
+ component='h2'
117
+ variant='subtitle1'
118
+ color={theme.palette.text.secondary}
119
+ style={{ maxWidth: `${maxCharactersPerLine ?? DEFAULT_MAX_CHARACTERS_PER_LINE}ch` }}
120
+ >{subtitle}</Typography>
121
+ )}
122
+ </StyledHeaderPrimary>
123
+
124
+ <StyledHeaderSecondary>
125
+ {isMediumAndUp && callToAction && (
126
+ callToActionComponent && callToActionComponent === 'link'
127
+ ? <Button href='#' startIcon={callToAction.icon ?? null}>{callToAction.label}</Button>
128
+ : <Button startIcon={callToAction.icon ?? null} variant='contained'>{callToAction.label}</Button>
129
+ )}
130
+ {additionalButtons && additionalButtons.length > 0 && (
131
+ <StyledAdditionalButtonsContainer>
132
+ <HeaderActionButtons forceListView options={additionalButtons} />
133
+ </StyledAdditionalButtonsContainer>
134
+ )}
135
+ </StyledHeaderSecondary>
136
+ </StyledPaper>
137
+ )
138
+ }
139
+
140
+ export default Header
@@ -0,0 +1,117 @@
1
+ import { useState } from 'react'
2
+ import Icon from '@mui/material/Icon'
3
+ import Menu from '@mui/material/Menu'
4
+ import MenuItem from '@mui/material/MenuItem'
5
+ import IconButton from '@mui/material/IconButton'
6
+ import Tooltip from '@mui/material/Tooltip'
7
+ import MoreVertIcon from '@mui/icons-material/MoreVert'
8
+
9
+ const MAX_ICONS = 0
10
+
11
+ const HeaderActionButtons = (props: any) => {
12
+ const { options, styles, forceListView } = props
13
+ const [anchorEl, setAnchorEl] = useState(null)
14
+
15
+ const handleClick = (event: any) => {
16
+ event?.stopPropagation()
17
+ setAnchorEl(event.currentTarget)
18
+ }
19
+
20
+ const handleClose = (event: any) => {
21
+ event?.stopPropagation()
22
+ setAnchorEl(null)
23
+ }
24
+
25
+ const handleOptionClick = (event: any, option: any) => {
26
+ event?.stopPropagation()
27
+ option?.onClick()
28
+ handleClose(event)
29
+ }
30
+
31
+ if (!options) {
32
+ console.log('Did you mean to pass items using the `options` parameter?')
33
+ return null
34
+ }
35
+
36
+ // Show icon buttons if less than MAX_ICONS
37
+ if (options.length <= MAX_ICONS && !forceListView) {
38
+ return (
39
+ <div style={styles}>
40
+ {options.map((option: any) => {
41
+ const { label, icon, onClick } = option
42
+ const handleOptionClick = onClick
43
+
44
+ return (
45
+ <Tooltip
46
+ key={label}
47
+ title={label}
48
+ aria-label={label}
49
+ placement='bottom'
50
+ enterDelay={500}
51
+ enterNextDelay={50}
52
+ leaveDelay={50}
53
+ disableInteractive
54
+ >
55
+ <IconButton
56
+ size='small'
57
+ aria-label={label}
58
+ onClick={handleOptionClick}
59
+ >
60
+ <Icon>{icon}</Icon>
61
+ </IconButton>
62
+ </Tooltip>
63
+ )
64
+ })}
65
+ </div>
66
+ )
67
+ }
68
+
69
+ // Show menu and v-ellipsis if more than MAX_ICONS
70
+ return (
71
+ <div style={styles}>
72
+ <IconButton
73
+ aria-label='more'
74
+ aria-haspopup='true'
75
+ onClick={handleClick}
76
+ >
77
+ <MoreVertIcon />
78
+ </IconButton>
79
+ <Menu
80
+ id='actionButtonMenu'
81
+ anchorEl={anchorEl}
82
+ open={Boolean(anchorEl)}
83
+ onClose={handleClose}
84
+ anchorOrigin={{
85
+ vertical: 'bottom',
86
+ horizontal: 'center'
87
+ }}
88
+ // getContentAnchorEl={null}
89
+ transformOrigin={{
90
+ vertical: 'top',
91
+ horizontal: 'center'
92
+ }}
93
+ >
94
+ {options.map((option: any) => {
95
+ const { label, isDisabled, actionKey, hide } = option
96
+
97
+ if (hide) {
98
+ return null
99
+ }
100
+
101
+ return (
102
+ <MenuItem
103
+ key={actionKey}
104
+ onClick={event => handleOptionClick(event, option)}
105
+ aria-label={label}
106
+ disabled={isDisabled}
107
+ >
108
+ {label}
109
+ </MenuItem>
110
+ )
111
+ })}
112
+ </Menu>
113
+ </div>
114
+ )
115
+ }
116
+
117
+ export default HeaderActionButtons
@@ -0,0 +1,62 @@
1
+ import { Box, Paper } from '../../../index'
2
+ import { Breadcrumbs, styled } from '@mui/material'
3
+
4
+ export const StyledPaper = styled(Paper)`
5
+ display: flex;
6
+ flex-direction: ${props => props.theme.direction === 'ltr' ? 'row' : 'row-reverse'};
7
+ position: relative;
8
+ width: 100%;
9
+
10
+ &.is-sticky {
11
+ position: sticky;
12
+ top: 0;
13
+ z-index: 1;
14
+ }
15
+ `
16
+
17
+ export const StyledBreadcrumbs = styled(Breadcrumbs)`
18
+ font-size: ${props => props.theme.typography.subtitle2.fontSize};
19
+ margin-bottom: 0.5rem;
20
+
21
+ ol {
22
+ flex-direction: ${props => props.theme.direction === 'ltr' ? 'row' : 'row-reverse'};
23
+ }
24
+ `
25
+
26
+ export const StyledHeaderPrimary = styled(Box)`
27
+ align-items: ${props => props.theme.direction === 'ltr' ? 'flex-start' : 'flex-end'};
28
+ display: flex;
29
+ flex: 1 auto;
30
+ flex-direction: column;
31
+ padding: 1rem;
32
+ padding-inline-start: 2rem;
33
+
34
+ h1,
35
+ h4 {
36
+ font-size: clamp(1.125rem, 3.25vw, 2.75rem);
37
+ text-align: ${props => props.theme.direction === 'ltr' ? 'left' : 'right'};
38
+ }
39
+ `
40
+
41
+ export const StyledHeaderSecondary = styled(Box)`
42
+ align-items: center;
43
+ display: flex;
44
+ flex-direction: ${props => props.theme.direction === 'ltr' ? 'row' : 'row-reverse'};
45
+ justify-content: flex-end;
46
+ padding: 1rem;
47
+ padding-inline-end: 2rem;
48
+
49
+ button,
50
+ a {
51
+ white-space: nowrap;
52
+ }
53
+ `
54
+
55
+ export const StyledAdditionalButtonsContainer = styled(Box)`
56
+ margin-inline-start: ${props => props.theme.direction === 'ltr' ? '0.5rem' : '0'};
57
+ margin-inline-end: ${props => props.theme.direction === 'rtl' ? '0.5rem' : '0'};
58
+ `
59
+
60
+ export const StyledBox = styled(Box)`
61
+ background: ${props => props.theme.palette.background.default};
62
+ `
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ import React from 'react'
6
+ import { cleanup, render, screen } from '@testing-library/react'
7
+ import userEvent from '@testing-library/user-event'
8
+ import { Drawer } from '../../../../lib'
9
+
10
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
11
+ // unmount and cleanup DOM after the test is finished.
12
+ afterEach(cleanup)
13
+
14
+ describe('Test -- Drawer component', () => {
15
+ it('renders a Drawer', () => {
16
+ render(
17
+ <Drawer open={true} data-testid="DrawerTest">
18
+ Test
19
+ </Drawer>
20
+ )
21
+
22
+ expect(screen.getByTestId('DrawerTest')).toMatchInlineSnapshot(`
23
+ <div
24
+ class="MuiDrawer-root MuiDrawer-modal MuiModal-root css-11wwa2f-MuiModal-root-MuiDrawer-root"
25
+ data-testid="DrawerTest"
26
+ role="presentation"
27
+ >
28
+ <div
29
+ aria-hidden="true"
30
+ class="MuiBackdrop-root css-i9fmh8-MuiBackdrop-root-MuiModal-backdrop"
31
+ style="opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"
32
+ />
33
+ <div
34
+ data-test="sentinelStart"
35
+ tabindex="0"
36
+ />
37
+ <div
38
+ class="MuiPaper-root MuiPaper-elevation MuiPaper-elevation16 MuiDrawer-paper MuiDrawer-paperAnchorLeft css-4t3x6l-MuiPaper-root-MuiDrawer-paper"
39
+ tabindex="-1"
40
+ >
41
+ Test
42
+ </div>
43
+ <div
44
+ data-test="sentinelEnd"
45
+ tabindex="0"
46
+ />
47
+ </div>
48
+ `)
49
+ })
50
+
51
+ it('should be closed by default', () => {
52
+ render(
53
+ <div data-testid="parent">
54
+ <Drawer>Test</Drawer>
55
+ </div>
56
+ )
57
+
58
+ const parent = screen.getByTestId('parent')
59
+ expect(parent).toBeEmptyDOMElement()
60
+ })
61
+
62
+ it('renders a persistant drawer', () => {
63
+ render(
64
+ <Drawer variant="persistent" data-testid="test">
65
+ Test
66
+ </Drawer>
67
+ )
68
+
69
+ const drawer = screen.getByTestId('test')
70
+ expect(drawer).toBeInTheDocument()
71
+ })
72
+
73
+ it('responds to a onClick event', () => {
74
+ const mockCallBack = jest.fn()
75
+ render(
76
+ <Drawer open={true} onClick={mockCallBack} data-testid="DrawerTest">
77
+ Test
78
+ </Drawer>
79
+ )
80
+
81
+ userEvent.click(screen.getByTestId('DrawerTest'))
82
+ expect(mockCallBack.mock.calls.length).toEqual(1)
83
+ })
84
+
85
+ it('has the proper tabindex', () => {
86
+ render(
87
+ <Drawer open={true} data-testid="DrawerTest">
88
+ Test
89
+ </Drawer>
90
+ )
91
+
92
+ const drawer = screen.getByText('Test')
93
+ expect(drawer).toHaveAttribute('tabindex', '-1')
94
+ })
95
+ })
@@ -0,0 +1,21 @@
1
+ import React from 'react'
2
+ import MUIDrawer, { DrawerProps } from '@mui/material/Drawer'
3
+ import { styled } from '@mui/material/styles'
4
+
5
+ interface IDrawerProps extends DrawerProps {
6
+ component?: string | JSX.Element
7
+ }
8
+
9
+ const StyledDrawer = styled(MUIDrawer)(({ theme }) => ({}))
10
+
11
+ const Drawer = React.forwardRef((
12
+ { ...rest }: IDrawerProps,
13
+ ref: React.Ref<HTMLDivElement>
14
+ ): JSX.Element => (
15
+ <StyledDrawer
16
+ {...rest}
17
+ ref={ref}
18
+ />
19
+ ))
20
+
21
+ export default Drawer