@nypl/design-system-react-components 0.25.11 → 0.26.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 (347) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +14 -26
  3. package/dist/components/Accordion/Accordion.d.ts +6 -4
  4. package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
  6. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +2 -1
  7. package/dist/components/Button/Button.d.ts +2 -2
  8. package/dist/components/Card/Card.d.ts +22 -29
  9. package/dist/components/Checkbox/Checkbox.d.ts +3 -3
  10. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
  11. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
  12. package/dist/components/DatePicker/DatePicker.d.ts +5 -6
  13. package/dist/components/Fieldset/Fieldset.d.ts +5 -6
  14. package/dist/components/Form/Form.d.ts +6 -6
  15. package/dist/components/Grid/GridTypes.d.ts +7 -7
  16. package/dist/components/Grid/SimpleGrid.d.ts +1 -1
  17. package/dist/components/Heading/Heading.d.ts +5 -5
  18. package/dist/components/Heading/HeadingTypes.d.ts +1 -1
  19. package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
  20. package/dist/components/Hero/Hero.d.ts +9 -5
  21. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
  22. package/dist/components/Icons/Icon.d.ts +2 -1
  23. package/dist/components/Icons/IconTypes.d.ts +10 -7
  24. package/dist/components/Image/Image.d.ts +27 -9
  25. package/dist/components/Image/ImageTypes.d.ts +4 -4
  26. package/dist/components/Label/Label.d.ts +7 -4
  27. package/dist/components/Link/Link.d.ts +1 -1
  28. package/dist/components/List/List.d.ts +11 -11
  29. package/dist/components/List/ListTypes.d.ts +1 -1
  30. package/dist/components/Logo/Logo.d.ts +2 -1
  31. package/dist/components/Logo/LogoSvgs.d.ts +8 -0
  32. package/dist/components/Logo/LogoTypes.d.ts +10 -2
  33. package/dist/components/Notification/Notification.d.ts +7 -7
  34. package/dist/components/Pagination/Pagination.d.ts +8 -4
  35. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
  36. package/dist/components/Radio/Radio.d.ts +5 -7
  37. package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
  38. package/dist/components/SearchBar/SearchBar.d.ts +5 -5
  39. package/dist/components/Select/Select.d.ts +12 -8
  40. package/dist/components/Select/SelectTypes.d.ts +4 -0
  41. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
  42. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
  43. package/dist/components/Slider/Slider.d.ts +6 -4
  44. package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
  45. package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
  46. package/dist/components/Table/Table.d.ts +1 -1
  47. package/dist/components/Tabs/Tabs.d.ts +7 -6
  48. package/dist/components/Template/Template.d.ts +18 -9
  49. package/dist/components/Text/Text.d.ts +4 -4
  50. package/dist/components/Text/TextTypes.d.ts +1 -1
  51. package/dist/components/TextInput/TextInput.d.ts +7 -7
  52. package/dist/components/Toggle/Toggle.d.ts +8 -10
  53. package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
  54. package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
  55. package/dist/design-system-react-components.cjs.development.js +2802 -1686
  56. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  57. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  58. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  59. package/dist/design-system-react-components.esm.js +2811 -1699
  60. package/dist/design-system-react-components.esm.js.map +1 -1
  61. package/dist/helpers/enums.d.ts +4 -0
  62. package/dist/hooks/useCarouselStyles.d.ts +3 -2
  63. package/dist/hooks/useNYPLTheme.d.ts +12 -0
  64. package/dist/index.d.ts +11 -9
  65. package/dist/styles.css +1 -1
  66. package/dist/theme/components/accordion.d.ts +7 -12
  67. package/dist/theme/components/breadcrumb.d.ts +6 -0
  68. package/dist/theme/components/button.d.ts +10 -2
  69. package/dist/theme/components/card.d.ts +44 -24
  70. package/dist/theme/components/checkbox.d.ts +6 -6
  71. package/dist/theme/components/checkboxGroup.d.ts +4 -2
  72. package/dist/theme/components/componentWrapper.d.ts +2 -2
  73. package/dist/theme/components/customTable.d.ts +84 -1
  74. package/dist/theme/components/fieldset.d.ts +6 -14
  75. package/dist/theme/components/global.d.ts +37 -29
  76. package/dist/theme/components/globalMixins.d.ts +8 -8
  77. package/dist/theme/components/heading.d.ts +53 -0
  78. package/dist/theme/components/helperErrorText.d.ts +1 -0
  79. package/dist/theme/components/hero.d.ts +21 -15
  80. package/dist/theme/components/image.d.ts +1 -1
  81. package/dist/theme/components/label.d.ts +9 -10
  82. package/dist/theme/components/list.d.ts +105 -9
  83. package/dist/theme/components/notification.d.ts +7 -4
  84. package/dist/theme/components/pagination.d.ts +2 -5
  85. package/dist/theme/components/radio.d.ts +10 -6
  86. package/dist/theme/components/radioGroup.d.ts +4 -2
  87. package/dist/theme/components/select.d.ts +38 -13
  88. package/dist/theme/components/skeletonLoader.d.ts +2 -2
  89. package/dist/theme/components/slider.d.ts +14 -7
  90. package/dist/theme/components/structuredContent.d.ts +197 -0
  91. package/dist/theme/components/textInput.d.ts +22 -14
  92. package/dist/theme/components/toggle.d.ts +25 -6
  93. package/dist/theme/foundations/global.d.ts +33 -3
  94. package/dist/theme/foundations/radii.d.ts +1 -0
  95. package/dist/theme/foundations/spacing.d.ts +46 -43
  96. package/dist/utils/utils.d.ts +10 -0
  97. package/package.json +5 -6
  98. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
  99. package/src/components/Accordion/Accordion.stories.mdx +150 -66
  100. package/src/components/Accordion/Accordion.test.tsx +65 -17
  101. package/src/components/Accordion/Accordion.tsx +61 -27
  102. package/src/components/Accordion/AccordionTypes.tsx +5 -0
  103. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
  104. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  105. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +53 -18
  106. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +66 -35
  107. package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
  108. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +2 -1
  109. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +308 -10
  110. package/src/components/Button/Button.stories.mdx +87 -23
  111. package/src/components/Button/Button.test.tsx +25 -0
  112. package/src/components/Button/Button.tsx +18 -7
  113. package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
  114. package/src/components/Card/Card.stories.mdx +493 -329
  115. package/src/components/Card/Card.test.tsx +138 -18
  116. package/src/components/Card/Card.tsx +151 -85
  117. package/src/components/Card/__snapshots__/Card.test.tsx.snap +220 -100
  118. package/src/components/Chakra/Center.stories.mdx +2 -2
  119. package/src/components/Chakra/Grid.stories.mdx +4 -4
  120. package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
  121. package/src/components/Checkbox/Checkbox.test.tsx +89 -10
  122. package/src/components/Checkbox/Checkbox.tsx +27 -16
  123. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
  124. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
  125. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
  126. package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
  127. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
  128. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
  129. package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
  130. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
  131. package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
  132. package/src/components/DatePicker/DatePicker.test.tsx +94 -15
  133. package/src/components/DatePicker/DatePicker.tsx +67 -58
  134. package/src/components/DatePicker/_DatePicker.scss +71 -13
  135. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
  136. package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
  137. package/src/components/Fieldset/Fieldset.test.tsx +58 -28
  138. package/src/components/Fieldset/Fieldset.tsx +35 -30
  139. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
  140. package/src/components/Form/Form.stories.mdx +118 -47
  141. package/src/components/Form/Form.test.tsx +59 -16
  142. package/src/components/Form/Form.tsx +89 -65
  143. package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
  144. package/src/components/Grid/GridTypes.tsx +7 -7
  145. package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
  146. package/src/components/Grid/SimpleGrid.test.tsx +24 -9
  147. package/src/components/Grid/SimpleGrid.tsx +29 -20
  148. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
  149. package/src/components/Heading/Heading.stories.mdx +56 -25
  150. package/src/components/Heading/Heading.test.tsx +17 -7
  151. package/src/components/Heading/Heading.tsx +60 -58
  152. package/src/components/Heading/HeadingTypes.tsx +1 -1
  153. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
  154. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
  155. package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
  156. package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
  157. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
  158. package/src/components/Hero/Hero.stories.mdx +143 -113
  159. package/src/components/Hero/Hero.test.tsx +146 -58
  160. package/src/components/Hero/Hero.tsx +144 -112
  161. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
  162. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
  163. package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
  164. package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
  165. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
  166. package/src/components/Icons/Icon.stories.mdx +80 -23
  167. package/src/components/Icons/Icon.test.tsx +51 -2
  168. package/src/components/Icons/Icon.tsx +93 -71
  169. package/src/components/Icons/IconTypes.tsx +9 -6
  170. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  171. package/src/components/Image/Image.stories.mdx +160 -71
  172. package/src/components/Image/Image.test.tsx +40 -48
  173. package/src/components/Image/Image.tsx +80 -48
  174. package/src/components/Image/ImageTypes.ts +4 -4
  175. package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
  176. package/src/components/Label/Label.stories.mdx +42 -20
  177. package/src/components/Label/Label.test.tsx +42 -17
  178. package/src/components/Label/Label.tsx +22 -13
  179. package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
  180. package/src/components/Link/Link.stories.mdx +25 -1
  181. package/src/components/Link/Link.test.tsx +21 -0
  182. package/src/components/Link/Link.tsx +16 -9
  183. package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
  184. package/src/components/List/List.stories.mdx +75 -40
  185. package/src/components/List/List.test.tsx +73 -22
  186. package/src/components/List/List.tsx +44 -28
  187. package/src/components/List/ListTypes.tsx +1 -1
  188. package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
  189. package/src/components/Logo/Logo.stories.mdx +40 -16
  190. package/src/components/Logo/Logo.test.tsx +29 -2
  191. package/src/components/Logo/Logo.tsx +28 -11
  192. package/src/components/Logo/LogoSvgs.tsx +16 -0
  193. package/src/components/Logo/LogoTypes.tsx +9 -1
  194. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
  195. package/src/components/Modal/Modal.stories.mdx +13 -0
  196. package/src/components/Notification/Notification.stories.mdx +34 -5
  197. package/src/components/Notification/Notification.test.tsx +43 -9
  198. package/src/components/Notification/Notification.tsx +59 -55
  199. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +256 -32
  200. package/src/components/Pagination/Pagination.stories.mdx +76 -13
  201. package/src/components/Pagination/Pagination.test.tsx +116 -5
  202. package/src/components/Pagination/Pagination.tsx +54 -29
  203. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +247 -30
  204. package/src/components/Placeholder/Placeholder.tsx +3 -1
  205. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
  206. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
  207. package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
  208. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
  209. package/src/components/Radio/Radio.stories.mdx +75 -11
  210. package/src/components/Radio/Radio.test.tsx +83 -9
  211. package/src/components/Radio/Radio.tsx +70 -61
  212. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +168 -10
  213. package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
  214. package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
  215. package/src/components/RadioGroup/RadioGroup.tsx +110 -101
  216. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
  217. package/src/components/SearchBar/SearchBar.stories.mdx +104 -39
  218. package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +66 -6
  219. package/src/components/SearchBar/SearchBar.tsx +23 -13
  220. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
  221. package/src/components/Select/Select.stories.mdx +151 -62
  222. package/src/components/Select/Select.test.tsx +56 -44
  223. package/src/components/Select/Select.tsx +125 -104
  224. package/src/components/Select/SelectTypes.tsx +5 -0
  225. package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
  226. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
  227. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
  228. package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
  229. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
  230. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
  231. package/src/components/Slider/Slider.stories.mdx +123 -41
  232. package/src/components/Slider/Slider.test.tsx +65 -17
  233. package/src/components/Slider/Slider.tsx +34 -24
  234. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
  235. package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
  236. package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
  237. package/src/components/StatusBadge/StatusBadge.tsx +25 -20
  238. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
  239. package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
  240. package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
  241. package/src/components/StructuredContent/StructuredContent.tsx +98 -103
  242. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
  243. package/src/components/StyleGuide/Bidirectionality.stories.mdx +9 -9
  244. package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
  245. package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
  246. package/src/components/StyleGuide/ColorCard.tsx +4 -4
  247. package/src/components/StyleGuide/Colors.stories.mdx +34 -20
  248. package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
  249. package/src/components/StyleGuide/Forms.stories.mdx +27 -12
  250. package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
  251. package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
  252. package/src/components/StyleGuide/Typography.stories.mdx +47 -33
  253. package/src/components/Table/Table.stories.mdx +38 -11
  254. package/src/components/Table/Table.test.tsx +16 -1
  255. package/src/components/Table/Table.tsx +10 -8
  256. package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
  257. package/src/components/Tabs/Tabs.stories.mdx +59 -10
  258. package/src/components/Tabs/Tabs.test.tsx +29 -11
  259. package/src/components/Tabs/Tabs.tsx +28 -21
  260. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
  261. package/src/components/Template/Template.stories.mdx +73 -32
  262. package/src/components/Template/Template.test.tsx +68 -5
  263. package/src/components/Template/Template.tsx +86 -72
  264. package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
  265. package/src/components/Text/Text.stories.mdx +32 -15
  266. package/src/components/Text/Text.test.tsx +14 -11
  267. package/src/components/Text/Text.tsx +13 -16
  268. package/src/components/Text/TextTypes.tsx +1 -1
  269. package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
  270. package/src/components/TextInput/TextInput.stories.mdx +73 -27
  271. package/src/components/TextInput/TextInput.test.tsx +65 -50
  272. package/src/components/TextInput/TextInput.tsx +123 -115
  273. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
  274. package/src/components/Toggle/Toggle.stories.mdx +74 -26
  275. package/src/components/Toggle/Toggle.test.tsx +41 -10
  276. package/src/components/Toggle/Toggle.tsx +31 -27
  277. package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
  278. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +195 -8
  279. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
  280. package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
  281. package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
  283. package/src/docs/Chakra.stories.mdx +51 -10
  284. package/src/docs/Welcome.stories.mdx +168 -0
  285. package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
  287. package/src/hooks/useCarouselStyles.stories.mdx +30 -0
  288. package/src/hooks/useCarouselStyles.ts +3 -2
  289. package/src/hooks/useNYPLTheme.stories.mdx +101 -0
  290. package/src/hooks/useNYPLTheme.ts +31 -7
  291. package/src/hooks/useWindowSize.stories.mdx +23 -0
  292. package/src/index.ts +11 -15
  293. package/src/styles/base/_place-holder.scss +3 -1
  294. package/src/styles.scss +0 -2
  295. package/src/theme/components/accordion.ts +7 -12
  296. package/src/theme/components/breadcrumb.ts +7 -0
  297. package/src/theme/components/button.ts +15 -7
  298. package/src/theme/components/card.ts +56 -36
  299. package/src/theme/components/checkbox.ts +12 -14
  300. package/src/theme/components/checkboxGroup.ts +4 -2
  301. package/src/theme/components/componentWrapper.ts +2 -2
  302. package/src/theme/components/customTable.ts +39 -31
  303. package/src/theme/components/fieldset.ts +3 -2
  304. package/src/theme/components/global.ts +42 -33
  305. package/src/theme/components/globalMixins.ts +8 -8
  306. package/src/theme/components/heading.ts +1 -1
  307. package/src/theme/components/helperErrorText.ts +1 -0
  308. package/src/theme/components/hero.ts +14 -16
  309. package/src/theme/components/icon.ts +5 -2
  310. package/src/theme/components/image.ts +1 -1
  311. package/src/theme/components/label.ts +4 -3
  312. package/src/theme/components/list.ts +76 -65
  313. package/src/theme/components/notification.ts +10 -7
  314. package/src/theme/components/pagination.ts +2 -5
  315. package/src/theme/components/progressIndicator.ts +3 -3
  316. package/src/theme/components/radio.ts +11 -14
  317. package/src/theme/components/radioGroup.ts +4 -2
  318. package/src/theme/components/select.ts +37 -18
  319. package/src/theme/components/skeletonLoader.ts +3 -3
  320. package/src/theme/components/slider.ts +19 -15
  321. package/src/theme/components/statusBadge.ts +2 -2
  322. package/src/theme/components/structuredContent.ts +66 -1
  323. package/src/theme/components/tabs.ts +2 -2
  324. package/src/theme/components/template.ts +9 -9
  325. package/src/theme/components/textInput.ts +13 -12
  326. package/src/theme/components/toggle.ts +76 -42
  327. package/src/theme/components/videoPlayer.ts +1 -1
  328. package/src/theme/foundations/colors.ts +20 -13
  329. package/src/theme/foundations/global.ts +17 -5
  330. package/src/theme/foundations/radii.ts +1 -0
  331. package/src/theme/foundations/spacing.ts +70 -22
  332. package/src/theme/foundations/typography.ts +3 -3
  333. package/src/utils/componentCategories.ts +28 -21
  334. package/src/utils/utils.ts +28 -0
  335. package/dist/components/Card/CardTypes.d.ts +0 -4
  336. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
  337. package/dist/components/Pagination/Pagination.stories.d.ts +0 -13
  338. package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
  339. package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
  340. package/dist/helpers/generateUUID.d.ts +0 -1
  341. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
  342. package/src/components/Pagination/Pagination.stories.tsx +0 -54
  343. package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
  344. package/src/docs/Intro.stories.mdx +0 -53
  345. package/src/helpers/generateUUID.tsx +0 -5
  346. package/src/styles/base/_03-base.scss +0 -25
  347. package/src/styles/base/_04-focus.scss +0 -22
@@ -1,3 +1,4 @@
1
+ import { ButtonGroup, Flex, Spacer } from "@chakra-ui/react";
1
2
  import {
2
3
  ArgsTable,
3
4
  Canvas,
@@ -7,17 +8,17 @@ import {
7
8
  } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
10
 
11
+ import Button from "../Button/Button";
12
+ import Form from "../Form/Form";
10
13
  import Radio from "../Radio/Radio";
11
- import RadioGroup, { onChangeDefault } from "./RadioGroup";
12
- import { RadioGroupLayoutTypes } from "./RadioGroupLayoutTypes";
14
+ import RadioGroup from "./RadioGroup";
15
+ import { LayoutTypes } from "../../helpers/enums";
16
+ import SimpleGrid from "../Grid/SimpleGrid";
13
17
  import { getCategory } from "../../utils/componentCategories";
14
18
  import DSProvider from "../../theme/provider";
15
19
  import { getStorybookEnumValues } from "../../utils/utils";
16
20
 
17
- export const enumValues = getStorybookEnumValues(
18
- RadioGroupLayoutTypes,
19
- "RadioGroupLayoutTypes"
20
- );
21
+ export const enumValues = getStorybookEnumValues(LayoutTypes, "LayoutTypes");
21
22
 
22
23
  <Meta
23
24
  title={getCategory("RadioGroup")}
@@ -37,6 +38,9 @@ export const enumValues = getStorybookEnumValues(
37
38
  isDisabled: {
38
39
  table: { defaultValue: { summary: false } },
39
40
  },
41
+ isFullWidth: {
42
+ table: { defaultValue: { summary: false } },
43
+ },
40
44
  isInvalid: {
41
45
  table: { defaultValue: { summary: false } },
42
46
  },
@@ -45,21 +49,21 @@ export const enumValues = getStorybookEnumValues(
45
49
  },
46
50
  layout: {
47
51
  control: { type: "select" },
48
- table: { defaultValue: { summary: "RadioGroupLayoutTypes.Column" } },
52
+ table: { defaultValue: { summary: "LayoutTypes.Column" } },
49
53
  options: enumValues.options,
50
54
  },
51
55
  key: { table: { disable: true } },
52
56
  onChange: { control: false },
53
57
  ref: { table: { disable: true } },
54
- optReqFlag: {
55
- table: { defaultValue: { summary: true } },
56
- },
57
58
  showHelperInvalidText: {
58
59
  table: { defaultValue: { summary: true } },
59
60
  },
60
61
  showLabel: {
61
62
  table: { defaultValue: { summary: true } },
62
63
  },
64
+ showRequiredLabel: {
65
+ table: { defaultValue: { summary: true } },
66
+ },
63
67
  }}
64
68
  />
65
69
 
@@ -68,10 +72,26 @@ export const enumValues = getStorybookEnumValues(
68
72
  | Component Version | DS Version |
69
73
  | ----------------- | ---------- |
70
74
  | Added | `0.25.0` |
71
- | Latest | `0.25.10` |
75
+ | Latest | `0.26.0` |
76
+
77
+ ## Table of Contents
78
+
79
+ - [Overview](#overview)
80
+ - [Component Props](#component-props)
81
+ - [Accessibility](#accessibility)
82
+ - [Layout Patterns](#layout-patterns)
83
+ - [Errored](#errored)
84
+ - [Required](#required)
85
+ - [Disabled](#disabled)
86
+ - [With JSX Element labels](#with-jsx-element-labels)
87
+ - [Getting Radio Input Values](#getting-radio-input-values)
88
+
89
+ ## Overview
72
90
 
73
91
  <Description of={RadioGroup} />
74
92
 
93
+ ## Component Props
94
+
75
95
  <Canvas withToolbar>
76
96
  <Story
77
97
  name="RadioGroup"
@@ -80,25 +100,26 @@ export const enumValues = getStorybookEnumValues(
80
100
  defaultValue: "4",
81
101
  helperText: "This is the helper text for the full group.",
82
102
  id: "radioGroup-id",
83
- invalidText: "error!",
103
+ invalidText: "An error occurred :(",
84
104
  isDisabled: false,
105
+ isFullWidth: false,
85
106
  isInvalid: false,
86
107
  isRequired: false,
87
108
  labelText: "Standard Radio Group",
88
- layout: "RadioGroupLayoutTypes.Column",
109
+ layout: "LayoutTypes.Column",
89
110
  name: "radio-story",
90
111
  onChange: undefined,
91
- optReqFlag: true,
92
112
  showHelperInvalidText: true,
93
113
  showLabel: true,
114
+ showRequiredLabel: true,
94
115
  }}
95
116
  >
96
117
  {(args) => (
97
118
  <RadioGroup {...args} layout={enumValues.getValue(args.layout)}>
98
- <Radio value="2" labelText="Radio 2" />
99
- <Radio value="3" labelText="Radio 3" />
100
- <Radio value="4" labelText="Radio 4" />
101
- <Radio value="5" labelText="Radio 5" />
119
+ <Radio id="main-2" labelText="Radio 2" value="2" />
120
+ <Radio id="main-3" labelText="Radio 3" value="3" />
121
+ <Radio id="main-4" labelText="Radio 4" value="4" />
122
+ <Radio id="main-5" labelText="Radio 5" value="5" />
102
123
  </RadioGroup>
103
124
  )}
104
125
  </Story>
@@ -106,6 +127,18 @@ export const enumValues = getStorybookEnumValues(
106
127
 
107
128
  <ArgsTable story="RadioGroup" />
108
129
 
130
+ ## Accessibility
131
+
132
+ The `RadioGroup` renders a group of `Radio` components that are wrapped in a
133
+ `<fieldset>` element. The `<fieldset>` element renders a `<legend>` element that
134
+ can be visually hidden through the `showLabel` prop.
135
+
136
+ Resources:
137
+
138
+ - [W3C ARIA radiogroup and radio example](https://www.w3.org/TR/2016/WD-wai-aria-practices-1.1-20160317/examples/radio/radio.html)
139
+ - [Deque University Radio and Radio Group](https://dequeuniversity.com/library/aria/radio-and-radio-group)
140
+ - [Chakra UI Radio](https://chakra-ui.com/docs/components/form/radio)
141
+
109
142
  ## Layout Patterns
110
143
 
111
144
  Use the `layout` prop to set the `Radio` buttons to display in a column or in
@@ -114,26 +147,28 @@ a row.
114
147
  <Canvas>
115
148
  <DSProvider>
116
149
  <RadioGroup
150
+ defaultValue="4"
151
+ id="column"
117
152
  labelText="Column (default)"
118
153
  name="column-example"
119
- optReqFlag={false}
120
154
  >
121
- <Radio value="2" labelText="Radio 2" />
122
- <Radio value="3" labelText="Radio 3" />
123
- <Radio value="4" labelText="Radio 4" />
124
- <Radio value="5" labelText="Radio 5" />
155
+ <Radio id="column-2" labelText="Radio 2" value="2" />
156
+ <Radio id="column-3" labelText="Radio 3" value="3" />
157
+ <Radio id="column-4" labelText="Radio 4" value="4" />
158
+ <Radio id="column-5" labelText="Radio 5" value="5" />
125
159
  </RadioGroup>
126
160
  <br />
127
161
  <RadioGroup
162
+ defaultValue="3"
163
+ id="row"
128
164
  labelText="Row"
129
165
  name="row-example"
130
- layout={RadioGroupLayoutTypes.Row}
131
- optReqFlag={false}
166
+ layout={LayoutTypes.Row}
132
167
  >
133
- <Radio value="2" labelText="Radio 2" />
134
- <Radio value="3" labelText="Radio 3" />
135
- <Radio value="4" labelText="Radio 4" />
136
- <Radio value="5" labelText="Radio 5" />
168
+ <Radio id="row-2" labelText="Radio 2" value="2" />
169
+ <Radio id="row-3" labelText="Radio 3" value="3" />
170
+ <Radio id="row-4" labelText="Radio 4" value="4" />
171
+ <Radio id="row-5" labelText="Radio 5" value="5" />
137
172
  </RadioGroup>
138
173
  </DSProvider>
139
174
  </Canvas>
@@ -143,16 +178,36 @@ a row.
143
178
  <Canvas>
144
179
  <DSProvider>
145
180
  <RadioGroup
146
- labelText="Errored Radio Group"
147
- name="errored-example"
148
- optReqFlag={false}
181
+ defaultValue="4"
182
+ id="errored"
149
183
  invalidText="Error message for the full group."
150
184
  isInvalid
185
+ labelText="Errored Radio Group"
186
+ name="errored-example"
151
187
  >
152
- <Radio value="2" labelText="Radio 2" />
153
- <Radio value="3" labelText="Radio 3" />
154
- <Radio value="4" labelText="Radio 4" />
155
- <Radio value="5" labelText="Radio 5" />
188
+ <Radio id="radio-2" labelText="Radio 2" value="2" />
189
+ <Radio id="radio-3" labelText="Radio 3" value="3" />
190
+ <Radio id="radio-4" labelText="Radio 4" value="4" />
191
+ <Radio id="radio-5" labelText="Radio 5" value="5" />
192
+ </RadioGroup>
193
+ </DSProvider>
194
+ </Canvas>
195
+
196
+ ## Required
197
+
198
+ <Canvas>
199
+ <DSProvider>
200
+ <RadioGroup
201
+ helperText="The reason for being required."
202
+ id="required"
203
+ isRequired
204
+ labelText="Required Radio Group"
205
+ name="required-example"
206
+ >
207
+ <Radio id="required-2" labelText="Radio 2" value="2" />
208
+ <Radio id="required-3" labelText="Radio 3" value="3" />
209
+ <Radio id="required-4" labelText="Radio 4" value="4" />
210
+ <Radio id="required-5" labelText="Radio 5" value="5" />
156
211
  </RadioGroup>
157
212
  </DSProvider>
158
213
  </Canvas>
@@ -162,53 +217,150 @@ a row.
162
217
  <Canvas>
163
218
  <DSProvider>
164
219
  <RadioGroup
165
- labelText="Disabled Radio Group"
166
- name="disabled-example"
167
- optReqFlag={false}
168
220
  helperText="The reason for being disabled."
221
+ id="disabled"
169
222
  isDisabled
223
+ labelText="Disabled Radio Group"
224
+ name="disabled-example"
170
225
  >
171
- <Radio value="2" labelText="Radio 2" />
172
- <Radio value="3" labelText="Radio 3" />
173
- <Radio value="4" labelText="Radio 4" />
174
- <Radio value="5" labelText="Radio 5" />
226
+ <Radio id="required-2" labelText="Radio 2" value="2" />
227
+ <Radio id="required-3" labelText="Radio 3" value="3" />
228
+ <Radio id="required-4" labelText="Radio 4" value="4" />
229
+ <Radio id="required-5" labelText="Radio 5" value="5" />
175
230
  </RadioGroup>
176
231
  </DSProvider>
177
232
  </Canvas>
178
233
 
179
- ## Getting Radio Data Values
234
+ ## With JSX Element labels
235
+
236
+ React elements can be passed to the `labelText` prop of the `Radio` component.
237
+ This is useful if you need to pass information as part of the label. For example,
238
+ if a `Radio` label needs to display how many items that option has, it can be
239
+ displayed with the help of the `Flex` and `Spacer` components.
240
+
241
+ Note: the width of `RadioGroup` is _not_ set to full width by default. In
242
+ order to make this work, pass in the `isFullWidth` prop.
243
+
244
+ <Canvas>
245
+ <DSProvider>
246
+ <RadioGroup
247
+ id="jsx-radiogroup"
248
+ isFullWidth
249
+ labelText="Radio Group"
250
+ name="radio-example"
251
+ >
252
+ <Radio
253
+ id="arts"
254
+ labelText={
255
+ <Flex>
256
+ <span>Arts</span>
257
+ <Spacer />
258
+ <span>4</span>
259
+ </Flex>
260
+ }
261
+ value="arts"
262
+ />
263
+ <Radio
264
+ id="english"
265
+ labelText={
266
+ <Flex>
267
+ <span>English</span>
268
+ <Spacer />
269
+ <span>23</span>
270
+ </Flex>
271
+ }
272
+ value="English"
273
+ />
274
+ <Radio
275
+ id="science"
276
+ labelText={
277
+ <Flex>
278
+ <span>Science</span>
279
+ <Spacer />
280
+ <span>10</span>
281
+ </Flex>
282
+ }
283
+ value="Science"
284
+ />
285
+ <Radio
286
+ id="math"
287
+ labelText={
288
+ <Flex>
289
+ <span>Math</span>
290
+ <Spacer />
291
+ <span>3</span>
292
+ </Flex>
293
+ }
294
+ value="Math"
295
+ />
296
+ </RadioGroup>
297
+ </DSProvider>
298
+ </Canvas>
299
+
300
+ ## Getting Radio Input Values
180
301
 
181
302
  ### Controlled Component using `name` and `onChange` props
182
303
 
183
- If your application uses controlled React components and the DS RadioGroup must
184
- be controlled, you can extract the data through the `name` and `onChange` props.
185
- This will be called every time a new `Radio` value is selected.
304
+ If your application uses controlled React components and the Reservoir Design
305
+ System (DS) `RadioGroup` must be controlled, you can extract the data through the
306
+ `name` and `onChange` props. This will be called every time a new `Radio` value
307
+ is selected. Open the browser's console to see the output.
186
308
 
187
309
  ```jsx
188
- const onChange = (data) => {
189
- // This will return the value selected as a string.
190
- console.log(data);
191
- };
192
- // ...
193
-
194
- // Example of the DS RadioGroup instance with the function above:
195
- <RadioGroup
196
- id="controlled-example"
197
- labelText="Radio Group"
198
- name="radioExample"
199
- defaultValue="3"
200
- onChange={onChange}
201
- >
202
- <Radio value="2" labelText="Radio 2" />
203
- <Radio value="3" labelText="Radio 3" />
204
- <Radio value="4" labelText="Radio 4" />
205
- </RadioGroup>;
310
+ function RadioGroupControlledExample() {
311
+ const onChange = (selected) => {
312
+ // This will return the value selected as a string.
313
+ console.log(`Controlled example. Selected: ${selected}`);
314
+ };
315
+ return (
316
+ <RadioGroup
317
+ defaultValue="3"
318
+ id="controlled-example"
319
+ labelText="Controlled RadioGroup"
320
+ name="radioGroupExample"
321
+ onChange={onChange}
322
+ >
323
+ <Radio id="2" labelText="Radio 2" value="2" />
324
+ <Radio id="3" labelText="Radio 3" value="3" />
325
+ <Radio id="4" labelText="Radio 4" value="4" />
326
+ </RadioGroup>
327
+ );
328
+ }
206
329
  ```
207
330
 
331
+ export function RadioGroupControlledExample() {
332
+ const onChange = (selected) => {
333
+ // This will return the value selected as a string.
334
+ console.log(`Controlled example. Selected: ${selected}`);
335
+ };
336
+ return (
337
+ <RadioGroup
338
+ defaultValue="3"
339
+ id="controlled-example"
340
+ labelText="Controlled RadioGroup"
341
+ name="radioGroupExample"
342
+ onChange={onChange}
343
+ >
344
+ <Radio id="2" labelText="Radio 2" value="2" />
345
+ <Radio id="3" labelText="Radio 3" value="3" />
346
+ <Radio id="4" labelText="Radio 4" value="4" />
347
+ </RadioGroup>
348
+ );
349
+ }
350
+
351
+ <Canvas>
352
+ <DSProvider>
353
+ <RadioGroupControlledExample />
354
+ </DSProvider>
355
+ </Canvas>
356
+
208
357
  ### Uncontrolled Component using `ref`s
209
358
 
359
+ **NOTE: this, along with Chakra's own `RadioGroup` component, are not working
360
+ at this time and we recommend to use the controlled pattern above.**
361
+
210
362
  If your application uses uncontrolled components, you can pass React `ref` props
211
- to the DS RadioGroup component to get the selected value from the DOM.
363
+ to the DS `RadioGroup` component to get the selected value from the DOM.
212
364
 
213
365
  The following example is using the `register` React `ref` from the
214
366
  `react-hook-form` package.
@@ -236,45 +388,92 @@ const submitForm = (formData) => {
236
388
  <Controller
237
389
  as={
238
390
  <RadioGroup
239
- id="uncontrolled-example"
240
- labelText="Radio Group"
241
- name="radioExample"
242
391
  defaultValue="3"
392
+ id="uncontrolled-example"
393
+ labelText="RadioGroup Uncontrolled"
394
+ name="radioGroupExample"
243
395
  ref={register()}
244
396
  >
245
- <Radio value="2" labelText="Radio 2" />
246
- <Radio value="3" labelText="Radio 3" />
247
- <Radio value="4" labelText="Radio 4" />
397
+ <Radio id="2" labelText="Radio 2" value="2" />
398
+ <Radio id="3" labelText="Radio 3" value="3" />
399
+ <Radio id="4" labelText="Radio 4" value="4" />
248
400
  </RadioGroup>
249
401
  }
250
- name="radioExample"
251
402
  control={control}
403
+ name="radioGroupExample"
252
404
  />
253
405
  </form>;
254
406
  ```
255
407
 
256
408
  The above is specific to `react-hook-form` but a similar pattern can be used
257
- with normal React `ref` values.
409
+ with normal React `ref` values. Open the browser's console to see the output
410
+ **although, at the moment, forwarding the ref to Chakra's own `RadioGroup`
411
+ component is not working.**
258
412
 
259
413
  ```jsx
260
- const radioGroupRef = React.createRef<HTMLInputElement>();
261
- // ...
262
- <RadioGroup
263
- id="uncontrolled-example"
264
- labelText="Radio Group"
265
- name="radioExample"
266
- defaultValue="3"
267
- ref={radioGroupRef}
268
- >
269
- <Radio value="2" labelText="Radio 2" />
270
- <Radio value="3" labelText="Radio 3" />
271
- <Radio value="4" labelText="Radio 4" />
272
- </RadioGroup>
273
-
274
- // ...
275
- // Get the value through:
276
- const onSubmit = () => {
277
- // ...
278
- const radioGroupValue = radioGroupRef.current.value;
279
- };
414
+ export function RadioGroupUncontrolledExample() {
415
+ const radioGroupRef = React.createRef();
416
+ // Get the value through:
417
+ const onSubmit = (e) => {
418
+ e.preventDefault();
419
+ const radioGroupValue = radioGroupRef.current.value;
420
+ console.log(`Uncontrolled example. Selected: ${radioGroupValue}`);
421
+ };
422
+ return (
423
+ <Form onSubmit={onSubmit}>
424
+ <SimpleGrid columns="1">
425
+ <RadioGroup
426
+ defaultValue="3"
427
+ id="uncontrolled-example"
428
+ labelText="Uncontrolled RadioGroup"
429
+ name="radioGroupExample"
430
+ ref={radioGroupRef}
431
+ >
432
+ <Radio id="2" labelText="Radio 2" value="2" />
433
+ <Radio id="3" labelText="Radio 3" value="3" />
434
+ <Radio id="4" labelText="Radio 4" value="4" />
435
+ </RadioGroup>
436
+ <ButtonGroup>
437
+ <Button type="submit">Submit</Button>
438
+ </ButtonGroup>
439
+ </SimpleGrid>
440
+ </Form>
441
+ );
442
+ }
280
443
  ```
444
+
445
+ export function RadioGroupUncontrolledExample() {
446
+ const radioGroupRef = React.createRef();
447
+ // Get the value through:
448
+ const onSubmit = (e) => {
449
+ e.preventDefault();
450
+ const radioGroupValue = radioGroupRef.current.value;
451
+ console.log(`Uncontrolled example. Selected: ${radioGroupValue}`);
452
+ };
453
+ return (
454
+ <Form onSubmit={onSubmit}>
455
+ <SimpleGrid columns="1">
456
+ <RadioGroup
457
+ defaultValue="3"
458
+ id="uncontrolled-example"
459
+ labelText="Uncontrolled RadioGroup"
460
+ name="radioGroupExample"
461
+ ref={radioGroupRef}
462
+ >
463
+ <Radio id="2" labelText="Radio 2" value="2" />
464
+ <Radio id="3" labelText="Radio 3" value="3" />
465
+ <Radio id="4" labelText="Radio 4" value="4" />
466
+ </RadioGroup>
467
+ <ButtonGroup>
468
+ <Button type="submit">Submit</Button>
469
+ </ButtonGroup>
470
+ </SimpleGrid>
471
+ </Form>
472
+ );
473
+ }
474
+
475
+ <Canvas>
476
+ <DSProvider>
477
+ <RadioGroupUncontrolledExample />
478
+ </DSProvider>
479
+ </Canvas>