@nypl/design-system-react-components 0.25.1 → 0.25.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +118 -1
- package/README.md +98 -50
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
- package/dist/components/Button/Button.d.ts +13 -8
- package/dist/components/Button/ButtonTypes.d.ts +2 -1
- package/dist/components/Card/Card.d.ts +36 -52
- package/dist/components/Card/CardTypes.d.ts +0 -15
- package/dist/components/Checkbox/Checkbox.d.ts +17 -13
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
- package/dist/components/DatePicker/DatePicker.d.ts +36 -34
- package/dist/components/Fieldset/Fieldset.d.ts +25 -0
- package/dist/components/Heading/Heading.d.ts +4 -4
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
- package/dist/components/Icons/Icon.d.ts +8 -0
- package/dist/components/Icons/IconSvgs.d.ts +11 -0
- package/dist/components/Icons/IconTypes.d.ts +11 -0
- package/dist/components/Image/Image.d.ts +19 -9
- package/dist/components/Image/ImageTypes.d.ts +20 -0
- package/dist/components/Link/Link.d.ts +4 -0
- package/dist/components/List/List.d.ts +19 -14
- package/dist/components/Notification/Notification.d.ts +37 -16
- package/dist/components/Pagination/Pagination.d.ts +16 -13
- package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
- package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
- package/dist/components/Radio/Radio.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
- package/dist/components/SearchBar/SearchBar.d.ts +3 -3
- package/dist/components/Select/Select.d.ts +2 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
- package/dist/components/Slider/Slider.d.ts +57 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/TextInput/TextInput.d.ts +12 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
- package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
- package/dist/design-system-react-components.cjs.development.js +6131 -3715
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +6124 -3699
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +16 -0
- package/dist/hooks/useNYPLTheme.d.ts +54 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +13 -8
- package/dist/resources.scss +180 -170
- package/dist/styles.css +1 -1
- package/dist/theme/components/button.d.ts +22 -8
- package/dist/theme/components/card.d.ts +168 -0
- package/dist/theme/components/checkbox.d.ts +5 -1
- package/dist/theme/components/checkboxGroup.d.ts +12 -0
- package/dist/theme/components/componentWrapper.d.ts +11 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +27 -0
- package/dist/theme/components/global.d.ts +23 -13
- package/dist/theme/components/globalMixins.d.ts +9 -1
- package/dist/theme/components/heading.d.ts +5 -0
- package/dist/theme/components/helperErrorText.d.ts +10 -0
- package/dist/theme/components/hero.d.ts +1 -0
- package/dist/theme/components/horizontalRule.d.ts +14 -0
- package/dist/theme/components/image.d.ts +31 -0
- package/dist/theme/components/label.d.ts +5 -3
- package/dist/theme/components/link.d.ts +4 -0
- package/dist/theme/components/list.d.ts +89 -0
- package/dist/theme/components/notification.d.ts +75 -0
- package/dist/theme/components/pagination.d.ts +19 -0
- package/dist/theme/components/progressIndicator.d.ts +50 -0
- package/dist/theme/components/radioGroup.d.ts +12 -0
- package/dist/theme/components/select.d.ts +11 -2
- package/dist/theme/components/skeletonLoader.d.ts +98 -0
- package/dist/theme/components/slider.d.ts +51 -0
- package/dist/theme/components/tabs.d.ts +54 -3
- package/dist/theme/components/textInput.d.ts +8 -1
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +8 -8
- package/dist/theme/foundations/global.d.ts +6 -1
- package/dist/theme/foundations/radii.d.ts +5 -0
- package/dist/theme/foundations/spacing.d.ts +16 -16
- package/package.json +72 -83
- package/src/__tests__/setup.ts +2 -2
- package/src/components/Accordion/Accordion.stories.mdx +39 -44
- package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +2 -1
- package/src/components/Autosuggest/_Autosuggest.scss +5 -5
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +14 -10
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +23 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +199 -1
- package/src/components/Button/Button.stories.mdx +15 -10
- package/src/components/Button/Button.test.tsx +21 -7
- package/src/components/Button/Button.tsx +22 -34
- package/src/components/Button/ButtonTypes.tsx +1 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
- package/src/components/Card/Card.stories.mdx +296 -259
- package/src/components/Card/Card.test.tsx +156 -84
- package/src/components/Card/Card.tsx +195 -145
- package/src/components/Card/CardTypes.tsx +0 -17
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
- package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
- package/src/components/CardEdition/_CardEdition.scss +22 -23
- package/src/components/Chakra/Box.stories.mdx +15 -16
- package/src/components/Chakra/Center.stories.mdx +31 -16
- package/src/components/Chakra/Grid.stories.mdx +28 -15
- package/src/components/Chakra/Stack.stories.mdx +35 -18
- package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
- package/src/components/Checkbox/Checkbox.test.tsx +47 -2
- package/src/components/Checkbox/Checkbox.tsx +39 -33
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +29 -2
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -18
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +47 -81
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
- package/src/components/DatePicker/DatePicker.test.tsx +264 -64
- package/src/components/DatePicker/DatePicker.tsx +159 -128
- package/src/components/DatePicker/_DatePicker.scss +33 -67
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
- package/src/components/Fieldset/Fieldset.test.tsx +125 -0
- package/src/components/Fieldset/Fieldset.tsx +52 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
- package/src/components/Form/Form.stories.mdx +24 -6
- package/src/components/Form/Form.test.tsx +1 -1
- package/src/components/Form/Form.tsx +1 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
- package/src/components/Grid/SimpleGrid.test.tsx +4 -4
- package/src/components/Heading/Heading.stories.mdx +3 -4
- package/src/components/Heading/Heading.tsx +5 -5
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
- package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
- package/src/components/Hero/Hero.stories.mdx +12 -2
- package/src/components/Hero/Hero.tsx +1 -1
- package/src/components/Hero/HeroTypes.tsx +1 -0
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
- package/src/components/Icons/Icon.stories.mdx +12 -4
- package/src/components/Icons/Icon.test.tsx +18 -0
- package/src/components/Icons/Icon.tsx +16 -1
- package/src/components/Icons/IconSvgs.tsx +22 -0
- package/src/components/Icons/IconTypes.tsx +11 -0
- package/src/components/Image/Image.stories.mdx +220 -0
- package/src/components/Image/Image.test.tsx +131 -29
- package/src/components/Image/Image.tsx +84 -56
- package/src/components/Image/ImageTypes.ts +22 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
- package/src/components/Input/Input.stories.tsx +23 -67
- package/src/components/Input/Input.test.tsx +4 -4
- package/src/components/Input/_Input.scss +23 -14
- package/src/components/Link/Link.tsx +4 -1
- package/src/components/List/List.stories.mdx +124 -49
- package/src/components/List/List.test.tsx +142 -63
- package/src/components/List/List.tsx +89 -93
- package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
- package/src/components/Modal/Modal.stories.mdx +3 -3
- package/src/components/Modal/_Modal.scss +2 -2
- package/src/components/Notification/Notification.stories.mdx +109 -112
- package/src/components/Notification/Notification.test.tsx +99 -110
- package/src/components/Notification/Notification.tsx +156 -159
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
- package/src/components/Pagination/Pagination.stories.mdx +26 -27
- package/src/components/Pagination/Pagination.stories.tsx +11 -16
- package/src/components/Pagination/Pagination.test.tsx +276 -146
- package/src/components/Pagination/Pagination.tsx +174 -154
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
- package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
- package/src/components/Radio/Radio.test.tsx +20 -4
- package/src/components/Radio/Radio.tsx +6 -3
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
- package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
- package/src/components/RadioGroup/RadioGroup.tsx +19 -19
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
- package/src/components/SearchBar/SearchBar.Test.tsx +20 -1
- package/src/components/SearchBar/SearchBar.stories.mdx +113 -8
- package/src/components/SearchBar/SearchBar.tsx +20 -10
- package/src/components/Select/Select.test.tsx +12 -0
- package/src/components/Select/Select.tsx +5 -2
- package/src/components/Select/SelectTypes.tsx +1 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
- package/src/components/Slider/Slider.stories.mdx +529 -0
- package/src/components/Slider/Slider.test.tsx +653 -0
- package/src/components/Slider/Slider.tsx +303 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
- package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
- package/src/components/StyleGuide/Buttons.stories.mdx +89 -73
- package/src/components/StyleGuide/ColorCard.tsx +46 -0
- package/src/components/StyleGuide/Colors.stories.mdx +171 -311
- package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
- package/src/components/StyleGuide/Forms.stories.mdx +9 -7
- package/src/components/StyleGuide/Iconography.stories.mdx +85 -91
- package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
- package/src/components/StyleGuide/Typography.stories.mdx +202 -189
- package/src/components/StyleGuide/UIDocCard.tsx +1 -1
- package/src/components/Tabs/Tabs.stories.mdx +73 -11
- package/src/components/Tabs/Tabs.tsx +87 -64
- package/src/components/Template/Template.stories.mdx +25 -27
- package/src/components/TextInput/TextInput.stories.mdx +1 -1
- package/src/components/TextInput/TextInput.test.tsx +22 -2
- package/src/components/TextInput/TextInput.tsx +28 -8
- package/src/components/TextInput/TextInputTypes.tsx +2 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
- package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
- package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
- package/src/docs/Chakra.stories.mdx +244 -63
- package/src/docs/Intro.stories.mdx +5 -2
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.ts +34 -0
- package/src/hooks/useNYPLTheme.ts +67 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +22 -19
- package/src/resources.scss +5 -5
- package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
- package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
- package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
- package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
- package/src/styles/base/_place-holder.scss +14 -3
- package/src/styles/{03-space → space}/_space-inline.scss +14 -14
- package/src/styles/{03-space → space}/_space-inset.scss +10 -10
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +13 -60
- package/src/theme/components/button.ts +21 -15
- package/src/theme/components/card.ts +174 -0
- package/src/theme/components/checkbox.ts +8 -3
- package/src/theme/components/checkboxGroup.ts +8 -0
- package/src/theme/components/componentWrapper.ts +10 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +18 -0
- package/src/theme/components/global.ts +26 -15
- package/src/theme/components/globalMixins.ts +9 -1
- package/src/theme/components/heading.ts +10 -5
- package/src/theme/components/helperErrorText.ts +9 -0
- package/src/theme/components/hero.ts +4 -3
- package/src/theme/components/horizontalRule.ts +13 -0
- package/src/theme/components/icon.ts +9 -9
- package/src/theme/components/image.ts +116 -0
- package/src/theme/components/label.ts +3 -10
- package/src/theme/components/link.ts +5 -1
- package/src/theme/components/list.ts +73 -0
- package/src/theme/components/notification.ts +93 -0
- package/src/theme/components/pagination.ts +20 -0
- package/src/theme/components/progressIndicator.ts +62 -0
- package/src/theme/components/radio.ts +2 -2
- package/src/theme/components/radioGroup.ts +8 -0
- package/src/theme/components/select.ts +6 -3
- package/src/theme/components/skeletonLoader.ts +107 -0
- package/src/theme/components/slider.ts +79 -0
- package/src/theme/components/statusBadge.ts +1 -2
- package/src/theme/components/tabs.ts +49 -19
- package/src/theme/components/template.ts +8 -8
- package/src/theme/components/textInput.ts +5 -4
- package/src/theme/components/videoPlayer.ts +49 -0
- package/src/theme/foundations/breakpoints.ts +8 -8
- package/src/theme/foundations/global.ts +6 -1
- package/src/theme/foundations/radii.ts +6 -0
- package/src/theme/foundations/spacing.ts +24 -24
- package/src/theme/index.ts +41 -10
- package/src/utils/componentCategories.ts +4 -3
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
- package/dist/components/Image/Image.stories.d.ts +0 -18
- package/dist/components/List/List.stories.d.ts +0 -7
- package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
- package/dist/theme/components/customRadioGroup.d.ts +0 -18
- package/src/components/Button/_Button.scss +0 -32
- package/src/components/Card/_Card.scss +0 -308
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
- package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
- package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
- package/src/components/Image/Image.stories.tsx +0 -54
- package/src/components/Image/_Image.scss +0 -38
- package/src/components/List/List.stories.tsx +0 -139
- package/src/components/List/_List.scss +0 -76
- package/src/components/Notification/_Notification.scss +0 -110
- package/src/components/Pagination/_Pagination.scss +0 -40
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
- package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
- package/src/styles/01-colors/_colors-brand.scss +0 -62
- package/src/styles/01-colors/_colors-utility.scss +0 -67
- package/src/styles/02-typography/_type-scale.css +0 -11
- package/src/styles/02-typography/_type-weight.css +0 -7
- package/src/styles/02-typography/_typefaces.css +0 -4
- package/src/styles/03-space/_space-stack.scss +0 -116
- package/src/styles/03-space/_space.css +0 -30
- package/src/styles/base/_card-grid.scss +0 -78
- package/src/styles/base/_typography.scss +0 -11
- package/src/theme/components/customCheckboxGroup.ts +0 -12
- package/src/theme/components/customRadioGroup.ts +0 -12
|
@@ -3,18 +3,18 @@ import {
|
|
|
3
3
|
Story,
|
|
4
4
|
Canvas,
|
|
5
5
|
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
6
|
Description,
|
|
8
7
|
} from "@storybook/addon-docs/blocks";
|
|
9
8
|
import { withDesign } from "storybook-addon-designs";
|
|
9
|
+
import { action } from "@storybook/addon-actions";
|
|
10
10
|
|
|
11
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
11
12
|
import SkeletonLoader from "./SkeletonLoader";
|
|
12
13
|
import {
|
|
13
14
|
SkeletonLoaderLayouts,
|
|
14
15
|
SkeletonLoaderImageRatios,
|
|
15
16
|
} from "./SkeletonLoaderTypes";
|
|
16
|
-
import
|
|
17
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
17
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
18
18
|
|
|
19
19
|
<Meta
|
|
20
20
|
title={getCategory("SkeletonLoader")}
|
|
@@ -29,33 +29,15 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
29
29
|
jest: ["SkeletonLoader.test.tsx"],
|
|
30
30
|
}}
|
|
31
31
|
argTypes={{
|
|
32
|
-
attributes: { table: { disable: true } },
|
|
33
32
|
className: { table: { disable: true } },
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
table: { defaultValue: { summary: "true" } },
|
|
43
|
-
},
|
|
44
|
-
showContent: {
|
|
45
|
-
table: { defaultValue: { summary: "true" } },
|
|
46
|
-
},
|
|
47
|
-
showButton: {
|
|
48
|
-
table: { defaultValue: { summary: "false" } },
|
|
49
|
-
},
|
|
50
|
-
headingSize: {
|
|
51
|
-
table: { defaultValue: { summary: "1" } },
|
|
52
|
-
},
|
|
53
|
-
contentSize: {
|
|
54
|
-
table: { defaultValue: { summary: "3" } },
|
|
55
|
-
},
|
|
56
|
-
imageAspectRatio: {
|
|
57
|
-
table: { defaultValue: { summary: "square" } },
|
|
58
|
-
},
|
|
33
|
+
contentSize: { table: { defaultValue: { summary: "3" } } },
|
|
34
|
+
headingSize: { table: { defaultValue: { summary: "1" } } },
|
|
35
|
+
imageAspectRatio: { table: { defaultValue: { summary: "square" } } },
|
|
36
|
+
layout: { table: { defaultValue: { summary: "column" } } },
|
|
37
|
+
showButton: { table: { defaultValue: { summary: "false" } } },
|
|
38
|
+
showContent: { table: { defaultValue: { summary: "true" } } },
|
|
39
|
+
showHeading: { table: { defaultValue: { summary: "true" } } },
|
|
40
|
+
showImage: { table: { defaultValue: { summary: "true" } } },
|
|
59
41
|
}}
|
|
60
42
|
/>
|
|
61
43
|
|
|
@@ -64,41 +46,34 @@ import { getCategory } from "../../utils/componentCategories";
|
|
|
64
46
|
| Component Version | DS Version |
|
|
65
47
|
| ----------------- | ---------- |
|
|
66
48
|
| Added | `0.17.3` |
|
|
67
|
-
| Latest | `0.
|
|
49
|
+
| Latest | `0.25.3` |
|
|
68
50
|
|
|
69
51
|
<Description of={SkeletonLoader} />
|
|
70
52
|
|
|
71
|
-
The `
|
|
72
|
-
|
|
73
|
-
`SkeletonLoader` can be customized.
|
|
53
|
+
The `layout`, `width`, and placeholder elements within the `SkeletonLoader` can
|
|
54
|
+
be customized.
|
|
74
55
|
|
|
75
|
-
Please note that the initial rendering below has the `width` prop set to `300px
|
|
76
|
-
The default value is `100%`.
|
|
56
|
+
Please note that the initial rendering below has the `width` prop set to `300px`
|
|
57
|
+
to better view the example. The default value is `100%`.
|
|
77
58
|
|
|
78
|
-
<
|
|
59
|
+
<Canvas withToolbar>
|
|
79
60
|
<Story
|
|
80
|
-
name="
|
|
61
|
+
name="Basic with Props"
|
|
81
62
|
args={{
|
|
82
63
|
width: "300px",
|
|
83
64
|
}}
|
|
84
65
|
>
|
|
85
66
|
{(args) => <SkeletonLoader {...args} />}
|
|
86
67
|
</Story>
|
|
87
|
-
</
|
|
68
|
+
</Canvas>
|
|
88
69
|
|
|
89
|
-
<ArgsTable story="
|
|
70
|
+
<ArgsTable story="Basic with Props" />
|
|
90
71
|
|
|
91
72
|
# Card Placeholders in a Grid
|
|
92
73
|
|
|
93
|
-
<
|
|
74
|
+
<Canvas>
|
|
94
75
|
<Story name="Placeholders in a Grid">
|
|
95
|
-
<
|
|
96
|
-
style={{
|
|
97
|
-
display: "grid",
|
|
98
|
-
gap: "2rem",
|
|
99
|
-
gridTemplateColumns: "repeat(3, 1fr)",
|
|
100
|
-
}}
|
|
101
|
-
>
|
|
76
|
+
<SimpleGrid columns={3}>
|
|
102
77
|
<SkeletonLoader
|
|
103
78
|
imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
|
|
104
79
|
border
|
|
@@ -123,26 +98,20 @@ The default value is `100%`.
|
|
|
123
98
|
imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
|
|
124
99
|
border
|
|
125
100
|
/>
|
|
126
|
-
</
|
|
101
|
+
</SimpleGrid>
|
|
127
102
|
</Story>
|
|
128
|
-
</
|
|
103
|
+
</Canvas>
|
|
129
104
|
|
|
130
105
|
# Text Placeholders in a List
|
|
131
106
|
|
|
132
|
-
<
|
|
107
|
+
<Canvas>
|
|
133
108
|
<Story name="Placeholders in a List">
|
|
134
|
-
<
|
|
135
|
-
style={{
|
|
136
|
-
display: "grid",
|
|
137
|
-
gap: "2rem",
|
|
138
|
-
gridTemplateColumns: "repeat(1, 1fr)",
|
|
139
|
-
}}
|
|
140
|
-
>
|
|
109
|
+
<SimpleGrid columns={1}>
|
|
141
110
|
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
|
|
142
111
|
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
|
|
143
112
|
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
|
|
144
113
|
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
|
|
145
114
|
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
|
|
146
|
-
</
|
|
115
|
+
</SimpleGrid>
|
|
147
116
|
</Story>
|
|
148
|
-
</
|
|
117
|
+
</Canvas>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { render } from "@testing-library/react";
|
|
3
3
|
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
4
5
|
|
|
5
6
|
import SkeletonLoader from "./SkeletonLoader";
|
|
6
7
|
import {
|
|
@@ -16,189 +17,108 @@ describe("SkeletonLoader Accessibility", () => {
|
|
|
16
17
|
});
|
|
17
18
|
|
|
18
19
|
describe("SkeletonLoader", () => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
27
|
-
expect(container.querySelector(".skeleton-loader")).toHaveAttribute(
|
|
28
|
-
"class",
|
|
29
|
-
"skeleton-loader skeleton-loader--column "
|
|
30
|
-
);
|
|
31
|
-
expect(container.querySelector(".skeleton-loader")).not.toHaveAttribute(
|
|
32
|
-
"class",
|
|
33
|
-
"skeleton-loader skeleton-loader--portrait "
|
|
34
|
-
);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("renders column layout", () => {
|
|
38
|
-
const utils = render(
|
|
39
|
-
<SkeletonLoader layout={SkeletonLoaderLayouts.Column} />
|
|
40
|
-
);
|
|
41
|
-
container = utils.container;
|
|
42
|
-
|
|
43
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
44
|
-
expect(
|
|
45
|
-
container.querySelector(".skeleton-loader--column")
|
|
46
|
-
).toBeInTheDocument();
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it("renders row layout", () => {
|
|
50
|
-
const utils = render(
|
|
51
|
-
<SkeletonLoader layout={SkeletonLoaderLayouts.Row} />
|
|
52
|
-
);
|
|
53
|
-
container = utils.container;
|
|
54
|
-
|
|
55
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
56
|
-
expect(
|
|
57
|
-
container.querySelector(".skeleton-loader--row")
|
|
58
|
-
).toBeInTheDocument();
|
|
59
|
-
});
|
|
20
|
+
it("renders default layout", () => {
|
|
21
|
+
const { container } = render(
|
|
22
|
+
<SkeletonLoader className="skeleton-loader" />
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
60
26
|
});
|
|
61
27
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
expect(
|
|
72
|
-
container.querySelector(".skeleton-loader-heading")
|
|
73
|
-
).toBeInTheDocument();
|
|
74
|
-
expect(
|
|
75
|
-
container.querySelector(".skeleton-loader-content")
|
|
76
|
-
).toBeInTheDocument();
|
|
77
|
-
expect(
|
|
78
|
-
container.querySelector(".skeleton-loader-button")
|
|
79
|
-
).not.toBeInTheDocument();
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it("renders without image", () => {
|
|
83
|
-
const utils = render(<SkeletonLoader showImage={false} />);
|
|
84
|
-
container = utils.container;
|
|
85
|
-
|
|
86
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
87
|
-
expect(
|
|
88
|
-
container.querySelector(".skeleton-loader-image")
|
|
89
|
-
).not.toBeInTheDocument();
|
|
90
|
-
expect(
|
|
91
|
-
container.querySelector(".skeleton-loader-heading")
|
|
92
|
-
).toBeInTheDocument();
|
|
93
|
-
expect(
|
|
94
|
-
container.querySelector(".skeleton-loader-content")
|
|
95
|
-
).toBeInTheDocument();
|
|
96
|
-
expect(
|
|
97
|
-
container.querySelector(".skeleton-loader-button")
|
|
98
|
-
).not.toBeInTheDocument();
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it("renders without heading", () => {
|
|
102
|
-
const utils = render(<SkeletonLoader showHeading={false} />);
|
|
103
|
-
container = utils.container;
|
|
104
|
-
|
|
105
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
106
|
-
expect(
|
|
107
|
-
container.querySelector(".skeleton-loader-image")
|
|
108
|
-
).toBeInTheDocument();
|
|
109
|
-
expect(
|
|
110
|
-
container.querySelector(".skeleton-loader-heading")
|
|
111
|
-
).not.toBeInTheDocument();
|
|
112
|
-
expect(
|
|
113
|
-
container.querySelector(".skeleton-loader-content")
|
|
114
|
-
).toBeInTheDocument();
|
|
115
|
-
expect(
|
|
116
|
-
container.querySelector(".skeleton-loader-button")
|
|
117
|
-
).not.toBeInTheDocument();
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("renders without content", () => {
|
|
121
|
-
const utils = render(<SkeletonLoader showContent={false} />);
|
|
122
|
-
container = utils.container;
|
|
123
|
-
|
|
124
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
125
|
-
expect(
|
|
126
|
-
container.querySelector(".skeleton-loader-image")
|
|
127
|
-
).toBeInTheDocument();
|
|
128
|
-
expect(
|
|
129
|
-
container.querySelector(".skeleton-loader-heading")
|
|
130
|
-
).toBeInTheDocument();
|
|
131
|
-
expect(
|
|
132
|
-
container.querySelector(".skeleton-loader-content")
|
|
133
|
-
).not.toBeInTheDocument();
|
|
134
|
-
expect(
|
|
135
|
-
container.querySelector(".skeleton-loader-button")
|
|
136
|
-
).not.toBeInTheDocument();
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
it("renders with button", () => {
|
|
140
|
-
const utils = render(<SkeletonLoader showButton={true} />);
|
|
141
|
-
container = utils.container;
|
|
142
|
-
|
|
143
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
144
|
-
expect(
|
|
145
|
-
container.querySelector(".skeleton-loader-image")
|
|
146
|
-
).toBeInTheDocument();
|
|
147
|
-
expect(
|
|
148
|
-
container.querySelector(".skeleton-loader-heading")
|
|
149
|
-
).toBeInTheDocument();
|
|
150
|
-
expect(
|
|
151
|
-
container.querySelector(".skeleton-loader-content")
|
|
152
|
-
).toBeInTheDocument();
|
|
153
|
-
expect(
|
|
154
|
-
container.querySelector(".skeleton-loader-button")
|
|
155
|
-
).toBeInTheDocument();
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it("renders with border", () => {
|
|
159
|
-
const utils = render(<SkeletonLoader border />);
|
|
160
|
-
container = utils.container;
|
|
161
|
-
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
162
|
-
expect(
|
|
163
|
-
container.querySelector(".skeleton-loader--border")
|
|
164
|
-
).toBeInTheDocument();
|
|
165
|
-
});
|
|
28
|
+
it("renders in the column or row layout", () => {
|
|
29
|
+
const { container, rerender } = render(
|
|
30
|
+
<SkeletonLoader layout={SkeletonLoaderLayouts.Column} />
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
expect(container.querySelector(".column")).toBeInTheDocument();
|
|
34
|
+
|
|
35
|
+
rerender(<SkeletonLoader layout={SkeletonLoaderLayouts.Row} />);
|
|
36
|
+
expect(container.querySelector(".row")).toBeInTheDocument();
|
|
166
37
|
});
|
|
167
38
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
39
|
+
it("renders default elements", () => {
|
|
40
|
+
const { container } = render(<SkeletonLoader />);
|
|
41
|
+
|
|
42
|
+
// By default, the `SkeletonLoader` renders one image, one heading, and
|
|
43
|
+
// three content elements.
|
|
44
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(5);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("renders without image", () => {
|
|
48
|
+
const { container } = render(<SkeletonLoader showImage={false} />);
|
|
49
|
+
|
|
50
|
+
// Only one image is rendered by default.
|
|
51
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("renders without heading", () => {
|
|
55
|
+
const { container } = render(<SkeletonLoader showHeading={false} />);
|
|
56
|
+
|
|
57
|
+
// Only one heading is rendered by default.
|
|
58
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("renders without content", () => {
|
|
62
|
+
const { container } = render(<SkeletonLoader showContent={false} />);
|
|
63
|
+
|
|
64
|
+
// Three content placeholders are rendered by default.
|
|
65
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(2);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("renders with button", () => {
|
|
69
|
+
const { container } = render(<SkeletonLoader showButton={true} />);
|
|
70
|
+
|
|
71
|
+
// Only one button is rendered by default.
|
|
72
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(6);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("renders the UI snapshot correctly", () => {
|
|
76
|
+
const basic = renderer.create(<SkeletonLoader />).toJSON();
|
|
77
|
+
const rowLayout = renderer
|
|
78
|
+
.create(<SkeletonLoader layout={SkeletonLoaderLayouts.Row} />)
|
|
79
|
+
.toJSON();
|
|
80
|
+
const columnLayout = renderer
|
|
81
|
+
.create(<SkeletonLoader layout={SkeletonLoaderLayouts.Column} />)
|
|
82
|
+
.toJSON();
|
|
83
|
+
const noImage = renderer
|
|
84
|
+
.create(<SkeletonLoader showImage={false} />)
|
|
85
|
+
.toJSON();
|
|
86
|
+
const noHeading = renderer
|
|
87
|
+
.create(<SkeletonLoader showHeading={false} />)
|
|
88
|
+
.toJSON();
|
|
89
|
+
const noContent = renderer
|
|
90
|
+
.create(<SkeletonLoader showContent={false} />)
|
|
91
|
+
.toJSON();
|
|
92
|
+
const withButton = renderer
|
|
93
|
+
.create(<SkeletonLoader showButton={true} />)
|
|
94
|
+
.toJSON();
|
|
95
|
+
const landscape = renderer
|
|
96
|
+
.create(
|
|
193
97
|
<SkeletonLoader
|
|
194
98
|
imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
|
|
195
99
|
/>
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
)
|
|
202
|
-
|
|
100
|
+
)
|
|
101
|
+
.toJSON();
|
|
102
|
+
const portrait = renderer
|
|
103
|
+
.create(
|
|
104
|
+
<SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Portrait} />
|
|
105
|
+
)
|
|
106
|
+
.toJSON();
|
|
107
|
+
const square = renderer
|
|
108
|
+
.create(
|
|
109
|
+
<SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Square} />
|
|
110
|
+
)
|
|
111
|
+
.toJSON();
|
|
112
|
+
|
|
113
|
+
expect(basic).toMatchSnapshot();
|
|
114
|
+
expect(rowLayout).toMatchSnapshot();
|
|
115
|
+
expect(columnLayout).toMatchSnapshot();
|
|
116
|
+
expect(noImage).toMatchSnapshot();
|
|
117
|
+
expect(noHeading).toMatchSnapshot();
|
|
118
|
+
expect(noContent).toMatchSnapshot();
|
|
119
|
+
expect(withButton).toMatchSnapshot();
|
|
120
|
+
expect(landscape).toMatchSnapshot();
|
|
121
|
+
expect(portrait).toMatchSnapshot();
|
|
122
|
+
expect(square).toMatchSnapshot();
|
|
203
123
|
});
|
|
204
124
|
});
|
|
@@ -1,42 +1,51 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Skeleton as ChakraSkeleton,
|
|
5
|
+
useMultiStyleConfig,
|
|
6
|
+
} from "@chakra-ui/react";
|
|
7
|
+
|
|
3
8
|
import {
|
|
4
9
|
SkeletonLoaderImageRatios,
|
|
5
10
|
SkeletonLoaderLayouts,
|
|
6
11
|
} from "./SkeletonLoaderTypes";
|
|
7
12
|
|
|
8
13
|
export interface SkeletonLoaderProps {
|
|
9
|
-
/** Optional boolean value to control visibility of border around skeleton loader */
|
|
14
|
+
/** Optional boolean value to control visibility of border around skeleton loader. */
|
|
10
15
|
border?: boolean;
|
|
11
|
-
/**
|
|
16
|
+
/** Additional class name for the Skeleton component. */
|
|
12
17
|
className?: string;
|
|
13
|
-
/** Optional numeric value to control the number of lines for content placeholder; default value is `3
|
|
18
|
+
/** Optional numeric value to control the number of lines for content placeholder; default value is `3`. */
|
|
14
19
|
contentSize?: number;
|
|
15
|
-
/** Optional numeric value to control the number of lines for heading placeholder; default value is `1
|
|
20
|
+
/** Optional numeric value to control the number of lines for heading placeholder; default value is `1`. */
|
|
16
21
|
headingSize?: number;
|
|
17
|
-
/** Optional value to control the aspect ratio of the image placeholder; default value is `square
|
|
22
|
+
/** Optional value to control the aspect ratio of the image placeholder; default value is `square`. */
|
|
18
23
|
imageAspectRatio?: SkeletonLoaderImageRatios;
|
|
19
|
-
/** Optional value to control the position of the image placeholder; default value is `column
|
|
24
|
+
/** Optional value to control the position of the image placeholder; default value is `column`. */
|
|
20
25
|
layout?: SkeletonLoaderLayouts;
|
|
21
|
-
/**
|
|
22
|
-
modifiers?: string[];
|
|
23
|
-
/** Optional boolean value to control visibility of button placeholder */
|
|
26
|
+
/** Optional boolean value to control visibility of button placeholder. */
|
|
24
27
|
showButton?: boolean;
|
|
25
|
-
/** Optional boolean value to control visibility of content placeholder */
|
|
28
|
+
/** Optional boolean value to control visibility of content placeholder. */
|
|
26
29
|
showContent?: boolean;
|
|
27
|
-
/** Optional boolean value to control visibility of
|
|
28
|
-
showImage?: boolean;
|
|
29
|
-
/** Optional boolean value to control visibility of heading placeholder */
|
|
30
|
+
/** Optional boolean value to control visibility of heading placeholder. */
|
|
30
31
|
showHeading?: boolean;
|
|
31
|
-
/** Optional
|
|
32
|
+
/** Optional boolean value to control visibility of image placeholder. */
|
|
33
|
+
showImage?: boolean;
|
|
34
|
+
/** Optional width value. This value should be entered with the same
|
|
35
|
+
* formatting as a CSS width attribute (ex. `50%`, `640px`, `20rem`).
|
|
36
|
+
* If omitted, the skeleton loader will have a default width of 100%. */
|
|
32
37
|
width?: string;
|
|
33
38
|
}
|
|
34
39
|
|
|
40
|
+
/**
|
|
41
|
+
* The `SkeletonLoader` component renders a placeholder to be used while
|
|
42
|
+
* dynamic content is loading.
|
|
43
|
+
*/
|
|
35
44
|
export default function SkeletonLoader(
|
|
36
45
|
props: React.PropsWithChildren<SkeletonLoaderProps>
|
|
37
46
|
) {
|
|
38
47
|
const {
|
|
39
|
-
border,
|
|
48
|
+
border = false,
|
|
40
49
|
className,
|
|
41
50
|
contentSize = 3,
|
|
42
51
|
headingSize = 1,
|
|
@@ -44,70 +53,64 @@ export default function SkeletonLoader(
|
|
|
44
53
|
layout = SkeletonLoaderLayouts.Column,
|
|
45
54
|
showButton = false,
|
|
46
55
|
showContent = true,
|
|
47
|
-
showImage = true,
|
|
48
56
|
showHeading = true,
|
|
57
|
+
showImage = true,
|
|
49
58
|
width,
|
|
50
|
-
modifiers = [],
|
|
51
59
|
} = props;
|
|
60
|
+
const styles = useMultiStyleConfig("SkeletonLoader", {
|
|
61
|
+
border,
|
|
62
|
+
imageAspectRatio,
|
|
63
|
+
showImage,
|
|
64
|
+
variant: layout,
|
|
65
|
+
});
|
|
52
66
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
key={
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
for (let i = 0; i < contentSize; i++) {
|
|
74
|
-
contentItems.push(
|
|
75
|
-
<div
|
|
76
|
-
key={`content-${i}`}
|
|
77
|
-
className={bem("skeleton-loader-content", imageModifiers, "", [
|
|
78
|
-
"skeleton-element",
|
|
79
|
-
])}
|
|
80
|
-
></div>
|
|
81
|
-
);
|
|
82
|
-
}
|
|
67
|
+
/**
|
|
68
|
+
* Generates the Chakra skeleton loader `size` number of times for the
|
|
69
|
+
* "heading" and "content" areas defined by the `type` argument. The last
|
|
70
|
+
* element will have width of `lastWidth`.
|
|
71
|
+
*/
|
|
72
|
+
const getSkeletonElements = (type, size = 1, lastWidth = "80%") => {
|
|
73
|
+
return new Array(size).fill(null).map((_, i) => {
|
|
74
|
+
const width = i === size - 1 ? lastWidth : "100%";
|
|
75
|
+
const marginBottomValue =
|
|
76
|
+
i === size - 1 && type === "content" ? "0" : null;
|
|
77
|
+
return (
|
|
78
|
+
<ChakraSkeleton key={`${type}-${i}`} width={width}>
|
|
79
|
+
<Box
|
|
80
|
+
__css={styles[type]}
|
|
81
|
+
style={{ marginBottom: marginBottomValue }}
|
|
82
|
+
/>
|
|
83
|
+
</ChakraSkeleton>
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
};
|
|
83
87
|
|
|
84
88
|
return (
|
|
85
|
-
<
|
|
86
|
-
className={bem("skeleton-loader", modifiers, "", [className])}
|
|
87
|
-
style={{ width: width }}
|
|
88
|
-
>
|
|
89
|
+
<Box className={className} __css={styles} style={{ width: width }}>
|
|
89
90
|
{showImage && (
|
|
90
|
-
<
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
"skeleton-element",
|
|
94
|
-
])}
|
|
95
|
-
></div>
|
|
96
|
-
</div>
|
|
91
|
+
<ChakraSkeleton>
|
|
92
|
+
<Box __css={{ ...styles.element, ...styles.image }} />
|
|
93
|
+
</ChakraSkeleton>
|
|
97
94
|
)}
|
|
98
|
-
<
|
|
99
|
-
{showHeading &&
|
|
100
|
-
|
|
95
|
+
<Box className={layout} __css={styles.container}>
|
|
96
|
+
{showHeading && (
|
|
97
|
+
<Box __css={styles.section}>
|
|
98
|
+
{getSkeletonElements("heading", headingSize, "80%")}
|
|
99
|
+
</Box>
|
|
100
|
+
)}
|
|
101
|
+
{showContent && (
|
|
102
|
+
<Box __css={styles.section}>
|
|
103
|
+
{getSkeletonElements("content", contentSize, "30%")}
|
|
104
|
+
</Box>
|
|
105
|
+
)}
|
|
101
106
|
{showButton && (
|
|
102
|
-
<
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
></div>
|
|
108
|
-
</div>
|
|
107
|
+
<Box __css={{ ...styles.section, ...styles.button }}>
|
|
108
|
+
<ChakraSkeleton borderRadius="16px">
|
|
109
|
+
<Box __css={styles.button} />
|
|
110
|
+
</ChakraSkeleton>
|
|
111
|
+
</Box>
|
|
109
112
|
)}
|
|
110
|
-
</
|
|
111
|
-
</
|
|
113
|
+
</Box>
|
|
114
|
+
</Box>
|
|
112
115
|
);
|
|
113
116
|
}
|