@nypl/design-system-react-components 0.25.11 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +151 -0
- package/README.md +14 -26
- 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 +2 -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 +10 -7
- 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 +8 -0
- package/dist/components/Logo/LogoTypes.d.ts +10 -2
- package/dist/components/Notification/Notification.d.ts +7 -7
- package/dist/components/Pagination/Pagination.d.ts +8 -4
- 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 +5 -5
- 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 +18 -9
- 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 +2802 -1686
- 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 +2811 -1699
- 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 +6 -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 -6
- 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 +6 -14
- package/dist/theme/components/global.d.ts +37 -29
- package/dist/theme/components/globalMixins.d.ts +8 -8
- 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 +105 -9
- package/dist/theme/components/notification.d.ts +7 -4
- package/dist/theme/components/pagination.d.ts +2 -5
- package/dist/theme/components/radio.d.ts +10 -6
- package/dist/theme/components/radioGroup.d.ts +4 -2
- package/dist/theme/components/select.d.ts +38 -13
- package/dist/theme/components/skeletonLoader.d.ts +2 -2
- package/dist/theme/components/slider.d.ts +14 -7
- package/dist/theme/components/structuredContent.d.ts +197 -0
- package/dist/theme/components/textInput.d.ts +22 -14
- package/dist/theme/components/toggle.d.ts +25 -6
- package/dist/theme/foundations/global.d.ts +33 -3
- package/dist/theme/foundations/radii.d.ts +1 -0
- package/dist/theme/foundations/spacing.d.ts +46 -43
- package/dist/utils/utils.d.ts +10 -0
- 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 +53 -18
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +66 -35
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +2 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +308 -10
- 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 +220 -100
- 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 +27 -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 +9 -6
- 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 +16 -0
- package/src/components/Logo/LogoTypes.tsx +9 -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 +34 -5
- package/src/components/Notification/Notification.test.tsx +43 -9
- package/src/components/Notification/Notification.tsx +59 -55
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +256 -32
- package/src/components/Pagination/Pagination.stories.mdx +76 -13
- package/src/components/Pagination/Pagination.test.tsx +116 -5
- package/src/components/Pagination/Pagination.tsx +54 -29
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +247 -30
- 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 -61
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +168 -10
- 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 +104 -39
- package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +66 -6
- package/src/components/SearchBar/SearchBar.tsx +23 -13
- 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 +34 -24
- 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 +9 -9
- 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 +34 -20
- 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 +86 -72
- 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 +31 -27
- package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +195 -8
- 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 +51 -10
- 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 +3 -1
- package/src/styles.scss +0 -2
- package/src/theme/components/accordion.ts +7 -12
- package/src/theme/components/breadcrumb.ts +7 -0
- package/src/theme/components/button.ts +15 -7
- package/src/theme/components/card.ts +56 -36
- package/src/theme/components/checkbox.ts +12 -14
- 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 +3 -2
- package/src/theme/components/global.ts +42 -33
- package/src/theme/components/globalMixins.ts +8 -8
- 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 +76 -65
- package/src/theme/components/notification.ts +10 -7
- package/src/theme/components/pagination.ts +2 -5
- package/src/theme/components/progressIndicator.ts +3 -3
- package/src/theme/components/radio.ts +11 -14
- package/src/theme/components/radioGroup.ts +4 -2
- package/src/theme/components/select.ts +37 -18
- package/src/theme/components/skeletonLoader.ts +3 -3
- package/src/theme/components/slider.ts +19 -15
- 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 +76 -42
- package/src/theme/components/videoPlayer.ts +1 -1
- package/src/theme/foundations/colors.ts +20 -13
- package/src/theme/foundations/global.ts +17 -5
- package/src/theme/foundations/radii.ts +1 -0
- package/src/theme/foundations/spacing.ts +70 -22
- package/src/theme/foundations/typography.ts +3 -3
- package/src/utils/componentCategories.ts +28 -21
- package/src/utils/utils.ts +28 -0
- package/dist/components/Card/CardTypes.d.ts +0 -4
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
- package/dist/components/Pagination/Pagination.stories.d.ts +0 -13
- 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/Pagination/Pagination.stories.tsx +0 -54
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
- package/src/docs/Intro.stories.mdx +0 -53
- package/src/helpers/generateUUID.tsx +0 -5
- package/src/styles/base/_03-base.scss +0 -25
- package/src/styles/base/_04-focus.scss +0 -22
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
3
3
|
|
|
4
4
|
import { HeroTypes, HeroSecondaryTypes } from "./HeroTypes";
|
|
5
|
+
import Image from "../Image/Image";
|
|
5
6
|
|
|
6
7
|
export interface HeroProps {
|
|
7
8
|
/** Optional hex color value used to override the default background
|
|
@@ -20,11 +21,14 @@ export interface HeroProps {
|
|
|
20
21
|
heading?: JSX.Element;
|
|
21
22
|
/** Used to control how the `Hero` component will be rendered. */
|
|
22
23
|
heroType?: HeroTypes;
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
|
|
24
|
+
/** Text description of the image; to follow best practices for accessibility,
|
|
25
|
+
* this prop should not be left blank if `imageSrc` is passed. */
|
|
26
|
+
imageAlt?: string;
|
|
27
|
+
/** Optional `imageSrc` used for SECONDARY, FIFTYFIFTY and CAMPAIGN
|
|
28
|
+
* `Hero` types; Note: `imageSrc` can only be used in conjunction with
|
|
29
|
+
* `backgroundImageSrc` for the CAMPAIGN `Hero` type.
|
|
26
30
|
* Note: not all `Hero` variations utilize this prop. */
|
|
27
|
-
|
|
31
|
+
imageSrc?: string;
|
|
28
32
|
/** Optional details area that contains location data.
|
|
29
33
|
* Note: not all `Hero` variations utilize this prop. */
|
|
30
34
|
locationDetails?: JSX.Element;
|
|
@@ -45,125 +49,153 @@ for (const type in HeroTypes) {
|
|
|
45
49
|
*/
|
|
46
50
|
const getVariant = (type) => variantMap[type] || HeroTypes.Primary;
|
|
47
51
|
|
|
48
|
-
export
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
export const Hero = chakra(
|
|
53
|
+
(props: React.PropsWithChildren<HeroProps>) => {
|
|
54
|
+
const {
|
|
55
|
+
backgroundColor,
|
|
56
|
+
backgroundImageSrc,
|
|
57
|
+
foregroundColor,
|
|
58
|
+
heading,
|
|
59
|
+
heroType,
|
|
60
|
+
imageAlt,
|
|
61
|
+
imageSrc,
|
|
62
|
+
locationDetails,
|
|
63
|
+
subHeaderText,
|
|
64
|
+
...rest
|
|
65
|
+
} = props;
|
|
66
|
+
const variant = getVariant(heroType);
|
|
67
|
+
const styles = useMultiStyleConfig("Hero", { variant });
|
|
68
|
+
const headingStyles = styles.heading;
|
|
69
|
+
// We want to add `Hero`-specific styling to the `Heading` component.
|
|
70
|
+
const finalHeading =
|
|
71
|
+
heading &&
|
|
72
|
+
React.cloneElement(heading, { additionalStyles: headingStyles });
|
|
73
|
+
let backgroundImageStyle = {};
|
|
74
|
+
let contentBoxStyling = {};
|
|
67
75
|
|
|
68
|
-
|
|
69
|
-
if (!backgroundImageSrc) {
|
|
76
|
+
if (imageSrc && !imageAlt) {
|
|
70
77
|
console.warn(
|
|
71
|
-
`
|
|
78
|
+
`NYPL Reservoir: The "imageSrc" prop was passed but the "imageAlt" props was not. This will make the rendered image inaccessible.`
|
|
72
79
|
);
|
|
73
80
|
}
|
|
74
|
-
|
|
81
|
+
|
|
82
|
+
if (heroType === HeroTypes.Primary) {
|
|
83
|
+
if (!backgroundImageSrc) {
|
|
84
|
+
console.warn(
|
|
85
|
+
"NYPL Reservoir Hero: It is recommended to use the `backgroundImageSrc` " +
|
|
86
|
+
"prop for the `HeroTypes.Primary` `heroType` variant."
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
if (imageAlt && imageSrc) {
|
|
90
|
+
console.warn(
|
|
91
|
+
"NYPL Reservoir Hero: The `imageSrc` and `imageAlt` props have been " +
|
|
92
|
+
"passed, but the `HeroTypes.Primary` `heroType` variant will not use it."
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
} else if (locationDetails) {
|
|
75
96
|
console.warn(
|
|
76
|
-
|
|
97
|
+
"NYPL Reservoir Hero: The `locationDetails` prop should only be used " +
|
|
98
|
+
"with the `HeroTypes.Primary` `heroType` variant."
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
if (HeroSecondaryTypes.includes(heroType) && backgroundImageSrc) {
|
|
102
|
+
console.warn(
|
|
103
|
+
"NYPL Reservoir Hero: The `backgroundImageSrc` prop has been passed, " +
|
|
104
|
+
"but the `HeroTypes.Secondary` `heroType` variant will not use it."
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
if (heroType === HeroTypes.Tertiary && (backgroundImageSrc || imageSrc)) {
|
|
108
|
+
console.warn(
|
|
109
|
+
"NYPL Reservoir Hero: The `HeroTypes.Tertiary` `heroType` variant hero " +
|
|
110
|
+
"will not use any of the image props."
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
if (heroType === HeroTypes.Campaign && (!backgroundImageSrc || !imageSrc)) {
|
|
114
|
+
console.warn(
|
|
115
|
+
"NYPL Reservoir Hero: It is recommended to use both the " +
|
|
116
|
+
"`backgroundImageSrc` and `imageSrc` props for the " +
|
|
117
|
+
"`HeroTypes.Campaign` `heroType` variant."
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (heroType === HeroTypes.FiftyFifty && backgroundImageSrc) {
|
|
121
|
+
console.warn(
|
|
122
|
+
"NYPL Reservoir Hero: The `backgroundImageSrc` prop has been passed, " +
|
|
123
|
+
"but the `HeroTypes.FiftyFifty` `heroType` variant hero will not use it."
|
|
77
124
|
);
|
|
78
125
|
}
|
|
79
|
-
} else if (locationDetails) {
|
|
80
|
-
console.warn(
|
|
81
|
-
`Warning: Please provide "locationDetails" only to PRIMARY hero.`
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
if (HeroSecondaryTypes.includes(heroType) && backgroundImageSrc) {
|
|
85
|
-
console.warn(
|
|
86
|
-
`Warning: the "backgroundImageSrc" prop has been passed, but SECONDARY hero will not use it.`
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
if (heroType === HeroTypes.Tertiary && (backgroundImageSrc || image)) {
|
|
90
|
-
console.warn(`Warning: TERTIARY hero will not use any of the image props.`);
|
|
91
|
-
}
|
|
92
|
-
if (heroType === HeroTypes.Campaign && (!backgroundImageSrc || !image)) {
|
|
93
|
-
console.warn(
|
|
94
|
-
`Warning: it is recommended to use both "backgroundImageSrc" and "image" props for CAMPAIGN hero.`
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
if (heroType === HeroTypes.FiftyFifty && backgroundImageSrc) {
|
|
98
|
-
console.warn(
|
|
99
|
-
`Warning: the "backgroundImageSrc" prop has been passed, but FIFTYFIFTY hero will not use it.`
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
126
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
127
|
+
if (heroType === HeroTypes.Primary) {
|
|
128
|
+
backgroundImageStyle = backgroundImageSrc
|
|
129
|
+
? { backgroundImage: `url(${backgroundImageSrc})` }
|
|
130
|
+
: {};
|
|
131
|
+
} else if (heroType === HeroTypes.Campaign) {
|
|
132
|
+
backgroundImageStyle = backgroundImageSrc
|
|
133
|
+
? { backgroundImage: `url(${backgroundImageSrc})` }
|
|
134
|
+
: { backgroundColor };
|
|
135
|
+
} else if (
|
|
136
|
+
heroType === HeroTypes.Tertiary ||
|
|
137
|
+
heroType === HeroTypes.FiftyFifty
|
|
138
|
+
) {
|
|
139
|
+
backgroundImageStyle = { backgroundColor };
|
|
140
|
+
}
|
|
117
141
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
142
|
+
if (!HeroSecondaryTypes.includes(heroType)) {
|
|
143
|
+
contentBoxStyling = {
|
|
144
|
+
color: foregroundColor,
|
|
145
|
+
backgroundColor,
|
|
146
|
+
};
|
|
147
|
+
} else if (foregroundColor || backgroundColor) {
|
|
148
|
+
console.warn(
|
|
149
|
+
"NYPL Reservoir Hero: The `foregroundColor` and/or `backgroundColor` " +
|
|
150
|
+
"props have been passed, but the `HeroTypes.Secondary` `heroType` " +
|
|
151
|
+
"variant will not use them."
|
|
152
|
+
);
|
|
153
|
+
}
|
|
128
154
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
155
|
+
const childrenToRender =
|
|
156
|
+
heroType === HeroTypes.Campaign ? (
|
|
157
|
+
<>
|
|
158
|
+
<Image alt={imageAlt} src={imageSrc} />
|
|
159
|
+
<Box __css={styles.interior}>
|
|
160
|
+
{finalHeading}
|
|
161
|
+
{subHeaderText}
|
|
162
|
+
</Box>
|
|
163
|
+
</>
|
|
164
|
+
) : (
|
|
165
|
+
<>
|
|
166
|
+
{heroType !== HeroTypes.Primary &&
|
|
167
|
+
heroType !== HeroTypes.Tertiary && (
|
|
168
|
+
<Image alt={imageAlt} src={imageSrc} />
|
|
169
|
+
)}
|
|
134
170
|
{finalHeading}
|
|
135
|
-
{subHeaderText
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
image}
|
|
143
|
-
{finalHeading}
|
|
144
|
-
{heroType === HeroTypes.Tertiary && subHeaderText ? (
|
|
145
|
-
<p>{subHeaderText}</p>
|
|
146
|
-
) : (
|
|
147
|
-
<Box __css={styles.bodyText}>{subHeaderText}</Box>
|
|
148
|
-
)}
|
|
149
|
-
</>
|
|
150
|
-
);
|
|
171
|
+
{heroType === HeroTypes.Tertiary && subHeaderText ? (
|
|
172
|
+
<p>{subHeaderText}</p>
|
|
173
|
+
) : (
|
|
174
|
+
<Box __css={styles.bodyText}>{subHeaderText}</Box>
|
|
175
|
+
)}
|
|
176
|
+
</>
|
|
177
|
+
);
|
|
151
178
|
|
|
152
|
-
|
|
153
|
-
<Box
|
|
154
|
-
data-testid="hero"
|
|
155
|
-
data-responsive-background-image
|
|
156
|
-
style={backgroundImageStyle}
|
|
157
|
-
__css={styles}
|
|
158
|
-
>
|
|
179
|
+
return (
|
|
159
180
|
<Box
|
|
160
|
-
data-testid="hero
|
|
161
|
-
|
|
162
|
-
|
|
181
|
+
data-testid="hero"
|
|
182
|
+
data-responsive-background-image
|
|
183
|
+
style={backgroundImageStyle}
|
|
184
|
+
__css={styles}
|
|
185
|
+
{...rest}
|
|
163
186
|
>
|
|
164
|
-
|
|
187
|
+
<Box
|
|
188
|
+
data-testid="hero-content"
|
|
189
|
+
style={contentBoxStyling}
|
|
190
|
+
__css={styles.content}
|
|
191
|
+
>
|
|
192
|
+
{childrenToRender}
|
|
193
|
+
</Box>
|
|
194
|
+
{locationDetails}
|
|
165
195
|
</Box>
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
)
|
|
169
|
-
|
|
196
|
+
);
|
|
197
|
+
},
|
|
198
|
+
{ shouldForwardProp: () => true }
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
export default Hero;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`Hero Renders the UI snapshot correctly 1`] = `
|
|
4
4
|
<div
|
|
5
|
-
className="css-
|
|
5
|
+
className="css-1xdhyk6"
|
|
6
6
|
data-responsive-background-image={true}
|
|
7
7
|
data-testid="hero"
|
|
8
8
|
style={
|
|
@@ -22,7 +22,7 @@ exports[`Hero Renders the UI snapshot correctly 1`] = `
|
|
|
22
22
|
}
|
|
23
23
|
>
|
|
24
24
|
<h1
|
|
25
|
-
className="chakra-heading css-
|
|
25
|
+
className="chakra-heading css-1xdhyk6"
|
|
26
26
|
id="primary-hero"
|
|
27
27
|
>
|
|
28
28
|
Hero Primary
|
|
@@ -38,7 +38,7 @@ exports[`Hero Renders the UI snapshot correctly 1`] = `
|
|
|
38
38
|
|
|
39
39
|
exports[`Hero Renders the UI snapshot correctly 2`] = `
|
|
40
40
|
<div
|
|
41
|
-
className="css-
|
|
41
|
+
className="css-1xdhyk6"
|
|
42
42
|
data-responsive-background-image={true}
|
|
43
43
|
data-testid="hero"
|
|
44
44
|
style={Object {}}
|
|
@@ -54,7 +54,7 @@ exports[`Hero Renders the UI snapshot correctly 2`] = `
|
|
|
54
54
|
src="https://placeimg.com/800/400/animals"
|
|
55
55
|
/>
|
|
56
56
|
<h1
|
|
57
|
-
className="chakra-heading css-
|
|
57
|
+
className="chakra-heading css-1xdhyk6"
|
|
58
58
|
id="secondary-hero"
|
|
59
59
|
>
|
|
60
60
|
Hero Secondary
|
|
@@ -70,7 +70,7 @@ exports[`Hero Renders the UI snapshot correctly 2`] = `
|
|
|
70
70
|
|
|
71
71
|
exports[`Hero Renders the UI snapshot correctly 3`] = `
|
|
72
72
|
<div
|
|
73
|
-
className="css-
|
|
73
|
+
className="css-1xdhyk6"
|
|
74
74
|
data-responsive-background-image={true}
|
|
75
75
|
data-testid="hero"
|
|
76
76
|
style={Object {}}
|
|
@@ -86,7 +86,7 @@ exports[`Hero Renders the UI snapshot correctly 3`] = `
|
|
|
86
86
|
src="https://placeimg.com/800/400/animals"
|
|
87
87
|
/>
|
|
88
88
|
<h1
|
|
89
|
-
className="chakra-heading css-
|
|
89
|
+
className="chakra-heading css-1xdhyk6"
|
|
90
90
|
id="secondary-hero"
|
|
91
91
|
>
|
|
92
92
|
Hero Secondary Books and More
|
|
@@ -102,7 +102,7 @@ exports[`Hero Renders the UI snapshot correctly 3`] = `
|
|
|
102
102
|
|
|
103
103
|
exports[`Hero Renders the UI snapshot correctly 4`] = `
|
|
104
104
|
<div
|
|
105
|
-
className="css-
|
|
105
|
+
className="css-1xdhyk6"
|
|
106
106
|
data-responsive-background-image={true}
|
|
107
107
|
data-testid="hero"
|
|
108
108
|
style={Object {}}
|
|
@@ -118,7 +118,7 @@ exports[`Hero Renders the UI snapshot correctly 4`] = `
|
|
|
118
118
|
src="https://placeimg.com/800/400/animals"
|
|
119
119
|
/>
|
|
120
120
|
<h1
|
|
121
|
-
className="chakra-heading css-
|
|
121
|
+
className="chakra-heading css-1xdhyk6"
|
|
122
122
|
id="secondary-hero"
|
|
123
123
|
>
|
|
124
124
|
Hero Secondary Locations
|
|
@@ -134,7 +134,7 @@ exports[`Hero Renders the UI snapshot correctly 4`] = `
|
|
|
134
134
|
|
|
135
135
|
exports[`Hero Renders the UI snapshot correctly 5`] = `
|
|
136
136
|
<div
|
|
137
|
-
className="css-
|
|
137
|
+
className="css-1xdhyk6"
|
|
138
138
|
data-responsive-background-image={true}
|
|
139
139
|
data-testid="hero"
|
|
140
140
|
style={Object {}}
|
|
@@ -150,7 +150,7 @@ exports[`Hero Renders the UI snapshot correctly 5`] = `
|
|
|
150
150
|
src="https://placeimg.com/800/400/animals"
|
|
151
151
|
/>
|
|
152
152
|
<h1
|
|
153
|
-
className="chakra-heading css-
|
|
153
|
+
className="chakra-heading css-1xdhyk6"
|
|
154
154
|
id="secondary-hero"
|
|
155
155
|
>
|
|
156
156
|
Hero Secondary
|
|
@@ -166,7 +166,7 @@ exports[`Hero Renders the UI snapshot correctly 5`] = `
|
|
|
166
166
|
|
|
167
167
|
exports[`Hero Renders the UI snapshot correctly 6`] = `
|
|
168
168
|
<div
|
|
169
|
-
className="css-
|
|
169
|
+
className="css-1xdhyk6"
|
|
170
170
|
data-responsive-background-image={true}
|
|
171
171
|
data-testid="hero"
|
|
172
172
|
style={Object {}}
|
|
@@ -182,7 +182,7 @@ exports[`Hero Renders the UI snapshot correctly 6`] = `
|
|
|
182
182
|
src="https://placeimg.com/800/400/animals"
|
|
183
183
|
/>
|
|
184
184
|
<h1
|
|
185
|
-
className="chakra-heading css-
|
|
185
|
+
className="chakra-heading css-1xdhyk6"
|
|
186
186
|
id="secondary-hero"
|
|
187
187
|
>
|
|
188
188
|
Hero Secondary What's On
|
|
@@ -198,7 +198,7 @@ exports[`Hero Renders the UI snapshot correctly 6`] = `
|
|
|
198
198
|
|
|
199
199
|
exports[`Hero Renders the UI snapshot correctly 7`] = `
|
|
200
200
|
<div
|
|
201
|
-
className="css-
|
|
201
|
+
className="css-1xdhyk6"
|
|
202
202
|
data-responsive-background-image={true}
|
|
203
203
|
data-testid="hero"
|
|
204
204
|
style={
|
|
@@ -218,7 +218,7 @@ exports[`Hero Renders the UI snapshot correctly 7`] = `
|
|
|
218
218
|
}
|
|
219
219
|
>
|
|
220
220
|
<h1
|
|
221
|
-
className="chakra-heading css-
|
|
221
|
+
className="chakra-heading css-1xdhyk6"
|
|
222
222
|
id="tertiary-hero"
|
|
223
223
|
>
|
|
224
224
|
Hero Tertiary
|
|
@@ -232,7 +232,7 @@ exports[`Hero Renders the UI snapshot correctly 7`] = `
|
|
|
232
232
|
|
|
233
233
|
exports[`Hero Renders the UI snapshot correctly 8`] = `
|
|
234
234
|
<div
|
|
235
|
-
className="css-
|
|
235
|
+
className="css-1xdhyk6"
|
|
236
236
|
data-responsive-background-image={true}
|
|
237
237
|
data-testid="hero"
|
|
238
238
|
style={
|
|
@@ -260,7 +260,7 @@ exports[`Hero Renders the UI snapshot correctly 8`] = `
|
|
|
260
260
|
className="css-0"
|
|
261
261
|
>
|
|
262
262
|
<h1
|
|
263
|
-
className="chakra-heading css-
|
|
263
|
+
className="chakra-heading css-1xdhyk6"
|
|
264
264
|
id="campaign-hero"
|
|
265
265
|
>
|
|
266
266
|
Hero Campaign
|
|
@@ -273,7 +273,7 @@ exports[`Hero Renders the UI snapshot correctly 8`] = `
|
|
|
273
273
|
|
|
274
274
|
exports[`Hero Renders the UI snapshot correctly 9`] = `
|
|
275
275
|
<div
|
|
276
|
-
className="css-
|
|
276
|
+
className="css-1xdhyk6"
|
|
277
277
|
data-responsive-background-image={true}
|
|
278
278
|
data-testid="hero"
|
|
279
279
|
style={
|
|
@@ -305,3 +305,75 @@ exports[`Hero Renders the UI snapshot correctly 9`] = `
|
|
|
305
305
|
</div>
|
|
306
306
|
</div>
|
|
307
307
|
`;
|
|
308
|
+
|
|
309
|
+
exports[`Hero Renders the UI snapshot correctly 10`] = `
|
|
310
|
+
<div
|
|
311
|
+
className="css-16h1ce8"
|
|
312
|
+
data-responsive-background-image={true}
|
|
313
|
+
data-testid="hero"
|
|
314
|
+
style={
|
|
315
|
+
Object {
|
|
316
|
+
"backgroundImage": "url(https://placeimg.com/1600/800/arch)",
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
>
|
|
320
|
+
<div
|
|
321
|
+
className="css-0"
|
|
322
|
+
data-testid="hero-content"
|
|
323
|
+
style={
|
|
324
|
+
Object {
|
|
325
|
+
"backgroundColor": undefined,
|
|
326
|
+
"color": undefined,
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
>
|
|
330
|
+
<h1
|
|
331
|
+
className="chakra-heading css-1xdhyk6"
|
|
332
|
+
id="chakra"
|
|
333
|
+
>
|
|
334
|
+
Hero Primary
|
|
335
|
+
</h1>
|
|
336
|
+
<div
|
|
337
|
+
className="css-0"
|
|
338
|
+
>
|
|
339
|
+
Example Subtitle
|
|
340
|
+
</div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
`;
|
|
344
|
+
|
|
345
|
+
exports[`Hero Renders the UI snapshot correctly 11`] = `
|
|
346
|
+
<div
|
|
347
|
+
className="css-1xdhyk6"
|
|
348
|
+
data-responsive-background-image={true}
|
|
349
|
+
data-testid="props"
|
|
350
|
+
style={
|
|
351
|
+
Object {
|
|
352
|
+
"backgroundImage": "url(https://placeimg.com/1600/800/arch)",
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
>
|
|
356
|
+
<div
|
|
357
|
+
className="css-0"
|
|
358
|
+
data-testid="hero-content"
|
|
359
|
+
style={
|
|
360
|
+
Object {
|
|
361
|
+
"backgroundColor": undefined,
|
|
362
|
+
"color": undefined,
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
>
|
|
366
|
+
<h1
|
|
367
|
+
className="chakra-heading css-1xdhyk6"
|
|
368
|
+
id="props"
|
|
369
|
+
>
|
|
370
|
+
Hero Primary
|
|
371
|
+
</h1>
|
|
372
|
+
<div
|
|
373
|
+
className="css-0"
|
|
374
|
+
>
|
|
375
|
+
Example Subtitle
|
|
376
|
+
</div>
|
|
377
|
+
</div>
|
|
378
|
+
</div>
|
|
379
|
+
`;
|
|
@@ -25,8 +25,6 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
25
25
|
}}
|
|
26
26
|
argTypes={{
|
|
27
27
|
className: { control: false },
|
|
28
|
-
height: { table: { defaultValue: { summary: "2px" } } },
|
|
29
|
-
width: { table: { defaultValue: { summary: "100%" } } },
|
|
30
28
|
}}
|
|
31
29
|
/>
|
|
32
30
|
|
|
@@ -35,7 +33,15 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
35
33
|
| Component Version | DS Version |
|
|
36
34
|
| ----------------- | ---------- |
|
|
37
35
|
| Added | `0.23.0` |
|
|
38
|
-
| Latest | `0.
|
|
36
|
+
| Latest | `0.26.0` |
|
|
37
|
+
|
|
38
|
+
## Table of Contents
|
|
39
|
+
|
|
40
|
+
- [Overview](#overview)
|
|
41
|
+
- [Component Props](#component-props)
|
|
42
|
+
- [Accessibility](#accessibility)
|
|
43
|
+
|
|
44
|
+
## Overview
|
|
39
45
|
|
|
40
46
|
<Description of={HorizontalRule} />
|
|
41
47
|
|
|
@@ -44,8 +50,24 @@ The `HorizontalRule` component renders a basic `<hr>` element. The `height`,
|
|
|
44
50
|
number, a `px` value, a `em` value, or a `rem` value. Otherwise, the default
|
|
45
51
|
value of "2px" will be used.
|
|
46
52
|
|
|
53
|
+
## Component Props
|
|
54
|
+
|
|
47
55
|
<Canvas withToolbar>
|
|
48
|
-
<Story name="HorizontalRule"
|
|
56
|
+
<Story name="HorizontalRule" args={{ align: "left" }}>
|
|
57
|
+
{(args) => <HorizontalRule {...args} />}
|
|
58
|
+
</Story>
|
|
49
59
|
</Canvas>
|
|
50
60
|
|
|
51
61
|
<ArgsTable story="HorizontalRule" />
|
|
62
|
+
|
|
63
|
+
## Accessibility
|
|
64
|
+
|
|
65
|
+
The `HorizontalRule` component is not just a visual thematic break between
|
|
66
|
+
content or interfaces, it is also picked up by screenreaders. Internally, the
|
|
67
|
+
`HorizontalRule` component uses the `<hr>` element which has a `role` of
|
|
68
|
+
`"separator"`.
|
|
69
|
+
|
|
70
|
+
Resources:
|
|
71
|
+
|
|
72
|
+
- [MDN hr: The Thematic Break (Horizontal Rule) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr)
|
|
73
|
+
- [Not Your Typical Horizontal Rules](https://www.sarasoueidan.com/blog/horizontal-rules/#)
|
|
@@ -24,23 +24,6 @@ describe("HorizontalRule", () => {
|
|
|
24
24
|
expect(hrClass).toContain("custom-hr");
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
it("renders with proper custom class", () => {
|
|
28
|
-
const warn = jest.spyOn(console, "warn");
|
|
29
|
-
const { rerender } = render(
|
|
30
|
-
<HorizontalRule className="custom-hr" height="20px" />
|
|
31
|
-
);
|
|
32
|
-
expect(warn).not.toHaveBeenCalledWith(
|
|
33
|
-
"`HorizontalRule`: For the `height` prop, use a whole number, a `px` " +
|
|
34
|
-
"value, a `em` value, or a `rem` value. Using the default of 2px."
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
rerender(<HorizontalRule className="custom-hr" height="20%" />);
|
|
38
|
-
expect(warn).toHaveBeenCalledWith(
|
|
39
|
-
"`HorizontalRule`: For the `height` prop, use a whole number, a `px` " +
|
|
40
|
-
"value, a `em` value, or a `rem` value. Using the default of 2px."
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
27
|
it("renders the UI snapshot correctly", () => {
|
|
45
28
|
const basic = renderer.create(<HorizontalRule />).toJSON();
|
|
46
29
|
const updatedHeight = renderer
|
|
@@ -53,10 +36,19 @@ describe("HorizontalRule", () => {
|
|
|
53
36
|
const alignRight = renderer
|
|
54
37
|
.create(<HorizontalRule align="right" />)
|
|
55
38
|
.toJSON();
|
|
39
|
+
const withChakraProps = renderer
|
|
40
|
+
.create(<HorizontalRule p="20px" color="ui.error.primary" />)
|
|
41
|
+
.toJSON();
|
|
42
|
+
const withOtherProps = renderer
|
|
43
|
+
.create(<HorizontalRule data-testid="props" />)
|
|
44
|
+
.toJSON();
|
|
45
|
+
|
|
56
46
|
expect(basic).toMatchSnapshot();
|
|
57
47
|
expect(updatedHeight).toMatchSnapshot();
|
|
58
48
|
expect(updatedWidth).toMatchSnapshot();
|
|
59
49
|
expect(alignLeft).toMatchSnapshot();
|
|
60
50
|
expect(alignRight).toMatchSnapshot();
|
|
51
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
52
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
61
53
|
});
|
|
62
54
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// HorizontalRule
|
|
2
|
-
import { Box, useStyleConfig } from "@chakra-ui/react";
|
|
2
|
+
import { Box, chakra, useStyleConfig } from "@chakra-ui/react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
5
|
export interface HorizontalRuleProps {
|
|
@@ -9,35 +9,19 @@ export interface HorizontalRuleProps {
|
|
|
9
9
|
align?: "left" | "right";
|
|
10
10
|
/** ClassName you can add in addition to `horizontal-rule` */
|
|
11
11
|
className?: string;
|
|
12
|
-
/** Optional height value. This value should be entered with the same
|
|
13
|
-
* formatting as a CSS height attribute except for percent values (ex. `2`,
|
|
14
|
-
* `5px`, `1.5rem`). If this prop is omitted or a percent value is used, the
|
|
15
|
-
* horizontal rule will have a default height of 2px. */
|
|
16
|
-
height?: string;
|
|
17
|
-
/** Optional width value. This value should be entered with the same
|
|
18
|
-
* formatting as a CSS width attribute (ex. `50%`, `640px`, `20rem`). If
|
|
19
|
-
* omitted, the horizontal rule will have a default width of "100%". */
|
|
20
|
-
width?: string;
|
|
21
12
|
}
|
|
22
13
|
|
|
23
|
-
export
|
|
24
|
-
const { align, className,
|
|
14
|
+
export const HorizontalRule = chakra((props: HorizontalRuleProps) => {
|
|
15
|
+
const { align, className, ...rest } = props;
|
|
25
16
|
const styles = useStyleConfig("HorizontalRule", { align });
|
|
26
|
-
let finalHeight = height;
|
|
27
|
-
|
|
28
|
-
if (height.endsWith("%")) {
|
|
29
|
-
console.warn(
|
|
30
|
-
"`HorizontalRule`: For the `height` prop, use a whole number, a `px`" +
|
|
31
|
-
" value, a `em` value, or a `rem` value. Using the default of 2px."
|
|
32
|
-
);
|
|
33
|
-
finalHeight = "2px";
|
|
34
|
-
}
|
|
35
17
|
|
|
36
18
|
const finalStyles = {
|
|
37
19
|
...styles,
|
|
38
|
-
height:
|
|
39
|
-
width,
|
|
20
|
+
height: "2px",
|
|
21
|
+
width: "100%",
|
|
40
22
|
};
|
|
41
23
|
|
|
42
|
-
return <Box as="hr" className={className} __css={finalStyles} />;
|
|
43
|
-
}
|
|
24
|
+
return <Box as="hr" className={className} __css={finalStyles} {...rest} />;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export default HorizontalRule;
|