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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CHANGELOG.md +91 -1
  2. package/README.md +1 -1
  3. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
  4. package/dist/components/Button/Button.d.ts +6 -6
  5. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  6. package/dist/components/Card/Card.d.ts +6 -4
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  8. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  9. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  10. package/dist/components/DatePicker/DatePicker.d.ts +3 -2
  11. package/dist/components/Form/Form.d.ts +2 -2
  12. package/dist/components/Heading/Heading.d.ts +7 -3
  13. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  14. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  15. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
  16. package/dist/components/Icons/Icon.d.ts +4 -4
  17. package/dist/components/Icons/IconSvgs.d.ts +1 -21
  18. package/dist/components/Icons/IconTypes.d.ts +1 -23
  19. package/dist/components/Image/Image.d.ts +11 -3
  20. package/dist/components/Image/ImageTypes.d.ts +3 -1
  21. package/dist/components/Link/LinkTypes.d.ts +1 -0
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  25. package/dist/components/Modal/Modal.d.ts +0 -4
  26. package/dist/components/Notification/Notification.d.ts +4 -2
  27. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  28. package/dist/components/Radio/Radio.d.ts +6 -5
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
  30. package/dist/components/SearchBar/SearchBar.d.ts +10 -2
  31. package/dist/components/Select/Select.d.ts +5 -2
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  33. package/dist/components/Slider/Slider.d.ts +3 -2
  34. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  35. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  36. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  37. package/dist/components/Table/Table.d.ts +23 -0
  38. package/dist/components/Template/Template.d.ts +8 -3
  39. package/dist/components/Text/Text.d.ts +2 -2
  40. package/dist/components/TextInput/TextInput.d.ts +4 -3
  41. package/dist/components/Toggle/Toggle.d.ts +48 -0
  42. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  43. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  44. package/dist/design-system-react-components.cjs.development.js +5989 -5490
  45. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  48. package/dist/design-system-react-components.esm.js +6057 -5551
  49. package/dist/design-system-react-components.esm.js.map +1 -1
  50. package/dist/index.d.ts +11 -4
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +9 -0
  53. package/dist/theme/components/button.d.ts +0 -12
  54. package/dist/theme/components/card.d.ts +14 -2
  55. package/dist/theme/components/customTable.d.ts +47 -0
  56. package/dist/theme/components/fieldset.d.ts +2 -2
  57. package/dist/theme/components/global.d.ts +1 -1
  58. package/dist/theme/components/heading.d.ts +4 -0
  59. package/dist/theme/components/label.d.ts +1 -1
  60. package/dist/theme/components/link.d.ts +14 -1
  61. package/dist/theme/components/list.d.ts +0 -2
  62. package/dist/theme/components/logo.d.ts +4 -0
  63. package/dist/theme/components/notification.d.ts +8 -4
  64. package/dist/theme/components/searchBar.d.ts +7 -13
  65. package/dist/theme/components/select.d.ts +1 -0
  66. package/dist/theme/components/structuredContent.d.ts +33 -0
  67. package/dist/theme/components/template.d.ts +10 -10
  68. package/dist/theme/components/textInput.d.ts +2 -0
  69. package/dist/theme/components/toggle.d.ts +71 -0
  70. package/dist/theme/foundations/spacing.d.ts +2 -0
  71. package/dist/utils/utils.d.ts +10 -0
  72. package/package.json +2 -3
  73. package/src/__tests__/utils/utils.test.ts +23 -1
  74. package/src/components/Accordion/Accordion.stories.mdx +15 -14
  75. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  76. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  77. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  78. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +50 -14
  79. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +20 -0
  80. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
  81. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +198 -0
  82. package/src/components/Button/Button.stories.mdx +93 -48
  83. package/src/components/Button/Button.test.tsx +0 -12
  84. package/src/components/Button/Button.tsx +7 -8
  85. package/src/components/Button/ButtonTypes.tsx +0 -1
  86. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  87. package/src/components/Card/Card.stories.mdx +246 -64
  88. package/src/components/Card/Card.test.tsx +45 -22
  89. package/src/components/Card/Card.tsx +26 -13
  90. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  91. package/src/components/Chakra/Box.stories.mdx +3 -3
  92. package/src/components/Chakra/Center.stories.mdx +5 -5
  93. package/src/components/Chakra/Grid.stories.mdx +14 -17
  94. package/src/components/Chakra/Stack.stories.mdx +2 -2
  95. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  96. package/src/components/Checkbox/Checkbox.tsx +13 -8
  97. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  98. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  99. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  100. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  101. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  102. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  103. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  104. package/src/components/DatePicker/DatePicker.test.tsx +8 -6
  105. package/src/components/DatePicker/DatePicker.tsx +10 -6
  106. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  107. package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
  108. package/src/components/Form/Form.stories.mdx +49 -41
  109. package/src/components/Form/Form.tsx +5 -4
  110. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  111. package/src/components/Heading/Heading.stories.mdx +59 -23
  112. package/src/components/Heading/Heading.test.tsx +82 -18
  113. package/src/components/Heading/Heading.tsx +31 -31
  114. package/src/components/Heading/HeadingTypes.tsx +6 -6
  115. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  116. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  117. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  118. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  119. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  120. package/src/components/Hero/Hero.stories.mdx +72 -53
  121. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
  122. package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
  123. package/src/components/Icons/Icon.stories.mdx +77 -75
  124. package/src/components/Icons/Icon.tsx +4 -5
  125. package/src/components/Icons/IconSvgs.tsx +2 -42
  126. package/src/components/Icons/IconTypes.tsx +1 -24
  127. package/src/components/Image/Image.stories.mdx +214 -104
  128. package/src/components/Image/Image.test.tsx +10 -0
  129. package/src/components/Image/Image.tsx +21 -10
  130. package/src/components/Image/ImageTypes.ts +2 -0
  131. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  132. package/src/components/Label/Label.stories.mdx +21 -20
  133. package/src/components/Link/Link.stories.mdx +103 -53
  134. package/src/components/Link/Link.test.tsx +108 -7
  135. package/src/components/Link/Link.tsx +58 -19
  136. package/src/components/Link/LinkTypes.tsx +1 -0
  137. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  138. package/src/components/List/List.stories.mdx +36 -24
  139. package/src/components/Logo/Logo.stories.mdx +220 -0
  140. package/src/components/Logo/Logo.test.tsx +98 -0
  141. package/src/components/Logo/Logo.tsx +97 -0
  142. package/src/components/Logo/LogoSvgs.tsx +34 -0
  143. package/src/components/Logo/LogoTypes.tsx +32 -0
  144. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  145. package/src/components/Modal/Modal.stories.mdx +20 -5
  146. package/src/components/Modal/Modal.tsx +2 -8
  147. package/src/components/Notification/Notification.stories.mdx +96 -40
  148. package/src/components/Notification/Notification.test.tsx +62 -16
  149. package/src/components/Notification/Notification.tsx +26 -9
  150. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  151. package/src/components/Pagination/Pagination.stories.mdx +18 -8
  152. package/src/components/Pagination/Pagination.tsx +1 -1
  153. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  154. package/src/components/Placeholder/Placeholder.tsx +7 -14
  155. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  156. package/src/components/Radio/Radio.stories.mdx +39 -19
  157. package/src/components/Radio/Radio.tsx +13 -9
  158. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  159. package/src/components/RadioGroup/RadioGroup.tsx +15 -11
  160. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
  161. package/src/components/SearchBar/SearchBar.Test.tsx +114 -22
  162. package/src/components/SearchBar/SearchBar.stories.mdx +111 -33
  163. package/src/components/SearchBar/SearchBar.tsx +57 -33
  164. package/src/components/Select/Select.stories.mdx +177 -66
  165. package/src/components/Select/Select.test.tsx +2 -2
  166. package/src/components/Select/Select.tsx +22 -12
  167. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  168. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  169. package/src/components/Slider/Slider.stories.mdx +74 -23
  170. package/src/components/Slider/Slider.test.tsx +35 -0
  171. package/src/components/Slider/Slider.tsx +22 -11
  172. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
  173. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  174. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  175. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  176. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  177. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  178. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  179. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  180. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  181. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  182. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  183. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  184. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  185. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  186. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  187. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  188. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  189. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  190. package/src/components/Table/Table.stories.mdx +66 -0
  191. package/src/components/Table/Table.test.tsx +60 -0
  192. package/src/components/Table/Table.tsx +116 -0
  193. package/src/components/Tabs/Tabs.stories.mdx +19 -13
  194. package/src/components/Tabs/Tabs.test.tsx +1 -1
  195. package/src/components/Template/Template.stories.mdx +57 -49
  196. package/src/components/Template/Template.test.tsx +65 -5
  197. package/src/components/Template/Template.tsx +35 -5
  198. package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
  199. package/src/components/Text/Text.stories.mdx +33 -11
  200. package/src/components/Text/Text.tsx +2 -2
  201. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  202. package/src/components/TextInput/TextInput.test.tsx +96 -0
  203. package/src/components/TextInput/TextInput.tsx +12 -8
  204. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  205. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  206. package/src/components/Toggle/Toggle.test.tsx +140 -0
  207. package/src/components/Toggle/Toggle.tsx +123 -0
  208. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  209. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  210. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  211. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  212. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  213. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  214. package/src/docs/Chakra.stories.mdx +5 -8
  215. package/src/docs/Intro.stories.mdx +2 -2
  216. package/src/index.ts +13 -4
  217. package/src/styles/base/_03-base.scss +1 -1
  218. package/src/styles/base/_place-holder.scss +7 -7
  219. package/src/styles.scss +1 -5
  220. package/src/theme/components/breadcrumb.ts +14 -4
  221. package/src/theme/components/button.ts +5 -12
  222. package/src/theme/components/card.ts +9 -7
  223. package/src/theme/components/checkbox.ts +1 -1
  224. package/src/theme/components/customTable.ts +50 -0
  225. package/src/theme/components/datePicker.ts +1 -1
  226. package/src/theme/components/global.ts +7 -7
  227. package/src/theme/components/heading.ts +13 -11
  228. package/src/theme/components/helperErrorText.ts +1 -1
  229. package/src/theme/components/icon.ts +2 -2
  230. package/src/theme/components/image.ts +9 -1
  231. package/src/theme/components/link.ts +17 -5
  232. package/src/theme/components/list.ts +1 -3
  233. package/src/theme/components/logo.ts +54 -0
  234. package/src/theme/components/notification.ts +9 -7
  235. package/src/theme/components/searchBar.ts +7 -13
  236. package/src/theme/components/select.ts +1 -0
  237. package/src/theme/components/statusBadge.ts +1 -1
  238. package/src/theme/components/structuredContent.ts +54 -0
  239. package/src/theme/components/template.ts +10 -10
  240. package/src/theme/components/text.ts +6 -6
  241. package/src/theme/components/textInput.ts +1 -0
  242. package/src/theme/components/toggle.ts +69 -0
  243. package/src/theme/components/videoPlayer.ts +0 -2
  244. package/src/theme/foundations/global.ts +2 -2
  245. package/src/theme/foundations/spacing.ts +3 -0
  246. package/src/theme/foundations/typography.ts +84 -12
  247. package/src/theme/index.ts +8 -0
  248. package/src/utils/componentCategories.ts +4 -2
  249. package/src/utils/utils.ts +17 -0
  250. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  251. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  252. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  253. package/dist/components/Input/Input.d.ts +0 -36
  254. package/dist/components/Input/Input.stories.d.ts +0 -29
  255. package/dist/components/Input/InputTypes.d.ts +0 -6
  256. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  257. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  258. package/dist/helpers/getCSSVariable.d.ts +0 -1
  259. package/dist/interfaces.d.ts +0 -3
  260. package/dist/utils/bem.d.ts +0 -1
  261. package/src/__tests__/utils/bem.test.ts +0 -37
  262. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  263. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  264. package/src/components/CardEdition/CardEdition.tsx +0 -60
  265. package/src/components/CardEdition/_CardEdition.scss +0 -137
  266. package/src/components/Input/Input.stories.tsx +0 -133
  267. package/src/components/Input/Input.test.tsx +0 -266
  268. package/src/components/Input/Input.tsx +0 -81
  269. package/src/components/Input/InputTypes.tsx +0 -8
  270. package/src/components/Input/_Input.scss +0 -78
  271. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  272. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  273. package/src/helpers/getCSSVariable.tsx +0 -5
  274. package/src/interfaces.ts +0 -3
  275. package/src/utils/bem.ts +0 -44
@@ -27,7 +27,7 @@ export interface LinkProps {
27
27
  * Renders the `Link` children components with a direction arrow icon based
28
28
  * on the `Backwards` or `Forwards` `LinkTypes` type.
29
29
  */
30
- function getWithDirectionIcon(children, type: LinkTypes) {
30
+ function getWithDirectionIcon(children, type: LinkTypes, linkId) {
31
31
  let iconRotation;
32
32
  let iconAlign;
33
33
  let icon = null;
@@ -42,12 +42,15 @@ function getWithDirectionIcon(children, type: LinkTypes) {
42
42
  iconAlign = IconAlign.Right;
43
43
  }
44
44
 
45
+ const iconId = `${linkId}-icon`;
46
+
45
47
  icon = (
46
48
  <Icon
47
- name={IconNames.Arrow}
48
49
  align={iconAlign}
49
- iconRotation={iconRotation}
50
50
  className="more-link"
51
+ iconRotation={iconRotation}
52
+ id={iconId}
53
+ name={IconNames.Arrow}
51
54
  />
52
55
  );
53
56
 
@@ -60,6 +63,25 @@ function getWithDirectionIcon(children, type: LinkTypes) {
60
63
  );
61
64
  }
62
65
 
66
+ function getExternalIcon(children, linkId) {
67
+ const iconId = `${linkId}-icon`;
68
+ const icon = (
69
+ <Icon
70
+ align={IconAlign.Right}
71
+ className="more-link"
72
+ id={iconId}
73
+ name={IconNames.ActionLaunch}
74
+ />
75
+ );
76
+
77
+ return (
78
+ <>
79
+ {children}
80
+ {icon}
81
+ </>
82
+ );
83
+ }
84
+
63
85
  /**
64
86
  * A component that uses an `href` prop or a child anchor element, to create
65
87
  * an anchor element with added styling and conventions.
@@ -87,25 +109,31 @@ const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
87
109
  let variant = "link";
88
110
 
89
111
  if (typeof children === "string" && !href) {
90
- throw new Error("Link needs prop 'href'");
112
+ throw new Error("`Link` needs the `href` prop.");
91
113
  }
92
114
 
93
115
  if (
94
116
  type === LinkTypes.Action ||
95
117
  type === LinkTypes.Forwards ||
96
- type === LinkTypes.Backwards
118
+ type === LinkTypes.Backwards ||
119
+ type === LinkTypes.External
97
120
  ) {
98
121
  variant = "moreLink";
99
122
  } else if (type === LinkTypes.Button) {
100
123
  variant = "button";
101
124
  }
102
125
  const style = useStyleConfig("Link", { variant });
103
- // Render with specific direction arrows only if the type
104
- // is Forwards or Backwards.
126
+ // Render with specific direction arrows if the type is
127
+ // Forwards or Backwards. Or render with the launch icon
128
+ // if the type is External. Otherwise, do not add an icon.
105
129
  const newChildren =
106
- type === LinkTypes.Forwards || type === LinkTypes.Backwards
107
- ? getWithDirectionIcon(children, type)
108
- : children;
130
+ ((type === LinkTypes.Forwards || type === LinkTypes.Backwards) &&
131
+ getWithDirectionIcon(children, type, id)) ||
132
+ (type === LinkTypes.External && getExternalIcon(children, id)) ||
133
+ children;
134
+
135
+ const rel = type === LinkTypes.External ? "nofollow" : null;
136
+ const target = type === LinkTypes.External ? "_blank" : null;
109
137
 
110
138
  if (!href) {
111
139
  // React Types error makes this fail:
@@ -116,15 +144,24 @@ const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
116
144
  }
117
145
  const childrenToClone: any = children[0] ? children[0] : children;
118
146
  const childProps = childrenToClone.props;
119
- return React.cloneElement(
120
- childrenToClone,
121
- {
122
- className,
123
- ...linkProps,
124
- ...childProps,
125
- ref,
126
- },
127
- [childrenToClone.props.children]
147
+ return (
148
+ <Box as="span" __css={style}>
149
+ {React.cloneElement(
150
+ childrenToClone,
151
+ {
152
+ className,
153
+ ...linkProps,
154
+ ...childProps,
155
+ ref,
156
+ rel,
157
+ target,
158
+ // Useful if more styles are needed for the custom
159
+ // anchor element or link component.
160
+ style: additionalStyles,
161
+ },
162
+ [childrenToClone.props.children]
163
+ )}
164
+ </Box>
128
165
  );
129
166
  } else {
130
167
  return (
@@ -132,6 +169,8 @@ const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
132
169
  as="a"
133
170
  className={className}
134
171
  ref={ref}
172
+ rel={rel}
173
+ target={target}
135
174
  {...linkProps}
136
175
  __css={{ ...style, ...additionalStyles }}
137
176
  >
@@ -3,5 +3,6 @@ export enum LinkTypes {
3
3
  Backwards = "backwards",
4
4
  Button = "button",
5
5
  Default = "default",
6
+ External = "external",
6
7
  Forwards = "forwards",
7
8
  }
@@ -0,0 +1,261 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Link renders the UI snapshot correctly 1`] = `
4
+ <a
5
+ className="css-0"
6
+ href="#passed-in-link"
7
+ id="standard-link"
8
+ rel={null}
9
+ target={null}
10
+ >
11
+ Standard
12
+ </a>
13
+ `;
14
+
15
+ exports[`Link renders the UI snapshot correctly 2`] = `
16
+ <a
17
+ className="css-0"
18
+ href="#passed-in-link"
19
+ id="forwards-link"
20
+ rel={null}
21
+ target={null}
22
+ >
23
+ Forwards
24
+ <svg
25
+ aria-hidden={true}
26
+ className="chakra-icon more-link css-onkibi"
27
+ focusable={false}
28
+ id="forwards-link-icon"
29
+ role="img"
30
+ title="arrow icon"
31
+ viewBox="0 0 24 24"
32
+ >
33
+ <g
34
+ stroke="currentColor"
35
+ strokeWidth="1.5"
36
+ >
37
+ <path
38
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
39
+ fill="none"
40
+ strokeLinecap="round"
41
+ />
42
+ <path
43
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
44
+ fill="currentColor"
45
+ strokeLinecap="round"
46
+ />
47
+ <circle
48
+ cx="12"
49
+ cy="12"
50
+ fill="none"
51
+ r="11.25"
52
+ strokeMiterlimit="10"
53
+ />
54
+ </g>
55
+ </svg>
56
+ </a>
57
+ `;
58
+
59
+ exports[`Link renders the UI snapshot correctly 3`] = `
60
+ <a
61
+ className="css-0"
62
+ href="#passed-in-link"
63
+ id="backwards-link"
64
+ rel={null}
65
+ target={null}
66
+ >
67
+ <svg
68
+ aria-hidden={true}
69
+ className="chakra-icon more-link css-onkibi"
70
+ focusable={false}
71
+ id="backwards-link-icon"
72
+ role="img"
73
+ title="arrow icon"
74
+ viewBox="0 0 24 24"
75
+ >
76
+ <g
77
+ stroke="currentColor"
78
+ strokeWidth="1.5"
79
+ >
80
+ <path
81
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
82
+ fill="none"
83
+ strokeLinecap="round"
84
+ />
85
+ <path
86
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
87
+ fill="currentColor"
88
+ strokeLinecap="round"
89
+ />
90
+ <circle
91
+ cx="12"
92
+ cy="12"
93
+ fill="none"
94
+ r="11.25"
95
+ strokeMiterlimit="10"
96
+ />
97
+ </g>
98
+ </svg>
99
+ Backwards
100
+ </a>
101
+ `;
102
+
103
+ exports[`Link renders the UI snapshot correctly 4`] = `
104
+ <a
105
+ className="css-0"
106
+ href="#passed-in-link"
107
+ id="external-link"
108
+ rel="nofollow"
109
+ target="_blank"
110
+ >
111
+ External
112
+ <svg
113
+ aria-hidden={true}
114
+ className="chakra-icon more-link css-onkibi"
115
+ focusable={false}
116
+ id="external-link-icon"
117
+ role="img"
118
+ title="action_launch icon"
119
+ viewBox="0 0 24 24"
120
+ >
121
+ <g
122
+ stroke="currentColor"
123
+ strokeWidth="1.5"
124
+ >
125
+ <path
126
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
127
+ fill="none"
128
+ strokeLinecap="round"
129
+ />
130
+ <path
131
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
132
+ fill="currentColor"
133
+ strokeLinecap="round"
134
+ />
135
+ <circle
136
+ cx="12"
137
+ cy="12"
138
+ fill="none"
139
+ r="11.25"
140
+ strokeMiterlimit="10"
141
+ />
142
+ </g>
143
+ </svg>
144
+ </a>
145
+ `;
146
+
147
+ exports[`Link renders the UI snapshot correctly 5`] = `
148
+ <a
149
+ className="css-0"
150
+ href="#passed-in-link"
151
+ id="button-link"
152
+ rel={null}
153
+ target={null}
154
+ >
155
+ Button
156
+ </a>
157
+ `;
158
+
159
+ exports[`Link renders the UI snapshot correctly 6`] = `
160
+ <a
161
+ className="css-0"
162
+ href="#passed-in-link"
163
+ id="icon-link"
164
+ rel={null}
165
+ target={null}
166
+ >
167
+ <svg
168
+ aria-hidden={true}
169
+ className="chakra-icon more-link css-onkibi"
170
+ focusable={false}
171
+ id="link-icon"
172
+ role="img"
173
+ title="download icon"
174
+ viewBox="0 0 24 24"
175
+ >
176
+ <g
177
+ stroke="currentColor"
178
+ strokeWidth="1.5"
179
+ >
180
+ <path
181
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
182
+ fill="none"
183
+ strokeLinecap="round"
184
+ />
185
+ <path
186
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
187
+ fill="currentColor"
188
+ strokeLinecap="round"
189
+ />
190
+ <circle
191
+ cx="12"
192
+ cy="12"
193
+ fill="none"
194
+ r="11.25"
195
+ strokeMiterlimit="10"
196
+ />
197
+ </g>
198
+ </svg>
199
+ Download
200
+ </a>
201
+ `;
202
+
203
+ exports[`Link renders the UI snapshot correctly 7`] = `
204
+ <span
205
+ className="css-0"
206
+ >
207
+ <a
208
+ href="#existing-anchor-tag"
209
+ id="anchor-link"
210
+ rel={null}
211
+ style={Object {}}
212
+ target={null}
213
+ >
214
+ check link
215
+ </a>
216
+ </span>
217
+ `;
218
+
219
+ exports[`Link renders the UI snapshot correctly 8`] = `
220
+ <span
221
+ className="css-0"
222
+ >
223
+ <svg
224
+ aria-hidden={true}
225
+ className="chakra-icon css-onkibi"
226
+ focusable={false}
227
+ id="link-icon"
228
+ role="img"
229
+ title="check icon"
230
+ viewBox="0 0 24 24"
231
+ >
232
+ <g
233
+ stroke="currentColor"
234
+ strokeWidth="1.5"
235
+ >
236
+ <path
237
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
238
+ fill="none"
239
+ strokeLinecap="round"
240
+ />
241
+ <path
242
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
243
+ fill="currentColor"
244
+ strokeLinecap="round"
245
+ />
246
+ <circle
247
+ cx="12"
248
+ cy="12"
249
+ fill="none"
250
+ r="11.25"
251
+ strokeMiterlimit="10"
252
+ />
253
+ </g>
254
+ </svg>
255
+ <a
256
+ href="#existing-anchor-tag"
257
+ >
258
+ check link
259
+ </a>
260
+ </span>
261
+ `;
@@ -1,10 +1,10 @@
1
1
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
2
  ArgsTable,
3
+ Canvas,
6
4
  Description,
7
- } from "@storybook/addon-docs/blocks";
5
+ Meta,
6
+ Story,
7
+ } from "@storybook/addon-docs";
8
8
  import { withDesign } from "storybook-addon-designs";
9
9
 
10
10
  import Heading from "../Heading/Heading";
@@ -15,6 +15,9 @@ import { LinkTypes } from "../Link/LinkTypes";
15
15
  import List from "./List";
16
16
  import { ListTypes } from "./ListTypes";
17
17
  import { getCategory } from "../../utils/componentCategories";
18
+ import { getStorybookEnumValues } from "../../utils/utils";
19
+
20
+ export const enumValues = getStorybookEnumValues(ListTypes, "ListTypes");
18
21
 
19
22
  <Meta
20
23
  title={getCategory("List")}
@@ -23,21 +26,22 @@ import { getCategory } from "../../utils/componentCategories";
23
26
  parameters={{
24
27
  design: {
25
28
  type: "figma",
26
- url:
27
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=16115%3A304",
29
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=16115%3A304",
28
30
  },
29
31
  jest: ["List.test.tsx"],
30
32
  }}
31
33
  argTypes={{
34
+ additionalStyles: { control: false },
32
35
  children: { table: { disable: true } },
33
- className: { table: { disable: true } },
34
- id: { table: { disable: true } },
35
- listItems: { table: { disable: true } },
36
+ className: { control: false },
37
+ id: { control: false },
38
+ inline: { table: { defaultValue: { summary: false } } },
39
+ listItems: { control: false },
40
+ noStyling: { table: { defaultValue: { summary: false } } },
36
41
  type: {
37
- control: {
38
- type: "radio",
39
- },
40
- options: Object.keys(ListTypes),
42
+ control: { type: "select" },
43
+ options: enumValues.options,
44
+ table: { defaultValue: { summary: "ListTypes.Unordered" } },
41
45
  },
42
46
  }}
43
47
  />
@@ -118,17 +122,21 @@ export const definitions = [
118
122
 
119
123
  <Canvas withToolbar>
120
124
  <Story
121
- name="List"
125
+ name="List with Controls"
122
126
  args={{
127
+ additionalStyles: undefined,
128
+ className: undefined,
123
129
  id: "nypl-list",
130
+ inline: false,
131
+ listItems: undefined,
124
132
  noStyling: false,
125
133
  title: "Middle-Earth Peoples",
126
- type: ListTypes.Unordered,
134
+ type: "ListTypes.Unordered",
127
135
  }}
128
136
  >
129
137
  {(args) => (
130
- <List {...args} type={ListTypes[args.type]}>
131
- {ListTypes[args.type] !== ListTypes.Definition
138
+ <List {...args} type={enumValues.getValue(args.type)}>
139
+ {args.type !== "ListTypes.Definition"
132
140
  ? itemGroups.map((item, i) => <li key={i}>{item}</li>)
133
141
  : definitions.map((item, i) => [
134
142
  <dt key={`dt_${i}`}>{item.term}</dt>,
@@ -139,7 +147,7 @@ export const definitions = [
139
147
  </Story>
140
148
  </Canvas>
141
149
 
142
- <ArgsTable story="List" />
150
+ <ArgsTable story="List with Controls" />
143
151
 
144
152
  ## Definition List
145
153
 
@@ -163,13 +171,14 @@ This type of list renders `dt` and `dd` elements.
163
171
  title: "Middle-Earth Peoples",
164
172
  }}
165
173
  argTypes={{
166
- type: { table: { disable: true } },
174
+ inline: { control: false },
175
+ noStyling: { control: false },
176
+ type: { control: false },
167
177
  }}
168
178
  parameters={{
169
179
  design: {
170
180
  type: "figma",
171
- url:
172
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A5178",
181
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A5178",
173
182
  },
174
183
  }}
175
184
  >
@@ -196,13 +205,14 @@ An example with HTML elements inside of the `dd` elements.
196
205
  title: "Details",
197
206
  }}
198
207
  argTypes={{
208
+ inline: { control: false },
209
+ noStyling: { control: false },
199
210
  type: { table: { disable: true } },
200
211
  }}
201
212
  parameters={{
202
213
  design: {
203
214
  type: "figma",
204
- url:
205
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A5178",
215
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A5178",
206
216
  },
207
217
  }}
208
218
  >
@@ -330,7 +340,9 @@ const fishDefinitions = [
330
340
  title: "Animal Crossing Fish",
331
341
  }}
332
342
  argTypes={{
333
- type: { table: { disable: true } },
343
+ inline: { control: false },
344
+ noStyling: { control: false },
345
+ type: { control: false },
334
346
  }}
335
347
  >
336
348
  {(args) => <List {...args} type={ListTypes.Definition} />}