@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
|
@@ -7,7 +7,6 @@ import action_help_outline from "../../../icons/svg/action_help_outline.svg";
|
|
|
7
7
|
import action_launch from "../../../icons/svg/action_launch.svg";
|
|
8
8
|
import alert_notification_important from "../../../icons/svg/alert_notification_important.svg";
|
|
9
9
|
import arrow from "../../../icons/svg/arrow.svg";
|
|
10
|
-
import brooklyn from "../../../icons/svg/brooklyn.svg";
|
|
11
10
|
import check from "../../../icons/svg/check.svg";
|
|
12
11
|
import clock from "../../../icons/svg/clock.svg";
|
|
13
12
|
import close from "../../../icons/svg/close.svg";
|
|
@@ -22,29 +21,9 @@ import download from "../../../icons/svg/download.svg";
|
|
|
22
21
|
import error_filled from "../../../icons/svg/error_filled.svg";
|
|
23
22
|
import error_outline from "../../../icons/svg/error_outline.svg";
|
|
24
23
|
import headset from "../../../icons/svg/headset.svg";
|
|
25
|
-
import logo_brooklyn from "../../../icons/svg/logo_brooklynpl.svg";
|
|
26
|
-
import logo_nypl from "../../../icons/svg/logo_nypl.svg";
|
|
27
|
-
import logo_nypl_negative from "../../../icons/svg/logo_nypl_negative.svg";
|
|
28
|
-
import logo_queens from "../../../icons/svg/logo_queenspl.svg";
|
|
29
|
-
import lpa_negative from "../../../icons/svg/lpa_negative.svg";
|
|
30
|
-
import lpa_positive from "../../../icons/svg/lpa_positive.svg";
|
|
31
24
|
import minus from "../../../icons/svg/minus.svg";
|
|
32
|
-
import nypl_circle_negative from "../../../icons/svg/nypl_circle_negative.svg";
|
|
33
|
-
import nypl_circle_positive from "../../../icons/svg/nypl_circle_positive.svg";
|
|
34
|
-
import nypl_full_lock_up_negative from "../../../icons/svg/nypl_full_lock_up_negative.svg";
|
|
35
|
-
import nypl_full_lock_up from "../../../icons/svg/nypl_full_lock_up.svg";
|
|
36
|
-
import nypl_no_lion_negative from "../../../icons/svg/nypl_no_lion_negative.svg";
|
|
37
|
-
import nypl_no_lion_positive from "../../../icons/svg/nypl_no_lion_positive.svg";
|
|
38
25
|
import plus from "../../../icons/svg/plus.svg";
|
|
39
|
-
import queens_long from "../../../icons/svg/queens_long.svg";
|
|
40
|
-
import queens_stacked from "../../../icons/svg/queens_stacked.svg";
|
|
41
|
-
import schomburg_circle from "../../../icons/svg/schomburg_circle.svg";
|
|
42
|
-
import schomburg_positive from "../../../icons/svg/schomburg_positive.svg";
|
|
43
26
|
import search from "../../../icons/svg/search.svg";
|
|
44
|
-
import simplye_black from "../../../icons/svg/simplye_black.svg";
|
|
45
|
-
import simplye_color from "../../../icons/svg/simplye_color.svg";
|
|
46
|
-
import snfl_negative from "../../../icons/svg/snfl_negative.svg";
|
|
47
|
-
import snfl_positive from "../../../icons/svg/snfl_positive.svg";
|
|
48
27
|
import speaker_notes from "../../../icons/svg/speaker_notes.svg";
|
|
49
28
|
import utility_account_filled from "../../../icons/svg/utility_account_filled.svg";
|
|
50
29
|
import utility_account_unfilled from "../../../icons/svg/utility_account_unfilled.svg";
|
|
@@ -60,7 +39,6 @@ export default {
|
|
|
60
39
|
action_launch,
|
|
61
40
|
alert_notification_important,
|
|
62
41
|
arrow,
|
|
63
|
-
brooklyn,
|
|
64
42
|
check,
|
|
65
43
|
clock,
|
|
66
44
|
close,
|
|
@@ -75,29 +53,9 @@ export default {
|
|
|
75
53
|
file_type_spreadsheet,
|
|
76
54
|
file_type_video,
|
|
77
55
|
headset,
|
|
78
|
-
logo_brooklyn,
|
|
79
|
-
logo_nypl,
|
|
80
|
-
logo_nypl_negative,
|
|
81
|
-
logo_queens,
|
|
82
|
-
lpa_negative,
|
|
83
|
-
lpa_positive,
|
|
84
56
|
minus,
|
|
85
|
-
nypl_circle_negative,
|
|
86
|
-
nypl_circle_positive,
|
|
87
|
-
nypl_full_lock_up_negative,
|
|
88
|
-
nypl_full_lock_up,
|
|
89
|
-
nypl_no_lion_negative,
|
|
90
|
-
nypl_no_lion_positive,
|
|
91
57
|
plus,
|
|
92
|
-
queens_long,
|
|
93
|
-
queens_stacked,
|
|
94
|
-
schomburg_circle,
|
|
95
|
-
schomburg_positive,
|
|
96
58
|
search,
|
|
97
|
-
simplye_black,
|
|
98
|
-
simplye_color,
|
|
99
|
-
snfl_negative,
|
|
100
|
-
snfl_positive,
|
|
101
59
|
speaker_notes,
|
|
102
60
|
utility_account_filled,
|
|
103
61
|
utility_account_unfilled,
|
|
@@ -78,27 +78,3 @@ export enum IconNames {
|
|
|
78
78
|
UtilityHamburger = "utility_hamburger",
|
|
79
79
|
UtilitySearch = "utility_search",
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
export enum LogoNames {
|
|
83
|
-
Brooklyn = "brooklyn",
|
|
84
|
-
LogoBrooklyn = "logo_brooklyn",
|
|
85
|
-
LogoNypl = "logo_nypl",
|
|
86
|
-
LogoNyplNegative = "logo_nypl_negative",
|
|
87
|
-
LogoQueens = "logo_queens",
|
|
88
|
-
LpaNegative = "lpa_negative",
|
|
89
|
-
LpaPositive = "lpa_positive",
|
|
90
|
-
NyplCircleNegative = "nypl_circle_negative",
|
|
91
|
-
NyplCirclePositive = "nypl_circle_positive",
|
|
92
|
-
NyplFullLockUpNegative = "nypl_full_lock_up_negative",
|
|
93
|
-
NyplFullLockUp = "nypl_full_lock_up",
|
|
94
|
-
NyplNoLionNegative = "nypl_no_lion_negative",
|
|
95
|
-
NyplNoLionPositive = "nypl_no_lion_positive",
|
|
96
|
-
QueensLong = "queens_long",
|
|
97
|
-
QueensStacked = "queens_stacked",
|
|
98
|
-
SchomburgCircle = "schomburg_circle",
|
|
99
|
-
SchomburgPositive = "schomburg_positive",
|
|
100
|
-
SimplyeBlack = "simplye_black",
|
|
101
|
-
SimplyeColor = "simplye_color",
|
|
102
|
-
SnflNegative = "snfl_negative",
|
|
103
|
-
SnflPositive = "snfl_positive",
|
|
104
|
-
}
|
|
@@ -1,18 +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
|
-
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
8
9
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
import { VStack } from "@chakra-ui/react";
|
|
10
10
|
|
|
11
|
+
import Heading from "../Heading/Heading";
|
|
11
12
|
import Image from "./Image";
|
|
12
13
|
import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
|
|
13
|
-
import Heading from "../Heading/Heading";
|
|
14
14
|
import SimpleGrid from "../Grid/SimpleGrid";
|
|
15
15
|
import { getCategory } from "../../utils/componentCategories";
|
|
16
|
+
import { getStorybookEnumValues } from "../../utils/utils";
|
|
17
|
+
|
|
18
|
+
export const ratiosEnumValues = getStorybookEnumValues(
|
|
19
|
+
ImageRatios,
|
|
20
|
+
"ImageRatios"
|
|
21
|
+
);
|
|
22
|
+
export const sizesEnumValues = getStorybookEnumValues(ImageSizes, "ImageSizes");
|
|
23
|
+
export const typesEnumValues = getStorybookEnumValues(ImageTypes, "ImageTypes");
|
|
16
24
|
|
|
17
25
|
export const imageBlockStyles = {
|
|
18
26
|
margin: "auto",
|
|
@@ -28,15 +36,43 @@ export const imageBlockStyles = {
|
|
|
28
36
|
parameters={{
|
|
29
37
|
design: {
|
|
30
38
|
type: "figma",
|
|
31
|
-
url:
|
|
32
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11896%3A45379",
|
|
39
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11896%3A45379",
|
|
33
40
|
},
|
|
34
41
|
jest: ["Image.test.tsx"],
|
|
35
42
|
}}
|
|
36
43
|
argTypes={{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
additionalFigureStyles: { control: false },
|
|
45
|
+
additionalImageStyles: { control: false },
|
|
46
|
+
additionalWrapperStyles: { control: false },
|
|
47
|
+
alt: {
|
|
48
|
+
control: false,
|
|
49
|
+
description:
|
|
50
|
+
"Alternate text description of the image. Needed for accessibility purposes.",
|
|
51
|
+
},
|
|
52
|
+
className: {
|
|
53
|
+
control: false,
|
|
54
|
+
description: "Additional class name for the component to use.",
|
|
55
|
+
},
|
|
56
|
+
component: { control: false },
|
|
57
|
+
imageAspectRatio: {
|
|
58
|
+
control: { type: "select" },
|
|
59
|
+
table: { defaultValue: { summary: "ImageRatios.Original" } },
|
|
60
|
+
options: ratiosEnumValues.options,
|
|
61
|
+
},
|
|
62
|
+
imageSize: {
|
|
63
|
+
control: { type: "select" },
|
|
64
|
+
table: { defaultValue: { summary: "ImageSizes.Default" } },
|
|
65
|
+
options: sizesEnumValues.options,
|
|
66
|
+
},
|
|
67
|
+
imageType: {
|
|
68
|
+
control: { type: "select" },
|
|
69
|
+
table: { defaultValue: { summary: "ImageTypes.Default" } },
|
|
70
|
+
options: typesEnumValues.options,
|
|
71
|
+
},
|
|
72
|
+
src: {
|
|
73
|
+
description:
|
|
74
|
+
"The src attribute is required, and contains the path to the image you want to embed.",
|
|
75
|
+
},
|
|
40
76
|
}}
|
|
41
77
|
/>
|
|
42
78
|
|
|
@@ -45,7 +81,7 @@ export const imageBlockStyles = {
|
|
|
45
81
|
| Component Version | DS Version |
|
|
46
82
|
| ----------------- | ---------- |
|
|
47
83
|
| Added | `0.0.6` |
|
|
48
|
-
| Latest | `0.25.
|
|
84
|
+
| Latest | `0.25.9` |
|
|
49
85
|
|
|
50
86
|
<Description of={Image} />
|
|
51
87
|
|
|
@@ -56,22 +92,34 @@ export const imageBlockStyles = {
|
|
|
56
92
|
|
|
57
93
|
<Canvas>
|
|
58
94
|
<Story
|
|
59
|
-
name="Image
|
|
95
|
+
name="Image with Controls"
|
|
60
96
|
args={{
|
|
97
|
+
additionalFigureStyles: undefined,
|
|
98
|
+
additionalImageStyles: undefined,
|
|
99
|
+
additionalWrapperStyles: undefined,
|
|
61
100
|
alt: "Alt text",
|
|
62
|
-
|
|
101
|
+
className: undefined,
|
|
102
|
+
component: undefined,
|
|
103
|
+
imageAspectRatio: "ImageRatios.TwoByOne",
|
|
63
104
|
imageCaption: "Image caption",
|
|
64
105
|
imageCredit: "Image credit",
|
|
65
|
-
imageSize: ImageSizes.Medium,
|
|
66
|
-
imageType: ImageTypes.Default,
|
|
106
|
+
imageSize: "ImageSizes.Medium",
|
|
107
|
+
imageType: "ImageTypes.Default",
|
|
67
108
|
src: "https://placeimg.com/400/300/animals",
|
|
68
109
|
}}
|
|
69
110
|
>
|
|
70
|
-
{(args) =>
|
|
111
|
+
{(args) => (
|
|
112
|
+
<Image
|
|
113
|
+
{...args}
|
|
114
|
+
imageAspectRatio={ratiosEnumValues.getValue(args.imageAspectRatio)}
|
|
115
|
+
imageSize={sizesEnumValues.getValue(args.imageSize)}
|
|
116
|
+
imageType={typesEnumValues.getValue(args.imageType)}
|
|
117
|
+
/>
|
|
118
|
+
)}
|
|
71
119
|
</Story>
|
|
72
120
|
</Canvas>
|
|
73
121
|
|
|
74
|
-
<ArgsTable story="Image
|
|
122
|
+
<ArgsTable story="Image with Controls" />
|
|
75
123
|
|
|
76
124
|
## Image Figure
|
|
77
125
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
2
|
+
import * as React from "react";
|
|
3
3
|
|
|
4
4
|
import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
|
|
5
5
|
|
|
6
6
|
interface ImageWrapperProps {
|
|
7
7
|
/** Optionally pass in additional Chakra-based styles. */
|
|
8
|
-
|
|
8
|
+
additionalWrapperStyles?: { [key: string]: any };
|
|
9
9
|
/** ClassName you can add in addition to 'image' */
|
|
10
10
|
className?: string;
|
|
11
11
|
/** Optional value to control the aspect ratio of the cartd image; default value is `square` */
|
|
@@ -15,6 +15,10 @@ interface ImageWrapperProps {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export interface ImageProps extends ImageWrapperProps {
|
|
18
|
+
/** Optionally pass in additional Chakra-based styles only for the figure. */
|
|
19
|
+
additionalFigureStyles?: { [key: string]: any };
|
|
20
|
+
/** Optionally pass in additional Chakra-based styles only for the image. */
|
|
21
|
+
additionalImageStyles?: { [key: string]: any };
|
|
18
22
|
/** Alternate text description of the image */
|
|
19
23
|
alt: string;
|
|
20
24
|
/** Custom image component */
|
|
@@ -33,7 +37,7 @@ export interface ImageProps extends ImageWrapperProps {
|
|
|
33
37
|
|
|
34
38
|
function ImageWrapper(props: React.PropsWithChildren<ImageWrapperProps>) {
|
|
35
39
|
const {
|
|
36
|
-
|
|
40
|
+
additionalWrapperStyles = {},
|
|
37
41
|
className = "",
|
|
38
42
|
children,
|
|
39
43
|
imageAspectRatio = ImageRatios.Original,
|
|
@@ -45,19 +49,21 @@ function ImageWrapper(props: React.PropsWithChildren<ImageWrapperProps>) {
|
|
|
45
49
|
});
|
|
46
50
|
return (
|
|
47
51
|
<Box
|
|
48
|
-
__css={{ ...styles, ...additionalStyles }}
|
|
49
52
|
className={`the-wrap ${className}`}
|
|
53
|
+
__css={{ ...styles, ...additionalWrapperStyles }}
|
|
50
54
|
>
|
|
51
|
-
<Box __css={styles.crop}
|
|
55
|
+
<Box className="the-crop" __css={styles.crop}>
|
|
52
56
|
{children}
|
|
53
57
|
</Box>
|
|
54
58
|
</Box>
|
|
55
59
|
);
|
|
56
60
|
}
|
|
57
61
|
|
|
58
|
-
export default function Image(props:
|
|
62
|
+
export default function Image(props: ImageProps) {
|
|
59
63
|
const {
|
|
60
|
-
|
|
64
|
+
additionalFigureStyles = {},
|
|
65
|
+
additionalImageStyles = {},
|
|
66
|
+
additionalWrapperStyles = {},
|
|
61
67
|
alt,
|
|
62
68
|
className = "",
|
|
63
69
|
component,
|
|
@@ -81,14 +87,19 @@ export default function Image(props: React.ComponentProps<"img"> & ImageProps) {
|
|
|
81
87
|
const imageComponent: JSX.Element = component ? (
|
|
82
88
|
component
|
|
83
89
|
) : (
|
|
84
|
-
<Box
|
|
90
|
+
<Box
|
|
91
|
+
as="img"
|
|
92
|
+
src={src}
|
|
93
|
+
alt={alt}
|
|
94
|
+
__css={{ ...styles.img, ...additionalImageStyles }}
|
|
95
|
+
/>
|
|
85
96
|
);
|
|
86
97
|
const finalImage = useImageWrapper ? (
|
|
87
98
|
<ImageWrapper
|
|
88
99
|
className={className}
|
|
89
100
|
imageAspectRatio={imageAspectRatio}
|
|
90
101
|
imageSize={imageSize}
|
|
91
|
-
|
|
102
|
+
additionalWrapperStyles={additionalWrapperStyles}
|
|
92
103
|
>
|
|
93
104
|
{imageComponent}
|
|
94
105
|
</ImageWrapper>
|
|
@@ -97,7 +108,7 @@ export default function Image(props: React.ComponentProps<"img"> & ImageProps) {
|
|
|
97
108
|
);
|
|
98
109
|
|
|
99
110
|
return imageCaption || imageCredit ? (
|
|
100
|
-
<Box as="figure" __css={styles.figure}>
|
|
111
|
+
<Box as="figure" __css={{ ...styles.figure, ...additionalFigureStyles }}>
|
|
101
112
|
{finalImage}
|
|
102
113
|
<Box as="figcaption" __css={styles.figcaption}>
|
|
103
114
|
{imageCaption && (
|
|
@@ -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
|
|
|
@@ -33,26 +40,20 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
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")}
|
|
@@ -31,13 +34,15 @@ import DSProvider from "../../theme/provider";
|
|
|
31
34
|
jest: ["Link.test.tsx"],
|
|
32
35
|
}}
|
|
33
36
|
argTypes={{
|
|
34
|
-
|
|
37
|
+
additionalStyles: { control: false },
|
|
38
|
+
attributes: { control: false },
|
|
35
39
|
children: { table: { disable: true } },
|
|
40
|
+
key: { table: { disable: true } },
|
|
41
|
+
ref: { table: { disable: true } },
|
|
36
42
|
type: {
|
|
37
|
-
control: {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
options: LinkTypes,
|
|
43
|
+
control: { type: "select" },
|
|
44
|
+
table: { defaultValue: { summary: "LinkTypes.Default" } },
|
|
45
|
+
options: enumValues.options,
|
|
41
46
|
},
|
|
42
47
|
}}
|
|
43
48
|
/>
|
|
@@ -47,29 +52,34 @@ import DSProvider from "../../theme/provider";
|
|
|
47
52
|
| Component Version | DS Version |
|
|
48
53
|
| ----------------- | ---------- |
|
|
49
54
|
| Added | `0.0.4` |
|
|
50
|
-
| Latest | `0.25.
|
|
55
|
+
| Latest | `0.25.9` |
|
|
51
56
|
|
|
52
57
|
<Description of={Link} />
|
|
53
58
|
|
|
54
59
|
<Canvas withToolbar>
|
|
55
60
|
<Story
|
|
56
|
-
name="
|
|
61
|
+
name="Link with Controls"
|
|
57
62
|
args={{
|
|
58
|
-
|
|
59
|
-
type: LinkTypes.Action,
|
|
60
|
-
href: "https://nypl.org",
|
|
61
|
-
className: "custom-class",
|
|
63
|
+
additionalStyles: undefined,
|
|
62
64
|
attributes: {
|
|
63
65
|
rel: "nofollow",
|
|
64
66
|
onClick: (e) => e.preventDefault(),
|
|
65
67
|
},
|
|
68
|
+
className: "custom-class",
|
|
69
|
+
href: "https://nypl.org",
|
|
70
|
+
id: "nypl-link",
|
|
71
|
+
type: "LinkTypes.Action",
|
|
66
72
|
}}
|
|
67
73
|
>
|
|
68
|
-
{(args) =>
|
|
74
|
+
{(args) => (
|
|
75
|
+
<Link {...args} type={enumValues.getValue(args.type)}>
|
|
76
|
+
Link
|
|
77
|
+
</Link>
|
|
78
|
+
)}
|
|
69
79
|
</Story>
|
|
70
80
|
</Canvas>
|
|
71
81
|
|
|
72
|
-
<ArgsTable story="
|
|
82
|
+
<ArgsTable story="Link with Controls" />
|
|
73
83
|
|
|
74
84
|
## Links With Icons
|
|
75
85
|
|
|
@@ -89,12 +99,20 @@ links with icons. Icons can be rendered to the left or right of the link text.
|
|
|
89
99
|
Clock Link
|
|
90
100
|
</Link>
|
|
91
101
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
92
|
-
<Icon
|
|
102
|
+
<Icon
|
|
103
|
+
name={IconNames.Check}
|
|
104
|
+
align={IconAlign.Left}
|
|
105
|
+
size={IconSizes.Small}
|
|
106
|
+
/>
|
|
93
107
|
Check Link
|
|
94
108
|
</Link>
|
|
95
109
|
<Link type={LinkTypes.Action} href="#passed-in-link-right">
|
|
96
110
|
Check Link Right
|
|
97
|
-
<Icon
|
|
111
|
+
<Icon
|
|
112
|
+
name={IconNames.Check}
|
|
113
|
+
align={IconAlign.Right}
|
|
114
|
+
size={IconSizes.Small}
|
|
115
|
+
/>
|
|
98
116
|
</Link>
|
|
99
117
|
</VStack>
|
|
100
118
|
</Story>
|
|
@@ -102,8 +120,29 @@ links with icons. Icons can be rendered to the left or right of the link text.
|
|
|
102
120
|
|
|
103
121
|
## Anchor Element Rendering
|
|
104
122
|
|
|
105
|
-
`Link` can wrap an existing `<a>`
|
|
106
|
-
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
|
+
```
|
|
107
146
|
|
|
108
147
|
<Canvas>
|
|
109
148
|
<Story name="Anchor Element Rendering">
|
|
@@ -112,11 +151,23 @@ an `<a>` tag.
|
|
|
112
151
|
<Link type={LinkTypes.Action}>
|
|
113
152
|
<a href="#existing-anchor-tag">link</a>
|
|
114
153
|
</Link>{" "}
|
|
115
|
-
with the <a>
|
|
154
|
+
with the <a> element as a child of the `Link` component. This is a{" "}
|
|
116
155
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
117
156
|
link
|
|
118
157
|
</Link>{" "}
|
|
119
|
-
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.
|
|
120
171
|
</>
|
|
121
172
|
</Story>
|
|
122
173
|
</Canvas>
|
|
@@ -144,9 +195,11 @@ an `<a>` tag.
|
|
|
144
195
|
|
|
145
196
|
The Design System's `Link` component should wrap around `react-router`'s own
|
|
146
197
|
`Link` component. To avoid name conflicts, rename either the Design System's
|
|
147
|
-
or `react-router`'s `Link` component.
|
|
198
|
+
or `react-router`'s `Link` component. Any of the following patterns are valid.
|
|
148
199
|
|
|
149
200
|
```jsx
|
|
201
|
+
// In this first example, React Router's `Link` component
|
|
202
|
+
// is renamed as `ReactRouterLink`.
|
|
150
203
|
import {
|
|
151
204
|
BrowserRouter as Router,
|
|
152
205
|
Link as ReactRouterLink,
|
|
@@ -157,8 +210,9 @@ import { Link, LinkTypes } from "@nypl/design-system-react-components";
|
|
|
157
210
|
<ReactRouterLink to="#">Next Page</ReactRouterLink>
|
|
158
211
|
</Link>;
|
|
159
212
|
|
|
160
|
-
//
|
|
161
|
-
|
|
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`.
|
|
162
216
|
import { BrowserRouter, Link } from "react-router-dom";
|
|
163
217
|
import {
|
|
164
218
|
Link as DSLink,
|
|
@@ -169,8 +223,9 @@ import {
|
|
|
169
223
|
<Link to="#">Next Page</Link>
|
|
170
224
|
</DSLink>;
|
|
171
225
|
|
|
172
|
-
//
|
|
173
|
-
|
|
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`.
|
|
174
229
|
import { BrowserRouter, Link } from "react-router-dom";
|
|
175
230
|
import DS from "@nypl/design-system-react-components";
|
|
176
231
|
|
|
@@ -200,34 +255,30 @@ pages in a NextJS app.
|
|
|
200
255
|
```jsx
|
|
201
256
|
import { Link, LinkTypes } from "@nypl/design-system-react-components";
|
|
202
257
|
|
|
203
|
-
|
|
258
|
+
/**
|
|
259
|
+
* This is just an example wrapper that works similarly to NextJS' `Link`
|
|
204
260
|
* component. In real life, NextJS's `Link` component will pass down the
|
|
205
261
|
* `href` and `passHref` props and a `ref` to make routing functional.
|
|
206
262
|
*/
|
|
207
|
-
export const NextJsLink = (props: HTMLAnchorElement) =>
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
);
|
|
216
|
-
|
|
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.
|
|
217
271
|
<NextJsLink href="#" passHref>
|
|
218
272
|
<Link type={LinkTypes.Action}>Next Page</Link>
|
|
219
273
|
</NextJsLink>;
|
|
220
274
|
```
|
|
221
275
|
|
|
222
|
-
export const NextJsLink = (props) =>
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
)}
|
|
229
|
-
</div>
|
|
230
|
-
);
|
|
276
|
+
export const NextJsLink = (props) =>
|
|
277
|
+
React.cloneElement(
|
|
278
|
+
props.children,
|
|
279
|
+
{ ...props },
|
|
280
|
+
props.children.props.children
|
|
281
|
+
);
|
|
231
282
|
|
|
232
283
|
<Canvas>
|
|
233
284
|
<DSProvider>
|