@innovaccer/design-system 2.5.0 → 2.7.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/.eslintrc.json +54 -0
  2. package/.github/workflows/chromatic.yml +5 -0
  3. package/.github/workflows/main.yml +2 -2
  4. package/.github/workflows/pull_request.yml +2 -2
  5. package/.github/workflows/test.yml +1 -1
  6. package/.husky/commit-msg +4 -0
  7. package/.prettierrc +2 -2
  8. package/.storybook/main.js +4 -0
  9. package/.vscode/settings.json +11 -0
  10. package/CHANGELOG.md +78 -0
  11. package/CONTRIBUTING.md +180 -98
  12. package/commitlint.config.js +1 -0
  13. package/core/accessibility/utils/index.ts +5 -0
  14. package/core/accessibility/utils/isEnterKey.ts +5 -0
  15. package/core/accessibility/utils/isSpaceKey.ts +5 -0
  16. package/core/accessibility/utils/useAccessibilityProps.ts +33 -0
  17. package/core/common.type.tsx +22 -0
  18. package/core/components/atoms/_chip/__tests__/__snapshots__/_chip.test.tsx.snap +17 -9
  19. package/core/components/atoms/_chip/index.tsx +19 -3
  20. package/core/components/atoms/avatar/Avatar.tsx +4 -14
  21. package/core/components/atoms/avatar/__stories__/variants/Appearance.story.tsx +3 -2
  22. package/core/components/atoms/avatar/__tests__/Avatar.test.tsx +14 -9
  23. package/core/components/atoms/avatarGroup/AvatarGroup.tsx +3 -5
  24. package/core/components/atoms/badge/Badge.tsx +2 -12
  25. package/core/components/atoms/badge/__tests__/Badge.test.tsx +22 -7
  26. package/core/components/atoms/badge/_stories_/variants/Appearance.story.tsx +3 -2
  27. package/core/components/atoms/badge/_stories_/variants/Subtle.story.tsx +3 -2
  28. package/core/components/atoms/button/Button.tsx +10 -7
  29. package/core/components/atoms/button/__stories__/Alert.story.tsx +8 -1
  30. package/core/components/atoms/button/__stories__/Cancel.story.tsx +4 -1
  31. package/core/components/atoms/button/__stories__/IconButtonGroup.story.tsx +12 -3
  32. package/core/components/atoms/button/__stories__/IconButtonSecondary.story.tsx +6 -1
  33. package/core/components/atoms/button/__stories__/IconLeftSecondary.story.tsx +4 -1
  34. package/core/components/atoms/button/__stories__/IconRightSecondary.story.tsx +4 -1
  35. package/core/components/atoms/button/__stories__/IconTransparent.story.tsx +4 -1
  36. package/core/components/atoms/button/__stories__/LabelButtonGroup.story.tsx +14 -3
  37. package/core/components/atoms/button/__stories__/LargeIconExpanded.story.tsx +4 -1
  38. package/core/components/atoms/button/__stories__/LoadingPrimary.story.tsx +4 -1
  39. package/core/components/atoms/button/__stories__/Primary.story.tsx +5 -2
  40. package/core/components/atoms/button/__stories__/SplitButton.story.tsx +6 -1
  41. package/core/components/atoms/button/__stories__/Transparent.story.tsx +8 -1
  42. package/core/components/atoms/button/__stories__/index.story.tsx +12 -2
  43. package/core/components/atoms/button/__stories__/variants/Appearance.story.tsx +6 -2
  44. package/core/components/atoms/button/__stories__/variants/Expanded.story.tsx +6 -2
  45. package/core/components/atoms/button/__stories__/variants/Size.story.tsx +4 -0
  46. package/core/components/atoms/button/__stories__/variants/icon/Icon.story.tsx +15 -0
  47. package/core/components/atoms/button/__stories__/variants/icon/IconLeft.story.tsx +6 -2
  48. package/core/components/atoms/button/__stories__/variants/icon/IconRight.story.tsx +6 -2
  49. package/core/components/atoms/button/__stories__/variants/state/Alert.story.tsx +7 -17
  50. package/core/components/atoms/button/__stories__/variants/state/Basic.story.tsx +9 -17
  51. package/core/components/atoms/button/__stories__/variants/state/Primary.story.tsx +7 -17
  52. package/core/components/atoms/button/__stories__/variants/state/Transparent.story.tsx +13 -17
  53. package/core/components/atoms/button/__tests__/Button.test.tsx +1 -1
  54. package/core/components/atoms/button/__tests__/__snapshots__/Button.test.tsx.snap +0 -137
  55. package/core/components/atoms/card/__stories__/empty.story.tsx +1 -1
  56. package/core/components/atoms/card/__stories__/nested.story.tsx +1 -1
  57. package/core/components/atoms/card/__stories__/scroll.story.tsx +1 -1
  58. package/core/components/atoms/checkbox/Checkbox.tsx +8 -9
  59. package/core/components/atoms/checkbox/__stories__/variants/Size.story.tsx +2 -2
  60. package/core/components/atoms/chip/Chip.tsx +3 -2
  61. package/core/components/atoms/chip/__stories__/variants/Selection.story.tsx +17 -0
  62. package/core/components/atoms/chip/__stories__/variants/Type.story.tsx +2 -2
  63. package/core/components/atoms/chip/__tests__/Chip.test.tsx +7 -0
  64. package/core/components/atoms/chipGroup/__tests__/__snapshots__/chipGroup.test.tsx.snap +11 -5
  65. package/core/components/atoms/chipGroup/__tests__/chipGroup.test.tsx +2 -2
  66. package/core/components/atoms/chipGroup/_stories_/index.story.tsx +2 -2
  67. package/core/components/atoms/collapsible/__tests__/__snapshots__/Collapsible.test.tsx.snap +8 -0
  68. package/core/components/atoms/divider/Divider.tsx +44 -0
  69. package/core/components/atoms/divider/__stories__/BasicDividerInCard.story.tsx +74 -0
  70. package/core/components/atoms/divider/__stories__/HeaderDividerInCard.story.tsx +35 -0
  71. package/core/components/atoms/divider/__stories__/IndentedDivider.story.tsx +49 -0
  72. package/core/components/atoms/divider/__stories__/Vertical.story.tsx +51 -0
  73. package/core/components/atoms/divider/__stories__/index.story.tsx +91 -0
  74. package/core/components/atoms/divider/__stories__/variants/HorizontalDivider.story.tsx +27 -0
  75. package/core/components/atoms/divider/__tests__/Divider.test.tsx +50 -0
  76. package/core/components/atoms/divider/__tests__/__snapshots__/Divider.test.tsx.snap +53 -0
  77. package/core/components/atoms/divider/index.tsx +2 -0
  78. package/core/components/atoms/dropdown/Dropdown.tsx +18 -17
  79. package/core/components/atoms/dropdown/DropdownButton.tsx +2 -2
  80. package/core/components/atoms/dropdown/DropdownList.tsx +18 -7
  81. package/core/components/atoms/dropdown/Loading.tsx +1 -1
  82. package/core/components/atoms/dropdown/__stories__/CustomSearchPlaceholder.story.tsx +45 -0
  83. package/core/components/atoms/dropdown/__stories__/_common_/types.tsx +3 -0
  84. package/core/components/atoms/dropdown/__stories__/variants/Size.story.tsx +2 -2
  85. package/core/components/atoms/dropdown/__stories__/variants/controlledDropdown/MultiSelect.story.tsx +28 -18
  86. package/core/components/atoms/dropdown/__tests__/Dropdown.test.tsx +12 -1
  87. package/core/components/atoms/dropdown/__tests__/Loading.test.tsx +0 -1
  88. package/core/components/atoms/dropdown/option/DefaultOption.tsx +3 -0
  89. package/core/components/atoms/dropdown/option/IconOption.tsx +3 -0
  90. package/core/components/atoms/dropdown/option/IconWithMetaOption.tsx +3 -0
  91. package/core/components/atoms/dropdown/option/MetaOption.tsx +3 -0
  92. package/core/components/atoms/dropdown/option/index.tsx +1 -1
  93. package/core/components/atoms/editable/Editable.tsx +3 -0
  94. package/core/components/atoms/heading/Heading.tsx +4 -4
  95. package/core/components/atoms/heading/__stories__/variants/Appearance.story.tsx +3 -2
  96. package/core/components/atoms/heading/__tests__/Heading.test.tsx +4 -3
  97. package/core/components/atoms/icon/Icon.tsx +16 -5
  98. package/core/components/atoms/icon/__stories__/variants/Image.story.tsx +6 -1
  99. package/core/components/atoms/icon/__tests__/__snapshots__/Icon.test.tsx.snap +74 -0
  100. package/core/components/atoms/input/Input.tsx +17 -7
  101. package/core/components/atoms/input/__stories__/BasicInput.story.tsx +2 -1
  102. package/core/components/atoms/input/__stories__/InputWithCaption.story.tsx +91 -9
  103. package/core/components/atoms/input/__stories__/InputWithLabel.story.tsx +11 -3
  104. package/core/components/atoms/input/__stories__/LabelPosition.story.tsx +46 -4
  105. package/core/components/atoms/input/__stories__/RequiredVsOptional.story.tsx +12 -8
  106. package/core/components/atoms/input/__stories__/variants/controlledInput.story.tsx +46 -0
  107. package/core/components/atoms/input/__stories__/variants/types/BasicInput.story.tsx +2 -2
  108. package/core/components/atoms/input/__stories__/variants/types/IconLeft.story.tsx +2 -10
  109. package/core/components/atoms/input/__stories__/variants/types/WithLabel.story.tsx +1 -9
  110. package/core/components/atoms/input/__tests__/__snapshots__/Input.test.tsx.snap +19 -0
  111. package/core/components/atoms/label/Label.tsx +1 -1
  112. package/core/components/atoms/legend/Legend.tsx +5 -2
  113. package/core/components/atoms/legend/__stories__/variants/labelAppearance.story.tsx +2 -2
  114. package/core/components/atoms/link/Link.tsx +4 -4
  115. package/core/components/atoms/message/Message.tsx +12 -12
  116. package/core/components/atoms/message/__stories__/index.story.tsx +1 -1
  117. package/core/components/atoms/message/__stories__/variants/Appearance.story.tsx +1 -1
  118. package/core/components/atoms/message/__stories__/variants/AppearanceTitle.story.tsx +1 -1
  119. package/core/components/atoms/message/__tests__/Message.test.tsx +1 -6
  120. package/core/components/atoms/message/__tests__/__snapshots__/Message.test.tsx.snap +0 -45
  121. package/core/components/atoms/metaList/__tests__/MetaList.test.tsx +2 -2
  122. package/core/components/atoms/metricInput/MetricInput.tsx +17 -7
  123. package/core/components/atoms/metricInput/__stories__/DefaultMetric.story.tsx +8 -2
  124. package/core/components/atoms/metricInput/__stories__/WithPrefix.story.tsx +6 -2
  125. package/core/components/atoms/metricInput/__stories__/index.story.tsx +1 -0
  126. package/core/components/atoms/metricInput/__stories__/variants/Controlled.story.tsx +2 -0
  127. package/core/components/atoms/metricInput/__stories__/variants/Size.story.tsx +2 -2
  128. package/core/components/atoms/metricInput/__stories__/withSuffix.story.tsx +6 -2
  129. package/core/components/atoms/metricInput/__tests__/__snapshots__/MetricInput.test.tsx.snap +20 -4
  130. package/core/components/atoms/multiSlider/Handle.tsx +3 -0
  131. package/core/components/atoms/multiSlider/SliderUtils.tsx +1 -4
  132. package/core/components/atoms/multiSlider/index.tsx +9 -4
  133. package/core/components/atoms/outsideClick/OutsideClick.tsx +1 -2
  134. package/core/components/atoms/paragraph/Paragraph.tsx +2 -2
  135. package/core/components/atoms/paragraph/__stories__/variants/Appearance.story.tsx +2 -2
  136. package/core/components/atoms/paragraph/__tests__/Paragraph.test.tsx +2 -2
  137. package/core/components/atoms/pills/Pills.tsx +2 -12
  138. package/core/components/atoms/pills/__stories__/variants/Appearance.story.tsx +3 -2
  139. package/core/components/atoms/pills/__stories__/variants/Subtle.story.tsx +3 -2
  140. package/core/components/atoms/pills/__tests__/Pills.test.tsx +3 -2
  141. package/core/components/atoms/placeholderImage/PlaceholderImage.tsx +2 -2
  142. package/core/components/atoms/placeholderImage/__stories__/variants/Size.story.tsx +2 -2
  143. package/core/components/atoms/placeholderParagraph/PlaceholderParagraph.tsx +2 -2
  144. package/core/components/atoms/placeholderParagraph/__stories__/variants/Size.story.tsx +2 -2
  145. package/core/components/atoms/popperWrapper/PopperWrapper.tsx +2 -6
  146. package/core/components/atoms/progressRing/ProgressRing.tsx +2 -2
  147. package/core/components/atoms/progressRing/__stories__/variants/Size.story.tsx +1 -1
  148. package/core/components/atoms/radio/Radio.tsx +4 -5
  149. package/core/components/atoms/rangeSlider/RangeSlider.tsx +1 -2
  150. package/core/components/atoms/rangeSlider/__stories__/index.story.tsx +1 -2
  151. package/core/components/atoms/rangeSlider/__stories__/variants/Controlled.story.tsx +1 -2
  152. package/core/components/atoms/rangeSlider/__stories__/variants/CustomLabels.story.tsx +1 -2
  153. package/core/components/atoms/spinner/Spinner.tsx +4 -4
  154. package/core/components/atoms/spinner/__stories__/variants/Appearance.story.tsx +2 -2
  155. package/core/components/atoms/spinner/__stories__/variants/Size.story.tsx +1 -1
  156. package/core/components/atoms/statusHint/StatusHint.tsx +5 -3
  157. package/core/components/atoms/statusHint/__stories__/variants/Appearance.story.tsx +3 -2
  158. package/core/components/atoms/statusHint/__tests__/StatusHint.test.tsx +3 -2
  159. package/core/components/atoms/subheading/Subheading.tsx +2 -2
  160. package/core/components/atoms/subheading/__stories__/variants/Appearance.story.tsx +3 -2
  161. package/core/components/atoms/subheading/__tests__/Subheading.test.tsx +3 -2
  162. package/core/components/atoms/switchInput/Switch.tsx +14 -9
  163. package/core/components/atoms/switchInput/__stories__/DefaultSwitch.story.tsx +4 -1
  164. package/core/components/atoms/switchInput/__stories__/OffState.story.tsx +4 -1
  165. package/core/components/atoms/switchInput/__stories__/index.story.tsx +26 -3
  166. package/core/components/atoms/switchInput/__stories__/variants/Size.story.tsx +10 -1
  167. package/core/components/atoms/switchInput/__stories__/variants/State.story.tsx +9 -2
  168. package/core/components/atoms/text/Text.tsx +4 -4
  169. package/core/components/atoms/text/__stories__/variants/Appearance.story.tsx +2 -2
  170. package/core/components/atoms/text/__tests__/Text.test.tsx +2 -3
  171. package/core/components/atoms/textarea/__stories__/TextareaWithCaption.story.tsx +9 -3
  172. package/core/components/atoms/textarea/__stories__/defaultTextarea.story.tsx +10 -2
  173. package/core/components/atoms/textarea/__stories__/index.story.tsx +1 -0
  174. package/core/components/atoms/textarea/__stories__/variants/Disable.story.tsx +1 -0
  175. package/core/components/atoms/toast/ActionButton.tsx +2 -2
  176. package/core/components/atoms/toast/Toast.tsx +11 -6
  177. package/core/components/atoms/toast/__stories__/index.story.tsx +2 -6
  178. package/core/components/atoms/toast/__stories__/variants/Appearance.story.tsx +3 -2
  179. package/core/components/atoms/toast/__stories__/variants/ToastMessage.story.tsx +3 -2
  180. package/core/components/atoms/toast/__stories__/variants/ToastWithAction.story.tsx +3 -2
  181. package/core/components/atoms/toast/__tests__/Toast.test.tsx +1 -1
  182. package/core/components/atoms/toast/__tests__/__snapshots__/Toast.test.tsx.snap +24 -125
  183. package/core/components/css-utilities/Schema.tsx +1 -1
  184. package/core/components/css-utilities/Spacing/Schema.tsx +1 -1
  185. package/core/components/molecules/chatMessage/Box.tsx +3 -0
  186. package/core/components/molecules/chipInput/ChipInput.tsx +3 -0
  187. package/core/components/molecules/chipInput/__tests__/__snapshots__/ChipInput.test.tsx.snap +14 -2
  188. package/core/components/molecules/dropzone/Dropzone.tsx +6 -3
  189. package/core/components/molecules/dropzone/DropzoneBase.tsx +22 -38
  190. package/core/components/molecules/dropzone/FileSelectorUtils.tsx +1 -1
  191. package/core/components/molecules/dropzone/__stories__/index.story.tsx +151 -41
  192. package/core/components/molecules/dropzone/__tests__/Dropzone.test.tsx +2 -2
  193. package/core/components/molecules/dropzone/utils.tsx +6 -4
  194. package/core/components/molecules/editableChipInput/EditableChipInput.tsx +9 -5
  195. package/core/components/molecules/editableChipInput/__stories__/Uncontrolled.story.tsx +1 -1
  196. package/core/components/molecules/editableChipInput/__tests__/__snapshots__/EditableChipInput.test.tsx.snap +12 -4
  197. package/core/components/molecules/editableDropdown/EditableDropdown.tsx +2 -2
  198. package/core/components/molecules/editableInput/EditableInput.tsx +13 -4
  199. package/core/components/molecules/emptyState/EmptyState.tsx +9 -5
  200. package/core/components/molecules/emptyState/__stories__/pageNotLoadedWithSVG.story.tsx +26 -26
  201. package/core/components/molecules/fileList/FileListItem.tsx +3 -2
  202. package/core/components/molecules/fileUploader/FileUploaderItem.tsx +3 -2
  203. package/core/components/molecules/fileUploader/FileUploaderStatus.tsx +1 -1
  204. package/core/components/molecules/fileUploader/__stories__/_common_/types.tsx +3 -0
  205. package/core/components/molecules/fileUploader/__stories__/index.story.tsx +3 -222
  206. package/core/components/molecules/fullscreenModal/FullscreenModal.tsx +5 -7
  207. package/core/components/molecules/inputMask/InputMask.tsx +212 -146
  208. package/core/components/molecules/inputMask/__stories__/index.story.tsx +24 -0
  209. package/core/components/molecules/inputMask/__tests__/__snapshots__/InputMask.test.tsx.snap +1 -0
  210. package/core/components/molecules/modal/Modal.tsx +4 -6
  211. package/core/components/molecules/modal/__stories__/Confirmation.story.tsx +1 -1
  212. package/core/components/molecules/pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +5 -1
  213. package/core/components/molecules/placeholder/Placeholder.tsx +2 -2
  214. package/core/components/molecules/popover/Popover.tsx +2 -9
  215. package/core/components/molecules/sidesheet/Sidesheet.tsx +5 -7
  216. package/core/components/molecules/sidesheet/__stories__/variants/CustomHeader.story.tsx +172 -0
  217. package/core/components/molecules/stepper/Step.tsx +2 -0
  218. package/core/components/molecules/tabs/Tabs.tsx +2 -0
  219. package/core/components/molecules/tabs/TabsWrapper.tsx +2 -0
  220. package/core/components/molecules/tabs/__stories__/CustomLabels.story.tsx +1 -1
  221. package/core/components/molecules/tooltip/Tooltip.tsx +4 -4
  222. package/core/components/molecules/verificationCodeInput/VerificationCodeInput.tsx +8 -4
  223. package/core/components/molecules/verificationCodeInput/__stories__/index.story.tsx +3 -1
  224. package/core/components/molecules/verificationCodeInput/__tests__/__snapshots__/VerificationCodeInput.test.tsx.snap +1 -0
  225. package/core/components/organisms/calendar/Calendar.tsx +130 -8
  226. package/core/components/organisms/calendar/__stories__/variants/firstDayOfWeek.story.tsx +2 -2
  227. package/core/components/organisms/calendar/__tests__/Calendar.test.tsx +27 -0
  228. package/core/components/organisms/calendar/utility.ts +3 -3
  229. package/core/components/organisms/choiceList/ChoiceList.tsx +12 -12
  230. package/core/components/organisms/datePicker/DatePicker.tsx +31 -16
  231. package/core/components/organisms/datePicker/Trigger.tsx +1 -5
  232. package/core/components/organisms/datePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +4518 -4479
  233. package/core/components/organisms/dateRangePicker/DateRangePicker.tsx +9 -10
  234. package/core/components/organisms/dateRangePicker/SingleInputTrigger.tsx +0 -1
  235. package/core/components/organisms/dateRangePicker/Trigger.tsx +2 -2
  236. package/core/components/organisms/dateRangePicker/__stories__/variants/monthsInView.story.tsx +2 -2
  237. package/core/components/organisms/dateRangePicker/__tests__/__snapshots__/DateRangePicker.test.tsx.snap +112 -40
  238. package/core/components/organisms/grid/Cell.tsx +23 -19
  239. package/core/components/organisms/grid/Grid.tsx +3 -4
  240. package/core/components/organisms/grid/GridBody.tsx +0 -1
  241. package/core/components/organisms/grid/GridContext.ts +1 -1
  242. package/core/components/organisms/grid/GridRow.tsx +4 -0
  243. package/core/components/organisms/grid/__stories__/_common_/editableSchema.tsx +1 -3
  244. package/core/components/organisms/grid/__stories__/_common_/fetchData.ts +3 -3
  245. package/core/components/organisms/grid/__stories__/_common_/loaderSchema.ts +0 -2
  246. package/core/components/organisms/grid/__stories__/_common_/schema.tsx +1 -3
  247. package/core/components/organisms/grid/__stories__/_common_/simpleLoaderSchema.ts +0 -2
  248. package/core/components/organisms/grid/__stories__/_common_/statusSchema.ts +0 -2
  249. package/core/components/organisms/horizontalNav/HorizontalNav.tsx +2 -0
  250. package/core/components/organisms/inlineMessage/InlineMessage.tsx +5 -7
  251. package/core/components/organisms/inlineMessage/__tests__/InlineMessage.test.tsx +3 -2
  252. package/core/components/organisms/inlineMessage/__tests__/__snapshots__/InlineMessage.test.tsx.snap +30 -40
  253. package/core/components/organisms/list/__stories__/_common_/types.tsx +3 -0
  254. package/core/components/organisms/list/__stories__/index.story.tsx +0 -16
  255. package/core/components/organisms/navigation/VerticalNavigation.tsx +4 -0
  256. package/core/components/organisms/table/Table.tsx +3 -2
  257. package/core/components/organisms/table/__stories__/CompressedTable.story.tsx +1 -1
  258. package/core/components/organisms/table/__stories__/DataTable.story.tsx +1 -1
  259. package/core/components/organisms/table/__stories__/NestedTableWithNestedCard.story.tsx +1 -1
  260. package/core/components/organisms/table/__stories__/PinnedColumn.story.tsx +1 -1
  261. package/core/components/organisms/table/__stories__/ResourceTable.story.tsx +4 -3
  262. package/core/components/organisms/table/__stories__/Selection.story.tsx +2 -2
  263. package/core/components/organisms/table/__stories__/StandardTable.story.tsx +1 -1
  264. package/core/components/organisms/table/__stories__/TableAsDescriptionList.story.tsx +2 -2
  265. package/core/components/organisms/table/__stories__/TableAsOptionList.story.tsx +2 -2
  266. package/core/components/organisms/table/__stories__/TightStory.story.tsx +1 -1
  267. package/core/components/organisms/table/__stories__/_common_/types.tsx +3 -0
  268. package/core/components/organisms/table/__stories__/syncTable.story.tsx +14 -6
  269. package/core/components/organisms/table/__stories__/variants/showHead.story.tsx +2 -2
  270. package/core/components/organisms/table/__stories__/variants/showMenu.story.tsx +2 -2
  271. package/core/components/organisms/table/__stories__/variants/size.story.tsx +2 -2
  272. package/core/components/organisms/table/__stories__/variants/type.story.tsx +2 -2
  273. package/core/components/organisms/table/__stories__/variants/withCheckbox.story.tsx +2 -2
  274. package/core/components/organisms/table/__stories__/variants/withHeader.story.tsx +0 -2
  275. package/core/components/organisms/table/__stories__/variants/withPagination.story.tsx +2 -2
  276. package/core/components/organisms/timePicker/TimePicker.tsx +4 -8
  277. package/core/components/organisms/timePicker/__tests__/__snapshots__/TimePicker.test.tsx.snap +14 -2
  278. package/core/components/organisms/verticalNav/MenuItem.tsx +2 -0
  279. package/core/components/organisms/verticalNav/__stories__/schema.tsx +0 -2
  280. package/core/components/organisms/verticalNav/__tests__/VerticalNav.test.tsx +1 -2
  281. package/core/components/patterns/datePicker/datePickerWithPresets.story.tsx +126 -0
  282. package/core/components/patterns/dateRangePicker/withCustomPopover.story.tsx +8 -8
  283. package/core/components/patterns/forms/CreatePassword.story.tsx +1 -1
  284. package/core/components/patterns/forms/VerificationCodeInput.story.tsx +2 -2
  285. package/core/components/patterns/table/Table with Header/tableWithHeader.story.jsx +7 -7
  286. package/core/global.d.ts +9 -0
  287. package/core/index.tsx +2 -1
  288. package/core/index.type.tsx +1 -0
  289. package/core/utils/Keys.ts +4 -0
  290. package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +562 -541
  291. package/core/utils/docPage/generateImports.tsx +2 -3
  292. package/core/utils/docPage/index.tsx +52 -37
  293. package/core/utils/docPage/sandbox.tsx +14 -7
  294. package/core/utils/overlayHelper.ts +7 -3
  295. package/core/utils/testHelper.ts +2 -2
  296. package/core/utils/types.tsx +1 -1
  297. package/core/utils/validators.ts +37 -34
  298. package/css/dist/index.css +1550 -1415
  299. package/css/dist/index.css.map +1 -1
  300. package/css/src/components/Legend.css +7 -7
  301. package/css/src/components/ProgressBar.css +1 -1
  302. package/css/src/components/avatarGroup.css +1 -1
  303. package/css/src/components/backdrop.css +12 -6
  304. package/css/src/components/badge.css +52 -52
  305. package/css/src/components/button.css +95 -94
  306. package/css/src/components/calendar.css +137 -126
  307. package/css/src/components/card.css +0 -1
  308. package/css/src/components/cardSubdued.css +3 -5
  309. package/css/src/components/chat.css +1 -1
  310. package/css/src/components/checkbox.css +71 -70
  311. package/css/src/components/chip.css +20 -17
  312. package/css/src/components/chipGroup.css +5 -5
  313. package/css/src/components/chipInput.css +1 -1
  314. package/css/src/components/choiceList.css +4 -4
  315. package/css/src/components/dateRangePicker.css +13 -13
  316. package/css/src/components/divider.css +20 -0
  317. package/css/src/components/dropdown.css +61 -61
  318. package/css/src/components/dropdownButton.css +36 -36
  319. package/css/src/components/dropzone.css +16 -20
  320. package/css/src/components/editableChipInput.css +10 -9
  321. package/css/src/components/editableDropdown.css +1 -1
  322. package/css/src/components/editableInput.css +1 -1
  323. package/css/src/components/emptyState.css +15 -15
  324. package/css/src/components/fileList.css +44 -45
  325. package/css/src/components/fullscreenModal.css +4 -3
  326. package/css/src/components/grid.css +217 -199
  327. package/css/src/components/horizontalNav.css +0 -1
  328. package/css/src/components/icon.css +1 -7
  329. package/css/src/components/inlineMessage.css +2 -1
  330. package/css/src/components/input.css +62 -62
  331. package/css/src/components/link.css +1 -1
  332. package/css/src/components/list.css +10 -10
  333. package/css/src/components/message.css +64 -70
  334. package/css/src/components/metaList.css +26 -26
  335. package/css/src/components/metricInput.css +3 -4
  336. package/css/src/components/modal.css +1 -1
  337. package/css/src/components/navigation.css +3 -3
  338. package/css/src/components/pageHeader.css +1 -2
  339. package/css/src/components/pagination.css +36 -36
  340. package/css/src/components/pills.css +19 -19
  341. package/css/src/components/placeholder.css +10 -5
  342. package/css/src/components/popover.css +2 -2
  343. package/css/src/components/progressRing.css +1 -1
  344. package/css/src/components/radio.css +74 -74
  345. package/css/src/components/slider.css +5 -5
  346. package/css/src/components/statusHints.css +15 -15
  347. package/css/src/components/switch.css +66 -41
  348. package/css/src/components/table.css +15 -15
  349. package/css/src/components/tabs.css +53 -53
  350. package/css/src/components/textarea.css +1 -1
  351. package/css/src/components/toast.css +51 -56
  352. package/css/src/components/verificationCodeInput.css +5 -6
  353. package/css/src/components/verticalNav.css +1 -2
  354. package/css/src/core/base.css +3 -0
  355. package/css/src/core/typography.css +1 -1
  356. package/css/src/core/utilities.css +1 -1
  357. package/css/src/tokens/index.css +63 -63
  358. package/css/src/utils/align.css +1 -1
  359. package/css/src/utils/background.css +1 -1
  360. package/css/src/utils/cursor.css +1 -1
  361. package/css/src/utils/display.css +1 -1
  362. package/css/src/utils/flex.css +1 -1
  363. package/css/src/utils/grid.css +1 -1
  364. package/css/src/utils/overflow.css +1 -1
  365. package/css/src/utils/position.css +1 -1
  366. package/css/src/utils/spacing.css +1 -1
  367. package/css/src/utils/utility.css +13 -13
  368. package/css/src/variables/index.css +6 -3
  369. package/dist/core/accessibility/utils/index.d.ts +4 -0
  370. package/dist/core/accessibility/utils/isEnterKey.d.ts +3 -0
  371. package/dist/core/accessibility/utils/isSpaceKey.d.ts +3 -0
  372. package/dist/core/accessibility/utils/useAccessibilityProps.d.ts +18 -0
  373. package/dist/core/common.type.d.ts +12 -0
  374. package/dist/core/components/atoms/avatar/Avatar.d.ts +4 -4
  375. package/dist/core/components/atoms/avatarGroup/AvatarGroup.d.ts +2 -3
  376. package/dist/core/components/atoms/badge/Badge.d.ts +2 -2
  377. package/dist/core/components/atoms/button/Button.d.ts +6 -6
  378. package/dist/core/components/atoms/checkbox/Checkbox.d.ts +3 -3
  379. package/dist/core/components/atoms/chip/Chip.d.ts +2 -2
  380. package/dist/core/components/atoms/divider/Divider.d.ts +15 -0
  381. package/dist/core/components/atoms/divider/index.d.ts +2 -0
  382. package/dist/core/components/atoms/dropdown/Dropdown.d.ts +18 -17
  383. package/dist/core/components/atoms/dropdown/DropdownButton.d.ts +2 -2
  384. package/dist/core/components/atoms/dropdown/DropdownList.d.ts +4 -3
  385. package/dist/core/components/atoms/dropdown/option/index.d.ts +1 -1
  386. package/dist/core/components/atoms/heading/Heading.d.ts +4 -4
  387. package/dist/core/components/atoms/icon/Icon.d.ts +5 -3
  388. package/dist/core/components/atoms/input/Input.d.ts +4 -4
  389. package/dist/core/components/atoms/legend/Legend.d.ts +2 -2
  390. package/dist/core/components/atoms/link/Link.d.ts +4 -4
  391. package/dist/core/components/atoms/message/Message.d.ts +2 -2
  392. package/dist/core/components/atoms/metricInput/MetricInput.d.ts +3 -3
  393. package/dist/core/components/atoms/multiSlider/SliderUtils.d.ts +1 -1
  394. package/dist/core/components/atoms/multiSlider/index.d.ts +3 -3
  395. package/dist/core/components/atoms/paragraph/Paragraph.d.ts +2 -2
  396. package/dist/core/components/atoms/pills/Pills.d.ts +2 -2
  397. package/dist/core/components/atoms/placeholderImage/PlaceholderImage.d.ts +2 -2
  398. package/dist/core/components/atoms/placeholderParagraph/PlaceholderParagraph.d.ts +2 -2
  399. package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +51 -51
  400. package/dist/core/components/atoms/progressRing/ProgressRing.d.ts +2 -2
  401. package/dist/core/components/atoms/radio/Radio.d.ts +4 -4
  402. package/dist/core/components/atoms/rangeSlider/RangeSlider.d.ts +1 -1
  403. package/dist/core/components/atoms/spinner/Spinner.d.ts +4 -4
  404. package/dist/core/components/atoms/statusHint/StatusHint.d.ts +2 -2
  405. package/dist/core/components/atoms/subheading/Subheading.d.ts +2 -2
  406. package/dist/core/components/atoms/switchInput/Switch.d.ts +7 -6
  407. package/dist/core/components/atoms/text/Text.d.ts +4 -4
  408. package/dist/core/components/atoms/toast/ActionButton.d.ts +2 -2
  409. package/dist/core/components/atoms/toast/Toast.d.ts +2 -2
  410. package/dist/core/components/molecules/dropzone/Dropzone.d.ts +3 -3
  411. package/dist/core/components/molecules/dropzone/DropzoneBase.d.ts +1 -1
  412. package/dist/core/components/molecules/dropzone/utils.d.ts +5 -3
  413. package/dist/core/components/molecules/emptyState/EmptyState.d.ts +4 -4
  414. package/dist/core/components/molecules/fileList/FileListItem.d.ts +1 -1
  415. package/dist/core/components/molecules/fileUploader/FileUploaderItem.d.ts +1 -1
  416. package/dist/core/components/molecules/fileUploader/FileUploaderStatus.d.ts +1 -1
  417. package/dist/core/components/molecules/fullscreenModal/FullscreenModal.d.ts +4 -7
  418. package/dist/core/components/molecules/inputMask/InputMask.d.ts +10 -2
  419. package/dist/core/components/molecules/modal/Modal.d.ts +3 -6
  420. package/dist/core/components/molecules/placeholder/Placeholder.d.ts +2 -2
  421. package/dist/core/components/molecules/popover/Popover.d.ts +0 -1
  422. package/dist/core/components/molecules/sidesheet/Sidesheet.d.ts +3 -6
  423. package/dist/core/components/molecules/tooltip/Tooltip.d.ts +3 -3
  424. package/dist/core/components/organisms/calendar/Calendar.d.ts +31 -0
  425. package/dist/core/components/organisms/choiceList/ChoiceList.d.ts +5 -6
  426. package/dist/core/components/organisms/datePicker/DatePicker.d.ts +2 -0
  427. package/dist/core/components/organisms/dateRangePicker/DateRangePicker.d.ts +24 -0
  428. package/dist/core/components/organisms/grid/Cell.d.ts +1 -1
  429. package/dist/core/components/organisms/grid/Grid.d.ts +3 -3
  430. package/dist/core/components/organisms/grid/GridContext.d.ts +1 -1
  431. package/dist/core/components/organisms/inlineMessage/InlineMessage.d.ts +2 -2
  432. package/dist/core/components/organisms/table/Table.d.ts +2 -2
  433. package/dist/core/components/patterns/datePicker/datePickerWithPresets.story.d.ts +15 -0
  434. package/dist/core/components/patterns/dateRangePicker/withCustomPopover.story.d.ts +5 -1
  435. package/dist/core/index.d.ts +1 -0
  436. package/dist/core/index.type.d.ts +1 -0
  437. package/dist/core/utils/docPage/generateImports.d.ts +1 -1
  438. package/dist/core/utils/overlayHelper.d.ts +1 -1
  439. package/dist/core/utils/types.d.ts +1 -1
  440. package/dist/index.esm.js +1039 -729
  441. package/dist/index.js +532 -371
  442. package/dist/index.js.map +1 -1
  443. package/dist/index.umd.js +1 -1
  444. package/dist/index.umd.js.br +0 -0
  445. package/dist/index.umd.js.gz +0 -0
  446. package/dts.config.js +11 -2
  447. package/package.json +32 -27
  448. package/tsconfig.json +3 -16
  449. package/tsconfig.type.json +2 -1
  450. package/types/index.d.ts +2217 -0
  451. package/types/{innovaccer-design-system/tsconfig.json → tsconfig.json} +1 -1
  452. package/types/{innovaccer-design-system/tslint.json → tslint.json} +0 -0
  453. package/types/types-tests.tsx +936 -0
  454. package/.husky/prepare-commit-msg +0 -6
  455. package/core/components/atoms/button/__stories__/variants/state/Success.story.tsx +0 -99
  456. package/core/components/atoms/message/__stories__/default.story.tsx +0 -16
  457. package/core/components/atoms/toast/__stories__/DefaultToast.story.tsx +0 -16
  458. package/core/components/molecules/dropzone/__stories__/variants/DropzoneWithFileList.story.tsx +0 -176
  459. package/core/components/molecules/fileUploader/__stories__/variants/FileUploaderList.story.tsx +0 -80
  460. package/tslint.json +0 -30
  461. package/types/innovaccer-design-system/index.d.ts +0 -39
  462. package/types/innovaccer-design-system/innovaccer-design-system-tests.ts +0 -0
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { RangeSlider } from '@/index';
3
-
4
- type NumberRange = [number, number];
3
+ import { NumberRange } from '@/common.type';
5
4
 
6
5
  // CSF format story
7
6
  export const cutsomLabels = () => {
@@ -2,18 +2,18 @@ import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { BaseProps, extractBaseProps } from '@/utils/types';
4
4
 
5
- export type Appearance = 'primary' | 'secondary' | 'white';
6
- export type Size = 'small' | 'medium' | 'large';
5
+ export type SpinnerAppearance = 'primary' | 'secondary' | 'white';
6
+ export type SpinnerSize = 'small' | 'medium' | 'large';
7
7
 
8
8
  export interface SpinnerProps extends BaseProps {
9
9
  /**
10
10
  * Color of `Spinner`
11
11
  */
12
- appearance: Appearance;
12
+ appearance: SpinnerAppearance;
13
13
  /**
14
14
  * Size of `Spinner`
15
15
  */
16
- size: Size;
16
+ size: SpinnerSize;
17
17
  }
18
18
 
19
19
  export const Spinner = (props: SpinnerProps) => {
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
- import Spinner, { Appearance } from '../../Spinner';
2
+ import Spinner, { SpinnerAppearance } from '../../Spinner';
3
3
  import Text from '@/components/atoms/text';
4
4
 
5
5
  // CSF format story
6
6
  export const appearance = () => {
7
- const appearances: Appearance[] = ['primary', 'secondary', 'white'];
7
+ const appearances: SpinnerAppearance[] = ['primary', 'secondary', 'white'];
8
8
  return (
9
9
  <div className="d-flex">
10
10
  {appearances.map((appear, ind) => {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import Spinner, { Size } from '../../Spinner';
2
+ import Spinner, { SpinnerSize as Size } from '../../Spinner';
3
3
  import Text from '@/components/atoms/text';
4
4
 
5
5
  // CSF format story
@@ -2,8 +2,7 @@ import * as React from 'react';
2
2
  import Text from '@/components/atoms/text';
3
3
  import classNames from 'classnames';
4
4
  import { BaseProps, extractBaseProps } from '@/utils/types';
5
-
6
- export type Appearance = 'info' | 'alert' | 'warning' | 'success' | 'default';
5
+ import { MessageAppearance } from '@/common.type';
7
6
 
8
7
  export interface StatusHintProps extends BaseProps {
9
8
  /**
@@ -13,7 +12,7 @@ export interface StatusHintProps extends BaseProps {
13
12
  /**
14
13
  * Color of Icon
15
14
  */
16
- appearance: Appearance;
15
+ appearance: MessageAppearance;
17
16
  /**
18
17
  * Handler to be called when `Status Hint` is clicked
19
18
  */
@@ -46,6 +45,8 @@ export const StatusHint = (props: StatusHintProps) => {
46
45
  });
47
46
 
48
47
  return (
48
+ // TODO(a11y): fix accessibility
49
+ /* eslint-disable */
49
50
  <div
50
51
  data-test="DesignSystem-StatusHint"
51
52
  {...baseProps}
@@ -54,6 +55,7 @@ export const StatusHint = (props: StatusHintProps) => {
54
55
  onMouseEnter={(e) => onMouseEnter && onMouseEnter(e)}
55
56
  onMouseLeave={(e) => onMouseLeave && onMouseLeave(e)}
56
57
  >
58
+ {/* eslint-enable */}
57
59
  <span data-test="DesignSystem-StatusHint--Icon" className={StatusHintIconClass} />
58
60
  <Text data-test="DesignSystem-StatusHint--Text" weight={'medium'}>
59
61
  {children}
@@ -1,9 +1,10 @@
1
1
  import * as React from 'react';
2
- import StatusHint, { Appearance } from '../../StatusHint';
2
+ import StatusHint from '../../StatusHint';
3
+ import { MessageAppearance } from '@/common.type';
3
4
 
4
5
  // CSF format story
5
6
  export const appearance = () => {
6
- const appearances: Appearance[] = ['info', 'success', 'alert', 'warning', 'default'];
7
+ const appearances: MessageAppearance[] = ['info', 'success', 'alert', 'warning', 'default'];
7
8
 
8
9
  return (
9
10
  <div>
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import StatusHint, { StatusHintProps as IProps, Appearance } from '../StatusHint';
3
+ import StatusHint, { StatusHintProps as IProps } from '../StatusHint';
4
4
  import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
5
+ import { MessageAppearance } from '@/common.type';
5
6
 
6
7
  const label = 'StatusHint';
7
- const appearances: Appearance[] = ['default', 'alert', 'info', 'warning', 'success'];
8
+ const appearances: MessageAppearance[] = ['default', 'alert', 'info', 'warning', 'success'];
8
9
 
9
10
  describe('StatusHint component', () => {
10
11
  const mapper = {
@@ -2,8 +2,8 @@ import * as React from 'react';
2
2
  import GenericText from '../_text';
3
3
  import classNames from 'classnames';
4
4
  import { BaseHtmlProps, BaseProps } from '@/utils/types';
5
+ import { HeadingAppearance } from '@/common.type';
5
6
 
6
- export type Appearance = 'default' | 'subtle' | 'disabled' | 'white';
7
7
  export interface SubheadingProps extends BaseProps, BaseHtmlProps<HTMLHeadingElement> {
8
8
  /**
9
9
  * Text to be rendered
@@ -13,7 +13,7 @@ export interface SubheadingProps extends BaseProps, BaseHtmlProps<HTMLHeadingEle
13
13
  /**
14
14
  * Color of `Subheading`
15
15
  */
16
- appearance: Appearance;
16
+ appearance: HeadingAppearance;
17
17
  }
18
18
 
19
19
  export const Subheading = (props: SubheadingProps) => {
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
- import Subheading, { Appearance } from '../../index';
2
+ import Subheading from '../../index';
3
3
  import Text from '@/components/atoms/text';
4
+ import { HeadingAppearance } from '@/common.type';
4
5
 
5
6
  // CSF format story
6
7
  export const appearance = () => {
7
- const appearances: Appearance[] = ['default', 'subtle', 'disabled', 'white'];
8
+ const appearances: HeadingAppearance[] = ['default', 'subtle', 'disabled', 'white'];
8
9
 
9
10
  return (
10
11
  <div className="d-flex">
@@ -1,9 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import Subheading, { SubheadingProps as Props, Appearance } from '../Subheading';
3
+ import Subheading, { SubheadingProps as Props } from '../Subheading';
4
4
  import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
5
+ import { HeadingAppearance } from '@/common.type';
5
6
 
6
- const appearance: Appearance[] = ['default', 'subtle', 'disabled', 'white'];
7
+ const appearance: HeadingAppearance[] = ['default', 'subtle', 'disabled', 'white'];
7
8
 
8
9
  const mapper = {
9
10
  appearance: valueHelper(appearance, { required: true, iterate: true }),
@@ -1,24 +1,26 @@
1
1
  import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { OmitNativeProps, BaseProps } from '@/utils/types';
4
+ import { isSpaceKey } from '@/accessibility/utils';
5
+ import { ChangeEvent } from '@/common.type';
4
6
 
5
- export type Size = 'regular' | 'tiny' | 'large';
6
- export type Appearance = 'primary' | 'alert' | 'success' | 'warning';
7
+ export type SwitchSize = 'regular' | 'tiny' | 'large';
8
+ export type SwitchAppearance = 'primary' | 'alert' | 'success' | 'warning';
7
9
 
8
- type MouseEvent = React.ChangeEvent<HTMLInputElement>;
10
+ type KeyboardEvent = React.KeyboardEvent<HTMLInputElement>;
9
11
 
10
12
  export interface SwitchProps extends BaseProps, OmitNativeProps<HTMLInputElement, 'onChange'> {
11
13
  /**
12
14
  * Size of `Switch`
13
15
  * @default "regular"
14
16
  */
15
- size?: Size;
17
+ size?: SwitchSize;
16
18
  /**
17
19
  * Color of `Switch`
18
20
  *
19
21
  * **Soon to be deprecated**
20
22
  */
21
- appearance?: Appearance;
23
+ appearance?: SwitchAppearance;
22
24
  /**
23
25
  * Default value of checked (Used in case of uncontrolled `Switch`)
24
26
  */
@@ -42,7 +44,7 @@ export interface SwitchProps extends BaseProps, OmitNativeProps<HTMLInputElement
42
44
  /**
43
45
  * Callback function called when `Switch` is toggled
44
46
  */
45
- onChange?: (event: MouseEvent, selected: boolean) => void;
47
+ onChange?: (event: ChangeEvent | KeyboardEvent, selected: boolean) => void;
46
48
  }
47
49
 
48
50
  /**
@@ -87,9 +89,11 @@ export const Switch = React.forwardRef<HTMLInputElement, SwitchProps>((props, re
87
89
  ['Switch-wrapper--checkedDisabled']: checked && disabled,
88
90
  });
89
91
 
90
- const onChangeHandler = (event: MouseEvent) => {
91
- if (checkedProp === undefined) setChecked(!checked);
92
- if (onChange) onChange(event, !checked);
92
+ const onChangeHandler = (event: ChangeEvent | KeyboardEvent) => {
93
+ if (event.type == 'change' || isSpaceKey(event as React.KeyboardEvent<HTMLElement>)) {
94
+ if (checkedProp === undefined) setChecked(!checked);
95
+ if (onChange) onChange(event, !checked);
96
+ }
93
97
  };
94
98
 
95
99
  return (
@@ -105,6 +109,7 @@ export const Switch = React.forwardRef<HTMLInputElement, SwitchProps>((props, re
105
109
  name={name}
106
110
  value={value}
107
111
  className="Switch-input"
112
+ onKeyUp={onChangeHandler}
108
113
  />
109
114
  <span className={SwitchWrapper} />
110
115
  </div>
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import Switch from '../index';
3
3
 
4
4
  // CSF format story
5
- export const defaultSwitch = () => <Switch defaultChecked={true} size="regular" />;
5
+ export const defaultSwitch = () => <Switch aria-label="Default Checked Switch" defaultChecked={true} size="regular" />;
6
6
 
7
7
  export default {
8
8
  title: 'Components/Switch/Default Switch',
@@ -11,6 +11,9 @@ export default {
11
11
  docs: {
12
12
  docPage: {
13
13
  title: 'Switch',
14
+ a11yProps: `
15
+ **aria-label:** Add \`aria-label='Default Checked Switch'\` to describe the action of switch.
16
+ `,
14
17
  },
15
18
  },
16
19
  },
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import Switch from '../index';
3
3
 
4
4
  // CSF format story
5
- export const offState = () => <Switch defaultChecked={false} size="regular" />;
5
+ export const offState = () => <Switch aria-label="Off State Switch" defaultChecked={false} size="regular" />;
6
6
 
7
7
  export default {
8
8
  title: 'Components/Switch/Off State',
@@ -11,6 +11,9 @@ export default {
11
11
  docs: {
12
12
  docPage: {
13
13
  title: 'Switch',
14
+ a11yProps: `
15
+ **aria-label:** Add \`aria-label='Off State Switch'\` to describe the action of switch.
16
+ `,
14
17
  },
15
18
  },
16
19
  },
@@ -3,6 +3,7 @@ import { select, boolean } from '@storybook/addon-knobs';
3
3
  import { action } from '@storybook/addon-actions';
4
4
  import { updateKnob } from '@/utils/storybookEventEmitter';
5
5
  import Switch from '../index';
6
+ import { Label } from '@/index';
6
7
 
7
8
  // CSF format story
8
9
  export const all = () => {
@@ -18,13 +19,35 @@ export const all = () => {
18
19
  };
19
20
 
20
21
  return (
21
- <div>
22
- <Switch disabled={disabled} checked={checked} size={size} onChange={onChangeHandler} />
23
- </div>
22
+ <form>
23
+ <Label htmlFor="vaccination-status">Have you been vaccinated ?</Label>
24
+ <div>
25
+ <Switch id="vaccination-status" disabled={disabled} checked={checked} size={size} onChange={onChangeHandler} />
26
+ </div>
27
+ </form>
24
28
  );
25
29
  };
26
30
 
27
31
  export default {
28
32
  title: 'Components/Switch/All',
29
33
  component: Switch,
34
+ parameters: {
35
+ docs: {
36
+ docPage: {
37
+ a11yProps: `
38
+ **htmlFor:**
39
+ <br/>
40
+ -Add \`htmlFor='vaccination-status'\` to label to programmatically associated it with switch
41
+ which has \`id='vaccination-status'\`.
42
+ <br/>
43
+ -This means that,a screen reader will read out the label when the user is focused on the switch,
44
+ making it easier for an assistive technology user to understand
45
+ what data should be entered.
46
+ <br/>
47
+ -When a user clicks or touches/taps a label, the browser passes the focus to its associated switch. That increased hit
48
+ area for focusing the input provides an advantage to anyone trying to activate it.
49
+ `,
50
+ },
51
+ },
52
+ },
30
53
  };
@@ -12,7 +12,7 @@ export const size = () => {
12
12
  return (
13
13
  <div key={ind} className="mr-9">
14
14
  <div className="h-50">
15
- <Switch defaultChecked={true} size={SwitchSize} />
15
+ <Switch aria-label={`Switch ${SwitchSize}`} defaultChecked={true} size={SwitchSize} />
16
16
  </div>
17
17
  <br />
18
18
  <Text weight="strong">{SwitchSize.charAt(0).toUpperCase() + SwitchSize.slice(1)}</Text>
@@ -30,6 +30,15 @@ export default {
30
30
  docs: {
31
31
  docPage: {
32
32
  title: 'Switch',
33
+ a11yProps: `
34
+ **aria-label:**
35
+ <br/>
36
+ - Add \`aria-label='Switch tiny'\` on switch with *Tiny* text to describe the action of switch.
37
+ <br/>
38
+ - Add \`aria-label='Switch regular'\` on switch with *regular* text to describe the action of switch.
39
+ <br/>
40
+ - Add \`aria-label='Switch large'\` on switch with *Large* text to describe the action of switch.
41
+ `,
33
42
  },
34
43
  },
35
44
  },
@@ -7,12 +7,12 @@ export const state = () => {
7
7
  return (
8
8
  <div className="d-flex">
9
9
  <div className="mr-9">
10
- <Switch defaultChecked={true} disabled={false} />
10
+ <Switch aria-label="Switch enabled" defaultChecked={true} disabled={false} />
11
11
  <br />
12
12
  <Text weight="strong">Enabled</Text>
13
13
  </div>
14
14
  <div>
15
- <Switch disabled={true} defaultChecked={true} />
15
+ <Switch aria-label="Switch disabled" disabled={true} defaultChecked={true} />
16
16
  <br />
17
17
  <Text weight="strong">Disabled</Text>
18
18
  </div>
@@ -27,6 +27,13 @@ export default {
27
27
  docs: {
28
28
  docPage: {
29
29
  title: 'Switch',
30
+ a11yProps: `
31
+ **aria-label:**
32
+ <br/>
33
+ - Add \`aria-label='Switch enabled'\` on switch with *Enabled* text to describe the action of switch.
34
+ <br/>
35
+ - Add \`aria-label='Switch disabled'\` on switch with *Disabled* text to describe the action of switch.
36
+ `,
30
37
  },
31
38
  },
32
39
  },
@@ -3,8 +3,8 @@ import GenericText from '../_text';
3
3
  import classNames from 'classnames';
4
4
  import { BaseHtmlProps, BaseProps } from '@/utils/types';
5
5
 
6
- export type Size = 'small' | 'regular' | 'large';
7
- export type Appearance = 'default' | 'white' | 'destructive' | 'subtle' | 'disabled' | 'success' | 'link';
6
+ export type TextSize = 'small' | 'regular' | 'large';
7
+ export type TextAppearance = 'default' | 'white' | 'destructive' | 'subtle' | 'disabled' | 'success' | 'link';
8
8
 
9
9
  export interface TextProps extends BaseProps, BaseHtmlProps<HTMLSpanElement> {
10
10
  /**
@@ -22,11 +22,11 @@ export interface TextProps extends BaseProps, BaseHtmlProps<HTMLSpanElement> {
22
22
  /**
23
23
  * Color of `Text`
24
24
  */
25
- appearance: Appearance;
25
+ appearance: TextAppearance;
26
26
  /**
27
27
  * Size of `Text`
28
28
  */
29
- size: Size;
29
+ size: TextSize;
30
30
  }
31
31
 
32
32
  export const Text = (props: TextProps) => {
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
- import Text, { Appearance } from '../../index';
2
+ import Text, { TextAppearance } from '../../index';
3
3
 
4
4
  // CSF format story
5
5
  export const appearance = () => {
6
- const appearances: Appearance[] = ['default', 'white', 'destructive', 'subtle', 'disabled', 'success', 'link'];
6
+ const appearances: TextAppearance[] = ['default', 'white', 'destructive', 'subtle', 'disabled', 'success', 'link'];
7
7
  return (
8
8
  <div className="d-flex">
9
9
  {appearances.map((appear, ind) => {
@@ -1,11 +1,10 @@
1
1
  import * as React from 'react';
2
- import Text, { TextProps as Props, Appearance, Size } from '../Text';
2
+ import Text, { TextProps as Props, TextAppearance, Size } from '../Text';
3
3
  import { render } from '@testing-library/react';
4
4
  import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
5
- import { _isEqual } from '../../dropdown/utility';
6
5
 
7
6
  const sizes: Size[] = ['small', 'regular', 'large'];
8
- const appearances: Appearance[] = ['default', 'white', 'destructive', 'disabled', 'subtle', 'success', 'link'];
7
+ const appearances: TextAppearance[] = ['default', 'white', 'destructive', 'disabled', 'subtle', 'success', 'link'];
9
8
  const weight = ['strong', 'medium'];
10
9
  const BooleanValue = [true, false];
11
10
  const StringValue = 'Sample String';
@@ -6,15 +6,19 @@ export const textareaWithCaption = () => {
6
6
 
7
7
  return (
8
8
  <>
9
- <Label withInput={true}>Confirmation Notes</Label>
9
+ <Label withInput={true} htmlFor="notes">
10
+ Confirmation Notes
11
+ </Label>
10
12
  <Textarea
11
- name="Textarea"
13
+ name="notes"
12
14
  className="w-50"
13
15
  value={value}
14
16
  onChange={(e) => {
15
17
  setValue(e.target.value);
16
18
  }}
17
19
  placeholder="Enter your comments here"
20
+ aria-labelledby="Confirmation Notes"
21
+ id="notes"
18
22
  />
19
23
  <Caption withInput={true}>This note will be automatically pinned for export.</Caption>
20
24
  </>
@@ -26,13 +30,15 @@ const customCode = `() => {
26
30
 
27
31
  return (
28
32
  <>
29
- <Label withInput={true}>Confirmation Notes</Label>
33
+ <Label withInput={true} htmlFor="notes">Confirmation Notes</Label>
30
34
  <Textarea
31
35
  name="Textarea"
32
36
  className="w-50"
33
37
  value={value}
34
38
  onChange={e => { setValue(e.target.value); }}
35
39
  placeholder="Enter your comments here"
40
+ aria-labelledby="Confirmation Notes"
41
+ id="notes"
36
42
  />
37
43
  <Caption withInput={true}>This note will be automatically pinned for export.</Caption>
38
44
  </>
@@ -3,8 +3,16 @@ import { Textarea, Label } from '@/index';
3
3
 
4
4
  export const defaultTextarea = () => (
5
5
  <>
6
- <Label withInput={true}>Comments</Label>
7
- <Textarea name="Textarea" className="w-25" placeholder="Enter your comments here" />
6
+ <Label withInput={true} htmlFor="comments">
7
+ Comments
8
+ </Label>
9
+ <Textarea
10
+ name="comments"
11
+ id="comments"
12
+ aria-labelledby="Comments"
13
+ className="w-25"
14
+ placeholder="Enter your comments here"
15
+ />
8
16
  </>
9
17
  );
10
18
 
@@ -29,6 +29,7 @@ export const all = () => {
29
29
  error={error}
30
30
  resize={resize}
31
31
  rows={rows}
32
+ aria-labelledby="Textarea"
32
33
  />
33
34
  </div>
34
35
  );
@@ -24,6 +24,7 @@ export const Disable = () => {
24
24
  placeholder="Placeholder"
25
25
  disabled={value}
26
26
  rows={3}
27
+ aria-labelledby="Textarea"
27
28
  />
28
29
  </div>
29
30
  <Text weight="strong">{value ? 'Disabled' : 'Enabled'}</Text>
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import Text from '@/components/atoms/text';
4
- import { Appearance } from './Toast';
4
+ import { MessageAppearance } from '@/common.type';
5
5
 
6
6
  export interface Props {
7
- appearance: Appearance;
7
+ appearance: MessageAppearance;
8
8
  label: string;
9
9
  onClick?: (e: React.MouseEvent) => void;
10
10
  }
@@ -5,8 +5,7 @@ import Text from '@/components/atoms/text';
5
5
  import Icon from '@/components/atoms/icon';
6
6
  import ActionButton from './ActionButton';
7
7
  import { BaseProps, extractBaseProps } from '@/utils/types';
8
-
9
- export type Appearance = 'default' | 'info' | 'success' | 'alert' | 'warning';
8
+ import { MessageAppearance } from '@/common.type';
10
9
 
11
10
  export type Action = {
12
11
  /**
@@ -25,9 +24,13 @@ export interface ToastProps extends BaseProps {
25
24
  */
26
25
  title: string;
27
26
  /**
28
- * Color of `Toast`
27
+ * Color of the `Toast`
28
+ *
29
+ * ** `'default'` has been deprecated, backward compatibility supported**
30
+ *
31
+ * @default "info"
29
32
  */
30
- appearance: Appearance;
33
+ appearance: MessageAppearance;
31
34
  /**
32
35
  * Message to be rendered inside `Toast`
33
36
  */
@@ -50,7 +53,9 @@ export interface ToastProps extends BaseProps {
50
53
  }
51
54
 
52
55
  export const Toast = (props: ToastProps) => {
53
- const { appearance, title, message, actions, onClose, className } = props;
56
+ const { title, message, actions, onClose, className } = props;
57
+ let { appearance } = props;
58
+ appearance = appearance === 'default' ? 'info' : appearance;
54
59
 
55
60
  const baseProps = extractBaseProps(props);
56
61
 
@@ -132,7 +137,7 @@ export const Toast = (props: ToastProps) => {
132
137
 
133
138
  Toast.displayName = 'Toast';
134
139
  Toast.defaultProps = {
135
- appearance: 'default',
140
+ appearance: 'info',
136
141
  };
137
142
 
138
143
  export default Toast;
@@ -1,12 +1,10 @@
1
1
  import * as React from 'react';
2
- import { select, text } from '@storybook/addon-knobs';
2
+ import { text } from '@storybook/addon-knobs';
3
3
  import { action } from '@storybook/addon-actions';
4
4
  import Toast from '../Toast';
5
5
 
6
6
  // CSF format story
7
7
  export const all = () => {
8
- const appearance = select('appearance', ['default', 'info', 'success', 'alert', 'warning'], undefined);
9
-
10
8
  const title = text('title', 'Sample toast');
11
9
 
12
10
  const message = text('message', '');
@@ -31,9 +29,7 @@ export const all = () => {
31
29
  });
32
30
  }
33
31
 
34
- return (
35
- <Toast appearance={appearance} title={title} message={message} onClose={action('on-close clicked')} {...props} />
36
- );
32
+ return <Toast title={title} message={message} onClose={action('on-close clicked')} {...props} />;
37
33
  };
38
34
 
39
35
  export default {
@@ -1,9 +1,10 @@
1
1
  import * as React from 'react';
2
- import Toast, { Appearance } from '../../Toast';
2
+ import Toast from '../../Toast';
3
+ import { MessageAppearance } from '@/common.type';
3
4
 
4
5
  // CSF format story
5
6
  export const appearance = () => {
6
- const appearances: Appearance[] = ['default', 'info', 'success', 'alert', 'warning'];
7
+ const appearances: MessageAppearance[] = ['info', 'success', 'alert', 'warning'];
7
8
  return (
8
9
  <div className="d-flex">
9
10
  {appearances.map((appear, ind) => {
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { text } from '@storybook/addon-knobs';
3
- import Toast, { Appearance } from '../../Toast';
3
+ import Toast from '../../Toast';
4
+ import { MessageAppearance } from '@/common.type';
4
5
 
5
6
  // CSF format story
6
7
  export const toastWithDescription = () => {
7
- const appearances: Appearance[] = ['default', 'info', 'success', 'alert', 'warning'];
8
+ const appearances: MessageAppearance[] = ['info', 'success', 'alert', 'warning'];
8
9
 
9
10
  const message = text('message', 'Outreach was sent');
10
11
  return (
@@ -1,11 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { text } from '@storybook/addon-knobs';
3
3
  import { action } from '@storybook/addon-actions';
4
- import Toast, { Appearance } from '../../Toast';
4
+ import Toast from '../../Toast';
5
+ import { MessageAppearance } from '@/common.type';
5
6
 
6
7
  // CSF format story
7
8
  export const toastWithAction = () => {
8
- const appearances: Appearance[] = ['default', 'info', 'success', 'alert', 'warning'];
9
+ const appearances: MessageAppearance[] = ['info', 'success', 'alert', 'warning'];
9
10
 
10
11
  const message = text('message', 'Outreach was sent');
11
12
 
@@ -3,7 +3,7 @@ import { render } from '@testing-library/react';
3
3
  import { testHelper, filterUndefined, valueHelper, arrayHelper, testMessageHelper } from '@/utils/testHelper';
4
4
  import Toast, { ToastProps as Props } from '../Toast';
5
5
 
6
- const appearance = ['default', 'info', 'success', 'alert', 'warning'];
6
+ const appearance = ['info', 'success', 'alert', 'warning'];
7
7
  const StringValue = 'Sample string';
8
8
  const FunctionValue = jest.fn();
9
9
  const Actions = [