@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,17 +1,27 @@
1
+ import { action } from "@storybook/addon-actions";
1
2
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
3
  ArgsTable,
4
+ Canvas,
6
5
  Description,
7
- } from "@storybook/addon-docs/blocks";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
10
 
10
- import DSProvider from "../../theme/provider";
11
11
  import VideoPlayer from "./VideoPlayer";
12
- import { VideoPlayerTypes } from "./VideoPlayerTypes";
13
- import { action } from "@storybook/addon-actions";
12
+ import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
14
13
  import { getCategory } from "../../utils/componentCategories";
14
+ import DSProvider from "../../theme/provider";
15
+ import { getStorybookEnumValues } from "../../utils/utils";
16
+
17
+ export const ratiosEnumValues = getStorybookEnumValues(
18
+ VideoPlayerAspectRatios,
19
+ "VideoPlayerAspectRatios"
20
+ );
21
+ export const typesEnumValues = getStorybookEnumValues(
22
+ VideoPlayerTypes,
23
+ "VideoPlayerTypes"
24
+ );
15
25
 
16
26
  <Meta
17
27
  title={getCategory("VideoPlayer")}
@@ -20,15 +30,27 @@ import { getCategory } from "../../utils/componentCategories";
20
30
  parameters={{
21
31
  design: {
22
32
  type: "figma",
23
- url:
24
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10968%3A3680",
33
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10968%3A3680",
25
34
  },
26
35
  jest: ["VideoPlayer.test.tsx"],
27
36
  }}
28
37
  argTypes={{
29
- attributes: { table: { disable: true } },
30
- className: { table: { disable: true } },
31
- modifiers: { table: { disable: true } },
38
+ aspectRatio: {
39
+ control: { type: "select" },
40
+ table: {
41
+ defaultValue: { summary: "VideoPlayerAspectRatios.SixteenByNine" },
42
+ },
43
+ options: ratiosEnumValues.options,
44
+ },
45
+ className: { control: false },
46
+ id: { control: false },
47
+ showHelperInvalidText: {
48
+ table: { defaultValue: { summary: true } },
49
+ },
50
+ videoType: {
51
+ control: { type: "select" },
52
+ options: typesEnumValues.options,
53
+ },
32
54
  }}
33
55
  />
34
56
 
@@ -37,7 +59,7 @@ import { getCategory } from "../../utils/componentCategories";
37
59
  | Component Version | DS Version |
38
60
  | ----------------- | ---------- |
39
61
  | Added | `0.23.2` |
40
- | Latest | `0.25.8` |
62
+ | Latest | `0.25.9` |
41
63
 
42
64
  <Description of={VideoPlayer} />
43
65
 
@@ -51,15 +73,29 @@ The `aspectRatio` prop is used to control the sizing of the space allotted for t
51
73
  <Story
52
74
  name="VideoPlayer"
53
75
  args={{
76
+ aspectRatio: "VideoPlayerAspectRatios.SixteenByNine",
77
+ className: undefined,
54
78
  descriptionText:
55
79
  "Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.",
56
80
  embedCode: `<iframe src="https://player.vimeo.com/video/421404144?h=5467db7edd" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>`,
57
81
  headingText: "NYPL Video",
58
82
  helperText:
59
83
  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.",
84
+ id: "videoPlayer-id",
85
+ iframeTitle: undefined,
86
+ showHelperInvalidText: true,
87
+ videoId: undefined,
88
+ videoType: undefined,
60
89
  }}
61
90
  >
62
- {(args) => <VideoPlayer {...args} />}
91
+ {(args) => (
92
+ <VideoPlayer
93
+ {...args}
94
+ aspectRatio={ratiosEnumValues.getValue(args.aspectRatio)}
95
+ embedCode={args.embedCode}
96
+ videoType={args.videoType && typesEnumValues.getValue(args.videoType)}
97
+ />
98
+ )}
63
99
  </Story>
64
100
  </Canvas>
65
101
 
@@ -127,3 +163,17 @@ If the necessary props are not passed to the `VideoPlayer` component, the compon
127
163
  />
128
164
  </DSProvider>
129
165
  </Canvas>
166
+
167
+ ## HTML in Helper Text
168
+
169
+ It's possible to include HTML in the `helperText` prop.
170
+
171
+ <Canvas>
172
+ <DSProvider>
173
+ <VideoPlayer
174
+ helperText="This helper text <b>contains HTML</b>."
175
+ videoId="474719268"
176
+ videoType={VideoPlayerTypes.Vimeo}
177
+ />
178
+ </DSProvider>
179
+ </Canvas>
@@ -1,30 +1,40 @@
1
- import * as React from "react";
2
1
  import { Box, useMultiStyleConfig } from "@chakra-ui/react";
2
+ import * as React from "react";
3
+
3
4
  import ComponentWrapper from "../ComponentWrapper/ComponentWrapper";
5
+ import { HelperErrorTextType } from "../HelperErrorText/HelperErrorText";
6
+ import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
4
7
  import generateUUID from "../../helpers/generateUUID";
5
8
  import { getVariant } from "../../utils/utils";
6
- import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
7
9
 
8
10
  export interface VideoPlayerProps {
9
- /** Optional aspect ratio prop to control the sizing of the video player; if omitted, the video player defaults to `sixteen-by-nine` */
11
+ /** Optional aspect ratio prop to control the sizing of the video player; if
12
+ * omitted, the video player defaults to `sixteen-by-nine` */
10
13
  aspectRatio?: VideoPlayerAspectRatios;
11
14
  /** Optional className you can add in addition to `video-player` */
12
15
  className?: string;
13
16
  /** Optional string to set the text for a video description */
14
17
  descriptionText?: string;
15
- /** Optional string to set a code snippet provided by YouTube or Vimeo; the `videoPlayer` component will accept the `embedCode` prop or the `videoId` and `videoType` props */
18
+ /** Optional string to set a code snippet provided by YouTube or Vimeo; the
19
+ * `videoPlayer` component will accept the `embedCode` prop or the `videoId`
20
+ * and `videoType` props */
16
21
  embedCode?: string;
17
22
  /** Optional string to set the text for a `Heading` component */
18
23
  headingText?: string;
19
24
  /** Optional string to set the text for a `HelperErrorText` component */
20
- helperText?: string;
25
+ helperText?: HelperErrorTextType;
21
26
  /** ID that other components can cross reference for accessibility purposes */
22
27
  id?: string;
23
- /** Optional title to be added to the `<iframe>` element for improved accessibility; this title should describe in a few words the content of the video; if omitted, a generic title will be added; if a `title` attribute is already present in the `embedCode` prop, this prop will be ignored */
28
+ /** Optional title to be added to the `<iframe>` element for improved
29
+ * accessibility; this title should describe in a few words the content of
30
+ * the video; if omitted, a generic title will be added; if a `title`
31
+ * attribute is already present in the `embedCode` prop, this prop will be
32
+ * ignored */
24
33
  iframeTitle?: string;
25
34
  /** Offers the ability to hide the helper/invalid text. */
26
35
  showHelperInvalidText?: boolean;
27
- /** Required YouTube or Vimeo video ID. This value can be pulled from a video's YouTube or Vimeo URL. */
36
+ /** Required YouTube or Vimeo video ID. This value can be pulled from a
37
+ * video's YouTube or Vimeo URL. */
28
38
  videoId?: string;
29
39
  /** Required. Used to specify which video service is being used. */
30
40
  videoType?: VideoPlayerTypes;
@@ -64,11 +64,14 @@ exports[`VideoPlayer renders the UI snapshot correctly 2`] = `
64
64
  aria-atomic={true}
65
65
  aria-live="off"
66
66
  className=" css-0"
67
+ dangerouslySetInnerHTML={
68
+ Object {
69
+ "__html": "VideoPlayer helper test.",
70
+ }
71
+ }
67
72
  data-isinvalid={false}
68
73
  id="video-player-with-text-componentWrapper-helperText"
69
- >
70
- VideoPlayer helper test.
71
- </div>
74
+ />
72
75
  </div>
73
76
  </div>
74
77
  </div>
@@ -112,11 +115,14 @@ exports[`VideoPlayer renders the UI snapshot correctly 3`] = `
112
115
  aria-atomic={true}
113
116
  aria-live="off"
114
117
  className=" css-0"
118
+ dangerouslySetInnerHTML={
119
+ Object {
120
+ "__html": "VideoPlayer helper test.",
121
+ }
122
+ }
115
123
  data-isinvalid={false}
116
124
  id="video-player-with-text-componentWrapper-helperText"
117
- >
118
- VideoPlayer helper test.
119
- </div>
125
+ />
120
126
  </div>
121
127
  </div>
122
128
  </div>
@@ -1,4 +1,4 @@
1
- import { Meta } from "@storybook/addon-docs/blocks";
1
+ import { Meta } from "@storybook/addon-docs";
2
2
 
3
3
  <Meta title="Chakra UI" />
4
4
 
@@ -141,9 +141,7 @@ function Tabs(props) {
141
141
 
142
142
  #### Patterns
143
143
 
144
- The NYPL DS uses the [CSS BEM](http://getbem.com/introduction/) pattern to
145
- structure and write CSS, but it is slowly being phased out. We are moving away
146
- from this and re-writing SCSS classes into Javascript objects that work with
144
+ We are writing CSS style object rules into Javascript objects that work with
147
145
  Chakra's theme. Instead of creating a variant for a component with a class name,
148
146
  now different props or internal logic are used to get the appropriate variant.
149
147
  Internally, the right variant will be mapped to a Chakra theme variant that will
@@ -172,10 +170,6 @@ to test them ourselves.
172
170
 
173
171
  ## Styling
174
172
 
175
- As mentioned in the [Components composed with Chakra](#components-composed-with-chakra)
176
- section, we are moving away from using the BEM structure to using Javascript
177
- objects to extend Chakra's theme.
178
-
179
173
  The NYPL DS' theme file can be found at `src/theme/index.ts`. This creates a new
180
174
  theme that extends Chakra's theme and is set in the `DSProvider` component. Note
181
175
  that the example below is the general structure of the `theme` object but the DS
@@ -183,6 +177,9 @@ that the example below is the general structure of the `theme` object but the DS
183
177
  only work and add new object values in the `components` obejct key for new
184
178
  components and their theme or variants.
185
179
 
180
+ _Note_: There are some SCSS files used to style third party plugins and to
181
+ generate SCSS mixins.
182
+
186
183
  ```ts
187
184
  const theme = extendTheme({
188
185
  styles: { ... },
@@ -1,9 +1,9 @@
1
- import { Meta } from "@storybook/addon-docs/blocks";
1
+ import { Meta } from "@storybook/addon-docs";
2
+
2
3
  import Hero from "../components/Hero/Hero.tsx";
3
4
  import { HeroTypes } from "../components/Hero/HeroTypes.tsx";
4
5
  import Heading from "../components/Heading/Heading.tsx";
5
6
  import Image from "../components/Image/Image.tsx";
6
- import getCSSVariable from "../helpers/getCSSVariable";
7
7
  import DSProvider from "../theme/provider";
8
8
 
9
9
  <Meta title="Introduction" />
package/src/index.ts CHANGED
@@ -7,9 +7,11 @@ export {
7
7
  ButtonGroup,
8
8
  Center,
9
9
  Circle,
10
+ Flex,
10
11
  Grid,
11
12
  GridItem,
12
13
  HStack,
14
+ Spacer,
13
15
  Square,
14
16
  Stack,
15
17
  VStack,
@@ -26,16 +28,18 @@ export {
26
28
  CardHeading,
27
29
  } from "./components/Card/Card";
28
30
  export { CardLayouts } from "./components/Card/CardTypes";
29
- export { default as CardEdition } from "./components/CardEdition/CardEdition";
30
31
  export { default as Checkbox } from "./components/Checkbox/Checkbox";
31
32
  export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
32
33
  export { CheckboxGroupLayoutTypes } from "./components/CheckboxGroup/CheckboxGroupLayoutTypes";
33
- export { default as DatePicker } from "./components/DatePicker/DatePicker";
34
+ export {
35
+ default as DatePicker,
36
+ FullDateType,
37
+ } from "./components/DatePicker/DatePicker";
34
38
  export { DatePickerTypes } from "./components/DatePicker/DatePickerTypes";
35
39
  export { default as DSProvider } from "./theme/provider";
36
40
  export { default as Fieldset } from "./components/Fieldset/Fieldset";
37
41
  export { default as Form, FormField, FormRow } from "./components/Form/Form";
38
- export { FormSpacing } from "./components/Form/FormTypes";
42
+ export { FormGaps } from "./components/Form/FormTypes";
39
43
  export { GridGaps } from "./components/Grid/GridTypes";
40
44
  export { default as Heading } from "./components/Heading/Heading";
41
45
  export {
@@ -54,7 +58,6 @@ export {
54
58
  IconRotationTypes,
55
59
  IconSizes,
56
60
  IconTypes,
57
- LogoNames,
58
61
  } from "./components/Icons/IconTypes";
59
62
  export { default as Image } from "./components/Image/Image";
60
63
  export {
@@ -62,13 +65,13 @@ export {
62
65
  ImageSizes,
63
66
  ImageTypes,
64
67
  } from "./components/Image/ImageTypes";
65
- export { default as Input } from "./components/Input/Input";
66
- export { InputTypes } from "./components/Input/InputTypes";
67
68
  export { default as Label } from "./components/Label/Label";
68
69
  export { default as Link } from "./components/Link/Link";
69
70
  export { LinkTypes } from "./components/Link/LinkTypes";
70
71
  export { default as List } from "./components/List/List";
71
72
  export { ListTypes } from "./components/List/ListTypes";
73
+ export { default as Logo } from "./components/Logo/Logo";
74
+ export { LogoColors, LogoNames, LogoSizes } from "./components/Logo/LogoTypes";
72
75
  export { default as Modal } from "./components/Modal/Modal";
73
76
  export { default as Notification } from "./components/Notification/Notification";
74
77
  export { NotificationTypes } from "./components/Notification/NotificationTypes";
@@ -92,6 +95,8 @@ export {
92
95
  export { default as Slider } from "./components/Slider/Slider";
93
96
  export { default as StatusBadge } from "./components/StatusBadge/StatusBadge";
94
97
  export { StatusBadgeTypes } from "./components/StatusBadge/StatusBadgeTypes";
98
+ export { default as StructuredContent } from "./components/StructuredContent/StructuredContent";
99
+ export { StructuredContentImagePosition } from "./components/StructuredContent/StructuredContentTypes";
95
100
  export {
96
101
  Tabs,
97
102
  TabList,
@@ -102,6 +107,7 @@ export {
102
107
  export {
103
108
  TemplateAppContainer,
104
109
  Template,
110
+ TemplateAboveHeader,
105
111
  TemplateHeader,
106
112
  TemplateBreakout,
107
113
  TemplateContent,
@@ -125,3 +131,4 @@ export {
125
131
  VideoPlayerAspectRatios,
126
132
  VideoPlayerTypes,
127
133
  } from "./components/VideoPlayer/VideoPlayerTypes";
134
+ export { default as Table } from "./components/Table/Table";
@@ -5,7 +5,7 @@
5
5
  font-family: var(--nypl-fonts-body);
6
6
 
7
7
  // Sets up the base font-size, 1rem, for the system
8
- font-size: 16px;
8
+ font-size: var(--nypl-fontSizes-text-default);
9
9
  font-weight: 300;
10
10
  line-height: 1.5;
11
11
 
@@ -6,13 +6,6 @@
6
6
  margin-bottom: var(--nypl-space-xl);
7
7
  }
8
8
 
9
- &--full {
10
- margin-bottom: var(--nypl-space-xxl);
11
- @include breakpoint($nypl-breakpoint-large) {
12
- margin-bottom: var(--nypl-space-xxxl);
13
- }
14
- }
15
-
16
9
  padding: var(--nypl-space-s);
17
10
 
18
11
  align-items: center;
@@ -25,6 +18,13 @@
25
18
  padding: 4rem 1rem;
26
19
  width: 100%;
27
20
 
21
+ &--full {
22
+ margin-bottom: var(--nypl-space-xxl);
23
+ @include breakpoint($nypl-breakpoint-large) {
24
+ margin-bottom: var(--nypl-space-xxxl);
25
+ }
26
+ }
27
+
28
28
  &--short {
29
29
  padding: 1rem 1rem;
30
30
  }
package/src/styles.scss CHANGED
@@ -20,11 +20,7 @@
20
20
  @import "./styles/space/_space-inset";
21
21
  @import "./styles/space/_space-stack";
22
22
 
23
- // Legacy/deprecated components:
24
- @import "./components/CardEdition/_CardEdition.scss";
25
- @import "./components/Input/_Input.scss";
26
-
27
23
  // Components.
28
- @import "./components/Autosuggest/_Autosuggest.scss"; // Depends on _Input.scss
24
+ @import "./components/Autosuggest/_Autosuggest.scss";
29
25
  @import "./components/DatePicker/_DatePicker.scss";
30
26
  @import "./components/Modal/_Modal.scss";
@@ -25,8 +25,8 @@ const Breadcrumb = {
25
25
  baseStyle: {
26
26
  bg: "ui.black",
27
27
  color: "ui.white",
28
- fontSize: "-1",
29
- fontWeight: "regular",
28
+ fontSize: "breadcrumbs.default",
29
+ fontWeight: "breadcrumbs.default",
30
30
  paddingBottom: "xs",
31
31
  paddingTop: "xs",
32
32
  ol: {
@@ -43,7 +43,7 @@ const Breadcrumb = {
43
43
  },
44
44
  },
45
45
  "li:last-child": {
46
- fontWeight: { base: "regular", md: "bold" },
46
+ fontWeight: { base: "breadcrumbs.default", md: "breadcrumbs.lastChild" },
47
47
  ".chakra-breadcrumb__link": {
48
48
  _hover: {
49
49
  cursor: "default",
@@ -67,7 +67,7 @@ const Breadcrumb = {
67
67
  marginInlineStart: "xxs",
68
68
  },
69
69
  },
70
- "li:nth-last-child(2)": {
70
+ "li:nth-last-of-type(2)": {
71
71
  display: "inline-block",
72
72
  span: {
73
73
  display: { base: "none", md: "inline" },
@@ -10,7 +10,7 @@ const baseStyle = {
10
10
  px: "s",
11
11
  textDecoration: "none",
12
12
  wordWrap: "normal",
13
- fontWeight: "regular",
13
+ fontWeight: "button.default",
14
14
  svg: {
15
15
  fill: "currentColor",
16
16
  marginTop: "xxs",
@@ -34,14 +34,14 @@ const primary = {
34
34
  bg: "ui.link.primary",
35
35
  minWidth: "none",
36
36
  height: "none",
37
- fontSize: "-1",
37
+ fontSize: "button.default",
38
38
  };
39
39
  const secondary = {
40
40
  bg: "ui.white",
41
41
  border: "1px solid",
42
42
  borderColor: "ui.gray.light-cool",
43
43
  color: "inherit",
44
- fontSize: "-1",
44
+ fontSize: "button.default",
45
45
  _hover: {
46
46
  bg: "ui.gray.xx-light-cool",
47
47
  },
@@ -68,7 +68,7 @@ const pill = {
68
68
  py: "xs",
69
69
  paddingInlineStart: "m",
70
70
  paddingInlineEnd: "m",
71
- fontSize: "-1",
71
+ fontSize: "button.default",
72
72
  _hover: {
73
73
  bg: "ui.gray.xx-light-cool",
74
74
  },
@@ -86,7 +86,7 @@ const iconOnly = {
86
86
  };
87
87
  const callout = {
88
88
  bg: "brand.primary",
89
- fontSize: "-1",
89
+ fontSize: "button.default",
90
90
  _hover: {
91
91
  bg: "brand.secondary",
92
92
  },
@@ -94,12 +94,6 @@ const callout = {
94
94
  bg: "brand.secondary",
95
95
  },
96
96
  };
97
- const searchBar = {
98
- ...primary,
99
- borderLeftRadius: "none",
100
- borderRightRadius: { base: "none", md: "sm" },
101
- lineHeight: "1.75",
102
- };
103
97
  const noBrand = {
104
98
  ...primary,
105
99
  bg: "ui.black",
@@ -119,7 +113,6 @@ const Button = {
119
113
  pill,
120
114
  iconOnly,
121
115
  callout,
122
- searchBar,
123
116
  noBrand,
124
117
  },
125
118
  // Default values
@@ -34,7 +34,8 @@ const getBodyPaddingStyles = ({ border, hasImage, imageAtEnd, isRow }) => {
34
34
  const Card = {
35
35
  parts: ["body", "heading"],
36
36
  baseStyle: (props) => {
37
- const { border, center, hasImage, imageAtEnd, layout } = props;
37
+ const { border, center, hasImage, imageAtEnd, layout, mainActionLink } =
38
+ props;
38
39
  const isRow = layout === "row";
39
40
  const layoutStyles = isRow
40
41
  ? {
@@ -74,6 +75,7 @@ const Card = {
74
75
  textAlign: center ? "center" : null,
75
76
  heading: {
76
77
  marginBottom: "xs",
78
+ a: mainActionLink ? { color: "ui.black" } : null,
77
79
  },
78
80
  body: {
79
81
  display: { md: "block" },
@@ -133,7 +135,7 @@ const CardContent = {
133
135
  };
134
136
 
135
137
  const CardImage = {
136
- baseStyle: ({ center, imageSize, imageAtEnd, layout }) => {
138
+ baseStyle: ({ center, imageAtEnd, imageSize, layout }) => {
137
139
  // These sizes are only for the "row" layout.
138
140
  const size = imageSizes[imageSize] || {};
139
141
  const layoutStyles =
@@ -163,6 +165,7 @@ const CardImage = {
163
165
  order: "2",
164
166
  }
165
167
  : {};
168
+
166
169
  return {
167
170
  ...imageAtEndStyles,
168
171
  ...layoutStyles,
@@ -94,7 +94,7 @@ const sizes = {
94
94
  borderRadius: "sm",
95
95
  },
96
96
  // Controls the font-size of the label only.
97
- label: { fontSize: "md" },
97
+ label: { fontSize: "text.default" },
98
98
  },
99
99
  };
100
100
 
@@ -0,0 +1,63 @@
1
+ const baseStyle = ({
2
+ columnHeadersTextColor,
3
+ showRowDividers,
4
+ useRowHeaders,
5
+ }) => ({
6
+ // Headers `th` can be rendered as the first cell in every row through the
7
+ // `useRowHeaders`. Whereas the header `th` in the `thead` can be rendered
8
+ // with a custom color, the row header `th` in the `tbody` should always
9
+ // have text color black.
10
+ tbody: {
11
+ th: {
12
+ color: "var(--nypl-colors-ui-black)",
13
+ },
14
+ },
15
+ th: {
16
+ border: showRowDividers ? undefined : "none",
17
+ borderBottom: showRowDividers ? undefined : "0px",
18
+ color: columnHeadersTextColor ? columnHeadersTextColor : "ui.black",
19
+ fontSize: "0",
20
+ fontWeight: "bold",
21
+ letterSpacing: "0",
22
+ paddingLeft: 0,
23
+ paddingRight: "m",
24
+ textTransform: "capitalize",
25
+ _first: {
26
+ paddingLeft: showRowDividers ? "m" : null,
27
+ },
28
+ _last: {
29
+ paddingRight: showRowDividers ? "m" : "0",
30
+ },
31
+ },
32
+ td: {
33
+ border: showRowDividers ? undefined : "none",
34
+ borderBottom: showRowDividers ? undefined : "0px",
35
+ letterSpacing: "0",
36
+ paddingLeft: 0,
37
+ paddingRight: "m",
38
+ _first: {
39
+ paddingLeft: showRowDividers && !useRowHeaders ? "m" : null,
40
+ },
41
+ _last: {
42
+ paddingRight: showRowDividers ? "m" : "0",
43
+ },
44
+ },
45
+ caption: {
46
+ captionSide: "top",
47
+ color: "ui.black",
48
+ fontSize: "heading.secondary",
49
+ fontWeight: "heading.secondary",
50
+ marginBottom: "s",
51
+ marginLeft: "0",
52
+ marginRight: "0",
53
+ marginTop: "0",
54
+ padding: "0",
55
+ textAlign: "left",
56
+ },
57
+ });
58
+
59
+ const CustomTable = {
60
+ baseStyle,
61
+ };
62
+
63
+ export default CustomTable;
@@ -7,7 +7,7 @@ const DatePicker = {
7
7
  baseStyle: {
8
8
  subLabels: {
9
9
  label: {
10
- fontSize: "12px",
10
+ fontSize: "label.secondary",
11
11
  marginBottom: "0",
12
12
  },
13
13
  },
@@ -13,14 +13,14 @@ const activeFocus = {
13
13
  };
14
14
  // Used in `Select` and `TextInput`.
15
15
  const helperTextMargin = {
16
- marginTop: "xs",
16
+ marginTop: "xxs",
17
17
  marginBottom: "0",
18
18
  };
19
19
  // Used in `Checkbox` and `Radio`.
20
20
  const checkboxRadioLabelStyles = {
21
21
  userSelect: "none",
22
- fontSize: "0",
23
- fontWeight: "light",
22
+ fontSize: "text.default",
23
+ fontWeight: "text.default",
24
24
  marginBottom: "0",
25
25
  marginLeft: "xs",
26
26
  verticalAlign: "middle",
@@ -52,14 +52,14 @@ const labelLegendText = {
52
52
  alignItems: "baseline",
53
53
  width: "100%",
54
54
  marginBottom: "xs",
55
- fontSize: "14px",
56
- fontWeight: "medium",
55
+ fontSize: "label.default",
56
+ fontWeight: "label.default",
57
57
  display: "flex",
58
58
  justifyContent: "space-between",
59
59
  helper: {
60
60
  marginLeft: "m",
61
- fontWeight: "300",
62
- fontSize: "-1",
61
+ fontSize: "helper.default",
62
+ fontWeight: "helper.default",
63
63
  },
64
64
  };
65
65
  const checkboxRadioGroupStyles = {