@nypl/design-system-react-components 0.25.12 → 0.26.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 +131 -1
- package/README.md +10 -10
- package/dist/components/Accordion/Accordion.d.ts +6 -4
- package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +22 -29
- package/dist/components/Checkbox/Checkbox.d.ts +3 -3
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -6
- package/dist/components/Fieldset/Fieldset.d.ts +5 -6
- package/dist/components/Form/Form.d.ts +6 -6
- package/dist/components/Grid/GridTypes.d.ts +7 -7
- package/dist/components/Grid/SimpleGrid.d.ts +1 -1
- package/dist/components/Heading/Heading.d.ts +5 -5
- package/dist/components/Heading/HeadingTypes.d.ts +1 -1
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
- package/dist/components/Hero/Hero.d.ts +9 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
- package/dist/components/Icons/Icon.d.ts +2 -1
- package/dist/components/Icons/IconTypes.d.ts +1 -0
- package/dist/components/Image/Image.d.ts +27 -9
- package/dist/components/Image/ImageTypes.d.ts +4 -4
- package/dist/components/Label/Label.d.ts +7 -4
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +11 -11
- package/dist/components/List/ListTypes.d.ts +1 -1
- package/dist/components/Logo/Logo.d.ts +2 -1
- package/dist/components/Logo/LogoSvgs.d.ts +2 -0
- package/dist/components/Logo/LogoTypes.d.ts +4 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
- package/dist/components/Radio/Radio.d.ts +5 -7
- package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
- package/dist/components/SearchBar/SearchBar.d.ts +4 -4
- package/dist/components/Select/Select.d.ts +12 -8
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
- package/dist/components/Slider/Slider.d.ts +6 -4
- package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -6
- package/dist/components/Template/Template.d.ts +17 -8
- package/dist/components/Text/Text.d.ts +4 -4
- package/dist/components/Text/TextTypes.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +7 -7
- package/dist/components/Toggle/Toggle.d.ts +8 -10
- package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +2075 -1468
- 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 +2086 -1483
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/helpers/enums.d.ts +4 -0
- package/dist/hooks/useCarouselStyles.d.ts +3 -2
- package/dist/hooks/useNYPLTheme.d.ts +12 -0
- package/dist/index.d.ts +11 -9
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +7 -12
- package/dist/theme/components/breadcrumb.d.ts +3 -0
- package/dist/theme/components/button.d.ts +10 -2
- package/dist/theme/components/card.d.ts +44 -24
- package/dist/theme/components/checkbox.d.ts +6 -4
- package/dist/theme/components/checkboxGroup.d.ts +4 -2
- package/dist/theme/components/componentWrapper.d.ts +2 -2
- package/dist/theme/components/customTable.d.ts +84 -1
- package/dist/theme/components/fieldset.d.ts +4 -14
- package/dist/theme/components/global.d.ts +25 -18
- package/dist/theme/components/heading.d.ts +53 -0
- package/dist/theme/components/helperErrorText.d.ts +1 -0
- package/dist/theme/components/hero.d.ts +21 -15
- package/dist/theme/components/image.d.ts +1 -1
- package/dist/theme/components/label.d.ts +9 -10
- package/dist/theme/components/list.d.ts +99 -9
- package/dist/theme/components/notification.d.ts +4 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +7 -4
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +37 -5
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +6 -3
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +18 -6
- package/dist/theme/components/toggle.d.ts +20 -5
- package/dist/theme/foundations/global.d.ts +2 -0
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/package.json +5 -6
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
- package/src/components/Accordion/Accordion.stories.mdx +150 -66
- package/src/components/Accordion/Accordion.test.tsx +65 -17
- package/src/components/Accordion/Accordion.tsx +61 -27
- package/src/components/Accordion/AccordionTypes.tsx +5 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +37 -19
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +57 -36
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
- package/src/components/Button/Button.stories.mdx +87 -23
- package/src/components/Button/Button.test.tsx +25 -0
- package/src/components/Button/Button.tsx +18 -7
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
- package/src/components/Card/Card.stories.mdx +493 -329
- package/src/components/Card/Card.test.tsx +138 -18
- package/src/components/Card/Card.tsx +151 -85
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +221 -101
- package/src/components/Chakra/Center.stories.mdx +2 -2
- package/src/components/Chakra/Grid.stories.mdx +4 -4
- package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
- package/src/components/Checkbox/Checkbox.test.tsx +89 -10
- package/src/components/Checkbox/Checkbox.tsx +26 -16
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
- package/src/components/DatePicker/DatePicker.test.tsx +94 -15
- package/src/components/DatePicker/DatePicker.tsx +67 -58
- package/src/components/DatePicker/_DatePicker.scss +71 -13
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
- package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
- package/src/components/Fieldset/Fieldset.test.tsx +58 -28
- package/src/components/Fieldset/Fieldset.tsx +35 -30
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
- package/src/components/Form/Form.stories.mdx +118 -47
- package/src/components/Form/Form.test.tsx +59 -16
- package/src/components/Form/Form.tsx +89 -65
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
- package/src/components/Grid/GridTypes.tsx +7 -7
- package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
- package/src/components/Grid/SimpleGrid.test.tsx +24 -9
- package/src/components/Grid/SimpleGrid.tsx +29 -20
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
- package/src/components/Heading/Heading.stories.mdx +56 -25
- package/src/components/Heading/Heading.test.tsx +17 -7
- package/src/components/Heading/Heading.tsx +60 -58
- package/src/components/Heading/HeadingTypes.tsx +1 -1
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
- package/src/components/Hero/Hero.stories.mdx +143 -113
- package/src/components/Hero/Hero.test.tsx +146 -58
- package/src/components/Hero/Hero.tsx +144 -112
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
- package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
- package/src/components/Icons/Icon.stories.mdx +80 -23
- package/src/components/Icons/Icon.test.tsx +51 -2
- package/src/components/Icons/Icon.tsx +93 -71
- package/src/components/Icons/IconTypes.tsx +1 -0
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +160 -71
- package/src/components/Image/Image.test.tsx +40 -48
- package/src/components/Image/Image.tsx +80 -48
- package/src/components/Image/ImageTypes.ts +4 -4
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
- package/src/components/Label/Label.stories.mdx +42 -20
- package/src/components/Label/Label.test.tsx +42 -17
- package/src/components/Label/Label.tsx +22 -13
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
- package/src/components/Link/Link.stories.mdx +25 -1
- package/src/components/Link/Link.test.tsx +21 -0
- package/src/components/Link/Link.tsx +16 -9
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
- package/src/components/List/List.stories.mdx +75 -40
- package/src/components/List/List.test.tsx +73 -22
- package/src/components/List/List.tsx +44 -28
- package/src/components/List/ListTypes.tsx +1 -1
- package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
- package/src/components/Logo/Logo.stories.mdx +40 -16
- package/src/components/Logo/Logo.test.tsx +29 -2
- package/src/components/Logo/Logo.tsx +28 -11
- package/src/components/Logo/LogoSvgs.tsx +4 -0
- package/src/components/Logo/LogoTypes.tsx +3 -1
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
- package/src/components/Modal/Modal.stories.mdx +13 -0
- package/src/components/Notification/Notification.stories.mdx +29 -5
- package/src/components/Notification/Notification.test.tsx +23 -0
- package/src/components/Notification/Notification.tsx +53 -51
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
- package/src/components/Pagination/Pagination.stories.mdx +27 -6
- package/src/components/Pagination/Pagination.test.tsx +55 -2
- package/src/components/Pagination/Pagination.tsx +12 -9
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
- package/src/components/Placeholder/Placeholder.tsx +3 -1
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
- package/src/components/Radio/Radio.stories.mdx +75 -11
- package/src/components/Radio/Radio.test.tsx +83 -9
- package/src/components/Radio/Radio.tsx +70 -62
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +163 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
- package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
- package/src/components/RadioGroup/RadioGroup.tsx +110 -101
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
- package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
- package/src/components/SearchBar/SearchBar.tsx +20 -11
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
- package/src/components/Select/Select.stories.mdx +151 -62
- package/src/components/Select/Select.test.tsx +56 -44
- package/src/components/Select/Select.tsx +125 -104
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
- package/src/components/Slider/Slider.stories.mdx +123 -41
- package/src/components/Slider/Slider.test.tsx +65 -17
- package/src/components/Slider/Slider.tsx +30 -23
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
- package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
- package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
- package/src/components/StatusBadge/StatusBadge.tsx +25 -20
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
- package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
- package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
- package/src/components/StructuredContent/StructuredContent.tsx +98 -103
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
- package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
- package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
- package/src/components/StyleGuide/ColorCard.tsx +4 -4
- package/src/components/StyleGuide/Colors.stories.mdx +1 -2
- package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
- package/src/components/StyleGuide/Forms.stories.mdx +27 -12
- package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
- package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
- package/src/components/StyleGuide/Typography.stories.mdx +47 -33
- package/src/components/Table/Table.stories.mdx +38 -11
- package/src/components/Table/Table.test.tsx +16 -1
- package/src/components/Table/Table.tsx +10 -8
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
- package/src/components/Tabs/Tabs.stories.mdx +59 -10
- package/src/components/Tabs/Tabs.test.tsx +29 -11
- package/src/components/Tabs/Tabs.tsx +28 -21
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
- package/src/components/Template/Template.stories.mdx +73 -32
- package/src/components/Template/Template.test.tsx +68 -5
- package/src/components/Template/Template.tsx +89 -71
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
- package/src/components/Text/Text.stories.mdx +32 -15
- package/src/components/Text/Text.test.tsx +14 -11
- package/src/components/Text/Text.tsx +13 -16
- package/src/components/Text/TextTypes.tsx +1 -1
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
- package/src/components/TextInput/TextInput.stories.mdx +73 -27
- package/src/components/TextInput/TextInput.test.tsx +65 -50
- package/src/components/TextInput/TextInput.tsx +123 -115
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
- package/src/components/Toggle/Toggle.stories.mdx +74 -26
- package/src/components/Toggle/Toggle.test.tsx +41 -10
- package/src/components/Toggle/Toggle.tsx +29 -26
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +191 -4
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
- package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
- package/src/docs/Chakra.stories.mdx +50 -9
- package/src/docs/Welcome.stories.mdx +168 -0
- package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
- package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +3 -2
- package/src/hooks/useNYPLTheme.stories.mdx +101 -0
- package/src/hooks/useNYPLTheme.ts +31 -7
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/index.ts +11 -15
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +3 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +10 -8
- package/src/theme/components/checkboxGroup.ts +4 -2
- package/src/theme/components/componentWrapper.ts +2 -2
- package/src/theme/components/customTable.ts +39 -31
- package/src/theme/components/fieldset.ts +1 -2
- package/src/theme/components/global.ts +29 -23
- package/src/theme/components/heading.ts +1 -1
- package/src/theme/components/helperErrorText.ts +1 -0
- package/src/theme/components/hero.ts +14 -16
- package/src/theme/components/icon.ts +5 -2
- package/src/theme/components/image.ts +1 -1
- package/src/theme/components/label.ts +4 -3
- package/src/theme/components/list.ts +73 -66
- package/src/theme/components/notification.ts +7 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +9 -9
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +35 -16
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +8 -7
- package/src/theme/components/statusBadge.ts +2 -2
- package/src/theme/components/structuredContent.ts +66 -1
- package/src/theme/components/tabs.ts +2 -2
- package/src/theme/components/template.ts +9 -9
- package/src/theme/components/textInput.ts +13 -12
- package/src/theme/components/toggle.ts +43 -13
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +1 -1
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +2 -2
- package/src/utils/componentCategories.ts +28 -21
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
- package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
- package/dist/helpers/generateUUID.d.ts +0 -1
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
|
@@ -7,14 +7,14 @@ import List from "./List";
|
|
|
7
7
|
import { ListTypes } from "./ListTypes";
|
|
8
8
|
|
|
9
9
|
const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
|
|
10
|
-
const
|
|
10
|
+
const fishDescriptions = [
|
|
11
11
|
{
|
|
12
12
|
term: "Mahi-mahi",
|
|
13
|
-
|
|
13
|
+
description: <p>The mahi-mahi is an ocean fish known...</p>,
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
term: "Golden trout",
|
|
17
|
-
|
|
17
|
+
description: "The golden trout is a beautifully colored fish...",
|
|
18
18
|
},
|
|
19
19
|
];
|
|
20
20
|
|
|
@@ -43,12 +43,12 @@ describe("List Accessibility", () => {
|
|
|
43
43
|
rerender(<List type={ListTypes.Ordered} listItems={fishArray} />);
|
|
44
44
|
expect(await axe(container)).toHaveNoViolations();
|
|
45
45
|
});
|
|
46
|
-
it("passes axe accessibility test for
|
|
46
|
+
it("passes axe accessibility test for description list", async () => {
|
|
47
47
|
const { container } = render(
|
|
48
48
|
<List
|
|
49
|
-
type={ListTypes.
|
|
49
|
+
type={ListTypes.Description}
|
|
50
50
|
title="Animal Crossing Fish"
|
|
51
|
-
listItems={
|
|
51
|
+
listItems={fishDescriptions}
|
|
52
52
|
/>
|
|
53
53
|
);
|
|
54
54
|
expect(await axe(container)).toHaveNoViolations();
|
|
@@ -102,9 +102,9 @@ describe("List", () => {
|
|
|
102
102
|
expect(screen.getByText("Suckerfish")).toBeInTheDocument();
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
it("returns
|
|
105
|
+
it("returns description list", () => {
|
|
106
106
|
render(
|
|
107
|
-
<List type={ListTypes.
|
|
107
|
+
<List type={ListTypes.Description}>
|
|
108
108
|
<dt>Mahi-mahi</dt>
|
|
109
109
|
<dd>The mahi-mahi is an ocean fish known...</dd>
|
|
110
110
|
</List>
|
|
@@ -116,12 +116,12 @@ describe("List", () => {
|
|
|
116
116
|
).toBeInTheDocument();
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
-
it("returns
|
|
119
|
+
it("returns description list with the `listItems` prop", () => {
|
|
120
120
|
render(
|
|
121
121
|
<List
|
|
122
|
-
type={ListTypes.
|
|
122
|
+
type={ListTypes.Description}
|
|
123
123
|
title="Animal Crossing Fish"
|
|
124
|
-
listItems={
|
|
124
|
+
listItems={fishDescriptions}
|
|
125
125
|
/>
|
|
126
126
|
);
|
|
127
127
|
expect(screen.getAllByRole("definition")).toHaveLength(2);
|
|
@@ -138,7 +138,8 @@ describe("List", () => {
|
|
|
138
138
|
</List>
|
|
139
139
|
);
|
|
140
140
|
expect(warn).toHaveBeenCalledWith(
|
|
141
|
-
"Pass in either `<li>`, `<dt>`, or `<dd>` children
|
|
141
|
+
"NYPL Reservoir List: Pass in either `<li>`, `<dt>`, or `<dd>` children " +
|
|
142
|
+
"or use the `listItems` data prop. Do not use both."
|
|
142
143
|
);
|
|
143
144
|
});
|
|
144
145
|
|
|
@@ -146,7 +147,8 @@ describe("List", () => {
|
|
|
146
147
|
const warn = jest.spyOn(console, "warn");
|
|
147
148
|
render(<List type={ListTypes.Ordered}></List>);
|
|
148
149
|
expect(warn).toHaveBeenCalledWith(
|
|
149
|
-
"
|
|
150
|
+
"NYPL Reservoir List: Pass in either `<li>` children or pass data in " +
|
|
151
|
+
"the `listItems` prop, not both."
|
|
150
152
|
);
|
|
151
153
|
});
|
|
152
154
|
|
|
@@ -160,21 +162,22 @@ describe("List", () => {
|
|
|
160
162
|
</List>
|
|
161
163
|
);
|
|
162
164
|
expect(warn).toHaveBeenCalledWith(
|
|
163
|
-
"Direct children of `List` (ol)
|
|
165
|
+
"NYPL Reservoir List: Direct children of `List` (ol) must be `<li>`s."
|
|
164
166
|
);
|
|
165
167
|
});
|
|
166
168
|
|
|
167
|
-
it("consoles a warning when you pass a
|
|
169
|
+
it("consoles a warning when you pass a description list children that aren't `<dt>`s or `<dd>`s", () => {
|
|
168
170
|
const warn = jest.spyOn(console, "warn");
|
|
169
171
|
render(
|
|
170
|
-
<List type={ListTypes.
|
|
172
|
+
<List type={ListTypes.Description}>
|
|
171
173
|
<span>Mahi-mahi</span>
|
|
172
174
|
<span>Golden trout</span>
|
|
173
175
|
<span>Rainbowfish</span>
|
|
174
176
|
</List>
|
|
175
177
|
);
|
|
176
178
|
expect(warn).toHaveBeenCalledWith(
|
|
177
|
-
"Direct children of `List` (
|
|
179
|
+
"NYPL Reservoir List: Direct children of `List` (description) must be " +
|
|
180
|
+
"`<dt>`s and `<dd>`s."
|
|
178
181
|
);
|
|
179
182
|
});
|
|
180
183
|
|
|
@@ -213,13 +216,57 @@ describe("List", () => {
|
|
|
213
216
|
/>
|
|
214
217
|
)
|
|
215
218
|
.toJSON();
|
|
216
|
-
const
|
|
219
|
+
const description = renderer
|
|
217
220
|
.create(
|
|
218
221
|
<List
|
|
219
|
-
id="
|
|
220
|
-
type={ListTypes.
|
|
222
|
+
id="description"
|
|
223
|
+
type={ListTypes.Description}
|
|
221
224
|
title="Animal Crossing Fish"
|
|
222
|
-
listItems={
|
|
225
|
+
listItems={fishDescriptions}
|
|
226
|
+
/>
|
|
227
|
+
)
|
|
228
|
+
.toJSON();
|
|
229
|
+
const withChakraPropsUnordered = renderer
|
|
230
|
+
.create(
|
|
231
|
+
<List
|
|
232
|
+
id="chakra"
|
|
233
|
+
type={ListTypes.Unordered}
|
|
234
|
+
listItems={fishArray}
|
|
235
|
+
p="20px"
|
|
236
|
+
color="ui.error.primary"
|
|
237
|
+
/>
|
|
238
|
+
)
|
|
239
|
+
.toJSON();
|
|
240
|
+
const withOtherPropsUnordered = renderer
|
|
241
|
+
.create(
|
|
242
|
+
<List
|
|
243
|
+
id="other"
|
|
244
|
+
type={ListTypes.Unordered}
|
|
245
|
+
listItems={fishArray}
|
|
246
|
+
data-testid="other"
|
|
247
|
+
/>
|
|
248
|
+
)
|
|
249
|
+
.toJSON();
|
|
250
|
+
const withChakraPropsDescription = renderer
|
|
251
|
+
.create(
|
|
252
|
+
<List
|
|
253
|
+
id="chakra"
|
|
254
|
+
type={ListTypes.Description}
|
|
255
|
+
title="Animal Crossing Fish"
|
|
256
|
+
listItems={fishDescriptions}
|
|
257
|
+
p="20px"
|
|
258
|
+
color="ui.error.primary"
|
|
259
|
+
/>
|
|
260
|
+
)
|
|
261
|
+
.toJSON();
|
|
262
|
+
const withOtherPropsDescription = renderer
|
|
263
|
+
.create(
|
|
264
|
+
<List
|
|
265
|
+
id="other"
|
|
266
|
+
type={ListTypes.Description}
|
|
267
|
+
title="Animal Crossing Fish"
|
|
268
|
+
listItems={fishDescriptions}
|
|
269
|
+
data-testid="other"
|
|
223
270
|
/>
|
|
224
271
|
)
|
|
225
272
|
.toJSON();
|
|
@@ -228,6 +275,10 @@ describe("List", () => {
|
|
|
228
275
|
expect(unorderedNoStyling).toMatchSnapshot();
|
|
229
276
|
expect(ordered).toMatchSnapshot();
|
|
230
277
|
expect(orderedNoStyling).toMatchSnapshot();
|
|
231
|
-
expect(
|
|
278
|
+
expect(description).toMatchSnapshot();
|
|
279
|
+
expect(withChakraPropsUnordered).toMatchSnapshot();
|
|
280
|
+
expect(withOtherPropsUnordered).toMatchSnapshot();
|
|
281
|
+
expect(withChakraPropsDescription).toMatchSnapshot();
|
|
282
|
+
expect(withOtherPropsDescription).toMatchSnapshot();
|
|
232
283
|
});
|
|
233
284
|
});
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
+
import { As, Box, chakra, useStyleConfig } from "@chakra-ui/react";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
import { As, Box, useStyleConfig } from "@chakra-ui/react";
|
|
3
3
|
|
|
4
4
|
import { ListTypes } from "./ListTypes";
|
|
5
5
|
import Heading from "../Heading/Heading";
|
|
6
6
|
import { HeadingLevels } from "../Heading/HeadingTypes";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
interface DefinitionProps {
|
|
7
|
+
interface DescriptionProps {
|
|
10
8
|
term: string;
|
|
11
|
-
|
|
9
|
+
description: string | JSX.Element;
|
|
12
10
|
}
|
|
13
11
|
export interface ListProps {
|
|
14
12
|
/** Optionally pass in additional Chakra-based styles. */
|
|
@@ -21,36 +19,37 @@ export interface ListProps {
|
|
|
21
19
|
inline?: boolean;
|
|
22
20
|
/** Data to render if children are not passed. For `ListTypes.Ordered` and
|
|
23
21
|
* `ListTypes.Unordered` `List` types, the data structure is an array of
|
|
24
|
-
* strings to renders as `li` items. For `ListTypes.
|
|
25
|
-
* the data structure is an array of objects with `term` and `
|
|
22
|
+
* strings to renders as `li` items. For `ListTypes.Description` `List` types,
|
|
23
|
+
* the data structure is an array of objects with `term` and `description`
|
|
26
24
|
* properties to render `dt` and `dd` elements, respectively.
|
|
27
25
|
*/
|
|
28
|
-
listItems?: (string | JSX.Element |
|
|
26
|
+
listItems?: (string | JSX.Element | DescriptionProps)[];
|
|
29
27
|
/** Remove list styling. */
|
|
30
28
|
noStyling?: boolean;
|
|
31
29
|
/** An optional title that will appear over the list. This prop only applies
|
|
32
|
-
* to
|
|
30
|
+
* to Description Lists. */
|
|
33
31
|
title?: string;
|
|
34
|
-
/** The type of list: Ordered, Unordered, or
|
|
32
|
+
/** The type of list: Ordered, Unordered, or Description. Unordered by default. */
|
|
35
33
|
type: ListTypes;
|
|
36
34
|
}
|
|
37
35
|
|
|
38
36
|
/**
|
|
39
|
-
* A component that renders list item `li` elements or
|
|
37
|
+
* A component that renders list item `li` elements or description item `dt`
|
|
40
38
|
* and `dd` elements based on the `type` prop. Note that the `title` prop will
|
|
41
|
-
* only display for the `
|
|
39
|
+
* only display for the `Description` list type.
|
|
42
40
|
*/
|
|
43
|
-
export
|
|
41
|
+
export const List = chakra((props: React.PropsWithChildren<ListProps>) => {
|
|
44
42
|
const {
|
|
45
43
|
additionalStyles = {},
|
|
46
44
|
children,
|
|
47
45
|
className,
|
|
48
|
-
id
|
|
46
|
+
id,
|
|
49
47
|
inline = false,
|
|
50
48
|
listItems,
|
|
51
49
|
noStyling = false,
|
|
52
50
|
title,
|
|
53
51
|
type = ListTypes.Unordered,
|
|
52
|
+
...rest
|
|
54
53
|
} = props;
|
|
55
54
|
const styles = useStyleConfig("List", { inline, noStyling, variant: type });
|
|
56
55
|
const finalStyles = { ...styles, ...additionalStyles };
|
|
@@ -60,13 +59,15 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
60
59
|
// prop must be used.
|
|
61
60
|
if (children && (listItems || listItems?.length > 0)) {
|
|
62
61
|
console.warn(
|
|
63
|
-
"Pass in either `<li>`, `<dt>`, or `<dd>`
|
|
62
|
+
"NYPL Reservoir List: Pass in either `<li>`, `<dt>`, or `<dd>` " +
|
|
63
|
+
"children or use the `listItems` data prop. Do not use both."
|
|
64
64
|
);
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
67
67
|
if (!children && !listItems) {
|
|
68
68
|
console.warn(
|
|
69
|
-
"
|
|
69
|
+
"NYPL Reservoir List: Pass in either `<li>` children or pass data in " +
|
|
70
|
+
"the `listItems` prop, not both."
|
|
70
71
|
);
|
|
71
72
|
return null;
|
|
72
73
|
}
|
|
@@ -76,7 +77,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
76
77
|
* first, otherwise it will check and render the data passed into the
|
|
77
78
|
* `listItems` props based on the `ListType` type. If it is of type "Unordered"
|
|
78
79
|
* or "Ordered", it will return `li` elements. Otherwise, it will return a
|
|
79
|
-
* combination of `dt` and `dd` elements for the "
|
|
80
|
+
* combination of `dt` and `dd` elements for the "Description" type.
|
|
80
81
|
*/
|
|
81
82
|
const listChildrenElms = (listType: ListTypes) => {
|
|
82
83
|
if (children) {
|
|
@@ -84,10 +85,10 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
84
85
|
}
|
|
85
86
|
if (listType === ListTypes.Ordered || listType === ListTypes.Unordered) {
|
|
86
87
|
return listItems.map((item, i) => <li key={i}>{item}</li>);
|
|
87
|
-
} else if (listType === ListTypes.
|
|
88
|
-
return (listItems as
|
|
88
|
+
} else if (listType === ListTypes.Description) {
|
|
89
|
+
return (listItems as DescriptionProps[]).map((item, i) => [
|
|
89
90
|
<dt key={`${i}-term`}>{item.term}</dt>,
|
|
90
|
-
<dd key={`${i}-
|
|
91
|
+
<dd key={`${i}-des`}>{item.description}</dd>,
|
|
91
92
|
]);
|
|
92
93
|
}
|
|
93
94
|
return null;
|
|
@@ -100,7 +101,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
100
101
|
React.Children.map(children, (child: React.ReactElement) => {
|
|
101
102
|
if (child && child?.type !== "li" && child?.props?.mdxType !== "li") {
|
|
102
103
|
console.warn(
|
|
103
|
-
`Direct children of \`List\` (${listType})
|
|
104
|
+
`NYPL Reservoir List: Direct children of \`List\` (${listType}) must be \`<li>\`s.`
|
|
104
105
|
);
|
|
105
106
|
}
|
|
106
107
|
});
|
|
@@ -109,7 +110,7 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
109
110
|
* Checks for `dt` and `dd` elements and consoles a warning if the
|
|
110
111
|
* children are different HTML elements.
|
|
111
112
|
*/
|
|
112
|
-
const
|
|
113
|
+
const checkDescriptionChildrenError = () => {
|
|
113
114
|
React.Children.map(children, function (child: React.ReactElement) {
|
|
114
115
|
if (
|
|
115
116
|
child.type !== "dt" &&
|
|
@@ -120,7 +121,8 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
120
121
|
child.props.mdxType !== React.Fragment
|
|
121
122
|
) {
|
|
122
123
|
console.warn(
|
|
123
|
-
"Direct children of `List` (
|
|
124
|
+
"NYPL Reservoir List: Direct children of `List` (description) must " +
|
|
125
|
+
"be `<dt>`s and `<dd>`s."
|
|
124
126
|
);
|
|
125
127
|
}
|
|
126
128
|
});
|
|
@@ -129,14 +131,26 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
129
131
|
if (type === ListTypes.Ordered || type === ListTypes.Unordered) {
|
|
130
132
|
checkListChildrenError(type);
|
|
131
133
|
listElement = (
|
|
132
|
-
<Box
|
|
134
|
+
<Box
|
|
135
|
+
as={type as As}
|
|
136
|
+
id={id}
|
|
137
|
+
className={className}
|
|
138
|
+
__css={finalStyles}
|
|
139
|
+
{...rest}
|
|
140
|
+
>
|
|
133
141
|
{listChildrenElms(type)}
|
|
134
142
|
</Box>
|
|
135
143
|
);
|
|
136
|
-
} else if (type === ListTypes.
|
|
137
|
-
|
|
144
|
+
} else if (type === ListTypes.Description) {
|
|
145
|
+
checkDescriptionChildrenError();
|
|
138
146
|
listElement = (
|
|
139
|
-
<Box
|
|
147
|
+
<Box
|
|
148
|
+
as="section"
|
|
149
|
+
id={id}
|
|
150
|
+
className={className}
|
|
151
|
+
__css={finalStyles}
|
|
152
|
+
{...rest}
|
|
153
|
+
>
|
|
140
154
|
{title && (
|
|
141
155
|
<Heading id={`${id}-heading`} level={HeadingLevels.Two}>
|
|
142
156
|
{title}
|
|
@@ -148,4 +162,6 @@ export default function List(props: React.PropsWithChildren<ListProps>) {
|
|
|
148
162
|
}
|
|
149
163
|
|
|
150
164
|
return listElement;
|
|
151
|
-
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
export default List;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`List Renders the UI snapshot correctly 1`] = `
|
|
4
4
|
<ul
|
|
5
|
-
className="css-
|
|
5
|
+
className="css-1xdhyk6"
|
|
6
6
|
id="unordered"
|
|
7
7
|
>
|
|
8
8
|
<li>
|
|
@@ -22,7 +22,7 @@ exports[`List Renders the UI snapshot correctly 1`] = `
|
|
|
22
22
|
|
|
23
23
|
exports[`List Renders the UI snapshot correctly 2`] = `
|
|
24
24
|
<ul
|
|
25
|
-
className="css-
|
|
25
|
+
className="css-1xdhyk6"
|
|
26
26
|
id="ordered"
|
|
27
27
|
>
|
|
28
28
|
<li>
|
|
@@ -42,7 +42,7 @@ exports[`List Renders the UI snapshot correctly 2`] = `
|
|
|
42
42
|
|
|
43
43
|
exports[`List Renders the UI snapshot correctly 3`] = `
|
|
44
44
|
<ol
|
|
45
|
-
className="css-
|
|
45
|
+
className="css-1xdhyk6"
|
|
46
46
|
id="unordered-no-styling"
|
|
47
47
|
>
|
|
48
48
|
<li>
|
|
@@ -62,7 +62,7 @@ exports[`List Renders the UI snapshot correctly 3`] = `
|
|
|
62
62
|
|
|
63
63
|
exports[`List Renders the UI snapshot correctly 4`] = `
|
|
64
64
|
<ol
|
|
65
|
-
className="css-
|
|
65
|
+
className="css-1xdhyk6"
|
|
66
66
|
id="ordered-no-styling"
|
|
67
67
|
>
|
|
68
68
|
<li>
|
|
@@ -82,12 +82,114 @@ exports[`List Renders the UI snapshot correctly 4`] = `
|
|
|
82
82
|
|
|
83
83
|
exports[`List Renders the UI snapshot correctly 5`] = `
|
|
84
84
|
<section
|
|
85
|
-
className="css-
|
|
86
|
-
id="
|
|
85
|
+
className="css-1xdhyk6"
|
|
86
|
+
id="description"
|
|
87
87
|
>
|
|
88
88
|
<h2
|
|
89
|
-
className="chakra-heading css-
|
|
90
|
-
id="
|
|
89
|
+
className="chakra-heading css-1xdhyk6"
|
|
90
|
+
id="description-heading"
|
|
91
|
+
>
|
|
92
|
+
Animal Crossing Fish
|
|
93
|
+
</h2>
|
|
94
|
+
<dl>
|
|
95
|
+
<dt>
|
|
96
|
+
Mahi-mahi
|
|
97
|
+
</dt>
|
|
98
|
+
<dd>
|
|
99
|
+
<p>
|
|
100
|
+
The mahi-mahi is an ocean fish known...
|
|
101
|
+
</p>
|
|
102
|
+
</dd>
|
|
103
|
+
<dt>
|
|
104
|
+
Golden trout
|
|
105
|
+
</dt>
|
|
106
|
+
<dd>
|
|
107
|
+
The golden trout is a beautifully colored fish...
|
|
108
|
+
</dd>
|
|
109
|
+
</dl>
|
|
110
|
+
</section>
|
|
111
|
+
`;
|
|
112
|
+
|
|
113
|
+
exports[`List Renders the UI snapshot correctly 6`] = `
|
|
114
|
+
<ul
|
|
115
|
+
className="css-kle7zy"
|
|
116
|
+
id="chakra"
|
|
117
|
+
>
|
|
118
|
+
<li>
|
|
119
|
+
Mahi-mahi
|
|
120
|
+
</li>
|
|
121
|
+
<li>
|
|
122
|
+
Golden trout
|
|
123
|
+
</li>
|
|
124
|
+
<li>
|
|
125
|
+
Rainbowfish
|
|
126
|
+
</li>
|
|
127
|
+
<li>
|
|
128
|
+
Suckerfish
|
|
129
|
+
</li>
|
|
130
|
+
</ul>
|
|
131
|
+
`;
|
|
132
|
+
|
|
133
|
+
exports[`List Renders the UI snapshot correctly 7`] = `
|
|
134
|
+
<ul
|
|
135
|
+
className="css-1xdhyk6"
|
|
136
|
+
data-testid="other"
|
|
137
|
+
id="other"
|
|
138
|
+
>
|
|
139
|
+
<li>
|
|
140
|
+
Mahi-mahi
|
|
141
|
+
</li>
|
|
142
|
+
<li>
|
|
143
|
+
Golden trout
|
|
144
|
+
</li>
|
|
145
|
+
<li>
|
|
146
|
+
Rainbowfish
|
|
147
|
+
</li>
|
|
148
|
+
<li>
|
|
149
|
+
Suckerfish
|
|
150
|
+
</li>
|
|
151
|
+
</ul>
|
|
152
|
+
`;
|
|
153
|
+
|
|
154
|
+
exports[`List Renders the UI snapshot correctly 8`] = `
|
|
155
|
+
<section
|
|
156
|
+
className="css-kle7zy"
|
|
157
|
+
id="chakra"
|
|
158
|
+
>
|
|
159
|
+
<h2
|
|
160
|
+
className="chakra-heading css-1xdhyk6"
|
|
161
|
+
id="chakra-heading"
|
|
162
|
+
>
|
|
163
|
+
Animal Crossing Fish
|
|
164
|
+
</h2>
|
|
165
|
+
<dl>
|
|
166
|
+
<dt>
|
|
167
|
+
Mahi-mahi
|
|
168
|
+
</dt>
|
|
169
|
+
<dd>
|
|
170
|
+
<p>
|
|
171
|
+
The mahi-mahi is an ocean fish known...
|
|
172
|
+
</p>
|
|
173
|
+
</dd>
|
|
174
|
+
<dt>
|
|
175
|
+
Golden trout
|
|
176
|
+
</dt>
|
|
177
|
+
<dd>
|
|
178
|
+
The golden trout is a beautifully colored fish...
|
|
179
|
+
</dd>
|
|
180
|
+
</dl>
|
|
181
|
+
</section>
|
|
182
|
+
`;
|
|
183
|
+
|
|
184
|
+
exports[`List Renders the UI snapshot correctly 9`] = `
|
|
185
|
+
<section
|
|
186
|
+
className="css-1xdhyk6"
|
|
187
|
+
data-testid="other"
|
|
188
|
+
id="other"
|
|
189
|
+
>
|
|
190
|
+
<h2
|
|
191
|
+
className="chakra-heading css-1xdhyk6"
|
|
192
|
+
id="other-heading"
|
|
91
193
|
>
|
|
92
194
|
Animal Crossing Fish
|
|
93
195
|
</h2>
|
|
@@ -57,10 +57,23 @@ export const sizesEnumValues = getStorybookEnumValues(LogoSizes, "LogoSizes");
|
|
|
57
57
|
| Component Version | DS Version |
|
|
58
58
|
| ----------------- | ---------- |
|
|
59
59
|
| Added | `0.25.9` |
|
|
60
|
-
| Latest | `0.
|
|
60
|
+
| Latest | `0.26.0` |
|
|
61
|
+
|
|
62
|
+
## Table of Contents
|
|
63
|
+
|
|
64
|
+
- [Overview](#overview)
|
|
65
|
+
- [Component Props](#component-props)
|
|
66
|
+
- [Accessibility](#accessibility)
|
|
67
|
+
- [Logo Sizes](#logo-sizes)
|
|
68
|
+
- [All Logos](#all-logos)
|
|
69
|
+
- [Custom Logos](#custom-logos)
|
|
70
|
+
|
|
71
|
+
## Overview
|
|
61
72
|
|
|
62
73
|
<Description of={Logo} />
|
|
63
74
|
|
|
75
|
+
## Component Props
|
|
76
|
+
|
|
64
77
|
<Canvas withToolbar>
|
|
65
78
|
<Story
|
|
66
79
|
name="Logo with Controls"
|
|
@@ -142,30 +155,29 @@ export const allLogosGrid = (list) => (
|
|
|
142
155
|
|
|
143
156
|
## Accessibility
|
|
144
157
|
|
|
145
|
-
For accessibility purposes, every DS `Logo` will
|
|
146
|
-
its `svg` file name in the `title` element. The
|
|
147
|
-
is the logo's code name. Pass in better
|
|
148
|
-
when using the `Logo` component in your
|
|
149
|
-
a better descriptive title for the
|
|
158
|
+
For accessibility purposes, every Reservoir Design System (DS) `Logo` will
|
|
159
|
+
render the `svg` element with its `svg` file name in the `title` element. The
|
|
160
|
+
default text in the `title` element is the logo's code name. Pass in better
|
|
161
|
+
descriptive text in the `title` prop when using the `Logo` component in your
|
|
162
|
+
application. This will give screenreaders a better descriptive title for the
|
|
163
|
+
`svg` graphic.
|
|
150
164
|
|
|
151
|
-
|
|
165
|
+
`Logos`s are decorative by default. This means that they are presentational and
|
|
166
|
+
screenreaders will not read them because the `aria-hidden` attribute is set to
|
|
167
|
+
`true`.
|
|
152
168
|
|
|
153
|
-
|
|
154
|
-
logos are listed in the `LogoNames` enum in `src/components/Logos/LogoTypes.tsx`.
|
|
169
|
+
Resources:
|
|
155
170
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<Canvas withToolbar>
|
|
160
|
-
<Story name="All Logos">{allLogosGrid(logos)}</Story>
|
|
161
|
-
</Canvas>
|
|
171
|
+
- [W3C Design System SVG Icons](https://design-system.w3.org/styles/svg-icons.html)
|
|
172
|
+
- [CSS-Tricks Accessible SVG Icons](https://css-tricks.com/accessible-svg-icons/)
|
|
173
|
+
- [Chakra UI Icon](https://chakra-ui.com/docs/components/media-and-icons/icon)
|
|
162
174
|
|
|
163
175
|
## Logo Sizes
|
|
164
176
|
|
|
165
177
|
Update the size of the `Logo` component by passing the `size` prop with a value from
|
|
166
178
|
`LogoSizes`. The `LogoSizes` enum can be found in`src/components/Logo/LogoTypes.tsx`.
|
|
167
179
|
|
|
168
|
-
Note: `LogoSizes.Default` sets the width to `100%` and the logo will expand to
|
|
180
|
+
Note: `LogoSizes.Default` sets the width to `100%` and the rendered logo will expand to
|
|
169
181
|
fill the full width of the parent element.
|
|
170
182
|
|
|
171
183
|
```jsx
|
|
@@ -177,6 +189,18 @@ fill the full width of the parent element.
|
|
|
177
189
|
<Story name="Logo Sizes">{allLogosGrid(sizes)}</Story>
|
|
178
190
|
</Canvas>
|
|
179
191
|
|
|
192
|
+
## All Logos
|
|
193
|
+
|
|
194
|
+
The `Logo` component contains the logos most commonly used by are listed available
|
|
195
|
+
logos are listed in the `LogoNames` enum in `src/components/Logos/LogoTypes.tsx`.
|
|
196
|
+
|
|
197
|
+
If you feel a necessary logo should be added to the `Logo` component, please reach out
|
|
198
|
+
to the DS team.
|
|
199
|
+
|
|
200
|
+
<Canvas withToolbar>
|
|
201
|
+
<Story name="All Logos">{allLogosGrid(logos)}</Story>
|
|
202
|
+
</Canvas>
|
|
203
|
+
|
|
180
204
|
## Custom Logos
|
|
181
205
|
|
|
182
206
|
If you'd like to pass a custom `svg` to your application, you can pass it a
|
|
@@ -28,7 +28,7 @@ describe("Logo", () => {
|
|
|
28
28
|
</Logo>
|
|
29
29
|
);
|
|
30
30
|
expect(warn).toHaveBeenCalledWith(
|
|
31
|
-
"Logo
|
|
31
|
+
"NYPL Reservoir Logo: Pass either a `name` prop or an `svg` element child. Do not pass both."
|
|
32
32
|
);
|
|
33
33
|
});
|
|
34
34
|
|
|
@@ -36,7 +36,17 @@ describe("Logo", () => {
|
|
|
36
36
|
const warn = jest.spyOn(console, "warn");
|
|
37
37
|
render(<Logo />);
|
|
38
38
|
expect(warn).toHaveBeenCalledWith(
|
|
39
|
-
"Pass a logo `name` prop or an SVG child to
|
|
39
|
+
"NYPL Reservoir Logo: Pass a logo `name` prop or an SVG child to " +
|
|
40
|
+
"`Logo` to ensure a logo appears."
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("consoles a warning if name is not passed and a child is but it's not an SVG element", () => {
|
|
45
|
+
const warn = jest.spyOn(console, "warn");
|
|
46
|
+
render(<Logo>Not an SVG</Logo>);
|
|
47
|
+
expect(warn).toHaveBeenCalledWith(
|
|
48
|
+
"NYPL Reservoir Logo: An `svg` element must be passed to the `Logo` " +
|
|
49
|
+
"component as its child."
|
|
40
50
|
);
|
|
41
51
|
});
|
|
42
52
|
|
|
@@ -91,8 +101,25 @@ describe("Logo", () => {
|
|
|
91
101
|
/>
|
|
92
102
|
)
|
|
93
103
|
.toJSON();
|
|
104
|
+
const withChakraProps = renderer
|
|
105
|
+
.create(
|
|
106
|
+
<Logo
|
|
107
|
+
id="chakra"
|
|
108
|
+
name={LogoNames.NYPLBlack}
|
|
109
|
+
p="20px"
|
|
110
|
+
color="ui.error.primary"
|
|
111
|
+
/>
|
|
112
|
+
)
|
|
113
|
+
.toJSON();
|
|
114
|
+
const withOtherProps = renderer
|
|
115
|
+
.create(
|
|
116
|
+
<Logo id="props" name={LogoNames.NYPLBlack} data-testid="props" />
|
|
117
|
+
)
|
|
118
|
+
.toJSON();
|
|
94
119
|
|
|
95
120
|
expect(standard).toMatchSnapshot();
|
|
96
121
|
expect(withCustomSize).toMatchSnapshot();
|
|
122
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
123
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
97
124
|
});
|
|
98
125
|
});
|