@nypl/design-system-react-components 0.25.7 → 0.25.10

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 (293) hide show
  1. package/CHANGELOG.md +119 -1
  2. package/README.md +1 -1
  3. package/dist/components/Button/Button.d.ts +6 -6
  4. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  5. package/dist/components/Card/Card.d.ts +6 -4
  6. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  7. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  8. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  9. package/dist/components/DatePicker/DatePicker.d.ts +4 -3
  10. package/dist/components/Fieldset/Fieldset.d.ts +1 -3
  11. package/dist/components/Form/Form.d.ts +15 -14
  12. package/dist/components/Form/FormTypes.d.ts +2 -2
  13. package/dist/components/Heading/Heading.d.ts +7 -3
  14. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  15. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  16. package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
  17. package/dist/components/Icons/Icon.d.ts +4 -4
  18. package/dist/components/Icons/IconSvgs.d.ts +1 -21
  19. package/dist/components/Icons/IconTypes.d.ts +1 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/Image/ImageTypes.d.ts +3 -1
  22. package/dist/components/Link/LinkTypes.d.ts +1 -0
  23. package/dist/components/Logo/Logo.d.ts +28 -0
  24. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  25. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  26. package/dist/components/Modal/Modal.d.ts +0 -4
  27. package/dist/components/Notification/Notification.d.ts +4 -2
  28. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  29. package/dist/components/Radio/Radio.d.ts +6 -5
  30. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  31. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  32. package/dist/components/Select/Select.d.ts +5 -2
  33. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  34. package/dist/components/Slider/Slider.d.ts +3 -2
  35. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  36. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  37. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  38. package/dist/components/Table/Table.d.ts +29 -0
  39. package/dist/components/Template/Template.d.ts +30 -6
  40. package/dist/components/Text/Text.d.ts +2 -2
  41. package/dist/components/TextInput/TextInput.d.ts +4 -3
  42. package/dist/components/Toggle/Toggle.d.ts +48 -0
  43. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  44. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  45. package/dist/design-system-react-components.cjs.development.js +4698 -4405
  46. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  48. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  49. package/dist/design-system-react-components.esm.js +5862 -5573
  50. package/dist/design-system-react-components.esm.js.map +1 -1
  51. package/dist/index.d.ts +13 -8
  52. package/dist/resources.scss +0 -2
  53. package/dist/styles.css +2 -2
  54. package/dist/theme/components/breadcrumb.d.ts +1 -1
  55. package/dist/theme/components/button.d.ts +0 -12
  56. package/dist/theme/components/card.d.ts +14 -2
  57. package/dist/theme/components/customTable.d.ts +56 -0
  58. package/dist/theme/components/fieldset.d.ts +2 -2
  59. package/dist/theme/components/global.d.ts +1 -1
  60. package/dist/theme/components/heading.d.ts +4 -0
  61. package/dist/theme/components/label.d.ts +1 -1
  62. package/dist/theme/components/link.d.ts +14 -1
  63. package/dist/theme/components/list.d.ts +0 -2
  64. package/dist/theme/components/logo.d.ts +4 -0
  65. package/dist/theme/components/notification.d.ts +8 -4
  66. package/dist/theme/components/searchBar.d.ts +7 -13
  67. package/dist/theme/components/select.d.ts +1 -0
  68. package/dist/theme/components/structuredContent.d.ts +33 -0
  69. package/dist/theme/components/template.d.ts +10 -10
  70. package/dist/theme/components/textInput.d.ts +2 -0
  71. package/dist/theme/components/toggle.d.ts +71 -0
  72. package/dist/theme/foundations/spacing.d.ts +2 -0
  73. package/dist/utils/utils.d.ts +10 -0
  74. package/package.json +40 -37
  75. package/src/__tests__/utils/utils.test.ts +23 -1
  76. package/src/components/Accordion/Accordion.stories.mdx +16 -15
  77. package/src/components/Accordion/Accordion.test.tsx +45 -1
  78. package/src/components/Accordion/Accordion.tsx +20 -8
  79. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  80. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  81. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  82. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  83. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  84. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +25 -0
  85. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  86. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
  87. package/src/components/Button/Button.stories.mdx +93 -48
  88. package/src/components/Button/Button.test.tsx +0 -12
  89. package/src/components/Button/Button.tsx +7 -8
  90. package/src/components/Button/ButtonTypes.tsx +0 -1
  91. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  92. package/src/components/Card/Card.stories.mdx +246 -64
  93. package/src/components/Card/Card.test.tsx +45 -22
  94. package/src/components/Card/Card.tsx +30 -14
  95. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  96. package/src/components/Chakra/Box.stories.mdx +3 -3
  97. package/src/components/Chakra/Center.stories.mdx +5 -5
  98. package/src/components/Chakra/Flex.stories.mdx +113 -0
  99. package/src/components/Chakra/Grid.stories.mdx +14 -17
  100. package/src/components/Chakra/Stack.stories.mdx +2 -2
  101. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  102. package/src/components/Checkbox/Checkbox.tsx +13 -8
  103. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  104. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  105. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  106. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  107. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  108. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  109. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  110. package/src/components/DatePicker/DatePicker.test.tsx +14 -12
  111. package/src/components/DatePicker/DatePicker.tsx +13 -10
  112. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  113. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  114. package/src/components/Fieldset/Fieldset.tsx +2 -4
  115. package/src/components/Form/Form.stories.mdx +75 -49
  116. package/src/components/Form/Form.test.tsx +92 -3
  117. package/src/components/Form/Form.tsx +28 -23
  118. package/src/components/Form/FormTypes.tsx +2 -2
  119. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  120. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  121. package/src/components/Heading/Heading.stories.mdx +59 -23
  122. package/src/components/Heading/Heading.test.tsx +82 -18
  123. package/src/components/Heading/Heading.tsx +31 -31
  124. package/src/components/Heading/HeadingTypes.tsx +6 -6
  125. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  126. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  127. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  128. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  129. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  130. package/src/components/Hero/Hero.stories.mdx +72 -53
  131. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  132. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  133. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  134. package/src/components/Icons/Icon.stories.mdx +77 -75
  135. package/src/components/Icons/Icon.tsx +4 -5
  136. package/src/components/Icons/IconSvgs.tsx +2 -42
  137. package/src/components/Icons/IconTypes.tsx +1 -24
  138. package/src/components/Image/Image.stories.mdx +214 -104
  139. package/src/components/Image/Image.test.tsx +10 -0
  140. package/src/components/Image/Image.tsx +21 -10
  141. package/src/components/Image/ImageTypes.ts +2 -0
  142. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  143. package/src/components/Label/Label.stories.mdx +21 -20
  144. package/src/components/Link/Link.stories.mdx +103 -53
  145. package/src/components/Link/Link.test.tsx +108 -7
  146. package/src/components/Link/Link.tsx +58 -19
  147. package/src/components/Link/LinkTypes.tsx +1 -0
  148. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  149. package/src/components/List/List.stories.mdx +37 -25
  150. package/src/components/List/List.tsx +1 -1
  151. package/src/components/Logo/Logo.stories.mdx +220 -0
  152. package/src/components/Logo/Logo.test.tsx +98 -0
  153. package/src/components/Logo/Logo.tsx +97 -0
  154. package/src/components/Logo/LogoSvgs.tsx +34 -0
  155. package/src/components/Logo/LogoTypes.tsx +32 -0
  156. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  157. package/src/components/Modal/Modal.stories.mdx +20 -5
  158. package/src/components/Modal/Modal.tsx +2 -8
  159. package/src/components/Notification/Notification.stories.mdx +96 -40
  160. package/src/components/Notification/Notification.test.tsx +62 -16
  161. package/src/components/Notification/Notification.tsx +26 -9
  162. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  163. package/src/components/Pagination/Pagination.stories.mdx +19 -9
  164. package/src/components/Pagination/Pagination.tsx +3 -3
  165. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  166. package/src/components/Placeholder/Placeholder.tsx +7 -14
  167. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  168. package/src/components/Radio/Radio.stories.mdx +39 -19
  169. package/src/components/Radio/Radio.tsx +13 -9
  170. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  171. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  172. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  173. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  174. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  175. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  176. package/src/components/SearchBar/SearchBar.stories.mdx +116 -34
  177. package/src/components/SearchBar/SearchBar.tsx +70 -50
  178. package/src/components/Select/Select.stories.mdx +177 -66
  179. package/src/components/Select/Select.test.tsx +91 -2
  180. package/src/components/Select/Select.tsx +29 -13
  181. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  182. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  183. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  184. package/src/components/Slider/Slider.stories.mdx +74 -23
  185. package/src/components/Slider/Slider.test.tsx +35 -0
  186. package/src/components/Slider/Slider.tsx +22 -11
  187. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  188. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  189. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  190. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  191. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  192. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  193. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  194. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  195. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  196. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  197. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  198. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  199. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  200. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  201. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  202. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  203. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  204. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  205. package/src/components/Table/Table.stories.mdx +165 -0
  206. package/src/components/Table/Table.test.tsx +137 -0
  207. package/src/components/Table/Table.tsx +126 -0
  208. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  209. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  210. package/src/components/Tabs/Tabs.test.tsx +21 -5
  211. package/src/components/Tabs/Tabs.tsx +33 -18
  212. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  213. package/src/components/Template/Template.stories.mdx +132 -49
  214. package/src/components/Template/Template.test.tsx +128 -6
  215. package/src/components/Template/Template.tsx +93 -13
  216. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  217. package/src/components/Text/Text.stories.mdx +33 -11
  218. package/src/components/Text/Text.tsx +2 -2
  219. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  220. package/src/components/TextInput/TextInput.test.tsx +96 -0
  221. package/src/components/TextInput/TextInput.tsx +12 -8
  222. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  223. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  224. package/src/components/Toggle/Toggle.test.tsx +140 -0
  225. package/src/components/Toggle/Toggle.tsx +123 -0
  226. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  227. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  228. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  229. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  230. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  231. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  232. package/src/docs/Chakra.stories.mdx +5 -8
  233. package/src/docs/Intro.stories.mdx +2 -2
  234. package/src/index.ts +19 -6
  235. package/src/styles/base/_03-base.scss +1 -1
  236. package/src/styles/base/_place-holder.scss +7 -7
  237. package/src/styles.scss +1 -5
  238. package/src/theme/components/breadcrumb.ts +5 -5
  239. package/src/theme/components/button.ts +5 -12
  240. package/src/theme/components/card.ts +9 -7
  241. package/src/theme/components/checkbox.ts +1 -1
  242. package/src/theme/components/customTable.ts +63 -0
  243. package/src/theme/components/datePicker.ts +1 -1
  244. package/src/theme/components/global.ts +7 -7
  245. package/src/theme/components/heading.ts +13 -11
  246. package/src/theme/components/helperErrorText.ts +1 -1
  247. package/src/theme/components/icon.ts +2 -2
  248. package/src/theme/components/image.ts +9 -1
  249. package/src/theme/components/link.ts +17 -5
  250. package/src/theme/components/list.ts +1 -3
  251. package/src/theme/components/logo.ts +54 -0
  252. package/src/theme/components/notification.ts +9 -7
  253. package/src/theme/components/searchBar.ts +7 -13
  254. package/src/theme/components/select.ts +1 -0
  255. package/src/theme/components/statusBadge.ts +1 -1
  256. package/src/theme/components/structuredContent.ts +54 -0
  257. package/src/theme/components/template.ts +10 -10
  258. package/src/theme/components/text.ts +6 -6
  259. package/src/theme/components/textInput.ts +1 -0
  260. package/src/theme/components/toggle.ts +69 -0
  261. package/src/theme/components/videoPlayer.ts +0 -2
  262. package/src/theme/foundations/global.ts +2 -2
  263. package/src/theme/foundations/spacing.ts +3 -0
  264. package/src/theme/foundations/typography.ts +84 -12
  265. package/src/theme/index.ts +8 -0
  266. package/src/utils/componentCategories.ts +5 -2
  267. package/src/utils/utils.ts +17 -0
  268. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  269. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  270. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  271. package/dist/components/Input/Input.d.ts +0 -36
  272. package/dist/components/Input/Input.stories.d.ts +0 -29
  273. package/dist/components/Input/InputTypes.d.ts +0 -6
  274. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  275. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  276. package/dist/helpers/getCSSVariable.d.ts +0 -1
  277. package/dist/interfaces.d.ts +0 -3
  278. package/dist/utils/bem.d.ts +0 -1
  279. package/src/__tests__/utils/bem.test.ts +0 -37
  280. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  281. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  282. package/src/components/CardEdition/CardEdition.tsx +0 -60
  283. package/src/components/CardEdition/_CardEdition.scss +0 -137
  284. package/src/components/Input/Input.stories.tsx +0 -133
  285. package/src/components/Input/Input.test.tsx +0 -266
  286. package/src/components/Input/Input.tsx +0 -81
  287. package/src/components/Input/InputTypes.tsx +0 -8
  288. package/src/components/Input/_Input.scss +0 -78
  289. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  290. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  291. package/src/helpers/getCSSVariable.tsx +0 -5
  292. package/src/interfaces.ts +0 -3
  293. package/src/utils/bem.ts +0 -44
@@ -1,21 +1,10 @@
1
- import {
2
- Meta,
3
- Story,
4
- Canvas,
5
- ArgsTable,
6
- Description,
7
- } from "@storybook/addon-docs/blocks";
8
- import { withDesign } from "storybook-addon-designs";
9
1
  import { Stack } from "@chakra-ui/react";
2
+ import { Canvas, Meta } from "@storybook/addon-docs";
3
+ import { withDesign } from "storybook-addon-designs";
10
4
 
11
- import { getCategory } from "../../utils/componentCategories";
12
5
  import Icon from "../Icons/Icon";
13
- import {
14
- IconColors,
15
- IconSizes,
16
- IconNames,
17
- LogoNames,
18
- } from "../Icons/IconTypes";
6
+ import { IconColors, IconSizes, IconNames } from "../Icons/IconTypes";
7
+ import { getCategory } from "../../utils/componentCategories";
19
8
  import DSProvider from "../../theme/provider";
20
9
 
21
10
  <Meta
@@ -24,8 +13,7 @@ import DSProvider from "../../theme/provider";
24
13
  parameters={{
25
14
  design: {
26
15
  type: "figma",
27
- url:
28
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
16
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
29
17
  },
30
18
  }}
31
19
  />
@@ -44,16 +32,14 @@ import DSProvider from "../../theme/provider";
44
32
  ## General Information
45
33
 
46
34
  Use the NYPL Design System [Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
47
- component to render and control icons and NYPL logos as `<svg>` elements within
48
- consuming apps.
35
+ component to render and control icons as `<svg>` elements within consuming apps.
49
36
 
50
37
  The DS utilizes the `Filled` icons available in the [Material UI Design System](https://material-ui.com/components/material-icons/).
51
38
 
52
39
  ## Icon Examples
53
40
 
54
- The graphic of the `Icon` component is handled through the `IconNames` and
55
- `LogoNames` enums. To see all graphic options for `Icon`, please refer to the
56
- [Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
41
+ The graphic of the `Icon` component is handled through the `IconNames` enum. To see all graphic options
42
+ for `Icon`, please refer to the [Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
57
43
  Storybook page.
58
44
 
59
45
  <Canvas>
@@ -79,16 +65,6 @@ Storybook page.
79
65
  size={IconSizes.ExtraExtraExtraLarge}
80
66
  name={IconNames.SpeakerNotes}
81
67
  />
82
- <Icon
83
- decorative
84
- size={IconSizes.ExtraExtraExtraLarge}
85
- name={LogoNames.LogoNypl}
86
- />
87
- <Icon
88
- decorative
89
- size={IconSizes.ExtraExtraExtraLarge}
90
- name={LogoNames.LogoBrooklyn}
91
- />
92
68
  </Stack>
93
69
  </DSProvider>
94
70
  </Canvas>
@@ -99,8 +75,6 @@ Storybook page.
99
75
  | `IconNames.Close` |
100
76
  | `IconNames.ErrorOutline` |
101
77
  | `IconNames.SpeakerNotes` |
102
- | `LogoNames.LogoNypl` |
103
- | `LogoNames.LogoBrooklyn` |
104
78
 
105
79
  ## Icon Sizes
106
80
 
@@ -1,18 +1,10 @@
1
- import {
2
- Meta,
3
- Story,
4
- Canvas,
5
- ArgsTable,
6
- Preview,
7
- Description,
8
- } from "@storybook/addon-docs/blocks";
1
+ import { Meta } from "@storybook/addon-docs";
9
2
  import { withDesign } from "storybook-addon-designs";
10
3
 
11
- import { getCategory } from "../../utils/componentCategories";
12
- import getCSSVariable from "../../helpers/getCSSVariable";
13
4
  import Card from "../Card/Card";
14
5
  import List from "../List/List";
15
6
  import { ListTypes } from "../List/ListTypes";
7
+ import { getCategory } from "../../utils/componentCategories";
16
8
  import DSProvider from "../../theme/provider";
17
9
 
18
10
  <Meta
@@ -21,8 +13,7 @@ import DSProvider from "../../theme/provider";
21
13
  parameters={{
22
14
  design: {
23
15
  type: "figma",
24
- url:
25
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17249%3A13",
16
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17249%3A13",
26
17
  },
27
18
  }}
28
19
  />
@@ -48,7 +39,6 @@ The DS spacing values are based on a root font size of `16px` (`1rem` = `16px`).
48
39
  <DSProvider>
49
40
  The following CSS variables are available through the DS.
50
41
 
51
-
52
42
  | Variable Name | REM Equivalent | Pixel Equivalent | Visual Reference |
53
43
  | ------------------- | -------------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |
54
44
  | `--nypl-space-xxs` | `0.25rem` | `4px` | <div style={{ width: "var(--nypl-space-xxs)", backgroundColor: "var(--nypl-colors-ui-focus)" }}>&nbsp;</div> |
@@ -62,7 +52,6 @@ The following CSS variables are available through the DS.
62
52
 
63
53
  </DSProvider>
64
54
 
65
-
66
55
  ## Section Spacing
67
56
 
68
57
  In consuming apps, the major page sections should be separated vertically by `3rem` `(--nypl-space-xl`). This includes the space after the page global `header` and the space before the global `footer`.
@@ -1,20 +1,13 @@
1
- import {
2
- Meta,
3
- Story,
4
- Canvas,
5
- ArgsTable,
6
- Preview,
7
- Description,
8
- } from "@storybook/addon-docs/blocks";
1
+ import { Canvas, Meta } from "@storybook/addon-docs";
9
2
  import { withDesign } from "storybook-addon-designs";
10
3
 
11
- import { getCategory } from "../../utils/componentCategories";
12
4
  import Heading from "../Heading/Heading";
13
5
  import { HeadingDisplaySizes, HeadingLevels } from "../Heading/HeadingTypes";
14
6
  import List from "../List/List";
15
7
  import { ListTypes } from "../List/ListTypes";
16
8
  import Text from "../Text/Text";
17
9
  import { TextDisplaySizes } from "../Text/TextTypes";
10
+ import { getCategory } from "../../utils/componentCategories";
18
11
  import DSProvider from "../../theme/provider";
19
12
 
20
13
  <Meta
@@ -23,8 +16,7 @@ import DSProvider from "../../theme/provider";
23
16
  parameters={{
24
17
  design: {
25
18
  type: "figma",
26
- url:
27
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
19
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
28
20
  },
29
21
  }}
30
22
  />
@@ -67,52 +59,50 @@ Use the NYPL Design System [Heading](/docs/components-typography-styles-heading-
67
59
 
68
60
  <DSProvider>
69
61
 
70
-
71
62
  Each heading level has a default style and size, but those styles can be overridden using the `displaySize` prop. The display sizes are separate from semantic elements and may be used to override the default size and styling of the semantic HTML heading elements. For example, the `h1` element has the `Primary` style applied by default, but a new style can be applied through the `displaySize` prop. Any `displaySize` style can be applied to any `Heading` element.
72
63
 
73
64
  <Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Primary}>
74
65
  Primary Heading
75
66
  </Heading>
76
67
 
77
- | CSS Attribute | Value | CSS Variable |
78
- | ------------- | --------- | -------------------------- |
79
- | `font-size` | `2.25rem` | `--nypl-fontSizes-4` |
80
- | `font-weight` | `300` | `--nypl-fontWeights-light` |
81
- | `line-height` | `1.1` | n/a |
68
+ | | Value | JS Theme Object | CSS Variable |
69
+ | --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
70
+ | **Font Size** | `2.25rem` | `fontSize: "heading.primary"` | `font-size: var(--nypl-fontSizes-heading-primary)` |
71
+ | **Font Weight** | `300` | `fontWeight: "heading.primary"` | `font-weight: var(--nypl-fontWeights-heading-primary)` |
72
+ | **Line Height** | `1.1` | n/a | n/a |
82
73
 
83
74
  <Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Secondary}>
84
75
  Secondary Heading
85
76
  </Heading>
86
77
 
87
- | CSS Attribute | Value | CSS Variable |
88
- | ------------- | --------- | --------------------------- |
89
- | `font-size` | `1.75rem` | `--nypl-fontSizes-3` |
90
- | `font-weight` | `500` | `--nypl-fontWeights-medium` |
91
- | `line-height` | `1.25` | n/a |
78
+ | | Value | JS Theme Object | CSS Variable |
79
+ | --------------- | --------- | --------------------------------- | -------------------------------------------------------- |
80
+ | **Font Size** | `1.75rem` | `fontSize: "heading.secondary"` | `font-size: var(--nypl-fontSizes-heading-secondary)` |
81
+ | **Font Weight** | `500` | `fontWeight: "heading.secondary"` | `font-weight: var(--nypl-fontWeights-heading-secondary)` |
82
+ | **Line Height** | `1.25` | n/a | n/a |
92
83
 
93
84
  <Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Tertiary}>
94
85
  Tertiary Heading
95
86
  </Heading>
96
87
 
97
- | CSS Attribute | Value | CSS Variable |
98
- | ------------- | ---------- | --------------------------- |
99
- | `font-size` | `1.375rem` | `--nypl-fontSizes-2` |
100
- | `font-weight` | `500` | `--nypl-fontWeights-medium` |
101
- | `line-height` | `1.25` | n/a |
88
+ | | Value | JS Theme Object | CSS Variable |
89
+ | --------------- | ---------- | -------------------------------- | ------------------------------------------------------- |
90
+ | **Font Size** | `1.375rem` | `fontSize: "heading.tertiary"` | `font-size: var(--nypl-fontSizes-heading-tertiary)` |
91
+ | **Font Weight** | `500` | `fontWeight: "heading.tertiary"` | `font-weight: var(--nypl-fontWeights-heading-tertiary)` |
92
+ | **Line Height** | `1.25` | n/a | n/a |
102
93
 
103
94
  <Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Callout}>
104
95
  Callout Heading
105
96
  </Heading>
106
97
 
107
- | CSS Attribute | Value | CSS Variable |
108
- | ------------- | --------- | ---------------------------- |
109
- | `font-size` | `1.25rem` | `--nypl-fontSizes-1` |
110
- | `font-weight` | `400` | `--nypl-fontWeights-regular` |
111
- | `line-height` | `1.25` | n/a |
98
+ | | Value | JS Theme Object | CSS Variable |
99
+ | --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
100
+ | **Font Size** | `1.25rem` | `fontSize: "heading.callout"` | `font-size: var(--nypl-fontSizes-heading-callout)` |
101
+ | **Font Weight** | `500` | `fontWeight: "heading.callout"` | `font-weight: var(--nypl-fontWeights-heading-callout)` |
102
+ | **Line Height** | `1.25` | n/a | n/a |
112
103
 
113
104
  </DSProvider>
114
105
 
115
-
116
106
  ## Text Component
117
107
 
118
108
  Use the NYPL Design System [Text](/docs/components-typography-styles-text--text) component to render a standard HTML `<p>` tag. The Text component is generally used for body copy, captions and secondary captions.
@@ -132,7 +122,6 @@ Use the NYPL Design System [Text](/docs/components-typography-styles-text--text)
132
122
 
133
123
  <DSProvider>
134
124
 
135
-
136
125
  The `displaySize` prop can be used to render a specific style from the DS default text styles.
137
126
 
138
127
  - [Typography: Body Styles](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A52)
@@ -140,39 +129,38 @@ The `displaySize` prop can be used to render a specific style from the DS defaul
140
129
 
141
130
  <Text displaySize={TextDisplaySizes.Default}>Default</Text>
142
131
 
143
- | CSS Attribute | Value | CSS Variable |
144
- | ------------- | ------ | -------------------------- |
145
- | `font-size` | `1rem` | `--nypl-fontSizes-0` |
146
- | `font-weight` | `300` | `--nypl-fontWeights-light` |
147
- | `line-height` | `1.5` | n/a |
132
+ | | Value | JS Theme Object | CSS Variable |
133
+ | --------------- | ------ | ---------------------------- | --------------------------------------------------- |
134
+ | **Font Size** | `1rem` | `fontSize: "text.default"` | `font-size: var(--nypl-fontSizes-text-default)` |
135
+ | **Font Weight** | `300` | `fontWeight: "text.default"` | `font-weight: var(--nypl-fontWeights-text-default)` |
136
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
148
137
 
149
138
  <Text displaySize={TextDisplaySizes.Caption}>Caption</Text>
150
139
 
151
- | CSS Attribute | Value | CSS Variable |
152
- | ------------- | ---------- | -------------------------- |
153
- | `font-size` | `0.875rem` | `--nypl-fontSizes--1` |
154
- | `font-weight` | `300` | `--nypl-fontWeights-light` |
155
- | `line-height` | `1.25` | n/a |
140
+ | | Value | JS Theme Object | CSS Variable |
141
+ | --------------- | ---------- | ---------------------------- | --------------------------------------------------- |
142
+ | **Font Size** | `0.875rem` | `fontSize: "text.caption"` | `font-size: var(--nypl-fontSizes-text-caption)` |
143
+ | **Font Weight** | `300` | `fontWeight: "text.caption"` | `font-weight: var(--nypl-fontWeights-text-caption)` |
144
+ | **Line Height** | `1.25` | `fontWeight: 1.25` | `font-weight: 1.25` |
156
145
 
157
146
  <Text displaySize={TextDisplaySizes.Tag}>Tag</Text>
158
147
 
159
- | CSS Attribute | Value | CSS Variable |
160
- | ------------- | --------- | ---------------------------- |
161
- | `font-size` | `0.75rem` | `--nypl-fontSizes--2` |
162
- | `font-weight` | `400` | `--nypl-fontWeights-regular` |
163
- | `line-height` | `1.5` | n/a |
148
+ | | Value | JS Theme Object | CSS Variable |
149
+ | --------------- | --------- | ------------------------ | ----------------------------------------------- |
150
+ | **Font Size** | `0.75rem` | `fontSize: "text.tag"` | `font-size: var(--nypl-fontSizes-text-tag)` |
151
+ | **Font Weight** | `400` | `fontWeight: "text.tag"` | `font-weight: var(--nypl-fontWeights-text-tag)` |
152
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
164
153
 
165
154
  <Text displaySize={TextDisplaySizes.Mini}>Mini</Text>
166
155
 
167
- | CSS Attribute | Value | CSS Variable |
168
- | ------------- | ---------- | ---------------------------- |
169
- | `font-size` | `0.625rem` | `--nypl-fontSizes--3` |
170
- | `font-weight` | `400` | `--nypl-fontWeights-regular` |
171
- | `line-height` | `1.5` | n/a |
156
+ | | Value | JS Theme Object | CSS Variable |
157
+ | --------------- | ---------- | ------------------------- | ------------------------------------------------ |
158
+ | **Font Size** | `0.625rem` | `fontSize: "text.mini"` | `font-size: var(--nypl-fontSizes-text-mini)` |
159
+ | **Font Weight** | `400` | `fontWeight: "text.mini"` | `font-weight: var(--nypl-fontWeights-text-mini)` |
160
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
172
161
 
173
162
  </DSProvider>
174
163
 
175
-
176
164
  ## Font Family
177
165
 
178
166
  With website accessibility in mind, font choices for the DS were made with an eye toward clarity and readability. Headings and body content use the following font family assignment:
@@ -225,7 +213,7 @@ The DS uses four font weights to render text. The default font-weight is 300.
225
213
  fontFamily: "var(--nypl-fonts-body)",
226
214
  }}
227
215
  >
228
- Light / 300
216
+ Light / 300 (default)
229
217
  </p>
230
218
  <p
231
219
  style={{
@@ -257,14 +245,14 @@ The DS uses four font weights to render text. The default font-weight is 300.
257
245
  </>
258
246
  </Canvas>
259
247
 
260
- The following CSS variables are available through the DS.
248
+ The following design tokens are available through the DS.
261
249
 
262
- ```
263
- --nypl-fontWeights-light: 300; /* default */
264
- --nypl-fontWeights-regular: 400;
265
- --nypl-fontWeights-medium: 500;
266
- --nypl-fontWeights-bold: 700;
267
- ```
250
+ | | Value | JS Theme Object | CSS Variable |
251
+ | ----------- | ----- | ----------------------- | ---------------------------------------------- |
252
+ | **Light** | `300` | `fontWeight: "light"` | `font-weight: var(--nypl-fontWeights-light)` |
253
+ | **Regular** | `400` | `fontWeight: "regular"` | `font-weight: var(--nypl-fontWeights-regular)` |
254
+ | **Medium** | `500` | `fontWeight: "medium"` | `font-weight: var(--nypl-fontWeights-medium)` |
255
+ | **Bold** | `700` | `fontWeight: "bold"` | `font-weight: var(--nypl-fontWeights-bold)` |
268
256
 
269
257
  ## Font Sizes
270
258
 
@@ -302,7 +290,7 @@ Font sizing is based on a root font size of 16px (1rem = 16px).
302
290
  fontWeight: "var(--nypl-fontWeights-light)",
303
291
  }}
304
292
  >
305
- Font size 0
293
+ Font size 0 (default)
306
294
  </p>
307
295
  <p
308
296
  style={{
@@ -339,18 +327,18 @@ Font sizing is based on a root font size of 16px (1rem = 16px).
339
327
  </>
340
328
  </Canvas>
341
329
 
342
- The following CSS variables are available through the DS.
343
-
344
- ```
345
- --nypl-fontSizes--3: 0.625rem;
346
- --nypl-fontSizes--2: 0.75rem;
347
- --nypl-fontSizes--1: 0.875rem;
348
- --nypl-fontSizes-0: 1rem; /* default */
349
- --nypl-fontSizes-1: 1.125rem;
350
- --nypl-fontSizes-2: 1.375rem;
351
- --nypl-fontSizes-3: 1.75rem;
352
- --nypl-fontSizes-4: 2.25rem;
353
- ```
330
+ The following font size design tokens are available through the DS.
331
+
332
+ | | Value | JS Theme Object | CSS Variable |
333
+ | ------ | ---------- | ---------------- | ------------------------------------- |
334
+ | **-3** | `0.625rem` | `fontSize: "-3"` | `font-size: var(--nypl-fontSizes--3)` |
335
+ | **-2** | `0.75rem` | `fontSize: "-2"` | `font-size: var(--nypl-fontSizes--2)` |
336
+ | **-1** | `0.875rem` | `fontSize: "-1"` | `font-size: var(--nypl-fontSizes--1)` |
337
+ | **0** | `1rem` | `fontSize: "0"` | `font-size: var(--nypl-fontSizes-0)` |
338
+ | **1** | `1.125rem` | `fontSize: "1"` | `font-size: var(--nypl-fontSizes-1)` |
339
+ | **2** | `1.375rem` | `fontSize: "2"` | `font-size: var(--nypl-fontSizes-2)` |
340
+ | **3** | `1.75rem` | `fontSize: "3"` | `font-size: var(--nypl-fontSizes-3)` |
341
+ | **4** | `2.25rem` | `fontSize: "4"` | `font-size: var(--nypl-fontSizes-4)` |
354
342
 
355
343
  ## Text Case
356
344
 
@@ -0,0 +1,165 @@
1
+ import {
2
+ Meta,
3
+ Story,
4
+ Canvas,
5
+ ArgsTable,
6
+ Description,
7
+ } from "@storybook/addon-docs";
8
+ import { withDesign } from "storybook-addon-designs";
9
+
10
+ import Table from "./Table";
11
+ import DSProvider from "../../theme/provider";
12
+ import { getCategory } from "../../utils/componentCategories";
13
+
14
+ <Meta
15
+ title={getCategory("Table")}
16
+ component={Table}
17
+ decorators={[withDesign]}
18
+ parameters={{
19
+ design: {
20
+ type: "figma",
21
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=46780%3A27675",
22
+ },
23
+ jest: ["Table.test.tsx"],
24
+ }}
25
+ argTypes={{
26
+ columnHeaders: { control: { disable: true } },
27
+ columnHeadersBackgroundColor: { control: { type: "color" } },
28
+ columnHeadersTextColor: { control: { type: "color" } },
29
+ id: { control: false },
30
+ tableData: { control: false },
31
+ }}
32
+ />
33
+
34
+ # Table
35
+
36
+ | Component Version | DS Version |
37
+ | ----------------- | ---------- |
38
+ | Added | `0.25.9` |
39
+ | Latest | `0.25.10` |
40
+
41
+ <Description of={Table} />
42
+
43
+ export const columnHeaders = [
44
+ "First Name",
45
+ "Last Name",
46
+ "Nick Name",
47
+ "Address1",
48
+ "City",
49
+ "State",
50
+ "Zipcode",
51
+ ];
52
+ export const tableData = [
53
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "NY", "23458"],
54
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "NY", "23458"],
55
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "NY", "98765"],
56
+ [
57
+ "Sonny",
58
+ "Resetti",
59
+ "Risetto san",
60
+ "Village Road",
61
+ "New York",
62
+ "NY",
63
+ "09873",
64
+ ],
65
+ ];
66
+
67
+ <Canvas withToolbar>
68
+ <Story
69
+ name="Table"
70
+ args={{
71
+ className: undefined,
72
+ columnHeaders,
73
+ columnHeadersBackgroundColor: undefined,
74
+ columnHeadersTextColor: undefined,
75
+ id: undefined,
76
+ showRowDividers: false,
77
+ tableData,
78
+ titleText: undefined,
79
+ useRowHeaders: false,
80
+ }}
81
+ >
82
+ {(args) => <Table {...args}></Table>}
83
+ </Story>
84
+ </Canvas>
85
+
86
+ <ArgsTable story="Table" />
87
+
88
+ ## Accessibility
89
+
90
+ - The HTML for the `Table` element is structured with proper semantic use of the
91
+ `table`, `caption`, `thead`, `tbody`, `tr`, and `td` HTML elements.
92
+ - When titles are added through the `titleText` prop, the `caption` element will
93
+ be rendered on the page.
94
+ - The first row and/or the first cell in a `tr` row can be headers. Each `th`
95
+ header cell has an appropriate scope attribute set to either `scope="col"` or
96
+ `scope="row"`. For example, every `th` cell in a `thead` `tr` row will have
97
+ `scope="col"`. Every `th` cell in a `tbody` `tr` row will have `scope="row"`.
98
+ These headers are visually different from the data. Use the `useRowHeaders`
99
+ prop to render the first cell in every row as a header.
100
+
101
+ ## With a title
102
+
103
+ Use the `titleText` prop to add a title to the table.
104
+
105
+ <Canvas>
106
+ <DSProvider>
107
+ <Table
108
+ columnHeaders={columnHeaders}
109
+ id="title-table"
110
+ tableData={tableData}
111
+ titleText="Table with a title"
112
+ />
113
+ </DSProvider>
114
+ </Canvas>
115
+
116
+ ## With Row Dividers
117
+
118
+ Use the `showRowDividers` prop to render a divider between each row.
119
+
120
+ <Canvas>
121
+ <DSProvider>
122
+ <Table
123
+ columnHeaders={columnHeaders}
124
+ id="showRowDividers-table"
125
+ showRowDividers
126
+ tableData={tableData}
127
+ />
128
+ </DSProvider>
129
+ </Canvas>
130
+
131
+ ## With Row Headers
132
+
133
+ Use the `useRowHeaders` prop to render the first cell in every row as a header.
134
+ Notice that they turn bold.
135
+
136
+ <Canvas>
137
+ <DSProvider>
138
+ <Table
139
+ columnHeaders={columnHeaders}
140
+ id="rowHeaders-table"
141
+ tableData={tableData}
142
+ useRowHeaders
143
+ />
144
+ </DSProvider>
145
+ </Canvas>
146
+
147
+ ## With Custom Header Colors
148
+
149
+ It's possible to customize the header colors by using the `columnHeadersBackgroundColor`
150
+ and `columnHeadersTextColor` props. Note that the colors need to have sufficient
151
+ color contrast.
152
+
153
+ <Canvas>
154
+ <DSProvider>
155
+ <Table
156
+ columnHeaders={columnHeaders}
157
+ columnHeadersBackgroundColor="var(--nypl-colors-ui-link-secondary)"
158
+ columnHeadersTextColor="var(--nypl-colors-ui-white)"
159
+ id="rowHeaders-table"
160
+ showRowDividers
161
+ tableData={tableData}
162
+ useRowHeaders
163
+ />
164
+ </DSProvider>
165
+ </Canvas>
@@ -0,0 +1,137 @@
1
+ import * as React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
5
+
6
+ import Table from "./Table";
7
+
8
+ export const columnHeaders = [
9
+ "First Name",
10
+ "Last Name",
11
+ "Nick Name",
12
+ "Address1",
13
+ "City",
14
+ "Zipcode",
15
+ "State",
16
+ ];
17
+
18
+ export const tableData = [
19
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
20
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
21
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
22
+ [
23
+ "Sonny",
24
+ "Resetti",
25
+ "Risetto san",
26
+ "Village Road",
27
+ "New York",
28
+ "09873",
29
+ "NY",
30
+ ],
31
+ ];
32
+
33
+ describe("Table Accessibility", () => {
34
+ it("passes axe accessibility test with the columnHeaders and tableData prop", async () => {
35
+ const { container } = render(
36
+ <Table columnHeaders={columnHeaders} tableData={tableData} />
37
+ );
38
+ expect(await axe(container)).toHaveNoViolations();
39
+ });
40
+
41
+ it("passes axe accessibility test with tableData prop", async () => {
42
+ const { container } = render(<Table tableData={tableData} />);
43
+ expect(await axe(container)).toHaveNoViolations();
44
+ });
45
+ });
46
+
47
+ describe("Table", () => {
48
+ it("renders a caption", () => {
49
+ render(<Table tableData={tableData} titleText="this is the caption" />);
50
+ expect(screen.getByText("this is the caption")).toBeInTheDocument();
51
+ });
52
+
53
+ it("renders a table header", () => {
54
+ render(
55
+ <Table
56
+ columnHeaders={columnHeaders}
57
+ tableData={tableData}
58
+ titleText="this is the caption"
59
+ />
60
+ );
61
+
62
+ expect(screen.getByText("First Name")).toBeInTheDocument();
63
+ expect(screen.getByText("Last Name")).toBeInTheDocument();
64
+ expect(screen.getByText("Nick Name")).toBeInTheDocument();
65
+ });
66
+
67
+ it("renders table data", () => {
68
+ render(<Table tableData={tableData} columnHeaders={columnHeaders} />);
69
+
70
+ expect(screen.getByText("Tom")).toBeInTheDocument();
71
+ expect(screen.getByText("Nook")).toBeInTheDocument();
72
+ expect(screen.getByText("Village Road")).toBeInTheDocument();
73
+ });
74
+
75
+ it("logs a warning when the `tableData` prop is an empty array", async () => {
76
+ const warn = jest.spyOn(console, "warn");
77
+ render(<Table tableData={[]} />);
78
+ expect(warn).toHaveBeenCalledWith(
79
+ "Table: data should be two dimensional array."
80
+ );
81
+ });
82
+
83
+ it("renders the UI snapshot correctly", () => {
84
+ const basic = renderer
85
+ .create(<Table id="basic" tableData={tableData} />)
86
+ .toJSON();
87
+ const withCaption = renderer
88
+ .create(
89
+ <Table
90
+ id="withCaption"
91
+ tableData={tableData}
92
+ titleText="this is the caption"
93
+ />
94
+ )
95
+ .toJSON();
96
+ const withHeaders = renderer
97
+ .create(
98
+ <Table
99
+ columnHeaders={columnHeaders}
100
+ id="withHeaders"
101
+ tableData={tableData}
102
+ titleText="this is the caption"
103
+ />
104
+ )
105
+ .toJSON();
106
+ const withRowHeaders = renderer
107
+ .create(
108
+ <Table
109
+ columnHeaders={columnHeaders}
110
+ id="withHeaders"
111
+ tableData={tableData}
112
+ titleText="this is the caption"
113
+ useRowHeaders
114
+ />
115
+ )
116
+ .toJSON();
117
+ const withCustomHeaderColors = renderer
118
+ .create(
119
+ <Table
120
+ columnHeadersBackgroundColor="var(--nypl-colors-ui-link-primary)"
121
+ columnHeadersTextColor="var(--nypl-colors-ui-white)"
122
+ columnHeaders={columnHeaders}
123
+ id="withHeaders"
124
+ tableData={tableData}
125
+ titleText="this is the caption"
126
+ useRowHeaders
127
+ />
128
+ )
129
+ .toJSON();
130
+
131
+ expect(basic).toMatchSnapshot();
132
+ expect(withCaption).toMatchSnapshot();
133
+ expect(withHeaders).toMatchSnapshot();
134
+ expect(withRowHeaders).toMatchSnapshot();
135
+ expect(withCustomHeaderColors).toMatchSnapshot();
136
+ });
137
+ });