@nypl/design-system-react-components 0.25.5 → 0.25.9

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 (275) hide show
  1. package/CHANGELOG.md +91 -1
  2. package/README.md +1 -1
  3. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
  4. package/dist/components/Button/Button.d.ts +6 -6
  5. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  6. package/dist/components/Card/Card.d.ts +6 -4
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  8. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  9. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  10. package/dist/components/DatePicker/DatePicker.d.ts +3 -2
  11. package/dist/components/Form/Form.d.ts +2 -2
  12. package/dist/components/Heading/Heading.d.ts +7 -3
  13. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  14. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  15. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
  16. package/dist/components/Icons/Icon.d.ts +4 -4
  17. package/dist/components/Icons/IconSvgs.d.ts +1 -21
  18. package/dist/components/Icons/IconTypes.d.ts +1 -23
  19. package/dist/components/Image/Image.d.ts +11 -3
  20. package/dist/components/Image/ImageTypes.d.ts +3 -1
  21. package/dist/components/Link/LinkTypes.d.ts +1 -0
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  25. package/dist/components/Modal/Modal.d.ts +0 -4
  26. package/dist/components/Notification/Notification.d.ts +4 -2
  27. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  28. package/dist/components/Radio/Radio.d.ts +6 -5
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
  30. package/dist/components/SearchBar/SearchBar.d.ts +10 -2
  31. package/dist/components/Select/Select.d.ts +5 -2
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  33. package/dist/components/Slider/Slider.d.ts +3 -2
  34. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  35. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  36. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  37. package/dist/components/Table/Table.d.ts +23 -0
  38. package/dist/components/Template/Template.d.ts +8 -3
  39. package/dist/components/Text/Text.d.ts +2 -2
  40. package/dist/components/TextInput/TextInput.d.ts +4 -3
  41. package/dist/components/Toggle/Toggle.d.ts +48 -0
  42. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  43. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  44. package/dist/design-system-react-components.cjs.development.js +5989 -5490
  45. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  48. package/dist/design-system-react-components.esm.js +6057 -5551
  49. package/dist/design-system-react-components.esm.js.map +1 -1
  50. package/dist/index.d.ts +11 -4
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +9 -0
  53. package/dist/theme/components/button.d.ts +0 -12
  54. package/dist/theme/components/card.d.ts +14 -2
  55. package/dist/theme/components/customTable.d.ts +47 -0
  56. package/dist/theme/components/fieldset.d.ts +2 -2
  57. package/dist/theme/components/global.d.ts +1 -1
  58. package/dist/theme/components/heading.d.ts +4 -0
  59. package/dist/theme/components/label.d.ts +1 -1
  60. package/dist/theme/components/link.d.ts +14 -1
  61. package/dist/theme/components/list.d.ts +0 -2
  62. package/dist/theme/components/logo.d.ts +4 -0
  63. package/dist/theme/components/notification.d.ts +8 -4
  64. package/dist/theme/components/searchBar.d.ts +7 -13
  65. package/dist/theme/components/select.d.ts +1 -0
  66. package/dist/theme/components/structuredContent.d.ts +33 -0
  67. package/dist/theme/components/template.d.ts +10 -10
  68. package/dist/theme/components/textInput.d.ts +2 -0
  69. package/dist/theme/components/toggle.d.ts +71 -0
  70. package/dist/theme/foundations/spacing.d.ts +2 -0
  71. package/dist/utils/utils.d.ts +10 -0
  72. package/package.json +2 -3
  73. package/src/__tests__/utils/utils.test.ts +23 -1
  74. package/src/components/Accordion/Accordion.stories.mdx +15 -14
  75. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  76. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  77. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  78. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +50 -14
  79. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +20 -0
  80. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
  81. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +198 -0
  82. package/src/components/Button/Button.stories.mdx +93 -48
  83. package/src/components/Button/Button.test.tsx +0 -12
  84. package/src/components/Button/Button.tsx +7 -8
  85. package/src/components/Button/ButtonTypes.tsx +0 -1
  86. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  87. package/src/components/Card/Card.stories.mdx +246 -64
  88. package/src/components/Card/Card.test.tsx +45 -22
  89. package/src/components/Card/Card.tsx +26 -13
  90. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  91. package/src/components/Chakra/Box.stories.mdx +3 -3
  92. package/src/components/Chakra/Center.stories.mdx +5 -5
  93. package/src/components/Chakra/Grid.stories.mdx +14 -17
  94. package/src/components/Chakra/Stack.stories.mdx +2 -2
  95. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  96. package/src/components/Checkbox/Checkbox.tsx +13 -8
  97. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  98. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  99. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  100. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  101. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  102. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  103. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  104. package/src/components/DatePicker/DatePicker.test.tsx +8 -6
  105. package/src/components/DatePicker/DatePicker.tsx +10 -6
  106. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  107. package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
  108. package/src/components/Form/Form.stories.mdx +49 -41
  109. package/src/components/Form/Form.tsx +5 -4
  110. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  111. package/src/components/Heading/Heading.stories.mdx +59 -23
  112. package/src/components/Heading/Heading.test.tsx +82 -18
  113. package/src/components/Heading/Heading.tsx +31 -31
  114. package/src/components/Heading/HeadingTypes.tsx +6 -6
  115. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  116. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  117. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  118. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  119. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  120. package/src/components/Hero/Hero.stories.mdx +72 -53
  121. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
  122. package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
  123. package/src/components/Icons/Icon.stories.mdx +77 -75
  124. package/src/components/Icons/Icon.tsx +4 -5
  125. package/src/components/Icons/IconSvgs.tsx +2 -42
  126. package/src/components/Icons/IconTypes.tsx +1 -24
  127. package/src/components/Image/Image.stories.mdx +214 -104
  128. package/src/components/Image/Image.test.tsx +10 -0
  129. package/src/components/Image/Image.tsx +21 -10
  130. package/src/components/Image/ImageTypes.ts +2 -0
  131. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  132. package/src/components/Label/Label.stories.mdx +21 -20
  133. package/src/components/Link/Link.stories.mdx +103 -53
  134. package/src/components/Link/Link.test.tsx +108 -7
  135. package/src/components/Link/Link.tsx +58 -19
  136. package/src/components/Link/LinkTypes.tsx +1 -0
  137. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  138. package/src/components/List/List.stories.mdx +36 -24
  139. package/src/components/Logo/Logo.stories.mdx +220 -0
  140. package/src/components/Logo/Logo.test.tsx +98 -0
  141. package/src/components/Logo/Logo.tsx +97 -0
  142. package/src/components/Logo/LogoSvgs.tsx +34 -0
  143. package/src/components/Logo/LogoTypes.tsx +32 -0
  144. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  145. package/src/components/Modal/Modal.stories.mdx +20 -5
  146. package/src/components/Modal/Modal.tsx +2 -8
  147. package/src/components/Notification/Notification.stories.mdx +96 -40
  148. package/src/components/Notification/Notification.test.tsx +62 -16
  149. package/src/components/Notification/Notification.tsx +26 -9
  150. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  151. package/src/components/Pagination/Pagination.stories.mdx +18 -8
  152. package/src/components/Pagination/Pagination.tsx +1 -1
  153. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  154. package/src/components/Placeholder/Placeholder.tsx +7 -14
  155. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  156. package/src/components/Radio/Radio.stories.mdx +39 -19
  157. package/src/components/Radio/Radio.tsx +13 -9
  158. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  159. package/src/components/RadioGroup/RadioGroup.tsx +15 -11
  160. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
  161. package/src/components/SearchBar/SearchBar.Test.tsx +114 -22
  162. package/src/components/SearchBar/SearchBar.stories.mdx +111 -33
  163. package/src/components/SearchBar/SearchBar.tsx +57 -33
  164. package/src/components/Select/Select.stories.mdx +177 -66
  165. package/src/components/Select/Select.test.tsx +2 -2
  166. package/src/components/Select/Select.tsx +22 -12
  167. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  168. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  169. package/src/components/Slider/Slider.stories.mdx +74 -23
  170. package/src/components/Slider/Slider.test.tsx +35 -0
  171. package/src/components/Slider/Slider.tsx +22 -11
  172. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
  173. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  174. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  175. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  176. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  177. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  178. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  179. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  180. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  181. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  182. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  183. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  184. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  185. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  186. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  187. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  188. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  189. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  190. package/src/components/Table/Table.stories.mdx +66 -0
  191. package/src/components/Table/Table.test.tsx +60 -0
  192. package/src/components/Table/Table.tsx +116 -0
  193. package/src/components/Tabs/Tabs.stories.mdx +19 -13
  194. package/src/components/Tabs/Tabs.test.tsx +1 -1
  195. package/src/components/Template/Template.stories.mdx +57 -49
  196. package/src/components/Template/Template.test.tsx +65 -5
  197. package/src/components/Template/Template.tsx +35 -5
  198. package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
  199. package/src/components/Text/Text.stories.mdx +33 -11
  200. package/src/components/Text/Text.tsx +2 -2
  201. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  202. package/src/components/TextInput/TextInput.test.tsx +96 -0
  203. package/src/components/TextInput/TextInput.tsx +12 -8
  204. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  205. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  206. package/src/components/Toggle/Toggle.test.tsx +140 -0
  207. package/src/components/Toggle/Toggle.tsx +123 -0
  208. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  209. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  210. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  211. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  212. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  213. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  214. package/src/docs/Chakra.stories.mdx +5 -8
  215. package/src/docs/Intro.stories.mdx +2 -2
  216. package/src/index.ts +13 -4
  217. package/src/styles/base/_03-base.scss +1 -1
  218. package/src/styles/base/_place-holder.scss +7 -7
  219. package/src/styles.scss +1 -5
  220. package/src/theme/components/breadcrumb.ts +14 -4
  221. package/src/theme/components/button.ts +5 -12
  222. package/src/theme/components/card.ts +9 -7
  223. package/src/theme/components/checkbox.ts +1 -1
  224. package/src/theme/components/customTable.ts +50 -0
  225. package/src/theme/components/datePicker.ts +1 -1
  226. package/src/theme/components/global.ts +7 -7
  227. package/src/theme/components/heading.ts +13 -11
  228. package/src/theme/components/helperErrorText.ts +1 -1
  229. package/src/theme/components/icon.ts +2 -2
  230. package/src/theme/components/image.ts +9 -1
  231. package/src/theme/components/link.ts +17 -5
  232. package/src/theme/components/list.ts +1 -3
  233. package/src/theme/components/logo.ts +54 -0
  234. package/src/theme/components/notification.ts +9 -7
  235. package/src/theme/components/searchBar.ts +7 -13
  236. package/src/theme/components/select.ts +1 -0
  237. package/src/theme/components/statusBadge.ts +1 -1
  238. package/src/theme/components/structuredContent.ts +54 -0
  239. package/src/theme/components/template.ts +10 -10
  240. package/src/theme/components/text.ts +6 -6
  241. package/src/theme/components/textInput.ts +1 -0
  242. package/src/theme/components/toggle.ts +69 -0
  243. package/src/theme/components/videoPlayer.ts +0 -2
  244. package/src/theme/foundations/global.ts +2 -2
  245. package/src/theme/foundations/spacing.ts +3 -0
  246. package/src/theme/foundations/typography.ts +84 -12
  247. package/src/theme/index.ts +8 -0
  248. package/src/utils/componentCategories.ts +4 -2
  249. package/src/utils/utils.ts +17 -0
  250. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  251. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  252. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  253. package/dist/components/Input/Input.d.ts +0 -36
  254. package/dist/components/Input/Input.stories.d.ts +0 -29
  255. package/dist/components/Input/InputTypes.d.ts +0 -6
  256. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  257. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  258. package/dist/helpers/getCSSVariable.d.ts +0 -1
  259. package/dist/interfaces.d.ts +0 -3
  260. package/dist/utils/bem.d.ts +0 -1
  261. package/src/__tests__/utils/bem.test.ts +0 -37
  262. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  263. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  264. package/src/components/CardEdition/CardEdition.tsx +0 -60
  265. package/src/components/CardEdition/_CardEdition.scss +0 -137
  266. package/src/components/Input/Input.stories.tsx +0 -133
  267. package/src/components/Input/Input.test.tsx +0 -266
  268. package/src/components/Input/Input.tsx +0 -81
  269. package/src/components/Input/InputTypes.tsx +0 -8
  270. package/src/components/Input/_Input.scss +0 -78
  271. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  272. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  273. package/src/helpers/getCSSVariable.tsx +0 -5
  274. package/src/interfaces.ts +0 -3
  275. 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,66 @@
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
+
10
+ import Table from "./Table";
11
+ import DSProvider from "../../theme/provider";
12
+ import { getCategory } from "../../utils/componentCategories";
13
+
14
+ <Description of={Table} />
15
+
16
+ The `Table` component is used to organize and display tabular data in rows and columns.
17
+
18
+ <Meta
19
+ title={getCategory("Table")}
20
+ component={Table}
21
+ decorators={[withDesign]}
22
+ parameters={{
23
+ design: {
24
+ type: "figma",
25
+ url:
26
+ "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=46780%3A27675",
27
+ },
28
+ jest: ["Table.test.tsx"],
29
+ }}
30
+ argTypes={{
31
+ columnHeaders: [],
32
+ columnHeadersBackgroundColor: { control: { type: "color" } },
33
+ columnHeadersTextColor: {control: {type: "color"}},
34
+ id: {control: false},
35
+ tableData: { control: false },
36
+ }}
37
+ />
38
+
39
+
40
+ # Table
41
+
42
+ | Component Version | DS Version |
43
+ | ----------------- | ---------- |
44
+ | Added | `0.25.9` |
45
+ | Latest | `0.25.9` |
46
+
47
+ <Description of={Table} />
48
+
49
+ <Canvas withToolbar>
50
+ <Story
51
+ name="Table"
52
+ args={{
53
+ columnHeaders: ["First Name", "Last Name", "Nick Name", "Address1", "City", "Zipcode", "State"],
54
+ tableData: [ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY" ], [ "Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"], [ "K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"], [ "Sonny", "Resetti", "Risetto san", "Village Road", "New York", "09873", "NY" ], ],
55
+ useRowHeaders: false,
56
+ showRowDividers: false,
57
+ }}
58
+ >
59
+ {(args) => (
60
+ <Table {...args}>
61
+ </Table>
62
+ )}
63
+ </Story>
64
+ </Canvas>
65
+
66
+ <ArgsTable story="Table" />
@@ -0,0 +1,60 @@
1
+ import * as React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+ import Table from "./Table";
5
+
6
+ export const columnHeaders = [
7
+ "First Name",
8
+ "Last Name",
9
+ "Nick Name",
10
+ "Address1",
11
+ "City",
12
+ "Zipcode",
13
+ "State",
14
+ ];
15
+
16
+ export const tableData = [
17
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
18
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
19
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
20
+ [
21
+ "Sonny",
22
+ "Resetti",
23
+ "Risetto san",
24
+ "Village Road",
25
+ "New York",
26
+ "09873",
27
+ "NY",
28
+ ],
29
+ ];
30
+
31
+ describe("Table Accessibility", () => {
32
+ it("passes axe accessibility test with the columnHeaders and tableData prop", async () => {
33
+ const { container } = render(
34
+ <Table columnHeaders={columnHeaders} tableData={tableData} />
35
+ );
36
+ expect(await axe(container)).toHaveNoViolations();
37
+ });
38
+
39
+ it("passes axe accessibility test with tableData prop", async () => {
40
+ const { container } = render(<Table tableData={tableData} />);
41
+ expect(await axe(container)).toHaveNoViolations();
42
+ });
43
+ });
44
+
45
+ describe("Table", () => {
46
+ it("Renders table data", () => {
47
+ render(<Table tableData={tableData} columnHeaders={columnHeaders} />);
48
+ expect(screen.getByText("Tom")).toBeInTheDocument();
49
+ expect(screen.getByText("First Name")).toBeInTheDocument();
50
+ expect(screen.getByText("Village Road")).toBeInTheDocument();
51
+ });
52
+
53
+ it("logs a warning when the `tableData` prop is an empty array", async () => {
54
+ const warn = jest.spyOn(console, "warn");
55
+ render(<Table tableData={[]} />);
56
+ expect(warn).toHaveBeenCalledWith(
57
+ "Table data should be two dimensional array."
58
+ );
59
+ });
60
+ });
@@ -0,0 +1,116 @@
1
+ import * as React from "react";
2
+ import {
3
+ Table as ChakraTable,
4
+ Thead as ChakraTHead,
5
+ Tbody as ChakraTbody,
6
+ Tr as ChakraTr,
7
+ Th as ChakraTh,
8
+ Td as ChakraTd,
9
+ TableCaption as ChakraTableCaption,
10
+ useMultiStyleConfig,
11
+ } from "@chakra-ui/react";
12
+
13
+ import generateUUID from "../../helpers/generateUUID";
14
+
15
+ export interface TableProps {
16
+ /** Additional class name for the `Table` component. */
17
+ className?: string;
18
+ /** Array of string values used to populate the `Table` column headers. */
19
+ columnHeaders?: string[];
20
+ /** Hex value to set the background color of the column headers. */
21
+ columnHeadersBackgroundColor?: string;
22
+ /** Hex value to set the text color of the column headers. */
23
+ columnHeadersTextColor?: string;
24
+ /** ID that other components can cross reference for accessibility purposes. */
25
+ id?: string;
26
+ /** If true, the first cell of each row in the `Table` component will be visually styled as a header. The default value is false */
27
+ useRowHeaders?: boolean;
28
+ /** If true, a border will be displayed between each row in the `Table` component. The default value is false. */
29
+ showRowDividers?: boolean;
30
+ /** Two-dimensional array used to populate the table rows. */
31
+ tableData: string[][];
32
+ /** Displays `Table` title element. */
33
+ titleText?: string;
34
+ }
35
+
36
+ function Table(props: React.PropsWithChildren<TableProps>) {
37
+ const {
38
+ className,
39
+ columnHeaders,
40
+ columnHeadersBackgroundColor,
41
+ columnHeadersTextColor,
42
+ id = generateUUID(),
43
+ useRowHeaders = false,
44
+ showRowDividers = false,
45
+ tableData,
46
+ titleText,
47
+ } = props;
48
+
49
+ const customColors = {};
50
+
51
+ columnHeadersBackgroundColor &&
52
+ (customColors["backgroundColor"] = columnHeadersBackgroundColor);
53
+ columnHeadersTextColor && (customColors["color"] = columnHeadersTextColor);
54
+
55
+ const styles = useMultiStyleConfig("CustomTable", {
56
+ columnHeadersTextColor,
57
+ showRowDividers,
58
+ useRowHeaders,
59
+ });
60
+
61
+ const columnHeadersElems = columnHeaders && (
62
+ <ChakraTHead>
63
+ <ChakraTr>
64
+ {columnHeaders.map((child, key) => (
65
+ <ChakraTh scope="col" key={key} sx={customColors}>
66
+ {child}
67
+ </ChakraTh>
68
+ ))}
69
+ </ChakraTr>
70
+ </ChakraTHead>
71
+ );
72
+
73
+ const tableBodyElems = () => {
74
+ /** tableData value should be two dimensional array */
75
+ if (
76
+ !Array.isArray(tableData) ||
77
+ tableData.length <= 0 ||
78
+ tableData[0].constructor !== Array
79
+ ) {
80
+ console.warn(`Table data should be two dimensional array.`);
81
+ return null;
82
+ }
83
+
84
+ return (
85
+ <ChakraTbody>
86
+ {tableData.map((row, index) => (
87
+ <ChakraTr key={index}>
88
+ {row.map((column, key) =>
89
+ key === 0 && useRowHeaders ? (
90
+ <ChakraTh scope="row" key={key}>
91
+ {column}
92
+ </ChakraTh>
93
+ ) : (
94
+ <ChakraTd key={key}>{column}</ChakraTd>
95
+ )
96
+ )}
97
+ </ChakraTr>
98
+ ))}
99
+ </ChakraTbody>
100
+ );
101
+ };
102
+
103
+ const tableCaption = titleText && (
104
+ <ChakraTableCaption>{titleText}</ChakraTableCaption>
105
+ );
106
+
107
+ return (
108
+ <ChakraTable id={id} sx={styles} className={className}>
109
+ {tableCaption}
110
+ {columnHeadersElems}
111
+ {tableBodyElems()}
112
+ </ChakraTable>
113
+ );
114
+ }
115
+
116
+ export default Table;