@nypl/design-system-react-components 0.25.12 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/CHANGELOG.md +131 -1
  2. package/README.md +10 -10
  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 +1 -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 +1 -0
  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 +2 -0
  32. package/dist/components/Logo/LogoTypes.d.ts +4 -2
  33. package/dist/components/Notification/Notification.d.ts +7 -7
  34. package/dist/components/Pagination/Pagination.d.ts +2 -2
  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 +4 -4
  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 +17 -8
  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 +2075 -1468
  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 +2086 -1483
  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 +3 -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 -4
  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 +4 -14
  75. package/dist/theme/components/global.d.ts +25 -18
  76. package/dist/theme/components/heading.d.ts +53 -0
  77. package/dist/theme/components/helperErrorText.d.ts +1 -0
  78. package/dist/theme/components/hero.d.ts +21 -15
  79. package/dist/theme/components/image.d.ts +1 -1
  80. package/dist/theme/components/label.d.ts +9 -10
  81. package/dist/theme/components/list.d.ts +99 -9
  82. package/dist/theme/components/notification.d.ts +4 -4
  83. package/dist/theme/components/pagination.d.ts +2 -5
  84. package/dist/theme/components/radio.d.ts +7 -4
  85. package/dist/theme/components/radioGroup.d.ts +4 -2
  86. package/dist/theme/components/select.d.ts +37 -5
  87. package/dist/theme/components/skeletonLoader.d.ts +2 -2
  88. package/dist/theme/components/slider.d.ts +6 -3
  89. package/dist/theme/components/structuredContent.d.ts +197 -0
  90. package/dist/theme/components/textInput.d.ts +18 -6
  91. package/dist/theme/components/toggle.d.ts +20 -5
  92. package/dist/theme/foundations/global.d.ts +2 -0
  93. package/dist/theme/foundations/radii.d.ts +1 -0
  94. package/dist/theme/foundations/spacing.d.ts +46 -43
  95. package/package.json +5 -6
  96. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
  97. package/src/components/Accordion/Accordion.stories.mdx +150 -66
  98. package/src/components/Accordion/Accordion.test.tsx +65 -17
  99. package/src/components/Accordion/Accordion.tsx +61 -27
  100. package/src/components/Accordion/AccordionTypes.tsx +5 -0
  101. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
  102. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  103. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +37 -19
  104. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +57 -36
  105. package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
  106. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -1
  107. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
  108. package/src/components/Button/Button.stories.mdx +87 -23
  109. package/src/components/Button/Button.test.tsx +25 -0
  110. package/src/components/Button/Button.tsx +18 -7
  111. package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
  112. package/src/components/Card/Card.stories.mdx +493 -329
  113. package/src/components/Card/Card.test.tsx +138 -18
  114. package/src/components/Card/Card.tsx +151 -85
  115. package/src/components/Card/__snapshots__/Card.test.tsx.snap +221 -101
  116. package/src/components/Chakra/Center.stories.mdx +2 -2
  117. package/src/components/Chakra/Grid.stories.mdx +4 -4
  118. package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
  119. package/src/components/Checkbox/Checkbox.test.tsx +89 -10
  120. package/src/components/Checkbox/Checkbox.tsx +26 -16
  121. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
  122. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
  123. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
  124. package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
  125. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
  126. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
  127. package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
  128. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
  129. package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
  130. package/src/components/DatePicker/DatePicker.test.tsx +94 -15
  131. package/src/components/DatePicker/DatePicker.tsx +67 -58
  132. package/src/components/DatePicker/_DatePicker.scss +71 -13
  133. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
  134. package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
  135. package/src/components/Fieldset/Fieldset.test.tsx +58 -28
  136. package/src/components/Fieldset/Fieldset.tsx +35 -30
  137. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
  138. package/src/components/Form/Form.stories.mdx +118 -47
  139. package/src/components/Form/Form.test.tsx +59 -16
  140. package/src/components/Form/Form.tsx +89 -65
  141. package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
  142. package/src/components/Grid/GridTypes.tsx +7 -7
  143. package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
  144. package/src/components/Grid/SimpleGrid.test.tsx +24 -9
  145. package/src/components/Grid/SimpleGrid.tsx +29 -20
  146. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
  147. package/src/components/Heading/Heading.stories.mdx +56 -25
  148. package/src/components/Heading/Heading.test.tsx +17 -7
  149. package/src/components/Heading/Heading.tsx +60 -58
  150. package/src/components/Heading/HeadingTypes.tsx +1 -1
  151. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
  152. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
  153. package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
  154. package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
  155. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
  156. package/src/components/Hero/Hero.stories.mdx +143 -113
  157. package/src/components/Hero/Hero.test.tsx +146 -58
  158. package/src/components/Hero/Hero.tsx +144 -112
  159. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
  160. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
  161. package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
  162. package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
  163. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
  164. package/src/components/Icons/Icon.stories.mdx +80 -23
  165. package/src/components/Icons/Icon.test.tsx +51 -2
  166. package/src/components/Icons/Icon.tsx +93 -71
  167. package/src/components/Icons/IconTypes.tsx +1 -0
  168. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  169. package/src/components/Image/Image.stories.mdx +160 -71
  170. package/src/components/Image/Image.test.tsx +40 -48
  171. package/src/components/Image/Image.tsx +80 -48
  172. package/src/components/Image/ImageTypes.ts +4 -4
  173. package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
  174. package/src/components/Label/Label.stories.mdx +42 -20
  175. package/src/components/Label/Label.test.tsx +42 -17
  176. package/src/components/Label/Label.tsx +22 -13
  177. package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
  178. package/src/components/Link/Link.stories.mdx +25 -1
  179. package/src/components/Link/Link.test.tsx +21 -0
  180. package/src/components/Link/Link.tsx +16 -9
  181. package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
  182. package/src/components/List/List.stories.mdx +75 -40
  183. package/src/components/List/List.test.tsx +73 -22
  184. package/src/components/List/List.tsx +44 -28
  185. package/src/components/List/ListTypes.tsx +1 -1
  186. package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
  187. package/src/components/Logo/Logo.stories.mdx +40 -16
  188. package/src/components/Logo/Logo.test.tsx +29 -2
  189. package/src/components/Logo/Logo.tsx +28 -11
  190. package/src/components/Logo/LogoSvgs.tsx +4 -0
  191. package/src/components/Logo/LogoTypes.tsx +3 -1
  192. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
  193. package/src/components/Modal/Modal.stories.mdx +13 -0
  194. package/src/components/Notification/Notification.stories.mdx +29 -5
  195. package/src/components/Notification/Notification.test.tsx +23 -0
  196. package/src/components/Notification/Notification.tsx +53 -51
  197. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
  198. package/src/components/Pagination/Pagination.stories.mdx +27 -6
  199. package/src/components/Pagination/Pagination.test.tsx +55 -2
  200. package/src/components/Pagination/Pagination.tsx +12 -9
  201. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
  202. package/src/components/Placeholder/Placeholder.tsx +3 -1
  203. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
  204. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
  205. package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
  206. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
  207. package/src/components/Radio/Radio.stories.mdx +75 -11
  208. package/src/components/Radio/Radio.test.tsx +83 -9
  209. package/src/components/Radio/Radio.tsx +70 -62
  210. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +163 -5
  211. package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
  212. package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
  213. package/src/components/RadioGroup/RadioGroup.tsx +110 -101
  214. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
  215. package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
  216. package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
  217. package/src/components/SearchBar/SearchBar.tsx +20 -11
  218. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
  219. package/src/components/Select/Select.stories.mdx +151 -62
  220. package/src/components/Select/Select.test.tsx +56 -44
  221. package/src/components/Select/Select.tsx +125 -104
  222. package/src/components/Select/SelectTypes.tsx +5 -0
  223. package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
  224. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
  225. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
  226. package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
  227. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
  228. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
  229. package/src/components/Slider/Slider.stories.mdx +123 -41
  230. package/src/components/Slider/Slider.test.tsx +65 -17
  231. package/src/components/Slider/Slider.tsx +30 -23
  232. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
  233. package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
  234. package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
  235. package/src/components/StatusBadge/StatusBadge.tsx +25 -20
  236. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
  237. package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
  238. package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
  239. package/src/components/StructuredContent/StructuredContent.tsx +98 -103
  240. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
  241. package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
  242. package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
  243. package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
  244. package/src/components/StyleGuide/ColorCard.tsx +4 -4
  245. package/src/components/StyleGuide/Colors.stories.mdx +1 -2
  246. package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
  247. package/src/components/StyleGuide/Forms.stories.mdx +27 -12
  248. package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
  249. package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
  250. package/src/components/StyleGuide/Typography.stories.mdx +47 -33
  251. package/src/components/Table/Table.stories.mdx +38 -11
  252. package/src/components/Table/Table.test.tsx +16 -1
  253. package/src/components/Table/Table.tsx +10 -8
  254. package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
  255. package/src/components/Tabs/Tabs.stories.mdx +59 -10
  256. package/src/components/Tabs/Tabs.test.tsx +29 -11
  257. package/src/components/Tabs/Tabs.tsx +28 -21
  258. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
  259. package/src/components/Template/Template.stories.mdx +73 -32
  260. package/src/components/Template/Template.test.tsx +68 -5
  261. package/src/components/Template/Template.tsx +89 -71
  262. package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
  263. package/src/components/Text/Text.stories.mdx +32 -15
  264. package/src/components/Text/Text.test.tsx +14 -11
  265. package/src/components/Text/Text.tsx +13 -16
  266. package/src/components/Text/TextTypes.tsx +1 -1
  267. package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
  268. package/src/components/TextInput/TextInput.stories.mdx +73 -27
  269. package/src/components/TextInput/TextInput.test.tsx +65 -50
  270. package/src/components/TextInput/TextInput.tsx +123 -115
  271. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
  272. package/src/components/Toggle/Toggle.stories.mdx +74 -26
  273. package/src/components/Toggle/Toggle.test.tsx +41 -10
  274. package/src/components/Toggle/Toggle.tsx +29 -26
  275. package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
  276. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +191 -4
  277. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
  278. package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
  279. package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
  280. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
  281. package/src/docs/Chakra.stories.mdx +50 -9
  282. package/src/docs/Welcome.stories.mdx +168 -0
  283. package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
  284. package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
  285. package/src/hooks/useCarouselStyles.stories.mdx +30 -0
  286. package/src/hooks/useCarouselStyles.ts +3 -2
  287. package/src/hooks/useNYPLTheme.stories.mdx +101 -0
  288. package/src/hooks/useNYPLTheme.ts +31 -7
  289. package/src/hooks/useWindowSize.stories.mdx +23 -0
  290. package/src/index.ts +11 -15
  291. package/src/styles/base/_place-holder.scss +1 -1
  292. package/src/theme/components/accordion.ts +7 -12
  293. package/src/theme/components/breadcrumb.ts +3 -0
  294. package/src/theme/components/button.ts +15 -7
  295. package/src/theme/components/card.ts +56 -36
  296. package/src/theme/components/checkbox.ts +10 -8
  297. package/src/theme/components/checkboxGroup.ts +4 -2
  298. package/src/theme/components/componentWrapper.ts +2 -2
  299. package/src/theme/components/customTable.ts +39 -31
  300. package/src/theme/components/fieldset.ts +1 -2
  301. package/src/theme/components/global.ts +29 -23
  302. package/src/theme/components/heading.ts +1 -1
  303. package/src/theme/components/helperErrorText.ts +1 -0
  304. package/src/theme/components/hero.ts +14 -16
  305. package/src/theme/components/icon.ts +5 -2
  306. package/src/theme/components/image.ts +1 -1
  307. package/src/theme/components/label.ts +4 -3
  308. package/src/theme/components/list.ts +73 -66
  309. package/src/theme/components/notification.ts +7 -7
  310. package/src/theme/components/pagination.ts +2 -5
  311. package/src/theme/components/progressIndicator.ts +3 -3
  312. package/src/theme/components/radio.ts +9 -9
  313. package/src/theme/components/radioGroup.ts +4 -2
  314. package/src/theme/components/select.ts +35 -16
  315. package/src/theme/components/skeletonLoader.ts +3 -3
  316. package/src/theme/components/slider.ts +8 -7
  317. package/src/theme/components/statusBadge.ts +2 -2
  318. package/src/theme/components/structuredContent.ts +66 -1
  319. package/src/theme/components/tabs.ts +2 -2
  320. package/src/theme/components/template.ts +9 -9
  321. package/src/theme/components/textInput.ts +13 -12
  322. package/src/theme/components/toggle.ts +43 -13
  323. package/src/theme/components/videoPlayer.ts +1 -1
  324. package/src/theme/foundations/colors.ts +1 -1
  325. package/src/theme/foundations/radii.ts +1 -0
  326. package/src/theme/foundations/spacing.ts +70 -22
  327. package/src/theme/foundations/typography.ts +2 -2
  328. package/src/utils/componentCategories.ts +28 -21
  329. package/dist/components/Card/CardTypes.d.ts +0 -4
  330. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
  331. package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
  332. package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
  333. package/dist/helpers/generateUUID.d.ts +0 -1
  334. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
  335. package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
  336. package/src/docs/Intro.stories.mdx +0 -53
  337. package/src/helpers/generateUUID.tsx +0 -5
@@ -1,22 +1,61 @@
1
- import * as React from "react";
1
+ import { Flex, Spacer } from "@chakra-ui/react";
2
2
  import { render, screen } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
3
4
  import { axe } from "jest-axe";
5
+ import * as React from "react";
4
6
  import renderer from "react-test-renderer";
5
7
 
6
- // import * as generateUUID from "../../helpers/generateUUID";
7
- import RadioGroup from "./RadioGroup";
8
8
  import Radio from "../Radio/Radio";
9
- import { RadioGroupLayoutTypes } from "./RadioGroupLayoutTypes";
10
- import userEvent from "@testing-library/user-event";
9
+ import RadioGroup from "./RadioGroup";
10
+ import { LayoutTypes } from "../../helpers/enums";
11
11
 
12
12
  describe("Radio Accessibility", () => {
13
- it("passes axe accessibility", async () => {
13
+ it("passes axe accessibility with string labels", async () => {
14
14
  const { container } = render(
15
- <RadioGroup labelText="RadioGroup example" name="a11y-test">
16
- <Radio value="2" labelText="Radio 2" />
17
- <Radio value="3" labelText="Radio 3" />
18
- <Radio value="4" labelText="Radio 4" />
19
- <Radio value="5" labelText="Radio 5" />
15
+ <RadioGroup
16
+ id="radioGroup"
17
+ labelText="RadioGroup example"
18
+ name="a11y-test"
19
+ >
20
+ <Radio id="radio2" value="2" labelText="Radio 2" />
21
+ <Radio id="radio3" value="3" labelText="Radio 3" />
22
+ <Radio id="radio4" value="4" labelText="Radio 4" />
23
+ <Radio id="radio5" value="5" labelText="Radio 5" />
24
+ </RadioGroup>
25
+ );
26
+ expect(await axe(container)).toHaveNoViolations();
27
+ });
28
+
29
+ it("passes axe accessibility with jsx labels", async () => {
30
+ const { container } = render(
31
+ <RadioGroup
32
+ id="radioGroup"
33
+ labelText="RadioGroup example"
34
+ name="a11y-test"
35
+ isFullWidth
36
+ >
37
+ <Radio
38
+ id="arts"
39
+ labelText={
40
+ <Flex>
41
+ <span>Arts</span>
42
+ <Spacer />
43
+ <span>4</span>
44
+ </Flex>
45
+ }
46
+ value="arts"
47
+ />
48
+ <Radio
49
+ id="English"
50
+ labelText={
51
+ <Flex>
52
+ <span>English</span>
53
+ <Spacer />
54
+ <span>23</span>
55
+ </Flex>
56
+ }
57
+ value="English"
58
+ />
20
59
  </RadioGroup>
21
60
  );
22
61
  expect(await axe(container)).toHaveNoViolations();
@@ -26,10 +65,10 @@ describe("Radio Accessibility", () => {
26
65
  describe("Radio Button", () => {
27
66
  it("renders with radio inputs and a label", () => {
28
67
  render(
29
- <RadioGroup labelText="Test Label" name="test1">
30
- <Radio value="2" labelText="Radio 2" />
31
- <Radio value="3" labelText="Radio 3" />
32
- <Radio value="4" labelText="Radio 4" />
68
+ <RadioGroup id="radioGroup" labelText="Test Label" name="test1">
69
+ <Radio id="radio2" value="2" labelText="Radio 2" />
70
+ <Radio id="radio3" value="3" labelText="Radio 3" />
71
+ <Radio id="radio4" value="4" labelText="Radio 4" />
33
72
  </RadioGroup>
34
73
  );
35
74
  expect(screen.getByText(/Test Label/i)).toBeInTheDocument();
@@ -41,10 +80,15 @@ describe("Radio Button", () => {
41
80
 
42
81
  it("renders with appropriate 'aria-label' attribute and value when 'showLabel' prop is set to false", () => {
43
82
  render(
44
- <RadioGroup labelText="Test Label" name="test2" showLabel={false}>
45
- <Radio value="2" labelText="Radio 2" />
46
- <Radio value="3" labelText="Radio 3" />
47
- <Radio value="4" labelText="Radio 4" />
83
+ <RadioGroup
84
+ id="radioGroup"
85
+ labelText="Test Label"
86
+ name="test2"
87
+ showLabel={false}
88
+ >
89
+ <Radio id="radio2" value="2" labelText="Radio 2" />
90
+ <Radio id="radio3" value="3" labelText="Radio 3" />
91
+ <Radio id="radio4" value="4" labelText="Radio 4" />
48
92
  </RadioGroup>
49
93
  );
50
94
  expect(screen.getByRole("radiogroup")).toHaveAttribute(
@@ -56,14 +100,15 @@ describe("Radio Button", () => {
56
100
  it("renders visible helper or error text", () => {
57
101
  const { rerender } = render(
58
102
  <RadioGroup
103
+ id="radioGroup"
59
104
  labelText="Test Label"
60
105
  name="test3"
61
106
  helperText="This is the helper text for the full group."
62
107
  invalidText="This is the error text :("
63
108
  >
64
- <Radio value="2" labelText="Radio 2" />
65
- <Radio value="3" labelText="Radio 3" />
66
- <Radio value="4" labelText="Radio 4" />
109
+ <Radio id="radio2" value="2" labelText="Radio 2" />
110
+ <Radio id="radio3" value="3" labelText="Radio 3" />
111
+ <Radio id="radio4" value="4" labelText="Radio 4" />
67
112
  </RadioGroup>
68
113
  );
69
114
  expect(
@@ -75,15 +120,16 @@ describe("Radio Button", () => {
75
120
 
76
121
  rerender(
77
122
  <RadioGroup
123
+ id="radioGroup"
78
124
  labelText="Test Label"
79
125
  name="test4"
80
126
  helperText="This is the helper text for the full group."
81
127
  invalidText="This is the error text :("
82
128
  isInvalid
83
129
  >
84
- <Radio value="2" labelText="Radio 2" />
85
- <Radio value="3" labelText="Radio 3" />
86
- <Radio value="4" labelText="Radio 4" />
130
+ <Radio id="radio2" value="2" labelText="Radio 2" />
131
+ <Radio id="radio3" value="3" labelText="Radio 3" />
132
+ <Radio id="radio4" value="4" labelText="Radio 4" />
87
133
  </RadioGroup>
88
134
  );
89
135
  expect(screen.getByText("This is the error text :(")).toBeVisible();
@@ -95,7 +141,7 @@ describe("Radio Button", () => {
95
141
  it("sets the RadioGroup's ID", () => {
96
142
  render(
97
143
  <RadioGroup labelText="Test Label" name="test5" id="some-id">
98
- <Radio value="2" labelText="Radio 2" />
144
+ <Radio id="radio2" value="2" labelText="Radio 2" />
99
145
  </RadioGroup>
100
146
  );
101
147
 
@@ -113,14 +159,15 @@ describe("Radio Button", () => {
113
159
  };
114
160
  render(
115
161
  <RadioGroup
162
+ id="radioGroup"
116
163
  labelText="Test Label"
117
164
  name="getValue"
118
165
  defaultValue="4"
119
166
  onChange={onChange}
120
167
  >
121
- <Radio value="2" labelText="Radio 2" />
122
- <Radio value="3" labelText="Radio 3" />
123
- <Radio value="4" labelText="Radio 4" />
168
+ <Radio id="radio2" value="2" labelText="Radio 2" />
169
+ <Radio id="radio3" value="3" labelText="Radio 3" />
170
+ <Radio id="radio4" value="4" labelText="Radio 4" />
124
171
  </RadioGroup>
125
172
  );
126
173
 
@@ -131,25 +178,17 @@ describe("Radio Button", () => {
131
178
  expect(newValue).toEqual("2");
132
179
  });
133
180
 
134
- // TODO: Figure out why this renders twice with two different calls
135
- // to the render function.
136
- // it("calls the UUID generation function if no id prop value is passed", () => {
137
- // const generateUUIDSpy = jest.spyOn(generateUUID, "default");
138
- // expect(generateUUIDSpy).toHaveBeenCalledTimes(0);
139
- // render(
140
- // <RadioGroup labelText="Test Label" name="test6">
141
- // <Radio value="2" labelText="Radio 2" id="radio2" />
142
- // </RadioGroup>
143
- // );
144
- // expect(generateUUIDSpy).toHaveBeenCalledTimes(1);
145
- // });
146
-
147
181
  it("sets the 'disabled' attribute for all its Radio children", () => {
148
182
  render(
149
- <RadioGroup labelText="Test Label" name="test7" isDisabled>
150
- <Radio value="2" labelText="Radio 2" />
151
- <Radio value="3" labelText="Radio 3" />
152
- <Radio value="4" labelText="Radio 4" />
183
+ <RadioGroup
184
+ id="radioGroup"
185
+ labelText="Test Label"
186
+ name="test7"
187
+ isDisabled
188
+ >
189
+ <Radio id="radio2" value="2" labelText="Radio 2" />
190
+ <Radio id="radio3" value="3" labelText="Radio 3" />
191
+ <Radio id="radio4" value="4" labelText="Radio 4" />
153
192
  </RadioGroup>
154
193
  );
155
194
  const radios = screen.getAllByRole("radio");
@@ -162,10 +201,15 @@ describe("Radio Button", () => {
162
201
 
163
202
  it("sets the 'required' attribute for all its Radio children", () => {
164
203
  render(
165
- <RadioGroup labelText="Test Label" name="test8" isRequired>
166
- <Radio value="2" labelText="Radio 2" />
167
- <Radio value="3" labelText="Radio 3" />
168
- <Radio value="4" labelText="Radio 4" />
204
+ <RadioGroup
205
+ id="radioGroup"
206
+ labelText="Test Label"
207
+ name="test8"
208
+ isRequired
209
+ >
210
+ <Radio id="radio2" value="2" labelText="Radio 2" />
211
+ <Radio id="radio3" value="3" labelText="Radio 3" />
212
+ <Radio id="radio4" value="4" labelText="Radio 4" />
169
213
  </RadioGroup>
170
214
  );
171
215
  const radios = screen.getAllByRole("radio");
@@ -182,14 +226,15 @@ describe("Radio Button", () => {
182
226
  it("sets the error state for all its Radio children", () => {
183
227
  render(
184
228
  <RadioGroup
229
+ id="radioGroup"
185
230
  labelText="Test Label"
186
231
  name="test9"
187
232
  isInvalid
188
233
  invalidText="There is an error :("
189
234
  >
190
- <Radio value="2" labelText="Radio 2" />
191
- <Radio value="3" labelText="Radio 3" />
192
- <Radio value="4" labelText="Radio 4" />
235
+ <Radio id="radio2" value="2" labelText="Radio 2" />
236
+ <Radio id="radio3" value="3" labelText="Radio 3" />
237
+ <Radio id="radio4" value="4" labelText="Radio 4" />
193
238
  </RadioGroup>
194
239
  );
195
240
  const radios = screen.getAllByRole("radio");
@@ -204,15 +249,16 @@ describe("Radio Button", () => {
204
249
  it("does not render the error text when 'showHelperInvalidText' is false", () => {
205
250
  render(
206
251
  <RadioGroup
252
+ id="radioGroup"
207
253
  labelText="Test Label"
208
254
  name="test10"
209
255
  isInvalid
210
256
  invalidText="There is an error :("
211
257
  showHelperInvalidText={false}
212
258
  >
213
- <Radio value="2" labelText="Radio 2" />
214
- <Radio value="3" labelText="Radio 3" />
215
- <Radio value="4" labelText="Radio 4" />
259
+ <Radio id="radio2" value="2" labelText="Radio 2" />
260
+ <Radio id="radio3" value="3" labelText="Radio 3" />
261
+ <Radio id="radio4" value="4" labelText="Radio 4" />
216
262
  </RadioGroup>
217
263
  );
218
264
  expect(screen.queryByText("There is an error :(")).not.toBeInTheDocument();
@@ -233,7 +279,7 @@ describe("Radio Button", () => {
233
279
  labelText="row"
234
280
  name="row"
235
281
  id="row"
236
- layout={RadioGroupLayoutTypes.Row}
282
+ layout={LayoutTypes.Row}
237
283
  >
238
284
  <Radio value="2" labelText="Radio 2" id="radio-2" />
239
285
  <Radio value="3" labelText="Radio 3" id="radio-3" />
@@ -279,26 +325,27 @@ describe("Radio Button", () => {
279
325
  </RadioGroup>
280
326
  )
281
327
  .toJSON();
282
- const noOptReqLabel = renderer
328
+ const isRequired = renderer
283
329
  .create(
284
330
  <RadioGroup
285
- labelText="no optional or required label"
286
- name="optReq"
287
- id="optReq"
288
- optReqFlag={false}
331
+ labelText="required"
332
+ name="required"
333
+ id="required"
334
+ isRequired
289
335
  >
290
336
  <Radio value="2" labelText="Radio 2" id="radio-2" />
291
337
  <Radio value="3" labelText="Radio 3" id="radio-3" />
292
338
  </RadioGroup>
293
339
  )
294
340
  .toJSON();
295
- const isRequired = renderer
341
+ const noRequiredLabel = renderer
296
342
  .create(
297
343
  <RadioGroup
298
- labelText="required"
299
- name="required"
300
- id="required"
344
+ labelText="no optional or required label"
345
+ name="noRequiredLabel"
346
+ id="noRequiredLabel"
301
347
  isRequired
348
+ showRequiredLabel={false}
302
349
  >
303
350
  <Radio value="2" labelText="Radio 2" id="radio-2" />
304
351
  <Radio value="3" labelText="Radio 3" id="radio-3" />
@@ -326,16 +373,79 @@ describe("Radio Button", () => {
326
373
  </RadioGroup>
327
374
  )
328
375
  .toJSON();
376
+ const withJSXRadioLabels = renderer
377
+ .create(
378
+ <RadioGroup
379
+ id="jsxLabels"
380
+ isFullWidth
381
+ labelText="RadioGroup example"
382
+ name="a11y-test"
383
+ >
384
+ <Radio
385
+ id="arts"
386
+ labelText={
387
+ <Flex>
388
+ <span>Arts</span>
389
+ <Spacer />
390
+ <span>4</span>
391
+ </Flex>
392
+ }
393
+ value="arts"
394
+ />
395
+ <Radio
396
+ id="English"
397
+ labelText={
398
+ <Flex>
399
+ <span>English</span>
400
+ <Spacer />
401
+ <span>23</span>
402
+ </Flex>
403
+ }
404
+ value="English"
405
+ />
406
+ </RadioGroup>
407
+ )
408
+ .toJSON();
409
+ const withChakraProps = renderer
410
+ .create(
411
+ <RadioGroup
412
+ labelText="chakra"
413
+ name="chakra"
414
+ id="chakra"
415
+ p="20px"
416
+ color="ui.error.primary"
417
+ >
418
+ <Radio value="2" labelText="Radio 2" id="radio-2" />
419
+ <Radio value="3" labelText="Radio 3" id="radio-3" />
420
+ </RadioGroup>
421
+ )
422
+ .toJSON();
423
+ const withOtherProps = renderer
424
+ .create(
425
+ <RadioGroup
426
+ labelText="props"
427
+ name="props"
428
+ id="props"
429
+ data-testid="props"
430
+ >
431
+ <Radio value="2" labelText="Radio 2" id="radio-2" />
432
+ <Radio value="3" labelText="Radio 3" id="radio-3" />
433
+ </RadioGroup>
434
+ )
435
+ .toJSON();
329
436
 
330
437
  expect(column).toMatchSnapshot();
331
438
  expect(row).toMatchSnapshot();
332
439
  expect(noLabel).toMatchSnapshot();
333
440
  expect(helperText).toMatchSnapshot();
334
441
  expect(invalidText).toMatchSnapshot();
335
- expect(noOptReqLabel).toMatchSnapshot();
442
+ expect(noRequiredLabel).toMatchSnapshot();
336
443
  expect(isRequired).toMatchSnapshot();
337
444
  expect(isInvalid).toMatchSnapshot();
338
445
  expect(isDisabled).toMatchSnapshot();
446
+ expect(withJSXRadioLabels).toMatchSnapshot();
447
+ expect(withChakraProps).toMatchSnapshot();
448
+ expect(withOtherProps).toMatchSnapshot();
339
449
  });
340
450
 
341
451
  it("should throw warning when a non-Radio component is used as a child", () => {
@@ -346,7 +456,22 @@ describe("Radio Button", () => {
346
456
  </RadioGroup>
347
457
  );
348
458
  expect(warn).toHaveBeenCalledWith(
349
- "Only `Radio` components are allowed inside the `RadioGroup` component."
459
+ "NYPL Reservoir RadioGroup: Only `Radio` components are allowed inside " +
460
+ "the `RadioGroup` component."
461
+ );
462
+ });
463
+
464
+ it("logs a warning when there is no `id` passed", () => {
465
+ const warn = jest.spyOn(console, "warn");
466
+ render(
467
+ // @ts-ignore: Typescript complains when a required prop is not passed, but
468
+ // here we don't want to pass the required prop to make sure the warning appears.
469
+ <RadioGroup labelText="RadioGroup example" name="a11y-test">
470
+ <Radio id="radio1" value="1" labelText="Radio 1" />
471
+ </RadioGroup>
472
+ );
473
+ expect(warn).toHaveBeenCalledWith(
474
+ "NYPL Reservoir RadioGroup: This component's required `id` prop was not passed."
350
475
  );
351
476
  });
352
477
  });
@@ -1,8 +1,8 @@
1
1
  import {
2
- Box,
2
+ chakra,
3
+ RadioGroup as ChakraRadioGroup,
3
4
  Stack,
4
5
  useMultiStyleConfig,
5
- useRadioGroup,
6
6
  } from "@chakra-ui/react";
7
7
  import * as React from "react";
8
8
 
@@ -12,9 +12,7 @@ import HelperErrorText, {
12
12
  } from "../HelperErrorText/HelperErrorText";
13
13
  import { spacing } from "../../theme/foundations/spacing";
14
14
  import Radio from "../Radio/Radio";
15
- import { RadioGroupLayoutTypes } from "./RadioGroupLayoutTypes";
16
- import generateUUID from "../../helpers/generateUUID";
17
-
15
+ import { LayoutTypes } from "../../helpers/enums";
18
16
  export interface RadioGroupProps {
19
17
  /** Additional class name. */
20
18
  className?: string;
@@ -23,11 +21,13 @@ export interface RadioGroupProps {
23
21
  /** Optional string to populate the HelperErrorText for standard state */
24
22
  helperText?: HelperErrorTextType;
25
23
  /** ID that other components can cross reference for accessibility purposes */
26
- id?: string;
24
+ id: string;
27
25
  /** Optional string to populate the HelperErrorText for error state */
28
26
  invalidText?: HelperErrorTextType;
29
27
  /** Adds the 'disabled' prop to the input when true. */
30
28
  isDisabled?: boolean;
29
+ /** Set's the `Radio`s' wrapper to be full width. */
30
+ isFullWidth?: boolean;
31
31
  /** Adds the 'aria-invalid' attribute to the input and
32
32
  * sets the error state when true. */
33
33
  isInvalid?: boolean;
@@ -37,121 +37,130 @@ export interface RadioGroupProps {
37
37
  * true, or an "aria-label" if `showLabel` is false. */
38
38
  labelText: string;
39
39
  /** Renders the Radio buttons in a row or column (default). */
40
- layout?: RadioGroupLayoutTypes;
40
+ layout?: LayoutTypes;
41
41
  /** The `name` prop indicates the form group for all the Radio children. */
42
42
  name: string;
43
43
  /** The action to perform on the `<input>`'s onChange function */
44
44
  onChange?: (value: string) => void;
45
- /** Whether or not to display "Required"/"Optional" in the label text. */
46
- optReqFlag?: boolean;
47
45
  /** Offers the ability to hide the helper/invalid text. */
48
46
  showHelperInvalidText?: boolean;
49
47
  /** Offers the ability to show the group's legend onscreen or hide it. Refer
50
48
  * to the `labelText` property for more information. */
51
49
  showLabel?: boolean;
50
+ /** Whether or not to display the "(Required)" text in the label text.
51
+ * True by default. */
52
+ showRequiredLabel?: boolean;
52
53
  }
53
54
 
54
55
  const noop = () => {};
55
- export const onChangeDefault = () => {
56
- return;
57
- };
58
-
59
- const RadioGroup = React.forwardRef<
60
- HTMLInputElement,
61
- React.PropsWithChildren<RadioGroupProps>
62
- >((props, ref?) => {
63
- const {
64
- children,
65
- className = "",
66
- defaultValue,
67
- helperText,
68
- id = generateUUID(),
69
- invalidText,
70
- isDisabled = false,
71
- isInvalid = false,
72
- isRequired = false,
73
- labelText,
74
- layout = RadioGroupLayoutTypes.Column,
75
- name,
76
- onChange = onChangeDefault,
77
- optReqFlag = true,
78
- showHelperInvalidText = true,
79
- showLabel = true,
80
- } = props;
81
- const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
82
- const spacingProp =
83
- layout === RadioGroupLayoutTypes.Column ? spacing.s : spacing.l;
84
- const newChildren = [];
85
56
 
86
- // Use Chakra's RadioGroup hook to set and get the proper props
87
- // or the custom components.
88
- const { getRootProps, getRadioProps } = useRadioGroup({
89
- name,
90
- defaultValue,
91
- onChange,
92
- });
93
- const radioGroupProps = getRootProps();
57
+ /**
58
+ * RadioGroup is a wrapper for DS `Radio` components that renders as a fieldset
59
+ * HTML element along with optional helper text. The `name` prop is essential
60
+ * for this form group element and is not needed for individual DS `Radio`
61
+ * components when `RadioGroup` is used.
62
+ */
63
+ export const RadioGroup = chakra(
64
+ React.forwardRef<HTMLInputElement, React.PropsWithChildren<RadioGroupProps>>(
65
+ (props, ref?) => {
66
+ const {
67
+ children,
68
+ className = "",
69
+ defaultValue,
70
+ helperText,
71
+ id,
72
+ invalidText,
73
+ isDisabled = false,
74
+ isFullWidth = false,
75
+ isInvalid = false,
76
+ isRequired = false,
77
+ labelText,
78
+ layout = LayoutTypes.Column,
79
+ name,
80
+ onChange,
81
+ showHelperInvalidText = true,
82
+ showLabel = true,
83
+ showRequiredLabel = true,
84
+ ...rest
85
+ } = props;
86
+ const [value, setValue] = React.useState(defaultValue);
87
+ const footnote: HelperErrorTextType = isInvalid
88
+ ? invalidText
89
+ : helperText;
90
+ const spacingProp = layout === LayoutTypes.Column ? spacing.s : spacing.l;
91
+ const newChildren: JSX.Element[] = [];
92
+ // Get the Chakra-based styles for the custom elements in this component.
93
+ const styles = useMultiStyleConfig("RadioGroup", { isFullWidth });
94
+ // Props for the `ChakraRadioGroup` component.
95
+ const radioGroupProps = {
96
+ "aria-label": !showLabel ? labelText : undefined,
97
+ name,
98
+ onChange: (selected: string) => {
99
+ setValue(selected);
100
+ onChange && onChange(selected);
101
+ },
102
+ ref,
103
+ value,
104
+ };
94
105
 
95
- // Go through the Radio children and update them as needed.
96
- React.Children.map(children, (child: React.ReactElement, i) => {
97
- if (child.type !== Radio) {
98
- // Special case for Storybook MDX documentation.
99
- if (child.props.mdxType && child.props.mdxType === "Radio") {
100
- noop();
101
- } else {
106
+ if (!id) {
102
107
  console.warn(
103
- "Only `Radio` components are allowed inside the `RadioGroup` component."
108
+ "NYPL Reservoir RadioGroup: This component's required `id` prop was not passed."
104
109
  );
105
110
  }
106
- }
107
111
 
108
- const chakraRadioProps = getRadioProps({
109
- value: child.props.value,
110
- } as any);
112
+ // Go through the Radio children and update them as needed.
113
+ React.Children.map(children, (child: React.ReactElement, key) => {
114
+ if (child?.type !== Radio) {
115
+ // Special case for Storybook MDX documentation.
116
+ if (child.props?.mdxType && child.props?.mdxType === "Radio") {
117
+ noop();
118
+ } else {
119
+ console.warn(
120
+ "NYPL Reservoir RadioGroup: Only `Radio` components are allowed " +
121
+ "inside the `RadioGroup` component."
122
+ );
123
+ }
124
+ }
111
125
 
112
- if (child !== undefined && child !== null) {
113
- const newProps = { key: i, isDisabled, isInvalid, isRequired };
114
- if (child.props.value === defaultValue) {
115
- newProps["checked"] = true;
116
- }
117
- newChildren.push(
118
- React.cloneElement(child, { ...newProps, ...chakraRadioProps })
126
+ if (child !== undefined && child !== null) {
127
+ const newProps = {
128
+ key,
129
+ isDisabled,
130
+ isInvalid,
131
+ isRequired,
132
+ };
133
+ newChildren.push(React.cloneElement(child, newProps));
134
+ }
135
+ });
136
+
137
+ return (
138
+ <Fieldset
139
+ className={className}
140
+ id={`radio-group-${id}`}
141
+ isLegendHidden={!showLabel}
142
+ isRequired={isRequired}
143
+ legendText={labelText}
144
+ showRequiredLabel={showRequiredLabel}
145
+ {...rest}
146
+ >
147
+ <ChakraRadioGroup {...radioGroupProps}>
148
+ <Stack direction={[layout]} spacing={spacingProp} sx={styles.stack}>
149
+ {newChildren}
150
+ </Stack>
151
+ </ChakraRadioGroup>
152
+ {footnote && showHelperInvalidText && (
153
+ <HelperErrorText
154
+ additionalStyles={styles.helperErrorText}
155
+ id={`${id}-helperErrorText`}
156
+ isInvalid={isInvalid}
157
+ text={footnote}
158
+ />
159
+ )}
160
+ </Fieldset>
119
161
  );
120
162
  }
121
- });
122
-
123
- // Get the Chakra-based styles for the custom elements in this component.
124
- const styles = useMultiStyleConfig("RadioGroup", {});
125
-
126
- return (
127
- <Fieldset
128
- className={className}
129
- id={`radio-group-${id}`}
130
- isLegendHidden={!showLabel}
131
- legendText={labelText}
132
- optReqFlag={optReqFlag}
133
- >
134
- <Stack
135
- aria-label={!showLabel ? labelText : null}
136
- direction={[layout]}
137
- spacing={spacingProp}
138
- ref={ref}
139
- {...radioGroupProps}
140
- sx={styles.stack}
141
- >
142
- {newChildren}
143
- </Stack>
144
- {footnote && showHelperInvalidText && (
145
- <Box __css={styles.helper}>
146
- <HelperErrorText
147
- id={`${id}-helperErrorText`}
148
- isInvalid={isInvalid}
149
- text={footnote}
150
- />
151
- </Box>
152
- )}
153
- </Fieldset>
154
- );
155
- });
163
+ )
164
+ );
156
165
 
157
166
  export default RadioGroup;