@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
@@ -41,18 +41,18 @@ export const enumValues = getStorybookEnumValues(
41
41
  ref: { table: { disable: true } },
42
42
  showHelperInvalidText: { table: { defaultValue: { summary: true } } },
43
43
  showLabel: { table: { defaultValue: { summary: true } } },
44
- showOptReqLabel: { table: { defaultValue: { summary: true } } },
44
+ showRequiredLabel: { table: { defaultValue: { summary: true } } },
45
45
  step: { table: { defaultValue: { summary: 1 } } },
46
+ textInputType: {
47
+ control: false,
48
+ table: { defaultValue: { summary: "TextInputVariants.Default" } },
49
+ },
46
50
  type: {
47
51
  control: { type: "select" },
48
52
  table: { defaultValue: { summary: "TextInputTypes.text" } },
49
53
  options: enumValues.options,
50
54
  },
51
55
  value: { control: false },
52
- variantType: {
53
- control: false,
54
- table: { defaultValue: { summary: "TextInputVariants.Default" } },
55
- },
56
56
  }}
57
57
  />
58
58
 
@@ -61,7 +61,18 @@ export const enumValues = getStorybookEnumValues(
61
61
  | Component Version | DS Version |
62
62
  | ----------------- | ---------- |
63
63
  | Added | `0.22.0` |
64
- | Latest | `0.25.11` |
64
+ | Latest | `0.26.0` |
65
+
66
+ ## Table of Contents
67
+
68
+ - [Overview](#overview)
69
+ - [Component Props](#component-props)
70
+ - [Accessibility](#accessibility)
71
+ - [Labelling Variations](#labelling-variations)
72
+ - [HTML in Helper Text](#html-in-helper-text)
73
+ - [Textarea](#textarea)
74
+
75
+ ## Overview
65
76
 
66
77
  <Description of={TextInput} />
67
78
 
@@ -71,6 +82,8 @@ prop, regardless of the label visibility. Additionally, while the `id` prop is
71
82
  optional, a unique `id` attribute is necessary for accessibility. If the prop
72
83
  is left blank, a value will be generated for you.
73
84
 
85
+ ## Component Props
86
+
74
87
  <Canvas withToolbar>
75
88
  <Story
76
89
  name="TextInput with Controls"
@@ -91,11 +104,11 @@ is left blank, a value will be generated for you.
91
104
  placeholder: "e.g. blue, green, etc.",
92
105
  showHelperInvalidText: true,
93
106
  showLabel: true,
94
- showOptReqLabel: true,
107
+ showRequiredLabel: true,
95
108
  step: 1,
96
109
  type: "TextInputTypes.text",
97
110
  value: undefined,
98
- variantType: TextInputVariants.Default,
111
+ textInputType: TextInputVariants.Default,
99
112
  }}
100
113
  >
101
114
  {(args) => <TextInput {...args} type={enumValues.getValue(args.type)} />}
@@ -104,43 +117,71 @@ is left blank, a value will be generated for you.
104
117
 
105
118
  <ArgsTable story="TextInput with Controls" />
106
119
 
120
+ ## Accessibility
121
+
122
+ The `TextInput` component renders an HTML `<input>` element which is accessible
123
+ via keyboard and screen reader. The `aria-required` and `required` attributes are
124
+ set with the `isRequired` prop. The `aria-disabled` and `disabled` attributes are
125
+ set with the `isDisabled` prop. The `aria-invalid` is set with the `isInvalid`
126
+ prop.
127
+
128
+ Internally, a `Label` is associated with the `<input>` element. When `showLabel`
129
+ is set to false, the `<input>` element's `aria-label` attribute is set to the
130
+ required `labelText` value.
131
+
132
+ When the `type` prop is set to `TextInputTypes.textarea`, the `<textarea>` element
133
+ is rendered instead of the `<input>` element. This element follows all the same
134
+ accessibility rules described above.
135
+
136
+ Resources:
137
+
138
+ - [MDN input: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
139
+ - [MDN textarea: The Textarea element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
140
+ - [Chakra UI Input](https://chakra-ui.com/docs/components/form/input)
141
+ - [Chakra UI Textarea](https://chakra-ui.com/docs/components/form/textarea)
142
+
107
143
  ## Labelling Variations
108
144
 
109
145
  A TextInput can be rendered with or without visible labels. When `showLabel` is
110
146
  set to `false`, an `aria-label` attribute is added to the input/textarea element
111
147
  to maintain accessibility. If the component needs to be required, the
112
- `showOptReqLabel` prop can be used to show or hide the "Required"/"Optional"
113
- text within the `label` element.
148
+ `showRequiredLabel` prop can be used to show or hide the "(Required)" text
149
+ within the `label` element.
114
150
 
115
151
  <Canvas withToolbar>
116
152
  <Story name="Labelling Variations">
117
153
  <VStack align="stretch" spacing={12}>
118
154
  <TextInput
155
+ helperText="Choose wisely!"
156
+ id="textInput-1"
119
157
  labelText="What is your favorite color?"
120
158
  placeholder="i.e. blue, green, etc."
121
- helperText="Choose wisely!"
122
159
  />
123
160
  <TextInput
161
+ id="textInput-2"
124
162
  labelText="What is your favorite color?"
125
163
  placeholder="i.e. blue, green, etc."
126
164
  showLabel={false}
127
165
  />
128
166
  <TextInput
167
+ id="textInput-3"
168
+ isRequired
129
169
  labelText="What is your favorite color?"
130
170
  placeholder="i.e. blue, green, etc."
131
- isRequired
132
171
  />
133
172
  <TextInput
173
+ id="textInput-4"
174
+ isRequired
134
175
  labelText="What is your favorite color?"
135
176
  placeholder="i.e. blue, green, etc."
136
- showOptReqLabel={false}
137
- isRequired
177
+ showRequiredLabel={false}
138
178
  />
139
179
  <TextInput
180
+ helperText="Choose wisely!"
181
+ id="textInput-5"
140
182
  labelText="What is your favorite color?"
141
- showLabel={false}
142
183
  placeholder="i.e. blue, green, etc."
143
- helperText="Choose wisely!"
184
+ showLabel={false}
144
185
  />
145
186
  </VStack>
146
187
  </Story>
@@ -151,11 +192,12 @@ text within the `label` element.
151
192
  <Canvas>
152
193
  <DSProvider>
153
194
  <TextInput
154
- labelText="What is your favorite color?"
155
- placeholder="i.e. blue, green, etc."
156
195
  helperText="Choose wisely!"
196
+ id="errored"
157
197
  invalidText="This is error text :("
158
198
  isInvalid
199
+ labelText="What is your favorite color?"
200
+ placeholder="i.e. blue, green, etc."
159
201
  />
160
202
  </DSProvider>
161
203
  </Canvas>
@@ -165,10 +207,11 @@ text within the `label` element.
165
207
  <Canvas>
166
208
  <DSProvider>
167
209
  <TextInput
168
- labelText="What is your favorite color?"
169
- placeholder="i.e. blue, green, etc."
170
210
  helperText="Choose wisely!"
211
+ id="disabled"
171
212
  isDisabled
213
+ labelText="What is your favorite color?"
214
+ placeholder="i.e. blue, green, etc."
172
215
  />
173
216
  </DSProvider>
174
217
  </Canvas>
@@ -186,19 +229,21 @@ helperText={<>Choose <b>wisely!</b></>}
186
229
  <Canvas>
187
230
  <DSProvider>
188
231
  <TextInput
232
+ helperText="Choose <b>wisely!</b>"
233
+ id="string"
189
234
  labelText="What is your favorite color?"
190
235
  placeholder="i.e. blue, green, etc."
191
- helperText="Choose <b>wisely!</b>"
192
236
  />
193
237
  <br />
194
238
  <TextInput
195
- labelText="What is your favorite color?"
196
- placeholder="i.e. blue, green, etc."
197
239
  helperText={
198
240
  <>
199
241
  Choose <b>wisely!</b>
200
242
  </>
201
243
  }
244
+ id="jsx"
245
+ labelText="What is your favorite color?"
246
+ placeholder="i.e. blue, green, etc."
202
247
  />
203
248
  </DSProvider>
204
249
  </Canvas>
@@ -206,14 +251,15 @@ helperText={<>Choose <b>wisely!</b></>}
206
251
  ## Textarea
207
252
 
208
253
  The TextInput component includes a multiline `textarea` form field. To render a
209
- `textarea` element, pass `TextInputTypes.textarea` for the `type` prop. All the
210
- variations described above are available for the `textarea` option.
254
+ `textarea` element, pass `TextInputTypes.textarea` for the `type` prop.
255
+ All the variations described above are available for the `textarea` option.
211
256
 
212
257
  <Canvas withToolbar>
213
258
  <Story
214
259
  name="Textarea"
215
260
  args={{
216
261
  helperText: "Let it all out.",
262
+ id: "textarea",
217
263
  invalidText: "This is error text :(",
218
264
  isDisabled: false,
219
265
  isInvalid: false,
@@ -221,12 +267,12 @@ variations described above are available for the `textarea` option.
221
267
  labelText: "In less than 500 words, describe your favorite color?",
222
268
  placeholder: "Essay question...",
223
269
  showLabel: true,
224
- showOptReqLabel: true,
270
+ showRequiredLabel: true,
225
271
  type: TextInputTypes.textarea,
226
272
  }}
227
273
  argTypes={{
228
274
  type: { control: false },
229
- variantType: { control: false },
275
+ textInputType: { control: false },
230
276
  }}
231
277
  >
232
278
  {(args) => <TextInput {...args} />}
@@ -6,17 +6,17 @@ import userEvent from "@testing-library/user-event";
6
6
 
7
7
  import TextInput from "./TextInput";
8
8
  import { TextInputTypes } from "./TextInputTypes";
9
- import * as generateUUID from "../../helpers/generateUUID";
10
9
 
11
10
  describe("TextInput Accessibility", () => {
12
11
  it("passes axe accessibility test for the input element", async () => {
13
12
  const { container } = render(
14
13
  <TextInput
15
- labelText="Custom input label"
14
+ id="textInput"
16
15
  isRequired
16
+ labelText="Custom input label"
17
+ onChange={jest.fn()}
17
18
  placeholder="Input Placeholder"
18
19
  type={TextInputTypes.text}
19
- onChange={jest.fn()}
20
20
  />
21
21
  );
22
22
  expect(await axe(container)).toHaveNoViolations();
@@ -25,11 +25,12 @@ describe("TextInput Accessibility", () => {
25
25
  it("passes axe accessibility test for the textarea element", async () => {
26
26
  const { container } = render(
27
27
  <TextInput
28
- labelText="Custom textarea label"
28
+ id="textInput"
29
29
  isRequired
30
+ labelText="Custom textarea label"
31
+ onChange={jest.fn()}
30
32
  placeholder="Input Placeholder"
31
33
  type={TextInputTypes.textarea}
32
- onChange={jest.fn()}
33
34
  />
34
35
  );
35
36
  expect(await axe(container)).toHaveNoViolations();
@@ -46,13 +47,13 @@ describe("TextInput", () => {
46
47
  changeHandler = jest.fn();
47
48
  utils = render(
48
49
  <TextInput
50
+ attributes={{ onFocus: focusHandler }}
49
51
  id="myTextInput"
50
- labelText="Custom Input Label"
51
52
  isRequired
53
+ labelText="Custom Input Label"
54
+ onChange={changeHandler}
52
55
  placeholder="Input Placeholder"
53
56
  type={TextInputTypes.text}
54
- attributes={{ onFocus: focusHandler }}
55
- onChange={changeHandler}
56
57
  />
57
58
  );
58
59
  });
@@ -70,34 +71,17 @@ describe("TextInput", () => {
70
71
  expect(screen.getByText(/Required/i)).toBeInTheDocument();
71
72
  });
72
73
 
73
- it("renders 'Optional' along with the label text", () => {
74
+ it("does not render '(Required)' along with the label text", () => {
74
75
  utils.rerender(
75
76
  <TextInput
76
- id="myTextInput"
77
- labelText="Custom Input Label"
78
- isRequired={false}
79
- placeholder="Input Placeholder"
80
- type={TextInputTypes.text}
81
77
  attributes={{ onFocus: focusHandler }}
82
- onChange={changeHandler}
83
- />
84
- );
85
-
86
- expect(screen.getByText("Custom Input Label")).toBeInTheDocument();
87
- expect(screen.getByText(/Optional/i)).toBeInTheDocument();
88
- });
89
-
90
- it("does not render 'Required' along with the label text", () => {
91
- utils.rerender(
92
- <TextInput
93
78
  id="myTextInput"
94
- labelText="Custom Input Label"
95
79
  isRequired
96
- showOptReqLabel={false}
80
+ labelText="Custom Input Label"
81
+ onChange={changeHandler}
97
82
  placeholder="Input Placeholder"
83
+ showRequiredLabel={false}
98
84
  type={TextInputTypes.text}
99
- attributes={{ onFocus: focusHandler }}
100
- onChange={changeHandler}
101
85
  />
102
86
  );
103
87
 
@@ -136,20 +120,30 @@ describe("TextInput", () => {
136
120
  // Called 5 times because "Hello" has length of 5.
137
121
  expect(changeHandler).toHaveBeenCalledTimes(5);
138
122
  });
123
+
124
+ it("logs a warning when there is no `id` passed", () => {
125
+ const warn = jest.spyOn(console, "warn");
126
+ render(
127
+ // @ts-ignore: Typescript complains when a required prop is not passed, but
128
+ // here we don't want to pass the required prop to make sure the warning appears.
129
+ <TextInput labelText="Custom Input Label" />
130
+ );
131
+ expect(warn).toHaveBeenCalledWith(
132
+ "NYPL Reservoir TextInput: This component's required `id` prop was not passed."
133
+ );
134
+ });
139
135
  });
140
136
 
141
137
  describe("Renders TextInput with auto-generated ID, hidden label and visible helper text", () => {
142
- let generateUUIDSpy;
143
-
144
138
  beforeEach(() => {
145
- generateUUIDSpy = jest.spyOn(generateUUID, "default");
146
139
  render(
147
140
  <TextInput
148
- labelText="Custom Input Label"
149
- showLabel={false}
150
141
  helperText="Custom Helper Text"
142
+ id="textInput"
151
143
  isRequired
144
+ labelText="Custom Input Label"
152
145
  placeholder="Input Placeholder"
146
+ showLabel={false}
153
147
  type={TextInputTypes.text}
154
148
  />
155
149
  );
@@ -159,11 +153,6 @@ describe("Renders TextInput with auto-generated ID, hidden label and visible hel
159
153
  expect(screen.getByLabelText(/Custom Input Label/i)).toBeInTheDocument();
160
154
  });
161
155
 
162
- it("calls a UUID generation method if no ID is passed as a prop", () => {
163
- // Called twice for the `TextInput` and the SVG icon components.
164
- expect(generateUUIDSpy).toHaveBeenCalledTimes(2);
165
- });
166
-
167
156
  it("does not renders Label component", () => {
168
157
  expect(screen.queryByText(/Custom Input Label/i)).not.toBeInTheDocument();
169
158
  });
@@ -185,12 +174,12 @@ describe("TextInput shows error state", () => {
185
174
  beforeEach(() => {
186
175
  const utils = render(
187
176
  <TextInput
188
- id="myTextInputError"
189
- labelText="Custom Input Label"
190
177
  helperText="Custom Helper Text"
178
+ id="myTextInputError"
191
179
  invalidText="Custom Error Text"
192
- placeholder="Input Placeholder"
193
180
  isInvalid
181
+ labelText="Custom Input Label"
182
+ placeholder="Input Placeholder"
194
183
  type={TextInputTypes.text}
195
184
  />
196
185
  );
@@ -214,14 +203,14 @@ describe("TextInput shows error state", () => {
214
203
  it("does not render the invalid text when 'showHelperInvalidText' is set to false", () => {
215
204
  rerender(
216
205
  <TextInput
217
- id="myTextInputError"
218
- labelText="Custom Input Label"
219
206
  helperText="Custom Helper Text"
207
+ id="myTextInputError"
220
208
  invalidText="Custom Error Text"
209
+ isInvalid
210
+ labelText="Custom Input Label"
221
211
  placeholder="Input Placeholder"
222
212
  showHelperInvalidText={false}
223
213
  type={TextInputTypes.text}
224
- isInvalid
225
214
  />
226
215
  );
227
216
  expect(screen.queryByText("Custom Helper Text")).not.toBeInTheDocument();
@@ -241,16 +230,16 @@ describe("Renders HTML attributes passed through the `attributes` prop", () => {
241
230
  beforeEach(() => {
242
231
  render(
243
232
  <TextInput
244
- id="inputID-attributes"
245
- labelText="Input Label"
246
- placeholder="Input Placeholder"
247
- type={TextInputTypes.text}
248
233
  attributes={{
249
234
  onChange: onChangeSpy,
250
235
  onBlur: onBlurSpy,
251
236
  maxLength: 10,
252
237
  tabIndex: 0,
253
238
  }}
239
+ id="inputID-attributes"
240
+ labelText="Input Label"
241
+ placeholder="Input Placeholder"
242
+ type={TextInputTypes.text}
254
243
  />
255
244
  );
256
245
  });
@@ -336,9 +325,9 @@ describe("Hidden input", () => {
336
325
  it("does not show the helper text", () => {
337
326
  render(
338
327
  <TextInput
328
+ helperText="Helper Text"
339
329
  id="inputID-hidden"
340
330
  labelText="Hidden Input Label"
341
- helperText="Helper Text"
342
331
  type={TextInputTypes.hidden}
343
332
  value="hidden"
344
333
  />
@@ -441,6 +430,29 @@ describe("UI Snapshots", () => {
441
430
  />
442
431
  )
443
432
  .toJSON();
433
+ const withChakraProps = renderer
434
+ .create(
435
+ <TextInput
436
+ id="chakra"
437
+ labelText="Custom Input Label"
438
+ placeholder="Input Placeholder"
439
+ type={TextInputTypes.text}
440
+ p="20px"
441
+ color="ui.error.primary"
442
+ />
443
+ )
444
+ .toJSON();
445
+ const withOtherProps = renderer
446
+ .create(
447
+ <TextInput
448
+ id="props"
449
+ labelText="Custom Input Label"
450
+ placeholder="Input Placeholder"
451
+ type={TextInputTypes.text}
452
+ data-testid="props"
453
+ />
454
+ )
455
+ .toJSON();
444
456
 
445
457
  expect(required).toMatchSnapshot();
446
458
  expect(optional).toMatchSnapshot();
@@ -448,7 +460,10 @@ describe("UI Snapshots", () => {
448
460
  expect(withHelperText).toMatchSnapshot();
449
461
  expect(errorState).toMatchSnapshot();
450
462
  expect(disabledState).toMatchSnapshot();
463
+ expect(withChakraProps).toMatchSnapshot();
464
+ expect(withOtherProps).toMatchSnapshot();
451
465
  });
466
+
452
467
  it("renders the textarea UI snapshot correctly", () => {
453
468
  const basicTextarea = renderer
454
469
  .create(