@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
@@ -3,14 +3,16 @@ import { render, screen } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
4
  import renderer from "react-test-renderer";
5
5
 
6
- import Card, { CardHeading, CardContent, CardActions } from "./Card";
7
- import Link from "../Link/Link";
8
- import { LinkTypes } from "../Link/LinkTypes";
9
6
  import Button from "../Button/Button";
10
7
  import { ButtonTypes } from "../Button/ButtonTypes";
8
+ import Card, { CardHeading, CardContent, CardActions } from "./Card";
11
9
  import { HeadingLevels } from "../Heading/HeadingTypes";
12
10
  import Icon from "../Icons/Icon";
13
11
  import { IconRotationTypes, IconNames, IconAlign } from "../Icons/IconTypes";
12
+ import Image from "../Image/Image";
13
+ import Link from "../Link/Link";
14
+ import { LinkTypes } from "../Link/LinkTypes";
15
+ import { ImageRatios } from "../Image/ImageTypes";
14
16
 
15
17
  describe("Card Accessibility", () => {
16
18
  it("passes axe accessibility test", async () => {
@@ -92,12 +94,12 @@ describe("Card", () => {
92
94
  );
93
95
  const cardWithExtendedStyles = (
94
96
  <Card
95
- id="cardWithExtendedStyles"
96
97
  className="edition-card"
97
- imageSrc="https://placeimg.com/300/400/arch"
98
+ id="cardWithExtendedStyles"
98
99
  imageAlt="Alt text"
100
+ imageSrc="https://placeimg.com/300/400/arch"
99
101
  >
100
- <CardHeading level={HeadingLevels.Two} id="editioncardheading1">
102
+ <CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
101
103
  The Card Heading
102
104
  </CardHeading>
103
105
  <CardContent>
@@ -114,10 +116,10 @@ describe("Card", () => {
114
116
  </Link>
115
117
  <Link id="link-icon" href="#url" type={LinkTypes.Action}>
116
118
  <Icon
117
- id="icon-cardWithExtendedStyles"
118
- name={IconNames.Download}
119
119
  align={IconAlign.Left}
120
120
  iconRotation={IconRotationTypes.Rotate0}
121
+ id="icon-cardWithExtendedStyles"
122
+ name={IconNames.Download}
121
123
  />
122
124
  Download
123
125
  </Link>
@@ -126,12 +128,12 @@ describe("Card", () => {
126
128
  );
127
129
  const cardWithNoCTAs = (
128
130
  <Card
129
- id="cardWithNoCTAs"
130
131
  className="edition-card"
131
- imageSrc="https://placeimg.com/300/400/arch"
132
+ id="cardWithNoCTAs"
132
133
  imageAlt="Alt text"
134
+ imageSrc="https://placeimg.com/300/400/arch"
133
135
  >
134
- <CardHeading level={HeadingLevels.Two} id="editioncardheading1">
136
+ <CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
135
137
  The Card Heading
136
138
  </CardHeading>
137
139
  <CardContent>
@@ -143,14 +145,14 @@ describe("Card", () => {
143
145
  );
144
146
  const cardWithNoContent = (
145
147
  <Card
146
- id="cardWithNoContent"
147
148
  className="edition-card"
148
- imageSrc="https://placeimg.com/300/400/arch"
149
+ id="cardWithNoContent"
149
150
  imageAlt="Alt text"
151
+ imageSrc="https://placeimg.com/300/400/arch"
150
152
  >
151
153
  <CardHeading
152
- level={HeadingLevels.Two}
153
154
  id="editioncardheading1"
155
+ level={HeadingLevels.Two}
154
156
  url="#edition-link"
155
157
  >
156
158
  The Card Heading
@@ -161,10 +163,10 @@ describe("Card", () => {
161
163
  </Link>
162
164
  <Link id="link-icon" href="#url" type={LinkTypes.Action}>
163
165
  <Icon
164
- id="icon-cardWithNoContent"
165
- name={IconNames.Download}
166
166
  align={IconAlign.Left}
167
167
  iconRotation={IconRotationTypes.Rotate0}
168
+ id="icon-cardWithNoContent"
169
+ name={IconNames.Download}
168
170
  />
169
171
  Download
170
172
  </Link>
@@ -174,8 +176,8 @@ describe("Card", () => {
174
176
  const cardWithNoImage = (
175
177
  <Card id="cardWithNoImage" className="edition-card">
176
178
  <CardHeading
177
- level={HeadingLevels.Two}
178
179
  id="editioncardheading1"
180
+ level={HeadingLevels.Two}
179
181
  url="#edition-link"
180
182
  >
181
183
  The Card Heading
@@ -187,10 +189,10 @@ describe("Card", () => {
187
189
  </Link>
188
190
  <Link id="link-icon" href="#url" type={LinkTypes.Action}>
189
191
  <Icon
190
- id="icon-cardWithNoImage"
191
- name={IconNames.Download}
192
192
  align={IconAlign.Left}
193
193
  iconRotation={IconRotationTypes.Rotate0}
194
+ id="icon-cardWithNoImage"
195
+ name={IconNames.Download}
194
196
  />
195
197
  Download
196
198
  </Link>
@@ -200,8 +202,8 @@ describe("Card", () => {
200
202
  const cardFullClick = () => (
201
203
  <Card
202
204
  id="fullclick"
203
- imageSrc="https://placeimg.com/400/200/arch"
204
205
  imageAlt="Alt text"
206
+ imageSrc="https://placeimg.com/400/200/arch"
205
207
  mainActionLink="http://nypl.org"
206
208
  >
207
209
  <CardHeading level={HeadingLevels.Three} id="heading1">
@@ -210,9 +212,9 @@ describe("Card", () => {
210
212
  <CardContent>middle column content</CardContent>
211
213
  <CardActions>
212
214
  <Button
213
- onClick={() => {}}
214
- id="button1"
215
215
  buttonType={ButtonTypes.Primary}
216
+ id="button1"
217
+ onClick={() => {}}
216
218
  type="submit"
217
219
  >
218
220
  Example CTA
@@ -220,6 +222,18 @@ describe("Card", () => {
220
222
  </CardActions>
221
223
  </Card>
222
224
  );
225
+ const cardImageComponentAndRatio = () => (
226
+ <Card
227
+ id="fullclick"
228
+ imageComponent={<Image alt="" src="https://placeimg.com/400/200/arch" />}
229
+ imageAspectRatio={ImageRatios.ThreeByTwo}
230
+ >
231
+ <CardHeading level={HeadingLevels.Three} id="heading1">
232
+ The Card Heading
233
+ </CardHeading>
234
+ <CardContent>middle column content</CardContent>
235
+ </Card>
236
+ );
223
237
  let container;
224
238
 
225
239
  it("renders a Card with a header, image, content, and CTAs", () => {
@@ -289,6 +303,14 @@ describe("Card", () => {
289
303
  );
290
304
  });
291
305
 
306
+ it("Logs a warning when both `imageComponent` and `imageAspectRatio` are passed", () => {
307
+ const warn = jest.spyOn(console, "warn");
308
+ render(cardImageComponentAndRatio());
309
+ expect(warn).toHaveBeenCalledWith(
310
+ "Both `imageComponent` and `imageAspectRatio` are set but `imageAspectRatio` will be ignored in favor of the aspect ratio on `imageComponent`."
311
+ );
312
+ });
313
+
292
314
  it("Renders the UI snapshot correctly", () => {
293
315
  const regular = renderer.create(regularCard).toJSON();
294
316
  const withExtendedStyles = renderer.create(cardWithExtendedStyles).toJSON();
@@ -296,6 +318,7 @@ describe("Card", () => {
296
318
  const withNoContent = renderer.create(cardWithNoContent).toJSON();
297
319
  const withNoImage = renderer.create(cardWithNoImage).toJSON();
298
320
  const withFullClick = renderer.create(cardFullClick()).toJSON();
321
+
299
322
  expect(regular).toMatchSnapshot();
300
323
  expect(withExtendedStyles).toMatchSnapshot();
301
324
  expect(withNoCTAs).toMatchSnapshot();
@@ -16,7 +16,8 @@ import generateUUID from "../../helpers/generateUUID";
16
16
  interface CardBaseProps {
17
17
  /** Optional value to control the alignment of the text and elements. */
18
18
  center?: boolean;
19
- /** Optional value to render the layout in a row or column (default). */
19
+ /** Optional value to render the layout in a row or column.
20
+ * Default is `CardLayouts.Column`. */
20
21
  layout?: CardLayouts;
21
22
  }
22
23
 
@@ -54,14 +55,15 @@ export interface CardProps extends CardBaseProps, CardLinkBoxProps {
54
55
  /** Text description of the image; to follow best practices for accessibility,
55
56
  * this prop should not be left blank if `imageSrc` is passed. */
56
57
  imageAlt?: string;
57
- /** Optional value to control the aspect ratio of the `CardIage`; default
58
- * value is `square`. */
58
+ /** Optional value to control the aspect ratio of the `CardImage`; default
59
+ * value is `ImageRatios.Square`. */
59
60
  imageAspectRatio?: ImageRatios;
60
61
  /** Optional boolean value to control the position of the `CardImage`. */
61
62
  imageAtEnd?: boolean;
62
63
  /** Custom image component used in place of DS `Image` component. */
63
64
  imageComponent?: JSX.Element;
64
- /** Optional value to control the size of the `CardImage`. */
65
+ /** Optional value to control the size of the `CardImage`. Default value is
66
+ * `ImageSizes.Default`. */
65
67
  imageSize?: ImageSizes;
66
68
  /** The path to the image displayed within the `Card` component. */
67
69
  imageSrc?: string;
@@ -91,14 +93,15 @@ function CardImage(props: React.ComponentProps<"img"> & CardImageProps) {
91
93
  layout,
92
94
  });
93
95
  return (
94
- <Image
95
- alt={alt}
96
- component={component}
97
- imageAspectRatio={imageAspectRatio}
98
- imageSize={imageSize}
99
- src={src}
100
- additionalStyles={styles}
101
- />
96
+ <Box __css={styles}>
97
+ <Image
98
+ alt={alt}
99
+ component={component}
100
+ imageAspectRatio={imageAspectRatio}
101
+ imageSize={imageSize}
102
+ src={src}
103
+ />
104
+ </Box>
102
105
  );
103
106
  }
104
107
 
@@ -178,10 +181,19 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
178
181
  mainActionLink,
179
182
  } = props;
180
183
  const hasImage = imageSrc || imageComponent;
184
+ const finalImageAspectRatio = imageComponent
185
+ ? ImageRatios.Original
186
+ : imageAspectRatio;
181
187
  const customColors = {};
182
188
  const cardContents = [];
183
189
  let cardHeadingCount = 0;
184
190
 
191
+ if (imageComponent && imageAspectRatio !== ImageRatios.Square) {
192
+ console.warn(
193
+ "Both `imageComponent` and `imageAspectRatio` are set but `imageAspectRatio` will be ignored in favor of the aspect ratio on `imageComponent`."
194
+ );
195
+ }
196
+
185
197
  backgroundColor && (customColors["backgroundColor"] = backgroundColor);
186
198
  foregroundColor && (customColors["color"] = foregroundColor);
187
199
 
@@ -191,6 +203,7 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
191
203
  hasImage,
192
204
  imageAtEnd,
193
205
  layout,
206
+ mainActionLink,
194
207
  });
195
208
 
196
209
  React.Children.map(children, (child: React.ReactElement, key) => {
@@ -245,7 +258,7 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
245
258
  component={imageComponent}
246
259
  alt={imageAlt}
247
260
  imageSize={imageSize}
248
- imageAspectRatio={imageAspectRatio}
261
+ imageAspectRatio={finalImageAspectRatio}
249
262
  imageAtEnd={imageAtEnd}
250
263
  layout={layout}
251
264
  />
@@ -6,16 +6,20 @@ exports[`Card Renders the UI snapshot correctly 1`] = `
6
6
  id="regularCard"
7
7
  >
8
8
  <div
9
- className="the-wrap css-0"
9
+ className="css-0"
10
10
  >
11
11
  <div
12
- className="the-crop css-0"
12
+ className="the-wrap css-0"
13
13
  >
14
- <img
15
- alt="Alt text"
16
- className="css-0"
17
- src="https://placeimg.com/400/200/arch"
18
- />
14
+ <div
15
+ className="the-crop css-0"
16
+ >
17
+ <img
18
+ alt="Alt text"
19
+ className="css-0"
20
+ src="https://placeimg.com/400/200/arch"
21
+ />
22
+ </div>
19
23
  </div>
20
24
  </div>
21
25
  <div
@@ -55,16 +59,20 @@ exports[`Card Renders the UI snapshot correctly 2`] = `
55
59
  id="cardWithExtendedStyles"
56
60
  >
57
61
  <div
58
- className="the-wrap css-0"
62
+ className="css-0"
59
63
  >
60
64
  <div
61
- className="the-crop css-0"
65
+ className="the-wrap css-0"
62
66
  >
63
- <img
64
- alt="Alt text"
65
- className="css-0"
66
- src="https://placeimg.com/300/400/arch"
67
- />
67
+ <div
68
+ className="the-crop css-0"
69
+ >
70
+ <img
71
+ alt="Alt text"
72
+ className="css-0"
73
+ src="https://placeimg.com/300/400/arch"
74
+ />
75
+ </div>
68
76
  </div>
69
77
  </div>
70
78
  <div
@@ -96,6 +104,8 @@ exports[`Card Renders the UI snapshot correctly 2`] = `
96
104
  className="css-0"
97
105
  href="online"
98
106
  id="link-online"
107
+ rel={null}
108
+ target={null}
99
109
  >
100
110
  Read Online
101
111
  </a>
@@ -103,6 +113,8 @@ exports[`Card Renders the UI snapshot correctly 2`] = `
103
113
  className="css-0"
104
114
  href="#url"
105
115
  id="link-icon"
116
+ rel={null}
117
+ target={null}
106
118
  >
107
119
  <svg
108
120
  aria-hidden={true}
@@ -149,16 +161,20 @@ exports[`Card Renders the UI snapshot correctly 3`] = `
149
161
  id="cardWithNoCTAs"
150
162
  >
151
163
  <div
152
- className="the-wrap css-0"
164
+ className="css-0"
153
165
  >
154
166
  <div
155
- className="the-crop css-0"
167
+ className="the-wrap css-0"
156
168
  >
157
- <img
158
- alt="Alt text"
159
- className="css-0"
160
- src="https://placeimg.com/300/400/arch"
161
- />
169
+ <div
170
+ className="the-crop css-0"
171
+ >
172
+ <img
173
+ alt="Alt text"
174
+ className="css-0"
175
+ src="https://placeimg.com/300/400/arch"
176
+ />
177
+ </div>
162
178
  </div>
163
179
  </div>
164
180
  <div
@@ -193,16 +209,20 @@ exports[`Card Renders the UI snapshot correctly 4`] = `
193
209
  id="cardWithNoContent"
194
210
  >
195
211
  <div
196
- className="the-wrap css-0"
212
+ className="css-0"
197
213
  >
198
214
  <div
199
- className="the-crop css-0"
215
+ className="the-wrap css-0"
200
216
  >
201
- <img
202
- alt="Alt text"
203
- className="css-0"
204
- src="https://placeimg.com/300/400/arch"
205
- />
217
+ <div
218
+ className="the-crop css-0"
219
+ >
220
+ <img
221
+ alt="Alt text"
222
+ className="css-0"
223
+ src="https://placeimg.com/300/400/arch"
224
+ />
225
+ </div>
206
226
  </div>
207
227
  </div>
208
228
  <div
@@ -213,8 +233,11 @@ exports[`Card Renders the UI snapshot correctly 4`] = `
213
233
  id="editioncardheading1"
214
234
  >
215
235
  <a
216
- className="chakra-link css-1xdhyk6"
236
+ className="css-0"
217
237
  href="#edition-link"
238
+ id="editioncardheading1-link"
239
+ rel={null}
240
+ target={null}
218
241
  >
219
242
  The Card Heading
220
243
  </a>
@@ -226,6 +249,8 @@ exports[`Card Renders the UI snapshot correctly 4`] = `
226
249
  className="css-0"
227
250
  href="online"
228
251
  id="link-online"
252
+ rel={null}
253
+ target={null}
229
254
  >
230
255
  Read Online
231
256
  </a>
@@ -233,6 +258,8 @@ exports[`Card Renders the UI snapshot correctly 4`] = `
233
258
  className="css-0"
234
259
  href="#url"
235
260
  id="link-icon"
261
+ rel={null}
262
+ target={null}
236
263
  >
237
264
  <svg
238
265
  aria-hidden={true}
@@ -286,8 +313,11 @@ exports[`Card Renders the UI snapshot correctly 5`] = `
286
313
  id="editioncardheading1"
287
314
  >
288
315
  <a
289
- className="chakra-link css-1xdhyk6"
316
+ className="css-0"
290
317
  href="#edition-link"
318
+ id="editioncardheading1-link"
319
+ rel={null}
320
+ target={null}
291
321
  >
292
322
  The Card Heading
293
323
  </a>
@@ -304,6 +334,8 @@ exports[`Card Renders the UI snapshot correctly 5`] = `
304
334
  className="css-0"
305
335
  href="online"
306
336
  id="link-online"
337
+ rel={null}
338
+ target={null}
307
339
  >
308
340
  Read Online
309
341
  </a>
@@ -311,6 +343,8 @@ exports[`Card Renders the UI snapshot correctly 5`] = `
311
343
  className="css-0"
312
344
  href="#url"
313
345
  id="link-icon"
346
+ rel={null}
347
+ target={null}
314
348
  >
315
349
  <svg
316
350
  aria-hidden={true}
@@ -360,16 +394,20 @@ exports[`Card Renders the UI snapshot correctly 6`] = `
360
394
  id="fullclick"
361
395
  >
362
396
  <div
363
- className="the-wrap css-0"
397
+ className="css-0"
364
398
  >
365
399
  <div
366
- className="the-crop css-0"
400
+ className="the-wrap css-0"
367
401
  >
368
- <img
369
- alt="Alt text"
370
- className="css-0"
371
- src="https://placeimg.com/400/200/arch"
372
- />
402
+ <div
403
+ className="the-crop css-0"
404
+ >
405
+ <img
406
+ alt="Alt text"
407
+ className="css-0"
408
+ src="https://placeimg.com/400/200/arch"
409
+ />
410
+ </div>
373
411
  </div>
374
412
  </div>
375
413
  <div
@@ -1,12 +1,12 @@
1
- import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
2
1
  import { Box } from "@chakra-ui/react";
2
+ import { Canvas, Meta, Story } from "@storybook/addon-docs";
3
3
 
4
- import { getCategory } from "../../utils/componentCategories";
5
4
  import VideoPlayer from "../VideoPlayer/VideoPlayer";
6
5
  import {
7
- VideoPlayerTypes,
8
6
  VideoPlayerAspectRatios,
7
+ VideoPlayerTypes,
9
8
  } from "../VideoPlayer/VideoPlayerTypes";
9
+ import { getCategory } from "../../utils/componentCategories";
10
10
  import DSProvider from "../../theme/provider";
11
11
 
12
12
  <Meta title={getCategory("Box")} component={Box} />
@@ -1,11 +1,11 @@
1
- import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
2
- import { Box, Center, Square, Circle, HStack } from "@chakra-ui/react";
1
+ import { Box, Center, Circle, HStack, Square } from "@chakra-ui/react";
2
+ import { Canvas, Meta, Story } from "@storybook/addon-docs";
3
3
 
4
- import { getCategory } from "../../utils/componentCategories";
4
+ import Icon from "../Icons/Icon";
5
+ import { IconColors, IconNames, IconSizes } from "../Icons/IconTypes";
5
6
  import Image from "../Image/Image";
6
7
  import { ImageSizes } from "../Image/ImageTypes";
7
- import Icon from "../Icons/Icon";
8
- import { IconNames, IconColors, IconSizes } from "../Icons/IconTypes";
8
+ import { getCategory } from "../../utils/componentCategories";
9
9
  import DSProvider from "../../theme/provider";
10
10
 
11
11
  <Meta title={getCategory("Center, Circle, Square")} component={Center} />
@@ -1,6 +1,6 @@
1
- import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
2
- import { Box } from "@chakra-ui/react";
3
- import { Grid, GridItem } from "@chakra-ui/react";
1
+ import { Box, Grid, GridItem } from "@chakra-ui/react";
2
+ import { Canvas, Meta, Story } from "@storybook/addon-docs";
3
+
4
4
  import { getCategory } from "../../utils/componentCategories";
5
5
  import DSProvider from "../../theme/provider";
6
6
 
@@ -11,6 +11,7 @@ import DSProvider from "../../theme/provider";
11
11
  | Component Version | DS Version |
12
12
  | ----------------- | ---------- |
13
13
  | Added | `0.25.1` |
14
+ | Latest | `0.25.1` |
14
15
 
15
16
  Note: This needs the use of the `DSProvider` component. See the
16
17
  [README](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/chakra-ui--page#dsprovider)
@@ -63,16 +64,12 @@ the `templateColumns` and `templateRows`.
63
64
  height="200px"
64
65
  templateRows="repeat(2, 1fr)"
65
66
  templateColumns="repeat(5, 1fr)"
66
- gap="32"
67
+ gap="l"
67
68
  >
68
- <GridItem
69
- rowSpan={2}
70
- colSpan={1}
71
- bg="var(--nypl-colors-ui-link-primary)"
72
- />
73
- <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-primary)" />
74
- <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-secondary)" />
75
- <GridItem colSpan={4} bg="var(--nypl-colors-ui-link-secondary)" />
69
+ <GridItem rowSpan={2} colSpan={1} bg="ui.link.primary" />
70
+ <GridItem colSpan={2} bg="ui.success.primary" />
71
+ <GridItem colSpan={2} bg="ui.success.secondary" />
72
+ <GridItem colSpan={4} bg="ui.link.secondary" />
76
73
  </Grid>
77
74
  </DSProvider>
78
75
  </Canvas>
@@ -82,11 +79,11 @@ the `templateColumns` and `templateRows`.
82
79
  height="200px"
83
80
  templateRows="repeat(2, 1fr)"
84
81
  templateColumns="repeat(5, 1fr)"
85
- gap="32"
82
+ gap="l"
86
83
  >
87
- <GridItem rowSpan={2} colSpan={1} bg="var(--nypl-colors-ui-link-primary)" />
88
- <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-primary)" />
89
- <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-secondary)" />
90
- <GridItem colSpan={4} bg="var(--nypl-colors-ui-link-secondary)" />
84
+ <GridItem rowSpan={2} colSpan={1} bg="ui.link.primary" />
85
+ <GridItem colSpan={2} bg="ui.success.primary" />
86
+ <GridItem colSpan={2} bg="ui.success.secondary" />
87
+ <GridItem colSpan={4} bg="ui.link.secondary" />
91
88
  </Grid>
92
89
  ```
@@ -1,10 +1,10 @@
1
1
  import { Meta, Story, Canvas } from "@storybook/addon-docs";
2
2
  import { Box, Stack, HStack, VStack, Circle } from "@chakra-ui/react";
3
3
 
4
- import { getCategory } from "../../utils/componentCategories";
5
- import DSProvider from "../../theme/provider";
6
4
  import Icon from "../Icons/Icon";
7
5
  import { IconNames, IconSizes } from "../Icons/IconTypes";
6
+ import { getCategory } from "../../utils/componentCategories";
7
+ import DSProvider from "../../theme/provider";
8
8
 
9
9
  <Meta title={getCategory("Stack, HStack, VStack")} component={Stack} />
10
10