@nypl/design-system-react-components 0.25.13 → 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 (299) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +10 -10
  3. package/dist/components/Accordion/Accordion.d.ts +1 -1
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  5. package/dist/components/Button/Button.d.ts +2 -2
  6. package/dist/components/Card/Card.d.ts +11 -9
  7. package/dist/components/Checkbox/Checkbox.d.ts +2 -2
  8. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +5 -4
  9. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
  10. package/dist/components/DatePicker/DatePicker.d.ts +5 -6
  11. package/dist/components/Fieldset/Fieldset.d.ts +5 -6
  12. package/dist/components/Form/Form.d.ts +6 -6
  13. package/dist/components/Grid/GridTypes.d.ts +7 -7
  14. package/dist/components/Grid/SimpleGrid.d.ts +1 -1
  15. package/dist/components/Heading/Heading.d.ts +1 -1
  16. package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
  17. package/dist/components/Hero/Hero.d.ts +2 -1
  18. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
  19. package/dist/components/Icons/Icon.d.ts +2 -1
  20. package/dist/components/Image/Image.d.ts +2 -2
  21. package/dist/components/Label/Label.d.ts +7 -4
  22. package/dist/components/Link/Link.d.ts +1 -1
  23. package/dist/components/List/List.d.ts +11 -11
  24. package/dist/components/List/ListTypes.d.ts +1 -1
  25. package/dist/components/Logo/Logo.d.ts +2 -1
  26. package/dist/components/Logo/LogoSvgs.d.ts +2 -0
  27. package/dist/components/Logo/LogoTypes.d.ts +2 -0
  28. package/dist/components/Notification/Notification.d.ts +4 -4
  29. package/dist/components/Pagination/Pagination.d.ts +2 -2
  30. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
  31. package/dist/components/Radio/Radio.d.ts +4 -6
  32. package/dist/components/RadioGroup/RadioGroup.d.ts +12 -6
  33. package/dist/components/SearchBar/SearchBar.d.ts +4 -4
  34. package/dist/components/Select/Select.d.ts +10 -6
  35. package/dist/components/Select/SelectTypes.d.ts +4 -0
  36. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +4 -3
  37. package/dist/components/Slider/Slider.d.ts +6 -4
  38. package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
  39. package/dist/components/StructuredContent/StructuredContent.d.ts +2 -2
  40. package/dist/components/Table/Table.d.ts +1 -1
  41. package/dist/components/Tabs/Tabs.d.ts +4 -3
  42. package/dist/components/Template/Template.d.ts +4 -3
  43. package/dist/components/Text/Text.d.ts +1 -1
  44. package/dist/components/TextInput/TextInput.d.ts +5 -5
  45. package/dist/components/Toggle/Toggle.d.ts +3 -4
  46. package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
  47. package/dist/design-system-react-components.cjs.development.js +1663 -1139
  48. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  49. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  50. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  51. package/dist/design-system-react-components.esm.js +1667 -1143
  52. package/dist/design-system-react-components.esm.js.map +1 -1
  53. package/dist/hooks/useCarouselStyles.d.ts +3 -2
  54. package/dist/hooks/useNYPLTheme.d.ts +12 -0
  55. package/dist/index.d.ts +4 -1
  56. package/dist/styles.css +1 -1
  57. package/dist/theme/components/button.d.ts +10 -2
  58. package/dist/theme/components/card.d.ts +42 -22
  59. package/dist/theme/components/checkbox.d.ts +5 -4
  60. package/dist/theme/components/checkboxGroup.d.ts +1 -1
  61. package/dist/theme/components/componentWrapper.d.ts +2 -2
  62. package/dist/theme/components/customTable.d.ts +84 -1
  63. package/dist/theme/components/fieldset.d.ts +4 -14
  64. package/dist/theme/components/global.d.ts +23 -17
  65. package/dist/theme/components/heading.d.ts +53 -0
  66. package/dist/theme/components/helperErrorText.d.ts +1 -0
  67. package/dist/theme/components/hero.d.ts +20 -14
  68. package/dist/theme/components/label.d.ts +9 -10
  69. package/dist/theme/components/list.d.ts +99 -9
  70. package/dist/theme/components/radio.d.ts +6 -4
  71. package/dist/theme/components/radioGroup.d.ts +1 -1
  72. package/dist/theme/components/select.d.ts +34 -5
  73. package/dist/theme/components/skeletonLoader.d.ts +2 -2
  74. package/dist/theme/components/slider.d.ts +6 -3
  75. package/dist/theme/components/structuredContent.d.ts +197 -0
  76. package/dist/theme/components/textInput.d.ts +18 -6
  77. package/dist/theme/components/toggle.d.ts +7 -4
  78. package/dist/theme/foundations/global.d.ts +2 -0
  79. package/dist/theme/foundations/radii.d.ts +1 -0
  80. package/dist/theme/foundations/spacing.d.ts +46 -43
  81. package/package.json +5 -6
  82. package/src/components/Accordion/Accordion.stories.mdx +9 -9
  83. package/src/components/Accordion/Accordion.test.tsx +21 -0
  84. package/src/components/Accordion/Accordion.tsx +13 -9
  85. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +276 -27
  86. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  87. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +21 -5
  88. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +52 -31
  89. package/src/components/Breadcrumbs/Breadcrumbs.tsx +8 -7
  90. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
  91. package/src/components/Button/Button.stories.mdx +87 -23
  92. package/src/components/Button/Button.test.tsx +25 -0
  93. package/src/components/Button/Button.tsx +18 -7
  94. package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
  95. package/src/components/Card/Card.stories.mdx +287 -194
  96. package/src/components/Card/Card.test.tsx +102 -0
  97. package/src/components/Card/Card.tsx +73 -32
  98. package/src/components/Card/__snapshots__/Card.test.tsx.snap +195 -35
  99. package/src/components/Chakra/Grid.stories.mdx +4 -4
  100. package/src/components/Checkbox/Checkbox.stories.mdx +62 -10
  101. package/src/components/Checkbox/Checkbox.test.tsx +32 -9
  102. package/src/components/Checkbox/Checkbox.tsx +20 -15
  103. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +134 -7
  104. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +65 -17
  105. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +137 -81
  106. package/src/components/CheckboxGroup/CheckboxGroup.tsx +31 -21
  107. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +332 -97
  108. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
  109. package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
  110. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
  111. package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
  112. package/src/components/DatePicker/DatePicker.test.tsx +89 -13
  113. package/src/components/DatePicker/DatePicker.tsx +62 -56
  114. package/src/components/DatePicker/_DatePicker.scss +71 -13
  115. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
  116. package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
  117. package/src/components/Fieldset/Fieldset.test.tsx +58 -28
  118. package/src/components/Fieldset/Fieldset.tsx +35 -30
  119. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
  120. package/src/components/Form/Form.stories.mdx +72 -39
  121. package/src/components/Form/Form.test.tsx +58 -15
  122. package/src/components/Form/Form.tsx +89 -67
  123. package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
  124. package/src/components/Grid/GridTypes.tsx +7 -7
  125. package/src/components/Grid/SimpleGrid.stories.mdx +34 -6
  126. package/src/components/Grid/SimpleGrid.test.tsx +9 -0
  127. package/src/components/Grid/SimpleGrid.tsx +29 -20
  128. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
  129. package/src/components/Heading/Heading.stories.mdx +36 -3
  130. package/src/components/Heading/Heading.test.tsx +10 -0
  131. package/src/components/Heading/Heading.tsx +56 -50
  132. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +26 -7
  133. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
  134. package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
  135. package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
  136. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
  137. package/src/components/Hero/Hero.stories.mdx +125 -95
  138. package/src/components/Hero/Hero.test.tsx +33 -0
  139. package/src/components/Hero/Hero.tsx +135 -126
  140. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
  141. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
  142. package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -19
  143. package/src/components/HorizontalRule/HorizontalRule.tsx +9 -26
  144. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
  145. package/src/components/Icons/Icon.stories.mdx +31 -6
  146. package/src/components/Icons/Icon.test.tsx +38 -0
  147. package/src/components/Icons/Icon.tsx +93 -76
  148. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  149. package/src/components/Image/Image.stories.mdx +29 -5
  150. package/src/components/Image/Image.test.tsx +8 -0
  151. package/src/components/Image/Image.tsx +38 -26
  152. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  153. package/src/components/Label/Label.stories.mdx +42 -20
  154. package/src/components/Label/Label.test.tsx +42 -17
  155. package/src/components/Label/Label.tsx +22 -13
  156. package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
  157. package/src/components/Link/Link.stories.mdx +25 -1
  158. package/src/components/Link/Link.test.tsx +21 -0
  159. package/src/components/Link/Link.tsx +8 -8
  160. package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
  161. package/src/components/List/List.stories.mdx +75 -40
  162. package/src/components/List/List.test.tsx +67 -19
  163. package/src/components/List/List.tsx +38 -25
  164. package/src/components/List/ListTypes.tsx +1 -1
  165. package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
  166. package/src/components/Logo/Logo.stories.mdx +30 -6
  167. package/src/components/Logo/Logo.test.tsx +17 -0
  168. package/src/components/Logo/Logo.tsx +18 -6
  169. package/src/components/Logo/LogoSvgs.tsx +4 -0
  170. package/src/components/Logo/LogoTypes.tsx +2 -0
  171. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
  172. package/src/components/Modal/Modal.stories.mdx +13 -0
  173. package/src/components/Notification/Notification.stories.mdx +25 -1
  174. package/src/components/Notification/Notification.test.tsx +23 -0
  175. package/src/components/Notification/Notification.tsx +46 -44
  176. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
  177. package/src/components/Pagination/Pagination.stories.mdx +24 -4
  178. package/src/components/Pagination/Pagination.test.tsx +25 -0
  179. package/src/components/Pagination/Pagination.tsx +6 -6
  180. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
  181. package/src/components/Placeholder/Placeholder.tsx +3 -1
  182. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
  183. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +81 -11
  184. package/src/components/ProgressIndicator/ProgressIndicator.tsx +17 -9
  185. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
  186. package/src/components/Radio/Radio.stories.mdx +64 -12
  187. package/src/components/Radio/Radio.test.tsx +28 -8
  188. package/src/components/Radio/Radio.tsx +66 -63
  189. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +103 -6
  190. package/src/components/RadioGroup/RadioGroup.stories.mdx +224 -89
  191. package/src/components/RadioGroup/RadioGroup.test.tsx +122 -62
  192. package/src/components/RadioGroup/RadioGroup.tsx +106 -100
  193. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1236 -1020
  194. package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
  195. package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
  196. package/src/components/SearchBar/SearchBar.tsx +17 -8
  197. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
  198. package/src/components/Select/Select.stories.mdx +128 -49
  199. package/src/components/Select/Select.test.tsx +63 -16
  200. package/src/components/Select/Select.tsx +125 -92
  201. package/src/components/Select/SelectTypes.tsx +5 -0
  202. package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
  203. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +42 -10
  204. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +8 -0
  205. package/src/components/SkeletonLoader/SkeletonLoader.tsx +76 -72
  206. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
  207. package/src/components/Slider/Slider.stories.mdx +91 -42
  208. package/src/components/Slider/Slider.test.tsx +65 -17
  209. package/src/components/Slider/Slider.tsx +26 -19
  210. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
  211. package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
  212. package/src/components/StatusBadge/StatusBadge.test.tsx +16 -0
  213. package/src/components/StatusBadge/StatusBadge.tsx +25 -20
  214. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
  215. package/src/components/StructuredContent/StructuredContent.stories.mdx +131 -12
  216. package/src/components/StructuredContent/StructuredContent.test.tsx +34 -0
  217. package/src/components/StructuredContent/StructuredContent.tsx +80 -75
  218. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
  219. package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
  220. package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
  221. package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
  222. package/src/components/StyleGuide/ColorCard.tsx +1 -1
  223. package/src/components/StyleGuide/Colors.stories.mdx +1 -2
  224. package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
  225. package/src/components/StyleGuide/Forms.stories.mdx +27 -12
  226. package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
  227. package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
  228. package/src/components/StyleGuide/Typography.stories.mdx +30 -21
  229. package/src/components/Table/Table.stories.mdx +38 -11
  230. package/src/components/Table/Table.test.tsx +15 -0
  231. package/src/components/Table/Table.tsx +7 -7
  232. package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
  233. package/src/components/Tabs/Tabs.stories.mdx +52 -3
  234. package/src/components/Tabs/Tabs.test.tsx +16 -0
  235. package/src/components/Tabs/Tabs.tsx +10 -6
  236. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
  237. package/src/components/Template/Template.stories.mdx +47 -43
  238. package/src/components/Template/Template.test.tsx +33 -0
  239. package/src/components/Template/Template.tsx +65 -60
  240. package/src/components/Template/__snapshots__/Template.test.tsx.snap +191 -20
  241. package/src/components/Text/Text.stories.mdx +20 -1
  242. package/src/components/Text/Text.test.tsx +12 -0
  243. package/src/components/Text/Text.tsx +6 -4
  244. package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
  245. package/src/components/TextInput/TextInput.stories.mdx +65 -19
  246. package/src/components/TextInput/TextInput.test.tsx +42 -28
  247. package/src/components/TextInput/TextInput.tsx +121 -113
  248. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
  249. package/src/components/Toggle/Toggle.stories.mdx +80 -22
  250. package/src/components/Toggle/Toggle.test.tsx +27 -9
  251. package/src/components/Toggle/Toggle.tsx +22 -18
  252. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +128 -5
  253. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
  254. package/src/components/VideoPlayer/VideoPlayer.test.tsx +23 -0
  255. package/src/components/VideoPlayer/VideoPlayer.tsx +133 -126
  256. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
  257. package/src/docs/Chakra.stories.mdx +50 -9
  258. package/src/docs/Welcome.stories.mdx +160 -41
  259. package/src/hooks/useCarouselStyles.stories.mdx +22 -2
  260. package/src/hooks/useCarouselStyles.ts +3 -2
  261. package/src/hooks/useNYPLTheme.stories.mdx +101 -0
  262. package/src/hooks/useNYPLTheme.ts +30 -6
  263. package/src/hooks/useWindowSize.stories.mdx +23 -0
  264. package/src/index.ts +4 -1
  265. package/src/styles/base/_place-holder.scss +1 -1
  266. package/src/theme/components/button.ts +15 -7
  267. package/src/theme/components/card.ts +30 -19
  268. package/src/theme/components/checkbox.ts +10 -8
  269. package/src/theme/components/checkboxGroup.ts +1 -1
  270. package/src/theme/components/componentWrapper.ts +2 -2
  271. package/src/theme/components/customTable.ts +39 -31
  272. package/src/theme/components/fieldset.ts +1 -2
  273. package/src/theme/components/global.ts +25 -20
  274. package/src/theme/components/heading.ts +1 -1
  275. package/src/theme/components/helperErrorText.ts +1 -0
  276. package/src/theme/components/hero.ts +13 -15
  277. package/src/theme/components/label.ts +4 -3
  278. package/src/theme/components/list.ts +73 -66
  279. package/src/theme/components/notification.ts +2 -2
  280. package/src/theme/components/radio.ts +9 -9
  281. package/src/theme/components/radioGroup.ts +1 -1
  282. package/src/theme/components/select.ts +35 -22
  283. package/src/theme/components/skeletonLoader.ts +3 -3
  284. package/src/theme/components/slider.ts +8 -7
  285. package/src/theme/components/statusBadge.ts +2 -2
  286. package/src/theme/components/structuredContent.ts +66 -1
  287. package/src/theme/components/tabs.ts +2 -2
  288. package/src/theme/components/template.ts +9 -9
  289. package/src/theme/components/textInput.ts +13 -12
  290. package/src/theme/components/toggle.ts +17 -10
  291. package/src/theme/components/videoPlayer.ts +1 -1
  292. package/src/theme/foundations/colors.ts +1 -1
  293. package/src/theme/foundations/radii.ts +1 -0
  294. package/src/theme/foundations/spacing.ts +70 -22
  295. package/src/theme/foundations/typography.ts +2 -2
  296. package/src/utils/componentCategories.ts +1 -2
  297. package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
  298. package/dist/helpers/generateUUID.d.ts +0 -1
  299. package/src/helpers/generateUUID.tsx +0 -5
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports[`List Renders the UI snapshot correctly 1`] = `
4
4
  <ul
5
- className="css-0"
5
+ className="css-1xdhyk6"
6
6
  id="unordered"
7
7
  >
8
8
  <li>
@@ -22,7 +22,7 @@ exports[`List Renders the UI snapshot correctly 1`] = `
22
22
 
23
23
  exports[`List Renders the UI snapshot correctly 2`] = `
24
24
  <ul
25
- className="css-0"
25
+ className="css-1xdhyk6"
26
26
  id="ordered"
27
27
  >
28
28
  <li>
@@ -42,7 +42,7 @@ exports[`List Renders the UI snapshot correctly 2`] = `
42
42
 
43
43
  exports[`List Renders the UI snapshot correctly 3`] = `
44
44
  <ol
45
- className="css-0"
45
+ className="css-1xdhyk6"
46
46
  id="unordered-no-styling"
47
47
  >
48
48
  <li>
@@ -62,7 +62,7 @@ exports[`List Renders the UI snapshot correctly 3`] = `
62
62
 
63
63
  exports[`List Renders the UI snapshot correctly 4`] = `
64
64
  <ol
65
- className="css-0"
65
+ className="css-1xdhyk6"
66
66
  id="ordered-no-styling"
67
67
  >
68
68
  <li>
@@ -82,12 +82,114 @@ exports[`List Renders the UI snapshot correctly 4`] = `
82
82
 
83
83
  exports[`List Renders the UI snapshot correctly 5`] = `
84
84
  <section
85
- className="css-0"
86
- id="definition"
85
+ className="css-1xdhyk6"
86
+ id="description"
87
87
  >
88
88
  <h2
89
- className="chakra-heading css-0"
90
- id="definition-heading"
89
+ className="chakra-heading css-1xdhyk6"
90
+ id="description-heading"
91
+ >
92
+ Animal Crossing Fish
93
+ </h2>
94
+ <dl>
95
+ <dt>
96
+ Mahi-mahi
97
+ </dt>
98
+ <dd>
99
+ <p>
100
+ The mahi-mahi is an ocean fish known...
101
+ </p>
102
+ </dd>
103
+ <dt>
104
+ Golden trout
105
+ </dt>
106
+ <dd>
107
+ The golden trout is a beautifully colored fish...
108
+ </dd>
109
+ </dl>
110
+ </section>
111
+ `;
112
+
113
+ exports[`List Renders the UI snapshot correctly 6`] = `
114
+ <ul
115
+ className="css-kle7zy"
116
+ id="chakra"
117
+ >
118
+ <li>
119
+ Mahi-mahi
120
+ </li>
121
+ <li>
122
+ Golden trout
123
+ </li>
124
+ <li>
125
+ Rainbowfish
126
+ </li>
127
+ <li>
128
+ Suckerfish
129
+ </li>
130
+ </ul>
131
+ `;
132
+
133
+ exports[`List Renders the UI snapshot correctly 7`] = `
134
+ <ul
135
+ className="css-1xdhyk6"
136
+ data-testid="other"
137
+ id="other"
138
+ >
139
+ <li>
140
+ Mahi-mahi
141
+ </li>
142
+ <li>
143
+ Golden trout
144
+ </li>
145
+ <li>
146
+ Rainbowfish
147
+ </li>
148
+ <li>
149
+ Suckerfish
150
+ </li>
151
+ </ul>
152
+ `;
153
+
154
+ exports[`List Renders the UI snapshot correctly 8`] = `
155
+ <section
156
+ className="css-kle7zy"
157
+ id="chakra"
158
+ >
159
+ <h2
160
+ className="chakra-heading css-1xdhyk6"
161
+ id="chakra-heading"
162
+ >
163
+ Animal Crossing Fish
164
+ </h2>
165
+ <dl>
166
+ <dt>
167
+ Mahi-mahi
168
+ </dt>
169
+ <dd>
170
+ <p>
171
+ The mahi-mahi is an ocean fish known...
172
+ </p>
173
+ </dd>
174
+ <dt>
175
+ Golden trout
176
+ </dt>
177
+ <dd>
178
+ The golden trout is a beautifully colored fish...
179
+ </dd>
180
+ </dl>
181
+ </section>
182
+ `;
183
+
184
+ exports[`List Renders the UI snapshot correctly 9`] = `
185
+ <section
186
+ className="css-1xdhyk6"
187
+ data-testid="other"
188
+ id="other"
189
+ >
190
+ <h2
191
+ className="chakra-heading css-1xdhyk6"
192
+ id="other-heading"
91
193
  >
92
194
  Animal Crossing Fish
93
195
  </h2>
@@ -57,10 +57,23 @@ export const sizesEnumValues = getStorybookEnumValues(LogoSizes, "LogoSizes");
57
57
  | Component Version | DS Version |
58
58
  | ----------------- | ---------- |
59
59
  | Added | `0.25.9` |
60
- | Latest | `0.25.12` |
60
+ | Latest | `0.26.0` |
61
+
62
+ ## Table of Contents
63
+
64
+ - [Overview](#overview)
65
+ - [Component Props](#component-props)
66
+ - [Accessibility](#accessibility)
67
+ - [Logo Sizes](#logo-sizes)
68
+ - [All Logos](#all-logos)
69
+ - [Custom Logos](#custom-logos)
70
+
71
+ ## Overview
61
72
 
62
73
  <Description of={Logo} />
63
74
 
75
+ ## Component Props
76
+
64
77
  <Canvas withToolbar>
65
78
  <Story
66
79
  name="Logo with Controls"
@@ -142,11 +155,22 @@ export const allLogosGrid = (list) => (
142
155
 
143
156
  ## Accessibility
144
157
 
145
- For accessibility purposes, every DS `Logo` will render the `svg` element with
146
- its `svg` file name in the `title` element. The default text in the `title` element
147
- is the logo's code name. Pass in better descriptive text in the `title` prop
148
- when using the `Logo` component in your application. This will give screenreaders
149
- a better descriptive title for the `svg` graphic.
158
+ For accessibility purposes, every Reservoir Design System (DS) `Logo` will
159
+ render the `svg` element with its `svg` file name in the `title` element. The
160
+ default text in the `title` element is the logo's code name. Pass in better
161
+ descriptive text in the `title` prop when using the `Logo` component in your
162
+ application. This will give screenreaders a better descriptive title for the
163
+ `svg` graphic.
164
+
165
+ `Logos`s are decorative by default. This means that they are presentational and
166
+ screenreaders will not read them because the `aria-hidden` attribute is set to
167
+ `true`.
168
+
169
+ Resources:
170
+
171
+ - [W3C Design System SVG Icons](https://design-system.w3.org/styles/svg-icons.html)
172
+ - [CSS-Tricks Accessible SVG Icons](https://css-tricks.com/accessible-svg-icons/)
173
+ - [Chakra UI Icon](https://chakra-ui.com/docs/components/media-and-icons/icon)
150
174
 
151
175
  ## Logo Sizes
152
176
 
@@ -101,8 +101,25 @@ describe("Logo", () => {
101
101
  />
102
102
  )
103
103
  .toJSON();
104
+ const withChakraProps = renderer
105
+ .create(
106
+ <Logo
107
+ id="chakra"
108
+ name={LogoNames.NYPLBlack}
109
+ p="20px"
110
+ color="ui.error.primary"
111
+ />
112
+ )
113
+ .toJSON();
114
+ const withOtherProps = renderer
115
+ .create(
116
+ <Logo id="props" name={LogoNames.NYPLBlack} data-testid="props" />
117
+ )
118
+ .toJSON();
104
119
 
105
120
  expect(standard).toMatchSnapshot();
106
121
  expect(withCustomSize).toMatchSnapshot();
122
+ expect(withChakraProps).toMatchSnapshot();
123
+ expect(withOtherProps).toMatchSnapshot();
107
124
  });
108
125
  });
@@ -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,6 +54,7 @@ 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
 
@@ -98,5 +104,11 @@ export default function Logo(props: React.PropsWithChildren<LogoProps>) {
98
104
  );
99
105
  }
100
106
 
101
- return <Box __css={styles}>{childSVG}</Box>;
102
- }
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,
@@ -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"
@@ -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.13` |
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,6 +81,8 @@ 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"
@@ -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,8 +8,6 @@ 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;
@@ -52,66 +50,67 @@ 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 { children, icon, id, isCentered, notificationType } = props;
59
- const styles = useMultiStyleConfig("NotificationHeading", {
60
- icon,
61
- isCentered,
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<BasePropsWithoutIsCentered>
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
103
  className,
106
104
  dismissible = false,
107
105
  icon,
108
- id = generateUUID(),
106
+ id,
109
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);
@@ -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;