@nypl/design-system-react-components 0.25.1 → 0.25.5
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 +118 -1
- package/README.md +98 -50
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
- package/dist/components/Button/Button.d.ts +13 -8
- package/dist/components/Button/ButtonTypes.d.ts +2 -1
- package/dist/components/Card/Card.d.ts +36 -52
- package/dist/components/Card/CardTypes.d.ts +0 -15
- package/dist/components/Checkbox/Checkbox.d.ts +17 -13
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
- package/dist/components/DatePicker/DatePicker.d.ts +36 -34
- package/dist/components/Fieldset/Fieldset.d.ts +25 -0
- package/dist/components/Heading/Heading.d.ts +4 -4
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
- package/dist/components/Icons/Icon.d.ts +8 -0
- package/dist/components/Icons/IconSvgs.d.ts +11 -0
- package/dist/components/Icons/IconTypes.d.ts +11 -0
- package/dist/components/Image/Image.d.ts +19 -9
- package/dist/components/Image/ImageTypes.d.ts +20 -0
- package/dist/components/Link/Link.d.ts +4 -0
- package/dist/components/List/List.d.ts +19 -14
- package/dist/components/Notification/Notification.d.ts +37 -16
- package/dist/components/Pagination/Pagination.d.ts +16 -13
- package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
- package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
- package/dist/components/Radio/Radio.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
- package/dist/components/SearchBar/SearchBar.d.ts +3 -3
- package/dist/components/Select/Select.d.ts +2 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
- package/dist/components/Slider/Slider.d.ts +57 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +12 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
- package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
- package/dist/design-system-react-components.cjs.development.js +6131 -3715
- 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 +6124 -3699
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +16 -0
- package/dist/hooks/useNYPLTheme.d.ts +54 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +13 -8
- package/dist/resources.scss +180 -170
- package/dist/styles.css +1 -1
- package/dist/theme/components/button.d.ts +22 -8
- package/dist/theme/components/card.d.ts +168 -0
- package/dist/theme/components/checkbox.d.ts +5 -1
- package/dist/theme/components/checkboxGroup.d.ts +12 -0
- package/dist/theme/components/componentWrapper.d.ts +11 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +27 -0
- package/dist/theme/components/global.d.ts +23 -13
- package/dist/theme/components/globalMixins.d.ts +9 -1
- package/dist/theme/components/heading.d.ts +5 -0
- package/dist/theme/components/helperErrorText.d.ts +10 -0
- package/dist/theme/components/hero.d.ts +1 -0
- package/dist/theme/components/horizontalRule.d.ts +14 -0
- package/dist/theme/components/image.d.ts +31 -0
- package/dist/theme/components/label.d.ts +5 -3
- package/dist/theme/components/link.d.ts +4 -0
- package/dist/theme/components/list.d.ts +89 -0
- package/dist/theme/components/notification.d.ts +75 -0
- package/dist/theme/components/pagination.d.ts +19 -0
- package/dist/theme/components/progressIndicator.d.ts +50 -0
- package/dist/theme/components/radioGroup.d.ts +12 -0
- package/dist/theme/components/select.d.ts +11 -2
- package/dist/theme/components/skeletonLoader.d.ts +98 -0
- package/dist/theme/components/slider.d.ts +51 -0
- package/dist/theme/components/tabs.d.ts +54 -3
- package/dist/theme/components/textInput.d.ts +8 -1
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +8 -8
- package/dist/theme/foundations/global.d.ts +6 -1
- package/dist/theme/foundations/radii.d.ts +5 -0
- package/dist/theme/foundations/spacing.d.ts +16 -16
- package/package.json +72 -83
- package/src/__tests__/setup.ts +2 -2
- package/src/components/Accordion/Accordion.stories.mdx +39 -44
- package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +2 -1
- package/src/components/Autosuggest/_Autosuggest.scss +5 -5
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +14 -10
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +23 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +199 -1
- package/src/components/Button/Button.stories.mdx +15 -10
- package/src/components/Button/Button.test.tsx +21 -7
- package/src/components/Button/Button.tsx +22 -34
- package/src/components/Button/ButtonTypes.tsx +1 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
- package/src/components/Card/Card.stories.mdx +296 -259
- package/src/components/Card/Card.test.tsx +156 -84
- package/src/components/Card/Card.tsx +195 -145
- package/src/components/Card/CardTypes.tsx +0 -17
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
- package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
- package/src/components/CardEdition/_CardEdition.scss +22 -23
- package/src/components/Chakra/Box.stories.mdx +15 -16
- package/src/components/Chakra/Center.stories.mdx +31 -16
- package/src/components/Chakra/Grid.stories.mdx +28 -15
- package/src/components/Chakra/Stack.stories.mdx +35 -18
- package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
- package/src/components/Checkbox/Checkbox.test.tsx +47 -2
- package/src/components/Checkbox/Checkbox.tsx +39 -33
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +29 -2
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -18
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +47 -81
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
- package/src/components/DatePicker/DatePicker.test.tsx +264 -64
- package/src/components/DatePicker/DatePicker.tsx +159 -128
- package/src/components/DatePicker/_DatePicker.scss +33 -67
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
- package/src/components/Fieldset/Fieldset.test.tsx +125 -0
- package/src/components/Fieldset/Fieldset.tsx +52 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
- package/src/components/Form/Form.stories.mdx +24 -6
- package/src/components/Form/Form.test.tsx +1 -1
- package/src/components/Form/Form.tsx +1 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
- package/src/components/Grid/SimpleGrid.test.tsx +4 -4
- package/src/components/Heading/Heading.stories.mdx +3 -4
- package/src/components/Heading/Heading.tsx +5 -5
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
- package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
- package/src/components/Hero/Hero.stories.mdx +12 -2
- package/src/components/Hero/Hero.tsx +1 -1
- package/src/components/Hero/HeroTypes.tsx +1 -0
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
- package/src/components/Icons/Icon.stories.mdx +12 -4
- package/src/components/Icons/Icon.test.tsx +18 -0
- package/src/components/Icons/Icon.tsx +16 -1
- package/src/components/Icons/IconSvgs.tsx +22 -0
- package/src/components/Icons/IconTypes.tsx +11 -0
- package/src/components/Image/Image.stories.mdx +220 -0
- package/src/components/Image/Image.test.tsx +131 -29
- package/src/components/Image/Image.tsx +84 -56
- package/src/components/Image/ImageTypes.ts +22 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
- package/src/components/Input/Input.stories.tsx +23 -67
- package/src/components/Input/Input.test.tsx +4 -4
- package/src/components/Input/_Input.scss +23 -14
- package/src/components/Link/Link.tsx +4 -1
- package/src/components/List/List.stories.mdx +124 -49
- package/src/components/List/List.test.tsx +142 -63
- package/src/components/List/List.tsx +89 -93
- package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
- package/src/components/Modal/Modal.stories.mdx +3 -3
- package/src/components/Modal/_Modal.scss +2 -2
- package/src/components/Notification/Notification.stories.mdx +109 -112
- package/src/components/Notification/Notification.test.tsx +99 -110
- package/src/components/Notification/Notification.tsx +156 -159
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
- package/src/components/Pagination/Pagination.stories.mdx +26 -27
- package/src/components/Pagination/Pagination.stories.tsx +11 -16
- package/src/components/Pagination/Pagination.test.tsx +276 -146
- package/src/components/Pagination/Pagination.tsx +174 -154
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
- package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
- package/src/components/Radio/Radio.test.tsx +20 -4
- package/src/components/Radio/Radio.tsx +6 -3
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
- package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
- package/src/components/RadioGroup/RadioGroup.tsx +19 -19
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
- package/src/components/SearchBar/SearchBar.Test.tsx +20 -1
- package/src/components/SearchBar/SearchBar.stories.mdx +113 -8
- package/src/components/SearchBar/SearchBar.tsx +20 -10
- package/src/components/Select/Select.test.tsx +12 -0
- package/src/components/Select/Select.tsx +5 -2
- package/src/components/Select/SelectTypes.tsx +1 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
- package/src/components/Slider/Slider.stories.mdx +529 -0
- package/src/components/Slider/Slider.test.tsx +653 -0
- package/src/components/Slider/Slider.tsx +303 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
- package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
- package/src/components/StyleGuide/Buttons.stories.mdx +89 -73
- package/src/components/StyleGuide/ColorCard.tsx +46 -0
- package/src/components/StyleGuide/Colors.stories.mdx +171 -311
- package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
- package/src/components/StyleGuide/Forms.stories.mdx +9 -7
- package/src/components/StyleGuide/Iconography.stories.mdx +85 -91
- package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
- package/src/components/StyleGuide/Typography.stories.mdx +202 -189
- package/src/components/StyleGuide/UIDocCard.tsx +1 -1
- package/src/components/Tabs/Tabs.stories.mdx +73 -11
- package/src/components/Tabs/Tabs.tsx +87 -64
- package/src/components/Template/Template.stories.mdx +25 -27
- package/src/components/TextInput/TextInput.stories.mdx +1 -1
- package/src/components/TextInput/TextInput.test.tsx +22 -2
- package/src/components/TextInput/TextInput.tsx +28 -8
- package/src/components/TextInput/TextInputTypes.tsx +2 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
- package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
- package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
- package/src/docs/Chakra.stories.mdx +244 -63
- package/src/docs/Intro.stories.mdx +5 -2
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.ts +34 -0
- package/src/hooks/useNYPLTheme.ts +67 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +22 -19
- package/src/resources.scss +5 -5
- package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
- package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
- package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
- package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
- package/src/styles/base/_place-holder.scss +14 -3
- package/src/styles/{03-space → space}/_space-inline.scss +14 -14
- package/src/styles/{03-space → space}/_space-inset.scss +10 -10
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +13 -60
- package/src/theme/components/button.ts +21 -15
- package/src/theme/components/card.ts +174 -0
- package/src/theme/components/checkbox.ts +8 -3
- package/src/theme/components/checkboxGroup.ts +8 -0
- package/src/theme/components/componentWrapper.ts +10 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +18 -0
- package/src/theme/components/global.ts +26 -15
- package/src/theme/components/globalMixins.ts +9 -1
- package/src/theme/components/heading.ts +10 -5
- package/src/theme/components/helperErrorText.ts +9 -0
- package/src/theme/components/hero.ts +4 -3
- package/src/theme/components/horizontalRule.ts +13 -0
- package/src/theme/components/icon.ts +9 -9
- package/src/theme/components/image.ts +116 -0
- package/src/theme/components/label.ts +3 -10
- package/src/theme/components/link.ts +5 -1
- package/src/theme/components/list.ts +73 -0
- package/src/theme/components/notification.ts +93 -0
- package/src/theme/components/pagination.ts +20 -0
- package/src/theme/components/progressIndicator.ts +62 -0
- package/src/theme/components/radio.ts +2 -2
- package/src/theme/components/radioGroup.ts +8 -0
- package/src/theme/components/select.ts +6 -3
- package/src/theme/components/skeletonLoader.ts +107 -0
- package/src/theme/components/slider.ts +79 -0
- package/src/theme/components/statusBadge.ts +1 -2
- package/src/theme/components/tabs.ts +49 -19
- package/src/theme/components/template.ts +8 -8
- package/src/theme/components/textInput.ts +5 -4
- package/src/theme/components/videoPlayer.ts +49 -0
- package/src/theme/foundations/breakpoints.ts +8 -8
- package/src/theme/foundations/global.ts +6 -1
- package/src/theme/foundations/radii.ts +6 -0
- package/src/theme/foundations/spacing.ts +24 -24
- package/src/theme/index.ts +41 -10
- package/src/utils/componentCategories.ts +4 -3
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
- package/dist/components/Image/Image.stories.d.ts +0 -18
- package/dist/components/List/List.stories.d.ts +0 -7
- package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
- package/dist/theme/components/customRadioGroup.d.ts +0 -18
- package/src/components/Button/_Button.scss +0 -32
- package/src/components/Card/_Card.scss +0 -308
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
- package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
- package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
- package/src/components/Image/Image.stories.tsx +0 -54
- package/src/components/Image/_Image.scss +0 -38
- package/src/components/List/List.stories.tsx +0 -139
- package/src/components/List/_List.scss +0 -76
- package/src/components/Notification/_Notification.scss +0 -110
- package/src/components/Pagination/_Pagination.scss +0 -40
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
- package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
- package/src/styles/01-colors/_colors-brand.scss +0 -62
- package/src/styles/01-colors/_colors-utility.scss +0 -67
- package/src/styles/02-typography/_type-scale.css +0 -11
- package/src/styles/02-typography/_type-weight.css +0 -7
- package/src/styles/02-typography/_typefaces.css +0 -4
- package/src/styles/03-space/_space-stack.scss +0 -116
- package/src/styles/03-space/_space.css +0 -30
- package/src/styles/base/_card-grid.scss +0 -78
- package/src/styles/base/_typography.scss +0 -11
- package/src/theme/components/customCheckboxGroup.ts +0 -12
- package/src/theme/components/customRadioGroup.ts +0 -12
|
@@ -1,53 +1,77 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
4
5
|
|
|
5
6
|
import List from "./List";
|
|
6
7
|
import { ListTypes } from "./ListTypes";
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
|
|
10
|
+
const fishDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
term: "Mahi-mahi",
|
|
13
|
+
definition: "The mahi-mahi is an ocean fish known...",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
term: "Golden trout",
|
|
17
|
+
definition: "The golden trout is a beautifully colored fish...",
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
describe("List Accessibility", () => {
|
|
22
|
+
it("passes axe accessibility test for unordered list", async () => {
|
|
23
|
+
const { container, rerender } = render(
|
|
11
24
|
<List type={ListTypes.Unordered}>
|
|
12
25
|
<li>Mahi-mahi</li>
|
|
13
26
|
<li>Golden trout</li>
|
|
14
27
|
</List>
|
|
15
28
|
);
|
|
16
29
|
expect(await axe(container)).toHaveNoViolations();
|
|
30
|
+
|
|
31
|
+
rerender(<List type={ListTypes.Unordered} listItems={fishArray} />);
|
|
32
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
33
|
+
});
|
|
34
|
+
it("passes axe accessibility test for ordered list", async () => {
|
|
35
|
+
const { container, rerender } = render(
|
|
36
|
+
<List type={ListTypes.Ordered}>
|
|
37
|
+
<li>Mahi-mahi</li>
|
|
38
|
+
<li>Golden trout</li>
|
|
39
|
+
</List>
|
|
40
|
+
);
|
|
41
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
42
|
+
|
|
43
|
+
rerender(<List type={ListTypes.Ordered} listItems={fishArray} />);
|
|
44
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
45
|
+
});
|
|
46
|
+
it("passes axe accessibility test for definition list", async () => {
|
|
47
|
+
const { container } = render(
|
|
48
|
+
<List
|
|
49
|
+
type={ListTypes.Definition}
|
|
50
|
+
title="Animal Crossing Fish"
|
|
51
|
+
listItems={fishDefinitions}
|
|
52
|
+
/>
|
|
53
|
+
);
|
|
54
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
17
55
|
});
|
|
18
56
|
});
|
|
19
57
|
|
|
20
58
|
describe("List", () => {
|
|
21
|
-
const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
|
|
22
|
-
const fishDefinitions = [
|
|
23
|
-
{
|
|
24
|
-
term: "Mahi-mahi",
|
|
25
|
-
definition: "The mahi-mahi is an ocean fish known...",
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
term: "Golden trout",
|
|
29
|
-
definition: "The golden trout is a beautifully colored fish...",
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
|
-
|
|
33
59
|
it("renders unordered list", () => {
|
|
34
|
-
|
|
60
|
+
render(
|
|
35
61
|
<List type={ListTypes.Unordered}>
|
|
36
62
|
<li>Mahi-mahi</li>
|
|
37
63
|
<li>Golden trout</li>
|
|
38
64
|
</List>
|
|
39
65
|
);
|
|
40
|
-
|
|
66
|
+
|
|
41
67
|
expect(screen.getAllByRole("listitem")).toHaveLength(2);
|
|
42
68
|
expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
|
|
43
69
|
expect(screen.getByText("Golden trout")).toBeInTheDocument();
|
|
44
70
|
});
|
|
45
71
|
|
|
46
72
|
it("renders unordered list with the `listItems` prop", () => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
);
|
|
50
|
-
expect(utils.container.querySelector(".list")).toBeInTheDocument();
|
|
73
|
+
render(<List type={ListTypes.Unordered} listItems={fishArray} />);
|
|
74
|
+
|
|
51
75
|
expect(screen.getAllByRole("listitem")).toHaveLength(4);
|
|
52
76
|
expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
|
|
53
77
|
expect(screen.getByText("Golden trout")).toBeInTheDocument();
|
|
@@ -56,23 +80,21 @@ describe("List", () => {
|
|
|
56
80
|
});
|
|
57
81
|
|
|
58
82
|
it("renders ordered list", () => {
|
|
59
|
-
|
|
83
|
+
render(
|
|
60
84
|
<List type={ListTypes.Ordered}>
|
|
61
85
|
<li>Mahi-mahi</li>
|
|
62
86
|
<li>Golden trout</li>
|
|
63
87
|
</List>
|
|
64
88
|
);
|
|
65
|
-
|
|
89
|
+
|
|
66
90
|
expect(screen.getAllByRole("listitem")).toHaveLength(2);
|
|
67
91
|
expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
|
|
68
92
|
expect(screen.getByText("Golden trout")).toBeInTheDocument();
|
|
69
93
|
});
|
|
70
94
|
|
|
71
95
|
it("renders ordered list with the `listItems` prop", () => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
);
|
|
75
|
-
expect(utils.container.querySelector(".list")).toBeInTheDocument();
|
|
96
|
+
render(<List type={ListTypes.Ordered} listItems={fishArray} />);
|
|
97
|
+
|
|
76
98
|
expect(screen.getAllByRole("listitem")).toHaveLength(4);
|
|
77
99
|
expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
|
|
78
100
|
expect(screen.getByText("Golden trout")).toBeInTheDocument();
|
|
@@ -105,50 +127,107 @@ describe("List", () => {
|
|
|
105
127
|
expect(screen.getAllByRole("definition")).toHaveLength(2);
|
|
106
128
|
});
|
|
107
129
|
|
|
108
|
-
it("
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
</
|
|
116
|
-
|
|
117
|
-
)
|
|
130
|
+
it("consoles a warning when children and the `listItems` prop are both passed", () => {
|
|
131
|
+
const warn = jest.spyOn(console, "warn");
|
|
132
|
+
render(
|
|
133
|
+
<List type={ListTypes.Ordered} listItems={fishArray}>
|
|
134
|
+
<li>Mahi-mahi</li>
|
|
135
|
+
<li>Golden trout</li>
|
|
136
|
+
<li>Rainbowfish</li>
|
|
137
|
+
<li>Suckerfish</li>
|
|
138
|
+
</List>
|
|
139
|
+
);
|
|
140
|
+
expect(warn).toHaveBeenCalledWith(
|
|
141
|
+
"Pass in either `<li>`, `<dt>`, or `<dd>` children or use the `listItems` data prop, but don't use both."
|
|
142
|
+
);
|
|
118
143
|
});
|
|
119
144
|
|
|
120
|
-
it("
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
<span>Golden trout</span>
|
|
126
|
-
<span>Rainbowfish</span>
|
|
127
|
-
</List>
|
|
128
|
-
)
|
|
129
|
-
).toThrowError(
|
|
130
|
-
"Direct children of `List` (definition) should be `<dt>`s or `<dd>`s"
|
|
145
|
+
it("consoles a warning when no children are passed or the `listItems` prop is not passed", () => {
|
|
146
|
+
const warn = jest.spyOn(console, "warn");
|
|
147
|
+
render(<List type={ListTypes.Ordered}></List>);
|
|
148
|
+
expect(warn).toHaveBeenCalledWith(
|
|
149
|
+
"Either `<li>` children or the `listItems` prop must be used."
|
|
131
150
|
);
|
|
132
151
|
});
|
|
133
152
|
|
|
134
|
-
it("
|
|
135
|
-
|
|
136
|
-
|
|
153
|
+
it("consoles a warning when you pass an ordered or unordered list children that aren't <li>s", () => {
|
|
154
|
+
const warn = jest.spyOn(console, "warn");
|
|
155
|
+
render(
|
|
156
|
+
<List type={ListTypes.Ordered}>
|
|
157
|
+
<span>Mahi-mahi</span>
|
|
158
|
+
<span>Golden trout</span>
|
|
159
|
+
<span>Rainbowfish</span>
|
|
160
|
+
</List>
|
|
161
|
+
);
|
|
162
|
+
expect(warn).toHaveBeenCalledWith(
|
|
163
|
+
"Direct children of `List` (ol) should be `<li>`s."
|
|
137
164
|
);
|
|
138
165
|
});
|
|
139
166
|
|
|
140
|
-
it("
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
"Pass in either `<li>` children or use the `listItems` data prop, don't use both."
|
|
167
|
+
it("consoles a warning when you pass a definition list children that aren't `<dt>`s or `<dd>`s", () => {
|
|
168
|
+
const warn = jest.spyOn(console, "warn");
|
|
169
|
+
render(
|
|
170
|
+
<List type={ListTypes.Definition}>
|
|
171
|
+
<span>Mahi-mahi</span>
|
|
172
|
+
<span>Golden trout</span>
|
|
173
|
+
<span>Rainbowfish</span>
|
|
174
|
+
</List>
|
|
175
|
+
);
|
|
176
|
+
expect(warn).toHaveBeenCalledWith(
|
|
177
|
+
"Direct children of `List` (definition) should be `<dt>`s and `<dd>`s."
|
|
152
178
|
);
|
|
153
179
|
});
|
|
180
|
+
|
|
181
|
+
it("Renders the UI snapshot correctly", () => {
|
|
182
|
+
const unordered = renderer
|
|
183
|
+
.create(
|
|
184
|
+
<List id="unordered" type={ListTypes.Unordered} listItems={fishArray} />
|
|
185
|
+
)
|
|
186
|
+
.toJSON();
|
|
187
|
+
const unorderedNoStyling = renderer
|
|
188
|
+
.create(
|
|
189
|
+
<List
|
|
190
|
+
id="ordered"
|
|
191
|
+
type={ListTypes.Unordered}
|
|
192
|
+
listItems={fishArray}
|
|
193
|
+
noStyling
|
|
194
|
+
/>
|
|
195
|
+
)
|
|
196
|
+
.toJSON();
|
|
197
|
+
const ordered = renderer
|
|
198
|
+
.create(
|
|
199
|
+
<List
|
|
200
|
+
id="unordered-no-styling"
|
|
201
|
+
type={ListTypes.Ordered}
|
|
202
|
+
listItems={fishArray}
|
|
203
|
+
/>
|
|
204
|
+
)
|
|
205
|
+
.toJSON();
|
|
206
|
+
const orderedNoStyling = renderer
|
|
207
|
+
.create(
|
|
208
|
+
<List
|
|
209
|
+
id="ordered-no-styling"
|
|
210
|
+
type={ListTypes.Ordered}
|
|
211
|
+
listItems={fishArray}
|
|
212
|
+
noStyling
|
|
213
|
+
/>
|
|
214
|
+
)
|
|
215
|
+
.toJSON();
|
|
216
|
+
const definition = renderer
|
|
217
|
+
.create(
|
|
218
|
+
<List
|
|
219
|
+
id="definition"
|
|
220
|
+
type={ListTypes.Definition}
|
|
221
|
+
title="Animal Crossing Fish"
|
|
222
|
+
listItems={fishDefinitions}
|
|
223
|
+
/>
|
|
224
|
+
)
|
|
225
|
+
.toJSON();
|
|
226
|
+
|
|
227
|
+
expect(unordered).toMatchSnapshot();
|
|
228
|
+
expect(unorderedNoStyling).toMatchSnapshot();
|
|
229
|
+
expect(ordered).toMatchSnapshot();
|
|
230
|
+
expect(orderedNoStyling).toMatchSnapshot();
|
|
231
|
+
expect(definition).toMatchSnapshot();
|
|
232
|
+
});
|
|
154
233
|
});
|
|
@@ -1,80 +1,87 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { As, Box, useStyleConfig } from "@chakra-ui/react";
|
|
2
3
|
|
|
3
|
-
import bem from "../../utils/bem";
|
|
4
4
|
import { ListTypes } from "./ListTypes";
|
|
5
5
|
import Heading from "../Heading/Heading";
|
|
6
6
|
import { HeadingLevels } from "../Heading/HeadingTypes";
|
|
7
|
+
import generateUUID from "../../helpers/generateUUID";
|
|
7
8
|
|
|
8
9
|
interface DefinitionProps {
|
|
9
10
|
term: string;
|
|
10
11
|
definition: string;
|
|
11
12
|
}
|
|
12
13
|
export interface ListProps {
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
blockName?: string;
|
|
14
|
+
/** Optionally pass in additional Chakra-based styles. */
|
|
15
|
+
additionalStyles?: { [key: string]: any };
|
|
16
16
|
/** ClassName you can add in addition to 'list' */
|
|
17
17
|
className?: string;
|
|
18
18
|
/** ID that other components can cross reference for accessibility purposes */
|
|
19
19
|
id?: string;
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
modifiers?: any[];
|
|
23
|
-
/** An optional title that will appear over the list. This prop only applies
|
|
24
|
-
* to Definition Lists. */
|
|
25
|
-
title?: string;
|
|
26
|
-
/** Ordered, Unordered, or Definition */
|
|
27
|
-
type: ListTypes;
|
|
20
|
+
/** Display the list in a row. */
|
|
21
|
+
inline?: boolean;
|
|
28
22
|
/** Data to render if children are not passed. For `ListTypes.Ordered` and
|
|
29
23
|
* `ListTypes.Unordered` `List` types, the data structure is an array of
|
|
30
24
|
* strings to renders as `li` items. For `ListTypes.Definition` `List` types,
|
|
31
25
|
* the data structure is an array of objects with `term` and `definition`
|
|
32
26
|
* properties to render `dt` and `dd` elements, respectively.
|
|
33
27
|
*/
|
|
34
|
-
listItems?: (string | DefinitionProps)[];
|
|
28
|
+
listItems?: (string | JSX.Element | DefinitionProps)[];
|
|
29
|
+
/** Remove list styling. */
|
|
30
|
+
noStyling?: boolean;
|
|
31
|
+
/** An optional title that will appear over the list. This prop only applies
|
|
32
|
+
* to Definition Lists. */
|
|
33
|
+
title?: string;
|
|
34
|
+
/** The type of list: Ordered, Unordered, or Definition. Unordered by default. */
|
|
35
|
+
type: ListTypes;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
38
|
+
/**
|
|
39
|
+
* A component that renders list item `li` elements or definition item `dt`
|
|
40
|
+
* and `dd` elements based on the `type` prop. Note that the `title` prop will
|
|
41
|
+
* only display for the `Definition` list type.
|
|
42
|
+
*/
|
|
39
43
|
export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
40
44
|
const {
|
|
41
|
-
|
|
45
|
+
additionalStyles = {},
|
|
42
46
|
children,
|
|
43
47
|
className,
|
|
44
|
-
id,
|
|
45
|
-
|
|
46
|
-
type,
|
|
47
|
-
title,
|
|
48
|
+
id = generateUUID(),
|
|
49
|
+
inline = false,
|
|
48
50
|
listItems,
|
|
51
|
+
noStyling = false,
|
|
52
|
+
title,
|
|
53
|
+
type = ListTypes.Unordered,
|
|
49
54
|
} = props;
|
|
55
|
+
const styles = useStyleConfig("List", { inline, noStyling, variant: type });
|
|
56
|
+
const finalStyles = { ...styles, ...additionalStyles };
|
|
57
|
+
let listElement = null;
|
|
50
58
|
|
|
51
59
|
// Either li/dt/dd children elements must be passed or the `listItems`
|
|
52
60
|
// prop must be used.
|
|
53
61
|
if (children && (listItems || listItems?.length > 0)) {
|
|
54
|
-
|
|
55
|
-
"Pass in either `<li>` children or use the `listItems` data prop, don't use both."
|
|
62
|
+
console.warn(
|
|
63
|
+
"Pass in either `<li>`, `<dt>`, or `<dd>` children or use the `listItems` data prop, but don't use both."
|
|
64
|
+
);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (!children && !listItems) {
|
|
68
|
+
console.warn(
|
|
69
|
+
"Either `<li>` children or the `listItems` prop must be used."
|
|
56
70
|
);
|
|
71
|
+
return null;
|
|
57
72
|
}
|
|
58
73
|
|
|
59
|
-
const baseClass = "list";
|
|
60
|
-
let listTag;
|
|
61
|
-
let invalidText = "";
|
|
62
74
|
/**
|
|
63
75
|
* This returns either the `children` elements passed to the `List` component
|
|
64
|
-
* first,
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
76
|
+
* first, otherwise it will check and render the data passed into the
|
|
77
|
+
* `listItems` props based on the `ListType` type. If it is of type "Unordered"
|
|
78
|
+
* or "Ordered", it will return `li` elements. Otherwise, it will return a
|
|
79
|
+
* combination of `dt` and `dd` elements for the "Definition" type.
|
|
68
80
|
*/
|
|
69
|
-
const listChildrenElms = (listType) => {
|
|
81
|
+
const listChildrenElms = (listType: ListTypes) => {
|
|
70
82
|
if (children) {
|
|
71
83
|
return children;
|
|
72
84
|
}
|
|
73
|
-
if (!listItems || listItems?.length === 0) {
|
|
74
|
-
throw new Error(
|
|
75
|
-
"Either `<li>` children or the `listItems` prop must be used."
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
85
|
if (listType === ListTypes.Ordered || listType === ListTypes.Unordered) {
|
|
79
86
|
return listItems.map((item, i) => <li key={i}>{item}</li>);
|
|
80
87
|
} else if (listType === ListTypes.Definition) {
|
|
@@ -86,70 +93,59 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
86
93
|
return null;
|
|
87
94
|
};
|
|
88
95
|
/**
|
|
89
|
-
* Checks for `li`
|
|
96
|
+
* Checks for `li` elements and consoles a warning if the
|
|
97
|
+
* children are different HTML elements.
|
|
90
98
|
*/
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
React.Children.map(children, function (child: React.ReactElement) {
|
|
99
|
+
const checkListChildrenError = (listType: ListTypes) => {
|
|
100
|
+
React.Children.map(children, (child: React.ReactElement) => {
|
|
94
101
|
if (child?.type !== "li" && child?.props?.mdxType !== "li") {
|
|
95
|
-
|
|
102
|
+
console.warn(
|
|
103
|
+
`Direct children of \`List\` (${listType}) should be \`<li>\`s.`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Checks for `dt` and `dd` elements and consoles a warning if the
|
|
110
|
+
* children are different HTML elements.
|
|
111
|
+
*/
|
|
112
|
+
const checkDefinitionChildrenError = () => {
|
|
113
|
+
React.Children.map(children, function (child: React.ReactElement) {
|
|
114
|
+
if (
|
|
115
|
+
child.type !== "dt" &&
|
|
116
|
+
child.type !== "dd" &&
|
|
117
|
+
child.type !== React.Fragment &&
|
|
118
|
+
child.props.mdxType !== "dt" &&
|
|
119
|
+
child.props.mdxType !== "dd" &&
|
|
120
|
+
child.props.mdxType !== React.Fragment
|
|
121
|
+
) {
|
|
122
|
+
console.warn(
|
|
123
|
+
"Direct children of `List` (definition) should be `<dt>`s and `<dd>`s."
|
|
124
|
+
);
|
|
96
125
|
}
|
|
97
126
|
});
|
|
98
127
|
};
|
|
99
128
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
{listChildrenElms(type)}
|
|
120
|
-
</ul>
|
|
121
|
-
);
|
|
122
|
-
break;
|
|
123
|
-
case ListTypes.Definition:
|
|
124
|
-
invalidText =
|
|
125
|
-
"Direct children of `List` (definition) should be `<dt>`s or `<dd>`s";
|
|
126
|
-
React.Children.map(children, function (child: React.ReactElement) {
|
|
127
|
-
if (
|
|
128
|
-
child.type !== "dt" &&
|
|
129
|
-
child.type !== "dd" &&
|
|
130
|
-
child.type !== React.Fragment &&
|
|
131
|
-
child.props.mdxType !== "dt" &&
|
|
132
|
-
child.props.mdxType !== "dd" &&
|
|
133
|
-
child.props.mdxType !== React.Fragment
|
|
134
|
-
) {
|
|
135
|
-
throw new Error(invalidText);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
listTag = (
|
|
139
|
-
<section
|
|
140
|
-
id={id}
|
|
141
|
-
className={bem("definition-list", modifiers, baseClass)}
|
|
142
|
-
>
|
|
143
|
-
{title && (
|
|
144
|
-
<Heading id={`${id}-heading`} level={HeadingLevels.Two}>
|
|
145
|
-
{title}
|
|
146
|
-
</Heading>
|
|
147
|
-
)}
|
|
148
|
-
<dl>{listChildrenElms(type)}</dl>
|
|
149
|
-
</section>
|
|
150
|
-
);
|
|
151
|
-
break;
|
|
129
|
+
if (type === ListTypes.Ordered || type === ListTypes.Unordered) {
|
|
130
|
+
checkListChildrenError(type);
|
|
131
|
+
listElement = (
|
|
132
|
+
<Box as={type as As} id={id} className={className} __css={finalStyles}>
|
|
133
|
+
{listChildrenElms(type)}
|
|
134
|
+
</Box>
|
|
135
|
+
);
|
|
136
|
+
} else if (type === ListTypes.Definition) {
|
|
137
|
+
checkDefinitionChildrenError();
|
|
138
|
+
listElement = (
|
|
139
|
+
<Box as="section" id={id} className={className} __css={finalStyles}>
|
|
140
|
+
{title && (
|
|
141
|
+
<Heading id={`${id}-heading`} level={HeadingLevels.Two}>
|
|
142
|
+
{title}
|
|
143
|
+
</Heading>
|
|
144
|
+
)}
|
|
145
|
+
<dl>{listChildrenElms(type)}</dl>
|
|
146
|
+
</Box>
|
|
147
|
+
);
|
|
152
148
|
}
|
|
153
149
|
|
|
154
|
-
return
|
|
150
|
+
return listElement;
|
|
155
151
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`List Renders the UI snapshot correctly 1`] = `
|
|
4
|
+
<ul
|
|
5
|
+
className="css-0"
|
|
6
|
+
id="unordered"
|
|
7
|
+
>
|
|
8
|
+
<li>
|
|
9
|
+
Mahi-mahi
|
|
10
|
+
</li>
|
|
11
|
+
<li>
|
|
12
|
+
Golden trout
|
|
13
|
+
</li>
|
|
14
|
+
<li>
|
|
15
|
+
Rainbowfish
|
|
16
|
+
</li>
|
|
17
|
+
<li>
|
|
18
|
+
Suckerfish
|
|
19
|
+
</li>
|
|
20
|
+
</ul>
|
|
21
|
+
`;
|
|
22
|
+
|
|
23
|
+
exports[`List Renders the UI snapshot correctly 2`] = `
|
|
24
|
+
<ul
|
|
25
|
+
className="css-0"
|
|
26
|
+
id="ordered"
|
|
27
|
+
>
|
|
28
|
+
<li>
|
|
29
|
+
Mahi-mahi
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
Golden trout
|
|
33
|
+
</li>
|
|
34
|
+
<li>
|
|
35
|
+
Rainbowfish
|
|
36
|
+
</li>
|
|
37
|
+
<li>
|
|
38
|
+
Suckerfish
|
|
39
|
+
</li>
|
|
40
|
+
</ul>
|
|
41
|
+
`;
|
|
42
|
+
|
|
43
|
+
exports[`List Renders the UI snapshot correctly 3`] = `
|
|
44
|
+
<ol
|
|
45
|
+
className="css-0"
|
|
46
|
+
id="unordered-no-styling"
|
|
47
|
+
>
|
|
48
|
+
<li>
|
|
49
|
+
Mahi-mahi
|
|
50
|
+
</li>
|
|
51
|
+
<li>
|
|
52
|
+
Golden trout
|
|
53
|
+
</li>
|
|
54
|
+
<li>
|
|
55
|
+
Rainbowfish
|
|
56
|
+
</li>
|
|
57
|
+
<li>
|
|
58
|
+
Suckerfish
|
|
59
|
+
</li>
|
|
60
|
+
</ol>
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
exports[`List Renders the UI snapshot correctly 4`] = `
|
|
64
|
+
<ol
|
|
65
|
+
className="css-0"
|
|
66
|
+
id="ordered-no-styling"
|
|
67
|
+
>
|
|
68
|
+
<li>
|
|
69
|
+
Mahi-mahi
|
|
70
|
+
</li>
|
|
71
|
+
<li>
|
|
72
|
+
Golden trout
|
|
73
|
+
</li>
|
|
74
|
+
<li>
|
|
75
|
+
Rainbowfish
|
|
76
|
+
</li>
|
|
77
|
+
<li>
|
|
78
|
+
Suckerfish
|
|
79
|
+
</li>
|
|
80
|
+
</ol>
|
|
81
|
+
`;
|
|
82
|
+
|
|
83
|
+
exports[`List Renders the UI snapshot correctly 5`] = `
|
|
84
|
+
<section
|
|
85
|
+
className="css-0"
|
|
86
|
+
id="definition"
|
|
87
|
+
>
|
|
88
|
+
<h2
|
|
89
|
+
className="chakra-heading css-0"
|
|
90
|
+
id="definition-heading"
|
|
91
|
+
>
|
|
92
|
+
Animal Crossing Fish
|
|
93
|
+
</h2>
|
|
94
|
+
<dl>
|
|
95
|
+
<dt>
|
|
96
|
+
Mahi-mahi
|
|
97
|
+
</dt>
|
|
98
|
+
<dd>
|
|
99
|
+
The mahi-mahi is an ocean fish known...
|
|
100
|
+
</dd>
|
|
101
|
+
<dt>
|
|
102
|
+
Golden trout
|
|
103
|
+
</dt>
|
|
104
|
+
<dd>
|
|
105
|
+
The golden trout is a beautifully colored fish...
|
|
106
|
+
</dd>
|
|
107
|
+
</dl>
|
|
108
|
+
</section>
|
|
109
|
+
`;
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
Meta,
|
|
4
4
|
Story,
|
|
5
5
|
ArgsTable,
|
|
6
|
-
|
|
6
|
+
Canvas,
|
|
7
7
|
Description,
|
|
8
8
|
} from "@storybook/addon-docs/blocks";
|
|
9
9
|
import Modal from "./Modal";
|
|
@@ -118,11 +118,11 @@ export const ModalStory = (args) => {
|
|
|
118
118
|
);
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
-
<
|
|
121
|
+
<Canvas withToolbar>
|
|
122
122
|
<Story name="Basic" args={{ open: false }}>
|
|
123
123
|
{(args) => <ModalStory {...args} />}
|
|
124
124
|
</Story>
|
|
125
|
-
</
|
|
125
|
+
</Canvas>
|
|
126
126
|
|
|
127
127
|
<ArgsTable story="Basic" />
|
|
128
128
|
|