@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.
- package/CHANGELOG.md +45 -1
- package/README.md +1 -1
- package/dist/components/Button/Button.d.ts +6 -6
- package/dist/components/Button/ButtonTypes.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
- package/dist/components/DatePicker/DatePicker.d.ts +3 -2
- package/dist/components/Form/Form.d.ts +2 -2
- package/dist/components/Heading/Heading.d.ts +7 -3
- package/dist/components/Heading/HeadingTypes.d.ts +6 -6
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
- package/dist/components/Icons/Icon.d.ts +4 -4
- package/dist/components/Icons/IconSvgs.d.ts +0 -21
- package/dist/components/Icons/IconTypes.d.ts +0 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +18 -0
- package/dist/components/Logo/LogoTypes.d.ts +30 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +2 -2
- package/dist/components/Placeholder/Placeholder.d.ts +3 -5
- package/dist/components/Radio/Radio.d.ts +6 -5
- package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
- package/dist/components/SearchBar/SearchBar.d.ts +10 -2
- package/dist/components/Select/Select.d.ts +3 -2
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
- package/dist/components/Slider/Slider.d.ts +3 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
- package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
- package/dist/components/Table/Table.d.ts +23 -0
- package/dist/components/Template/Template.d.ts +8 -3
- package/dist/components/Text/Text.d.ts +2 -2
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/Toggle/Toggle.d.ts +3 -2
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
- package/dist/design-system-react-components.cjs.development.js +5630 -5692
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +4304 -4362
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/styles.css +2 -2
- package/dist/theme/components/button.d.ts +0 -12
- package/dist/theme/components/card.d.ts +14 -2
- package/dist/theme/components/customTable.d.ts +47 -0
- package/dist/theme/components/fieldset.d.ts +2 -2
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/heading.d.ts +4 -0
- package/dist/theme/components/label.d.ts +1 -1
- package/dist/theme/components/link.d.ts +14 -1
- package/dist/theme/components/list.d.ts +0 -2
- package/dist/theme/components/logo.d.ts +4 -0
- package/dist/theme/components/searchBar.d.ts +7 -13
- package/dist/theme/components/select.d.ts +1 -0
- package/dist/theme/components/structuredContent.d.ts +33 -0
- package/dist/theme/components/template.d.ts +10 -10
- package/dist/theme/components/textInput.d.ts +2 -0
- package/dist/theme/components/toggle.d.ts +8 -5
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +1 -2
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +14 -12
- package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
- package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
- package/src/components/Autosuggest/_Autosuggest.scss +2 -6
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +30 -11
- package/src/components/Button/Button.stories.mdx +93 -48
- package/src/components/Button/Button.test.tsx +0 -12
- package/src/components/Button/Button.tsx +7 -7
- package/src/components/Button/ButtonTypes.tsx +0 -1
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
- package/src/components/Card/Card.stories.mdx +186 -71
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +17 -5
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +8 -2
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Grid.stories.mdx +3 -3
- package/src/components/Chakra/Stack.stories.mdx +2 -2
- package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
- package/src/components/Checkbox/Checkbox.tsx +13 -8
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
- package/src/components/DatePicker/DatePicker.tsx +10 -6
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +36 -18
- package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
- package/src/components/Form/Form.stories.mdx +49 -41
- package/src/components/Form/Form.tsx +5 -4
- package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
- package/src/components/Heading/Heading.stories.mdx +59 -23
- package/src/components/Heading/Heading.test.tsx +82 -18
- package/src/components/Heading/Heading.tsx +31 -31
- package/src/components/Heading/HeadingTypes.tsx +6 -6
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
- package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
- package/src/components/Hero/Hero.stories.mdx +72 -53
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
- package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
- package/src/components/Icons/Icon.stories.mdx +77 -76
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +0 -42
- package/src/components/Icons/IconTypes.tsx +0 -24
- package/src/components/Image/Image.stories.mdx +66 -18
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Label/Label.stories.mdx +20 -19
- package/src/components/Link/Link.stories.mdx +102 -51
- package/src/components/Link/Link.test.tsx +38 -8
- package/src/components/Link/Link.tsx +19 -12
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
- package/src/components/List/List.stories.mdx +36 -24
- package/src/components/Logo/Logo.stories.mdx +220 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +34 -0
- package/src/components/Logo/LogoTypes.tsx +32 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
- package/src/components/Modal/Modal.stories.mdx +20 -5
- package/src/components/Modal/Modal.tsx +2 -8
- package/src/components/Notification/Notification.stories.mdx +61 -38
- package/src/components/Notification/Notification.tsx +9 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
- package/src/components/Pagination/Pagination.stories.mdx +17 -6
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
- package/src/components/Radio/Radio.stories.mdx +39 -19
- package/src/components/Radio/Radio.tsx +13 -9
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.tsx +15 -11
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
- package/src/components/SearchBar/SearchBar.Test.tsx +58 -10
- package/src/components/SearchBar/SearchBar.stories.mdx +109 -30
- package/src/components/SearchBar/SearchBar.tsx +53 -32
- package/src/components/Select/Select.stories.mdx +48 -14
- package/src/components/Select/Select.tsx +16 -10
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +72 -22
- package/src/components/Slider/Slider.tsx +15 -10
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
- package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
- package/src/components/StatusBadge/StatusBadge.tsx +2 -1
- package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
- package/src/components/StructuredContent/StructuredContent.tsx +153 -0
- package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
- package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
- package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
- package/src/components/StyleGuide/ColorCard.tsx +1 -2
- package/src/components/StyleGuide/Colors.stories.mdx +3 -11
- package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
- package/src/components/StyleGuide/Forms.stories.mdx +2 -10
- package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
- package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
- package/src/components/StyleGuide/Typography.stories.mdx +64 -76
- package/src/components/Table/Table.stories.mdx +66 -0
- package/src/components/Table/Table.test.tsx +60 -0
- package/src/components/Table/Table.tsx +116 -0
- package/src/components/Tabs/Tabs.stories.mdx +19 -13
- package/src/components/Tabs/Tabs.test.tsx +1 -1
- package/src/components/Template/Template.stories.mdx +56 -47
- package/src/components/Template/Template.test.tsx +65 -5
- package/src/components/Template/Template.tsx +35 -5
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
- package/src/components/Text/Text.stories.mdx +33 -11
- package/src/components/Text/Text.tsx +2 -2
- package/src/components/TextInput/TextInput.stories.mdx +84 -17
- package/src/components/TextInput/TextInput.test.tsx +96 -0
- package/src/components/TextInput/TextInput.tsx +12 -8
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
- package/src/components/Toggle/Toggle.stories.mdx +33 -9
- package/src/components/Toggle/Toggle.tsx +14 -9
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
- package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +5 -4
- package/src/styles/base/_03-base.scss +1 -1
- package/src/styles/base/_place-holder.scss +7 -7
- package/src/styles.scss +1 -5
- package/src/theme/components/breadcrumb.ts +3 -3
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +5 -2
- package/src/theme/components/checkbox.ts +1 -1
- package/src/theme/components/customTable.ts +50 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +6 -6
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +1 -3
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +1 -1
- package/src/theme/components/searchBar.ts +7 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +54 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +1 -0
- package/src/theme/components/toggle.ts +9 -5
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +6 -0
- package/src/utils/componentCategories.ts +1 -1
- package/src/utils/utils.ts +17 -0
- package/dist/__tests__/utils/bem.test.d.ts +0 -1
- package/dist/components/CardEdition/CardEdition.d.ts +0 -21
- package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
- package/dist/components/Input/Input.d.ts +0 -36
- package/dist/components/Input/Input.stories.d.ts +0 -29
- package/dist/components/Input/InputTypes.d.ts +0 -6
- package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
- package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
- package/dist/helpers/getCSSVariable.d.ts +0 -1
- package/dist/interfaces.d.ts +0 -3
- package/dist/utils/bem.d.ts +0 -1
- package/src/__tests__/utils/bem.test.ts +0 -37
- package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
- package/src/components/CardEdition/CardEdition.test.tsx +0 -395
- package/src/components/CardEdition/CardEdition.tsx +0 -60
- package/src/components/CardEdition/_CardEdition.scss +0 -137
- package/src/components/Input/Input.stories.tsx +0 -133
- package/src/components/Input/Input.test.tsx +0 -266
- package/src/components/Input/Input.tsx +0 -81
- package/src/components/Input/InputTypes.tsx +0 -8
- package/src/components/Input/_Input.scss +0 -78
- package/src/components/StyleGuide/UIDocCard.tsx +0 -36
- package/src/helpers/CSSVariablesHelper.tsx +0 -34
- package/src/helpers/getCSSVariable.tsx +0 -5
- package/src/interfaces.ts +0 -3
- 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
|
-
|
|
8
|
-
|
|
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 {
|
|
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: {
|
|
31
|
-
id: {
|
|
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="
|
|
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="
|
|
123
|
+
<ArgsTable story="Accordion with Controls" />
|
|
122
124
|
|
|
123
125
|
## FAQ example
|
|
124
126
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Meta, Story
|
|
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
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
<
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
|
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
|
-
|
|
68
|
+
className: undefined,
|
|
69
|
+
colorVariant: undefined,
|
|
70
|
+
id: "breadcrumbs-id",
|
|
57
71
|
}}
|
|
58
72
|
>
|
|
59
|
-
{(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
|
|
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
|
-
|
|
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.
|
|
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
|
|
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="
|
|
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`
|
|
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.
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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",
|
|
@@ -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"
|