@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.
- package/CHANGELOG.md +91 -1
- package/README.md +1 -1
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
- 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 +1 -21
- package/dist/components/Icons/IconTypes.d.ts +1 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Image/ImageTypes.d.ts +3 -1
- package/dist/components/Link/LinkTypes.d.ts +1 -0
- 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 +4 -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 +5 -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 +48 -0
- package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
- package/dist/design-system-react-components.cjs.development.js +5989 -5490
- 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 +6057 -5551
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +9 -0
- 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/notification.d.ts +8 -4
- 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 +71 -0
- package/dist/theme/foundations/spacing.d.ts +2 -0
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +2 -3
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +15 -14
- 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 +50 -14
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +20 -0
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +198 -0
- 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 -8
- 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 +246 -64
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +26 -13
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
- 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 +14 -17
- 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.test.tsx +8 -6
- package/src/components/DatePicker/DatePicker.tsx +10 -6
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
- 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 -75
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +2 -42
- package/src/components/Icons/IconTypes.tsx +1 -24
- package/src/components/Image/Image.stories.mdx +214 -104
- package/src/components/Image/Image.test.tsx +10 -0
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Image/ImageTypes.ts +2 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +21 -20
- package/src/components/Link/Link.stories.mdx +103 -53
- package/src/components/Link/Link.test.tsx +108 -7
- package/src/components/Link/Link.tsx +58 -19
- package/src/components/Link/LinkTypes.tsx +1 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -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 +96 -40
- package/src/components/Notification/Notification.test.tsx +62 -16
- package/src/components/Notification/Notification.tsx +26 -9
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
- package/src/components/Pagination/Pagination.stories.mdx +18 -8
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
- 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 +114 -22
- package/src/components/SearchBar/SearchBar.stories.mdx +111 -33
- package/src/components/SearchBar/SearchBar.tsx +57 -33
- package/src/components/Select/Select.stories.mdx +177 -66
- package/src/components/Select/Select.test.tsx +2 -2
- package/src/components/Select/Select.tsx +22 -12
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +74 -23
- package/src/components/Slider/Slider.test.tsx +35 -0
- package/src/components/Slider/Slider.tsx +22 -11
- 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 +57 -49
- 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 +200 -0
- package/src/components/Toggle/Toggle.test.tsx +140 -0
- package/src/components/Toggle/Toggle.tsx +123 -0
- package/src/components/Toggle/ToggleSizes.tsx +4 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +13 -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 +14 -4
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +9 -7
- 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 +7 -7
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/icon.ts +2 -2
- package/src/theme/components/image.ts +9 -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 +9 -7
- 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 +69 -0
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/spacing.ts +3 -0
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +8 -0
- package/src/utils/componentCategories.ts +4 -2
- 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
|
@@ -54,6 +54,22 @@ exports[`Image Renders the UI snapshot correctly 5`] = `
|
|
|
54
54
|
`;
|
|
55
55
|
|
|
56
56
|
exports[`Image Renders the UI snapshot correctly 6`] = `
|
|
57
|
+
<img
|
|
58
|
+
alt=""
|
|
59
|
+
className="css-0"
|
|
60
|
+
src="test.png"
|
|
61
|
+
/>
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
exports[`Image Renders the UI snapshot correctly 7`] = `
|
|
65
|
+
<img
|
|
66
|
+
alt=""
|
|
67
|
+
className="css-0"
|
|
68
|
+
src="test.png"
|
|
69
|
+
/>
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
exports[`Image Renders the UI snapshot correctly 8`] = `
|
|
57
73
|
<div
|
|
58
74
|
className="the-wrap css-0"
|
|
59
75
|
>
|
|
@@ -69,7 +85,7 @@ exports[`Image Renders the UI snapshot correctly 6`] = `
|
|
|
69
85
|
</div>
|
|
70
86
|
`;
|
|
71
87
|
|
|
72
|
-
exports[`Image Renders the UI snapshot correctly
|
|
88
|
+
exports[`Image Renders the UI snapshot correctly 9`] = `
|
|
73
89
|
<div
|
|
74
90
|
className="the-wrap css-0"
|
|
75
91
|
>
|
|
@@ -85,7 +101,7 @@ exports[`Image Renders the UI snapshot correctly 7`] = `
|
|
|
85
101
|
</div>
|
|
86
102
|
`;
|
|
87
103
|
|
|
88
|
-
exports[`Image Renders the UI snapshot correctly
|
|
104
|
+
exports[`Image Renders the UI snapshot correctly 10`] = `
|
|
89
105
|
<img
|
|
90
106
|
alt=""
|
|
91
107
|
className="css-0"
|
|
@@ -93,7 +109,7 @@ exports[`Image Renders the UI snapshot correctly 8`] = `
|
|
|
93
109
|
/>
|
|
94
110
|
`;
|
|
95
111
|
|
|
96
|
-
exports[`Image Renders the UI snapshot correctly
|
|
112
|
+
exports[`Image Renders the UI snapshot correctly 11`] = `
|
|
97
113
|
<div
|
|
98
114
|
className="the-wrap css-0"
|
|
99
115
|
>
|
|
@@ -109,7 +125,7 @@ exports[`Image Renders the UI snapshot correctly 9`] = `
|
|
|
109
125
|
</div>
|
|
110
126
|
`;
|
|
111
127
|
|
|
112
|
-
exports[`Image Renders the UI snapshot correctly
|
|
128
|
+
exports[`Image Renders the UI snapshot correctly 12`] = `
|
|
113
129
|
<div
|
|
114
130
|
className="the-wrap css-0"
|
|
115
131
|
>
|
|
@@ -125,7 +141,7 @@ exports[`Image Renders the UI snapshot correctly 10`] = `
|
|
|
125
141
|
</div>
|
|
126
142
|
`;
|
|
127
143
|
|
|
128
|
-
exports[`Image Renders the UI snapshot correctly
|
|
144
|
+
exports[`Image Renders the UI snapshot correctly 13`] = `
|
|
129
145
|
<div
|
|
130
146
|
className="the-wrap css-0"
|
|
131
147
|
>
|
|
@@ -141,7 +157,7 @@ exports[`Image Renders the UI snapshot correctly 11`] = `
|
|
|
141
157
|
</div>
|
|
142
158
|
`;
|
|
143
159
|
|
|
144
|
-
exports[`Image Renders the UI snapshot correctly
|
|
160
|
+
exports[`Image Renders the UI snapshot correctly 14`] = `
|
|
145
161
|
<div
|
|
146
162
|
className="the-wrap css-0"
|
|
147
163
|
>
|
|
@@ -157,7 +173,7 @@ exports[`Image Renders the UI snapshot correctly 12`] = `
|
|
|
157
173
|
</div>
|
|
158
174
|
`;
|
|
159
175
|
|
|
160
|
-
exports[`Image Renders the UI snapshot correctly
|
|
176
|
+
exports[`Image Renders the UI snapshot correctly 15`] = `
|
|
161
177
|
<div
|
|
162
178
|
className="the-wrap css-0"
|
|
163
179
|
>
|
|
@@ -173,7 +189,7 @@ exports[`Image Renders the UI snapshot correctly 13`] = `
|
|
|
173
189
|
</div>
|
|
174
190
|
`;
|
|
175
191
|
|
|
176
|
-
exports[`Image Renders the UI snapshot correctly
|
|
192
|
+
exports[`Image Renders the UI snapshot correctly 16`] = `
|
|
177
193
|
<div
|
|
178
194
|
className="the-wrap css-0"
|
|
179
195
|
>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { Box } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
3
|
ArgsTable,
|
|
4
|
+
Canvas,
|
|
6
5
|
Description,
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
9
9
|
|
|
10
10
|
import Label from "./Label";
|
|
11
11
|
import { getCategory } from "../../utils/componentCategories";
|
|
@@ -17,8 +17,15 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
17
17
|
jest: ["Label.test.tsx"],
|
|
18
18
|
}}
|
|
19
19
|
argTypes={{
|
|
20
|
-
className: {
|
|
21
|
-
id: {
|
|
20
|
+
className: { control: false },
|
|
21
|
+
id: { control: false },
|
|
22
|
+
optReqFlag: {
|
|
23
|
+
control: { type: "select" },
|
|
24
|
+
options: ["Required", "Optional", ""],
|
|
25
|
+
},
|
|
26
|
+
text: {
|
|
27
|
+
description: "Only used for Storybook",
|
|
28
|
+
},
|
|
22
29
|
}}
|
|
23
30
|
/>
|
|
24
31
|
|
|
@@ -27,32 +34,26 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
27
34
|
| Component Version | DS Version |
|
|
28
35
|
| ----------------- | ---------- |
|
|
29
36
|
| Added | `0.0.10` |
|
|
30
|
-
| Latest | `0.25.
|
|
37
|
+
| Latest | `0.25.8` |
|
|
31
38
|
|
|
32
39
|
<Description of={Label} />
|
|
33
40
|
|
|
34
41
|
<Canvas>
|
|
35
42
|
<Story
|
|
36
|
-
name="Label"
|
|
43
|
+
name="Label with Controls"
|
|
37
44
|
args={{
|
|
38
|
-
|
|
39
|
-
optReqFlag: "Required",
|
|
45
|
+
className: undefined,
|
|
40
46
|
htmlFor: "id-of-input-element",
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
control: {
|
|
45
|
-
type: "select",
|
|
46
|
-
},
|
|
47
|
-
options: ["Required", "Optional", ""],
|
|
48
|
-
},
|
|
47
|
+
id: "label-id",
|
|
48
|
+
optReqFlag: "Required",
|
|
49
|
+
text: "A label for a villager.",
|
|
49
50
|
}}
|
|
50
51
|
>
|
|
51
52
|
{(args) => <Label {...args}>{args.text}</Label>}
|
|
52
53
|
</Story>
|
|
53
54
|
</Canvas>
|
|
54
55
|
|
|
55
|
-
<ArgsTable story="Label" />
|
|
56
|
+
<ArgsTable story="Label with Controls" />
|
|
56
57
|
|
|
57
58
|
## Required/Optional helper text
|
|
58
59
|
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
import { VStack } from "@chakra-ui/react";
|
|
1
2
|
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
3
|
ArgsTable,
|
|
4
|
+
Canvas,
|
|
6
5
|
Description,
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
9
9
|
import {
|
|
10
10
|
BrowserRouter as Router,
|
|
11
11
|
Link as ReactRouterLink,
|
|
12
12
|
} from "react-router-dom";
|
|
13
|
-
import {
|
|
13
|
+
import { withDesign } from "storybook-addon-designs";
|
|
14
14
|
|
|
15
15
|
import Link from "./Link";
|
|
16
16
|
import { LinkTypes } from "./LinkTypes";
|
|
17
17
|
import Icon from "../Icons/Icon";
|
|
18
|
-
import { IconAlign, IconSizes } from "../Icons/IconTypes";
|
|
18
|
+
import { IconAlign, IconNames, IconSizes } from "../Icons/IconTypes";
|
|
19
19
|
import { getCategory } from "../../utils/componentCategories";
|
|
20
20
|
import DSProvider from "../../theme/provider";
|
|
21
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
22
|
+
|
|
23
|
+
export const enumValues = getStorybookEnumValues(LinkTypes, "LinkTypes");
|
|
21
24
|
|
|
22
25
|
<Meta
|
|
23
26
|
title={getCategory("Link")}
|
|
@@ -26,19 +29,20 @@ import DSProvider from "../../theme/provider";
|
|
|
26
29
|
parameters={{
|
|
27
30
|
design: {
|
|
28
31
|
type: "figma",
|
|
29
|
-
url:
|
|
30
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36854%3A24387",
|
|
32
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36854%3A24387",
|
|
31
33
|
},
|
|
32
34
|
jest: ["Link.test.tsx"],
|
|
33
35
|
}}
|
|
34
36
|
argTypes={{
|
|
35
|
-
|
|
37
|
+
additionalStyles: { control: false },
|
|
38
|
+
attributes: { control: false },
|
|
36
39
|
children: { table: { disable: true } },
|
|
40
|
+
key: { table: { disable: true } },
|
|
41
|
+
ref: { table: { disable: true } },
|
|
37
42
|
type: {
|
|
38
|
-
control: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
options: LinkTypes,
|
|
43
|
+
control: { type: "select" },
|
|
44
|
+
table: { defaultValue: { summary: "LinkTypes.Default" } },
|
|
45
|
+
options: enumValues.options,
|
|
42
46
|
},
|
|
43
47
|
}}
|
|
44
48
|
/>
|
|
@@ -48,29 +52,34 @@ import DSProvider from "../../theme/provider";
|
|
|
48
52
|
| Component Version | DS Version |
|
|
49
53
|
| ----------------- | ---------- |
|
|
50
54
|
| Added | `0.0.4` |
|
|
51
|
-
| Latest | `0.25.
|
|
55
|
+
| Latest | `0.25.9` |
|
|
52
56
|
|
|
53
57
|
<Description of={Link} />
|
|
54
58
|
|
|
55
59
|
<Canvas withToolbar>
|
|
56
60
|
<Story
|
|
57
|
-
name="
|
|
61
|
+
name="Link with Controls"
|
|
58
62
|
args={{
|
|
59
|
-
|
|
60
|
-
type: LinkTypes.Action,
|
|
61
|
-
href: "https://nypl.org",
|
|
62
|
-
className: "custom-class",
|
|
63
|
+
additionalStyles: undefined,
|
|
63
64
|
attributes: {
|
|
64
65
|
rel: "nofollow",
|
|
65
66
|
onClick: (e) => e.preventDefault(),
|
|
66
67
|
},
|
|
68
|
+
className: "custom-class",
|
|
69
|
+
href: "https://nypl.org",
|
|
70
|
+
id: "nypl-link",
|
|
71
|
+
type: "LinkTypes.Action",
|
|
67
72
|
}}
|
|
68
73
|
>
|
|
69
|
-
{(args) =>
|
|
74
|
+
{(args) => (
|
|
75
|
+
<Link {...args} type={enumValues.getValue(args.type)}>
|
|
76
|
+
Link
|
|
77
|
+
</Link>
|
|
78
|
+
)}
|
|
70
79
|
</Story>
|
|
71
80
|
</Canvas>
|
|
72
81
|
|
|
73
|
-
<ArgsTable story="
|
|
82
|
+
<ArgsTable story="Link with Controls" />
|
|
74
83
|
|
|
75
84
|
## Links With Icons
|
|
76
85
|
|
|
@@ -90,12 +99,20 @@ links with icons. Icons can be rendered to the left or right of the link text.
|
|
|
90
99
|
Clock Link
|
|
91
100
|
</Link>
|
|
92
101
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
93
|
-
<Icon
|
|
102
|
+
<Icon
|
|
103
|
+
name={IconNames.Check}
|
|
104
|
+
align={IconAlign.Left}
|
|
105
|
+
size={IconSizes.Small}
|
|
106
|
+
/>
|
|
94
107
|
Check Link
|
|
95
108
|
</Link>
|
|
96
109
|
<Link type={LinkTypes.Action} href="#passed-in-link-right">
|
|
97
110
|
Check Link Right
|
|
98
|
-
<Icon
|
|
111
|
+
<Icon
|
|
112
|
+
name={IconNames.Check}
|
|
113
|
+
align={IconAlign.Right}
|
|
114
|
+
size={IconSizes.Small}
|
|
115
|
+
/>
|
|
99
116
|
</Link>
|
|
100
117
|
</VStack>
|
|
101
118
|
</Story>
|
|
@@ -103,8 +120,29 @@ links with icons. Icons can be rendered to the left or right of the link text.
|
|
|
103
120
|
|
|
104
121
|
## Anchor Element Rendering
|
|
105
122
|
|
|
106
|
-
`Link` can wrap an existing `<a>`
|
|
107
|
-
an `<a>`
|
|
123
|
+
`Link` can wrap an existing `<a>` element (and `Icon` component) or it
|
|
124
|
+
can use the `href` prop to generate an `<a>` element.
|
|
125
|
+
|
|
126
|
+
```jsx
|
|
127
|
+
// Existing anchor element
|
|
128
|
+
<Link type={LinkTypes.Action}>
|
|
129
|
+
<a href="#existing-anchor-tag">link</a>
|
|
130
|
+
</Link>
|
|
131
|
+
|
|
132
|
+
// Also works with an icon component. Make sure to wrap the icon and anchor
|
|
133
|
+
// in a single element for this pattern.
|
|
134
|
+
<Link type={LinkTypes.Action}>
|
|
135
|
+
<>
|
|
136
|
+
<Icon name={IconNames.Check} align={IconAlign.Left} size={IconSizes.Small} />
|
|
137
|
+
<a href="#existing-anchor-tag">check link</a>
|
|
138
|
+
</>
|
|
139
|
+
</Link>
|
|
140
|
+
|
|
141
|
+
// Otherwise, the `href` prop will generate an `<a>` tag.
|
|
142
|
+
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
143
|
+
link
|
|
144
|
+
</Link>
|
|
145
|
+
```
|
|
108
146
|
|
|
109
147
|
<Canvas>
|
|
110
148
|
<Story name="Anchor Element Rendering">
|
|
@@ -113,11 +151,23 @@ an `<a>` tag.
|
|
|
113
151
|
<Link type={LinkTypes.Action}>
|
|
114
152
|
<a href="#existing-anchor-tag">link</a>
|
|
115
153
|
</Link>{" "}
|
|
116
|
-
with the <a>
|
|
154
|
+
with the <a> element as a child of the `Link` component. This is a{" "}
|
|
117
155
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
118
156
|
link
|
|
119
157
|
</Link>{" "}
|
|
120
|
-
where the Link component uses the `href` prop and has a string-only
|
|
158
|
+
where the `Link` component uses the `href` prop and has a string-only
|
|
159
|
+
child. Finally, this is a{" "}
|
|
160
|
+
<Link type={LinkTypes.Action}>
|
|
161
|
+
<>
|
|
162
|
+
<Icon
|
|
163
|
+
name={IconNames.Check}
|
|
164
|
+
align={IconAlign.Left}
|
|
165
|
+
size={IconSizes.Small}
|
|
166
|
+
/>
|
|
167
|
+
<a href="#existing-anchor-tag">link</a>
|
|
168
|
+
</>
|
|
169
|
+
</Link>{" "}
|
|
170
|
+
with a check icon.
|
|
121
171
|
</>
|
|
122
172
|
</Story>
|
|
123
173
|
</Canvas>
|
|
@@ -145,9 +195,11 @@ an `<a>` tag.
|
|
|
145
195
|
|
|
146
196
|
The Design System's `Link` component should wrap around `react-router`'s own
|
|
147
197
|
`Link` component. To avoid name conflicts, rename either the Design System's
|
|
148
|
-
or `react-router`'s `Link` component.
|
|
198
|
+
or `react-router`'s `Link` component. Any of the following patterns are valid.
|
|
149
199
|
|
|
150
200
|
```jsx
|
|
201
|
+
// In this first example, React Router's `Link` component
|
|
202
|
+
// is renamed as `ReactRouterLink`.
|
|
151
203
|
import {
|
|
152
204
|
BrowserRouter as Router,
|
|
153
205
|
Link as ReactRouterLink,
|
|
@@ -158,8 +210,9 @@ import { Link, LinkTypes } from "@nypl/design-system-react-components";
|
|
|
158
210
|
<ReactRouterLink to="#">Next Page</ReactRouterLink>
|
|
159
211
|
</Link>;
|
|
160
212
|
|
|
161
|
-
//
|
|
162
|
-
|
|
213
|
+
// In this second example, React Router's `Link` component
|
|
214
|
+
// is not renamed but the DS's `Link` component is renamed
|
|
215
|
+
// to `DSLink`.
|
|
163
216
|
import { BrowserRouter, Link } from "react-router-dom";
|
|
164
217
|
import {
|
|
165
218
|
Link as DSLink,
|
|
@@ -170,8 +223,9 @@ import {
|
|
|
170
223
|
<Link to="#">Next Page</Link>
|
|
171
224
|
</DSLink>;
|
|
172
225
|
|
|
173
|
-
//
|
|
174
|
-
|
|
226
|
+
// In this third example, React Router's `Link` component
|
|
227
|
+
// is not renamed and the DS's `Link` component is
|
|
228
|
+
// imported and rendered as `DS.Link`.
|
|
175
229
|
import { BrowserRouter, Link } from "react-router-dom";
|
|
176
230
|
import DS from "@nypl/design-system-react-components";
|
|
177
231
|
|
|
@@ -201,34 +255,30 @@ pages in a NextJS app.
|
|
|
201
255
|
```jsx
|
|
202
256
|
import { Link, LinkTypes } from "@nypl/design-system-react-components";
|
|
203
257
|
|
|
204
|
-
|
|
258
|
+
/**
|
|
259
|
+
* This is just an example wrapper that works similarly to NextJS' `Link`
|
|
205
260
|
* component. In real life, NextJS's `Link` component will pass down the
|
|
206
261
|
* `href` and `passHref` props and a `ref` to make routing functional.
|
|
207
262
|
*/
|
|
208
|
-
export const NextJsLink = (props: HTMLAnchorElement) =>
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
);
|
|
217
|
-
|
|
263
|
+
export const NextJsLink = (props: HTMLAnchorElement) =>
|
|
264
|
+
React.cloneElement(
|
|
265
|
+
props.children,
|
|
266
|
+
{ ...props },
|
|
267
|
+
props.children.props.children
|
|
268
|
+
);
|
|
269
|
+
|
|
270
|
+
// Note that NextJS' `href` and `passHref` props are required.
|
|
218
271
|
<NextJsLink href="#" passHref>
|
|
219
272
|
<Link type={LinkTypes.Action}>Next Page</Link>
|
|
220
273
|
</NextJsLink>;
|
|
221
274
|
```
|
|
222
275
|
|
|
223
|
-
export const NextJsLink = (props) =>
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
)}
|
|
230
|
-
</div>
|
|
231
|
-
);
|
|
276
|
+
export const NextJsLink = (props) =>
|
|
277
|
+
React.cloneElement(
|
|
278
|
+
props.children,
|
|
279
|
+
{ ...props },
|
|
280
|
+
props.children.props.children
|
|
281
|
+
);
|
|
232
282
|
|
|
233
283
|
<Canvas>
|
|
234
284
|
<DSProvider>
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import { render, screen } from "@testing-library/react";
|
|
3
2
|
import { axe } from "jest-axe";
|
|
4
|
-
|
|
5
|
-
import Link from "./Link";
|
|
6
|
-
import { LinkTypes } from "./LinkTypes";
|
|
3
|
+
import * as React from "react";
|
|
7
4
|
import {
|
|
8
5
|
BrowserRouter as Router,
|
|
9
6
|
Link as ReactRouterLink,
|
|
10
7
|
} from "react-router-dom";
|
|
8
|
+
import renderer from "react-test-renderer";
|
|
9
|
+
|
|
10
|
+
import Link from "./Link";
|
|
11
|
+
import { LinkTypes } from "./LinkTypes";
|
|
11
12
|
import Icon from "../Icons/Icon";
|
|
12
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
IconAlign,
|
|
15
|
+
IconNames,
|
|
16
|
+
IconRotationTypes,
|
|
17
|
+
IconSizes,
|
|
18
|
+
} from "../Icons/IconTypes";
|
|
13
19
|
|
|
14
20
|
describe("Link Accessibility", () => {
|
|
15
21
|
it("passes axe accessibility test for children component", async () => {
|
|
@@ -120,11 +126,11 @@ describe("Link", () => {
|
|
|
120
126
|
|
|
121
127
|
it("throws an error if text is passed but no url is passed", () => {
|
|
122
128
|
expect(() => render(<Link>Test</Link>)).toThrowError(
|
|
123
|
-
"Link needs
|
|
129
|
+
"`Link` needs the `href` prop."
|
|
124
130
|
);
|
|
125
131
|
});
|
|
126
132
|
|
|
127
|
-
it("throws an error if more than one child is passed", () => {
|
|
133
|
+
it("throws an error if more than one child element is passed", () => {
|
|
128
134
|
expect(() =>
|
|
129
135
|
render(
|
|
130
136
|
<Link>
|
|
@@ -139,6 +145,101 @@ describe("Link", () => {
|
|
|
139
145
|
).toThrowError("Please pass only one child into `Link`.");
|
|
140
146
|
});
|
|
141
147
|
|
|
148
|
+
it("renders the UI snapshot correctly", () => {
|
|
149
|
+
const standard = renderer
|
|
150
|
+
.create(
|
|
151
|
+
<Link href="#passed-in-link" id="standard-link" type={LinkTypes.Action}>
|
|
152
|
+
Standard
|
|
153
|
+
</Link>
|
|
154
|
+
)
|
|
155
|
+
.toJSON();
|
|
156
|
+
const typeForwards = renderer
|
|
157
|
+
.create(
|
|
158
|
+
<Link
|
|
159
|
+
href="#passed-in-link"
|
|
160
|
+
id="forwards-link"
|
|
161
|
+
type={LinkTypes.Forwards}
|
|
162
|
+
>
|
|
163
|
+
Forwards
|
|
164
|
+
</Link>
|
|
165
|
+
)
|
|
166
|
+
.toJSON();
|
|
167
|
+
const typeBackwards = renderer
|
|
168
|
+
.create(
|
|
169
|
+
<Link
|
|
170
|
+
href="#passed-in-link"
|
|
171
|
+
id="backwards-link"
|
|
172
|
+
type={LinkTypes.Backwards}
|
|
173
|
+
>
|
|
174
|
+
Backwards
|
|
175
|
+
</Link>
|
|
176
|
+
)
|
|
177
|
+
.toJSON();
|
|
178
|
+
const typeExternal = renderer
|
|
179
|
+
.create(
|
|
180
|
+
<Link
|
|
181
|
+
href="#passed-in-link"
|
|
182
|
+
id="external-link"
|
|
183
|
+
type={LinkTypes.External}
|
|
184
|
+
>
|
|
185
|
+
External
|
|
186
|
+
</Link>
|
|
187
|
+
)
|
|
188
|
+
.toJSON();
|
|
189
|
+
const typeButton = renderer
|
|
190
|
+
.create(
|
|
191
|
+
<Link href="#passed-in-link" id="button-link" type={LinkTypes.Button}>
|
|
192
|
+
Button
|
|
193
|
+
</Link>
|
|
194
|
+
)
|
|
195
|
+
.toJSON();
|
|
196
|
+
const withIconChild = renderer
|
|
197
|
+
.create(
|
|
198
|
+
<Link href="#passed-in-link" id="icon-link" type={LinkTypes.Action}>
|
|
199
|
+
<Icon
|
|
200
|
+
align={IconAlign.Left}
|
|
201
|
+
className="more-link"
|
|
202
|
+
iconRotation={IconRotationTypes.Rotate0}
|
|
203
|
+
id="link-icon"
|
|
204
|
+
name={IconNames.Download}
|
|
205
|
+
/>
|
|
206
|
+
Download
|
|
207
|
+
</Link>
|
|
208
|
+
)
|
|
209
|
+
.toJSON();
|
|
210
|
+
const withAchorChild = renderer
|
|
211
|
+
.create(
|
|
212
|
+
<Link id="anchor-link" type={LinkTypes.Action}>
|
|
213
|
+
<a href="#existing-anchor-tag">check link</a>
|
|
214
|
+
</Link>
|
|
215
|
+
)
|
|
216
|
+
.toJSON();
|
|
217
|
+
const withAchorChildAndIcon = renderer
|
|
218
|
+
.create(
|
|
219
|
+
<Link id="anchor-icon-link" type={LinkTypes.Action}>
|
|
220
|
+
<>
|
|
221
|
+
<Icon
|
|
222
|
+
align={IconAlign.Left}
|
|
223
|
+
id="link-icon"
|
|
224
|
+
name={IconNames.Check}
|
|
225
|
+
size={IconSizes.Small}
|
|
226
|
+
/>
|
|
227
|
+
<a href="#existing-anchor-tag">check link</a>
|
|
228
|
+
</>
|
|
229
|
+
</Link>
|
|
230
|
+
)
|
|
231
|
+
.toJSON();
|
|
232
|
+
|
|
233
|
+
expect(standard).toMatchSnapshot();
|
|
234
|
+
expect(typeForwards).toMatchSnapshot();
|
|
235
|
+
expect(typeBackwards).toMatchSnapshot();
|
|
236
|
+
expect(typeExternal).toMatchSnapshot();
|
|
237
|
+
expect(typeButton).toMatchSnapshot();
|
|
238
|
+
expect(withIconChild).toMatchSnapshot();
|
|
239
|
+
expect(withAchorChild).toMatchSnapshot();
|
|
240
|
+
expect(withAchorChildAndIcon).toMatchSnapshot();
|
|
241
|
+
});
|
|
242
|
+
|
|
142
243
|
// TODO:
|
|
143
244
|
// it("Passes the ref to the input element", () => {
|
|
144
245
|
// const ref = React.createRef<HTMLAnchorElement>();
|