@nypl/design-system-react-components 0.23.4 → 0.25.1
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 +98 -1
- package/README.md +46 -11
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +6 -13
- package/dist/components/Button/ButtonTypes.d.ts +5 -3
- package/dist/components/Card/Card.d.ts +59 -10
- package/dist/components/Card/CardTypes.d.ts +19 -0
- package/dist/components/CardEdition/CardEdition.d.ts +21 -0
- package/dist/components/{StyleGuide/Colors.stories.d.ts → CardEdition/CardEdition.stories.d.ts} +5 -2
- package/dist/components/Checkbox/Checkbox.d.ts +21 -16
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/DatePicker/DatePicker.d.ts +79 -0
- package/dist/components/DatePicker/DatePickerTypes.d.ts +5 -0
- package/dist/components/Form/Form.d.ts +16 -8
- package/dist/components/Form/FormTypes.d.ts +2 -0
- package/dist/components/Grid/GridTypes.d.ts +9 -0
- package/dist/components/Grid/SimpleGrid.d.ts +14 -0
- package/dist/components/Heading/Heading.d.ts +9 -11
- package/dist/components/Heading/{HeadingDisplaySizes.d.ts → HeadingTypes.d.ts} +8 -0
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +2 -1
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/Icons/Icon.d.ts +13 -16
- package/dist/components/Icons/IconSvgs.d.ts +4 -0
- package/dist/components/Icons/IconTypes.d.ts +78 -60
- package/dist/components/Image/Image.stories.d.ts +2 -1
- package/dist/components/Label/Label.d.ts +10 -26
- package/dist/components/Link/Link.d.ts +8 -12
- package/dist/components/List/List.stories.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +30 -24
- package/dist/components/RadioGroup/RadioGroup.d.ts +40 -0
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +4 -0
- package/dist/components/SearchBar/SearchBar.d.ts +45 -27
- package/dist/components/Select/Select.d.ts +34 -35
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/Tabs/Tabs.d.ts +25 -0
- package/dist/components/Template/Template.d.ts +91 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/Text/TextTypes.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +37 -30
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/design-system-react-components.cjs.development.js +4102 -917
- 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 +4023 -920
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +23 -5
- package/dist/resources.scss +133 -24
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +25 -0
- package/dist/theme/components/breadcrumb.d.ts +90 -0
- package/dist/theme/components/button.d.ts +109 -0
- package/dist/theme/components/checkbox.d.ts +91 -0
- package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
- package/dist/theme/components/customRadioGroup.d.ts +18 -0
- package/dist/theme/components/global.d.ts +55 -0
- package/dist/theme/components/globalMixins.d.ts +15 -0
- package/dist/theme/components/heading.d.ts +110 -0
- package/dist/theme/components/hero.d.ts +492 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/label.d.ts +16 -0
- package/dist/theme/components/link.d.ts +45 -0
- package/dist/theme/components/radio.d.ts +95 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +58 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +85 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +20 -0
- package/dist/theme/components/textInput.d.ts +105 -0
- package/dist/theme/foundations/breakpoints.d.ts +23 -0
- package/dist/theme/foundations/colors.d.ts +3 -0
- package/dist/theme/foundations/global.d.ts +23 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +77 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +5 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +9 -2
- package/src/components/Accordion/Accordion.stories.mdx +233 -33
- package/src/components/Accordion/Accordion.test.tsx +135 -19
- package/src/components/Accordion/Accordion.tsx +81 -56
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
- package/src/components/Autosuggest/_Autosuggest.scss +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +57 -56
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
- package/src/components/Button/Button.stories.mdx +125 -138
- package/src/components/Button/Button.test.tsx +65 -11
- package/src/components/Button/Button.tsx +72 -68
- package/src/components/Button/ButtonTypes.tsx +4 -2
- package/src/components/Button/_Button.scss +7 -92
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +58 -3
- package/src/components/Card/Card.stories.mdx +694 -0
- package/src/components/Card/Card.test.tsx +97 -102
- package/src/components/Card/Card.tsx +182 -31
- package/src/components/Card/CardTypes.tsx +21 -0
- package/src/components/Card/_Card.scss +234 -49
- package/src/components/{Card/Card.stories.tsx → CardEdition/CardEdition.stories.tsx} +32 -22
- package/src/components/CardEdition/CardEdition.test.tsx +395 -0
- package/src/components/CardEdition/CardEdition.tsx +60 -0
- package/src/components/CardEdition/_CardEdition.scss +138 -0
- package/src/components/Chakra/Box.stories.mdx +57 -0
- package/src/components/Chakra/Center.stories.mdx +99 -0
- package/src/components/Chakra/Grid.stories.mdx +79 -0
- package/src/components/Chakra/Stack.stories.mdx +93 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +57 -35
- package/src/components/Checkbox/Checkbox.test.tsx +117 -147
- package/src/components/Checkbox/Checkbox.tsx +76 -50
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +325 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +284 -0
- package/src/components/DatePicker/DatePicker.test.tsx +657 -0
- package/src/components/DatePicker/DatePicker.tsx +396 -0
- package/src/components/DatePicker/DatePickerTypes.tsx +5 -0
- package/src/components/DatePicker/_DatePicker.scss +76 -0
- package/src/components/Form/Form.stories.mdx +130 -27
- package/src/components/Form/Form.test.tsx +78 -36
- package/src/components/Form/Form.tsx +53 -19
- package/src/components/Form/FormTypes.tsx +3 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +38 -0
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
- package/src/components/Grid/SimpleGrid.test.tsx +66 -0
- package/src/components/Grid/SimpleGrid.tsx +37 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
- package/src/components/Heading/Heading.stories.mdx +63 -33
- package/src/components/Heading/Heading.test.tsx +24 -16
- package/src/components/Heading/Heading.tsx +54 -38
- package/src/components/Heading/{HeadingDisplaySizes.tsx → HeadingTypes.tsx} +9 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +2 -1
- package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
- package/src/components/Hero/Hero.stories.mdx +195 -85
- package/src/components/Hero/Hero.test.tsx +544 -113
- package/src/components/Hero/Hero.tsx +80 -93
- package/src/components/Hero/HeroTypes.tsx +17 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -1
- package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
- package/src/components/Icons/Icon.stories.mdx +89 -74
- package/src/components/Icons/Icon.test.tsx +30 -22
- package/src/components/Icons/Icon.tsx +63 -61
- package/src/components/Icons/IconSvgs.tsx +8 -0
- package/src/components/Icons/IconTypes.tsx +80 -60
- package/src/components/Image/Image.stories.tsx +2 -1
- package/src/components/Input/_Input.scss +2 -2
- package/src/components/Label/Label.stories.mdx +77 -0
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +28 -45
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +47 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +114 -100
- package/src/components/List/List.stories.mdx +7 -3
- package/src/components/List/List.stories.tsx +14 -9
- package/src/components/List/List.test.tsx +12 -8
- package/src/components/List/List.tsx +9 -7
- package/src/components/List/_List.scss +3 -3
- package/src/components/Modal/Modal.stories.mdx +7 -3
- package/src/components/Modal/_Modal.scss +1 -1
- package/src/components/Notification/Notification.stories.mdx +99 -65
- package/src/components/Notification/Notification.test.tsx +3 -16
- package/src/components/Notification/Notification.tsx +12 -12
- package/src/components/Notification/_Notification.scss +5 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +1 -1
- package/src/components/Pagination/Pagination.stories.mdx +7 -1
- package/src/components/Pagination/Pagination.test.tsx +16 -10
- package/src/components/Radio/Radio.stories.mdx +57 -46
- package/src/components/Radio/Radio.test.tsx +92 -138
- package/src/components/Radio/Radio.tsx +70 -69
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +250 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +247 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +327 -0
- package/src/components/RadioGroup/RadioGroup.tsx +154 -0
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +4 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1101 -0
- package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +196 -224
- package/src/components/SearchBar/SearchBar.tsx +151 -46
- package/src/components/Select/Select.stories.mdx +193 -168
- package/src/components/Select/Select.test.tsx +129 -324
- package/src/components/Select/Select.tsx +120 -160
- package/src/components/Select/SelectTypes.tsx +4 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +18 -29
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
- package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
- package/src/components/StatusBadge/StatusBadge.tsx +24 -25
- package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +112 -90
- package/src/components/StyleGuide/Buttons.stories.mdx +98 -100
- package/src/components/StyleGuide/Colors.stories.mdx +336 -0
- package/src/components/StyleGuide/Forms.stories.mdx +85 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +86 -93
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -1
- package/src/components/StyleGuide/Typography.stories.mdx +164 -166
- package/src/components/StyleGuide/UIDocCard.tsx +4 -4
- package/src/components/Tabs/Tabs.stories.mdx +221 -0
- package/src/components/Tabs/Tabs.test.tsx +264 -0
- package/src/components/Tabs/Tabs.tsx +220 -0
- package/src/components/Template/Template.stories.mdx +574 -0
- package/src/components/Template/Template.test.tsx +124 -0
- package/src/components/Template/Template.tsx +226 -0
- package/src/components/Text/Text.stories.mdx +70 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +55 -0
- package/src/components/Text/TextTypes.tsx +6 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
- package/src/components/TextInput/TextInput.stories.mdx +90 -90
- package/src/components/TextInput/TextInput.test.tsx +103 -83
- package/src/components/TextInput/TextInput.tsx +108 -91
- package/src/components/TextInput/TextInputTypes.tsx +6 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
- package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
- package/src/docs/Chakra.stories.mdx +341 -0
- package/src/docs/Intro.stories.mdx +31 -24
- package/src/index.ts +70 -5
- package/src/styles/01-colors/_colors-brand.scss +6 -4
- package/src/styles/01-colors/_colors-utility.scss +14 -15
- package/src/styles/03-space/_space-inline.scss +47 -7
- package/src/styles/03-space/_space-inset.scss +33 -5
- package/src/styles/03-space/_space-stack.scss +48 -8
- package/src/styles/base/_02-breakpoints.scss +5 -4
- package/src/styles/base/_04-base.scss +2 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles/base/_typography.scss +1 -29
- package/src/styles.scss +22 -25
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +125 -0
- package/src/theme/components/checkbox.ts +107 -0
- package/src/theme/components/customCheckboxGroup.ts +12 -0
- package/src/theme/components/customRadioGroup.ts +12 -0
- package/src/theme/components/global.ts +71 -0
- package/src/theme/components/globalMixins.ts +16 -0
- package/src/theme/components/heading.ts +72 -0
- package/src/theme/components/hero.ts +239 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/label.ts +17 -0
- package/src/theme/components/link.ts +47 -0
- package/src/theme/components/radio.ts +106 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +50 -0
- package/src/theme/components/statusBadge.ts +27 -0
- package/src/theme/components/tabs.ts +79 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +61 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +208 -0
- package/src/theme/foundations/global.ts +26 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +85 -0
- package/src/theme/foundations/typography.ts +35 -0
- package/src/theme/index.ts +88 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +56 -21
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -5
- package/dist/components/Card/Card.stories.d.ts +0 -27
- package/dist/components/Label/Label.stories.d.ts +0 -12
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/Template/Template.stories.d.ts +0 -29
- package/src/components/Accordion/Accordion.stories.tsx +0 -65
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Checkbox/_Checkbox.scss +0 -97
- package/src/components/Form/_Form.scss +0 -28
- package/src/components/Heading/_Heading.scss +0 -163
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Label/Label.stories.tsx +0 -30
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/Radio/_Radio.scss +0 -84
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -33
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -288
- package/src/components/Template/Template.stories.tsx +0 -85
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
|
@@ -3,47 +3,56 @@ import {
|
|
|
3
3
|
Story,
|
|
4
4
|
Canvas,
|
|
5
5
|
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
6
|
Description,
|
|
8
7
|
} from "@storybook/addon-docs/blocks";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
10
|
-
import Link from "./Link";
|
|
11
9
|
import {
|
|
12
10
|
BrowserRouter as Router,
|
|
13
11
|
Link as ReactRouterLink,
|
|
14
12
|
} from "react-router-dom";
|
|
13
|
+
import { VStack } from "@chakra-ui/react";
|
|
14
|
+
|
|
15
|
+
import Link from "./Link";
|
|
15
16
|
import { LinkTypes } from "./LinkTypes";
|
|
16
17
|
import Icon from "../Icons/Icon";
|
|
18
|
+
import { IconAlign, IconSizes } from "../Icons/IconTypes";
|
|
19
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
20
|
+
import DSProvider from "../../theme/provider";
|
|
17
21
|
|
|
18
22
|
<Meta
|
|
19
|
-
title="Link"
|
|
23
|
+
title={getCategory("Link")}
|
|
20
24
|
component={Link}
|
|
21
25
|
decorators={[withDesign]}
|
|
22
26
|
parameters={{
|
|
23
27
|
design: {
|
|
24
28
|
type: "figma",
|
|
25
29
|
url:
|
|
26
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/
|
|
30
|
+
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36854%3A24387",
|
|
27
31
|
},
|
|
28
32
|
jest: ["Link.test.tsx"],
|
|
29
33
|
}}
|
|
30
34
|
argTypes={{
|
|
31
|
-
|
|
32
|
-
modifiers: { table: { disable: true } },
|
|
35
|
+
attributes: { table: { disable: true } },
|
|
33
36
|
children: { table: { disable: true } },
|
|
34
37
|
type: {
|
|
35
38
|
control: {
|
|
36
39
|
type: "select",
|
|
37
40
|
},
|
|
41
|
+
options: LinkTypes,
|
|
38
42
|
},
|
|
39
43
|
}}
|
|
40
44
|
/>
|
|
41
45
|
|
|
42
46
|
# Link
|
|
43
47
|
|
|
48
|
+
| Component Version | DS Version |
|
|
49
|
+
| ----------------- | ---------- |
|
|
50
|
+
| Added | `0.0.4` |
|
|
51
|
+
| Latest | `0.25.1` |
|
|
52
|
+
|
|
44
53
|
<Description of={Link} />
|
|
45
54
|
|
|
46
|
-
<
|
|
55
|
+
<Canvas withToolbar>
|
|
47
56
|
<Story
|
|
48
57
|
name="Basic"
|
|
49
58
|
args={{
|
|
@@ -59,7 +68,7 @@ import Icon from "../Icons/Icon";
|
|
|
59
68
|
>
|
|
60
69
|
{(args) => <Link {...args}>Link</Link>}
|
|
61
70
|
</Story>
|
|
62
|
-
</
|
|
71
|
+
</Canvas>
|
|
63
72
|
|
|
64
73
|
<ArgsTable story="Basic" />
|
|
65
74
|
|
|
@@ -69,42 +78,35 @@ To render an `Icon` as part of the link, make sure that the `Link` component
|
|
|
69
78
|
wraps the `Icon`. Use `type={LinkTypes.Action}` to apply appropriate styling to
|
|
70
79
|
links with icons. Icons can be rendered to the left or right of the link text.
|
|
71
80
|
|
|
72
|
-
<
|
|
81
|
+
<Canvas>
|
|
73
82
|
<Story name="With Icons">
|
|
74
|
-
|
|
83
|
+
<VStack spacing="xs" align="flex-start">
|
|
75
84
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
76
|
-
<Icon
|
|
77
|
-
name={"headset"}
|
|
78
|
-
modifiers={["left", "small"]}
|
|
79
|
-
decorative={true}
|
|
80
|
-
/>
|
|
85
|
+
<Icon name="headset" align={IconAlign.Left} size={IconSizes.Small} />
|
|
81
86
|
Headset Link
|
|
82
87
|
</Link>
|
|
83
|
-
<br />
|
|
84
88
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
85
|
-
<Icon name=
|
|
89
|
+
<Icon name="clock" align={IconAlign.Left} size={IconSizes.Small} />
|
|
86
90
|
Clock Link
|
|
87
91
|
</Link>
|
|
88
|
-
<br />
|
|
89
92
|
<Link type={LinkTypes.Action} href="#passed-in-link">
|
|
90
|
-
<Icon name=
|
|
93
|
+
<Icon name="check" align={IconAlign.Left} size={IconSizes.Small} />
|
|
91
94
|
Check Link
|
|
92
95
|
</Link>
|
|
93
|
-
<br />
|
|
94
96
|
<Link type={LinkTypes.Action} href="#passed-in-link-right">
|
|
95
97
|
Check Link Right
|
|
96
|
-
<Icon name=
|
|
98
|
+
<Icon name="check" align={IconAlign.Right} size={IconSizes.Small} />
|
|
97
99
|
</Link>
|
|
98
|
-
|
|
100
|
+
</VStack>
|
|
99
101
|
</Story>
|
|
100
|
-
</
|
|
102
|
+
</Canvas>
|
|
101
103
|
|
|
102
104
|
## Anchor Element Rendering
|
|
103
105
|
|
|
104
106
|
`Link` can wrap an existing `<a>` tag or it can use the `href` prop to generate
|
|
105
107
|
an `<a>` tag.
|
|
106
108
|
|
|
107
|
-
<
|
|
109
|
+
<Canvas>
|
|
108
110
|
<Story name="Anchor Element Rendering">
|
|
109
111
|
<>
|
|
110
112
|
This is a{" "}
|
|
@@ -118,11 +120,11 @@ an `<a>` tag.
|
|
|
118
120
|
where the Link component uses the `href` prop and has a string-only child.
|
|
119
121
|
</>
|
|
120
122
|
</Story>
|
|
121
|
-
</
|
|
123
|
+
</Canvas>
|
|
122
124
|
|
|
123
125
|
## Link with Routers
|
|
124
126
|
|
|
125
|
-
<
|
|
127
|
+
<Canvas>
|
|
126
128
|
<Story name="Link with Routers">
|
|
127
129
|
<div>With React Router</div>
|
|
128
130
|
<Router>
|
|
@@ -137,7 +139,7 @@ an `<a>` tag.
|
|
|
137
139
|
<Link type={LinkTypes.Action}>Next Page</Link>
|
|
138
140
|
</NextJsLink>
|
|
139
141
|
</Story>
|
|
140
|
-
</
|
|
142
|
+
</Canvas>
|
|
141
143
|
|
|
142
144
|
### React Router
|
|
143
145
|
|
|
@@ -145,7 +147,7 @@ The Design System's `Link` component should wrap around `react-router`'s own
|
|
|
145
147
|
`Link` component. To avoid name conflicts, rename either the Design System's
|
|
146
148
|
or `react-router`'s `Link` component.
|
|
147
149
|
|
|
148
|
-
```
|
|
150
|
+
```jsx
|
|
149
151
|
import {
|
|
150
152
|
BrowserRouter as Router,
|
|
151
153
|
Link as ReactRouterLink,
|
|
@@ -178,13 +180,15 @@ import DS from "@nypl/design-system-react-components";
|
|
|
178
180
|
</DS.Link>;
|
|
179
181
|
```
|
|
180
182
|
|
|
181
|
-
<
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
</
|
|
183
|
+
<Canvas>
|
|
184
|
+
<DSProvider>
|
|
185
|
+
<Router>
|
|
186
|
+
<Link type={LinkTypes.Action}>
|
|
187
|
+
<ReactRouterLink to="#">Next Page</ReactRouterLink>
|
|
188
|
+
</Link>
|
|
189
|
+
</Router>
|
|
190
|
+
</DSProvider>
|
|
191
|
+
</Canvas>
|
|
188
192
|
|
|
189
193
|
### NextJS
|
|
190
194
|
|
|
@@ -194,7 +198,7 @@ These props, along with an implicit `ref` from NextJS and the Design System's
|
|
|
194
198
|
`Link` component `forwardRef` implementation, handle correctly routing between
|
|
195
199
|
pages in a NextJS app.
|
|
196
200
|
|
|
197
|
-
```
|
|
201
|
+
```jsx
|
|
198
202
|
import { Link, LinkTypes } from "@nypl/design-system-react-components";
|
|
199
203
|
|
|
200
204
|
/* This is just an example wrapper that works similarly to NextJS' `Link`
|
|
@@ -226,8 +230,10 @@ export const NextJsLink = (props) => (
|
|
|
226
230
|
</div>
|
|
227
231
|
);
|
|
228
232
|
|
|
229
|
-
<
|
|
230
|
-
<
|
|
231
|
-
<
|
|
232
|
-
|
|
233
|
-
</
|
|
233
|
+
<Canvas>
|
|
234
|
+
<DSProvider>
|
|
235
|
+
<NextJsLink href="#" passHref>
|
|
236
|
+
<Link type={LinkTypes.Action}>Next Page</Link>
|
|
237
|
+
</NextJsLink>
|
|
238
|
+
</DSProvider>
|
|
239
|
+
</Canvas>
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
Link as ReactRouterLink,
|
|
10
10
|
} from "react-router-dom";
|
|
11
11
|
import Icon from "../Icons/Icon";
|
|
12
|
-
import { IconRotationTypes, IconNames } from "../Icons/IconTypes";
|
|
12
|
+
import { IconRotationTypes, IconNames, IconAlign } from "../Icons/IconTypes";
|
|
13
13
|
|
|
14
14
|
describe("Link Accessibility", () => {
|
|
15
|
-
it("passes axe accessibility test", async () => {
|
|
15
|
+
it("passes axe accessibility test for children component", async () => {
|
|
16
16
|
const { container } = render(
|
|
17
17
|
<Link>
|
|
18
18
|
<a href="#test">Test</a>
|
|
@@ -20,26 +20,28 @@ describe("Link Accessibility", () => {
|
|
|
20
20
|
);
|
|
21
21
|
expect(await axe(container)).toHaveNoViolations();
|
|
22
22
|
});
|
|
23
|
+
|
|
24
|
+
it("passes axe accessibility test for href prop", async () => {
|
|
25
|
+
const { container } = render(<Link href="#test">Test</Link>);
|
|
26
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
27
|
+
});
|
|
23
28
|
});
|
|
24
29
|
|
|
25
30
|
describe("Link", () => {
|
|
26
|
-
it("Can pass in icon
|
|
31
|
+
it("Can pass in an icon and text as children and url as prop", () => {
|
|
27
32
|
const utils = render(
|
|
28
33
|
<Link href="#passed-in-link" type={LinkTypes.Action}>
|
|
29
34
|
<Icon
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
iconRotation={IconRotationTypes.rotate0}
|
|
35
|
+
className="more-link"
|
|
36
|
+
name={IconNames.Download}
|
|
37
|
+
align={IconAlign.Left}
|
|
38
|
+
iconRotation={IconRotationTypes.Rotate0}
|
|
35
39
|
/>
|
|
36
40
|
Download
|
|
37
41
|
</Link>
|
|
38
42
|
);
|
|
39
43
|
expect(screen.getByRole("link")).toBeInTheDocument();
|
|
40
|
-
expect(
|
|
41
|
-
utils.container.querySelector(".more-link__icon")
|
|
42
|
-
).toBeInTheDocument();
|
|
44
|
+
expect(utils.container.querySelector(".more-link")).toBeInTheDocument();
|
|
43
45
|
});
|
|
44
46
|
|
|
45
47
|
it("Can pass a link with <a> tag", () => {
|
|
@@ -56,20 +58,17 @@ describe("Link", () => {
|
|
|
56
58
|
<Link type={LinkTypes.Action}>
|
|
57
59
|
<a href="#test2">
|
|
58
60
|
<Icon
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
iconRotation={IconRotationTypes.rotate0}
|
|
61
|
+
className="more-link"
|
|
62
|
+
name={IconNames.Download}
|
|
63
|
+
align={IconAlign.Left}
|
|
64
|
+
iconRotation={IconRotationTypes.Rotate0}
|
|
64
65
|
/>
|
|
65
66
|
Test
|
|
66
67
|
</a>
|
|
67
68
|
</Link>
|
|
68
69
|
);
|
|
69
70
|
expect(screen.getByRole("link")).toBeInTheDocument();
|
|
70
|
-
expect(
|
|
71
|
-
utils.container.querySelector(".more-link__icon")
|
|
72
|
-
).toBeInTheDocument();
|
|
71
|
+
expect(utils.container.querySelector(".more-link")).toBeInTheDocument();
|
|
73
72
|
});
|
|
74
73
|
|
|
75
74
|
it("Generated back link has icon", () => {
|
|
@@ -78,13 +77,10 @@ describe("Link", () => {
|
|
|
78
77
|
content
|
|
79
78
|
</Link>
|
|
80
79
|
);
|
|
80
|
+
expect(utils.container.querySelector(".more-link")).toBeInTheDocument();
|
|
81
81
|
expect(
|
|
82
|
-
utils.container.querySelector(".more-
|
|
83
|
-
).
|
|
84
|
-
expect(utils.container.querySelector(".more-link__icon")).toHaveAttribute(
|
|
85
|
-
"class",
|
|
86
|
-
"more-link__icon more-link__icon--left more-link__icon--rotate-90 "
|
|
87
|
-
);
|
|
82
|
+
utils.container.querySelector(".more-link").getAttribute("class")
|
|
83
|
+
).toContain("chakra-icon more-link");
|
|
88
84
|
});
|
|
89
85
|
|
|
90
86
|
it("Generated forwards link has icon", () => {
|
|
@@ -93,13 +89,10 @@ describe("Link", () => {
|
|
|
93
89
|
content
|
|
94
90
|
</Link>
|
|
95
91
|
);
|
|
92
|
+
expect(utils.container.querySelector(".more-link")).toBeInTheDocument();
|
|
96
93
|
expect(
|
|
97
|
-
utils.container.querySelector(".more-
|
|
98
|
-
).
|
|
99
|
-
expect(utils.container.querySelector(".more-link__icon")).toHaveAttribute(
|
|
100
|
-
"class",
|
|
101
|
-
"more-link__icon more-link__icon--right more-link__icon--rotate-270 "
|
|
102
|
-
);
|
|
94
|
+
utils.container.querySelector(".more-link").getAttribute("class")
|
|
95
|
+
).toContain("chakra-icon more-link");
|
|
103
96
|
});
|
|
104
97
|
|
|
105
98
|
it("Can pass in text as child and url as props", () => {
|
|
@@ -113,12 +106,10 @@ describe("Link", () => {
|
|
|
113
106
|
<Link type={LinkTypes.Action}>
|
|
114
107
|
<ReactRouterLink to="#">
|
|
115
108
|
<Icon
|
|
116
|
-
name={IconNames.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
iconRotation={IconRotationTypes.rotate0}
|
|
121
|
-
></Icon>
|
|
109
|
+
name={IconNames.Download}
|
|
110
|
+
align={IconAlign.Left}
|
|
111
|
+
iconRotation={IconRotationTypes.Rotate0}
|
|
112
|
+
/>
|
|
122
113
|
Download
|
|
123
114
|
</ReactRouterLink>
|
|
124
115
|
</Link>
|
|
@@ -138,16 +129,14 @@ describe("Link", () => {
|
|
|
138
129
|
render(
|
|
139
130
|
<Link>
|
|
140
131
|
<Icon
|
|
141
|
-
name={IconNames.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
iconRotation={IconRotationTypes.rotate0}
|
|
146
|
-
></Icon>
|
|
132
|
+
name={IconNames.Download}
|
|
133
|
+
align={IconAlign.Left}
|
|
134
|
+
iconRotation={IconRotationTypes.Rotate0}
|
|
135
|
+
/>
|
|
147
136
|
<a href="#test">Test</a>
|
|
148
137
|
</Link>
|
|
149
138
|
)
|
|
150
|
-
).toThrowError("Please pass only one child into Link");
|
|
139
|
+
).toThrowError("Please pass only one child into `Link`.");
|
|
151
140
|
});
|
|
152
141
|
|
|
153
142
|
// TODO:
|
|
@@ -1,128 +1,142 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { Box, useStyleConfig } from "@chakra-ui/react";
|
|
3
|
+
|
|
3
4
|
import { LinkTypes } from "./LinkTypes";
|
|
4
|
-
import Icon
|
|
5
|
-
import { IconRotationTypes, IconNames } from "../Icons/IconTypes";
|
|
5
|
+
import Icon from "../Icons/Icon";
|
|
6
|
+
import { IconRotationTypes, IconNames, IconAlign } from "../Icons/IconTypes";
|
|
7
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
6
8
|
|
|
7
9
|
export interface LinkProps {
|
|
8
10
|
/** Additional attributes, such as `rel=nofollow`, to pass to the `<a>` tag. */
|
|
9
11
|
attributes?: { [key: string]: any };
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
/**
|
|
12
|
+
/** Any child node passed to the component. */
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
/** Additional class name to render in the `Link` component. */
|
|
13
15
|
className?: string;
|
|
14
|
-
/**
|
|
16
|
+
/** The `href` attribute for the anchor element. */
|
|
15
17
|
href?: string;
|
|
16
|
-
/** ID */
|
|
18
|
+
/** ID used for accessibility purposes. */
|
|
17
19
|
id?: string;
|
|
18
|
-
/** Controls the link visuals
|
|
20
|
+
/** Controls the link visuals: action, button, backwards, forwards, or default. */
|
|
19
21
|
type?: LinkTypes;
|
|
20
|
-
/** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
|
|
21
|
-
modifiers?: string[];
|
|
22
|
-
/** Any child node passed to the component. */
|
|
23
|
-
children: React.ReactNode;
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* Renders the `Link` children components with a direction arrow icon based
|
|
26
|
+
* on the `Backwards` or `Forwards` `LinkTypes` type.
|
|
29
27
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
className,
|
|
35
|
-
href,
|
|
36
|
-
id,
|
|
37
|
-
type = LinkTypes.Default,
|
|
38
|
-
modifiers = [],
|
|
39
|
-
children,
|
|
40
|
-
} = props;
|
|
41
|
-
|
|
42
|
-
// Merge the necessary props alongside any extra props for the
|
|
43
|
-
// anchor element.
|
|
44
|
-
const linkProps = {
|
|
45
|
-
id,
|
|
46
|
-
href,
|
|
47
|
-
...attributes,
|
|
48
|
-
};
|
|
49
|
-
let baseClass = "link";
|
|
50
|
-
|
|
51
|
-
let childProps = {};
|
|
28
|
+
function getWithDirectionIcon(children, type: LinkTypes) {
|
|
29
|
+
let iconRotation;
|
|
30
|
+
let iconAlign;
|
|
31
|
+
let icon = null;
|
|
52
32
|
|
|
53
|
-
if (typeof children === "string" && !href) {
|
|
54
|
-
throw new Error("Link needs prop 'href'");
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
type === LinkTypes.Action ||
|
|
59
|
-
type === LinkTypes.Forwards ||
|
|
60
|
-
type === LinkTypes.Backwards
|
|
61
|
-
) {
|
|
62
|
-
baseClass = "more-link";
|
|
63
|
-
} else if (type === LinkTypes.Button) {
|
|
64
|
-
baseClass = "button";
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let iconRotation, iconPosition, iconLeft, iconRight;
|
|
68
33
|
// An icon needs a position in order for it to be created and
|
|
69
34
|
// rendered in the link.
|
|
70
35
|
if (type === LinkTypes.Backwards) {
|
|
71
|
-
iconRotation = IconRotationTypes.
|
|
72
|
-
|
|
36
|
+
iconRotation = IconRotationTypes.Rotate90;
|
|
37
|
+
iconAlign = IconAlign.Left;
|
|
73
38
|
} else if (type === LinkTypes.Forwards) {
|
|
74
|
-
iconRotation = IconRotationTypes.
|
|
75
|
-
|
|
39
|
+
iconRotation = IconRotationTypes.Rotate270;
|
|
40
|
+
iconAlign = IconAlign.Right;
|
|
76
41
|
}
|
|
77
42
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
43
|
+
icon = (
|
|
44
|
+
<Icon
|
|
45
|
+
name={IconNames.Arrow}
|
|
46
|
+
align={iconAlign}
|
|
47
|
+
iconRotation={iconRotation}
|
|
48
|
+
className="more-link"
|
|
49
|
+
/>
|
|
50
|
+
);
|
|
84
51
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
52
|
+
return (
|
|
53
|
+
<>
|
|
54
|
+
{type === LinkTypes.Backwards && icon}
|
|
55
|
+
{children}
|
|
56
|
+
{type === LinkTypes.Forwards && icon}
|
|
57
|
+
</>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A component that uses an `href` prop or a child anchor element, to create
|
|
63
|
+
* an anchor element with added styling and conventions.
|
|
64
|
+
*/
|
|
65
|
+
const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
|
|
66
|
+
(props, ref: any) => {
|
|
67
|
+
const {
|
|
68
|
+
attributes,
|
|
69
|
+
children,
|
|
70
|
+
className,
|
|
71
|
+
href,
|
|
72
|
+
id = generateUUID(),
|
|
73
|
+
type = LinkTypes.Default,
|
|
74
|
+
} = props;
|
|
91
75
|
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
76
|
+
// Merge the necessary props alongside any extra props for the
|
|
77
|
+
// anchor element.
|
|
78
|
+
const linkProps = {
|
|
79
|
+
id,
|
|
80
|
+
href,
|
|
81
|
+
...attributes,
|
|
82
|
+
};
|
|
83
|
+
// The LinkTypes.Default type.
|
|
84
|
+
let variant = "link";
|
|
85
|
+
|
|
86
|
+
if (typeof children === "string" && !href) {
|
|
87
|
+
throw new Error("Link needs prop 'href'");
|
|
97
88
|
}
|
|
98
|
-
const children = props.children[0] ? props.children[0] : props.children;
|
|
99
|
-
childProps = children.props;
|
|
100
89
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
ref,
|
|
118
|
-
},
|
|
119
|
-
iconLeft,
|
|
120
|
-
props.children,
|
|
121
|
-
iconRight
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
90
|
+
if (
|
|
91
|
+
type === LinkTypes.Action ||
|
|
92
|
+
type === LinkTypes.Forwards ||
|
|
93
|
+
type === LinkTypes.Backwards
|
|
94
|
+
) {
|
|
95
|
+
variant = "moreLink";
|
|
96
|
+
} else if (type === LinkTypes.Button) {
|
|
97
|
+
variant = "button";
|
|
98
|
+
}
|
|
99
|
+
const style = useStyleConfig("Link", { variant });
|
|
100
|
+
// Render with specific direction arrows only if the type
|
|
101
|
+
// is Forwards or Backwards.
|
|
102
|
+
const newChildren =
|
|
103
|
+
type === LinkTypes.Forwards || type === LinkTypes.Backwards
|
|
104
|
+
? getWithDirectionIcon(children, type)
|
|
105
|
+
: children;
|
|
125
106
|
|
|
126
|
-
|
|
107
|
+
if (!href) {
|
|
108
|
+
// React Types error makes this fail:
|
|
109
|
+
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/32832
|
|
110
|
+
// let children = React.Children.only(children);
|
|
111
|
+
if (React.Children.count(children) > 1) {
|
|
112
|
+
throw new Error("Please pass only one child into `Link`.");
|
|
113
|
+
}
|
|
114
|
+
const childrenToClone: any = children[0] ? children[0] : children;
|
|
115
|
+
const childProps = childrenToClone.props;
|
|
116
|
+
return React.cloneElement(
|
|
117
|
+
childrenToClone,
|
|
118
|
+
{
|
|
119
|
+
className,
|
|
120
|
+
...linkProps,
|
|
121
|
+
...childProps,
|
|
122
|
+
ref,
|
|
123
|
+
},
|
|
124
|
+
[childrenToClone.props.children]
|
|
125
|
+
);
|
|
126
|
+
} else {
|
|
127
|
+
return (
|
|
128
|
+
<Box
|
|
129
|
+
as="a"
|
|
130
|
+
className={className}
|
|
131
|
+
ref={ref}
|
|
132
|
+
{...linkProps}
|
|
133
|
+
__css={style}
|
|
134
|
+
>
|
|
135
|
+
{newChildren}
|
|
136
|
+
</Box>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
);
|
|
127
141
|
|
|
128
142
|
export default Link;
|
|
@@ -9,8 +9,6 @@ import {
|
|
|
9
9
|
import { withDesign } from "storybook-addon-designs";
|
|
10
10
|
import Card from "../Card/Card";
|
|
11
11
|
import Heading from "../Heading/Heading";
|
|
12
|
-
import Icon from "../Icons/Icon";
|
|
13
|
-
import { IconNames, IconRotationTypes } from "../Icons/IconTypes";
|
|
14
12
|
import Image from "../Image/Image";
|
|
15
13
|
import Link from "../Link/Link";
|
|
16
14
|
import { LinkTypes } from "../Link/LinkTypes";
|
|
@@ -21,9 +19,10 @@ import {
|
|
|
21
19
|
cardsList,
|
|
22
20
|
listRenderer,
|
|
23
21
|
} from "./List.stories.tsx";
|
|
22
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
24
23
|
|
|
25
24
|
<Meta
|
|
26
|
-
title="List"
|
|
25
|
+
title={getCategory("List")}
|
|
27
26
|
component={List}
|
|
28
27
|
decorators={[withDesign]}
|
|
29
28
|
parameters={{
|
|
@@ -51,6 +50,11 @@ import {
|
|
|
51
50
|
|
|
52
51
|
# List
|
|
53
52
|
|
|
53
|
+
| Component Version | DS Version |
|
|
54
|
+
| ----------------- | ---------- |
|
|
55
|
+
| Added | `0.7.0` |
|
|
56
|
+
| Latest | `0.23.2` |
|
|
57
|
+
|
|
54
58
|
<Description of={List} />
|
|
55
59
|
|
|
56
60
|
<Preview withToolbar>
|