@nypl/design-system-react-components 0.25.8 → 0.25.11

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 (282) hide show
  1. package/CHANGELOG.md +110 -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 +0 -21
  19. package/dist/components/Icons/IconTypes.d.ts +0 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/List/List.d.ts +1 -1
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +34 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +46 -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 +6 -5
  30. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  31. package/dist/components/Select/Select.d.ts +7 -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 +29 -0
  38. package/dist/components/Template/Template.d.ts +30 -6
  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 +3 -2
  42. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  43. package/dist/design-system-react-components.cjs.development.js +6721 -5777
  44. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  45. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  47. package/dist/design-system-react-components.esm.js +6774 -5839
  48. package/dist/design-system-react-components.esm.js.map +1 -1
  49. package/dist/index.d.ts +10 -8
  50. package/dist/resources.scss +0 -2
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +1 -1
  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 +56 -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 +13 -4
  64. package/dist/theme/components/searchBar.d.ts +9 -11
  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 +4 -0
  69. package/dist/theme/components/toggle.d.ts +8 -5
  70. package/dist/utils/utils.d.ts +10 -0
  71. package/package.json +40 -37
  72. package/src/__tests__/utils/utils.test.ts +23 -1
  73. package/src/components/Accordion/Accordion.stories.mdx +15 -13
  74. package/src/components/Accordion/Accordion.test.tsx +45 -1
  75. package/src/components/Accordion/Accordion.tsx +20 -8
  76. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  77. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  78. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  79. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  80. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  81. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
  82. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  83. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
  84. package/src/components/Button/Button.stories.mdx +93 -48
  85. package/src/components/Button/Button.test.tsx +0 -12
  86. package/src/components/Button/Button.tsx +7 -7
  87. package/src/components/Button/ButtonTypes.tsx +0 -1
  88. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  89. package/src/components/Card/Card.stories.mdx +186 -71
  90. package/src/components/Card/Card.test.tsx +45 -22
  91. package/src/components/Card/Card.tsx +21 -6
  92. package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
  93. package/src/components/Chakra/Box.stories.mdx +3 -3
  94. package/src/components/Chakra/Center.stories.mdx +5 -5
  95. package/src/components/Chakra/Flex.stories.mdx +113 -0
  96. package/src/components/Chakra/Grid.stories.mdx +3 -3
  97. package/src/components/Chakra/Stack.stories.mdx +2 -2
  98. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  99. package/src/components/Checkbox/Checkbox.tsx +13 -8
  100. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  101. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  102. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  103. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  104. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  105. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  106. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  107. package/src/components/DatePicker/DatePicker.test.tsx +6 -6
  108. package/src/components/DatePicker/DatePicker.tsx +17 -11
  109. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
  110. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  111. package/src/components/Fieldset/Fieldset.tsx +2 -4
  112. package/src/components/Form/Form.stories.mdx +75 -49
  113. package/src/components/Form/Form.test.tsx +92 -3
  114. package/src/components/Form/Form.tsx +28 -23
  115. package/src/components/Form/FormTypes.tsx +2 -2
  116. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  117. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  118. package/src/components/Heading/Heading.stories.mdx +59 -23
  119. package/src/components/Heading/Heading.test.tsx +82 -18
  120. package/src/components/Heading/Heading.tsx +31 -31
  121. package/src/components/Heading/HeadingTypes.tsx +6 -6
  122. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  123. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  124. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  125. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  126. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  127. package/src/components/Hero/Hero.stories.mdx +72 -53
  128. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  129. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  130. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  131. package/src/components/Icons/Icon.stories.mdx +78 -77
  132. package/src/components/Icons/Icon.test.tsx +1 -1
  133. package/src/components/Icons/Icon.tsx +5 -6
  134. package/src/components/Icons/IconSvgs.tsx +0 -42
  135. package/src/components/Icons/IconTypes.tsx +0 -24
  136. package/src/components/Image/Image.stories.mdx +66 -18
  137. package/src/components/Image/Image.tsx +21 -10
  138. package/src/components/Label/Label.stories.mdx +20 -19
  139. package/src/components/Link/Link.stories.mdx +102 -51
  140. package/src/components/Link/Link.test.tsx +38 -8
  141. package/src/components/Link/Link.tsx +19 -12
  142. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  143. package/src/components/List/List.stories.mdx +60 -29
  144. package/src/components/List/List.test.tsx +1 -1
  145. package/src/components/List/List.tsx +2 -2
  146. package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
  147. package/src/components/Logo/Logo.stories.mdx +222 -0
  148. package/src/components/Logo/Logo.test.tsx +98 -0
  149. package/src/components/Logo/Logo.tsx +97 -0
  150. package/src/components/Logo/LogoSvgs.tsx +66 -0
  151. package/src/components/Logo/LogoTypes.tsx +48 -0
  152. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  153. package/src/components/Modal/Modal.stories.mdx +20 -5
  154. package/src/components/Modal/Modal.tsx +2 -8
  155. package/src/components/Notification/Notification.stories.mdx +128 -38
  156. package/src/components/Notification/Notification.test.tsx +49 -1
  157. package/src/components/Notification/Notification.tsx +25 -12
  158. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  159. package/src/components/Pagination/Pagination.stories.mdx +18 -7
  160. package/src/components/Pagination/Pagination.tsx +3 -3
  161. package/src/components/Placeholder/Placeholder.tsx +7 -14
  162. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  163. package/src/components/Radio/Radio.stories.mdx +39 -19
  164. package/src/components/Radio/Radio.tsx +13 -9
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  168. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  170. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  171. package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
  172. package/src/components/SearchBar/SearchBar.tsx +72 -51
  173. package/src/components/Select/Select.stories.mdx +48 -14
  174. package/src/components/Select/Select.test.tsx +89 -0
  175. package/src/components/Select/Select.tsx +27 -12
  176. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  177. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  178. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  179. package/src/components/Slider/Slider.stories.mdx +72 -22
  180. package/src/components/Slider/Slider.tsx +15 -10
  181. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  182. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  183. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  184. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  185. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  186. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  187. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  188. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  189. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  190. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  191. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  192. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  193. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  194. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  195. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  196. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  197. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  198. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  199. package/src/components/Table/Table.stories.mdx +165 -0
  200. package/src/components/Table/Table.test.tsx +137 -0
  201. package/src/components/Table/Table.tsx +126 -0
  202. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  203. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  204. package/src/components/Tabs/Tabs.test.tsx +21 -5
  205. package/src/components/Tabs/Tabs.tsx +35 -20
  206. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  207. package/src/components/Template/Template.stories.mdx +132 -48
  208. package/src/components/Template/Template.test.tsx +128 -6
  209. package/src/components/Template/Template.tsx +93 -13
  210. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  211. package/src/components/Text/Text.stories.mdx +33 -11
  212. package/src/components/Text/Text.tsx +2 -2
  213. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  214. package/src/components/TextInput/TextInput.test.tsx +96 -0
  215. package/src/components/TextInput/TextInput.tsx +12 -8
  216. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  217. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  218. package/src/components/Toggle/Toggle.tsx +14 -9
  219. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
  220. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  222. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  223. package/src/docs/Chakra.stories.mdx +5 -8
  224. package/src/docs/Intro.stories.mdx +2 -2
  225. package/src/index.ts +13 -6
  226. package/src/styles/base/_03-base.scss +1 -1
  227. package/src/styles/base/_place-holder.scss +7 -7
  228. package/src/styles.scss +1 -5
  229. package/src/theme/components/breadcrumb.ts +4 -4
  230. package/src/theme/components/button.ts +5 -12
  231. package/src/theme/components/card.ts +5 -2
  232. package/src/theme/components/checkbox.ts +1 -1
  233. package/src/theme/components/customTable.ts +63 -0
  234. package/src/theme/components/datePicker.ts +1 -1
  235. package/src/theme/components/global.ts +7 -7
  236. package/src/theme/components/heading.ts +13 -11
  237. package/src/theme/components/helperErrorText.ts +1 -1
  238. package/src/theme/components/image.ts +1 -1
  239. package/src/theme/components/link.ts +17 -5
  240. package/src/theme/components/list.ts +3 -5
  241. package/src/theme/components/logo.ts +54 -0
  242. package/src/theme/components/notification.ts +19 -9
  243. package/src/theme/components/searchBar.ts +11 -13
  244. package/src/theme/components/select.ts +1 -0
  245. package/src/theme/components/statusBadge.ts +1 -1
  246. package/src/theme/components/structuredContent.ts +74 -0
  247. package/src/theme/components/template.ts +10 -10
  248. package/src/theme/components/text.ts +6 -6
  249. package/src/theme/components/textInput.ts +2 -0
  250. package/src/theme/components/toggle.ts +10 -6
  251. package/src/theme/components/videoPlayer.ts +0 -2
  252. package/src/theme/foundations/global.ts +2 -2
  253. package/src/theme/foundations/typography.ts +84 -12
  254. package/src/theme/index.ts +6 -0
  255. package/src/utils/componentCategories.ts +2 -1
  256. package/src/utils/utils.ts +17 -0
  257. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  258. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  259. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  260. package/dist/components/Input/Input.d.ts +0 -36
  261. package/dist/components/Input/Input.stories.d.ts +0 -29
  262. package/dist/components/Input/InputTypes.d.ts +0 -6
  263. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  264. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  265. package/dist/helpers/getCSSVariable.d.ts +0 -1
  266. package/dist/interfaces.d.ts +0 -3
  267. package/dist/utils/bem.d.ts +0 -1
  268. package/src/__tests__/utils/bem.test.ts +0 -37
  269. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  270. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  271. package/src/components/CardEdition/CardEdition.tsx +0 -60
  272. package/src/components/CardEdition/_CardEdition.scss +0 -137
  273. package/src/components/Input/Input.stories.tsx +0 -133
  274. package/src/components/Input/Input.test.tsx +0 -266
  275. package/src/components/Input/Input.tsx +0 -81
  276. package/src/components/Input/InputTypes.tsx +0 -8
  277. package/src/components/Input/_Input.scss +0 -78
  278. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  279. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  280. package/src/helpers/getCSSVariable.tsx +0 -5
  281. package/src/interfaces.ts +0 -3
  282. package/src/utils/bem.ts +0 -44
@@ -1,395 +0,0 @@
1
- import * as React from "react";
2
- import { render, screen } from "@testing-library/react";
3
- import { axe } from "jest-axe";
4
-
5
- import CardEdition from "./CardEdition";
6
- import Link from "../Link/Link";
7
- import { LinkTypes } from "../Link/LinkTypes";
8
- import Heading from "../Heading/Heading";
9
- import { HeadingLevels } from "../Heading/HeadingTypes";
10
- import Image from "../Image/Image";
11
- import Button from "../Button/Button";
12
- import { ButtonTypes } from "../Button/ButtonTypes";
13
- import Icon from "../Icons/Icon";
14
- import { IconRotationTypes, IconNames, IconAlign } from "../Icons/IconTypes";
15
-
16
- describe("CardEdition Accessibility", () => {
17
- const regularCard = (
18
- <CardEdition
19
- id="cardID"
20
- heading={
21
- <Heading
22
- level={HeadingLevels.Three}
23
- id="heading1"
24
- text={"Optional Header"}
25
- />
26
- }
27
- image={<Image src="https://placeimg.com/400/200/arch" alt={""} />}
28
- ctas={
29
- <Button
30
- onClick={function () {
31
- console.log(this);
32
- }}
33
- id="button1"
34
- buttonType={ButtonTypes.Primary}
35
- type="submit"
36
- >
37
- Example CTA
38
- </Button>
39
- }
40
- footer={<>Optional footer</>}
41
- >
42
- middle column content
43
- </CardEdition>
44
- );
45
-
46
- it("passes axe accessibility test", async () => {
47
- const { container } = render(regularCard);
48
- expect(await axe(container)).toHaveNoViolations();
49
- });
50
- });
51
-
52
- describe("CardEdition", () => {
53
- const regularCard = (
54
- <CardEdition
55
- id="cardID"
56
- heading={
57
- <Heading
58
- level={HeadingLevels.Three}
59
- id="heading1"
60
- text={"Optional Header"}
61
- />
62
- }
63
- image={<Image src="https://placeimg.com/400/200/arch" alt={""} />}
64
- ctas={
65
- <Button
66
- onClick={function () {
67
- console.log(this);
68
- }}
69
- id="button1"
70
- buttonType={ButtonTypes.Primary}
71
- type="submit"
72
- >
73
- Example CTA
74
- </Button>
75
- }
76
- footer={<>Optional footer</>}
77
- >
78
- middle column content
79
- </CardEdition>
80
- );
81
-
82
- const cardWithExtendedStyles = (
83
- <CardEdition
84
- id="card#1"
85
- className="edition-card"
86
- heading={
87
- <Heading
88
- level={HeadingLevels.Two}
89
- id="editioncardheading1"
90
- text={"2004 Edition"}
91
- />
92
- }
93
- image={<Image src="https://placeimg.com/300/400/arch" alt={""} />}
94
- ctas={
95
- <div className="edition-card__ctas">
96
- <Link type={LinkTypes.Button} href="blah">
97
- Read Online
98
- </Link>
99
- <div className="edition-card__download">
100
- <Link href="#url" type={LinkTypes.Action}>
101
- <Icon
102
- name={IconNames.Download}
103
- // blockName="more-link"
104
- align={IconAlign.Left}
105
- iconRotation={IconRotationTypes.Rotate0}
106
- />
107
- Download
108
- </Link>
109
- </div>
110
- </div>
111
- }
112
- >
113
- <>
114
- <div>Published in New York by Random House</div>
115
- <div>Written in English</div>
116
- <div>
117
- License: Creative Commons Attribution-NonCommercial-NoDerivatives 4.0
118
- International
119
- </div>
120
- </>
121
- </CardEdition>
122
- );
123
-
124
- const cardWithNoCTAs = (
125
- <CardEdition
126
- id="card#1"
127
- image={<Image src="https://placeimg.com/300/400/arch" alt={""} />}
128
- className="edition-card"
129
- heading={
130
- <Heading
131
- level={HeadingLevels.Two}
132
- id="editioncardheading1"
133
- text={"2004 Edition"}
134
- />
135
- }
136
- >
137
- <>
138
- <div>Published in New York by Random House</div>
139
- <div>Written in English</div>
140
- <div>Under Creative Commons License</div>
141
- </>
142
- </CardEdition>
143
- );
144
-
145
- const cardWithNoContent = (
146
- <CardEdition
147
- id="card#1"
148
- className="edition-card"
149
- image={<Image src="https://placeimg.com/300/400/arch" alt={""} />}
150
- heading={
151
- <Heading
152
- level={HeadingLevels.Two}
153
- id="editioncardheading1"
154
- url="#edition-link"
155
- text={"2004 Edition"}
156
- />
157
- }
158
- ctas={
159
- <div className="edition-card__ctas">
160
- <Link type={LinkTypes.Button} href="blah">
161
- Read Online
162
- </Link>
163
- <div className="edition-card__download">
164
- <Link href="#url" type={LinkTypes.Action}>
165
- <Icon
166
- name={IconNames.Download}
167
- // blockName="more-link"
168
- align={IconAlign.Left}
169
- iconRotation={IconRotationTypes.Rotate0}
170
- />
171
- Download
172
- </Link>
173
- </div>
174
- </div>
175
- }
176
- ></CardEdition>
177
- );
178
-
179
- const cardWithNoImage = (
180
- <CardEdition
181
- id="card#1"
182
- className="edition-card"
183
- heading={
184
- <Heading
185
- level={HeadingLevels.Two}
186
- id="editioncardheading1"
187
- url="#edition-link"
188
- text={"2004 Edition"}
189
- />
190
- }
191
- ctas={
192
- <div className="edition-card__ctas">
193
- <Link type={LinkTypes.Button} href="blah">
194
- Read Online
195
- </Link>
196
- <div className="edition-card__download">
197
- <Link href="#url" type={LinkTypes.Action}>
198
- <Icon
199
- name={IconNames.Download}
200
- align={IconAlign.Left}
201
- iconRotation={IconRotationTypes.Rotate0}
202
- />
203
- Download
204
- </Link>
205
- </div>
206
- </div>
207
- }
208
- >
209
- middle column content
210
- </CardEdition>
211
- );
212
-
213
- const cardWithNoHeader = (
214
- <CardEdition
215
- id="card#1"
216
- className="edition-card"
217
- image={<Image src="https://placeimg.com/300/400/arch" alt={""} />}
218
- ctas={
219
- <div className="edition-card__ctas">
220
- <Link type={LinkTypes.Button} href="blah">
221
- Read Online
222
- </Link>
223
- <div className="edition-card__download">
224
- <Link href="#url" type={LinkTypes.Action}>
225
- <Icon
226
- name={IconNames.Download}
227
- align={IconAlign.Left}
228
- iconRotation={IconRotationTypes.Rotate0}
229
- />
230
- Download
231
- </Link>
232
- </div>
233
- </div>
234
- }
235
- footer={<>Optional footer</>}
236
- >
237
- middle column content
238
- </CardEdition>
239
- );
240
-
241
- const cardWithNoFooter = (
242
- <CardEdition
243
- id="card#1"
244
- className="edition-card"
245
- heading={
246
- <Heading
247
- level={HeadingLevels.Two}
248
- id="editioncardheading1"
249
- url="#edition-link"
250
- text={"2004 Edition"}
251
- />
252
- }
253
- image={<Image src="https://placeimg.com/300/400/arch" alt={""} />}
254
- ctas={
255
- <div className="edition-card__ctas">
256
- <Link type={LinkTypes.Button} href="blah">
257
- Read Online
258
- </Link>
259
- <div className="edition-card__download">
260
- <Link href="#url" type={LinkTypes.Action}>
261
- <Icon
262
- name={IconNames.Download}
263
- align={IconAlign.Left}
264
- iconRotation={IconRotationTypes.Rotate0}
265
- />
266
- Download
267
- </Link>
268
- </div>
269
- </div>
270
- }
271
- >
272
- middle column content
273
- </CardEdition>
274
- );
275
-
276
- it("Generates a Card with a header, footer, image, middle content, and CTAs", () => {
277
- const card = render(regularCard);
278
- expect(
279
- card.container.querySelector(".card-edition__heading")
280
- ).toBeInTheDocument();
281
- expect(
282
- card.container.querySelector(".card-edition__image")
283
- ).toBeInTheDocument();
284
- expect(
285
- card.container.querySelector(".card-edition__content")
286
- ).toBeInTheDocument();
287
- expect(
288
- card.container.querySelector(".card-edition__ctas")
289
- ).toBeInTheDocument();
290
- expect(
291
- card.container.querySelector(".card-edition__footer")
292
- ).toBeInTheDocument();
293
- });
294
-
295
- it("Generates a Card with variable data", () => {
296
- const card = render(cardWithExtendedStyles);
297
- expect(card.container.querySelector("h2")).toBeInTheDocument();
298
- expect(
299
- screen.getByText("Published in New York by Random House")
300
- ).toBeInTheDocument();
301
- expect(screen.getByText("Written in English")).toBeInTheDocument();
302
- expect(
303
- screen.getByText(
304
- "License: Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International"
305
- )
306
- ).toBeInTheDocument();
307
- // expect(screen.findAllByRole("link")).toHaveLength(2);
308
- });
309
-
310
- it("Generates a card without a CTA block if one isn't provided", () => {
311
- const card = render(cardWithNoCTAs);
312
- expect(
313
- card.container.querySelector(".card-edition__heading")
314
- ).toBeInTheDocument();
315
- expect(
316
- card.container.querySelector(".card-edition__image")
317
- ).toBeInTheDocument();
318
- expect(
319
- card.container.querySelector(".card-edition__content")
320
- ).toBeInTheDocument();
321
- expect(
322
- card.container.querySelector(".card-edition__ctas")
323
- ).not.toBeInTheDocument();
324
- });
325
-
326
- it("Generates a card without a content block if one isn't provided", () => {
327
- const card = render(cardWithNoContent);
328
- expect(
329
- card.container.querySelector(".card-edition__heading")
330
- ).toBeInTheDocument();
331
- expect(
332
- card.container.querySelector(".card-edition__image")
333
- ).toBeInTheDocument();
334
- expect(
335
- card.container.querySelector(".card-edition__content")
336
- ).not.toBeInTheDocument();
337
- expect(
338
- card.container.querySelector(".card-edition__ctas")
339
- ).toBeInTheDocument();
340
- });
341
-
342
- it("Generates a card without an image block if no image is provided", () => {
343
- const card = render(cardWithNoImage);
344
- expect(
345
- card.container.querySelector(".card-edition__heading")
346
- ).toBeInTheDocument();
347
- expect(
348
- card.container.querySelector(".card-edition__image")
349
- ).not.toBeInTheDocument();
350
- expect(
351
- card.container.querySelector(".card-edition__content")
352
- ).toBeInTheDocument();
353
- expect(
354
- card.container.querySelector(".card-edition__ctas")
355
- ).toBeInTheDocument();
356
- });
357
-
358
- it("Generates a card without a header block if one isn't provided", () => {
359
- const card = render(cardWithNoHeader);
360
- expect(
361
- card.container.querySelector(".card-edition__heading")
362
- ).not.toBeInTheDocument();
363
- expect(
364
- card.container.querySelector(".card-edition__image")
365
- ).toBeInTheDocument();
366
- expect(
367
- card.container.querySelector(".card-edition__content")
368
- ).toBeInTheDocument();
369
- expect(
370
- card.container.querySelector(".card-edition__ctas")
371
- ).toBeInTheDocument();
372
- expect(
373
- card.container.querySelector(".card-edition__footer")
374
- ).toBeInTheDocument();
375
- });
376
-
377
- it("Generates a card without a footer block if one isn't provided", () => {
378
- const card = render(cardWithNoFooter);
379
- expect(
380
- card.container.querySelector(".card-edition__heading")
381
- ).toBeInTheDocument();
382
- expect(
383
- card.container.querySelector(".card-edition__image")
384
- ).toBeInTheDocument();
385
- expect(
386
- card.container.querySelector(".card-edition__content")
387
- ).toBeInTheDocument();
388
- expect(
389
- card.container.querySelector(".card-edition__ctas")
390
- ).toBeInTheDocument();
391
- expect(
392
- card.container.querySelector(".card-edition__footer")
393
- ).not.toBeInTheDocument();
394
- });
395
- });
@@ -1,60 +0,0 @@
1
- import * as React from "react";
2
- import bem from "../../utils/bem";
3
-
4
- interface CardEditionProps {
5
- /** ClassName that appears in addition to "card" */
6
- className?: string;
7
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
8
- blockName?: string;
9
- /** Calls to Action for the card, such as "download" on a card for a book */
10
- ctas?: React.ReactNode;
11
- /** Footer that appears within the card but below the three columns within it */
12
- footer?: React.ReactNode;
13
- /** Heading that appears within the card but above the three columns within it */
14
- heading?: React.ReactNode;
15
- /** ID that other components can cross reference for accessibility purposes */
16
- id?: string;
17
- /** First column within the card */
18
- image?: React.ReactNode;
19
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
20
- modifiers?: string[];
21
- }
22
-
23
- export default function CardEdition(
24
- props: React.PropsWithChildren<CardEditionProps>
25
- ) {
26
- const {
27
- blockName,
28
- children,
29
- className,
30
- ctas,
31
- footer,
32
- heading,
33
- id,
34
- image,
35
- modifiers = [],
36
- } = props;
37
- const baseClass = "card-edition";
38
-
39
- return (
40
- <div className={bem(baseClass, modifiers, blockName, [className])} id={id}>
41
- {heading && (
42
- <div className={bem("heading", modifiers, baseClass)}>{heading}</div>
43
- )}
44
- <div className={bem("columns", modifiers, baseClass)}>
45
- {image && (
46
- <div className={bem("image", modifiers, baseClass)}>{image}</div>
47
- )}
48
- {children && (
49
- <div className={bem("content", modifiers, baseClass)}>{children}</div>
50
- )}
51
- {ctas && (
52
- <div className={bem("ctas", modifiers, baseClass)}>{ctas}</div>
53
- )}
54
- </div>
55
- {footer && (
56
- <div className={bem("footer", modifiers, baseClass)}>{footer}</div>
57
- )}
58
- </div>
59
- );
60
- }
@@ -1,137 +0,0 @@
1
- .card-edition {
2
- margin-bottom: var(--nypl-space-s);
3
-
4
- align-items: flex-start;
5
- border: 1px solid var(--nypl-colors-ui-gray-light-cool);
6
- border-radius: 5px;
7
- display: flex;
8
- flex-flow: column wrap;
9
- padding: var(--nypl-space-s) var(--nypl-space-l);
10
-
11
- &__heading,
12
- &__footer {
13
- flex: 100%;
14
- }
15
-
16
- &__columns {
17
- display: flex;
18
- flex-flow: column wrap;
19
- justify-content: space-between;
20
- width: 100%;
21
-
22
- @include breakpoint($nypl-breakpoint-medium) {
23
- flex-flow: row wrap;
24
- }
25
- }
26
-
27
- &__columns + &__footer {
28
- margin-top: var(--nypl-space-xs);
29
- }
30
-
31
- &__image {
32
- margin-bottom: var(--nypl-space-s);
33
-
34
- align-items: center;
35
- background-color: var(--nypl-colors-ui-gray-x-light-cool);
36
- display: flex;
37
- flex: 0 0 150px;
38
- height: 150px;
39
- justify-content: center;
40
-
41
- .image {
42
- max-height: 100%;
43
- max-width: 100%;
44
- }
45
-
46
- @include breakpoint($nypl-breakpoint-medium) {
47
- margin-bottom: 0;
48
- margin-right: var(--nypl-space-s);
49
-
50
- align-self: center;
51
- width: 150px;
52
- }
53
- }
54
-
55
- &__content {
56
- margin-bottom: var(--nypl-space-s);
57
-
58
- flex: 1 1;
59
-
60
- @include breakpoint($nypl-breakpoint-medium) {
61
- margin-right: var(--nypl-space-s);
62
- margin-bottom: 0;
63
- }
64
- }
65
-
66
- &__ctas {
67
- flex: 0 1 20%;
68
-
69
- @include breakpoint($nypl-breakpoint-medium) {
70
- margin-right: var(--nypl-space-s);
71
- }
72
- }
73
-
74
- &__content + &__ctas {
75
- margin-right: var(--nypl-space-s);
76
- }
77
- }
78
-
79
- // Stories-only styles
80
- .sb-show-main {
81
- .var-docs {
82
- padding: 0 0 var(--nypl-space-s) 0;
83
- }
84
-
85
- .example-card-edition {
86
- .card__content {
87
- > * {
88
- margin-bottom: var(--nypl-space-xxs);
89
- }
90
- }
91
-
92
- .book__callout {
93
- font-size: var(--nypl-fontSizes-1);
94
- font-weight: 400;
95
- line-height: 1.15;
96
- margin: 0 0 0.5em;
97
- width: auto;
98
-
99
- &__link {
100
- color: inherit;
101
-
102
- &:hover {
103
- color: inherit;
104
- }
105
- }
106
-
107
- /* stylelint-disable */
108
- font-style: italic;
109
- font-weight: 300;
110
- /* stylelint-enable */
111
- }
112
-
113
- .card__ctas {
114
- align-items: flex-end;
115
- display: flex;
116
- flex-flow: row wrap;
117
- justify-content: center;
118
- text-align: center;
119
-
120
- .button {
121
- width: 100%;
122
- }
123
-
124
- > * {
125
- margin-bottom: var(--nypl-space-xxs);
126
- }
127
- }
128
-
129
- .book__filetype {
130
- margin-bottom: var(--nypl-space-s);
131
- }
132
-
133
- .book__description {
134
- font-style: italic;
135
- }
136
- }
137
- }