@learningpool/ui 1.6.0-beta.9 → 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 (439) 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/dist/components/landmarks/Header/Header.d.ts +26 -0
  51. package/dist/components/landmarks/Header/Header.js +75 -0
  52. package/dist/components/landmarks/Header/HeaderActionButtons.d.ts +3 -0
  53. package/dist/components/landmarks/Header/HeaderActionButtons.js +66 -0
  54. package/dist/components/landmarks/Header/HeaderStyles.d.ts +55 -0
  55. package/dist/components/landmarks/Header/HeaderStyles.js +13 -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 +1 -2
  59. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigation.js +56 -86
  60. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationAvatar.d.ts +1 -1
  61. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationAvatar.js +45 -23
  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 +1 -1
  73. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemFlyoutMenuStyles.js +0 -0
  74. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationItem/MobileNavigationItemStyles.d.ts +1 -1
  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/navigation/VerticalNavigation/VerticalNavigationStyles.d.ts → dist/components/navigation/MobileNavigation/MobileNavigationStyles.d.ts} +66 -3
  85. package/{components → dist/components}/navigation/MobileNavigation/MobileNavigationStyles.js +19 -24
  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 +3 -3
  91. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigation.js +22 -25
  92. package/dist/components/navigation/VerticalNavigation/VerticalNavigationAvatar.d.ts +4 -0
  93. package/dist/components/navigation/VerticalNavigation/VerticalNavigationAvatar.js +79 -0
  94. package/dist/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.d.ts +3296 -0
  95. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.js +5 -5
  96. package/dist/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.d.ts +4 -0
  97. package/dist/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.js +99 -0
  98. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.d.ts +1 -1
  99. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.js +1 -1
  100. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.d.ts +1 -1
  101. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.js +0 -0
  102. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.d.ts +1 -3
  103. package/{components → dist/components}/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.js +3 -5
  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 +5 -4
  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 +1 -9
  117. package/{components → dist/components}/stream/AppSwitcher/AppSwitcher.js +6 -6
  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 +2 -2
  121. package/{components → dist/components}/stream/AppSwitcher/AppSwitcherStyles.js +16 -16
  122. package/{components → dist/components}/stream/AppSwitcher/constants.d.ts +0 -0
  123. package/{components → dist/components}/stream/AppSwitcher/constants.js +2 -2
  124. package/{index.d.ts → dist/index.d.ts} +1 -0
  125. package/{index.js → dist/index.js} +1 -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/dist/types/components/navigation/VerticalNavigation.d.ts +49 -0
  130. package/dist/types/components/navigation/VerticalNavigation.js +1 -0
  131. package/{components/navigation/VerticalNavigation → dist/types/components/navigation}/VerticalNavigationAvatar.d.ts +3 -4
  132. package/dist/types/components/navigation/VerticalNavigationAvatar.js +1 -0
  133. package/dist/types/components/stream/AppSwitcher.d.ts +9 -0
  134. package/dist/types/components/stream/AppSwitcher.js +1 -0
  135. package/dist/types/index.d.ts +3 -0
  136. package/dist/types/index.js +3 -0
  137. package/{utils → dist/utils}/constants.d.ts +1 -0
  138. package/dist/utils/constants.js +9 -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 +2 -2
  146. package/{utils → dist/utils}/theme.js +3 -3
  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 +72 -5
  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 -148
  424. package/components/navigation/MobileNavigation/MobileNavigationDrawerStyles.d.ts +0 -392
  425. package/components/navigation/MobileNavigation/MobileNavigationSearchStyles.d.ts +0 -257
  426. package/components/navigation/MobileNavigation/MobileNavigationStyles.d.ts +0 -405
  427. package/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.d.ts +0 -2
  428. package/components/navigation/MobileNavigation/MobileNavigationToggleSearchX.js +0 -32
  429. package/components/navigation/MobileNavigation/MobileNavigationToggleX.d.ts +0 -2
  430. package/components/navigation/MobileNavigation/MobileNavigationToggleX.js +0 -26
  431. package/components/navigation/MobileNavigation/MobileNavigationToggleXStyles.d.ts +0 -36
  432. package/components/navigation/MobileNavigation/MobileNavigationToggleXStyles.js +0 -10
  433. package/components/navigation/VerticalNavigation/VerticalNavigationAvatar.js +0 -84
  434. package/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.d.ts +0 -827
  435. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.d.ts +0 -19
  436. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.js +0 -91
  437. package/utils/constants.js +0 -6
  438. package/utils/helpers.d.ts +0 -6
  439. package/utils/helpers.js +0 -17
@@ -0,0 +1,166 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import Button from './Button'
5
+ // import AllCombinations from "./AllCombinations";
6
+ import DeleteIcon from '@mui/icons-material/Delete'
7
+
8
+ /*
9
+
10
+ 1. Displays a label
11
+ 2. Conforms to accessibility
12
+ 3. (multiple tests) renders differently based on props
13
+ a. Renders button with startIcon
14
+ b. Renders button with endIcon
15
+ 4. Calls a function onClick
16
+
17
+ */
18
+
19
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
20
+ // unmount and cleanup DOM after the test is finished.
21
+ afterEach(cleanup)
22
+
23
+ describe('Test -- Button component', () => {
24
+ it('renders button text', () => {
25
+ render(<Button>Button</Button>)
26
+
27
+ expect(screen.getByText(/Button/i)).toMatchInlineSnapshot(`
28
+ <button
29
+ class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-disableElevation css-zddlty-MuiButtonBase-root-MuiButton-root"
30
+ tabindex="0"
31
+ type="button"
32
+ >
33
+ Button
34
+ <span
35
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
36
+ />
37
+ </button>
38
+ `)
39
+ })
40
+
41
+ it('renders button with startIcon', () => {
42
+ render(
43
+ <Button data-testid="Button" startIcon={<DeleteIcon />}>
44
+ Button
45
+ </Button>
46
+ )
47
+
48
+ expect(screen.getByTestId('Button')).toMatchInlineSnapshot(`
49
+ <button
50
+ class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-disableElevation css-zddlty-MuiButtonBase-root-MuiButton-root"
51
+ data-testid="Button"
52
+ tabindex="0"
53
+ type="button"
54
+ >
55
+ <span
56
+ class="MuiButton-startIcon MuiButton-iconSizeMedium css-1d6wzja-MuiButton-startIcon"
57
+ >
58
+ <svg
59
+ aria-hidden="true"
60
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
61
+ data-testid="DeleteIcon"
62
+ focusable="false"
63
+ viewBox="0 0 24 24"
64
+ >
65
+ <path
66
+ d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"
67
+ />
68
+ </svg>
69
+ </span>
70
+ Button
71
+ <span
72
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
73
+ />
74
+ </button>
75
+ `)
76
+ })
77
+
78
+ it('responds to a click event', () => {
79
+ const mockCallBack = jest.fn()
80
+ render(
81
+ <Button data-testid="Button" onClick={mockCallBack}>
82
+ Ok!
83
+ </Button>
84
+ )
85
+
86
+ userEvent.click(screen.getByTestId('Button'))
87
+
88
+ expect(mockCallBack.mock.calls.length).toEqual(1)
89
+ })
90
+
91
+ it('has the proper aria attributes', () => {
92
+ const { rerender } = render(<Button>Hello</Button>)
93
+
94
+ // button has role="button"
95
+ let button = screen.getByRole('button')
96
+ expect(button).not.toHaveAttribute('aria-disabled')
97
+
98
+ // isLoading sets aria-disabled="true"
99
+ // rerender(<Button isLoading>Hello</Button>)
100
+ // button = screen.getByRole("button")
101
+ // expect(button).toHaveAttribute("data-loading", "")
102
+
103
+ // isDisabled sets aria-disabled="true"
104
+ rerender(<Button disabled>Hello</Button>)
105
+ button = screen.getByRole('button')
106
+ expect(button).toHaveAttribute('disabled', '')
107
+ })
108
+
109
+ it('has the proper type attribute', () => {
110
+ const { rerender } = render(<Button data-testid="btn">Email</Button>)
111
+ expect(screen.getByTestId('btn')).toHaveAttribute('type', 'button')
112
+
113
+ rerender(
114
+ <Button data-testid="btn" type="submit">
115
+ Email
116
+ </Button>
117
+ )
118
+ expect(screen.getByTestId('btn')).toHaveAttribute('type', 'submit')
119
+
120
+ rerender(
121
+ <Button data-testid="btn" component="button">
122
+ Email
123
+ </Button>
124
+ )
125
+ expect(screen.getByTestId('btn')).toMatchInlineSnapshot(`
126
+ <button
127
+ class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-disableElevation css-zddlty-MuiButtonBase-root-MuiButton-root"
128
+ data-testid="btn"
129
+ tabindex="0"
130
+ type="button"
131
+ >
132
+ Email
133
+ <span
134
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
135
+ />
136
+ </button>
137
+ `)
138
+ expect(screen.getByTestId('btn')).toHaveAttribute('type')
139
+
140
+ rerender(
141
+ <Button data-testid="btn" component="span">
142
+ Email
143
+ </Button>
144
+ )
145
+ expect(screen.getByTestId('btn')).not.toHaveAttribute('type')
146
+ })
147
+
148
+ it('should be disabled', () => {
149
+ render(
150
+ <Button disabled data-testid="btn">
151
+ I'm a invalid button
152
+ </Button>
153
+ )
154
+ const button = screen.getByRole('button')
155
+ expect(button).toBeDisabled()
156
+ })
157
+
158
+ it('should take up full width', () => {
159
+ render(
160
+ <Button fullWidth data-testid="btn">
161
+ i'm a big button
162
+ </Button>
163
+ )
164
+ expect(screen.getByRole('button')).toHaveStyle('width: 100%')
165
+ })
166
+ })
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import MUIButton, { ButtonProps } from '@mui/material/Button'
3
+
4
+ const Button = React.forwardRef((
5
+ props: ButtonProps,
6
+ ref: React.Ref<HTMLButtonElement>
7
+ ): JSX.Element => (
8
+ <MUIButton
9
+ disableElevation
10
+ variant='contained'
11
+ {...props}
12
+ ref={ref}
13
+ />
14
+ ))
15
+
16
+ export default Button
@@ -0,0 +1,85 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import '@testing-library/jest-dom'
4
+ import userEvent from '@testing-library/user-event'
5
+ import Checkbox from './Checkbox'
6
+
7
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
8
+ // unmount and cleanup DOM after the test is finished.
9
+ afterEach(cleanup)
10
+
11
+ describe('Test -- Checkbox component', () => {
12
+ it('renders checkbox', () => {
13
+ render(<Checkbox />)
14
+
15
+ const buttonIcon = screen.getByTestId('CheckBoxOutlineBlankIcon')
16
+
17
+ expect(buttonIcon).toMatchInlineSnapshot(`
18
+ <svg
19
+ aria-hidden="true"
20
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
21
+ data-testid="CheckBoxOutlineBlankIcon"
22
+ focusable="false"
23
+ viewBox="0 0 24 24"
24
+ >
25
+ <path
26
+ d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
27
+ />
28
+ </svg>
29
+ `)
30
+ })
31
+
32
+ it('responds to a click event', () => {
33
+ const mockCallBack = jest.fn()
34
+ render(<Checkbox onClick={mockCallBack} data-testid="checkboxTest" />)
35
+
36
+ userEvent.click(screen.getByTestId('checkboxTest'))
37
+ expect(mockCallBack.mock.calls.length).toEqual(1)
38
+ })
39
+
40
+ it('changes checked state on click', () => {
41
+ render(<Checkbox />)
42
+ const checkboxTest = screen.getByRole('checkbox')
43
+
44
+ // Check initial state
45
+ expect(checkboxTest).not.toBeChecked()
46
+
47
+ // Check state after click
48
+ userEvent.click(checkboxTest)
49
+ expect(checkboxTest).toBeChecked()
50
+ })
51
+
52
+ it('should be disabled', () => {
53
+ render(<Checkbox disabled />)
54
+
55
+ const checkboxTest = screen.getByRole('checkbox')
56
+ expect(checkboxTest).toBeDisabled()
57
+ })
58
+
59
+ it('has the proper aria attributes', () => {
60
+ const { rerender } = render(
61
+ <Checkbox inputProps={{ 'aria-label': 'test label' }} />
62
+ )
63
+
64
+ // Default Checkbox has proper aria attributes
65
+ const checkboxInput = screen.getByRole('checkbox')
66
+ expect(checkboxInput).toHaveAttribute('aria-label', 'test label')
67
+ expect(checkboxInput).not.toHaveAttribute('aria-disabled')
68
+
69
+ // Disabled Checkbox has proper aria attribute
70
+ rerender(<Checkbox data-testid="checkboxTest" disabled />)
71
+ const checkboxSpan = screen.getByTestId('checkboxTest')
72
+ expect(checkboxSpan).toHaveAttribute('aria-disabled')
73
+ })
74
+
75
+ it('has the proper type attribute', () => {
76
+ render(<Checkbox />)
77
+ expect(screen.getByRole('checkbox')).toHaveAttribute('type', 'checkbox')
78
+ })
79
+
80
+ it('changes color', () => {
81
+ // Color prop changes css class
82
+ render(<Checkbox data-testid="checkboxTest" color="success" />)
83
+ expect(screen.getByTestId('checkboxTest')).toHaveClass('MuiCheckbox-colorSuccess')
84
+ })
85
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUICheckbox, { CheckboxProps } from '@mui/material/Checkbox'
3
+
4
+ interface ICheckboxProps extends CheckboxProps {}
5
+
6
+ export default function Checkbox ({ ...rest }: ICheckboxProps): JSX.Element {
7
+ return (
8
+ <MUICheckbox {...rest} />
9
+ )
10
+ }
@@ -0,0 +1,60 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import '@testing-library/jest-dom'
4
+ import userEvent from '@testing-library/user-event'
5
+ import IconButton from './IconButton'
6
+ import DeleteIcon from '@mui/icons-material/Delete'
7
+
8
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
9
+ // unmount and cleanup DOM after the test is finished.
10
+ afterEach(cleanup)
11
+
12
+ describe('Test -- Icon Button component', () => {
13
+ it('renders button icon', () => {
14
+ render(
15
+ <IconButton>
16
+ <DeleteIcon />
17
+ </IconButton>
18
+ )
19
+
20
+ const buttonIcon = screen.getByTestId('DeleteIcon')
21
+
22
+ expect(buttonIcon).toMatchInlineSnapshot(`
23
+ <svg
24
+ aria-hidden="true"
25
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
26
+ data-testid="DeleteIcon"
27
+ focusable="false"
28
+ viewBox="0 0 24 24"
29
+ >
30
+ <path
31
+ d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"
32
+ />
33
+ </svg>
34
+ `)
35
+ })
36
+
37
+ it('responds to a click event', () => {
38
+ const mockCallBack = jest.fn()
39
+ render(
40
+ <IconButton onClick={mockCallBack}>
41
+ <DeleteIcon />
42
+ </IconButton>
43
+ )
44
+
45
+ userEvent.click(screen.getByTestId('DeleteIcon'))
46
+
47
+ expect(mockCallBack.mock.calls.length).toEqual(1)
48
+ })
49
+
50
+ it('has the proper aria attribute', () => {
51
+ render(
52
+ <IconButton aria-label="delete" data-testid="IconButtonTest">
53
+ <DeleteIcon />
54
+ </IconButton>
55
+ )
56
+
57
+ const checkboxInput = screen.getByTestId('IconButtonTest')
58
+ expect(checkboxInput).toHaveAttribute('aria-label', 'delete')
59
+ })
60
+ })
@@ -0,0 +1,9 @@
1
+ import React from 'react'
2
+ import MUIIconButton, { IconButtonProps } from '@mui/material/IconButton'
3
+
4
+ const IconButton = (props: IconButtonProps): JSX.Element => (
5
+ <MUIIconButton {...props} />
6
+ )
7
+ IconButton.muiName = 'MUIIconButton'
8
+
9
+ export default IconButton
@@ -0,0 +1,136 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import Radio from './Radio'
5
+ import RadioGroup from '@mui/material/RadioGroup'
6
+ import FormControlLabel from '@mui/material/FormControlLabel'
7
+
8
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
9
+ // unmount and cleanup DOM after the test is finished.
10
+ afterEach(cleanup)
11
+
12
+ describe('Test -- Radio component', () => {
13
+ it('renders a radio button', () => {
14
+ render(
15
+ <Radio
16
+ data-testid="radioTest"
17
+ inputProps={{
18
+ 'aria-label': 'label'
19
+ }}
20
+ />
21
+ )
22
+
23
+ expect(screen.getByTestId('radioTest')).toMatchInlineSnapshot(`
24
+ <span
25
+ class="MuiButtonBase-root MuiRadio-root MuiRadio-colorPrimary PrivateSwitchBase-root MuiRadio-root MuiRadio-colorPrimary css-vqmohf-MuiButtonBase-root-MuiRadio-root"
26
+ data-testid="radioTest"
27
+ >
28
+ <input
29
+ aria-label="label"
30
+ class="PrivateSwitchBase-input css-1m9pwf3"
31
+ type="radio"
32
+ value=""
33
+ />
34
+ <span
35
+ class="css-hyxlzm"
36
+ >
37
+ <svg
38
+ aria-hidden="true"
39
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1hbvpl3-MuiSvgIcon-root"
40
+ data-testid="RadioButtonUncheckedIcon"
41
+ focusable="false"
42
+ viewBox="0 0 24 24"
43
+ >
44
+ <path
45
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
46
+ />
47
+ </svg>
48
+ <svg
49
+ aria-hidden="true"
50
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1hhw7if-MuiSvgIcon-root"
51
+ data-testid="RadioButtonCheckedIcon"
52
+ focusable="false"
53
+ viewBox="0 0 24 24"
54
+ >
55
+ <path
56
+ d="M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"
57
+ />
58
+ </svg>
59
+ </span>
60
+ <span
61
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
62
+ />
63
+ </span>
64
+ `)
65
+ })
66
+
67
+ it('responds to a click event', () => {
68
+ const mockCallBack = jest.fn()
69
+ render(<Radio onClick={mockCallBack} data-testid="radioTest" />)
70
+
71
+ userEvent.click(screen.getByTestId('radioTest'))
72
+ expect(mockCallBack.mock.calls.length).toEqual(1)
73
+ })
74
+
75
+ it('changes checked state on click', () => {
76
+ render(<Radio />)
77
+ const radioTest = screen.getByRole('radio')
78
+
79
+ // Check initial state
80
+ expect(radioTest).not.toBeChecked()
81
+
82
+ // Check state after click
83
+ userEvent.click(radioTest)
84
+ expect(radioTest).toBeChecked()
85
+ })
86
+
87
+ it('should be disabled', () => {
88
+ render(<Radio disabled />)
89
+
90
+ const radioTest = screen.getByRole('radio')
91
+ expect(radioTest).toBeDisabled()
92
+ })
93
+
94
+ it('has the proper attributes', () => {
95
+ const { rerender } = render(
96
+ <Radio inputProps={{ 'aria-label': 'test label' }} />
97
+ )
98
+
99
+ // Default Radio has proper type attribute
100
+ expect(screen.getByRole('radio')).toHaveAttribute('type', 'radio')
101
+
102
+ // Default Radio has proper aria attributes
103
+ const radioInput = screen.getByRole('radio')
104
+ expect(radioInput).toHaveAttribute('aria-label', 'test label')
105
+ expect(radioInput).not.toHaveAttribute('aria-disabled')
106
+
107
+ // Disabled Radio has proper aria attribut
108
+ rerender(<Radio data-testid="radioTest" disabled />)
109
+ const radioSpan = screen.getByTestId('radioTest')
110
+ expect(radioSpan).toHaveAttribute('aria-disabled')
111
+ })
112
+
113
+ it('has a default value', () => {
114
+ render(
115
+ <RadioGroup
116
+ aria-labelledby="demo-radio-buttons-group-label"
117
+ defaultValue="other"
118
+ name="radio-buttons-group"
119
+ >
120
+ <FormControlLabel value="female" control={<Radio />} label="Female" />
121
+ <FormControlLabel
122
+ value="male"
123
+ control={<Radio data-testid="notDefaultValue" />}
124
+ label="Male"
125
+ />
126
+ <FormControlLabel
127
+ value="other"
128
+ control={<Radio data-testid="defaultValue" />}
129
+ label="Other"
130
+ />
131
+ </RadioGroup>
132
+ )
133
+ expect(screen.getByLabelText('Other')).toBeChecked()
134
+ expect(screen.getByLabelText('Male')).not.toBeChecked()
135
+ })
136
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUIRadio, { RadioProps } from '@mui/material/Radio'
3
+
4
+ interface IRadioProps extends RadioProps {}
5
+
6
+ export default function Radio ({ ...rest }: IRadioProps): JSX.Element {
7
+ return (
8
+ <MUIRadio {...rest} />
9
+ )
10
+ }
@@ -0,0 +1,158 @@
1
+ /* eslint-disable no-irregular-whitespace */
2
+ import React from 'react'
3
+ import { cleanup, render, screen } from '@testing-library/react'
4
+ import userEvent from '@testing-library/user-event'
5
+ import Select from './Select'
6
+ import { FormControl, InputLabel, MenuItem } from '@mui/material'
7
+
8
+ const testData = ['One', 'Two', 'Three']
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 -- Select component', () => {
15
+ it('renders a Select', () => {
16
+ render(
17
+ <Select id="combo-box-demo" sx={{ width: 300 }}>
18
+ <option>Select a number</option>
19
+ {testData.map((option) => (
20
+ <option key={option} value={option}>
21
+ {option}
22
+ </option>
23
+ ))}
24
+ </Select>
25
+ )
26
+
27
+ expect(screen.getByRole('button')).toMatchInlineSnapshot(`
28
+ <div
29
+ aria-expanded="false"
30
+ aria-haspopup="listbox"
31
+ aria-labelledby="combo-box-demo"
32
+ class="MuiSelect-select MuiSelect-outlined MuiInputBase-input MuiOutlinedInput-input css-11u53oe-MuiSelect-select-MuiInputBase-input-MuiOutlinedInput-input"
33
+ id="combo-box-demo"
34
+ role="button"
35
+ tabindex="0"
36
+ >
37
+ <span
38
+ class="notranslate"
39
+ >
40
+
41
+ </span>
42
+ </div>
43
+ `)
44
+ })
45
+
46
+ it('should display the correct number of options', () => {
47
+ const mockCallBack = jest.fn()
48
+
49
+ render(
50
+ <Select id="combo-box-demo" sx={{ width: 300 }} onClick={mockCallBack}>
51
+ <MenuItem>Select a number</MenuItem>
52
+ {testData.map((option) => (
53
+ <MenuItem key={option} value={option}>
54
+ {option}
55
+ </MenuItem>
56
+ ))}
57
+ </Select>
58
+ )
59
+
60
+ userEvent.click(screen.getByRole('button'))
61
+ expect(screen.getAllByRole('option').length).toBe(4)
62
+ expect(mockCallBack.mock.calls.length).toEqual(1)
63
+ })
64
+
65
+ it('responds to a click event', () => {
66
+ const mockCallBack = jest.fn()
67
+ render(
68
+ <Select id="combo-box-demo" sx={{ width: 300 }} onClick={mockCallBack}>
69
+ <MenuItem>Select a number</MenuItem>
70
+ {testData.map((option) => (
71
+ <MenuItem key={option} value={option}>
72
+ {option}
73
+ </MenuItem>
74
+ ))}
75
+ </Select>
76
+ )
77
+
78
+ userEvent.click(screen.getByRole('button'))
79
+ expect(mockCallBack.mock.calls.length).toEqual(1)
80
+ })
81
+
82
+ it('properly renders the options on click', () => {
83
+ render(
84
+ <Select id="combo-box-demo" sx={{ width: 300 }}>
85
+ <MenuItem>Select a number</MenuItem>
86
+ {testData.map((option) => (
87
+ <MenuItem key={option} value={option}>
88
+ {option}
89
+ </MenuItem>
90
+ ))}
91
+ </Select>
92
+ )
93
+
94
+ // Check that the options are not rendered
95
+ expect(screen.queryByText('One')).toBeNull()
96
+
97
+ // Click on the input and check that the options are rendered
98
+ userEvent.click(screen.getByRole('button'))
99
+ expect(screen.getByText('One')).toBeInTheDocument()
100
+ })
101
+
102
+ it('displays the label text', () => {
103
+ render(
104
+ <FormControl sx={{ m: 1, minWidth: 140 }}>
105
+ <InputLabel id="demo-simple-select-label">Select</InputLabel>
106
+ <Select
107
+ id="combo-box-demo"
108
+ sx={{ width: 300 }}
109
+ labelId="demo-simple-select-label"
110
+ label="Select"
111
+ >
112
+ <MenuItem>Select a number</MenuItem>
113
+ {testData.map((option) => (
114
+ <MenuItem key={option} value={option}>
115
+ {option}
116
+ </MenuItem>
117
+ ))}
118
+ </Select>
119
+ </FormControl>
120
+ )
121
+
122
+ expect(screen.getByLabelText('Select')).toBeVisible()
123
+ })
124
+
125
+ // it("has the proper attributes", () => {
126
+ // render(
127
+ // <Select id="combo-box-demo" sx={{ width: 300 }} data-testid="Select">
128
+ // <MenuItem>Select a number</MenuItem>
129
+ // {testData.map((option) => (
130
+ // <MenuItem key={option} value={option}>
131
+ // {option}
132
+ // </MenuItem>
133
+ // ))}
134
+ // </Select>
135
+ // );
136
+
137
+ // // Check the default container attributes
138
+ // // expect(screen.getByTestId("Select")).toMatchInlineSnapshot();
139
+ // expect(screen.getByTestId("Select")).toHaveAttribute("role", "button");
140
+ // expect(screen.getByTestId("Select")).toHaveAttribute(
141
+ // "aria-expanded",
142
+ // "false"
143
+ // );
144
+
145
+ // // Click the input
146
+ // userEvent.click(screen.getByTestId("Select"));
147
+
148
+ // // Check the expanded container attributes
149
+ // expect(screen.getByTestId("Select")).toHaveAttribute(
150
+ // "aria-expanded",
151
+ // "true"
152
+ // );
153
+ // expect(screen.getByTestId("Select")).toHaveAttribute(
154
+ // "aria-owns",
155
+ // "combo-box-demo-listbox"
156
+ // );
157
+ // });
158
+ })
@@ -0,0 +1,12 @@
1
+ import React from 'react'
2
+ import MUISelect, { SelectProps, SelectChangeEvent } from '@mui/material/Select'
3
+
4
+ export type { SelectChangeEvent }
5
+
6
+ interface ISelectProps extends SelectProps {}
7
+
8
+ export default function Select ({ ...rest }: ISelectProps): JSX.Element {
9
+ return (
10
+ <MUISelect {...rest} />
11
+ )
12
+ }