@nypl/design-system-react-components 0.25.8 → 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 (250) hide show
  1. package/CHANGELOG.md +45 -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 +3 -2
  10. package/dist/components/Form/Form.d.ts +2 -2
  11. package/dist/components/Heading/Heading.d.ts +7 -3
  12. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  13. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  14. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
  15. package/dist/components/Icons/Icon.d.ts +4 -4
  16. package/dist/components/Icons/IconSvgs.d.ts +0 -21
  17. package/dist/components/Icons/IconTypes.d.ts +0 -23
  18. package/dist/components/Image/Image.d.ts +11 -3
  19. package/dist/components/Logo/Logo.d.ts +28 -0
  20. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  21. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  22. package/dist/components/Modal/Modal.d.ts +0 -4
  23. package/dist/components/Notification/Notification.d.ts +2 -2
  24. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  25. package/dist/components/Radio/Radio.d.ts +6 -5
  26. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
  27. package/dist/components/SearchBar/SearchBar.d.ts +10 -2
  28. package/dist/components/Select/Select.d.ts +3 -2
  29. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  30. package/dist/components/Slider/Slider.d.ts +3 -2
  31. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  32. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  33. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  34. package/dist/components/Table/Table.d.ts +23 -0
  35. package/dist/components/Template/Template.d.ts +8 -3
  36. package/dist/components/Text/Text.d.ts +2 -2
  37. package/dist/components/TextInput/TextInput.d.ts +4 -3
  38. package/dist/components/Toggle/Toggle.d.ts +3 -2
  39. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  40. package/dist/design-system-react-components.cjs.development.js +5630 -5692
  41. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  42. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  43. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  44. package/dist/design-system-react-components.esm.js +4304 -4362
  45. package/dist/design-system-react-components.esm.js.map +1 -1
  46. package/dist/index.d.ts +6 -4
  47. package/dist/styles.css +2 -2
  48. package/dist/theme/components/button.d.ts +0 -12
  49. package/dist/theme/components/card.d.ts +14 -2
  50. package/dist/theme/components/customTable.d.ts +47 -0
  51. package/dist/theme/components/fieldset.d.ts +2 -2
  52. package/dist/theme/components/global.d.ts +1 -1
  53. package/dist/theme/components/heading.d.ts +4 -0
  54. package/dist/theme/components/label.d.ts +1 -1
  55. package/dist/theme/components/link.d.ts +14 -1
  56. package/dist/theme/components/list.d.ts +0 -2
  57. package/dist/theme/components/logo.d.ts +4 -0
  58. package/dist/theme/components/searchBar.d.ts +7 -13
  59. package/dist/theme/components/select.d.ts +1 -0
  60. package/dist/theme/components/structuredContent.d.ts +33 -0
  61. package/dist/theme/components/template.d.ts +10 -10
  62. package/dist/theme/components/textInput.d.ts +2 -0
  63. package/dist/theme/components/toggle.d.ts +8 -5
  64. package/dist/utils/utils.d.ts +10 -0
  65. package/package.json +1 -2
  66. package/src/__tests__/utils/utils.test.ts +23 -1
  67. package/src/components/Accordion/Accordion.stories.mdx +14 -12
  68. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  69. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  70. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  71. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +30 -11
  72. package/src/components/Button/Button.stories.mdx +93 -48
  73. package/src/components/Button/Button.test.tsx +0 -12
  74. package/src/components/Button/Button.tsx +7 -7
  75. package/src/components/Button/ButtonTypes.tsx +0 -1
  76. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  77. package/src/components/Card/Card.stories.mdx +186 -71
  78. package/src/components/Card/Card.test.tsx +45 -22
  79. package/src/components/Card/Card.tsx +17 -5
  80. package/src/components/Card/__snapshots__/Card.test.tsx.snap +8 -2
  81. package/src/components/Chakra/Box.stories.mdx +3 -3
  82. package/src/components/Chakra/Center.stories.mdx +5 -5
  83. package/src/components/Chakra/Grid.stories.mdx +3 -3
  84. package/src/components/Chakra/Stack.stories.mdx +2 -2
  85. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  86. package/src/components/Checkbox/Checkbox.tsx +13 -8
  87. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  88. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  89. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  90. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  91. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  92. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  93. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  94. package/src/components/DatePicker/DatePicker.tsx +10 -6
  95. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +36 -18
  96. package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
  97. package/src/components/Form/Form.stories.mdx +49 -41
  98. package/src/components/Form/Form.tsx +5 -4
  99. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  100. package/src/components/Heading/Heading.stories.mdx +59 -23
  101. package/src/components/Heading/Heading.test.tsx +82 -18
  102. package/src/components/Heading/Heading.tsx +31 -31
  103. package/src/components/Heading/HeadingTypes.tsx +6 -6
  104. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  105. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  106. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  107. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  108. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  109. package/src/components/Hero/Hero.stories.mdx +72 -53
  110. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
  111. package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
  112. package/src/components/Icons/Icon.stories.mdx +77 -76
  113. package/src/components/Icons/Icon.tsx +4 -5
  114. package/src/components/Icons/IconSvgs.tsx +0 -42
  115. package/src/components/Icons/IconTypes.tsx +0 -24
  116. package/src/components/Image/Image.stories.mdx +66 -18
  117. package/src/components/Image/Image.tsx +21 -10
  118. package/src/components/Label/Label.stories.mdx +20 -19
  119. package/src/components/Link/Link.stories.mdx +102 -51
  120. package/src/components/Link/Link.test.tsx +38 -8
  121. package/src/components/Link/Link.tsx +19 -12
  122. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  123. package/src/components/List/List.stories.mdx +36 -24
  124. package/src/components/Logo/Logo.stories.mdx +220 -0
  125. package/src/components/Logo/Logo.test.tsx +98 -0
  126. package/src/components/Logo/Logo.tsx +97 -0
  127. package/src/components/Logo/LogoSvgs.tsx +34 -0
  128. package/src/components/Logo/LogoTypes.tsx +32 -0
  129. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  130. package/src/components/Modal/Modal.stories.mdx +20 -5
  131. package/src/components/Modal/Modal.tsx +2 -8
  132. package/src/components/Notification/Notification.stories.mdx +61 -38
  133. package/src/components/Notification/Notification.tsx +9 -4
  134. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  135. package/src/components/Pagination/Pagination.stories.mdx +17 -6
  136. package/src/components/Pagination/Pagination.tsx +1 -1
  137. package/src/components/Placeholder/Placeholder.tsx +7 -14
  138. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  139. package/src/components/Radio/Radio.stories.mdx +39 -19
  140. package/src/components/Radio/Radio.tsx +13 -9
  141. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  142. package/src/components/RadioGroup/RadioGroup.tsx +15 -11
  143. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
  144. package/src/components/SearchBar/SearchBar.Test.tsx +58 -10
  145. package/src/components/SearchBar/SearchBar.stories.mdx +109 -30
  146. package/src/components/SearchBar/SearchBar.tsx +53 -32
  147. package/src/components/Select/Select.stories.mdx +48 -14
  148. package/src/components/Select/Select.tsx +16 -10
  149. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  150. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  151. package/src/components/Slider/Slider.stories.mdx +72 -22
  152. package/src/components/Slider/Slider.tsx +15 -10
  153. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
  154. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  155. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  156. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  157. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  158. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  159. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  160. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  161. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  162. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  163. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  164. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  165. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  166. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  167. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  168. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  169. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  170. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  171. package/src/components/Table/Table.stories.mdx +66 -0
  172. package/src/components/Table/Table.test.tsx +60 -0
  173. package/src/components/Table/Table.tsx +116 -0
  174. package/src/components/Tabs/Tabs.stories.mdx +19 -13
  175. package/src/components/Tabs/Tabs.test.tsx +1 -1
  176. package/src/components/Template/Template.stories.mdx +56 -47
  177. package/src/components/Template/Template.test.tsx +65 -5
  178. package/src/components/Template/Template.tsx +35 -5
  179. package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
  180. package/src/components/Text/Text.stories.mdx +33 -11
  181. package/src/components/Text/Text.tsx +2 -2
  182. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  183. package/src/components/TextInput/TextInput.test.tsx +96 -0
  184. package/src/components/TextInput/TextInput.tsx +12 -8
  185. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  186. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  187. package/src/components/Toggle/Toggle.tsx +14 -9
  188. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  189. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  190. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  191. package/src/docs/Chakra.stories.mdx +5 -8
  192. package/src/docs/Intro.stories.mdx +2 -2
  193. package/src/index.ts +5 -4
  194. package/src/styles/base/_03-base.scss +1 -1
  195. package/src/styles/base/_place-holder.scss +7 -7
  196. package/src/styles.scss +1 -5
  197. package/src/theme/components/breadcrumb.ts +3 -3
  198. package/src/theme/components/button.ts +5 -12
  199. package/src/theme/components/card.ts +5 -2
  200. package/src/theme/components/checkbox.ts +1 -1
  201. package/src/theme/components/customTable.ts +50 -0
  202. package/src/theme/components/datePicker.ts +1 -1
  203. package/src/theme/components/global.ts +6 -6
  204. package/src/theme/components/heading.ts +13 -11
  205. package/src/theme/components/helperErrorText.ts +1 -1
  206. package/src/theme/components/image.ts +1 -1
  207. package/src/theme/components/link.ts +17 -5
  208. package/src/theme/components/list.ts +1 -3
  209. package/src/theme/components/logo.ts +54 -0
  210. package/src/theme/components/notification.ts +1 -1
  211. package/src/theme/components/searchBar.ts +7 -13
  212. package/src/theme/components/select.ts +1 -0
  213. package/src/theme/components/statusBadge.ts +1 -1
  214. package/src/theme/components/structuredContent.ts +54 -0
  215. package/src/theme/components/template.ts +10 -10
  216. package/src/theme/components/text.ts +6 -6
  217. package/src/theme/components/textInput.ts +1 -0
  218. package/src/theme/components/toggle.ts +9 -5
  219. package/src/theme/components/videoPlayer.ts +0 -2
  220. package/src/theme/foundations/global.ts +2 -2
  221. package/src/theme/foundations/typography.ts +84 -12
  222. package/src/theme/index.ts +6 -0
  223. package/src/utils/componentCategories.ts +1 -1
  224. package/src/utils/utils.ts +17 -0
  225. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  226. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  227. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  228. package/dist/components/Input/Input.d.ts +0 -36
  229. package/dist/components/Input/Input.stories.d.ts +0 -29
  230. package/dist/components/Input/InputTypes.d.ts +0 -6
  231. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  232. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  233. package/dist/helpers/getCSSVariable.d.ts +0 -1
  234. package/dist/interfaces.d.ts +0 -3
  235. package/dist/utils/bem.d.ts +0 -1
  236. package/src/__tests__/utils/bem.test.ts +0 -37
  237. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  238. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  239. package/src/components/CardEdition/CardEdition.tsx +0 -60
  240. package/src/components/CardEdition/_CardEdition.scss +0 -137
  241. package/src/components/Input/Input.stories.tsx +0 -133
  242. package/src/components/Input/Input.test.tsx +0 -266
  243. package/src/components/Input/Input.tsx +0 -81
  244. package/src/components/Input/InputTypes.tsx +0 -8
  245. package/src/components/Input/_Input.scss +0 -78
  246. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  247. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  248. package/src/helpers/getCSSVariable.tsx +0 -5
  249. package/src/interfaces.ts +0 -3
  250. package/src/utils/bem.ts +0 -44
@@ -1,13 +1,16 @@
1
- import * as React from "react";
2
1
  import {
3
2
  Box,
4
3
  Switch,
5
4
  useMultiStyleConfig,
6
5
  useStyleConfig,
7
6
  } from "@chakra-ui/react";
8
- import generateUUID from "../../helpers/generateUUID";
7
+ import * as React from "react";
8
+
9
+ import HelperErrorText, {
10
+ HelperErrorTextType,
11
+ } from "../HelperErrorText/HelperErrorText";
9
12
  import { ToggleSizes } from "./ToggleSizes";
10
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
13
+ import generateUUID from "../../helpers/generateUUID";
11
14
 
12
15
  export interface ToggleProps {
13
16
  /** Optionally pass in additional Chakra-based styles. */
@@ -16,12 +19,12 @@ export interface ToggleProps {
16
19
  * If true, the toggle will be initially set to the "on" position. */
17
20
  defaultChecked?: boolean;
18
21
  /** Optional string to populate the HelperErrorText for standard state */
19
- helperText?: string;
22
+ helperText?: HelperErrorTextType;
20
23
  /** ID that other components can cross reference for accessibility purposes */
21
24
  id?: string;
22
25
  /** Optional string to populate the HelperErrorText for the error state
23
26
  * when `isInvalid` is true. */
24
- invalidText?: string;
27
+ invalidText?: HelperErrorTextType;
25
28
  /** When using the Toggle as a "controlled" form element, you can specify
26
29
  * the Toggle's checked state using this prop.
27
30
  * Learn more about controlled and uncontrolled form fields:
@@ -71,7 +74,7 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
71
74
  onChange = onChangeDefault,
72
75
  size = ToggleSizes.Large,
73
76
  } = props;
74
- const footnote = isInvalid ? invalidText : helperText;
77
+ const footnote: HelperErrorTextType = isInvalid ? invalidText : helperText;
75
78
  const ariaAttributes = {};
76
79
  const styles = useMultiStyleConfig("Toggle", {});
77
80
  const switchStyles = useStyleConfig("Switch");
@@ -105,9 +108,11 @@ const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(
105
108
  </Box>
106
109
  {footnote && (
107
110
  <Box __css={styles.helper}>
108
- <HelperErrorText isInvalid={isInvalid} id={`${id}-helperText`}>
109
- {footnote}
110
- </HelperErrorText>
111
+ <HelperErrorText
112
+ id={`${id}-helperText`}
113
+ isInvalid={isInvalid}
114
+ text={footnote}
115
+ />
111
116
  </Box>
112
117
  )}
113
118
  </>
@@ -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
@@ -26,7 +26,6 @@ export {
26
26
  CardHeading,
27
27
  } from "./components/Card/Card";
28
28
  export { CardLayouts } from "./components/Card/CardTypes";
29
- export { default as CardEdition } from "./components/CardEdition/CardEdition";
30
29
  export { default as Checkbox } from "./components/Checkbox/Checkbox";
31
30
  export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
32
31
  export { CheckboxGroupLayoutTypes } from "./components/CheckboxGroup/CheckboxGroupLayoutTypes";
@@ -54,7 +53,6 @@ export {
54
53
  IconRotationTypes,
55
54
  IconSizes,
56
55
  IconTypes,
57
- LogoNames,
58
56
  } from "./components/Icons/IconTypes";
59
57
  export { default as Image } from "./components/Image/Image";
60
58
  export {
@@ -62,13 +60,13 @@ export {
62
60
  ImageSizes,
63
61
  ImageTypes,
64
62
  } from "./components/Image/ImageTypes";
65
- export { default as Input } from "./components/Input/Input";
66
- export { InputTypes } from "./components/Input/InputTypes";
67
63
  export { default as Label } from "./components/Label/Label";
68
64
  export { default as Link } from "./components/Link/Link";
69
65
  export { LinkTypes } from "./components/Link/LinkTypes";
70
66
  export { default as List } from "./components/List/List";
71
67
  export { ListTypes } from "./components/List/ListTypes";
68
+ export { default as Logo } from "./components/Logo/Logo";
69
+ export { LogoColors, LogoNames, LogoSizes } from "./components/Logo/LogoTypes";
72
70
  export { default as Modal } from "./components/Modal/Modal";
73
71
  export { default as Notification } from "./components/Notification/Notification";
74
72
  export { NotificationTypes } from "./components/Notification/NotificationTypes";
@@ -92,6 +90,8 @@ export {
92
90
  export { default as Slider } from "./components/Slider/Slider";
93
91
  export { default as StatusBadge } from "./components/StatusBadge/StatusBadge";
94
92
  export { StatusBadgeTypes } from "./components/StatusBadge/StatusBadgeTypes";
93
+ export { default as StructuredContent } from "./components/StructuredContent/StructuredContent";
94
+ export { StructuredContentImagePosition } from "./components/StructuredContent/StructuredContentTypes";
95
95
  export {
96
96
  Tabs,
97
97
  TabList,
@@ -125,3 +125,4 @@ export {
125
125
  VideoPlayerAspectRatios,
126
126
  VideoPlayerTypes,
127
127
  } from "./components/VideoPlayer/VideoPlayerTypes";
128
+ 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",
@@ -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,50 @@
1
+ const baseStyle = ({
2
+ columnHeadersTextColor,
3
+ showRowDividers,
4
+ useRowHeaders,
5
+ }) => ({
6
+ th: {
7
+ border: showRowDividers ? undefined : "none",
8
+ borderBottom: showRowDividers ? undefined : "0px",
9
+ color: columnHeadersTextColor ? columnHeadersTextColor : "ui.black",
10
+ fontSize: "0",
11
+ fontWeight: "bold",
12
+ letterSpacing: "0",
13
+ paddingLeft: 0,
14
+ paddingRight: "m",
15
+ textTransform: "capitalize",
16
+ _first: {
17
+ paddingLeft: showRowDividers ? "m" : null,
18
+ },
19
+ _last: {
20
+ paddingRight: showRowDividers ? "m" : "0",
21
+ },
22
+ },
23
+ td: {
24
+ border: showRowDividers ? undefined : "none",
25
+ borderBottom: showRowDividers ? undefined : "0px",
26
+ letterSpacing: "0",
27
+ paddingLeft: 0,
28
+ paddingRight: "m",
29
+ _first: {
30
+ paddingLeft: showRowDividers && !useRowHeaders ? "m" : null,
31
+ },
32
+ _last: {
33
+ paddingRight: showRowDividers ? "m" : "0",
34
+ },
35
+ },
36
+ caption: {
37
+ captionSide: "top",
38
+ textAlign: "left",
39
+ fontSize: "heading.secondary",
40
+ color: "ui.black",
41
+ textTransform: "capitalize",
42
+ fontWeight: "heading.secondary",
43
+ },
44
+ });
45
+
46
+ const CustomTable = {
47
+ baseStyle,
48
+ };
49
+
50
+ 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
  },
@@ -19,8 +19,8 @@ const helperTextMargin = {
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 = {