@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,7 +1,11 @@
1
+ import {
2
+ Box,
3
+ chakra,
4
+ Icon as ChakraIcon,
5
+ useStyleConfig,
6
+ } from "@chakra-ui/react";
1
7
  import * as React from "react";
2
- import { Icon as ChakraIcon, Box, useStyleConfig } from "@chakra-ui/react";
3
8
 
4
- import generateUUID from "../../helpers/generateUUID";
5
9
  import { LogoNames, LogoSizes } from "./LogoTypes";
6
10
  import logoSvgs from "./LogoSvgs";
7
11
 
@@ -29,16 +33,17 @@ export interface LogoProps {
29
33
  * The `Logo` component renders SVG-based logos and color variants that are
30
34
  * commonly used by the New York Public Library.
31
35
  */
32
- export default function Logo(props: React.PropsWithChildren<LogoProps>) {
36
+ export const Logo = chakra((props: React.PropsWithChildren<LogoProps>) => {
33
37
  const {
34
38
  additionalStyles = {},
35
39
  children,
36
40
  className,
37
41
  decorative = false,
38
- id = generateUUID(),
42
+ id,
39
43
  name,
40
44
  size = LogoSizes.Medium,
41
45
  title = `${name} logo`,
46
+ ...rest
42
47
  } = props;
43
48
  const styles = useStyleConfig("Logo", {
44
49
  size,
@@ -49,18 +54,21 @@ export default function Logo(props: React.PropsWithChildren<LogoProps>) {
49
54
  id,
50
55
  role: "img",
51
56
  title,
57
+ ...rest,
52
58
  };
53
59
  let childSVG = null;
54
60
 
55
61
  // Component prop validation
56
62
  if (name && children) {
57
63
  console.warn(
58
- "Logo accepts either a `name` prop or an `svg` element child. It can not accept both."
64
+ "NYPL Reservoir Logo: Pass either a `name` prop or an `svg` element " +
65
+ "child. Do not pass both."
59
66
  );
60
67
  return null;
61
68
  } else if (!name && !children) {
62
69
  console.warn(
63
- "Pass a logo `name` prop or an SVG child to `Logo` to ensure a logo appears."
70
+ "NYPL Reservoir Logo: Pass a logo `name` prop or an SVG child to " +
71
+ "`Logo` to ensure a logo appears."
64
72
  );
65
73
  return null;
66
74
  }
@@ -83,15 +91,24 @@ export default function Logo(props: React.PropsWithChildren<LogoProps>) {
83
91
  // Apply logo props to the SVG child.
84
92
  if (
85
93
  (children as JSX.Element).type === "svg" ||
86
- (children as JSX.Element).props.type === "svg" ||
87
- (children as JSX.Element).props.mdxType === "svg"
94
+ (children as JSX.Element).props?.type === "svg" ||
95
+ (children as JSX.Element).props?.mdxType === "svg"
88
96
  ) {
89
97
  childSVG = React.cloneElement(children as JSX.Element, {
90
98
  ...logoProps,
91
99
  });
92
100
  } else {
93
- console.warn("You must pass an `svg` element to the `Logo` component.");
101
+ console.warn(
102
+ "NYPL Reservoir Logo: An `svg` element must be passed to the `Logo` " +
103
+ "component as its child."
104
+ );
94
105
  }
95
106
 
96
- return <Box __css={styles}>{childSVG}</Box>;
97
- }
107
+ return (
108
+ <Box __css={styles} {...rest}>
109
+ {childSVG}
110
+ </Box>
111
+ );
112
+ });
113
+
114
+ export default Logo;
@@ -23,6 +23,8 @@ import logo_qpl_alt_white from "../../../icons/svg/logo_qpl_alt_white.svg";
23
23
  import logo_qpl_black from "../../../icons/svg/logo_qpl_black.svg";
24
24
  import logo_qpl_color from "../../../icons/svg/logo_qpl_color.svg";
25
25
  import logo_qpl_white from "../../../icons/svg/logo_qpl_white.svg";
26
+ import logo_reservoir_icon_color from "../../../icons/svg/logo_reservoir_icon_color.svg";
27
+ import logo_reservoir_vertical_color from "../../../icons/svg/logo_reservoir_vertical_color.svg";
26
28
  import logo_schomburg_black from "../../../icons/svg/logo_schomburg_black.svg";
27
29
  import logo_schomburg_circle_black from "../../../icons/svg/logo_schomburg_circle_black.svg";
28
30
  import logo_schomburg_circle_color from "../../../icons/svg/logo_schomburg_circle_color.svg";
@@ -62,6 +64,8 @@ export default {
62
64
  logo_qpl_black,
63
65
  logo_qpl_color,
64
66
  logo_qpl_white,
67
+ logo_reservoir_icon_color,
68
+ logo_reservoir_vertical_color,
65
69
  logo_schomburg_black,
66
70
  logo_schomburg_circle_black,
67
71
  logo_schomburg_circle_color,
@@ -5,12 +5,12 @@ export enum LogoColors {
5
5
  }
6
6
 
7
7
  export enum LogoSizes {
8
+ Default = "default",
8
9
  ExtraExtraSmall = "xxsmall",
9
10
  ExtraSmall = "xsmall",
10
11
  Small = "small",
11
12
  Medium = "medium",
12
13
  Large = "large",
13
- Default = "default",
14
14
  }
15
15
 
16
16
  export enum LogoNames {
@@ -38,6 +38,8 @@ export enum LogoNames {
38
38
  QueensPublicLibraryWhite = "logo_qpl_white",
39
39
  QueensPublicLibraryAltBlack = "logo_qpl_alt_black",
40
40
  QueensPublicLibraryAltWhite = "logo_qpl_alt_white",
41
+ ReservoirIconColor = "logo_reservoir_icon_color",
42
+ ReservoirVerticalColor = "logo_reservoir_vertical_color",
41
43
  SchomburgColor = "logo_schomburg_color",
42
44
  SchomburgBlack = "logo_schomburg_black",
43
45
  SchomburgWhite = "logo_schomburg_white",
@@ -3,7 +3,7 @@
3
3
  exports[`Logo renders the UI snapshot correctly 1`] = `
4
4
  <svg
5
5
  aria-hidden={false}
6
- className="chakra-icon css-onkibi"
6
+ className="chakra-icon css-1grhd2q"
7
7
  focusable={false}
8
8
  id="test-logo"
9
9
  role="img"
@@ -38,7 +38,7 @@ exports[`Logo renders the UI snapshot correctly 1`] = `
38
38
  exports[`Logo renders the UI snapshot correctly 2`] = `
39
39
  <svg
40
40
  aria-hidden={false}
41
- className="chakra-icon css-onkibi"
41
+ className="chakra-icon css-1grhd2q"
42
42
  focusable={false}
43
43
  id="test-logo-size"
44
44
  role="img"
@@ -69,3 +69,74 @@ exports[`Logo renders the UI snapshot correctly 2`] = `
69
69
  </g>
70
70
  </svg>
71
71
  `;
72
+
73
+ exports[`Logo renders the UI snapshot correctly 3`] = `
74
+ <svg
75
+ aria-hidden={false}
76
+ className="chakra-icon css-1ayys74"
77
+ focusable={false}
78
+ id="chakra"
79
+ role="img"
80
+ title="logo_nypl_full_black logo"
81
+ viewBox="0 0 24 24"
82
+ >
83
+ <g
84
+ stroke="currentColor"
85
+ strokeWidth="1.5"
86
+ >
87
+ <path
88
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
89
+ fill="none"
90
+ strokeLinecap="round"
91
+ />
92
+ <path
93
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
94
+ fill="currentColor"
95
+ strokeLinecap="round"
96
+ />
97
+ <circle
98
+ cx="12"
99
+ cy="12"
100
+ fill="none"
101
+ r="11.25"
102
+ strokeMiterlimit="10"
103
+ />
104
+ </g>
105
+ </svg>
106
+ `;
107
+
108
+ exports[`Logo renders the UI snapshot correctly 4`] = `
109
+ <svg
110
+ aria-hidden={false}
111
+ className="chakra-icon css-1grhd2q"
112
+ data-testid="props"
113
+ focusable={false}
114
+ id="props"
115
+ role="img"
116
+ title="logo_nypl_full_black logo"
117
+ viewBox="0 0 24 24"
118
+ >
119
+ <g
120
+ stroke="currentColor"
121
+ strokeWidth="1.5"
122
+ >
123
+ <path
124
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
125
+ fill="none"
126
+ strokeLinecap="round"
127
+ />
128
+ <path
129
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
130
+ fill="currentColor"
131
+ strokeLinecap="round"
132
+ />
133
+ <circle
134
+ cx="12"
135
+ cy="12"
136
+ fill="none"
137
+ r="11.25"
138
+ strokeMiterlimit="10"
139
+ />
140
+ </g>
141
+ </svg>
142
+ `;
@@ -34,6 +34,17 @@ import { getCategory } from "../../utils/componentCategories";
34
34
  | Added | `0.1.0` |
35
35
  | Latest | `0.3.5` |
36
36
 
37
+ ## Table of Contents
38
+
39
+ - [Overview](#overview)
40
+ - [Component Props](#component-props)
41
+ - [Code Implementation](#code-implementation)
42
+
43
+ ## Overview
44
+
45
+ _Note: This component is going through an accessibility review and is not
46
+ recommended for use until it is updated._
47
+
37
48
  <Description of={Modal} />
38
49
 
39
50
  export const ModalStory = (args) => {
@@ -124,6 +135,8 @@ export const ModalStory = (args) => {
124
135
  );
125
136
  };
126
137
 
138
+ ## Component Props
139
+
127
140
  <Canvas withToolbar>
128
141
  <Story
129
142
  name="Modal"
@@ -33,15 +33,15 @@ export const enumValues = getStorybookEnumValues(
33
33
  jest: ["Notification.test.tsx"],
34
34
  }}
35
35
  argTypes={{
36
- centered: {
37
- table: { defaultValue: { summary: false } },
38
- },
39
36
  className: { control: false },
40
37
  dismissible: {
41
38
  table: { defaultValue: { summary: false } },
42
39
  },
43
40
  icon: { control: false },
44
41
  id: { control: false },
42
+ isCentered: {
43
+ table: { defaultValue: { summary: false } },
44
+ },
45
45
  noMargin: {
46
46
  table: { defaultValue: { summary: false } },
47
47
  },
@@ -59,7 +59,18 @@ export const enumValues = getStorybookEnumValues(
59
59
  | Component Version | DS Version |
60
60
  | ----------------- | ---------- |
61
61
  | Added | `0.23.2` |
62
- | Latest | `0.25.12` |
62
+ | Latest | `0.26.0` |
63
+
64
+ ## Table of Contents
65
+
66
+ - [Overview](#overview)
67
+ - [Component Props](#component-props)
68
+ - [Accessibility](#accessibility)
69
+ - [Variants](#variants)
70
+ - [Custom Icon](#custom-icon)
71
+ - [Dismissible](#dismissible)
72
+
73
+ ## Overview
63
74
 
64
75
  <Description of={Notification} />
65
76
 
@@ -70,16 +81,18 @@ In the preview below, the border around the `Notification` is not part of the
70
81
  component. It has been added to help illustrate how the `Notification` sits
71
82
  within a parent element.
72
83
 
84
+ ## Component Props
85
+
73
86
  <Canvas>
74
87
  <Story
75
88
  name="Notification with Controls"
76
89
  args={{
77
90
  ariaLabel: "Notification label",
78
- centered: false,
79
91
  className: undefined,
80
92
  dismissible: false,
81
93
  icon: undefined,
82
94
  id: "notification-id",
95
+ isCentered: false,
83
96
  noMargin: false,
84
97
  notificationHeading: "Notification Heading",
85
98
  notificationContent: (
@@ -118,11 +131,22 @@ be rendered inside other landmark elements such as the `header` and `footer`
118
131
  landmark elements. Adding a `Notification` component inside an HTML `main` landmark
119
132
  element is acceptable.
120
133
 
134
+ Every `Notification` component must have a unique `aria-label` attribute. This
135
+ is set through the `ariaLabel` prop. A unique `aria-label` value, along with the
136
+ `aside` HTML landmark element, helps screen readers better navigate a page with
137
+ multiple `Notification`s.
138
+
121
139
  Icons rendered in the `Notification` component are decorative by default which
122
140
  means that they are hidden to screen readers. Since the "X" close icon inside the
123
141
  dismissible button is decorative and because there is no discernible text inside
124
142
  the button, an `aria-label` attribute is added to the button.
125
143
 
144
+ Resources:
145
+
146
+ - [MDN Aria: complementary role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/complementary_role)
147
+ - [Deque Creating Accessible SVGs](https://www.deque.com/blog/creating-accessible-svgs/)
148
+ - [CSS Tricks Accessible SVG Icons](https://css-tricks.com/accessible-svg-icons/)
149
+
126
150
  ## Variants
127
151
 
128
152
  ### With NotificationHeading
@@ -247,6 +247,27 @@ describe("Notification", () => {
247
247
  />
248
248
  )
249
249
  .toJSON();
250
+ const withChakraProps = renderer
251
+ .create(
252
+ <Notification
253
+ id="chakra"
254
+ notificationContent={<>Notification content.</>}
255
+ notificationHeading="Notification Heading"
256
+ p="20px"
257
+ color="ui.error.primary"
258
+ />
259
+ )
260
+ .toJSON();
261
+ const withOtherProps = renderer
262
+ .create(
263
+ <Notification
264
+ id="props"
265
+ notificationContent={<>Notification content.</>}
266
+ notificationHeading="Notification Heading"
267
+ data-testid="props"
268
+ />
269
+ )
270
+ .toJSON();
250
271
 
251
272
  expect(standard).toMatchSnapshot();
252
273
  expect(announcement).toMatchSnapshot();
@@ -255,5 +276,7 @@ describe("Notification", () => {
255
276
  expect(withoutAnIcon).toMatchSnapshot();
256
277
  expect(withoutHeadingAndIcon).toMatchSnapshot();
257
278
  expect(dismissible).toMatchSnapshot();
279
+ expect(withChakraProps).toMatchSnapshot();
280
+ expect(withOtherProps).toMatchSnapshot();
258
281
  });
259
282
  });
@@ -1,5 +1,5 @@
1
+ import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
1
2
  import React, { useState } from "react";
2
- import { Box, useMultiStyleConfig } from "@chakra-ui/react";
3
3
 
4
4
  import Button from "../Button/Button";
5
5
  import { ButtonTypes } from "../Button/ButtonTypes";
@@ -8,17 +8,15 @@ import { HeadingLevels } from "../Heading/HeadingTypes";
8
8
  import Icon from "../Icons/Icon";
9
9
  import { IconColors, IconNames, IconSizes } from "../Icons/IconTypes";
10
10
  import { NotificationTypes } from "./NotificationTypes";
11
- import generateUUID from "../../helpers/generateUUID";
12
-
13
11
  interface BaseProps {
14
12
  /** Optional prop to control text alignment in `NotificationContent` */
15
13
  alignText?: boolean;
16
- /** Optional prop to control horizontal alignment of the `Notification` content */
17
- centered?: boolean;
18
14
  /** Optional custom `Icon` that will override the default `Icon`. */
19
15
  icon?: JSX.Element;
20
16
  /** ID that other components can cross reference for accessibility purposes. */
21
17
  id?: string;
18
+ /** Optional prop to control horizontal alignment of the `Notification` content */
19
+ isCentered?: boolean;
22
20
  /** Optional prop to control the coloring of the `Notification` text and the
23
21
  * visibility of an applicable icon. */
24
22
  notificationType?: NotificationTypes;
@@ -27,7 +25,7 @@ interface BaseProps {
27
25
  // Used for `NotificationHeading` and `Notification`
28
26
  type BasePropsWithoutAlignText = Omit<BaseProps, "alignText">;
29
27
  // Used for `NotificationContent`
30
- type BasePropsWithoutCentered = Omit<BaseProps, "centered">;
28
+ type BasePropsWithoutIsCentered = Omit<BaseProps, "isCentered">;
31
29
 
32
30
  export interface NotificationProps extends BasePropsWithoutAlignText {
33
31
  /** Label used to describe the `Notification`'s aside HTML element. */
@@ -52,72 +50,73 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
52
50
  /**
53
51
  * NotificationHeading child-component.
54
52
  */
55
- export function NotificationHeading(
56
- props: React.PropsWithChildren<BasePropsWithoutAlignText>
57
- ) {
58
- const { centered, children, icon, id, notificationType } = props;
59
- const styles = useMultiStyleConfig("NotificationHeading", {
60
- centered,
61
- icon,
62
- notificationType,
63
- });
64
- return (
65
- <Box as="header" __css={styles}>
66
- {icon}
67
- <Heading
68
- additionalStyles={styles.heading}
69
- id={`${id}-heading`}
70
- level={HeadingLevels.Four}
71
- >
72
- {children}
73
- </Heading>
74
- </Box>
75
- );
76
- }
53
+ export const NotificationHeading = chakra(
54
+ (props: React.PropsWithChildren<BasePropsWithoutAlignText>) => {
55
+ const { children, icon, id, isCentered, notificationType, ...rest } = props;
56
+ const styles = useMultiStyleConfig("NotificationHeading", {
57
+ icon,
58
+ isCentered,
59
+ notificationType,
60
+ });
61
+ return (
62
+ <Box as="header" __css={styles} {...rest}>
63
+ {icon}
64
+ <Heading
65
+ additionalStyles={styles.heading}
66
+ id={`${id}-heading`}
67
+ level={HeadingLevels.Four}
68
+ >
69
+ {children}
70
+ </Heading>
71
+ </Box>
72
+ );
73
+ }
74
+ );
77
75
 
78
76
  /**
79
77
  * NotificationContent child-component.
80
78
  */
81
- export function NotificationContent(
82
- props: React.PropsWithChildren<BasePropsWithoutCentered>
83
- ) {
84
- const { alignText, children, icon, notificationType } = props;
85
- const styles = useMultiStyleConfig("NotificationContent", {
86
- alignText,
87
- icon,
88
- notificationType,
89
- });
90
- return (
91
- <Box __css={styles}>
92
- {icon}
93
- <Box __css={styles.content}>{children}</Box>
94
- </Box>
95
- );
96
- }
79
+ export const NotificationContent = chakra(
80
+ (props: React.PropsWithChildren<BasePropsWithoutIsCentered>) => {
81
+ const { alignText, children, icon, notificationType, ...rest } = props;
82
+ const styles = useMultiStyleConfig("NotificationContent", {
83
+ alignText,
84
+ icon,
85
+ notificationType,
86
+ });
87
+ return (
88
+ <Box __css={styles} {...rest}>
89
+ {icon}
90
+ <Box __css={styles.content}>{children}</Box>
91
+ </Box>
92
+ );
93
+ }
94
+ );
97
95
 
98
96
  /**
99
97
  * Component used to present users with three different levels of notifications:
100
98
  * standard, announcement, and warning.
101
99
  */
102
- export default function Notification(props: NotificationProps) {
100
+ export const Notification = chakra((props: NotificationProps) => {
103
101
  const {
104
102
  ariaLabel,
105
- centered = false,
106
103
  className,
107
104
  dismissible = false,
108
105
  icon,
109
- id = generateUUID(),
106
+ id,
107
+ isCentered = false,
110
108
  noMargin = false,
111
109
  notificationContent,
112
110
  notificationHeading,
113
111
  notificationType = NotificationTypes.Standard,
114
112
  showIcon = true,
113
+ ...rest
115
114
  } = props;
116
115
  const [isOpen, setIsOpen] = useState(true);
117
116
  const handleClose = () => setIsOpen(false);
118
117
  const styles = useMultiStyleConfig("Notification", {
119
- centered,
120
118
  dismissible,
119
+ isCentered,
121
120
  noMargin,
122
121
  notificationType,
123
122
  });
@@ -182,16 +181,16 @@ export default function Notification(props: NotificationProps) {
182
181
  const iconElem = iconElement();
183
182
  const childHeading = notificationHeading && (
184
183
  <NotificationHeading
185
- centered={centered}
186
184
  icon={iconElem}
187
185
  id={id}
186
+ isCentered={isCentered}
188
187
  notificationType={notificationType}
189
188
  >
190
189
  {notificationHeading}
191
190
  </NotificationHeading>
192
191
  );
193
192
  // Specific alignment styles for the content.
194
- const alignText = childHeading && showIcon && (!!icon || !centered);
193
+ const alignText = childHeading && showIcon && (!!icon || !isCentered);
195
194
  const childContent = (
196
195
  <NotificationContent
197
196
  alignText={alignText}
@@ -214,6 +213,7 @@ export default function Notification(props: NotificationProps) {
214
213
  data-type={notificationType}
215
214
  id={id}
216
215
  __css={styles}
216
+ {...rest}
217
217
  >
218
218
  <Box __css={styles.container}>
219
219
  {childHeading}
@@ -222,4 +222,6 @@ export default function Notification(props: NotificationProps) {
222
222
  {dismissibleButton}
223
223
  </Box>
224
224
  );
225
- }
225
+ });
226
+
227
+ export default Notification;