@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,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
+ }
@@ -0,0 +1,103 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import Slider from './Slider'
5
+
6
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
7
+ // unmount and cleanup DOM after the test is finished.
8
+ afterEach(cleanup)
9
+
10
+ describe('Test -- Slider component', () => {
11
+ it('renders a slider', () => {
12
+ render(
13
+ <Slider data-testid="sliderTest" defaultValue={50} aria-label="label" />
14
+ )
15
+
16
+ expect(screen.getByTestId('sliderTest')).toMatchInlineSnapshot(`
17
+ <span
18
+ class="MuiSlider-root MuiSlider-colorPrimary MuiSlider-sizeMedium css-187mznn-MuiSlider-root"
19
+ data-testid="sliderTest"
20
+ >
21
+ <span
22
+ class="MuiSlider-rail css-14pt78w-MuiSlider-rail"
23
+ />
24
+ <span
25
+ class="MuiSlider-track css-1gv0vcd-MuiSlider-track"
26
+ style="left: 0%; width: 50%;"
27
+ />
28
+ <span
29
+ class="MuiSlider-thumb MuiSlider-thumbColorPrimary MuiSlider-thumbSizeMedium css-eg0mwd-MuiSlider-thumb"
30
+ data-focusvisible="false"
31
+ data-index="0"
32
+ style="left: 50%;"
33
+ >
34
+ <input
35
+ aria-label="label"
36
+ aria-orientation="horizontal"
37
+ aria-valuemax="100"
38
+ aria-valuemin="0"
39
+ aria-valuenow="50"
40
+ data-index="0"
41
+ max="100"
42
+ min="0"
43
+ step="1"
44
+ style="border: 0px; height: 100%; margin: -1px; overflow: hidden; padding: 0px; position: absolute; white-space: nowrap; width: 100%; direction: ltr;"
45
+ type="range"
46
+ value="50"
47
+ />
48
+ </span>
49
+ </span>
50
+ `)
51
+ })
52
+
53
+ it('responds to a click event', () => {
54
+ const mockCallBack = jest.fn()
55
+ render(<Slider onClick={mockCallBack} value={0} aria-label="label" />)
56
+
57
+ userEvent.click(screen.getByLabelText('label'))
58
+ expect(mockCallBack.mock.calls.length).toEqual(1)
59
+ })
60
+
61
+ it('should be disabled', () => {
62
+ render(<Slider disabled defaultValue={50} aria-label="label" />)
63
+
64
+ const slider = screen.getByLabelText('label')
65
+ expect(slider).toBeDisabled()
66
+ })
67
+
68
+ it('has a discrete range of values', () => {
69
+ render(<Slider value={[25, 50]} defaultValue={25} />)
70
+
71
+ const sliderMin = screen.getByDisplayValue('25')
72
+ expect(sliderMin).toHaveValue('25')
73
+ expect(sliderMin).toHaveAttribute('aria-valuenow', '25')
74
+
75
+ const sliderMax = screen.getByDisplayValue('50')
76
+ expect(sliderMax).toHaveValue('50')
77
+ expect(sliderMax).toHaveAttribute('aria-valuenow', '50')
78
+ })
79
+
80
+ it('has a proper default value', () => {
81
+ render(<Slider defaultValue={100} aria-label="label" />)
82
+
83
+ const slider = screen.getByLabelText('label')
84
+ expect(slider).toHaveAttribute('value', '100')
85
+ })
86
+
87
+ it('has the proper aria attributes', () => {
88
+ render(<Slider defaultValue={50} aria-label="label" />)
89
+
90
+ const slider = screen.getByLabelText('label')
91
+ expect(slider).toHaveAttribute('aria-label', 'label')
92
+ expect(slider).toHaveAttribute('aria-valuenow', '50')
93
+ expect(slider).toHaveAttribute('aria-valuemin', '0')
94
+ expect(slider).toHaveAttribute('aria-valuemax', '100')
95
+ })
96
+
97
+ it('has the proper type attribute', () => {
98
+ render(<Slider defaultValue={50} aria-label="label" />)
99
+
100
+ const slider = screen.getByLabelText('label')
101
+ expect(slider).toHaveAttribute('type', 'range')
102
+ })
103
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUISlider, { SliderProps } from '@mui/material/Slider'
3
+
4
+ interface ISliderProps extends SliderProps {}
5
+
6
+ export default function Slider ({ ...rest }: ISliderProps): JSX.Element {
7
+ return (
8
+ <MUISlider {...rest} />
9
+ )
10
+ }
@@ -0,0 +1,96 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import Switch from './Switch'
5
+
6
+ // Note: running cleanup afterEach is done automatically for you in @testing-library/react@9.0.0 or higher
7
+ // unmount and cleanup DOM after the test is finished.
8
+ afterEach(cleanup)
9
+
10
+ describe('Test -- Switch component', () => {
11
+ it('renders a switch', () => {
12
+ render(
13
+ <Switch
14
+ data-testid="switchTest"
15
+ inputProps={{
16
+ 'aria-label': 'label'
17
+ }}
18
+ />
19
+ )
20
+
21
+ expect(screen.getByTestId('switchTest')).toMatchInlineSnapshot(`
22
+ <span
23
+ class="MuiButtonBase-root MuiSwitch-switchBase MuiSwitch-colorPrimary PrivateSwitchBase-root MuiSwitch-switchBase MuiSwitch-colorPrimary css-5ryogn-MuiButtonBase-root-MuiSwitch-switchBase"
24
+ data-testid="switchTest"
25
+ >
26
+ <input
27
+ aria-label="label"
28
+ class="PrivateSwitchBase-input MuiSwitch-input css-1m9pwf3"
29
+ type="checkbox"
30
+ />
31
+ <span
32
+ class="MuiSwitch-thumb css-jsexje-MuiSwitch-thumb"
33
+ />
34
+ <span
35
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
36
+ />
37
+ </span>
38
+ `)
39
+ })
40
+
41
+ it('responds to a click event', () => {
42
+ const mockCallBack = jest.fn()
43
+ render(<Switch onClick={mockCallBack} data-testid="switchTest" />)
44
+
45
+ userEvent.click(screen.getByTestId('switchTest'))
46
+ expect(mockCallBack.mock.calls.length).toEqual(1)
47
+ })
48
+
49
+ it('changes checked state on click', () => {
50
+ render(<Switch />)
51
+ const switchTest = screen.getByRole('checkbox')
52
+
53
+ // Check initial state
54
+ expect(switchTest).not.toBeChecked()
55
+
56
+ // Check state after click
57
+ userEvent.click(switchTest)
58
+ expect(switchTest).toBeChecked()
59
+ })
60
+
61
+ it('should be disabled', () => {
62
+ render(<Switch disabled />)
63
+
64
+ const switchTest = screen.getByRole('checkbox')
65
+ expect(switchTest).toBeDisabled()
66
+ })
67
+
68
+ it('has the proper aria attributes', () => {
69
+ const { rerender } = render(
70
+ <Switch inputProps={{ 'aria-label': 'test label' }} />
71
+ )
72
+
73
+ // Default Switch has proper aria attributes
74
+ const switchInput = screen.getByRole('checkbox')
75
+ expect(switchInput).toHaveAttribute('aria-label', 'test label')
76
+ expect(switchInput).not.toHaveAttribute('aria-disabled')
77
+
78
+ // Disabled Switch has proper aria attribute
79
+ rerender(<Switch data-testid="switchTest" disabled />)
80
+ const switchSpan = screen.getByTestId('switchTest')
81
+ expect(switchSpan).toHaveAttribute('aria-disabled')
82
+ })
83
+
84
+ it('has the proper type attribute', () => {
85
+ render(<Switch />)
86
+ expect(screen.getByRole('checkbox')).toHaveAttribute('type', 'checkbox')
87
+ })
88
+
89
+ it('changes color', () => {
90
+ // Color prop changes css class
91
+ render(<Switch data-testid="switchTest" color="success" />)
92
+ expect(screen.getByTestId('switchTest')).toHaveClass(
93
+ 'MuiSwitch-colorSuccess'
94
+ )
95
+ })
96
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUISwitch, { SwitchProps } from '@mui/material/Switch'
3
+
4
+ interface ISwitchProps extends SwitchProps {}
5
+
6
+ export default function Switch ({ ...rest }: ISwitchProps): JSX.Element {
7
+ return (
8
+ <MUISwitch {...rest} />
9
+ )
10
+ }
@@ -0,0 +1,131 @@
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 TextField from './TextField'
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 -- TextField component', () => {
12
+ it('renders an outlined textField by default', () => {
13
+ render(
14
+ <TextField
15
+ data-testid="textFieldTest"
16
+ inputProps={{
17
+ 'aria-label': 'label'
18
+ }}
19
+ />
20
+ )
21
+
22
+ expect(screen.getByTestId('textFieldTest')).toMatchInlineSnapshot(`
23
+ <div
24
+ class="MuiFormControl-root MuiTextField-root css-1u3bzj6-MuiFormControl-root-MuiTextField-root"
25
+ data-testid="textFieldTest"
26
+ >
27
+ <div
28
+ class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-colorPrimary MuiInputBase-formControl css-9ddj71-MuiInputBase-root-MuiOutlinedInput-root"
29
+ >
30
+ <input
31
+ aria-invalid="false"
32
+ aria-label="label"
33
+ class="MuiInputBase-input MuiOutlinedInput-input css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input"
34
+ id="mui-1"
35
+ type="text"
36
+ value=""
37
+ />
38
+ <fieldset
39
+ aria-hidden="true"
40
+ class="MuiOutlinedInput-notchedOutline css-1d3z3hw-MuiOutlinedInput-notchedOutline"
41
+ >
42
+ <legend
43
+ class="css-hdw1oc"
44
+ >
45
+ <span
46
+ class="notranslate"
47
+ >
48
+
49
+ </span>
50
+ </legend>
51
+ </fieldset>
52
+ </div>
53
+ </div>
54
+ `)
55
+ })
56
+
57
+ it('responds to a click event', () => {
58
+ const mockCallBack = jest.fn()
59
+ render(<TextField onClick={mockCallBack} data-testid="textFieldTest" />)
60
+
61
+ userEvent.click(screen.getByTestId('textFieldTest'))
62
+ expect(mockCallBack.mock.calls.length).toEqual(1)
63
+ })
64
+
65
+ it('changes focused state on click', () => {
66
+ render(
67
+ <TextField
68
+ inputProps={{
69
+ 'data-testid': 'textFieldTest'
70
+ }}
71
+ label="outlined"
72
+ />
73
+ )
74
+ const textFieldTest = screen.getByTestId('textFieldTest')
75
+
76
+ // Check initial state
77
+ expect(textFieldTest).not.toHaveFocus()
78
+
79
+ // Check state after click
80
+ userEvent.click(textFieldTest)
81
+ expect(textFieldTest).toHaveFocus()
82
+ })
83
+
84
+ it('should be disabled', () => {
85
+ render(
86
+ <TextField
87
+ inputProps={{
88
+ 'data-testid': 'textFieldTest'
89
+ }}
90
+ disabled
91
+ />
92
+ )
93
+
94
+ const textFieldTest = screen.getByTestId('textFieldTest')
95
+ expect(textFieldTest).toBeDisabled()
96
+ })
97
+
98
+ it('has the proper aria attributes', () => {
99
+ render(
100
+ <TextField
101
+ inputProps={{
102
+ 'aria-label': 'test label',
103
+ 'data-testid': 'textFieldTest'
104
+ }}
105
+ />
106
+ )
107
+
108
+ // Default TextField has proper aria attributes
109
+ const textFieldInput = screen.getByTestId('textFieldTest')
110
+ expect(textFieldInput).toHaveAttribute('aria-label', 'test label')
111
+ expect(textFieldInput).not.toHaveAttribute('aria-disabled')
112
+ })
113
+
114
+ it('has the proper type attribute', () => {
115
+ render(
116
+ <TextField
117
+ inputProps={{
118
+ 'data-testid': 'textFieldTest'
119
+ }}
120
+ />
121
+ )
122
+ const textFieldInput = screen.getByTestId('textFieldTest')
123
+ expect(textFieldInput).toHaveAttribute('type', 'text')
124
+ })
125
+
126
+ // it("changes color", () => {
127
+ // // Color prop changes css class
128
+ // render(<TextField data-testid="textFieldTest" color="success" />);
129
+ // expect(screen.getByTestId("textFieldTest")).toHaveClass("MuiTextField-colorSuccess");
130
+ // });
131
+ })
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+ import MUITextField, { BaseTextFieldProps } from '@mui/material/TextField'
3
+ import { OutlinedInputProps } from '@mui/material/OutlinedInput'
4
+
5
+ interface ITextFieldProps extends BaseTextFieldProps {
6
+ /**
7
+ * Callback fired when the value is changed.
8
+ *
9
+ * @param {object} event The event source of the callback.
10
+ * You can pull out the new value by accessing `event.target.value` (string).
11
+ */
12
+ onChange?: OutlinedInputProps['onChange']
13
+ /**
14
+ * The variant to use.
15
+ * @default 'outlined'
16
+ */
17
+ variant?: 'outlined'
18
+ /**
19
+ * Props applied to the Input element.
20
+ * It will be a [`FilledInput`](/api/filled-input/),
21
+ * [`OutlinedInput`](/api/outlined-input/) or [`Input`](/api/input/)
22
+ * component depending on the `variant` prop value.
23
+ */
24
+ InputProps?: Partial<OutlinedInputProps>
25
+ }
26
+
27
+ export default function TextField (props: ITextFieldProps): JSX.Element {
28
+ return (
29
+ <MUITextField {...props} />
30
+ )
31
+ }
@@ -0,0 +1,122 @@
1
+ import React from 'react'
2
+ import { cleanup, render, screen } from '@testing-library/react'
3
+ import userEvent from '@testing-library/user-event'
4
+ import ToggleButton from '../../../../lib/components/atoms/ToggleButton/ToggleButton'
5
+ import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'
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 -- ToggleButton component', () => {
12
+ it('renders a ToggleButton', () => {
13
+ render(
14
+ <ToggleButton
15
+ aria-label="label"
16
+ value="check"
17
+ data-testid="toggleButtonTest"
18
+ >
19
+ ToggleButton
20
+ </ToggleButton>
21
+ )
22
+
23
+ expect(screen.getByTestId('toggleButtonTest')).toMatchInlineSnapshot(`
24
+ <button
25
+ aria-label="label"
26
+ class="MuiButtonBase-root MuiToggleButton-root MuiToggleButton-sizeMedium MuiToggleButton-standard css-ueukts-MuiButtonBase-root-MuiToggleButton-root"
27
+ data-testid="toggleButtonTest"
28
+ tabindex="0"
29
+ type="button"
30
+ value="check"
31
+ >
32
+ ToggleButton
33
+ <span
34
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
35
+ />
36
+ </button>
37
+ `)
38
+ })
39
+
40
+ it('responds to a click event', () => {
41
+ const mockCallBack = jest.fn()
42
+ render(
43
+ <ToggleButton
44
+ onClick={mockCallBack}
45
+ value={0}
46
+ data-testid="toggleButtonTest"
47
+ />
48
+ )
49
+
50
+ userEvent.click(screen.getByTestId('toggleButtonTest'))
51
+ expect(mockCallBack.mock.calls.length).toEqual(1)
52
+ })
53
+
54
+ it('has the proper attributes', () => {
55
+ render(
56
+ <ToggleButtonGroup
57
+ value="two"
58
+ aria-label="ToggleButtonGroup label"
59
+ data-testid="toggleButtonTest"
60
+ >
61
+ <ToggleButton value="one" aria-label="ToggleButton one">One</ToggleButton>
62
+ <ToggleButton value="two" aria-label="ToggleButton two">Two</ToggleButton>
63
+ <ToggleButton value="three" aria-label="ToggleButton three" disabled>Three</ToggleButton>
64
+ </ToggleButtonGroup>
65
+ )
66
+
67
+ // Check toggleButtonGroup
68
+ const toggleButtonGroup = screen.getByTestId('toggleButtonTest')
69
+ expect(toggleButtonGroup).toHaveAttribute('aria-label', 'ToggleButtonGroup label')
70
+ expect(toggleButtonGroup).toHaveAttribute('role', 'group')
71
+
72
+ // Check toggleButton default
73
+ const toggleButtonOne = screen.getByLabelText('ToggleButton one')
74
+ expect(toggleButtonOne).toHaveAttribute('aria-pressed', 'false')
75
+ expect(toggleButtonOne).toHaveAttribute('tabindex', '0')
76
+
77
+ // Check toggleButton selected
78
+ const toggleButtonTwo = screen.getByLabelText('ToggleButton two')
79
+ expect(toggleButtonTwo).toHaveAttribute('aria-pressed', 'true')
80
+
81
+ // Check toggleButton disabled
82
+ const toggleButtonThree = screen.getByLabelText('ToggleButton three')
83
+ expect(toggleButtonThree).toBeDisabled()
84
+ })
85
+
86
+ it('properly changes focus state', () => {
87
+ render(
88
+ <ToggleButtonGroup
89
+ value="two"
90
+ aria-label="ToggleButtonGroup label"
91
+ data-testid="toggleButtonTest"
92
+ >
93
+ <ToggleButton value="one" aria-label="ToggleButton one">One</ToggleButton>
94
+ <ToggleButton value="two" aria-label="ToggleButton two">Two</ToggleButton>
95
+ <ToggleButton value="three" aria-label="ToggleButton three" disabled>Three</ToggleButton>
96
+ </ToggleButtonGroup>
97
+ )
98
+ const toggleButtonOne = screen.getByLabelText('ToggleButton one')
99
+ const toggleButtonTwo = screen.getByLabelText('ToggleButton two')
100
+ const toggleButtonThree = screen.getByLabelText('ToggleButton three')
101
+
102
+ // Check initial state
103
+ expect(toggleButtonOne).not.toHaveFocus()
104
+ expect(toggleButtonTwo).not.toHaveFocus()
105
+ expect(toggleButtonThree).not.toHaveFocus()
106
+
107
+ // Check state after click
108
+ userEvent.click(toggleButtonOne)
109
+ expect(toggleButtonOne).toHaveFocus()
110
+ expect(toggleButtonTwo).not.toHaveFocus()
111
+
112
+ // Check state after keyboard tab
113
+ userEvent.tab()
114
+ expect(toggleButtonOne).not.toHaveFocus()
115
+ expect(toggleButtonTwo).toHaveFocus()
116
+ expect(toggleButtonThree).not.toHaveFocus()
117
+
118
+ // Confirm disabled button does not receive focus
119
+ userEvent.tab()
120
+ expect(toggleButtonThree).not.toHaveFocus()
121
+ })
122
+ })
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import MUIToggleButton, { ToggleButtonProps } from '@mui/material/ToggleButton'
3
+
4
+ interface IToggleButtonProps extends ToggleButtonProps {}
5
+
6
+ export default function ToggleButton ({ ...rest }: IToggleButtonProps): JSX.Element {
7
+ return (
8
+ <MUIToggleButton {...rest} />
9
+ )
10
+ }