@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
@@ -28,7 +28,7 @@ import DSProvider from "../../theme/provider";
28
28
  isRequired: {
29
29
  table: { defaultValue: { summary: false } },
30
30
  },
31
- optReqFlag: {
31
+ showRequiredLabel: {
32
32
  table: { defaultValue: { summary: false } },
33
33
  },
34
34
  }}
@@ -39,10 +39,20 @@ import DSProvider from "../../theme/provider";
39
39
  | Component Version | DS Version |
40
40
  | ----------------- | ---------- |
41
41
  | Added | `0.25.3` |
42
- | Latest | `0.25.10` |
42
+ | Latest | `0.26.0` |
43
+
44
+ ## Table of Contents
45
+
46
+ - [Overview](#overview)
47
+ - [Component Props](#component-props)
48
+ - [Accessibility](#accessibility)
49
+
50
+ ## Overview
43
51
 
44
52
  <Description of={Fieldset} />
45
53
 
54
+ ## Component Props
55
+
46
56
  <Canvas withToolbar>
47
57
  <Story
48
58
  name="Fieldset"
@@ -52,7 +62,7 @@ import DSProvider from "../../theme/provider";
52
62
  isLegendHidden: false,
53
63
  isRequired: false,
54
64
  legendText: "This is the legend text",
55
- optReqFlag: true,
65
+ showRequiredLabel: true,
56
66
  }}
57
67
  >
58
68
  {(args) => (
@@ -64,3 +74,23 @@ import DSProvider from "../../theme/provider";
64
74
  </Canvas>
65
75
 
66
76
  <ArgsTable story="Fieldset" />
77
+
78
+ ## Accessibility
79
+
80
+ This is a simple component but is very important to use when building web forms.
81
+ Syntactically, the `Fieldset` component is used to group form elements. Semantically,
82
+ the form elements that are group should have a similar theme or context. For
83
+ example, when building out a form for a user to create an account, one `Fieldset`
84
+ should be used to group the user's first and last names and another `Fieldset`
85
+ to group the user's address information.
86
+
87
+ The Reservoir DS implements the `Fieldset` component in the following form
88
+ components:
89
+
90
+ - `CheckboxGroup`, `DatePicker`, `RadioGroup`.
91
+
92
+ Resources:
93
+
94
+ - [W3C Grouping form controls with FIELDSET and LEGEND](https://www.w3.org/TR/2008/WD-WCAG20-TECHS-20080430/H82.html)
95
+ - [GOV.UK Using the fieldset and legend elements](https://accessibility.blog.gov.uk/2016/07/22/using-the-fieldset-and-legend-elements/)
96
+ - [MDN fieldset: The Field Set element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
@@ -8,7 +8,7 @@ import Fieldset from "./Fieldset";
8
8
  describe("Fieldset Accessibility", () => {
9
9
  it("passes axe accessibility", async () => {
10
10
  const { container } = render(
11
- <Fieldset legendText="Legend Text">
11
+ <Fieldset id="fieldset" legendText="Legend Text">
12
12
  <p>Some other fields</p>
13
13
  </Fieldset>
14
14
  );
@@ -17,7 +17,7 @@ describe("Fieldset Accessibility", () => {
17
17
 
18
18
  it("passes axe accessibility with the legend hidden", async () => {
19
19
  const { container } = render(
20
- <Fieldset legendText="Legend Text" isLegendHidden>
20
+ <Fieldset id="fieldset" legendText="Legend Text" isLegendHidden>
21
21
  <p>Some other fields</p>
22
22
  </Fieldset>
23
23
  );
@@ -28,7 +28,7 @@ describe("Fieldset Accessibility", () => {
28
28
  describe("Fieldset", () => {
29
29
  it("renders text in a legend and fieldset along with its children", () => {
30
30
  render(
31
- <Fieldset legendText="Legend Text">
31
+ <Fieldset id="fieldset" legendText="Legend Text">
32
32
  <p>Some other fields</p>
33
33
  </Fieldset>
34
34
  );
@@ -39,19 +39,9 @@ describe("Fieldset", () => {
39
39
  expect(screen.getByText("Some other fields")).toBeInTheDocument();
40
40
  });
41
41
 
42
- it("renders 'Optional' text by default in the legend", () => {
42
+ it("renders '(Required)' text in the legend when `isRequired` is true", () => {
43
43
  render(
44
- <Fieldset legendText="Legend Text">
45
- <p>Some other fields</p>
46
- </Fieldset>
47
- );
48
-
49
- expect(screen.getByText(/Optional/i)).toBeInTheDocument();
50
- });
51
-
52
- it("renders 'Required' text in the legend", () => {
53
- render(
54
- <Fieldset legendText="Legend Text" isRequired>
44
+ <Fieldset id="fieldset" legendText="Legend Text" isRequired>
55
45
  <p>Some other fields</p>
56
46
  </Fieldset>
57
47
  );
@@ -59,9 +49,9 @@ describe("Fieldset", () => {
59
49
  expect(screen.getByText(/Required/i)).toBeInTheDocument();
60
50
  });
61
51
 
62
- it("can hide the 'Required'/'Optional' text in the legend but still show the main text", () => {
52
+ it("can hide the '(Required)' text in the legend but still show the main text", () => {
63
53
  const { rerender } = render(
64
- <Fieldset legendText="Legend Text" isRequired>
54
+ <Fieldset id="fieldset" legendText="Legend Text" isRequired>
65
55
  <p>Some other fields</p>
66
56
  </Fieldset>
67
57
  );
@@ -69,49 +59,87 @@ describe("Fieldset", () => {
69
59
  expect(screen.getByText(/Required/i)).toBeInTheDocument();
70
60
 
71
61
  rerender(
72
- <Fieldset legendText="Legend Text" optReqFlag={false}>
62
+ <Fieldset
63
+ id="fieldset"
64
+ isRequired
65
+ legendText="Legend Text"
66
+ showRequiredLabel={false}
67
+ >
73
68
  <p>Some other fields</p>
74
69
  </Fieldset>
75
70
  );
76
71
 
77
72
  expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
78
- expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
73
+ expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
74
+ });
79
75
 
80
- rerender(
81
- <Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
76
+ it("logs a warning when there is no `id` passed", () => {
77
+ const warn = jest.spyOn(console, "warn");
78
+ render(
79
+ // @ts-ignore: Typescript complains when a required prop is not passed, but
80
+ // here we don't want to pass the required prop to make sure the warning appears.
81
+ <Fieldset legendText="Legend Text">
82
82
  <p>Some other fields</p>
83
83
  </Fieldset>
84
84
  );
85
-
86
- expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
87
- expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
85
+ expect(warn).toHaveBeenCalledWith(
86
+ "NYPL Reservoir Fieldset: This component's required `id` prop was not passed."
87
+ );
88
88
  });
89
89
 
90
90
  it("renders the UI snapshot correctly", () => {
91
91
  const basic = renderer
92
92
  .create(
93
- <Fieldset legendText="Legend Text">
93
+ <Fieldset id="fieldset" legendText="Legend Text">
94
94
  <p>Some other fields</p>
95
95
  </Fieldset>
96
96
  )
97
97
  .toJSON();
98
98
  const required = renderer
99
99
  .create(
100
- <Fieldset legendText="Legend Text" isRequired>
100
+ <Fieldset id="fieldset" legendText="Legend Text" isRequired>
101
101
  <p>Some other fields</p>
102
102
  </Fieldset>
103
103
  )
104
104
  .toJSON();
105
105
  const hiddenHelperText = renderer
106
106
  .create(
107
- <Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
107
+ <Fieldset
108
+ id="fieldset"
109
+ legendText="Legend Text"
110
+ isRequired
111
+ showRequiredLabel={false}
112
+ >
108
113
  <p>Some other fields</p>
109
114
  </Fieldset>
110
115
  )
111
116
  .toJSON();
112
117
  const hiddenLegend = renderer
113
118
  .create(
114
- <Fieldset legendText="Legend Text" isLegendHidden>
119
+ <Fieldset id="fieldset" legendText="Legend Text" isLegendHidden>
120
+ <p>Some other fields</p>
121
+ </Fieldset>
122
+ )
123
+ .toJSON();
124
+ const withChakraProps = renderer
125
+ .create(
126
+ <Fieldset
127
+ id="withChakraProps"
128
+ legendText="Legend Text"
129
+ p="20px"
130
+ color="ui.error.primary"
131
+ >
132
+ <p>Some other fields</p>
133
+ </Fieldset>
134
+ )
135
+ .toJSON();
136
+ const withOtherProps = renderer
137
+ .create(
138
+ <Fieldset
139
+ id="withOtherProps"
140
+ legendText="Legend Text"
141
+ data-testid="props"
142
+ >
115
143
  <p>Some other fields</p>
116
144
  </Fieldset>
117
145
  )
@@ -121,5 +149,7 @@ describe("Fieldset", () => {
121
149
  expect(required).toMatchSnapshot();
122
150
  expect(hiddenHelperText).toMatchSnapshot();
123
151
  expect(hiddenLegend).toMatchSnapshot();
152
+ expect(withChakraProps).toMatchSnapshot();
153
+ expect(withOtherProps).toMatchSnapshot();
124
154
  });
125
155
  });
@@ -1,50 +1,55 @@
1
+ import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
1
2
  import React from "react";
2
- import { Box, useMultiStyleConfig } from "@chakra-ui/react";
3
3
 
4
4
  interface FieldsetProps {
5
5
  /** Additional class name to add. */
6
6
  className?: string;
7
7
  /** ID that other components can cross reference for accessibility purposes */
8
- id?: string;
8
+ id: string;
9
9
  /** Flag to show or hide the text in the `legend` element. False by default. */
10
10
  isLegendHidden?: boolean;
11
- /** Flag to render "Required" or "Optional" in the `legend`.
12
- * False/"Optional" by default. */
11
+ /** Flag to render "Required" in the `legend`. True by default. */
13
12
  isRequired?: boolean;
14
13
  /** Text to display in the `legend` element. */
15
14
  legendText?: string;
16
- /** Flag to show or hide the "Required"/"Optional" text in the `legend`.
15
+ /** Whether or not to display the "(Required)" text in the `legend` text.
17
16
  * True by default. */
18
- optReqFlag?: boolean;
17
+ showRequiredLabel?: boolean;
19
18
  }
20
19
 
21
20
  /**
22
21
  * A wrapper component that renders a `fieldset` element along with a `legend`
23
22
  * element as its first child. Commonly used to wrap form components.
24
23
  */
25
- const Fieldset = ({
26
- children,
27
- className,
28
- id,
29
- isLegendHidden = false,
30
- isRequired = false,
31
- legendText,
32
- optReqFlag = true,
33
- }: React.PropsWithChildren<FieldsetProps>) => {
34
- const styles = useMultiStyleConfig("Fieldset", { isLegendHidden });
35
- return (
36
- <Box as="fieldset" id={id} __css={styles} className={className}>
37
- <legend>
38
- {legendText}
39
- {optReqFlag && (
40
- <Box __css={styles.helper}>
41
- {isRequired ? "Required" : "Optional"}
42
- </Box>
43
- )}
44
- </legend>
45
- {children}
46
- </Box>
47
- );
48
- };
24
+ export const Fieldset = chakra(
25
+ ({
26
+ children,
27
+ className,
28
+ id,
29
+ isLegendHidden = false,
30
+ isRequired = false,
31
+ legendText,
32
+ showRequiredLabel = true,
33
+ ...rest
34
+ }: React.PropsWithChildren<FieldsetProps>) => {
35
+ const styles = useMultiStyleConfig("Fieldset", { isLegendHidden });
36
+
37
+ if (!id) {
38
+ console.warn(
39
+ "NYPL Reservoir Fieldset: This component's required `id` prop was not passed."
40
+ );
41
+ }
42
+
43
+ return (
44
+ <Box as="fieldset" id={id} __css={styles} className={className} {...rest}>
45
+ <legend>
46
+ {legendText}
47
+ {showRequiredLabel && isRequired && <span> (Required)</span>}
48
+ </legend>
49
+ {children}
50
+ </Box>
51
+ );
52
+ }
53
+ );
49
54
 
50
55
  export default Fieldset;
@@ -2,15 +2,11 @@
2
2
 
3
3
  exports[`Fieldset renders the UI snapshot correctly 1`] = `
4
4
  <fieldset
5
- className="css-0"
5
+ className="css-1xdhyk6"
6
+ id="fieldset"
6
7
  >
7
8
  <legend>
8
9
  Legend Text
9
- <div
10
- className="css-0"
11
- >
12
- Optional
13
- </div>
14
10
  </legend>
15
11
  <p>
16
12
  Some other fields
@@ -20,15 +16,14 @@ exports[`Fieldset renders the UI snapshot correctly 1`] = `
20
16
 
21
17
  exports[`Fieldset renders the UI snapshot correctly 2`] = `
22
18
  <fieldset
23
- className="css-0"
19
+ className="css-1xdhyk6"
20
+ id="fieldset"
24
21
  >
25
22
  <legend>
26
23
  Legend Text
27
- <div
28
- className="css-0"
29
- >
30
- Required
31
- </div>
24
+ <span>
25
+ (Required)
26
+ </span>
32
27
  </legend>
33
28
  <p>
34
29
  Some other fields
@@ -38,7 +33,8 @@ exports[`Fieldset renders the UI snapshot correctly 2`] = `
38
33
 
39
34
  exports[`Fieldset renders the UI snapshot correctly 3`] = `
40
35
  <fieldset
41
- className="css-0"
36
+ className="css-1xdhyk6"
37
+ id="fieldset"
42
38
  >
43
39
  <legend>
44
40
  Legend Text
@@ -51,15 +47,40 @@ exports[`Fieldset renders the UI snapshot correctly 3`] = `
51
47
 
52
48
  exports[`Fieldset renders the UI snapshot correctly 4`] = `
53
49
  <fieldset
54
- className="css-0"
50
+ className="css-1xdhyk6"
51
+ id="fieldset"
52
+ >
53
+ <legend>
54
+ Legend Text
55
+ </legend>
56
+ <p>
57
+ Some other fields
58
+ </p>
59
+ </fieldset>
60
+ `;
61
+
62
+ exports[`Fieldset renders the UI snapshot correctly 5`] = `
63
+ <fieldset
64
+ className="css-kle7zy"
65
+ id="withChakraProps"
66
+ >
67
+ <legend>
68
+ Legend Text
69
+ </legend>
70
+ <p>
71
+ Some other fields
72
+ </p>
73
+ </fieldset>
74
+ `;
75
+
76
+ exports[`Fieldset renders the UI snapshot correctly 6`] = `
77
+ <fieldset
78
+ className="css-1xdhyk6"
79
+ data-testid="props"
80
+ id="withOtherProps"
55
81
  >
56
82
  <legend>
57
83
  Legend Text
58
- <div
59
- className="css-0"
60
- >
61
- Optional
62
- </div>
63
84
  </legend>
64
85
  <p>
65
86
  Some other fields