@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
|
@@ -19,8 +19,10 @@ describe("Card Accessibility", () => {
|
|
|
19
19
|
const { container } = render(
|
|
20
20
|
<Card
|
|
21
21
|
id="cardID"
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
imageProps={{
|
|
23
|
+
alt: "Alt text",
|
|
24
|
+
src: "https://placeimg.com/400/200/arch",
|
|
25
|
+
}}
|
|
24
26
|
>
|
|
25
27
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
26
28
|
The Card Heading
|
|
@@ -45,8 +47,10 @@ describe("Card Accessibility", () => {
|
|
|
45
47
|
const { container } = render(
|
|
46
48
|
<Card
|
|
47
49
|
id="cardID"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
imageProps={{
|
|
51
|
+
alt: "Alt text",
|
|
52
|
+
src: "https://placeimg.com/400/200/arch",
|
|
53
|
+
}}
|
|
50
54
|
mainActionLink="http://nypl.org"
|
|
51
55
|
>
|
|
52
56
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
@@ -73,8 +77,10 @@ describe("Card", () => {
|
|
|
73
77
|
const regularCard = (
|
|
74
78
|
<Card
|
|
75
79
|
id="regularCard"
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
imageProps={{
|
|
81
|
+
alt: "Alt text",
|
|
82
|
+
src: "https://placeimg.com/400/200/arch",
|
|
83
|
+
}}
|
|
78
84
|
>
|
|
79
85
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
80
86
|
The Card Heading
|
|
@@ -96,8 +102,10 @@ describe("Card", () => {
|
|
|
96
102
|
<Card
|
|
97
103
|
className="edition-card"
|
|
98
104
|
id="cardWithExtendedStyles"
|
|
99
|
-
|
|
100
|
-
|
|
105
|
+
imageProps={{
|
|
106
|
+
alt: "Alt text",
|
|
107
|
+
src: "https://placeimg.com/300/400/arch",
|
|
108
|
+
}}
|
|
101
109
|
>
|
|
102
110
|
<CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
|
|
103
111
|
The Card Heading
|
|
@@ -130,8 +138,10 @@ describe("Card", () => {
|
|
|
130
138
|
<Card
|
|
131
139
|
className="edition-card"
|
|
132
140
|
id="cardWithNoCTAs"
|
|
133
|
-
|
|
134
|
-
|
|
141
|
+
imageProps={{
|
|
142
|
+
alt: "Alt text",
|
|
143
|
+
src: "https://placeimg.com/300/400/arch",
|
|
144
|
+
}}
|
|
135
145
|
>
|
|
136
146
|
<CardHeading id="editioncardheading1" level={HeadingLevels.Two}>
|
|
137
147
|
The Card Heading
|
|
@@ -147,8 +157,10 @@ describe("Card", () => {
|
|
|
147
157
|
<Card
|
|
148
158
|
className="edition-card"
|
|
149
159
|
id="cardWithNoContent"
|
|
150
|
-
|
|
151
|
-
|
|
160
|
+
imageProps={{
|
|
161
|
+
alt: "Alt text",
|
|
162
|
+
src: "https://placeimg.com/300/400/arch",
|
|
163
|
+
}}
|
|
152
164
|
>
|
|
153
165
|
<CardHeading
|
|
154
166
|
id="editioncardheading1"
|
|
@@ -202,8 +214,10 @@ describe("Card", () => {
|
|
|
202
214
|
const cardFullClick = () => (
|
|
203
215
|
<Card
|
|
204
216
|
id="fullclick"
|
|
205
|
-
|
|
206
|
-
|
|
217
|
+
imageProps={{
|
|
218
|
+
alt: "Alt text",
|
|
219
|
+
src: "https://placeimg.com/400/200/arch",
|
|
220
|
+
}}
|
|
207
221
|
mainActionLink="http://nypl.org"
|
|
208
222
|
>
|
|
209
223
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
@@ -225,8 +239,10 @@ describe("Card", () => {
|
|
|
225
239
|
const cardImageComponentAndRatio = () => (
|
|
226
240
|
<Card
|
|
227
241
|
id="fullclick"
|
|
228
|
-
|
|
229
|
-
|
|
242
|
+
imageProps={{
|
|
243
|
+
aspectRatio: ImageRatios.ThreeByTwo,
|
|
244
|
+
component: <Image alt="" src="https://placeimg.com/400/200/arch" />,
|
|
245
|
+
}}
|
|
230
246
|
>
|
|
231
247
|
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
232
248
|
The Card Heading
|
|
@@ -234,6 +250,102 @@ describe("Card", () => {
|
|
|
234
250
|
<CardContent>middle column content</CardContent>
|
|
235
251
|
</Card>
|
|
236
252
|
);
|
|
253
|
+
const cardWithRightActions = () => (
|
|
254
|
+
<Card
|
|
255
|
+
id="cardID"
|
|
256
|
+
imageProps={{
|
|
257
|
+
alt: "Alt text",
|
|
258
|
+
src: "https://placeimg.com/400/200/arch",
|
|
259
|
+
}}
|
|
260
|
+
isAlignedRightActions
|
|
261
|
+
>
|
|
262
|
+
<CardHeading level={HeadingLevels.Three} id="heading1">
|
|
263
|
+
The Card Heading
|
|
264
|
+
</CardHeading>
|
|
265
|
+
<CardContent>middle column content</CardContent>
|
|
266
|
+
<CardActions>
|
|
267
|
+
<Button
|
|
268
|
+
onClick={() => {}}
|
|
269
|
+
id="button1"
|
|
270
|
+
buttonType={ButtonTypes.Primary}
|
|
271
|
+
type="submit"
|
|
272
|
+
>
|
|
273
|
+
Example CTA
|
|
274
|
+
</Button>
|
|
275
|
+
</CardActions>
|
|
276
|
+
<CardActions>
|
|
277
|
+
<Button
|
|
278
|
+
onClick={() => {}}
|
|
279
|
+
id="button2"
|
|
280
|
+
buttonType={ButtonTypes.Primary}
|
|
281
|
+
type="submit"
|
|
282
|
+
>
|
|
283
|
+
Example CTA
|
|
284
|
+
</Button>
|
|
285
|
+
</CardActions>
|
|
286
|
+
</Card>
|
|
287
|
+
);
|
|
288
|
+
const cardWithChakraProps = (
|
|
289
|
+
<Card
|
|
290
|
+
id="chakraProps"
|
|
291
|
+
imageProps={{
|
|
292
|
+
alt: "Alt text",
|
|
293
|
+
src: "https://placeimg.com/400/200/arch",
|
|
294
|
+
}}
|
|
295
|
+
p="s"
|
|
296
|
+
color="ui.error.primary"
|
|
297
|
+
>
|
|
298
|
+
<CardHeading
|
|
299
|
+
level={HeadingLevels.Three}
|
|
300
|
+
id="heading1"
|
|
301
|
+
color="ui.error.secondary"
|
|
302
|
+
>
|
|
303
|
+
The Card Heading
|
|
304
|
+
</CardHeading>
|
|
305
|
+
<CardContent p="20px">middle column content</CardContent>
|
|
306
|
+
<CardActions m="20px">
|
|
307
|
+
<Button
|
|
308
|
+
onClick={() => {}}
|
|
309
|
+
id="button1"
|
|
310
|
+
buttonType={ButtonTypes.Primary}
|
|
311
|
+
type="submit"
|
|
312
|
+
>
|
|
313
|
+
Example CTA
|
|
314
|
+
</Button>
|
|
315
|
+
</CardActions>
|
|
316
|
+
</Card>
|
|
317
|
+
);
|
|
318
|
+
const cardWithOtherProps = (
|
|
319
|
+
<Card
|
|
320
|
+
id="otherProps"
|
|
321
|
+
imageProps={{
|
|
322
|
+
alt: "Alt text",
|
|
323
|
+
src: "https://placeimg.com/400/200/arch",
|
|
324
|
+
}}
|
|
325
|
+
data-testid="card-testid"
|
|
326
|
+
>
|
|
327
|
+
<CardHeading
|
|
328
|
+
level={HeadingLevels.Three}
|
|
329
|
+
id="heading1"
|
|
330
|
+
color="ui.error.secondary"
|
|
331
|
+
>
|
|
332
|
+
The Card Heading
|
|
333
|
+
</CardHeading>
|
|
334
|
+
<CardContent data-testid="cardcontent-testid">
|
|
335
|
+
middle column content
|
|
336
|
+
</CardContent>
|
|
337
|
+
<CardActions data-testid="cardaction-testid">
|
|
338
|
+
<Button
|
|
339
|
+
onClick={() => {}}
|
|
340
|
+
id="button1"
|
|
341
|
+
buttonType={ButtonTypes.Primary}
|
|
342
|
+
type="submit"
|
|
343
|
+
>
|
|
344
|
+
Example CTA
|
|
345
|
+
</Button>
|
|
346
|
+
</CardActions>
|
|
347
|
+
</Card>
|
|
348
|
+
);
|
|
237
349
|
let container;
|
|
238
350
|
|
|
239
351
|
it("renders a Card with a header, image, content, and CTAs", () => {
|
|
@@ -303,11 +415,13 @@ describe("Card", () => {
|
|
|
303
415
|
);
|
|
304
416
|
});
|
|
305
417
|
|
|
306
|
-
it("Logs a warning when both `
|
|
418
|
+
it("Logs a warning when both `imageProps.component` and `imageProps.aspectRatio` are passed", () => {
|
|
307
419
|
const warn = jest.spyOn(console, "warn");
|
|
308
420
|
render(cardImageComponentAndRatio());
|
|
309
421
|
expect(warn).toHaveBeenCalledWith(
|
|
310
|
-
"Both `
|
|
422
|
+
"NYPL Reservoir Card: Both the `imageProps.component` and `imageProps.aspectRatio` " +
|
|
423
|
+
"props were set but `imageProps.aspectRatio` will be ignored in favor " +
|
|
424
|
+
"of the aspect ratio on `imageProps.component` prop."
|
|
311
425
|
);
|
|
312
426
|
});
|
|
313
427
|
|
|
@@ -318,6 +432,9 @@ describe("Card", () => {
|
|
|
318
432
|
const withNoContent = renderer.create(cardWithNoContent).toJSON();
|
|
319
433
|
const withNoImage = renderer.create(cardWithNoImage).toJSON();
|
|
320
434
|
const withFullClick = renderer.create(cardFullClick()).toJSON();
|
|
435
|
+
const withRightActions = renderer.create(cardWithRightActions()).toJSON();
|
|
436
|
+
const withChakraProps = renderer.create(cardWithChakraProps).toJSON();
|
|
437
|
+
const withOtherProps = renderer.create(cardWithOtherProps).toJSON();
|
|
321
438
|
|
|
322
439
|
expect(regular).toMatchSnapshot();
|
|
323
440
|
expect(withExtendedStyles).toMatchSnapshot();
|
|
@@ -325,5 +442,8 @@ describe("Card", () => {
|
|
|
325
442
|
expect(withNoContent).toMatchSnapshot();
|
|
326
443
|
expect(withNoImage).toMatchSnapshot();
|
|
327
444
|
expect(withFullClick).toMatchSnapshot();
|
|
445
|
+
expect(withRightActions).toMatchSnapshot();
|
|
446
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
447
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
328
448
|
});
|
|
329
449
|
});
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
3
|
+
chakra,
|
|
4
4
|
LinkBox as ChakraLinkBox,
|
|
5
5
|
LinkOverlay as ChakraLinkOverlay,
|
|
6
6
|
useMultiStyleConfig,
|
|
7
7
|
useStyleConfig,
|
|
8
8
|
} from "@chakra-ui/react";
|
|
9
|
+
import * as React from "react";
|
|
9
10
|
|
|
10
|
-
import {
|
|
11
|
+
import { LayoutTypes } from "../../helpers/enums";
|
|
11
12
|
import Heading from "../Heading/Heading";
|
|
12
|
-
import Image, { ImageProps } from "../Image/Image";
|
|
13
|
+
import Image, { ComponentImageProps, ImageProps } from "../Image/Image";
|
|
13
14
|
import { ImageRatios, ImageSizes } from "../Image/ImageTypes";
|
|
14
|
-
import
|
|
15
|
-
|
|
15
|
+
import useWindowSize from "../../hooks/useWindowSize";
|
|
16
16
|
interface CardBaseProps {
|
|
17
17
|
/** Optional value to control the alignment of the text and elements. */
|
|
18
|
-
|
|
18
|
+
isCentered?: boolean;
|
|
19
19
|
/** Optional value to render the layout in a row or column.
|
|
20
|
-
* Default is `
|
|
21
|
-
layout?:
|
|
20
|
+
* Default is `LayoutTypes.Column`. */
|
|
21
|
+
layout?: LayoutTypes;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
interface CardLinkBoxProps {
|
|
@@ -26,6 +26,12 @@ interface CardLinkBoxProps {
|
|
|
26
26
|
mainActionLink?: string;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
// Used internally only for the `imageProps` prop for the `Card` component.
|
|
30
|
+
interface CardImageProps extends ComponentImageProps {
|
|
31
|
+
/** Optional boolean value to control the position of the `CardImage`. */
|
|
32
|
+
isAtEnd?: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
29
35
|
interface CardActionsProps extends CardBaseProps {
|
|
30
36
|
/** Optional boolean value to control visibility of border on the bottom edge
|
|
31
37
|
* of the card actions element */
|
|
@@ -35,38 +41,29 @@ interface CardActionsProps extends CardBaseProps {
|
|
|
35
41
|
topBorder?: boolean;
|
|
36
42
|
}
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
/** Used only internally for the `CardImage` component. */
|
|
45
|
+
interface CardImageComponentProps extends CardBaseProps, ImageProps {
|
|
39
46
|
/** Optional boolean value to control the position of the `CardImage`. */
|
|
40
|
-
|
|
47
|
+
isAtEnd?: boolean;
|
|
41
48
|
}
|
|
42
49
|
|
|
43
50
|
export interface CardProps extends CardBaseProps, CardLinkBoxProps {
|
|
44
51
|
/** Optional hex color value used to set the card background color. */
|
|
45
52
|
backgroundColor?: string;
|
|
46
|
-
/** Optional boolean value to control the visibility of a border around
|
|
47
|
-
* the card. */
|
|
48
|
-
border?: boolean;
|
|
49
53
|
/** Optional CSS class name to add. */
|
|
50
54
|
className?: string;
|
|
51
55
|
/** Optional hex color value used to override the default text color. */
|
|
52
56
|
foregroundColor?: string;
|
|
53
57
|
/** ID that other components can cross reference for accessibility purposes. */
|
|
54
58
|
id?: string;
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/** Custom image component used in place of DS `Image` component. */
|
|
64
|
-
imageComponent?: JSX.Element;
|
|
65
|
-
/** Optional value to control the size of the `CardImage`. Default value is
|
|
66
|
-
* `ImageSizes.Default`. */
|
|
67
|
-
imageSize?: ImageSizes;
|
|
68
|
-
/** The path to the image displayed within the `Card` component. */
|
|
69
|
-
imageSrc?: string;
|
|
59
|
+
/** Optional boolean value to control the visibility of a border around
|
|
60
|
+
* the card. */
|
|
61
|
+
isBordered?: boolean;
|
|
62
|
+
/** Object used to create and render the `Image` component. */
|
|
63
|
+
imageProps?: CardImageProps;
|
|
64
|
+
/** Set CardActions to the right content side. This only works in
|
|
65
|
+
* the row layout. */
|
|
66
|
+
isAlignedRightActions?: boolean;
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
/**
|
|
@@ -74,31 +71,37 @@ export interface CardProps extends CardBaseProps, CardLinkBoxProps {
|
|
|
74
71
|
* renders an `Image` component but with overriding styles specific to the
|
|
75
72
|
* `Card` component.
|
|
76
73
|
*/
|
|
77
|
-
function CardImage(
|
|
74
|
+
function CardImage(
|
|
75
|
+
props: React.ComponentProps<"img"> & CardImageComponentProps
|
|
76
|
+
) {
|
|
78
77
|
const {
|
|
79
78
|
alt,
|
|
80
|
-
|
|
79
|
+
aspectRatio,
|
|
80
|
+
caption,
|
|
81
81
|
component,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
imageAtEnd,
|
|
82
|
+
credit,
|
|
83
|
+
isAtEnd,
|
|
84
|
+
isCentered,
|
|
86
85
|
layout,
|
|
86
|
+
size,
|
|
87
|
+
src,
|
|
87
88
|
} = props;
|
|
88
89
|
// Additional styles to add to the `Image` component.
|
|
89
90
|
const styles = useStyleConfig("CardImage", {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
imageSize,
|
|
91
|
+
imageIsAtEnd: isAtEnd,
|
|
92
|
+
isCentered,
|
|
93
93
|
layout,
|
|
94
|
+
size,
|
|
94
95
|
});
|
|
95
96
|
return (
|
|
96
97
|
<Box __css={styles}>
|
|
97
98
|
<Image
|
|
98
99
|
alt={alt}
|
|
100
|
+
caption={caption}
|
|
99
101
|
component={component}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
credit={credit}
|
|
103
|
+
aspectRatio={aspectRatio}
|
|
104
|
+
size={size}
|
|
102
105
|
src={src}
|
|
103
106
|
/>
|
|
104
107
|
</Box>
|
|
@@ -106,27 +109,42 @@ function CardImage(props: React.ComponentProps<"img"> & CardImageProps) {
|
|
|
106
109
|
}
|
|
107
110
|
|
|
108
111
|
// CardHeading child-component
|
|
109
|
-
export const CardHeading = Heading;
|
|
112
|
+
export const CardHeading = chakra(Heading);
|
|
110
113
|
|
|
111
114
|
// CardContent child-component
|
|
112
|
-
export
|
|
113
|
-
const { children } = props;
|
|
115
|
+
export const CardContent = chakra((props: React.PropsWithChildren<{}>) => {
|
|
116
|
+
const { children, ...rest } = props;
|
|
114
117
|
const styles = useStyleConfig("CardContent");
|
|
115
|
-
return
|
|
116
|
-
|
|
118
|
+
return (
|
|
119
|
+
children && (
|
|
120
|
+
<Box __css={styles} {...rest}>
|
|
121
|
+
{children}
|
|
122
|
+
</Box>
|
|
123
|
+
)
|
|
124
|
+
);
|
|
125
|
+
});
|
|
117
126
|
|
|
118
127
|
// CardActions child-component
|
|
119
|
-
export
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
export const CardActions = chakra(
|
|
129
|
+
(props: React.PropsWithChildren<CardActionsProps>) => {
|
|
130
|
+
const { bottomBorder, children, isCentered, layout, topBorder, ...rest } =
|
|
131
|
+
props;
|
|
132
|
+
const styles = useStyleConfig("CardActions", {
|
|
133
|
+
bottomBorder,
|
|
134
|
+
isCentered,
|
|
135
|
+
layout,
|
|
136
|
+
topBorder,
|
|
137
|
+
});
|
|
127
138
|
|
|
128
|
-
|
|
129
|
-
|
|
139
|
+
return (
|
|
140
|
+
children && (
|
|
141
|
+
<Box __css={styles} {...rest}>
|
|
142
|
+
{children}
|
|
143
|
+
</Box>
|
|
144
|
+
)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
);
|
|
130
148
|
|
|
131
149
|
/**
|
|
132
150
|
* If `mainActionLink` is passed, then this adds Chakra's `LinkBox` wrapper
|
|
@@ -162,51 +180,79 @@ function CardLinkOverlay({
|
|
|
162
180
|
);
|
|
163
181
|
}
|
|
164
182
|
|
|
165
|
-
export
|
|
183
|
+
export const Card = chakra((props: React.PropsWithChildren<CardProps>) => {
|
|
166
184
|
const {
|
|
167
185
|
backgroundColor,
|
|
168
|
-
border,
|
|
169
|
-
center = false,
|
|
170
186
|
children,
|
|
171
187
|
className,
|
|
172
188
|
foregroundColor,
|
|
173
|
-
id
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
189
|
+
id,
|
|
190
|
+
imageProps = {
|
|
191
|
+
alt: "",
|
|
192
|
+
aspectRatio: ImageRatios.Square,
|
|
193
|
+
caption: undefined,
|
|
194
|
+
component: undefined,
|
|
195
|
+
credit: undefined,
|
|
196
|
+
isAtEnd: false,
|
|
197
|
+
size: ImageSizes.Default,
|
|
198
|
+
src: "",
|
|
199
|
+
},
|
|
200
|
+
isAlignedRightActions = false,
|
|
201
|
+
isBordered,
|
|
202
|
+
isCentered = false,
|
|
203
|
+
layout = LayoutTypes.Column,
|
|
181
204
|
mainActionLink,
|
|
205
|
+
...rest
|
|
182
206
|
} = props;
|
|
183
|
-
const hasImage =
|
|
184
|
-
const
|
|
207
|
+
const hasImage = imageProps.src || imageProps.component;
|
|
208
|
+
const [finalImageSize, setFinalImageSize] = React.useState<ImageSizes>(
|
|
209
|
+
imageProps.size
|
|
210
|
+
);
|
|
211
|
+
const finalImageAspectRatio = imageProps.component
|
|
185
212
|
? ImageRatios.Original
|
|
186
|
-
:
|
|
213
|
+
: imageProps.aspectRatio;
|
|
187
214
|
const customColors = {};
|
|
188
215
|
const cardContents = [];
|
|
216
|
+
const cardRightContents = [];
|
|
217
|
+
const windowDimensions = useWindowSize();
|
|
189
218
|
let cardHeadingCount = 0;
|
|
190
219
|
|
|
191
|
-
if (
|
|
220
|
+
if (imageProps.component && imageProps.aspectRatio !== ImageRatios.Square) {
|
|
192
221
|
console.warn(
|
|
193
|
-
"Both `
|
|
222
|
+
"NYPL Reservoir Card: Both the `imageProps.component` and `imageProps.aspectRatio` " +
|
|
223
|
+
"props were set but `imageProps.aspectRatio` will be ignored in favor " +
|
|
224
|
+
"of the aspect ratio on `imageProps.component` prop."
|
|
194
225
|
);
|
|
195
226
|
}
|
|
196
227
|
|
|
228
|
+
// The `Card`'s image should always display as 100% width on mobile. To
|
|
229
|
+
// achieve this, we set the size to `ImageSizes.Default` only when the
|
|
230
|
+
// viewport is less than "600px". Otherwise, we set the size to
|
|
231
|
+
// the value passed in via `imageSize`.
|
|
232
|
+
React.useEffect(() => {
|
|
233
|
+
if (windowDimensions.width < 600) {
|
|
234
|
+
setFinalImageSize(ImageSizes.Default);
|
|
235
|
+
} else {
|
|
236
|
+
setFinalImageSize(imageProps.size);
|
|
237
|
+
}
|
|
238
|
+
}, [windowDimensions.width, imageProps.size]);
|
|
239
|
+
|
|
197
240
|
backgroundColor && (customColors["backgroundColor"] = backgroundColor);
|
|
198
241
|
foregroundColor && (customColors["color"] = foregroundColor);
|
|
199
242
|
|
|
200
243
|
const styles = useMultiStyleConfig("Card", {
|
|
201
|
-
border,
|
|
202
|
-
center,
|
|
203
244
|
hasImage,
|
|
204
|
-
|
|
245
|
+
imageIsAtEnd: imageProps.isAtEnd,
|
|
246
|
+
isBordered,
|
|
247
|
+
isCentered,
|
|
205
248
|
layout,
|
|
206
249
|
mainActionLink,
|
|
207
250
|
});
|
|
208
251
|
|
|
209
252
|
React.Children.map(children, (child: React.ReactElement, key) => {
|
|
253
|
+
const isCardActions =
|
|
254
|
+
child.type === CardActions || child.props.mdxType === "CardActions";
|
|
255
|
+
|
|
210
256
|
if (child.type === CardHeading || child.props.mdxType === "CardHeading") {
|
|
211
257
|
// If the child is a `CardHeading` component, then we add the
|
|
212
258
|
// `CardLinkOverlay` inside of the `Heading` component and wrap its text.
|
|
@@ -227,7 +273,6 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
227
273
|
...child.props.additionalStyles,
|
|
228
274
|
},
|
|
229
275
|
key,
|
|
230
|
-
center,
|
|
231
276
|
// Override the child text with the potential `CardLinkOverlay`.
|
|
232
277
|
children: newChildren,
|
|
233
278
|
layout,
|
|
@@ -236,12 +281,20 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
236
281
|
cardHeadingCount++;
|
|
237
282
|
} else if (
|
|
238
283
|
child.type === CardContent ||
|
|
239
|
-
child.props.mdxType === "CardContent"
|
|
240
|
-
child.type === CardActions ||
|
|
241
|
-
child.props.mdxType === "CardActions"
|
|
284
|
+
child.props.mdxType === "CardContent"
|
|
242
285
|
) {
|
|
243
|
-
const elem = React.cloneElement(child, { key
|
|
286
|
+
const elem = React.cloneElement(child, { key });
|
|
244
287
|
cardContents.push(elem);
|
|
288
|
+
} else if (isCardActions) {
|
|
289
|
+
const elem = React.cloneElement(child, { key, isCentered, layout });
|
|
290
|
+
|
|
291
|
+
// Only allow `CardActions` to align to the right of the main
|
|
292
|
+
// `CardContent` component when in the row layout.
|
|
293
|
+
if (isAlignedRightActions && layout === LayoutTypes.Row) {
|
|
294
|
+
cardRightContents.push(elem);
|
|
295
|
+
} else {
|
|
296
|
+
cardContents.push(elem);
|
|
297
|
+
}
|
|
245
298
|
}
|
|
246
299
|
});
|
|
247
300
|
|
|
@@ -254,22 +307,35 @@ export default function Card(props: React.PropsWithChildren<CardProps>) {
|
|
|
254
307
|
...styles,
|
|
255
308
|
...customColors,
|
|
256
309
|
}}
|
|
310
|
+
{...rest}
|
|
257
311
|
>
|
|
258
312
|
{hasImage && (
|
|
259
313
|
<CardImage
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
314
|
+
alt={imageProps.alt}
|
|
315
|
+
aspectRatio={finalImageAspectRatio}
|
|
316
|
+
caption={imageProps.caption}
|
|
317
|
+
component={imageProps.component}
|
|
318
|
+
credit={imageProps.credit}
|
|
319
|
+
isAtEnd={imageProps.isAtEnd}
|
|
266
320
|
layout={layout}
|
|
321
|
+
size={finalImageSize}
|
|
322
|
+
src={imageProps.src ? imageProps.src : undefined}
|
|
267
323
|
/>
|
|
268
324
|
)}
|
|
269
325
|
<Box className="card-body" __css={styles.body}>
|
|
270
326
|
{cardContents}
|
|
271
327
|
</Box>
|
|
328
|
+
{cardRightContents.length ? (
|
|
329
|
+
<Box
|
|
330
|
+
className="card-right"
|
|
331
|
+
__css={{ ...styles.body, ...styles.actions }}
|
|
332
|
+
>
|
|
333
|
+
{cardRightContents}
|
|
334
|
+
</Box>
|
|
335
|
+
) : null}
|
|
272
336
|
</Box>
|
|
273
337
|
</CardLinkBox>
|
|
274
338
|
);
|
|
275
|
-
}
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
export default Card;
|