@nypl/design-system-react-components 0.25.13 → 0.27.0
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 +85 -0
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +11 -9
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +5 -4
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +2 -1
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Image/Image.d.ts +2 -2
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +2 -0
- package/dist/components/Logo/LogoTypes.d.ts +2 -0
- package/dist/components/Modal/Modal.d.ts +28 -8
- package/dist/components/Notification/Notification.d.ts +4 -4
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +4 -6
- package/dist/components/RadioGroup/RadioGroup.d.ts +12 -6
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +10 -6
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +4 -3
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +2 -2
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +4 -3
- package/dist/components/Template/Template.d.ts +4 -3
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +5 -5
- package/dist/components/Toggle/Toggle.d.ts +3 -4
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1767 -1180
- 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 +1774 -1188
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +5 -2
- package/dist/styles.css +1 -1
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +42 -22
- package/dist/theme/components/checkbox.d.ts +5 -4
- package/dist/theme/components/checkboxGroup.d.ts +1 -1
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +4 -14
- package/dist/theme/components/global.d.ts +23 -17
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +20 -14
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/radio.d.ts +6 -4
- package/dist/theme/components/radioGroup.d.ts +1 -1
- package/dist/theme/components/select.d.ts +28 -5
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +6 -3
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +18 -6
- package/dist/theme/components/toggle.d.ts +7 -4
- package/dist/theme/foundations/global.d.ts +2 -0
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/package.json +17 -19
- package/src/components/Accordion/Accordion.stories.mdx +9 -9
- package/src/components/Accordion/Accordion.test.tsx +21 -0
- package/src/components/Accordion/Accordion.tsx +13 -9
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +276 -27
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +21 -5
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +52 -31
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +8 -7
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +287 -194
- package/src/components/Card/Card.test.tsx +102 -0
- package/src/components/Card/Card.tsx +73 -32
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +196 -36
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +62 -10
- package/src/components/Checkbox/Checkbox.test.tsx +32 -9
- package/src/components/Checkbox/Checkbox.tsx +20 -15
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +134 -7
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +65 -17
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +137 -81
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +31 -21
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +332 -97
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +89 -13
- package/src/components/DatePicker/DatePicker.tsx +62 -56
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +72 -39
- package/src/components/Form/Form.test.tsx +58 -15
- package/src/components/Form/Form.tsx +89 -67
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +34 -6
- package/src/components/Grid/SimpleGrid.test.tsx +9 -0
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +36 -3
- package/src/components/Heading/Heading.test.tsx +10 -0
- package/src/components/Heading/Heading.tsx +56 -50
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +26 -7
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +125 -95
- package/src/components/Hero/Hero.test.tsx +33 -0
- package/src/components/Hero/Hero.tsx +135 -126
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -19
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -26
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +31 -6
- package/src/components/Icons/Icon.test.tsx +38 -0
- package/src/components/Icons/Icon.tsx +93 -76
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +29 -5
- package/src/components/Image/Image.test.tsx +8 -0
- package/src/components/Image/Image.tsx +38 -26
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -15
- package/src/components/Link/Link.test.tsx +21 -22
- package/src/components/Link/Link.tsx +8 -8
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +67 -19
- package/src/components/List/List.tsx +38 -25
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +30 -6
- package/src/components/Logo/Logo.test.tsx +17 -0
- package/src/components/Logo/Logo.tsx +18 -6
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +2 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +256 -136
- package/src/components/Modal/Modal.test.tsx +151 -9
- package/src/components/Modal/Modal.tsx +140 -20
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -0
- package/src/components/Notification/Notification.stories.mdx +25 -1
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +46 -44
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +25 -6
- package/src/components/Pagination/Pagination.test.tsx +25 -0
- package/src/components/Pagination/Pagination.tsx +6 -6
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +81 -11
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +17 -9
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +64 -12
- package/src/components/Radio/Radio.test.tsx +28 -8
- package/src/components/Radio/Radio.tsx +66 -63
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +103 -6
- package/src/components/RadioGroup/RadioGroup.stories.mdx +224 -89
- package/src/components/RadioGroup/RadioGroup.test.tsx +122 -62
- package/src/components/RadioGroup/RadioGroup.tsx +106 -100
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1236 -1020
- package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
- package/src/components/SearchBar/SearchBar.tsx +17 -8
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +128 -49
- package/src/components/Select/Select.test.tsx +63 -16
- package/src/components/Select/Select.tsx +131 -92
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +765 -425
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +42 -10
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +8 -0
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +76 -72
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +91 -42
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +26 -19
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +16 -0
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +131 -12
- package/src/components/StructuredContent/StructuredContent.test.tsx +34 -0
- package/src/components/StructuredContent/StructuredContent.tsx +80 -75
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +1 -1
- package/src/components/StyleGuide/Colors.stories.mdx +1 -2
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +30 -21
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +15 -0
- package/src/components/Table/Table.tsx +7 -7
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +52 -3
- package/src/components/Tabs/Tabs.test.tsx +16 -0
- package/src/components/Tabs/Tabs.tsx +10 -6
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +47 -43
- package/src/components/Template/Template.test.tsx +33 -0
- package/src/components/Template/Template.tsx +65 -60
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +191 -20
- package/src/components/Text/Text.stories.mdx +20 -1
- package/src/components/Text/Text.test.tsx +12 -0
- package/src/components/Text/Text.tsx +6 -4
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +65 -19
- package/src/components/TextInput/TextInput.test.tsx +42 -28
- package/src/components/TextInput/TextInput.tsx +121 -113
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +80 -22
- package/src/components/Toggle/Toggle.test.tsx +27 -9
- package/src/components/Toggle/Toggle.tsx +22 -18
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +128 -5
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +23 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +133 -126
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +50 -9
- package/src/docs/Welcome.stories.mdx +160 -41
- package/src/hooks/useCarouselStyles.stories.mdx +22 -2
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +30 -6
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +5 -2
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles.scss +0 -1
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +30 -19
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +1 -1
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +1 -2
- package/src/theme/components/global.ts +25 -20
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +13 -15
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +2 -2
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +1 -1
- package/src/theme/components/select.ts +31 -22
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +8 -7
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +17 -10
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +1 -1
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +2 -2
- package/src/utils/componentCategories.ts +1 -2
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/Modal/_Modal.scss +0 -18
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -118,7 +118,7 @@ exports[`Image Renders the UI snapshot correctly 9`] = `
|
|
|
118
118
|
|
|
119
119
|
exports[`Image Renders the UI snapshot correctly 10`] = `
|
|
120
120
|
<div
|
|
121
|
-
className="the-wrap
|
|
121
|
+
className="the-wrap css-1u8qly9"
|
|
122
122
|
>
|
|
123
123
|
<div
|
|
124
124
|
className="the-crop css-0"
|
|
@@ -134,7 +134,7 @@ exports[`Image Renders the UI snapshot correctly 10`] = `
|
|
|
134
134
|
|
|
135
135
|
exports[`Image Renders the UI snapshot correctly 11`] = `
|
|
136
136
|
<div
|
|
137
|
-
className="the-wrap
|
|
137
|
+
className="the-wrap css-1u8qly9"
|
|
138
138
|
>
|
|
139
139
|
<div
|
|
140
140
|
className="the-crop css-0"
|
|
@@ -158,7 +158,7 @@ exports[`Image Renders the UI snapshot correctly 12`] = `
|
|
|
158
158
|
|
|
159
159
|
exports[`Image Renders the UI snapshot correctly 13`] = `
|
|
160
160
|
<div
|
|
161
|
-
className="the-wrap
|
|
161
|
+
className="the-wrap css-1u8qly9"
|
|
162
162
|
>
|
|
163
163
|
<div
|
|
164
164
|
className="the-crop css-0"
|
|
@@ -174,7 +174,7 @@ exports[`Image Renders the UI snapshot correctly 13`] = `
|
|
|
174
174
|
|
|
175
175
|
exports[`Image Renders the UI snapshot correctly 14`] = `
|
|
176
176
|
<div
|
|
177
|
-
className="the-wrap
|
|
177
|
+
className="the-wrap css-1u8qly9"
|
|
178
178
|
>
|
|
179
179
|
<div
|
|
180
180
|
className="the-crop css-0"
|
|
@@ -190,7 +190,7 @@ exports[`Image Renders the UI snapshot correctly 14`] = `
|
|
|
190
190
|
|
|
191
191
|
exports[`Image Renders the UI snapshot correctly 15`] = `
|
|
192
192
|
<div
|
|
193
|
-
className="the-wrap
|
|
193
|
+
className="the-wrap css-1u8qly9"
|
|
194
194
|
>
|
|
195
195
|
<div
|
|
196
196
|
className="the-crop css-0"
|
|
@@ -206,7 +206,7 @@ exports[`Image Renders the UI snapshot correctly 15`] = `
|
|
|
206
206
|
|
|
207
207
|
exports[`Image Renders the UI snapshot correctly 16`] = `
|
|
208
208
|
<div
|
|
209
|
-
className="the-wrap
|
|
209
|
+
className="the-wrap css-1u8qly9"
|
|
210
210
|
>
|
|
211
211
|
<div
|
|
212
212
|
className="the-crop css-0"
|
|
@@ -222,7 +222,7 @@ exports[`Image Renders the UI snapshot correctly 16`] = `
|
|
|
222
222
|
|
|
223
223
|
exports[`Image Renders the UI snapshot correctly 17`] = `
|
|
224
224
|
<div
|
|
225
|
-
className="the-wrap
|
|
225
|
+
className="the-wrap css-1u8qly9"
|
|
226
226
|
>
|
|
227
227
|
<div
|
|
228
228
|
className="the-crop css-0"
|
|
@@ -238,7 +238,7 @@ exports[`Image Renders the UI snapshot correctly 17`] = `
|
|
|
238
238
|
|
|
239
239
|
exports[`Image Renders the UI snapshot correctly 18`] = `
|
|
240
240
|
<div
|
|
241
|
-
className="the-wrap
|
|
241
|
+
className="the-wrap css-1u8qly9"
|
|
242
242
|
>
|
|
243
243
|
<div
|
|
244
244
|
className="the-crop css-0"
|
|
@@ -251,3 +251,19 @@ exports[`Image Renders the UI snapshot correctly 18`] = `
|
|
|
251
251
|
</div>
|
|
252
252
|
</div>
|
|
253
253
|
`;
|
|
254
|
+
|
|
255
|
+
exports[`Image Renders the UI snapshot correctly 19`] = `
|
|
256
|
+
<img
|
|
257
|
+
alt=""
|
|
258
|
+
className="css-0"
|
|
259
|
+
src="test.png"
|
|
260
|
+
/>
|
|
261
|
+
`;
|
|
262
|
+
|
|
263
|
+
exports[`Image Renders the UI snapshot correctly 20`] = `
|
|
264
|
+
<img
|
|
265
|
+
alt=""
|
|
266
|
+
className="css-0"
|
|
267
|
+
src="test.png"
|
|
268
|
+
/>
|
|
269
|
+
`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Box } from "@chakra-ui/react";
|
|
1
|
+
import { Box, VStack } from "@chakra-ui/react";
|
|
2
2
|
import {
|
|
3
3
|
ArgsTable,
|
|
4
4
|
Canvas,
|
|
@@ -19,10 +19,7 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
19
19
|
argTypes={{
|
|
20
20
|
className: { control: false },
|
|
21
21
|
id: { control: false },
|
|
22
|
-
|
|
23
|
-
control: { type: "select" },
|
|
24
|
-
options: ["Required", "Optional", ""],
|
|
25
|
-
},
|
|
22
|
+
isInlined: { table: { disable: true } },
|
|
26
23
|
text: {
|
|
27
24
|
description: "Only used for Storybook",
|
|
28
25
|
},
|
|
@@ -34,10 +31,21 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
34
31
|
| Component Version | DS Version |
|
|
35
32
|
| ----------------- | ---------- |
|
|
36
33
|
| Added | `0.0.10` |
|
|
37
|
-
| Latest | `0.
|
|
34
|
+
| Latest | `0.26.0` |
|
|
35
|
+
|
|
36
|
+
## Table of Contents
|
|
37
|
+
|
|
38
|
+
- [Overview](#overview)
|
|
39
|
+
- [Component Props](#component-props)
|
|
40
|
+
- [Accessibility](#accessibility)
|
|
41
|
+
- [isRequired helper text](#isrequired-helper-text)
|
|
42
|
+
|
|
43
|
+
## Overview
|
|
38
44
|
|
|
39
45
|
<Description of={Label} />
|
|
40
46
|
|
|
47
|
+
## Component Props
|
|
48
|
+
|
|
41
49
|
<Canvas>
|
|
42
50
|
<Story
|
|
43
51
|
name="Label with Controls"
|
|
@@ -45,7 +53,7 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
45
53
|
className: undefined,
|
|
46
54
|
htmlFor: "id-of-input-element",
|
|
47
55
|
id: "label-id",
|
|
48
|
-
|
|
56
|
+
isRequired: false,
|
|
49
57
|
text: "A label for a villager.",
|
|
50
58
|
}}
|
|
51
59
|
>
|
|
@@ -55,24 +63,38 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
55
63
|
|
|
56
64
|
<ArgsTable story="Label with Controls" />
|
|
57
65
|
|
|
58
|
-
##
|
|
66
|
+
## Accessibility
|
|
67
|
+
|
|
68
|
+
The `Label` component is an accessible HTML `<label>` element. The JSX prop
|
|
69
|
+
`htmlFor` should be set to the `id` of the input element that the label is
|
|
70
|
+
associated with. This is the proper way to label inputs so that screenreaders
|
|
71
|
+
can read the label, without the use of the `aria-label` attribute on the input
|
|
72
|
+
element.
|
|
73
|
+
|
|
74
|
+
Note: All form-related Reservoir components already implement this `Label`
|
|
75
|
+
component so there is no need to use this component unless if you are building
|
|
76
|
+
a new form-related input component.
|
|
77
|
+
|
|
78
|
+
Resources:
|
|
79
|
+
|
|
80
|
+
- [WebAIM Creating Accessible Forms](https://webaim.org/techniques/forms/advanced)
|
|
81
|
+
|
|
82
|
+
## isRequired helper text
|
|
59
83
|
|
|
60
84
|
An optional helper string can be rendered at the end of the `Label` text through
|
|
61
|
-
the `
|
|
62
|
-
|
|
85
|
+
the `isRequired` prop. This is useful for visually labeling a field as required
|
|
86
|
+
with the `"(Required)"` text next to the label's text. This is set to `false`
|
|
87
|
+
by default.
|
|
63
88
|
|
|
64
89
|
<Canvas>
|
|
65
|
-
<Story name="
|
|
66
|
-
<
|
|
67
|
-
<Label htmlFor="
|
|
68
|
-
|
|
69
|
-
</Label>
|
|
70
|
-
<Label htmlFor="some-id2" optReqFlag="Required">
|
|
71
|
-
Required helper text
|
|
90
|
+
<Story name="isRequired helper text">
|
|
91
|
+
<VStack>
|
|
92
|
+
<Label htmlFor="label-id1" id="regular">
|
|
93
|
+
A regular label
|
|
72
94
|
</Label>
|
|
73
|
-
<Label htmlFor="
|
|
74
|
-
|
|
95
|
+
<Label htmlFor="label-id2" id="required" isRequired>
|
|
96
|
+
A label that is required
|
|
75
97
|
</Label>
|
|
76
|
-
</
|
|
98
|
+
</VStack>
|
|
77
99
|
</Story>
|
|
78
100
|
</Canvas>
|
|
@@ -14,6 +14,15 @@ describe("Label Accessibility", () => {
|
|
|
14
14
|
);
|
|
15
15
|
expect(await axe(container)).toHaveNoViolations();
|
|
16
16
|
});
|
|
17
|
+
|
|
18
|
+
it("passes axe accessibility test with required text", async () => {
|
|
19
|
+
const { container } = render(
|
|
20
|
+
<Label id="label" htmlFor="some-input-id" isRequired>
|
|
21
|
+
Cupcakes
|
|
22
|
+
</Label>
|
|
23
|
+
);
|
|
24
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
25
|
+
});
|
|
17
26
|
});
|
|
18
27
|
|
|
19
28
|
describe("Label", () => {
|
|
@@ -35,30 +44,33 @@ describe("Label", () => {
|
|
|
35
44
|
expect(screen.getByText("Cupcakes")).toBeInTheDocument();
|
|
36
45
|
});
|
|
37
46
|
|
|
38
|
-
it("renders the
|
|
47
|
+
it("renders the '(Required)' helper text", () => {
|
|
39
48
|
const { rerender } = render(
|
|
40
49
|
<Label id="label" htmlFor="some-input-id">
|
|
41
50
|
<span>Cupcakes</span>
|
|
42
51
|
</Label>
|
|
43
52
|
);
|
|
44
|
-
expect(screen.queryByText(
|
|
45
|
-
expect(screen.queryByText("Required")).not.toBeInTheDocument();
|
|
53
|
+
expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
|
|
46
54
|
|
|
47
55
|
rerender(
|
|
48
|
-
<Label id="
|
|
56
|
+
<Label id="label" htmlFor="some-input-id" isRequired>
|
|
49
57
|
<span>Cupcakes</span>
|
|
50
58
|
</Label>
|
|
51
59
|
);
|
|
52
|
-
expect(screen.getByText("Optional")).toBeInTheDocument();
|
|
53
|
-
expect(screen.queryByText("Required")).not.toBeInTheDocument();
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
expect(screen.queryByText(/Required/i)).toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("Logs a warning when there is no `id` passed", () => {
|
|
65
|
+
const warn = jest.spyOn(console, "warn");
|
|
66
|
+
render(
|
|
67
|
+
// @ts-ignore: Typescript complains when a required prop is not passed, but
|
|
68
|
+
// here we don't want to pass the required prop to make sure the warning appears.
|
|
69
|
+
<Label htmlFor="some-input-id">Cupcakes</Label>
|
|
70
|
+
);
|
|
71
|
+
expect(warn).toHaveBeenCalledWith(
|
|
72
|
+
"NYPL Reservoir Label: This component's required `id` prop was not passed."
|
|
59
73
|
);
|
|
60
|
-
expect(screen.queryByText("Optional")).not.toBeInTheDocument();
|
|
61
|
-
expect(screen.getByText("Required")).toBeInTheDocument();
|
|
62
74
|
});
|
|
63
75
|
|
|
64
76
|
it("Renders the UI snapshot correctly", () => {
|
|
@@ -69,23 +81,36 @@ describe("Label", () => {
|
|
|
69
81
|
</Label>
|
|
70
82
|
)
|
|
71
83
|
.toJSON();
|
|
72
|
-
const
|
|
84
|
+
const required = renderer
|
|
73
85
|
.create(
|
|
74
|
-
<Label id="
|
|
86
|
+
<Label id="label3" htmlFor="some-input-id" isRequired>
|
|
75
87
|
Cupcakes
|
|
76
88
|
</Label>
|
|
77
89
|
)
|
|
78
90
|
.toJSON();
|
|
79
|
-
const
|
|
91
|
+
const withChakraProps = renderer
|
|
92
|
+
.create(
|
|
93
|
+
<Label
|
|
94
|
+
id="chakra"
|
|
95
|
+
htmlFor="some-input-id"
|
|
96
|
+
p="20px"
|
|
97
|
+
color="ui.error.primary"
|
|
98
|
+
>
|
|
99
|
+
Cupcakes
|
|
100
|
+
</Label>
|
|
101
|
+
)
|
|
102
|
+
.toJSON();
|
|
103
|
+
const withOtherProps = renderer
|
|
80
104
|
.create(
|
|
81
|
-
<Label id="
|
|
105
|
+
<Label id="props" htmlFor="some-input-id" data-testid="props">
|
|
82
106
|
Cupcakes
|
|
83
107
|
</Label>
|
|
84
108
|
)
|
|
85
109
|
.toJSON();
|
|
86
110
|
|
|
87
111
|
expect(simple).toMatchSnapshot();
|
|
88
|
-
expect(optional).toMatchSnapshot();
|
|
89
112
|
expect(required).toMatchSnapshot();
|
|
113
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
114
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
90
115
|
});
|
|
91
116
|
});
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
+
import { Box, chakra, useStyleConfig } from "@chakra-ui/react";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
3
|
-
|
|
4
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
5
|
-
|
|
6
|
-
type optReqFlagType = "Required" | "Optional" | "" | undefined;
|
|
7
3
|
|
|
8
4
|
interface LabelProps {
|
|
9
5
|
/** Additional CSS class name to render in the `label` element. */
|
|
@@ -12,22 +8,34 @@ interface LabelProps {
|
|
|
12
8
|
htmlFor: string;
|
|
13
9
|
/** ID that other components can cross reference for accessibility purposes */
|
|
14
10
|
id?: string;
|
|
15
|
-
/**
|
|
16
|
-
|
|
11
|
+
/** Controls whether the label should be inline with the input it goes with.
|
|
12
|
+
* This prop should only be used internally. */
|
|
13
|
+
isInlined?: boolean;
|
|
14
|
+
/** Controls whether the "(Required)" text should be displayed alongside the
|
|
15
|
+
* label's text. False by default. */
|
|
16
|
+
isRequired?: boolean;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* A label for form inputs. It should never be used alone.
|
|
21
21
|
*/
|
|
22
|
-
|
|
22
|
+
export const Label = chakra((props: React.PropsWithChildren<LabelProps>) => {
|
|
23
23
|
const {
|
|
24
24
|
children,
|
|
25
25
|
className,
|
|
26
26
|
htmlFor,
|
|
27
|
-
id
|
|
28
|
-
|
|
27
|
+
id,
|
|
28
|
+
isInlined = false,
|
|
29
|
+
isRequired = false,
|
|
30
|
+
...rest
|
|
29
31
|
} = props;
|
|
30
|
-
const styles =
|
|
32
|
+
const styles = useStyleConfig("Label", { isInlined });
|
|
33
|
+
|
|
34
|
+
if (!id) {
|
|
35
|
+
console.warn(
|
|
36
|
+
"NYPL Reservoir Label: This component's required `id` prop was not passed."
|
|
37
|
+
);
|
|
38
|
+
}
|
|
31
39
|
|
|
32
40
|
return (
|
|
33
41
|
<Box
|
|
@@ -36,11 +44,12 @@ function Label(props: React.PropsWithChildren<LabelProps>) {
|
|
|
36
44
|
className={className}
|
|
37
45
|
htmlFor={htmlFor}
|
|
38
46
|
__css={styles}
|
|
47
|
+
{...rest}
|
|
39
48
|
>
|
|
40
49
|
{children}
|
|
41
|
-
{
|
|
50
|
+
{isRequired && <span> (Required)</span>}
|
|
42
51
|
</Box>
|
|
43
52
|
);
|
|
44
|
-
}
|
|
53
|
+
});
|
|
45
54
|
|
|
46
55
|
export default Label;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Label Renders the UI snapshot correctly 1`] = `
|
|
4
4
|
<label
|
|
5
|
-
className="css-
|
|
5
|
+
className="css-1xdhyk6"
|
|
6
6
|
htmlFor="some-input-id"
|
|
7
7
|
id="label"
|
|
8
8
|
>
|
|
@@ -12,30 +12,34 @@ exports[`Label Renders the UI snapshot correctly 1`] = `
|
|
|
12
12
|
|
|
13
13
|
exports[`Label Renders the UI snapshot correctly 2`] = `
|
|
14
14
|
<label
|
|
15
|
-
className="css-
|
|
15
|
+
className="css-1xdhyk6"
|
|
16
16
|
htmlFor="some-input-id"
|
|
17
|
-
id="
|
|
17
|
+
id="label3"
|
|
18
18
|
>
|
|
19
19
|
Cupcakes
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
>
|
|
23
|
-
Optional
|
|
24
|
-
</div>
|
|
20
|
+
<span>
|
|
21
|
+
(Required)
|
|
22
|
+
</span>
|
|
25
23
|
</label>
|
|
26
24
|
`;
|
|
27
25
|
|
|
28
26
|
exports[`Label Renders the UI snapshot correctly 3`] = `
|
|
29
27
|
<label
|
|
30
|
-
className="css-
|
|
28
|
+
className="css-kle7zy"
|
|
31
29
|
htmlFor="some-input-id"
|
|
32
|
-
id="
|
|
30
|
+
id="chakra"
|
|
31
|
+
>
|
|
32
|
+
Cupcakes
|
|
33
|
+
</label>
|
|
34
|
+
`;
|
|
35
|
+
|
|
36
|
+
exports[`Label Renders the UI snapshot correctly 4`] = `
|
|
37
|
+
<label
|
|
38
|
+
className="css-1xdhyk6"
|
|
39
|
+
data-testid="props"
|
|
40
|
+
htmlFor="some-input-id"
|
|
41
|
+
id="props"
|
|
33
42
|
>
|
|
34
43
|
Cupcakes
|
|
35
|
-
<div
|
|
36
|
-
className="css-0"
|
|
37
|
-
>
|
|
38
|
-
Required
|
|
39
|
-
</div>
|
|
40
44
|
</label>
|
|
41
45
|
`;
|
|
@@ -6,10 +6,6 @@ import {
|
|
|
6
6
|
Meta,
|
|
7
7
|
Story,
|
|
8
8
|
} from "@storybook/addon-docs";
|
|
9
|
-
import {
|
|
10
|
-
BrowserRouter as Router,
|
|
11
|
-
Link as ReactRouterLink,
|
|
12
|
-
} from "react-router-dom";
|
|
13
9
|
import { withDesign } from "storybook-addon-designs";
|
|
14
10
|
|
|
15
11
|
import Link from "./Link";
|
|
@@ -52,10 +48,23 @@ export const enumValues = getStorybookEnumValues(LinkTypes, "LinkTypes");
|
|
|
52
48
|
| Component Version | DS Version |
|
|
53
49
|
| ----------------- | ---------- |
|
|
54
50
|
| Added | `0.0.4` |
|
|
55
|
-
| Latest | `0.
|
|
51
|
+
| Latest | `0.26.0` |
|
|
52
|
+
|
|
53
|
+
## Table of Contents
|
|
54
|
+
|
|
55
|
+
- [Overview](#overview)
|
|
56
|
+
- [Component Props](#component-props)
|
|
57
|
+
- [Accessibility](#accessibility)
|
|
58
|
+
- [Links With Icons](#links-with-icons)
|
|
59
|
+
- [Anchor Element Rendering](#anchor-element-rendering)
|
|
60
|
+
- [Link with Routers](#link-with-routers)
|
|
61
|
+
|
|
62
|
+
## Overview
|
|
56
63
|
|
|
57
64
|
<Description of={Link} />
|
|
58
65
|
|
|
66
|
+
## Component Props
|
|
67
|
+
|
|
59
68
|
<Canvas withToolbar>
|
|
60
69
|
<Story
|
|
61
70
|
name="Link with Controls"
|
|
@@ -81,6 +90,17 @@ export const enumValues = getStorybookEnumValues(LinkTypes, "LinkTypes");
|
|
|
81
90
|
|
|
82
91
|
<ArgsTable story="Link with Controls" />
|
|
83
92
|
|
|
93
|
+
## Accessibility
|
|
94
|
+
|
|
95
|
+
The `Link` component should be used for navigation. If an `onClick` user
|
|
96
|
+
interface action is required, a `Button` component should be used instead. The
|
|
97
|
+
`Link` component renders an `<a>` element with the `href` attribute.
|
|
98
|
+
|
|
99
|
+
Resources:
|
|
100
|
+
|
|
101
|
+
- [W3C WAI Link Examples](https://www.w3.org/TR/wai-aria-practices-1.1/examples/link/link.html)
|
|
102
|
+
- [Yale Usability & Web Accessibility Links](https://usability.yale.edu/web-accessibility/articles/links)
|
|
103
|
+
|
|
84
104
|
## Links With Icons
|
|
85
105
|
|
|
86
106
|
To render an `Icon` as part of the link, make sure that the `Link` component
|
|
@@ -234,16 +254,6 @@ import DS from "@nypl/design-system-react-components";
|
|
|
234
254
|
</DS.Link>;
|
|
235
255
|
```
|
|
236
256
|
|
|
237
|
-
<Canvas>
|
|
238
|
-
<DSProvider>
|
|
239
|
-
<Router>
|
|
240
|
-
<Link type={LinkTypes.Action}>
|
|
241
|
-
<ReactRouterLink to="#">Next Page</ReactRouterLink>
|
|
242
|
-
</Link>
|
|
243
|
-
</Router>
|
|
244
|
-
</DSProvider>
|
|
245
|
-
</Canvas>
|
|
246
|
-
|
|
247
257
|
### NextJS
|
|
248
258
|
|
|
249
259
|
NextJS's `Link` component should wrap the Design System's `Link` component.
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { render, screen } from "@testing-library/react";
|
|
2
2
|
import { axe } from "jest-axe";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import {
|
|
5
|
-
BrowserRouter as Router,
|
|
6
|
-
Link as ReactRouterLink,
|
|
7
|
-
} from "react-router-dom";
|
|
8
4
|
import renderer from "react-test-renderer";
|
|
9
5
|
|
|
10
6
|
import Link from "./Link";
|
|
@@ -106,24 +102,6 @@ describe("Link", () => {
|
|
|
106
102
|
expect(screen.getByRole("link")).toBeInTheDocument();
|
|
107
103
|
});
|
|
108
104
|
|
|
109
|
-
it("Can pass in a ReactRouter Link", () => {
|
|
110
|
-
render(
|
|
111
|
-
<Router>
|
|
112
|
-
<Link type={LinkTypes.Action}>
|
|
113
|
-
<ReactRouterLink to="#">
|
|
114
|
-
<Icon
|
|
115
|
-
name={IconNames.Download}
|
|
116
|
-
align={IconAlign.Left}
|
|
117
|
-
iconRotation={IconRotationTypes.Rotate0}
|
|
118
|
-
/>
|
|
119
|
-
Download
|
|
120
|
-
</ReactRouterLink>
|
|
121
|
-
</Link>
|
|
122
|
-
</Router>
|
|
123
|
-
);
|
|
124
|
-
expect(screen.getByRole("link")).toBeInTheDocument();
|
|
125
|
-
});
|
|
126
|
-
|
|
127
105
|
it("throws an error if text is passed but no url is passed", () => {
|
|
128
106
|
expect(() => render(<Link>Test</Link>)).toThrowError(
|
|
129
107
|
"`Link` needs the `href` prop."
|
|
@@ -229,6 +207,25 @@ describe("Link", () => {
|
|
|
229
207
|
</Link>
|
|
230
208
|
)
|
|
231
209
|
.toJSON();
|
|
210
|
+
const withChakraProps = renderer
|
|
211
|
+
.create(
|
|
212
|
+
<Link
|
|
213
|
+
href="#passed-in-link"
|
|
214
|
+
id="chakra"
|
|
215
|
+
p="20px"
|
|
216
|
+
color="ui.error.primary"
|
|
217
|
+
>
|
|
218
|
+
Standard
|
|
219
|
+
</Link>
|
|
220
|
+
)
|
|
221
|
+
.toJSON();
|
|
222
|
+
const withOtherProps = renderer
|
|
223
|
+
.create(
|
|
224
|
+
<Link href="#passed-in-link" id="props" data-testid="props">
|
|
225
|
+
Standard
|
|
226
|
+
</Link>
|
|
227
|
+
)
|
|
228
|
+
.toJSON();
|
|
232
229
|
|
|
233
230
|
expect(standard).toMatchSnapshot();
|
|
234
231
|
expect(typeForwards).toMatchSnapshot();
|
|
@@ -238,6 +235,8 @@ describe("Link", () => {
|
|
|
238
235
|
expect(withIconChild).toMatchSnapshot();
|
|
239
236
|
expect(withAchorChild).toMatchSnapshot();
|
|
240
237
|
expect(withAchorChildAndIcon).toMatchSnapshot();
|
|
238
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
239
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
241
240
|
});
|
|
242
241
|
|
|
243
242
|
// TODO:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Box, chakra, useStyleConfig } from "@chakra-ui/react";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
import { Box, useStyleConfig } from "@chakra-ui/react";
|
|
3
3
|
|
|
4
4
|
import { LinkTypes } from "./LinkTypes";
|
|
5
5
|
import Icon from "../Icons/Icon";
|
|
@@ -9,8 +9,6 @@ import {
|
|
|
9
9
|
IconAlign,
|
|
10
10
|
IconSizes,
|
|
11
11
|
} from "../Icons/IconTypes";
|
|
12
|
-
import generateUUID from "../../helpers/generateUUID";
|
|
13
|
-
|
|
14
12
|
export interface LinkProps {
|
|
15
13
|
/** Optionally pass in additional Chakra-based styles. */
|
|
16
14
|
additionalStyles?: { [key: string]: any };
|
|
@@ -93,16 +91,17 @@ function getExternalIcon(children, linkId) {
|
|
|
93
91
|
* A component that uses an `href` prop or a child anchor element, to create
|
|
94
92
|
* an anchor element with added styling and conventions.
|
|
95
93
|
*/
|
|
96
|
-
const Link =
|
|
97
|
-
(props, ref: any) => {
|
|
94
|
+
export const Link = chakra(
|
|
95
|
+
React.forwardRef<HTMLAnchorElement, LinkProps>((props, ref: any) => {
|
|
98
96
|
const {
|
|
99
97
|
additionalStyles = {},
|
|
100
98
|
attributes,
|
|
101
99
|
children,
|
|
102
100
|
className,
|
|
103
101
|
href,
|
|
104
|
-
id
|
|
102
|
+
id,
|
|
105
103
|
type = LinkTypes.Default,
|
|
104
|
+
...rest
|
|
106
105
|
} = props;
|
|
107
106
|
|
|
108
107
|
// Merge the necessary props alongside any extra props for the
|
|
@@ -152,7 +151,7 @@ const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
|
|
|
152
151
|
const childrenToClone: any = children[0] ? children[0] : children;
|
|
153
152
|
const childProps = childrenToClone.props;
|
|
154
153
|
return (
|
|
155
|
-
<Box as="span" __css={style}>
|
|
154
|
+
<Box as="span" __css={style} {...rest}>
|
|
156
155
|
{React.cloneElement(
|
|
157
156
|
childrenToClone,
|
|
158
157
|
{
|
|
@@ -180,12 +179,13 @@ const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
|
|
|
180
179
|
target={target}
|
|
181
180
|
{...linkProps}
|
|
182
181
|
__css={{ ...style, ...additionalStyles }}
|
|
182
|
+
{...rest}
|
|
183
183
|
>
|
|
184
184
|
{newChildren}
|
|
185
185
|
</Box>
|
|
186
186
|
);
|
|
187
187
|
}
|
|
188
|
-
}
|
|
188
|
+
})
|
|
189
189
|
);
|
|
190
190
|
|
|
191
191
|
export default Link;
|