@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,18 +1,18 @@
1
1
  import {
2
- Meta,
3
- Story,
4
2
  ArgsTable,
5
3
  Canvas,
6
4
  Description,
7
- } from "@storybook/addon-docs/blocks";
8
- import Accordion from "./Accordion";
5
+ Meta,
6
+ Story,
7
+ } from "@storybook/addon-docs";
8
+ import ReactDOMServer from "react-dom/server";
9
9
  import { withDesign } from "storybook-addon-designs";
10
+
11
+ import Accordion from "./Accordion";
10
12
  import Card, { CardHeading, CardContent } from "../Card/Card";
11
13
  import { CardLayouts } from "../Card/CardTypes";
12
- import { ImageRatios } from "../Image/ImageTypes";
13
14
  import { HeadingLevels } from "../Heading/HeadingTypes";
14
- import { Source } from "@storybook/addon-docs/blocks";
15
- import ReactDOMServer from "react-dom/server";
15
+ import { ImageRatios } from "../Image/ImageTypes";
16
16
  import { getCategory } from "../../utils/componentCategories";
17
17
 
18
18
  <Meta
@@ -27,8 +27,9 @@ import { getCategory } from "../../utils/componentCategories";
27
27
  jest: ["Accordion.test.tsx"],
28
28
  }}
29
29
  argTypes={{
30
- contentData: { table: { disable: true } },
31
- id: { table: { disable: true } },
30
+ contentData: { control: false },
31
+ id: { control: false },
32
+ isDefaultOpen: { table: { defaultValue: { summary: false } } },
32
33
  }}
33
34
  />
34
35
 
@@ -56,9 +57,8 @@ necessary icon, Chakra components, and styles.
56
57
 
57
58
  <Canvas withToolbar>
58
59
  <Story
59
- name="Basic"
60
+ name="Accordion with Controls"
60
61
  args={{
61
- isDefaultOpen: false,
62
62
  contentData: [
63
63
  {
64
64
  label: "Tom Nook",
@@ -82,6 +82,8 @@ necessary icon, Chakra components, and styles.
82
82
  ),
83
83
  },
84
84
  ],
85
+ id: "accordion-id",
86
+ isDefaultOpen: false,
85
87
  }}
86
88
  >
87
89
  {(args) => <Accordion {...args} />}
@@ -118,7 +120,7 @@ const contentData = [
118
120
  <Accordion contentData={contentData} />
119
121
  ```
120
122
 
121
- <ArgsTable story="Basic" />
123
+ <ArgsTable story="Accordion with Controls" />
122
124
 
123
125
  ## FAQ example
124
126
 
@@ -1,5 +1,6 @@
1
- import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
1
+ import { Canvas, Meta, Story } from "@storybook/addon-docs";
2
2
  import Autosuggest from "react-autosuggest";
3
+
3
4
  import * as stories from "./Autosuggest.stories.tsx";
4
5
  import { getCategory } from "../../utils/componentCategories";
5
6
 
@@ -3,10 +3,7 @@ import React, { useState } from "react";
3
3
  import Autosuggest from "react-autosuggest";
4
4
  import Icon from "../Icons/Icon";
5
5
  import { IconNames } from "../Icons/IconTypes";
6
- import Label from "../Label/Label";
7
- import Input from "../Input/Input";
8
- import { InputTypes } from "../Input/InputTypes";
9
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
6
+ import TextInput from "../TextInput/TextInput";
10
7
 
11
8
  /**
12
9
  * StoryWrapper
@@ -21,29 +18,16 @@ const libraryRenderInputComponent = (
21
18
  inputProps: React.HTMLProps<HTMLInputElement>
22
19
  ) => {
23
20
  return (
24
- <>
25
- <Label
26
- htmlFor="library-autosuggest"
27
- id="library-autosuggest-label"
28
- optReqFlag={"Required"}
29
- >
30
- Home Library
31
- </Label>
32
- <HelperErrorText id="id-helperText" isInvalid={false}>
33
- Select your home library. Start by typing the name of the library. Try{" "}
34
- {'"'}ba{'"'}.
35
- </HelperErrorText>
36
- <Input
37
- type={InputTypes.text}
38
- id="library-autosuggest"
39
- aria-required={true}
40
- aria-labelledby="library-autosuggest-label id-helperText"
41
- attributes={{
42
- name: "homeLibraryName",
43
- ...inputProps,
44
- }}
45
- />
46
- </>
21
+ <TextInput
22
+ attributes={{
23
+ ...inputProps,
24
+ }}
25
+ id="library-autosuggest"
26
+ isRequired
27
+ labelText="Home Library"
28
+ name="homeLibraryName"
29
+ helperText="Select your home library. Start by typing the name of the library. Try 'ba'."
30
+ />
47
31
  );
48
32
  };
49
33
 
@@ -148,20 +132,14 @@ const FishExample = () => {
148
132
  ];
149
133
  const renderInputComponent = (inputProps) => {
150
134
  return (
151
- <>
152
- <Label htmlFor="input-fish-autosuggest" id="fish-autosuggest-label">
153
- Fish in Animal Crossing
154
- </Label>
155
- <Input
156
- type={InputTypes.text}
157
- id="input-fish-autosuggest"
158
- aria-required={false}
159
- attributes={{
160
- name: "favoriteFish",
161
- ...inputProps,
162
- }}
163
- />
164
- </>
135
+ <TextInput
136
+ attributes={{
137
+ ...inputProps,
138
+ }}
139
+ id="library-fish-autosuggest"
140
+ labelText="Fish in Animal Crossing"
141
+ name="favoriteFish"
142
+ />
165
143
  );
166
144
  };
167
145
  const onChange = (_: any, { newValue }) => setValue(newValue);
@@ -218,16 +196,14 @@ const searchBarRenderInputComponent = (
218
196
  inputProps: React.HTMLProps<HTMLInputElement>
219
197
  ) => {
220
198
  return (
221
- <Input
222
- type={InputTypes.text}
223
- id="autosuggest-searchBar"
224
- aria-required={true}
225
- ariaLabelledBy="autosuggest-button"
199
+ <TextInput
226
200
  attributes={{
227
- name: "homeLibraryName",
228
- "aria-describedby": "autosuggest-helperText",
229
201
  ...inputProps,
230
202
  }}
203
+ id="autosuggest-searchBar"
204
+ isRequired
205
+ labelText="home library"
206
+ name="homeLibraryName"
231
207
  />
232
208
  );
233
209
  };
@@ -5,10 +5,6 @@
5
5
  width: 100%;
6
6
  }
7
7
 
8
- .react-autosuggest__input {
9
- @extend .input;
10
- }
11
-
12
8
  .react-autosuggest__input--focused {
13
9
  outline: none;
14
10
  }
@@ -28,9 +24,9 @@
28
24
  background-color: var(--nypl-colors-ui-white);
29
25
  display: block;
30
26
  font-weight: 300;
31
- margin-top: -6px; // accounts for the focus ring on the input
27
+ margin-top: 1px; // accounts for the focus ring on the input
32
28
  outline: 1px solid var(--nypl-colors-ui-gray-light-cool);
33
- position: absolute;
29
+ position: relative;
34
30
  width: 100%;
35
31
  z-index: 2;
36
32
  }
@@ -1,19 +1,25 @@
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 Breadcrumbs from "./Breadcrumbs";
11
11
  import { ColorVariants } from "./BreadcrumbsTypes";
12
- import DSProvider from "../../theme/provider";
13
12
  import Heading from "../Heading/Heading";
14
13
  import { HeadingLevels } from "../Heading/HeadingTypes";
15
14
  import Link from "../Link/Link";
16
15
  import { getCategory } from "../../utils/componentCategories";
16
+ import DSProvider from "../../theme/provider";
17
+ import { getStorybookEnumValues } from "../../utils/utils";
18
+
19
+ export const enumValues = getStorybookEnumValues(
20
+ ColorVariants,
21
+ "ColorVariants"
22
+ );
17
23
 
18
24
  <Meta
19
25
  title={getCategory("Breadcrumbs")}
@@ -28,8 +34,13 @@ import { getCategory } from "../../utils/componentCategories";
28
34
  }}
29
35
  argTypes={{
30
36
  additionalStyles: { control: false },
31
- className: { table: { disable: true } },
32
- id: { table: { disable: true } },
37
+ breadcrumbsData: { control: false },
38
+ className: { control: false },
39
+ colorVariant: {
40
+ control: { type: "select" },
41
+ options: enumValues.options,
42
+ },
43
+ id: { control: false },
33
44
  }}
34
45
  />
35
46
 
@@ -46,21 +57,29 @@ The `Breadcrumbs` component is a navigation element that provides a breadcrumb p
46
57
 
47
58
  <Canvas withToolbar>
48
59
  <Story
49
- name="Breadcrumbs Props"
60
+ name="Breadcrumbs with Controls"
50
61
  args={{
62
+ additionalStyles: undefined,
51
63
  breadcrumbsData: [
52
64
  { url: "#", text: "Parent" },
53
65
  { url: "#", text: "Child" },
54
66
  { url: "#", text: "Grandchild" },
55
67
  ],
56
- id: "init-breadcrumbs",
68
+ className: undefined,
69
+ colorVariant: undefined,
70
+ id: "breadcrumbs-id",
57
71
  }}
58
72
  >
59
- {(args) => <Breadcrumbs {...args} />}
73
+ {(args) => (
74
+ <Breadcrumbs
75
+ {...args}
76
+ colorVariant={enumValues.getValue(args.colorVariant)}
77
+ />
78
+ )}
60
79
  </Story>
61
80
  </Canvas>
62
81
 
63
- <ArgsTable story="Breadcrumbs Props" />
82
+ <ArgsTable story="Breadcrumbs with Controls" />
64
83
 
65
84
  ### Long Titles
66
85
 
@@ -1,14 +1,14 @@
1
+ import { ButtonGroup, VStack } from "@chakra-ui/react";
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
- import { ButtonGroup } from "@chakra-ui/react";
10
10
 
11
- import Button from "./Button";
11
+ import Button, { ButtonElementType } from "./Button";
12
12
  import { ButtonTypes } from "./ButtonTypes";
13
13
  import Icon from "../Icons/Icon";
14
14
  import {
@@ -17,9 +17,11 @@ import {
17
17
  IconRotationTypes,
18
18
  IconSizes,
19
19
  } from "../Icons/IconTypes";
20
- import getCSSVariable from "../../helpers/getCSSVariable";
21
20
  import { getCategory } from "../../utils/componentCategories";
22
21
  import DSProvider from "../../theme/provider";
22
+ import { getStorybookEnumValues } from "../../utils/utils";
23
+
24
+ export const enumValues = getStorybookEnumValues(ButtonTypes, "ButtonTypes");
23
25
 
24
26
  <Meta
25
27
  title={getCategory("Button")}
@@ -32,6 +34,30 @@ import DSProvider from "../../theme/provider";
32
34
  },
33
35
  jest: ["Button.test.tsx"],
34
36
  }}
37
+ argTypes={{
38
+ additionalStyles: { control: false },
39
+ attributes: { control: false },
40
+ buttonText: { description: "Only used for Storybook" },
41
+ buttonType: {
42
+ control: { type: "select" },
43
+ table: { defaultValue: { summary: "ButtonType.Primary" } },
44
+ options: enumValues.options,
45
+ },
46
+ className: { control: false },
47
+ displayIcon: { description: "Only used for Storybook." },
48
+ displayIconLeft: {
49
+ description: "Move the icon left or right. Only used for Storybook.",
50
+ },
51
+ iconType: {
52
+ control: { type: "select" },
53
+ options: Object.values(IconNames).map((value) => value),
54
+ description: "Select the icon. Only used for Storybook.",
55
+ },
56
+ id: { control: false },
57
+ isDisabled: { table: { defaultValue: { summary: false } } },
58
+ mouseDown: { table: { defaultValue: { summary: false } } },
59
+ onClick: { control: false },
60
+ }}
35
61
  />
36
62
 
37
63
  # Button
@@ -39,7 +65,7 @@ import DSProvider from "../../theme/provider";
39
65
  | Component Version | DS Version |
40
66
  | ----------------- | ---------- |
41
67
  | Added | `0.0.4` |
42
- | Latest | `0.25.4` |
68
+ | Latest | `0.25.9` |
43
69
 
44
70
  <Description of={Button} />
45
71
 
@@ -51,7 +77,6 @@ that can be rendered.
51
77
  - `ButtonTypes.Callout` is used for call to action text such as "Donate".
52
78
  - `ButtonTypes.Pill` is used for equally weighted actions within cards and always in a set.
53
79
  - `ButtonTypes.Link` is used for equally weighted actions in a text based list.
54
- - `ButtonTypes.SearchBar` is a variant only used in the `SearchBar` component.
55
80
  - `ButtonTypes.NoBrand` is a variant used when there is no brand and will display
56
81
  the background color as black.
57
82
 
@@ -59,16 +84,53 @@ When one and only one `Icon` component is passed inside a `Button` component wit
59
84
  no text, it will automatically be configured to use the `"iconOnly"` type.
60
85
 
61
86
  <Canvas withToolbar>
62
- <Story name="Basic">{(args) => <Button {...args}>Button Text</Button>}</Story>
87
+ <Story
88
+ name="Button with Controls"
89
+ args={{
90
+ additionalStyles: undefined,
91
+ attributes: undefined,
92
+ buttonText: "Button Text",
93
+ buttonType: "ButtonTypes.Primary",
94
+ className: undefined,
95
+ displayIcon: false,
96
+ displayIconLeft: true,
97
+ iconType: IconNames.Search,
98
+ id: "button-id",
99
+ isDisabled: false,
100
+ mouseDown: undefined,
101
+ onClick: undefined,
102
+ type: "button",
103
+ }}
104
+ >
105
+ {(args) => (
106
+ <Button {...args} buttonType={enumValues.getValue(args.buttonType)}>
107
+ {args.displayIcon && args.displayIconLeft && (
108
+ <Icon
109
+ name={args.iconType}
110
+ align={IconAlign.Left}
111
+ size={IconSizes.Small}
112
+ />
113
+ )}
114
+ {args.buttonText}
115
+ {args.displayIcon && !args.displayIconLeft && (
116
+ <Icon
117
+ name={args.iconType}
118
+ align={IconAlign.Right}
119
+ size={IconSizes.Small}
120
+ />
121
+ )}
122
+ </Button>
123
+ )}
124
+ </Story>
63
125
  </Canvas>
64
126
 
65
- <ArgsTable story="Basic" />
127
+ <ArgsTable story="Button with Controls" />
66
128
 
67
129
  ## Button Groups
68
130
 
69
131
  Primary and secondary buttons should be grouped like in the following example.
70
132
  The `ButtonGroup` component, which is directly exported from Chakra UI, should
71
- be used to wrap the `Button` cmoponent.
133
+ be used to wrap the `Button` component.
72
134
 
73
135
  <Canvas>
74
136
  <Story name="Button Groups">
@@ -83,45 +145,28 @@ be used to wrap the `Button` cmoponent.
83
145
 
84
146
  The `Icon` component collaborates great with the `Button` component. Check out
85
147
  [`src/components/Icons/IconTypes`](https://github.com/NYPL/nypl-design-system/blob/development/src/components/Icons/IconTypes.tsx)
86
- to see the full list of icon and logo names that can be rendered. Use the
87
- Controls for this Story section to preview a `Button` with the selected icon.
148
+ to see the full list of icon and logo names that can be rendered.
88
149
 
89
150
  <Canvas>
90
- <Story
91
- name="With Icon"
92
- args={{
93
- displayLeft: true,
94
- buttonText: "Button Text",
95
- iconType: IconNames.Search,
96
- }}
97
- argTypes={{
98
- iconType: {
99
- control: {
100
- type: "select",
101
- },
102
- options: Object.values(IconNames).map((value) => value),
103
- },
104
- }}
105
- >
106
- {(args) => (
107
- <Button {...args}>
108
- {args.displayLeft && (
109
- <Icon
110
- name={args.iconType}
111
- align={IconAlign.Left}
112
- size={IconSizes.Small}
113
- />
114
- )}
115
- {args.buttonText}
116
- {!args.displayLeft && (
117
- <Icon
118
- name={args.iconType}
119
- align={IconAlign.Right}
120
- size={IconSizes.Small}
121
- />
122
- )}
151
+ <Story name="With Icon">
152
+ <VStack align="left" width="150px">
153
+ <Button>
154
+ <Icon
155
+ name={IconNames.Search}
156
+ align={IconAlign.Left}
157
+ size={IconSizes.Small}
158
+ />
159
+ Button Text
123
160
  </Button>
124
- )}
161
+ <Button>
162
+ Button Text
163
+ <Icon
164
+ name={IconNames.Search}
165
+ align={IconAlign.Right}
166
+ size={IconSizes.Small}
167
+ />
168
+ </Button>
169
+ </VStack>
125
170
  </Story>
126
171
  </Canvas>
127
172
 
@@ -150,17 +150,6 @@ describe("Button Snapshot", () => {
150
150
  </Button>
151
151
  )
152
152
  .toJSON();
153
- const searchBar = renderer
154
- .create(
155
- <Button
156
- id="button"
157
- onClick={jest.fn()}
158
- buttonType={ButtonTypes.SearchBar}
159
- >
160
- SearchBar
161
- </Button>
162
- )
163
- .toJSON();
164
153
  const noBrand = renderer
165
154
  .create(
166
155
  <Button
@@ -179,7 +168,6 @@ describe("Button Snapshot", () => {
179
168
  expect(callout).toMatchSnapshot();
180
169
  expect(pill).toMatchSnapshot();
181
170
  expect(link).toMatchSnapshot();
182
- expect(searchBar).toMatchSnapshot();
183
171
  expect(noBrand).toMatchSnapshot();
184
172
  });
185
173
  });
@@ -6,25 +6,25 @@ import Icon from "../Icons/Icon";
6
6
  import { getVariant } from "../../utils/utils";
7
7
  import generateUUID from "../../helpers/generateUUID";
8
8
 
9
- type ButtonElementType = "submit" | "button" | "reset";
9
+ export type ButtonElementType = "submit" | "button" | "reset";
10
10
 
11
11
  interface ButtonProps {
12
12
  /** Optionally pass in additional Chakra-based styles. */
13
13
  additionalStyles?: { [key: string]: any };
14
- /** Additional attributes passed to the button */
14
+ /** Additional attributes passed to the button. */
15
15
  attributes?: { [key: string]: any };
16
- /** The kind of button assigned through the `ButtonTypes` enum */
16
+ /** The kind of button assigned through the `ButtonTypes` enum. */
17
17
  buttonType?: ButtonTypes;
18
18
  /** Additional className to use. */
19
19
  className?: string;
20
- /** ID that other components can cross reference for accessibility purposes */
20
+ /** ID that other components can cross reference for accessibility purposes. */
21
21
  id?: string;
22
- /** Adds 'disabled' property to the button */
22
+ /** Adds 'disabled' property to the button. */
23
23
  isDisabled?: boolean;
24
24
  /** Trigger the Button's action through the `mouseDown` event handler instead
25
25
  * of `onClick`. `false` by default. */
26
26
  mouseDown?: boolean;
27
- /** The action to perform on the `<button>`'s onClick function */
27
+ /** The action to perform on the `<button>`'s onClick function. */
28
28
  onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
29
29
  /** The HTML button type attribute. */
30
30
  type?: ButtonElementType;
@@ -40,8 +40,8 @@ function Button(props: React.PropsWithChildren<ButtonProps>) {
40
40
  buttonType,
41
41
  children,
42
42
  className = "",
43
- isDisabled,
44
43
  id = generateUUID(),
44
+ isDisabled = false,
45
45
  mouseDown = false,
46
46
  onClick,
47
47
  type = "button",
@@ -4,6 +4,5 @@ export enum ButtonTypes {
4
4
  Callout = "callout",
5
5
  Pill = "pill",
6
6
  Link = "link",
7
- SearchBar = "searchBar",
8
7
  NoBrand = "noBrand",
9
8
  }
@@ -74,18 +74,6 @@ exports[`Button Snapshot Renders the UI snapshot correctly 6`] = `
74
74
  `;
75
75
 
76
76
  exports[`Button Snapshot Renders the UI snapshot correctly 7`] = `
77
- <button
78
- className="chakra-button css-0"
79
- data-testid="button"
80
- id="button"
81
- onClick={[MockFunction]}
82
- type="button"
83
- >
84
- SearchBar
85
- </button>
86
- `;
87
-
88
- exports[`Button Snapshot Renders the UI snapshot correctly 8`] = `
89
77
  <button
90
78
  className="chakra-button css-0"
91
79
  data-testid="button"