@nypl/design-system-react-components 1.0.1 → 1.0.2
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 +1428 -3
- package/README.md +391 -3
- package/dist/__tests__/fileMock.d.ts +4 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/{lib/stories/0-Welcome.stories.d.ts → dist/__tests__/utils/utils.test.d.ts} +1 -1
- package/dist/components/Accordion/Accordion.d.ts +21 -0
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +4 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +18 -0
- package/dist/components/Button/Button.d.ts +25 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +22 -0
- package/dist/components/Card/Card.d.ts +49 -0
- package/dist/components/Checkbox/Checkbox.d.ts +47 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +49 -0
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +29 -0
- package/dist/components/DatePicker/DatePicker.d.ts +81 -0
- package/dist/components/Fieldset/Fieldset.d.ts +22 -0
- package/dist/components/Form/Form.d.ts +29 -0
- package/dist/components/Grid/SimpleGrid.d.ts +17 -0
- package/dist/components/Heading/Heading.d.ts +27 -0
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +29 -0
- package/dist/components/Hero/Hero.d.ts +40 -0
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +11 -0
- package/dist/components/Icons/Icon.d.ts +37 -0
- package/dist/components/Icons/IconSvgs.d.ts +33 -0
- package/dist/components/Image/Image.d.ts +61 -0
- package/dist/components/Label/Label.d.ts +20 -0
- package/dist/components/Link/Link.d.ts +20 -0
- package/dist/components/List/List.d.ts +35 -0
- package/dist/components/Logo/Logo.d.ts +26 -0
- package/dist/components/Logo/LogoSvgs.d.ts +46 -0
- package/dist/components/Modal/Modal.d.ts +33 -0
- package/dist/components/Notification/Notification.d.ts +50 -0
- package/dist/components/Pagination/Pagination.d.ts +27 -0
- package/dist/components/Placeholder/Placeholder.d.ts +10 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +30 -0
- package/dist/components/Radio/Radio.d.ts +43 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +51 -0
- package/dist/components/SearchBar/SearchBar.d.ts +61 -0
- package/dist/components/Select/Select.d.ts +57 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +39 -0
- package/dist/components/SkipNavigation/SkipNavigation.d.ts +17 -0
- package/dist/components/Slider/Slider.d.ts +60 -0
- package/dist/components/StatusBadge/StatusBadge.d.ts +16 -0
- package/dist/components/StructuredContent/StructuredContent.d.ts +28 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Table/Table.d.ts +29 -0
- package/dist/components/Tabs/Tabs.d.ts +26 -0
- package/dist/components/Template/Template.d.ts +126 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/TextInput/TextInput.d.ts +78 -0
- package/dist/components/Toggle/Toggle.d.ts +42 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +38 -0
- package/dist/design-system-react-components.cjs.development.js +11305 -0
- package/dist/design-system-react-components.cjs.development.js.map +1 -0
- package/dist/design-system-react-components.cjs.production.min.js +2 -0
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -0
- package/dist/design-system-react-components.esm.js +11150 -0
- package/dist/design-system-react-components.esm.js.map +1 -0
- package/dist/helpers/types.d.ts +1 -0
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +17 -0
- package/dist/hooks/useNYPLTheme.d.ts +66 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +8 -0
- package/dist/resources.scss +386 -0
- package/dist/styles.css +3 -0
- package/dist/theme/components/accordion.d.ts +20 -0
- package/dist/theme/components/breadcrumb.d.ts +105 -0
- package/dist/theme/components/button.d.ts +120 -0
- package/dist/theme/components/buttonGroup.d.ts +11 -0
- package/dist/theme/components/card.d.ts +381 -0
- package/dist/theme/components/checkbox.d.ts +95 -0
- package/dist/theme/components/checkboxGroup.d.ts +14 -0
- package/dist/theme/components/componentWrapper.d.ts +12 -0
- package/dist/theme/components/customTable.d.ts +136 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +20 -0
- package/dist/theme/components/global.d.ts +73 -0
- package/dist/theme/components/globalMixins.d.ts +23 -0
- package/dist/theme/components/heading.d.ts +160 -0
- package/dist/theme/components/helperErrorText.d.ts +12 -0
- package/dist/theme/components/hero.d.ts +499 -0
- package/dist/theme/components/horizontalRule.d.ts +15 -0
- package/dist/theme/components/icon.d.ts +47755 -0
- package/dist/theme/components/image.d.ts +590 -0
- package/dist/theme/components/label.d.ts +18 -0
- package/dist/theme/components/link.d.ts +62 -0
- package/dist/theme/components/list.d.ts +182 -0
- package/dist/theme/components/logo.d.ts +477 -0
- package/dist/theme/components/notification.d.ts +95 -0
- package/dist/theme/components/pagination.d.ts +16 -0
- package/dist/theme/components/progressIndicator.d.ts +52 -0
- package/dist/theme/components/radio.d.ts +99 -0
- package/dist/theme/components/radioGroup.d.ts +14 -0
- package/dist/theme/components/searchBar.d.ts +18 -0
- package/dist/theme/components/select.d.ts +87 -0
- package/dist/theme/components/skeletonLoader.d.ts +102 -0
- package/dist/theme/components/skipNavigation.d.ts +25 -0
- package/dist/theme/components/slider.d.ts +59 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/structuredContent.d.ts +226 -0
- package/dist/theme/components/tabs.d.ts +136 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +26 -0
- package/dist/theme/components/textInput.d.ts +124 -0
- package/dist/theme/components/toggle.d.ts +92 -0
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +23 -0
- package/dist/theme/foundations/colors.d.ts +3 -0
- package/dist/theme/foundations/global.d.ts +58 -0
- package/dist/theme/foundations/radii.d.ts +6 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +82 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +3 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/componentCategories.d.ts +1 -0
- package/dist/utils/interfaces.d.ts +5 -0
- package/dist/utils/utils.d.ts +31 -0
- package/package.json +133 -20
- package/src/__tests__/fileMock.ts +6 -0
- package/src/__tests__/setup.ts +27 -0
- package/src/__tests__/utils/utils.test.ts +18 -0
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +42 -0
- package/src/components/Accordion/Accordion.stories.mdx +333 -0
- package/src/components/Accordion/Accordion.test.tsx +237 -0
- package/src/components/Accordion/Accordion.tsx +137 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +734 -0
- package/src/components/Autosuggest/Autosuggest.stories.mdx +75 -0
- package/src/components/Autosuggest/Autosuggest.stories.tsx +211 -0
- package/src/components/Autosuggest/_Autosuggest.scss +51 -0
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +231 -0
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +144 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +98 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +695 -0
- package/src/components/Button/Button.stories.mdx +320 -0
- package/src/components/Button/Button.test.tsx +184 -0
- package/src/components/Button/Button.tsx +95 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +106 -0
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +178 -0
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +141 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +100 -0
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +117 -0
- package/src/components/Card/Card.stories.mdx +1041 -0
- package/src/components/Card/Card.test.tsx +388 -0
- package/src/components/Card/Card.tsx +346 -0
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +568 -0
- package/src/components/Chakra/Box.stories.mdx +52 -0
- package/src/components/Chakra/Center.stories.mdx +96 -0
- package/src/components/Chakra/Flex.stories.mdx +111 -0
- package/src/components/Chakra/Grid.stories.mdx +89 -0
- package/src/components/Chakra/Stack.stories.mdx +109 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +243 -0
- package/src/components/Checkbox/Checkbox.test.tsx +350 -0
- package/src/components/Checkbox/Checkbox.tsx +152 -0
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +661 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +462 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +492 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +173 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1842 -0
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +163 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +76 -0
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +103 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +452 -0
- package/src/components/DatePicker/DatePicker.test.tsx +940 -0
- package/src/components/DatePicker/DatePicker.tsx +450 -0
- package/src/components/DatePicker/_DatePicker.scss +100 -0
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +908 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +96 -0
- package/src/components/Fieldset/Fieldset.test.tsx +155 -0
- package/src/components/Fieldset/Fieldset.tsx +55 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +89 -0
- package/src/components/Form/Form.stories.mdx +426 -0
- package/src/components/Form/Form.test.tsx +234 -0
- package/src/components/Form/Form.tsx +124 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +115 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +336 -0
- package/src/components/Grid/SimpleGrid.test.tsx +79 -0
- package/src/components/Grid/SimpleGrid.tsx +49 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +23 -0
- package/src/components/Heading/Heading.stories.mdx +187 -0
- package/src/components/Heading/Heading.test.tsx +171 -0
- package/src/components/Heading/Heading.tsx +104 -0
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +90 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +172 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +114 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +62 -0
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +93 -0
- package/src/components/Hero/Hero.stories.mdx +378 -0
- package/src/components/Hero/Hero.test.tsx +611 -0
- package/src/components/Hero/Hero.tsx +203 -0
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +379 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +73 -0
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +54 -0
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -0
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +44 -0
- package/src/components/Icons/Icon.stories.mdx +413 -0
- package/src/components/Icons/Icon.test.tsx +120 -0
- package/src/components/Icons/Icon.tsx +187 -0
- package/src/components/Icons/IconSvgs.tsx +64 -0
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +332 -0
- package/src/components/Image/Image.test.tsx +155 -0
- package/src/components/Image/Image.tsx +171 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +269 -0
- package/src/components/Label/Label.stories.mdx +100 -0
- package/src/components/Label/Label.test.tsx +116 -0
- package/src/components/Label/Label.tsx +55 -0
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +45 -0
- package/src/components/Link/Link.stories.mdx +249 -0
- package/src/components/Link/Link.test.tsx +224 -0
- package/src/components/Link/Link.tsx +178 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +286 -0
- package/src/components/List/List.stories.mdx +393 -0
- package/src/components/List/List.test.tsx +265 -0
- package/src/components/List/List.tsx +156 -0
- package/src/components/List/__snapshots__/List.test.tsx.snap +213 -0
- package/src/components/Logo/Logo.stories.mdx +295 -0
- package/src/components/Logo/Logo.test.tsx +116 -0
- package/src/components/Logo/Logo.tsx +151 -0
- package/src/components/Logo/LogoSvgs.tsx +90 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +142 -0
- package/src/components/Modal/Modal.stories.mdx +294 -0
- package/src/components/Modal/Modal.test.tsx +157 -0
- package/src/components/Modal/Modal.tsx +154 -0
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -0
- package/src/components/Notification/Notification.stories.mdx +358 -0
- package/src/components/Notification/Notification.test.tsx +279 -0
- package/src/components/Notification/Notification.tsx +224 -0
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +525 -0
- package/src/components/Pagination/Pagination.stories.mdx +184 -0
- package/src/components/Pagination/Pagination.test.tsx +419 -0
- package/src/components/Pagination/Pagination.tsx +269 -0
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +544 -0
- package/src/components/Placeholder/Placeholder.tsx +19 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +360 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +298 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +132 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +434 -0
- package/src/components/Radio/Radio.stories.mdx +216 -0
- package/src/components/Radio/Radio.test.tsx +247 -0
- package/src/components/Radio/Radio.tsx +119 -0
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +451 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +479 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +471 -0
- package/src/components/RadioGroup/RadioGroup.tsx +171 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1550 -0
- package/src/components/SearchBar/SearchBar.stories.mdx +518 -0
- package/src/components/SearchBar/SearchBar.test.tsx +435 -0
- package/src/components/SearchBar/SearchBar.tsx +210 -0
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1049 -0
- package/src/components/Select/Select.stories.mdx +439 -0
- package/src/components/Select/Select.test.tsx +358 -0
- package/src/components/Select/Select.tsx +183 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +895 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +142 -0
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +116 -0
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +123 -0
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +898 -0
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +90 -0
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +63 -0
- package/src/components/SkipNavigation/SkipNavigation.tsx +51 -0
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +130 -0
- package/src/components/Slider/Slider.stories.mdx +628 -0
- package/src/components/Slider/Slider.test.tsx +736 -0
- package/src/components/Slider/Slider.tsx +322 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +2186 -0
- package/src/components/StatusBadge/StatusBadge.stories.mdx +109 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +70 -0
- package/src/components/StatusBadge/StatusBadge.tsx +35 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +47 -0
- package/src/components/StructuredContent/StructuredContent.stories.mdx +567 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +435 -0
- package/src/components/StructuredContent/StructuredContent.tsx +139 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +368 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +206 -0
- package/src/components/StyleGuide/Breakpoints.stories.mdx +55 -0
- package/src/components/StyleGuide/Buttons.stories.mdx +194 -0
- package/src/components/StyleGuide/ColorCard.tsx +43 -0
- package/src/components/StyleGuide/Colors.stories.mdx +201 -0
- package/src/components/StyleGuide/DesignTokens.stories.mdx +193 -0
- package/src/components/StyleGuide/Forms.stories.mdx +94 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +142 -0
- package/src/components/StyleGuide/Spacing.stories.mdx +116 -0
- package/src/components/StyleGuide/Typography.stories.mdx +419 -0
- package/src/components/Table/Table.stories.mdx +272 -0
- package/src/components/Table/Table.test.tsx +241 -0
- package/src/components/Table/Table.tsx +152 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1703 -0
- package/src/components/Tabs/Tabs.stories.mdx +338 -0
- package/src/components/Tabs/Tabs.test.tsx +298 -0
- package/src/components/Tabs/Tabs.tsx +264 -0
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +584 -0
- package/src/components/Template/Template.stories.mdx +695 -0
- package/src/components/Template/Template.test.tsx +309 -0
- package/src/components/Template/Template.tsx +326 -0
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +342 -0
- package/src/components/Text/Text.stories.mdx +103 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +50 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +50 -0
- package/src/components/TextInput/TextInput.stories.mdx +268 -0
- package/src/components/TextInput/TextInput.test.tsx +451 -0
- package/src/components/TextInput/TextInput.tsx +240 -0
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +274 -0
- package/src/components/Toggle/Toggle.stories.mdx +237 -0
- package/src/components/Toggle/Toggle.test.tsx +170 -0
- package/src/components/Toggle/Toggle.tsx +128 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +470 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +212 -0
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +308 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +188 -0
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +192 -0
- package/src/docs/Chakra.stories.mdx +563 -0
- package/src/docs/Welcome.stories.mdx +148 -0
- package/src/helpers/types.ts +1 -0
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +35 -0
- package/src/hooks/useNYPLTheme.stories.mdx +98 -0
- package/src/hooks/useNYPLTheme.ts +91 -0
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +136 -0
- package/src/resources.scss +6 -0
- package/src/styles/base/_01-breakpoints.scss +27 -0
- package/src/styles/base/_02-mixins.scss +103 -0
- package/src/styles/base/_place-holder.scss +33 -0
- package/src/styles/space/_space-inline.scss +79 -0
- package/src/styles/space/_space-inset.scss +57 -0
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +23 -0
- package/src/theme/components/accordion.ts +25 -0
- package/src/theme/components/breadcrumb.ts +94 -0
- package/src/theme/components/button.ts +133 -0
- package/src/theme/components/buttonGroup.ts +10 -0
- package/src/theme/components/card.ts +237 -0
- package/src/theme/components/checkbox.ts +110 -0
- package/src/theme/components/checkboxGroup.ts +10 -0
- package/src/theme/components/componentWrapper.ts +14 -0
- package/src/theme/components/customTable.ts +77 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +23 -0
- package/src/theme/components/global.ts +91 -0
- package/src/theme/components/globalMixins.ts +24 -0
- package/src/theme/components/heading.ts +79 -0
- package/src/theme/components/helperErrorText.ts +14 -0
- package/src/theme/components/hero.ts +238 -0
- package/src/theme/components/horizontalRule.ts +17 -0
- package/src/theme/components/icon.ts +88 -0
- package/src/theme/components/image.ts +136 -0
- package/src/theme/components/label.ts +15 -0
- package/src/theme/components/link.ts +63 -0
- package/src/theme/components/list.ts +88 -0
- package/src/theme/components/logo.ts +58 -0
- package/src/theme/components/notification.ts +132 -0
- package/src/theme/components/pagination.ts +17 -0
- package/src/theme/components/progressIndicator.ts +67 -0
- package/src/theme/components/radio.ts +103 -0
- package/src/theme/components/radioGroup.ts +10 -0
- package/src/theme/components/searchBar.ts +19 -0
- package/src/theme/components/select.ts +72 -0
- package/src/theme/components/skeletonLoader.ts +113 -0
- package/src/theme/components/skipNavigation.ts +29 -0
- package/src/theme/components/slider.ts +95 -0
- package/src/theme/components/statusBadge.ts +26 -0
- package/src/theme/components/structuredContent.ts +149 -0
- package/src/theme/components/tabs.ts +109 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +38 -0
- package/src/theme/components/textInput.ts +65 -0
- package/src/theme/components/toggle.ts +109 -0
- package/src/theme/components/videoPlayer.ts +47 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +212 -0
- package/src/theme/foundations/global.ts +43 -0
- package/src/theme/foundations/radii.ts +7 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +136 -0
- package/src/theme/foundations/typography.ts +107 -0
- package/src/theme/index.ts +131 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +152 -0
- package/src/utils/interfaces.ts +5 -0
- package/src/utils/utils.ts +84 -0
- package/lib/components/Button/Button.d.ts +0 -17
- package/lib/components/Button/Button.js +0 -42
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -6
- package/lib/stories/0-Welcome.stories.js +0 -19
- package/lib/stories/1-Button.stories.d.ts +0 -6
- package/lib/stories/1-Button.stories.js +0 -20
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { action } from "@storybook/addon-actions";
|
|
2
|
+
import {
|
|
3
|
+
ArgsTable,
|
|
4
|
+
Canvas,
|
|
5
|
+
Description,
|
|
6
|
+
Meta,
|
|
7
|
+
Story,
|
|
8
|
+
} from "@storybook/addon-docs";
|
|
9
|
+
import { withDesign } from "storybook-addon-designs";
|
|
10
|
+
|
|
11
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
12
|
+
import SkeletonLoader from "./SkeletonLoader";
|
|
13
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
+
|
|
15
|
+
<Meta
|
|
16
|
+
title={getCategory("SkeletonLoader")}
|
|
17
|
+
component={SkeletonLoader}
|
|
18
|
+
decorators={[withDesign]}
|
|
19
|
+
parameters={{
|
|
20
|
+
design: {
|
|
21
|
+
type: "figma",
|
|
22
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17219%3A7",
|
|
23
|
+
},
|
|
24
|
+
jest: ["SkeletonLoader.test.tsx"],
|
|
25
|
+
}}
|
|
26
|
+
argTypes={{
|
|
27
|
+
className: { control: false },
|
|
28
|
+
contentSize: { table: { defaultValue: { summary: "3" } } },
|
|
29
|
+
headingSize: { table: { defaultValue: { summary: "1" } } },
|
|
30
|
+
imageAspectRatio: {
|
|
31
|
+
table: {
|
|
32
|
+
defaultValue: { summary: "square" },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
isBordered: { table: { defaultValue: { summary: "false" } } },
|
|
36
|
+
layout: {
|
|
37
|
+
table: { defaultValue: { summary: "column" } },
|
|
38
|
+
},
|
|
39
|
+
showButton: { table: { defaultValue: { summary: "false" } } },
|
|
40
|
+
showContent: { table: { defaultValue: { summary: "true" } } },
|
|
41
|
+
showHeading: { table: { defaultValue: { summary: "true" } } },
|
|
42
|
+
showImage: { table: { defaultValue: { summary: "true" } } },
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
# SkeletonLoader
|
|
47
|
+
|
|
48
|
+
| Component Version | DS Version |
|
|
49
|
+
| ----------------- | ---------- |
|
|
50
|
+
| Added | `0.17.3` |
|
|
51
|
+
| Latest | `0.28.0` |
|
|
52
|
+
|
|
53
|
+
## Table of Contents
|
|
54
|
+
|
|
55
|
+
- [Overview](#overview)
|
|
56
|
+
- [Component Props](#component-props)
|
|
57
|
+
- [Accessibility](#accessibility)
|
|
58
|
+
- [Card Placeholders in a Grid](#card-placeholders-in-a-grid)
|
|
59
|
+
- [Text Placeholders in a List](#text-placeholders-in-a-list)
|
|
60
|
+
|
|
61
|
+
## Overview
|
|
62
|
+
|
|
63
|
+
<Description of={SkeletonLoader} />
|
|
64
|
+
|
|
65
|
+
The `layout`, `width`, and placeholder elements within the `SkeletonLoader` can
|
|
66
|
+
be customized.
|
|
67
|
+
|
|
68
|
+
Please note that the initial rendering below has the `width` prop set to `300px`
|
|
69
|
+
to better view the example. The default value is `100%`.
|
|
70
|
+
|
|
71
|
+
## Component Props
|
|
72
|
+
|
|
73
|
+
<Canvas withToolbar>
|
|
74
|
+
<Story
|
|
75
|
+
name="SkeletonLoader with Controls"
|
|
76
|
+
args={{
|
|
77
|
+
className: undefined,
|
|
78
|
+
contentSize: 3,
|
|
79
|
+
headingSize: 1,
|
|
80
|
+
imageAspectRatio: "square",
|
|
81
|
+
isBordered: false,
|
|
82
|
+
layout: "column",
|
|
83
|
+
showButton: false,
|
|
84
|
+
showContent: true,
|
|
85
|
+
showHeading: true,
|
|
86
|
+
showImage: true,
|
|
87
|
+
width: "300px",
|
|
88
|
+
}}
|
|
89
|
+
>
|
|
90
|
+
{(args) => <SkeletonLoader {...args} />}
|
|
91
|
+
</Story>
|
|
92
|
+
</Canvas>
|
|
93
|
+
|
|
94
|
+
<ArgsTable story="SkeletonLoader with Controls" />
|
|
95
|
+
|
|
96
|
+
## Accessibility
|
|
97
|
+
|
|
98
|
+
According to W3C's success criterion 2.2.2 for operable user interfaces:
|
|
99
|
+
|
|
100
|
+
> For any moving, blinking or scrolling information that (1) starts automatically,
|
|
101
|
+
> (2) lasts more than five seconds, and (3) is presented in parallel with other
|
|
102
|
+
> content, there is a mechanism for the user to pause, stop, or hide it unless
|
|
103
|
+
> the movement, blinking, or scrolling is part of an activity where it is essential;
|
|
104
|
+
|
|
105
|
+
The `SkeletonLoader` component can be used as a placeholder for local content
|
|
106
|
+
that is loaded in parallel but it typically does not last more than five (5)
|
|
107
|
+
seconds. For the DS usage, this is purely a visual cue and should not be picked
|
|
108
|
+
up by screen readers.
|
|
109
|
+
|
|
110
|
+
Resources:
|
|
111
|
+
|
|
112
|
+
- [W3C Perceivable Pause, Stop, Hide](https://www.w3.org/TR/WCAG/#pause-stop-hide)
|
|
113
|
+
- [More Accessible Skeletons](https://adrianroselli.com/2020/11/more-accessible-skeletons.html)
|
|
114
|
+
|
|
115
|
+
## Card Placeholders in a Grid
|
|
116
|
+
|
|
117
|
+
<Canvas>
|
|
118
|
+
<Story name="Placeholders in a Grid">
|
|
119
|
+
<SimpleGrid columns={3}>
|
|
120
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
121
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
122
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
123
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
124
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
125
|
+
<SkeletonLoader imageAspectRatio="landscape" isBordered />
|
|
126
|
+
</SimpleGrid>
|
|
127
|
+
</Story>
|
|
128
|
+
</Canvas>
|
|
129
|
+
|
|
130
|
+
## Text Placeholders in a List
|
|
131
|
+
|
|
132
|
+
<Canvas>
|
|
133
|
+
<Story name="Placeholders in a List">
|
|
134
|
+
<SimpleGrid columns={1}>
|
|
135
|
+
<SkeletonLoader layout="row" showImage={false} />
|
|
136
|
+
<SkeletonLoader layout="row" showImage={false} />
|
|
137
|
+
<SkeletonLoader layout="row" showImage={false} />
|
|
138
|
+
<SkeletonLoader layout="row" showImage={false} />
|
|
139
|
+
<SkeletonLoader layout="row" showImage={false} />
|
|
140
|
+
</SimpleGrid>
|
|
141
|
+
</Story>
|
|
142
|
+
</Canvas>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { render } from "@testing-library/react";
|
|
3
|
+
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
5
|
+
|
|
6
|
+
import SkeletonLoader from "./SkeletonLoader";
|
|
7
|
+
|
|
8
|
+
describe("SkeletonLoader Accessibility", () => {
|
|
9
|
+
it("passes axe accessibility test", async () => {
|
|
10
|
+
const { container } = render(<SkeletonLoader />);
|
|
11
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe("SkeletonLoader", () => {
|
|
16
|
+
it("renders default layout", () => {
|
|
17
|
+
const { container } = render(
|
|
18
|
+
<SkeletonLoader className="skeleton-loader" />
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("renders in the column or row layout", () => {
|
|
25
|
+
const { container, rerender } = render(<SkeletonLoader layout="column" />);
|
|
26
|
+
|
|
27
|
+
expect(container.querySelector(".column")).toBeInTheDocument();
|
|
28
|
+
|
|
29
|
+
rerender(<SkeletonLoader layout="row" />);
|
|
30
|
+
expect(container.querySelector(".row")).toBeInTheDocument();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("renders default elements", () => {
|
|
34
|
+
const { container } = render(<SkeletonLoader />);
|
|
35
|
+
|
|
36
|
+
// By default, the `SkeletonLoader` renders one image, one heading, and
|
|
37
|
+
// three content elements.
|
|
38
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(5);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("renders without image", () => {
|
|
42
|
+
const { container } = render(<SkeletonLoader showImage={false} />);
|
|
43
|
+
|
|
44
|
+
// Only one image is rendered by default.
|
|
45
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("renders without heading", () => {
|
|
49
|
+
const { container } = render(<SkeletonLoader showHeading={false} />);
|
|
50
|
+
|
|
51
|
+
// Only one heading is rendered by default.
|
|
52
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("renders without content", () => {
|
|
56
|
+
const { container } = render(<SkeletonLoader showContent={false} />);
|
|
57
|
+
|
|
58
|
+
// Three content placeholders are rendered by default.
|
|
59
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(2);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("renders with button", () => {
|
|
63
|
+
const { container } = render(<SkeletonLoader showButton={true} />);
|
|
64
|
+
|
|
65
|
+
// Only one button is rendered by default.
|
|
66
|
+
expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(6);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("renders the UI snapshot correctly", () => {
|
|
70
|
+
const basic = renderer.create(<SkeletonLoader />).toJSON();
|
|
71
|
+
const rowLayout = renderer.create(<SkeletonLoader layout="row" />).toJSON();
|
|
72
|
+
const columnLayout = renderer
|
|
73
|
+
.create(<SkeletonLoader layout="column" />)
|
|
74
|
+
.toJSON();
|
|
75
|
+
const noImage = renderer
|
|
76
|
+
.create(<SkeletonLoader showImage={false} />)
|
|
77
|
+
.toJSON();
|
|
78
|
+
const noHeading = renderer
|
|
79
|
+
.create(<SkeletonLoader showHeading={false} />)
|
|
80
|
+
.toJSON();
|
|
81
|
+
const noContent = renderer
|
|
82
|
+
.create(<SkeletonLoader showContent={false} />)
|
|
83
|
+
.toJSON();
|
|
84
|
+
const withButton = renderer
|
|
85
|
+
.create(<SkeletonLoader showButton={true} />)
|
|
86
|
+
.toJSON();
|
|
87
|
+
const landscape = renderer
|
|
88
|
+
.create(<SkeletonLoader imageAspectRatio="landscape" />)
|
|
89
|
+
.toJSON();
|
|
90
|
+
const portrait = renderer
|
|
91
|
+
.create(<SkeletonLoader imageAspectRatio="portrait" />)
|
|
92
|
+
.toJSON();
|
|
93
|
+
const square = renderer
|
|
94
|
+
.create(<SkeletonLoader imageAspectRatio="square" />)
|
|
95
|
+
.toJSON();
|
|
96
|
+
const withChakraProps = renderer
|
|
97
|
+
.create(<SkeletonLoader p="20px" color="ui.error.primary" />)
|
|
98
|
+
.toJSON();
|
|
99
|
+
const withOtherProps = renderer
|
|
100
|
+
.create(<SkeletonLoader data-testid="props" />)
|
|
101
|
+
.toJSON();
|
|
102
|
+
|
|
103
|
+
expect(basic).toMatchSnapshot();
|
|
104
|
+
expect(rowLayout).toMatchSnapshot();
|
|
105
|
+
expect(columnLayout).toMatchSnapshot();
|
|
106
|
+
expect(noImage).toMatchSnapshot();
|
|
107
|
+
expect(noHeading).toMatchSnapshot();
|
|
108
|
+
expect(noContent).toMatchSnapshot();
|
|
109
|
+
expect(withButton).toMatchSnapshot();
|
|
110
|
+
expect(landscape).toMatchSnapshot();
|
|
111
|
+
expect(portrait).toMatchSnapshot();
|
|
112
|
+
expect(square).toMatchSnapshot();
|
|
113
|
+
expect(withChakraProps).toMatchSnapshot();
|
|
114
|
+
expect(withOtherProps).toMatchSnapshot();
|
|
115
|
+
});
|
|
116
|
+
});
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box,
|
|
3
|
+
chakra,
|
|
4
|
+
Skeleton as ChakraSkeleton,
|
|
5
|
+
useMultiStyleConfig,
|
|
6
|
+
} from "@chakra-ui/react";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
|
|
9
|
+
import { LayoutTypes } from "../../helpers/types";
|
|
10
|
+
|
|
11
|
+
export type SkeletonLoaderImageRatios = "landscape" | "portrait" | "square";
|
|
12
|
+
|
|
13
|
+
export interface SkeletonLoaderProps {
|
|
14
|
+
/** Additional class name for the Skeleton component. */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Optional numeric value to control the number of lines for content
|
|
17
|
+
* placeholder; default value is `3`. */
|
|
18
|
+
contentSize?: number;
|
|
19
|
+
/** Optional numeric value to control the number of lines for heading
|
|
20
|
+
* placeholder; default value is `1`. */
|
|
21
|
+
headingSize?: number;
|
|
22
|
+
/** Optional value to control the aspect ratio of the image placeholder;
|
|
23
|
+
* default value is `"square"`. */
|
|
24
|
+
imageAspectRatio?: SkeletonLoaderImageRatios;
|
|
25
|
+
/** Optional boolean value to control visibility of border around skeleton loader. */
|
|
26
|
+
isBordered?: boolean;
|
|
27
|
+
/** Optional value to control the position of the image placeholder;
|
|
28
|
+
* default value is `"column"`. */
|
|
29
|
+
layout?: LayoutTypes;
|
|
30
|
+
/** Optional boolean value to control visibility of button placeholder. */
|
|
31
|
+
showButton?: boolean;
|
|
32
|
+
/** Optional boolean value to control visibility of content placeholder. */
|
|
33
|
+
showContent?: boolean;
|
|
34
|
+
/** Optional boolean value to control visibility of heading placeholder. */
|
|
35
|
+
showHeading?: boolean;
|
|
36
|
+
/** Optional boolean value to control visibility of image placeholder. */
|
|
37
|
+
showImage?: boolean;
|
|
38
|
+
/** Optional width value. This value should be entered with the same
|
|
39
|
+
* formatting as a CSS width attribute (ex. `50%`, `640px`, `20rem`).
|
|
40
|
+
* If omitted, the skeleton loader will have a default width of 100%. */
|
|
41
|
+
width?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The `SkeletonLoader` component renders a placeholder to be used while
|
|
46
|
+
* dynamic content is loading.
|
|
47
|
+
*/
|
|
48
|
+
export const SkeletonLoader = chakra(
|
|
49
|
+
(props: React.PropsWithChildren<SkeletonLoaderProps>) => {
|
|
50
|
+
const {
|
|
51
|
+
className,
|
|
52
|
+
contentSize = 3,
|
|
53
|
+
headingSize = 1,
|
|
54
|
+
imageAspectRatio = "square",
|
|
55
|
+
isBordered = false,
|
|
56
|
+
layout = "column",
|
|
57
|
+
showButton = false,
|
|
58
|
+
showContent = true,
|
|
59
|
+
showHeading = true,
|
|
60
|
+
showImage = true,
|
|
61
|
+
width,
|
|
62
|
+
...rest
|
|
63
|
+
} = props;
|
|
64
|
+
const styles = useMultiStyleConfig("SkeletonLoader", {
|
|
65
|
+
isBordered,
|
|
66
|
+
imageAspectRatio,
|
|
67
|
+
showImage,
|
|
68
|
+
variant: layout,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Generates the Chakra skeleton loader `size` number of times for the
|
|
73
|
+
* "heading" and "content" areas defined by the `type` argument. The last
|
|
74
|
+
* element will have width of `lastWidth`.
|
|
75
|
+
*/
|
|
76
|
+
const getSkeletonElements = (type: string, size = 1, lastWidth = "80%") => {
|
|
77
|
+
return new Array(size).fill(null).map((_, i) => {
|
|
78
|
+
const width = i === size - 1 ? lastWidth : "100%";
|
|
79
|
+
const marginBottomValue =
|
|
80
|
+
i === size - 1 && type === "content" ? "0" : undefined;
|
|
81
|
+
return (
|
|
82
|
+
<ChakraSkeleton key={`${type}-${i}`} width={width}>
|
|
83
|
+
<Box
|
|
84
|
+
__css={styles[type]}
|
|
85
|
+
style={{ marginBottom: marginBottomValue }}
|
|
86
|
+
/>
|
|
87
|
+
</ChakraSkeleton>
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<Box className={className} __css={styles} style={{ width }} {...rest}>
|
|
94
|
+
{showImage && (
|
|
95
|
+
<ChakraSkeleton>
|
|
96
|
+
<Box __css={{ ...styles.element, ...styles.image }} />
|
|
97
|
+
</ChakraSkeleton>
|
|
98
|
+
)}
|
|
99
|
+
<Box className={layout} __css={styles.container}>
|
|
100
|
+
{showHeading && (
|
|
101
|
+
<Box __css={styles.section}>
|
|
102
|
+
{getSkeletonElements("heading", headingSize, "80%")}
|
|
103
|
+
</Box>
|
|
104
|
+
)}
|
|
105
|
+
{showContent && (
|
|
106
|
+
<Box __css={styles.section}>
|
|
107
|
+
{getSkeletonElements("content", contentSize, "30%")}
|
|
108
|
+
</Box>
|
|
109
|
+
)}
|
|
110
|
+
{showButton && (
|
|
111
|
+
<Box __css={{ ...styles.section, ...styles.button }}>
|
|
112
|
+
<ChakraSkeleton borderRadius="16px">
|
|
113
|
+
<Box __css={styles.button} />
|
|
114
|
+
</ChakraSkeleton>
|
|
115
|
+
</Box>
|
|
116
|
+
)}
|
|
117
|
+
</Box>
|
|
118
|
+
</Box>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
export default SkeletonLoader;
|