@nypl/design-system-react-components 0.25.13 → 0.27.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 (305) hide show
  1. package/CHANGELOG.md +85 -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/Modal/Modal.d.ts +28 -8
  29. package/dist/components/Notification/Notification.d.ts +4 -4
  30. package/dist/components/Pagination/Pagination.d.ts +2 -2
  31. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
  32. package/dist/components/Radio/Radio.d.ts +4 -6
  33. package/dist/components/RadioGroup/RadioGroup.d.ts +12 -6
  34. package/dist/components/SearchBar/SearchBar.d.ts +4 -4
  35. package/dist/components/Select/Select.d.ts +10 -6
  36. package/dist/components/Select/SelectTypes.d.ts +4 -0
  37. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +4 -3
  38. package/dist/components/Slider/Slider.d.ts +6 -4
  39. package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
  40. package/dist/components/StructuredContent/StructuredContent.d.ts +2 -2
  41. package/dist/components/Table/Table.d.ts +1 -1
  42. package/dist/components/Tabs/Tabs.d.ts +4 -3
  43. package/dist/components/Template/Template.d.ts +4 -3
  44. package/dist/components/Text/Text.d.ts +1 -1
  45. package/dist/components/TextInput/TextInput.d.ts +5 -5
  46. package/dist/components/Toggle/Toggle.d.ts +3 -4
  47. package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
  48. package/dist/design-system-react-components.cjs.development.js +1767 -1180
  49. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  50. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  51. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  52. package/dist/design-system-react-components.esm.js +1774 -1188
  53. package/dist/design-system-react-components.esm.js.map +1 -1
  54. package/dist/hooks/useCarouselStyles.d.ts +3 -2
  55. package/dist/hooks/useNYPLTheme.d.ts +12 -0
  56. package/dist/index.d.ts +5 -2
  57. package/dist/styles.css +1 -1
  58. package/dist/theme/components/button.d.ts +10 -2
  59. package/dist/theme/components/card.d.ts +42 -22
  60. package/dist/theme/components/checkbox.d.ts +5 -4
  61. package/dist/theme/components/checkboxGroup.d.ts +1 -1
  62. package/dist/theme/components/componentWrapper.d.ts +2 -2
  63. package/dist/theme/components/customTable.d.ts +84 -1
  64. package/dist/theme/components/fieldset.d.ts +4 -14
  65. package/dist/theme/components/global.d.ts +23 -17
  66. package/dist/theme/components/heading.d.ts +53 -0
  67. package/dist/theme/components/helperErrorText.d.ts +1 -0
  68. package/dist/theme/components/hero.d.ts +20 -14
  69. package/dist/theme/components/label.d.ts +9 -10
  70. package/dist/theme/components/list.d.ts +99 -9
  71. package/dist/theme/components/radio.d.ts +6 -4
  72. package/dist/theme/components/radioGroup.d.ts +1 -1
  73. package/dist/theme/components/select.d.ts +28 -5
  74. package/dist/theme/components/skeletonLoader.d.ts +2 -2
  75. package/dist/theme/components/slider.d.ts +6 -3
  76. package/dist/theme/components/structuredContent.d.ts +197 -0
  77. package/dist/theme/components/textInput.d.ts +18 -6
  78. package/dist/theme/components/toggle.d.ts +7 -4
  79. package/dist/theme/foundations/global.d.ts +2 -0
  80. package/dist/theme/foundations/radii.d.ts +1 -0
  81. package/dist/theme/foundations/spacing.d.ts +46 -43
  82. package/package.json +17 -19
  83. package/src/components/Accordion/Accordion.stories.mdx +9 -9
  84. package/src/components/Accordion/Accordion.test.tsx +21 -0
  85. package/src/components/Accordion/Accordion.tsx +13 -9
  86. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +276 -27
  87. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  88. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +21 -5
  89. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +52 -31
  90. package/src/components/Breadcrumbs/Breadcrumbs.tsx +8 -7
  91. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
  92. package/src/components/Button/Button.stories.mdx +87 -23
  93. package/src/components/Button/Button.test.tsx +25 -0
  94. package/src/components/Button/Button.tsx +18 -7
  95. package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
  96. package/src/components/Card/Card.stories.mdx +287 -194
  97. package/src/components/Card/Card.test.tsx +102 -0
  98. package/src/components/Card/Card.tsx +73 -32
  99. package/src/components/Card/__snapshots__/Card.test.tsx.snap +196 -36
  100. package/src/components/Chakra/Grid.stories.mdx +4 -4
  101. package/src/components/Checkbox/Checkbox.stories.mdx +62 -10
  102. package/src/components/Checkbox/Checkbox.test.tsx +32 -9
  103. package/src/components/Checkbox/Checkbox.tsx +20 -15
  104. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +134 -7
  105. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +65 -17
  106. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +137 -81
  107. package/src/components/CheckboxGroup/CheckboxGroup.tsx +31 -21
  108. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +332 -97
  109. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
  110. package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
  111. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
  112. package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
  113. package/src/components/DatePicker/DatePicker.test.tsx +89 -13
  114. package/src/components/DatePicker/DatePicker.tsx +62 -56
  115. package/src/components/DatePicker/_DatePicker.scss +71 -13
  116. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
  117. package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
  118. package/src/components/Fieldset/Fieldset.test.tsx +58 -28
  119. package/src/components/Fieldset/Fieldset.tsx +35 -30
  120. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
  121. package/src/components/Form/Form.stories.mdx +72 -39
  122. package/src/components/Form/Form.test.tsx +58 -15
  123. package/src/components/Form/Form.tsx +89 -67
  124. package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
  125. package/src/components/Grid/GridTypes.tsx +7 -7
  126. package/src/components/Grid/SimpleGrid.stories.mdx +34 -6
  127. package/src/components/Grid/SimpleGrid.test.tsx +9 -0
  128. package/src/components/Grid/SimpleGrid.tsx +29 -20
  129. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
  130. package/src/components/Heading/Heading.stories.mdx +36 -3
  131. package/src/components/Heading/Heading.test.tsx +10 -0
  132. package/src/components/Heading/Heading.tsx +56 -50
  133. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +26 -7
  134. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
  135. package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
  136. package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
  137. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
  138. package/src/components/Hero/Hero.stories.mdx +125 -95
  139. package/src/components/Hero/Hero.test.tsx +33 -0
  140. package/src/components/Hero/Hero.tsx +135 -126
  141. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
  142. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
  143. package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -19
  144. package/src/components/HorizontalRule/HorizontalRule.tsx +9 -26
  145. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
  146. package/src/components/Icons/Icon.stories.mdx +31 -6
  147. package/src/components/Icons/Icon.test.tsx +38 -0
  148. package/src/components/Icons/Icon.tsx +93 -76
  149. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  150. package/src/components/Image/Image.stories.mdx +29 -5
  151. package/src/components/Image/Image.test.tsx +8 -0
  152. package/src/components/Image/Image.tsx +38 -26
  153. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  154. package/src/components/Label/Label.stories.mdx +42 -20
  155. package/src/components/Label/Label.test.tsx +42 -17
  156. package/src/components/Label/Label.tsx +22 -13
  157. package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
  158. package/src/components/Link/Link.stories.mdx +25 -15
  159. package/src/components/Link/Link.test.tsx +21 -22
  160. package/src/components/Link/Link.tsx +8 -8
  161. package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
  162. package/src/components/List/List.stories.mdx +75 -40
  163. package/src/components/List/List.test.tsx +67 -19
  164. package/src/components/List/List.tsx +38 -25
  165. package/src/components/List/ListTypes.tsx +1 -1
  166. package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
  167. package/src/components/Logo/Logo.stories.mdx +30 -6
  168. package/src/components/Logo/Logo.test.tsx +17 -0
  169. package/src/components/Logo/Logo.tsx +18 -6
  170. package/src/components/Logo/LogoSvgs.tsx +4 -0
  171. package/src/components/Logo/LogoTypes.tsx +2 -0
  172. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
  173. package/src/components/Modal/Modal.stories.mdx +256 -136
  174. package/src/components/Modal/Modal.test.tsx +151 -9
  175. package/src/components/Modal/Modal.tsx +140 -20
  176. package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -0
  177. package/src/components/Notification/Notification.stories.mdx +25 -1
  178. package/src/components/Notification/Notification.test.tsx +23 -0
  179. package/src/components/Notification/Notification.tsx +46 -44
  180. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
  181. package/src/components/Pagination/Pagination.stories.mdx +25 -6
  182. package/src/components/Pagination/Pagination.test.tsx +25 -0
  183. package/src/components/Pagination/Pagination.tsx +6 -6
  184. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
  185. package/src/components/Placeholder/Placeholder.tsx +3 -1
  186. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
  187. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +81 -11
  188. package/src/components/ProgressIndicator/ProgressIndicator.tsx +17 -9
  189. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
  190. package/src/components/Radio/Radio.stories.mdx +64 -12
  191. package/src/components/Radio/Radio.test.tsx +28 -8
  192. package/src/components/Radio/Radio.tsx +66 -63
  193. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +103 -6
  194. package/src/components/RadioGroup/RadioGroup.stories.mdx +224 -89
  195. package/src/components/RadioGroup/RadioGroup.test.tsx +122 -62
  196. package/src/components/RadioGroup/RadioGroup.tsx +106 -100
  197. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1236 -1020
  198. package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
  199. package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
  200. package/src/components/SearchBar/SearchBar.tsx +17 -8
  201. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
  202. package/src/components/Select/Select.stories.mdx +128 -49
  203. package/src/components/Select/Select.test.tsx +63 -16
  204. package/src/components/Select/Select.tsx +131 -92
  205. package/src/components/Select/SelectTypes.tsx +5 -0
  206. package/src/components/Select/__snapshots__/Select.test.tsx.snap +765 -425
  207. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +42 -10
  208. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +8 -0
  209. package/src/components/SkeletonLoader/SkeletonLoader.tsx +76 -72
  210. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
  211. package/src/components/Slider/Slider.stories.mdx +91 -42
  212. package/src/components/Slider/Slider.test.tsx +65 -17
  213. package/src/components/Slider/Slider.tsx +26 -19
  214. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
  215. package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
  216. package/src/components/StatusBadge/StatusBadge.test.tsx +16 -0
  217. package/src/components/StatusBadge/StatusBadge.tsx +25 -20
  218. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
  219. package/src/components/StructuredContent/StructuredContent.stories.mdx +131 -12
  220. package/src/components/StructuredContent/StructuredContent.test.tsx +34 -0
  221. package/src/components/StructuredContent/StructuredContent.tsx +80 -75
  222. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
  223. package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
  224. package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
  225. package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
  226. package/src/components/StyleGuide/ColorCard.tsx +1 -1
  227. package/src/components/StyleGuide/Colors.stories.mdx +1 -2
  228. package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
  229. package/src/components/StyleGuide/Forms.stories.mdx +27 -12
  230. package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
  231. package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
  232. package/src/components/StyleGuide/Typography.stories.mdx +30 -21
  233. package/src/components/Table/Table.stories.mdx +38 -11
  234. package/src/components/Table/Table.test.tsx +15 -0
  235. package/src/components/Table/Table.tsx +7 -7
  236. package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
  237. package/src/components/Tabs/Tabs.stories.mdx +52 -3
  238. package/src/components/Tabs/Tabs.test.tsx +16 -0
  239. package/src/components/Tabs/Tabs.tsx +10 -6
  240. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
  241. package/src/components/Template/Template.stories.mdx +47 -43
  242. package/src/components/Template/Template.test.tsx +33 -0
  243. package/src/components/Template/Template.tsx +65 -60
  244. package/src/components/Template/__snapshots__/Template.test.tsx.snap +191 -20
  245. package/src/components/Text/Text.stories.mdx +20 -1
  246. package/src/components/Text/Text.test.tsx +12 -0
  247. package/src/components/Text/Text.tsx +6 -4
  248. package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
  249. package/src/components/TextInput/TextInput.stories.mdx +65 -19
  250. package/src/components/TextInput/TextInput.test.tsx +42 -28
  251. package/src/components/TextInput/TextInput.tsx +121 -113
  252. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
  253. package/src/components/Toggle/Toggle.stories.mdx +80 -22
  254. package/src/components/Toggle/Toggle.test.tsx +27 -9
  255. package/src/components/Toggle/Toggle.tsx +22 -18
  256. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +128 -5
  257. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
  258. package/src/components/VideoPlayer/VideoPlayer.test.tsx +23 -0
  259. package/src/components/VideoPlayer/VideoPlayer.tsx +133 -126
  260. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
  261. package/src/docs/Chakra.stories.mdx +50 -9
  262. package/src/docs/Welcome.stories.mdx +160 -41
  263. package/src/hooks/useCarouselStyles.stories.mdx +22 -2
  264. package/src/hooks/useCarouselStyles.ts +3 -2
  265. package/src/hooks/useNYPLTheme.stories.mdx +101 -0
  266. package/src/hooks/useNYPLTheme.ts +30 -6
  267. package/src/hooks/useWindowSize.stories.mdx +23 -0
  268. package/src/index.ts +5 -2
  269. package/src/styles/base/_place-holder.scss +1 -1
  270. package/src/styles.scss +0 -1
  271. package/src/theme/components/button.ts +15 -7
  272. package/src/theme/components/card.ts +30 -19
  273. package/src/theme/components/checkbox.ts +10 -8
  274. package/src/theme/components/checkboxGroup.ts +1 -1
  275. package/src/theme/components/componentWrapper.ts +2 -2
  276. package/src/theme/components/customTable.ts +39 -31
  277. package/src/theme/components/fieldset.ts +1 -2
  278. package/src/theme/components/global.ts +25 -20
  279. package/src/theme/components/heading.ts +1 -1
  280. package/src/theme/components/helperErrorText.ts +1 -0
  281. package/src/theme/components/hero.ts +13 -15
  282. package/src/theme/components/label.ts +4 -3
  283. package/src/theme/components/list.ts +73 -66
  284. package/src/theme/components/notification.ts +2 -2
  285. package/src/theme/components/radio.ts +9 -9
  286. package/src/theme/components/radioGroup.ts +1 -1
  287. package/src/theme/components/select.ts +31 -22
  288. package/src/theme/components/skeletonLoader.ts +3 -3
  289. package/src/theme/components/slider.ts +8 -7
  290. package/src/theme/components/statusBadge.ts +2 -2
  291. package/src/theme/components/structuredContent.ts +66 -1
  292. package/src/theme/components/tabs.ts +2 -2
  293. package/src/theme/components/template.ts +9 -9
  294. package/src/theme/components/textInput.ts +13 -12
  295. package/src/theme/components/toggle.ts +17 -10
  296. package/src/theme/components/videoPlayer.ts +1 -1
  297. package/src/theme/foundations/colors.ts +1 -1
  298. package/src/theme/foundations/radii.ts +1 -0
  299. package/src/theme/foundations/spacing.ts +70 -22
  300. package/src/theme/foundations/typography.ts +2 -2
  301. package/src/utils/componentCategories.ts +1 -2
  302. package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
  303. package/dist/helpers/generateUUID.d.ts +0 -1
  304. package/src/components/Modal/_Modal.scss +0 -18
  305. package/src/helpers/generateUUID.tsx +0 -5
@@ -1,14 +1,12 @@
1
+ import { As, Box, chakra, useStyleConfig } from "@chakra-ui/react";
1
2
  import * as React from "react";
2
- import { As, Box, useStyleConfig } from "@chakra-ui/react";
3
3
 
4
4
  import { ListTypes } from "./ListTypes";
5
5
  import Heading from "../Heading/Heading";
6
6
  import { HeadingLevels } from "../Heading/HeadingTypes";
7
- import generateUUID from "../../helpers/generateUUID";
8
-
9
- interface DefinitionProps {
7
+ interface DescriptionProps {
10
8
  term: string;
11
- definition: string | JSX.Element;
9
+ description: string | JSX.Element;
12
10
  }
13
11
  export interface ListProps {
14
12
  /** Optionally pass in additional Chakra-based styles. */
@@ -21,36 +19,37 @@ export interface ListProps {
21
19
  inline?: boolean;
22
20
  /** Data to render if children are not passed. For `ListTypes.Ordered` and
23
21
  * `ListTypes.Unordered` `List` types, the data structure is an array of
24
- * strings to renders as `li` items. For `ListTypes.Definition` `List` types,
25
- * the data structure is an array of objects with `term` and `definition`
22
+ * strings to renders as `li` items. For `ListTypes.Description` `List` types,
23
+ * the data structure is an array of objects with `term` and `description`
26
24
  * properties to render `dt` and `dd` elements, respectively.
27
25
  */
28
- listItems?: (string | JSX.Element | DefinitionProps)[];
26
+ listItems?: (string | JSX.Element | DescriptionProps)[];
29
27
  /** Remove list styling. */
30
28
  noStyling?: boolean;
31
29
  /** An optional title that will appear over the list. This prop only applies
32
- * to Definition Lists. */
30
+ * to Description Lists. */
33
31
  title?: string;
34
- /** The type of list: Ordered, Unordered, or Definition. Unordered by default. */
32
+ /** The type of list: Ordered, Unordered, or Description. Unordered by default. */
35
33
  type: ListTypes;
36
34
  }
37
35
 
38
36
  /**
39
- * A component that renders list item `li` elements or definition item `dt`
37
+ * A component that renders list item `li` elements or description item `dt`
40
38
  * and `dd` elements based on the `type` prop. Note that the `title` prop will
41
- * only display for the `Definition` list type.
39
+ * only display for the `Description` list type.
42
40
  */
43
- export default function List(props: React.PropsWithChildren<ListProps>) {
41
+ export const List = chakra((props: React.PropsWithChildren<ListProps>) => {
44
42
  const {
45
43
  additionalStyles = {},
46
44
  children,
47
45
  className,
48
- id = generateUUID(),
46
+ id,
49
47
  inline = false,
50
48
  listItems,
51
49
  noStyling = false,
52
50
  title,
53
51
  type = ListTypes.Unordered,
52
+ ...rest
54
53
  } = props;
55
54
  const styles = useStyleConfig("List", { inline, noStyling, variant: type });
56
55
  const finalStyles = { ...styles, ...additionalStyles };
@@ -78,7 +77,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
78
77
  * first, otherwise it will check and render the data passed into the
79
78
  * `listItems` props based on the `ListType` type. If it is of type "Unordered"
80
79
  * or "Ordered", it will return `li` elements. Otherwise, it will return a
81
- * combination of `dt` and `dd` elements for the "Definition" type.
80
+ * combination of `dt` and `dd` elements for the "Description" type.
82
81
  */
83
82
  const listChildrenElms = (listType: ListTypes) => {
84
83
  if (children) {
@@ -86,10 +85,10 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
86
85
  }
87
86
  if (listType === ListTypes.Ordered || listType === ListTypes.Unordered) {
88
87
  return listItems.map((item, i) => <li key={i}>{item}</li>);
89
- } else if (listType === ListTypes.Definition) {
90
- return (listItems as DefinitionProps[]).map((item, i) => [
88
+ } else if (listType === ListTypes.Description) {
89
+ return (listItems as DescriptionProps[]).map((item, i) => [
91
90
  <dt key={`${i}-term`}>{item.term}</dt>,
92
- <dd key={`${i}-def`}>{item.definition}</dd>,
91
+ <dd key={`${i}-des`}>{item.description}</dd>,
93
92
  ]);
94
93
  }
95
94
  return null;
@@ -111,7 +110,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
111
110
  * Checks for `dt` and `dd` elements and consoles a warning if the
112
111
  * children are different HTML elements.
113
112
  */
114
- const checkDefinitionChildrenError = () => {
113
+ const checkDescriptionChildrenError = () => {
115
114
  React.Children.map(children, function (child: React.ReactElement) {
116
115
  if (
117
116
  child.type !== "dt" &&
@@ -122,7 +121,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
122
121
  child.props.mdxType !== React.Fragment
123
122
  ) {
124
123
  console.warn(
125
- "NYPL Reservoir List: Direct children of `List` (definition) must " +
124
+ "NYPL Reservoir List: Direct children of `List` (description) must " +
126
125
  "be `<dt>`s and `<dd>`s."
127
126
  );
128
127
  }
@@ -132,14 +131,26 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
132
131
  if (type === ListTypes.Ordered || type === ListTypes.Unordered) {
133
132
  checkListChildrenError(type);
134
133
  listElement = (
135
- <Box as={type as As} id={id} className={className} __css={finalStyles}>
134
+ <Box
135
+ as={type as As}
136
+ id={id}
137
+ className={className}
138
+ __css={finalStyles}
139
+ {...rest}
140
+ >
136
141
  {listChildrenElms(type)}
137
142
  </Box>
138
143
  );
139
- } else if (type === ListTypes.Definition) {
140
- checkDefinitionChildrenError();
144
+ } else if (type === ListTypes.Description) {
145
+ checkDescriptionChildrenError();
141
146
  listElement = (
142
- <Box as="section" id={id} className={className} __css={finalStyles}>
147
+ <Box
148
+ as="section"
149
+ id={id}
150
+ className={className}
151
+ __css={finalStyles}
152
+ {...rest}
153
+ >
143
154
  {title && (
144
155
  <Heading id={`${id}-heading`} level={HeadingLevels.Two}>
145
156
  {title}
@@ -151,4 +162,6 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
151
162
  }
152
163
 
153
164
  return listElement;
154
- }
165
+ });
166
+
167
+ export default List;
@@ -1,5 +1,5 @@
1
1
  export enum ListTypes {
2
2
  Ordered = "ol",
3
3
  Unordered = "ul",
4
- Definition = "dl",
4
+ Description = "dl",
5
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
+ `;