@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,16 +1,32 @@
1
+ import { Flex, Spacer } from "@chakra-ui/react";
1
2
  import * as React from "react";
2
3
  import { render, screen } from "@testing-library/react";
3
4
  import { axe } from "jest-axe";
4
5
  import renderer from "react-test-renderer";
5
6
 
6
- import * as generateUUID from "../../helpers/generateUUID";
7
7
  import Radio from "./Radio";
8
8
 
9
9
  describe("Radio Accessibility", () => {
10
- it("passes axe accessibility", async () => {
10
+ it("passes axe accessibility test with string label", async () => {
11
11
  const { container } = render(<Radio id="inputID" labelText="Test Label" />);
12
12
  expect(await axe(container)).toHaveNoViolations();
13
13
  });
14
+
15
+ it("passes axe accessibility test with jsx label", async () => {
16
+ const { container } = render(
17
+ <Radio
18
+ id="jsxLabel"
19
+ labelText={
20
+ <Flex>
21
+ <span>Arts</span>
22
+ <Spacer />
23
+ <span>4</span>
24
+ </Flex>
25
+ }
26
+ />
27
+ );
28
+ expect(await axe(container)).toHaveNoViolations();
29
+ });
14
30
  });
15
31
 
16
32
  describe("Radio Button", () => {
@@ -76,13 +92,6 @@ describe("Radio Button", () => {
76
92
  expect(screen.getByRole("radio")).toHaveAttribute("id", "inputID");
77
93
  });
78
94
 
79
- it("calls the UUID generation function if no id prop value is passed", () => {
80
- const generateUUIDSpy = jest.spyOn(generateUUID, "default");
81
- expect(generateUUIDSpy).toHaveBeenCalledTimes(0);
82
- render(<Radio labelText="Hello" />);
83
- expect(generateUUIDSpy).toHaveBeenCalledTimes(1);
84
- });
85
-
86
95
  it("sets the 'checked' attribute", () => {
87
96
  render(
88
97
  <Radio
@@ -147,6 +156,40 @@ describe("Radio Button", () => {
147
156
  expect(screen.queryByText("There is an error!")).not.toBeInTheDocument();
148
157
  });
149
158
 
159
+ it("logs a warning if `labelText` is not a string and `showLabel` is false", () => {
160
+ const warn = jest.spyOn(console, "warn");
161
+ render(
162
+ <Radio
163
+ id="radio"
164
+ value="arts"
165
+ labelText={
166
+ <Flex>
167
+ <span>Arts</span>
168
+ <Spacer />
169
+ <span>4</span>
170
+ </Flex>
171
+ }
172
+ showLabel={false}
173
+ />
174
+ );
175
+
176
+ expect(warn).toHaveBeenCalledWith(
177
+ "NYPL Reservoir Radio: `labelText` must be a string when `showLabel` is false."
178
+ );
179
+ });
180
+
181
+ it("logs a warning when there is no `id` passed", () => {
182
+ const warn = jest.spyOn(console, "warn");
183
+ render(
184
+ // @ts-ignore: Typescript complains when a required prop is not passed, but
185
+ // here we don't want to pass the required prop to make sure the warning appears.
186
+ <Radio labelText="Arts" />
187
+ );
188
+ expect(warn).toHaveBeenCalledWith(
189
+ "NYPL Reservoir Radio: This component's required `id` prop was not passed."
190
+ );
191
+ });
192
+
150
193
  it("renders the UI snapshot correctly", () => {
151
194
  const primary = renderer
152
195
  .create(<Radio id="inputID" labelText="Test Label" />)
@@ -163,11 +206,42 @@ describe("Radio Button", () => {
163
206
  const isDisabled = renderer
164
207
  .create(<Radio id="radio-disabled" labelText="Test Label" isDisabled />)
165
208
  .toJSON();
209
+ const withJSXLabel = renderer
210
+ .create(
211
+ <Radio
212
+ id="jsxLabel"
213
+ labelText={
214
+ <Flex>
215
+ <span>Arts</span>
216
+ <Spacer />
217
+ <span>4</span>
218
+ </Flex>
219
+ }
220
+ value="arts"
221
+ />
222
+ )
223
+ .toJSON();
224
+ const withChakraProps = renderer
225
+ .create(
226
+ <Radio
227
+ id="chakra"
228
+ labelText="Test Label"
229
+ p="20px"
230
+ color="ui.error.primary"
231
+ />
232
+ )
233
+ .toJSON();
234
+ const withOtherProps = renderer
235
+ .create(<Radio id="props" labelText="Test Label" data-testid="props" />)
236
+ .toJSON();
166
237
 
167
238
  expect(primary).toMatchSnapshot();
168
239
  expect(isChecked).toMatchSnapshot();
169
240
  expect(isRequired).toMatchSnapshot();
170
241
  expect(isInvalid).toMatchSnapshot();
171
242
  expect(isDisabled).toMatchSnapshot();
243
+ expect(withJSXLabel).toMatchSnapshot();
244
+ expect(withChakraProps).toMatchSnapshot();
245
+ expect(withOtherProps).toMatchSnapshot();
172
246
  });
173
247
  });
@@ -1,22 +1,20 @@
1
- import * as React from "react";
2
1
  import {
3
- Box,
2
+ chakra,
4
3
  Radio as ChakraRadio,
5
4
  useMultiStyleConfig,
6
5
  } from "@chakra-ui/react";
6
+ import * as React from "react";
7
7
 
8
8
  import HelperErrorText, {
9
9
  HelperErrorTextType,
10
10
  } from "../HelperErrorText/HelperErrorText";
11
- import generateUUID from "../../helpers/generateUUID";
12
-
13
11
  export interface RadioProps {
14
12
  /** Additional class name. */
15
13
  className?: string;
16
14
  /** Optional string to populate the HelperErrorText for the standard state. */
17
15
  helperText?: HelperErrorTextType;
18
16
  /** ID that other components can cross reference for accessibility purposes */
19
- id?: string;
17
+ id: string;
20
18
  /** Optional string to populate the HelperErrorText for the error state
21
19
  * when `isInvalid` is true.
22
20
  */
@@ -26,19 +24,17 @@ export interface RadioProps {
26
24
  * Learn more about controlled and uncontrolled form fields: https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
27
25
  isChecked?: boolean;
28
26
  /** Adds the 'disabled' and `aria-disabled` attributes to the input when true.
29
- * This also makes the text italic and color scheme gray.
30
- */
27
+ * This also makes the text italic and color scheme gray. */
31
28
  isDisabled?: boolean;
32
29
  /** Adds the 'aria-invalid' attribute to the input when true. This also makes
33
- * the color theme "NYPL error" red for the button and text.
34
- */
30
+ * the color theme "NYPL error" red for the button and text. */
35
31
  isInvalid?: boolean;
36
32
  /** Adds the 'required' attribute to the input when true. */
37
33
  isRequired?: boolean;
38
34
  /** The radio button's label. This will serve as the text content for the
39
35
  * `<label>` element if `showlabel` is true, or an "aria-label" if `showLabel`
40
36
  * is false. */
41
- labelText: string;
37
+ labelText: string | JSX.Element;
42
38
  /** Used to reference the input element in forms. */
43
39
  name?: string;
44
40
  /** Should be passed along with `isChecked` for controlled components. */
@@ -52,66 +48,78 @@ export interface RadioProps {
52
48
  value?: string;
53
49
  }
54
50
 
55
- const Radio = React.forwardRef<HTMLInputElement, RadioProps>((props, ref?) => {
56
- const {
57
- className,
58
- helperText,
59
- id = generateUUID(),
60
- invalidText,
61
- isChecked,
62
- isDisabled = false,
63
- isInvalid = false,
64
- isRequired = false,
65
- labelText,
66
- name,
67
- onChange,
68
- showHelperInvalidText = true,
69
- showLabel = true,
70
- value,
71
- } = props;
72
- const styles = useMultiStyleConfig("Radio", {});
73
- const footnote = isInvalid ? invalidText : helperText;
74
- const attributes = {};
51
+ export const Radio = chakra(
52
+ React.forwardRef<HTMLInputElement, RadioProps>((props, ref?) => {
53
+ const {
54
+ className,
55
+ helperText,
56
+ id,
57
+ invalidText,
58
+ isChecked,
59
+ isDisabled = false,
60
+ isInvalid = false,
61
+ isRequired = false,
62
+ labelText,
63
+ name,
64
+ onChange,
65
+ showHelperInvalidText = true,
66
+ showLabel = true,
67
+ value,
68
+ ...rest
69
+ } = props;
70
+ const styles = useMultiStyleConfig("Radio", {});
71
+ const footnote = isInvalid ? invalidText : helperText;
72
+ const attributes = {};
73
+
74
+ if (!id) {
75
+ console.warn(
76
+ "NYPL Reservoir Radio: This component's required `id` prop was not passed."
77
+ );
78
+ }
75
79
 
76
- if (!showLabel) {
77
- attributes["aria-label"] =
78
- labelText && footnote ? `${labelText} - ${footnote}` : labelText;
79
- } else {
80
- if (footnote) {
80
+ if (!showLabel) {
81
+ if (typeof labelText !== "string") {
82
+ console.warn(
83
+ "NYPL Reservoir Radio: `labelText` must be a string when `showLabel` is false."
84
+ );
85
+ }
86
+ attributes["aria-label"] =
87
+ labelText && footnote ? `${labelText} - ${footnote}` : labelText;
88
+ } else if (footnote) {
81
89
  attributes["aria-describedby"] = `${id}-helperText`;
82
90
  }
83
- }
84
91
 
85
- return (
86
- <>
87
- <ChakraRadio
88
- className={className}
89
- id={id}
90
- isChecked={isChecked}
91
- isDisabled={isDisabled}
92
- isInvalid={isInvalid}
93
- isRequired={isRequired}
94
- name={name}
95
- onChange={onChange}
96
- value={value}
97
- ref={ref}
98
- alignItems="flex-start"
99
- __css={styles}
100
- {...attributes}
101
- >
102
- {showLabel && labelText}
103
- </ChakraRadio>
104
- {footnote && showHelperInvalidText && (
105
- <Box __css={styles.helper} aria-disabled={isDisabled}>
92
+ return (
93
+ <>
94
+ <ChakraRadio
95
+ className={className}
96
+ id={id}
97
+ isChecked={isChecked}
98
+ isDisabled={isDisabled}
99
+ isInvalid={isInvalid}
100
+ isRequired={isRequired}
101
+ name={name}
102
+ onChange={onChange}
103
+ value={value}
104
+ ref={ref}
105
+ alignItems="flex-start"
106
+ __css={styles}
107
+ {...attributes}
108
+ {...rest}
109
+ >
110
+ {showLabel && labelText}
111
+ </ChakraRadio>
112
+ {footnote && showHelperInvalidText && (
106
113
  <HelperErrorText
114
+ additionalStyles={styles.helperErrorText}
107
115
  id={`${id}-helperText`}
108
116
  isInvalid={isInvalid}
109
117
  text={footnote}
110
118
  />
111
- </Box>
112
- )}
113
- </>
114
- );
115
- });
119
+ )}
120
+ </>
121
+ );
122
+ })
123
+ );
116
124
 
117
125
  export default Radio;
@@ -32,7 +32,7 @@ exports[`Radio Button renders the UI snapshot correctly 1`] = `
32
32
  />
33
33
  <span
34
34
  aria-hidden={true}
35
- className="css-ssalds"
35
+ className="css-14wybg9"
36
36
  onMouseDown={[Function]}
37
37
  onMouseEnter={[Function]}
38
38
  onMouseLeave={[Function]}
@@ -81,7 +81,7 @@ exports[`Radio Button renders the UI snapshot correctly 2`] = `
81
81
  />
82
82
  <span
83
83
  aria-hidden={true}
84
- className="css-ssalds"
84
+ className="css-14wybg9"
85
85
  data-checked=""
86
86
  onMouseDown={[Function]}
87
87
  onMouseEnter={[Function]}
@@ -132,7 +132,7 @@ exports[`Radio Button renders the UI snapshot correctly 3`] = `
132
132
  />
133
133
  <span
134
134
  aria-hidden={true}
135
- className="css-ssalds"
135
+ className="css-14wybg9"
136
136
  onMouseDown={[Function]}
137
137
  onMouseEnter={[Function]}
138
138
  onMouseLeave={[Function]}
@@ -182,7 +182,7 @@ exports[`Radio Button renders the UI snapshot correctly 4`] = `
182
182
  />
183
183
  <span
184
184
  aria-hidden={true}
185
- className="css-ssalds"
185
+ className="css-14wybg9"
186
186
  data-invalid=""
187
187
  onMouseDown={[Function]}
188
188
  onMouseEnter={[Function]}
@@ -234,7 +234,7 @@ exports[`Radio Button renders the UI snapshot correctly 5`] = `
234
234
  />
235
235
  <span
236
236
  aria-hidden={true}
237
- className="css-ssalds"
237
+ className="css-14wybg9"
238
238
  data-disabled=""
239
239
  onMouseDown={[Function]}
240
240
  onMouseEnter={[Function]}
@@ -251,3 +251,161 @@ exports[`Radio Button renders the UI snapshot correctly 5`] = `
251
251
  </span>
252
252
  </label>
253
253
  `;
254
+
255
+ exports[`Radio Button renders the UI snapshot correctly 6`] = `
256
+ <label
257
+ className="chakra-radio css-13p0l12"
258
+ >
259
+ <input
260
+ checked={false}
261
+ className="chakra-radio__input"
262
+ disabled={false}
263
+ id="jsxLabel"
264
+ onBlur={[Function]}
265
+ onChange={[Function]}
266
+ onFocus={[Function]}
267
+ onKeyDown={[Function]}
268
+ onKeyUp={[Function]}
269
+ required={false}
270
+ style={
271
+ Object {
272
+ "border": "0px",
273
+ "clip": "rect(0px, 0px, 0px, 0px)",
274
+ "height": "1px",
275
+ "margin": "-1px",
276
+ "overflow": "hidden",
277
+ "padding": "0px",
278
+ "position": "absolute",
279
+ "whiteSpace": "nowrap",
280
+ "width": "1px",
281
+ }
282
+ }
283
+ type="radio"
284
+ value="arts"
285
+ />
286
+ <span
287
+ aria-hidden={true}
288
+ className="css-14wybg9"
289
+ onMouseDown={[Function]}
290
+ onMouseEnter={[Function]}
291
+ onMouseLeave={[Function]}
292
+ onMouseUp={[Function]}
293
+ />
294
+ <span
295
+ className="chakra-radio__label css-1y8kf23"
296
+ onMouseDown={[Function]}
297
+ onTouchStart={[Function]}
298
+ >
299
+ <div
300
+ className="css-k008qs"
301
+ >
302
+ <span>
303
+ Arts
304
+ </span>
305
+ <div
306
+ className="css-17xejub"
307
+ />
308
+ <span>
309
+ 4
310
+ </span>
311
+ </div>
312
+ </span>
313
+ </label>
314
+ `;
315
+
316
+ exports[`Radio Button renders the UI snapshot correctly 7`] = `
317
+ <label
318
+ className="chakra-radio css-13p0l12"
319
+ >
320
+ <input
321
+ checked={false}
322
+ className="chakra-radio__input"
323
+ disabled={false}
324
+ id="chakra"
325
+ onBlur={[Function]}
326
+ onChange={[Function]}
327
+ onFocus={[Function]}
328
+ onKeyDown={[Function]}
329
+ onKeyUp={[Function]}
330
+ required={false}
331
+ style={
332
+ Object {
333
+ "border": "0px",
334
+ "clip": "rect(0px, 0px, 0px, 0px)",
335
+ "height": "1px",
336
+ "margin": "-1px",
337
+ "overflow": "hidden",
338
+ "padding": "0px",
339
+ "position": "absolute",
340
+ "whiteSpace": "nowrap",
341
+ "width": "1px",
342
+ }
343
+ }
344
+ type="radio"
345
+ />
346
+ <span
347
+ aria-hidden={true}
348
+ className="css-1dwi2jm"
349
+ onMouseDown={[Function]}
350
+ onMouseEnter={[Function]}
351
+ onMouseLeave={[Function]}
352
+ onMouseUp={[Function]}
353
+ />
354
+ <span
355
+ className="chakra-radio__label css-1y8kf23"
356
+ onMouseDown={[Function]}
357
+ onTouchStart={[Function]}
358
+ >
359
+ Test Label
360
+ </span>
361
+ </label>
362
+ `;
363
+
364
+ exports[`Radio Button renders the UI snapshot correctly 8`] = `
365
+ <label
366
+ className="chakra-radio css-13p0l12"
367
+ >
368
+ <input
369
+ checked={false}
370
+ className="chakra-radio__input"
371
+ disabled={false}
372
+ id="props"
373
+ onBlur={[Function]}
374
+ onChange={[Function]}
375
+ onFocus={[Function]}
376
+ onKeyDown={[Function]}
377
+ onKeyUp={[Function]}
378
+ required={false}
379
+ style={
380
+ Object {
381
+ "border": "0px",
382
+ "clip": "rect(0px, 0px, 0px, 0px)",
383
+ "height": "1px",
384
+ "margin": "-1px",
385
+ "overflow": "hidden",
386
+ "padding": "0px",
387
+ "position": "absolute",
388
+ "whiteSpace": "nowrap",
389
+ "width": "1px",
390
+ }
391
+ }
392
+ type="radio"
393
+ />
394
+ <span
395
+ aria-hidden={true}
396
+ className="css-14wybg9"
397
+ data-testid="props"
398
+ onMouseDown={[Function]}
399
+ onMouseEnter={[Function]}
400
+ onMouseLeave={[Function]}
401
+ onMouseUp={[Function]}
402
+ />
403
+ <span
404
+ className="chakra-radio__label css-1y8kf23"
405
+ onMouseDown={[Function]}
406
+ onTouchStart={[Function]}
407
+ >
408
+ Test Label
409
+ </span>
410
+ </label>
411
+ `;