@nypl/design-system-react-components 0.23.4 → 0.25.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 +98 -1
- package/README.md +46 -11
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +6 -13
- package/dist/components/Button/ButtonTypes.d.ts +5 -3
- package/dist/components/Card/Card.d.ts +59 -10
- package/dist/components/Card/CardTypes.d.ts +19 -0
- package/dist/components/CardEdition/CardEdition.d.ts +21 -0
- package/dist/components/{StyleGuide/Colors.stories.d.ts → CardEdition/CardEdition.stories.d.ts} +5 -2
- package/dist/components/Checkbox/Checkbox.d.ts +21 -16
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/DatePicker/DatePicker.d.ts +79 -0
- package/dist/components/DatePicker/DatePickerTypes.d.ts +5 -0
- package/dist/components/Form/Form.d.ts +16 -8
- package/dist/components/Form/FormTypes.d.ts +2 -0
- package/dist/components/Grid/GridTypes.d.ts +9 -0
- package/dist/components/Grid/SimpleGrid.d.ts +14 -0
- package/dist/components/Heading/Heading.d.ts +9 -11
- package/dist/components/Heading/{HeadingDisplaySizes.d.ts → HeadingTypes.d.ts} +8 -0
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +2 -1
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/Icons/Icon.d.ts +13 -16
- package/dist/components/Icons/IconSvgs.d.ts +4 -0
- package/dist/components/Icons/IconTypes.d.ts +78 -60
- package/dist/components/Image/Image.stories.d.ts +2 -1
- package/dist/components/Label/Label.d.ts +10 -26
- package/dist/components/Link/Link.d.ts +8 -12
- package/dist/components/List/List.stories.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +30 -24
- package/dist/components/RadioGroup/RadioGroup.d.ts +40 -0
- package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +4 -0
- package/dist/components/SearchBar/SearchBar.d.ts +45 -27
- package/dist/components/Select/Select.d.ts +34 -35
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/Tabs/Tabs.d.ts +25 -0
- package/dist/components/Template/Template.d.ts +91 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/Text/TextTypes.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +37 -30
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/design-system-react-components.cjs.development.js +4102 -917
- 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 +4023 -920
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +23 -5
- package/dist/resources.scss +133 -24
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +25 -0
- package/dist/theme/components/breadcrumb.d.ts +90 -0
- package/dist/theme/components/button.d.ts +109 -0
- package/dist/theme/components/checkbox.d.ts +91 -0
- package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
- package/dist/theme/components/customRadioGroup.d.ts +18 -0
- package/dist/theme/components/global.d.ts +55 -0
- package/dist/theme/components/globalMixins.d.ts +15 -0
- package/dist/theme/components/heading.d.ts +110 -0
- package/dist/theme/components/hero.d.ts +492 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/label.d.ts +16 -0
- package/dist/theme/components/link.d.ts +45 -0
- package/dist/theme/components/radio.d.ts +95 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +58 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +85 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +20 -0
- package/dist/theme/components/textInput.d.ts +105 -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 +23 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +77 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +5 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +9 -2
- package/src/components/Accordion/Accordion.stories.mdx +233 -33
- package/src/components/Accordion/Accordion.test.tsx +135 -19
- package/src/components/Accordion/Accordion.tsx +81 -56
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
- package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
- package/src/components/Autosuggest/_Autosuggest.scss +2 -2
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +57 -56
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
- package/src/components/Button/Button.stories.mdx +125 -138
- package/src/components/Button/Button.test.tsx +65 -11
- package/src/components/Button/Button.tsx +72 -68
- package/src/components/Button/ButtonTypes.tsx +4 -2
- package/src/components/Button/_Button.scss +7 -92
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +58 -3
- package/src/components/Card/Card.stories.mdx +694 -0
- package/src/components/Card/Card.test.tsx +97 -102
- package/src/components/Card/Card.tsx +182 -31
- package/src/components/Card/CardTypes.tsx +21 -0
- package/src/components/Card/_Card.scss +234 -49
- package/src/components/{Card/Card.stories.tsx → CardEdition/CardEdition.stories.tsx} +32 -22
- package/src/components/CardEdition/CardEdition.test.tsx +395 -0
- package/src/components/CardEdition/CardEdition.tsx +60 -0
- package/src/components/CardEdition/_CardEdition.scss +138 -0
- package/src/components/Chakra/Box.stories.mdx +57 -0
- package/src/components/Chakra/Center.stories.mdx +99 -0
- package/src/components/Chakra/Grid.stories.mdx +79 -0
- package/src/components/Chakra/Stack.stories.mdx +93 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +57 -35
- package/src/components/Checkbox/Checkbox.test.tsx +117 -147
- package/src/components/Checkbox/Checkbox.tsx +76 -50
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +325 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +284 -0
- package/src/components/DatePicker/DatePicker.test.tsx +657 -0
- package/src/components/DatePicker/DatePicker.tsx +396 -0
- package/src/components/DatePicker/DatePickerTypes.tsx +5 -0
- package/src/components/DatePicker/_DatePicker.scss +76 -0
- package/src/components/Form/Form.stories.mdx +130 -27
- package/src/components/Form/Form.test.tsx +78 -36
- package/src/components/Form/Form.tsx +53 -19
- package/src/components/Form/FormTypes.tsx +3 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +38 -0
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
- package/src/components/Grid/SimpleGrid.test.tsx +66 -0
- package/src/components/Grid/SimpleGrid.tsx +37 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
- package/src/components/Heading/Heading.stories.mdx +63 -33
- package/src/components/Heading/Heading.test.tsx +24 -16
- package/src/components/Heading/Heading.tsx +54 -38
- package/src/components/Heading/{HeadingDisplaySizes.tsx → HeadingTypes.tsx} +9 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +2 -1
- package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
- package/src/components/Hero/Hero.stories.mdx +195 -85
- package/src/components/Hero/Hero.test.tsx +544 -113
- package/src/components/Hero/Hero.tsx +80 -93
- package/src/components/Hero/HeroTypes.tsx +17 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -1
- package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
- package/src/components/Icons/Icon.stories.mdx +89 -74
- package/src/components/Icons/Icon.test.tsx +30 -22
- package/src/components/Icons/Icon.tsx +63 -61
- package/src/components/Icons/IconSvgs.tsx +8 -0
- package/src/components/Icons/IconTypes.tsx +80 -60
- package/src/components/Image/Image.stories.tsx +2 -1
- package/src/components/Input/_Input.scss +2 -2
- package/src/components/Label/Label.stories.mdx +77 -0
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +28 -45
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +47 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +114 -100
- package/src/components/List/List.stories.mdx +7 -3
- package/src/components/List/List.stories.tsx +14 -9
- package/src/components/List/List.test.tsx +12 -8
- package/src/components/List/List.tsx +9 -7
- package/src/components/List/_List.scss +3 -3
- package/src/components/Modal/Modal.stories.mdx +7 -3
- package/src/components/Modal/_Modal.scss +1 -1
- package/src/components/Notification/Notification.stories.mdx +99 -65
- package/src/components/Notification/Notification.test.tsx +3 -16
- package/src/components/Notification/Notification.tsx +12 -12
- package/src/components/Notification/_Notification.scss +5 -4
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +1 -1
- package/src/components/Pagination/Pagination.stories.mdx +7 -1
- package/src/components/Pagination/Pagination.test.tsx +16 -10
- package/src/components/Radio/Radio.stories.mdx +57 -46
- package/src/components/Radio/Radio.test.tsx +92 -138
- package/src/components/Radio/Radio.tsx +70 -69
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +250 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +247 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +327 -0
- package/src/components/RadioGroup/RadioGroup.tsx +154 -0
- package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +4 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1101 -0
- package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +196 -224
- package/src/components/SearchBar/SearchBar.tsx +151 -46
- package/src/components/Select/Select.stories.mdx +193 -168
- package/src/components/Select/Select.test.tsx +129 -324
- package/src/components/Select/Select.tsx +120 -160
- package/src/components/Select/SelectTypes.tsx +4 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +18 -29
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
- package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
- package/src/components/StatusBadge/StatusBadge.tsx +24 -25
- package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +112 -90
- package/src/components/StyleGuide/Buttons.stories.mdx +98 -100
- package/src/components/StyleGuide/Colors.stories.mdx +336 -0
- package/src/components/StyleGuide/Forms.stories.mdx +85 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +86 -93
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -1
- package/src/components/StyleGuide/Typography.stories.mdx +164 -166
- package/src/components/StyleGuide/UIDocCard.tsx +4 -4
- package/src/components/Tabs/Tabs.stories.mdx +221 -0
- package/src/components/Tabs/Tabs.test.tsx +264 -0
- package/src/components/Tabs/Tabs.tsx +220 -0
- package/src/components/Template/Template.stories.mdx +574 -0
- package/src/components/Template/Template.test.tsx +124 -0
- package/src/components/Template/Template.tsx +226 -0
- package/src/components/Text/Text.stories.mdx +70 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +55 -0
- package/src/components/Text/TextTypes.tsx +6 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
- package/src/components/TextInput/TextInput.stories.mdx +90 -90
- package/src/components/TextInput/TextInput.test.tsx +103 -83
- package/src/components/TextInput/TextInput.tsx +108 -91
- package/src/components/TextInput/TextInputTypes.tsx +6 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
- package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
- package/src/docs/Chakra.stories.mdx +341 -0
- package/src/docs/Intro.stories.mdx +31 -24
- package/src/index.ts +70 -5
- package/src/styles/01-colors/_colors-brand.scss +6 -4
- package/src/styles/01-colors/_colors-utility.scss +14 -15
- package/src/styles/03-space/_space-inline.scss +47 -7
- package/src/styles/03-space/_space-inset.scss +33 -5
- package/src/styles/03-space/_space-stack.scss +48 -8
- package/src/styles/base/_02-breakpoints.scss +5 -4
- package/src/styles/base/_04-base.scss +2 -1
- package/src/styles/base/_place-holder.scss +1 -1
- package/src/styles/base/_typography.scss +1 -29
- package/src/styles.scss +22 -25
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +125 -0
- package/src/theme/components/checkbox.ts +107 -0
- package/src/theme/components/customCheckboxGroup.ts +12 -0
- package/src/theme/components/customRadioGroup.ts +12 -0
- package/src/theme/components/global.ts +71 -0
- package/src/theme/components/globalMixins.ts +16 -0
- package/src/theme/components/heading.ts +72 -0
- package/src/theme/components/hero.ts +239 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/label.ts +17 -0
- package/src/theme/components/link.ts +47 -0
- package/src/theme/components/radio.ts +106 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +50 -0
- package/src/theme/components/statusBadge.ts +27 -0
- package/src/theme/components/tabs.ts +79 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +61 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +208 -0
- package/src/theme/foundations/global.ts +26 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +85 -0
- package/src/theme/foundations/typography.ts +35 -0
- package/src/theme/index.ts +88 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +56 -21
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -5
- package/dist/components/Card/Card.stories.d.ts +0 -27
- package/dist/components/Label/Label.stories.d.ts +0 -12
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/Template/Template.stories.d.ts +0 -29
- package/src/components/Accordion/Accordion.stories.tsx +0 -65
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Checkbox/_Checkbox.scss +0 -97
- package/src/components/Form/_Form.scss +0 -28
- package/src/components/Heading/_Heading.scss +0 -163
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Label/Label.stories.tsx +0 -30
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/Radio/_Radio.scss +0 -84
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -33
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -288
- package/src/components/Template/Template.stories.tsx +0 -85
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
// MT-82, MT 225, etc
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
Box,
|
|
5
|
+
Heading as ChakraHeading,
|
|
6
|
+
Link as ChakraLink,
|
|
7
|
+
useStyleConfig,
|
|
8
|
+
} from "@chakra-ui/react";
|
|
9
|
+
|
|
10
|
+
import { HeadingDisplaySizes, HeadingLevels } from "./HeadingTypes";
|
|
5
11
|
|
|
6
12
|
export interface HeadingProps {
|
|
7
|
-
/** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
|
|
8
|
-
blockName?: string;
|
|
9
13
|
/** Optional className that appears in addition to `heading` */
|
|
10
14
|
className?: string;
|
|
11
15
|
/** Optional size used to override the default styles of the semantic HTML `<h>` elements */
|
|
12
16
|
displaySize?: HeadingDisplaySizes;
|
|
13
17
|
/** Optional ID that other components can cross reference for accessibility purposes */
|
|
14
18
|
id?: string;
|
|
15
|
-
/**
|
|
16
|
-
level
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
+
/** Optional number 1-6 used to create the `<h*>` tag; if prop is not passed, `Heading` will default to `<h2>` */
|
|
20
|
+
level?: HeadingLevels;
|
|
21
|
+
/** Optionally pass in additional Chakra-based styles. */
|
|
22
|
+
sx?: { [key: string]: any };
|
|
19
23
|
/** Inner text of the `<h*>` element */
|
|
20
24
|
text?: string;
|
|
21
25
|
/** Optional URL that header points to; when `url` prop is passed to `Heading`, a child `<a>` element is created and the heading text becomes an active link */
|
|
@@ -24,24 +28,36 @@ export interface HeadingProps {
|
|
|
24
28
|
urlClass?: string;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
// Used to map between ButtonTypes enum values and Chakra variant options.
|
|
32
|
+
const variantMap = {};
|
|
33
|
+
for (const type in HeadingDisplaySizes) {
|
|
34
|
+
variantMap[HeadingDisplaySizes[type]] = HeadingDisplaySizes[type];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Map the HeadingDisplaySizes to the Heading Chakra theme variant object. If a wrong
|
|
39
|
+
* value is passed (typically in non-Typescript scenarios), then the default
|
|
40
|
+
* is "null" and displaySize is not envoked.
|
|
41
|
+
*/
|
|
42
|
+
const getVariant = (displaySize) => variantMap[displaySize] || null;
|
|
43
|
+
|
|
44
|
+
function Heading(props: React.PropsWithChildren<HeadingProps>) {
|
|
28
45
|
const {
|
|
29
|
-
blockName,
|
|
30
46
|
className,
|
|
31
47
|
displaySize,
|
|
32
48
|
id,
|
|
33
|
-
level,
|
|
34
|
-
|
|
49
|
+
level = HeadingLevels.Two,
|
|
50
|
+
sx = {},
|
|
35
51
|
text,
|
|
36
52
|
url,
|
|
37
53
|
urlClass,
|
|
38
54
|
} = props;
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
55
|
+
const variant = displaySize ? getVariant(displaySize) : `h${level}`;
|
|
56
|
+
const styles = useStyleConfig("Heading", { variant });
|
|
57
|
+
// Combine native base styles with any additional styles.
|
|
58
|
+
// This is used only in the `Hero` component, for now.
|
|
59
|
+
const finalStyles = { ...styles, ...sx };
|
|
60
|
+
const asHeading: any = `h${level}`;
|
|
45
61
|
|
|
46
62
|
if (level < 1 || level > 6) {
|
|
47
63
|
throw new Error("Heading only supports levels 1-6");
|
|
@@ -62,25 +78,25 @@ export default function Heading(props: React.PropsWithChildren<HeadingProps>) {
|
|
|
62
78
|
);
|
|
63
79
|
}
|
|
64
80
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
: props.children;
|
|
74
|
-
} else {
|
|
75
|
-
content = url
|
|
76
|
-
? React.createElement("a", { href: url, className: urlClass }, text)
|
|
77
|
-
: text;
|
|
78
|
-
}
|
|
81
|
+
const contentToRender = props.children ? props.children : text;
|
|
82
|
+
const content = url ? (
|
|
83
|
+
<Box as={ChakraLink} href={url} className={urlClass}>
|
|
84
|
+
{contentToRender}
|
|
85
|
+
</Box>
|
|
86
|
+
) : (
|
|
87
|
+
contentToRender
|
|
88
|
+
);
|
|
79
89
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
return (
|
|
91
|
+
<ChakraHeading
|
|
92
|
+
id={id}
|
|
93
|
+
as={asHeading}
|
|
94
|
+
sx={finalStyles}
|
|
95
|
+
className={className}
|
|
96
|
+
>
|
|
97
|
+
{content}
|
|
98
|
+
</ChakraHeading>
|
|
99
|
+
);
|
|
86
100
|
}
|
|
101
|
+
|
|
102
|
+
export default Heading;
|
|
@@ -2,9 +2,10 @@ import * as React from "react";
|
|
|
2
2
|
|
|
3
3
|
import HelperErrorText from "./HelperErrorText";
|
|
4
4
|
import { boolean } from "@storybook/addon-knobs";
|
|
5
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
|
-
title: "HelperErrorText",
|
|
8
|
+
title: getCategory("HelperErrorText"),
|
|
8
9
|
component: HelperErrorText,
|
|
9
10
|
};
|
|
10
11
|
|
|
@@ -3,20 +3,21 @@ 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 { Box, VStack } from "@chakra-ui/react";
|
|
10
10
|
|
|
11
11
|
import Hero from "./Hero";
|
|
12
|
-
import { HeroTypes } from "./HeroTypes";
|
|
12
|
+
import { HeroTypes, HeroSecondaryTypes } from "./HeroTypes";
|
|
13
13
|
import Image from "../Image/Image";
|
|
14
14
|
import Heading from "../Heading/Heading";
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
15
|
+
import { HeadingLevels } from "../Heading/HeadingTypes";
|
|
16
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
17
|
+
import DSProvider from "../../theme/provider";
|
|
17
18
|
|
|
18
19
|
<Meta
|
|
19
|
-
title="Hero"
|
|
20
|
+
title={getCategory("Hero")}
|
|
20
21
|
component={Hero}
|
|
21
22
|
decorators={[withDesign]}
|
|
22
23
|
parameters={{
|
|
@@ -28,32 +29,27 @@ import { action } from "@storybook/addon-actions";
|
|
|
28
29
|
jest: ["Hero.test.tsx"],
|
|
29
30
|
}}
|
|
30
31
|
argTypes={{
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
className: { table: { disable: true } },
|
|
32
|
+
backgroundColor: { table: { disable: true } },
|
|
33
|
+
foregroundColor: { table: { disable: true } },
|
|
34
34
|
heading: { table: { disable: true } },
|
|
35
|
-
modifiers: { table: { disable: true } },
|
|
36
|
-
subHeaderText: { table: { disable: true } },
|
|
37
35
|
image: { table: { disable: true } },
|
|
36
|
+
locationDetails: { table: { disable: true } },
|
|
37
|
+
subHeaderText: { table: { disable: true } },
|
|
38
38
|
}}
|
|
39
39
|
/>
|
|
40
40
|
|
|
41
41
|
export const secondarySubHeaderText = (
|
|
42
|
-
|
|
42
|
+
<>
|
|
43
43
|
Explore our collection of hundreds of online resources and databases. Use
|
|
44
44
|
our free online content to help with your research, whether it's finding a
|
|
45
45
|
single article, tracing a family tree, learning a new language, or anything
|
|
46
46
|
in between.
|
|
47
|
-
|
|
47
|
+
</>
|
|
48
48
|
);
|
|
49
49
|
export const otherSubHeaderText =
|
|
50
50
|
"With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
|
|
51
|
-
export const
|
|
52
|
-
<Image
|
|
53
|
-
src="https://placeimg.com/800/400/animals"
|
|
54
|
-
blockName="hero"
|
|
55
|
-
alt="Image example"
|
|
56
|
-
/>
|
|
51
|
+
export const image = (
|
|
52
|
+
<Image src="https://placeimg.com/800/400/animals" alt="Image example" />
|
|
57
53
|
);
|
|
58
54
|
|
|
59
55
|
# Hero
|
|
@@ -61,17 +57,19 @@ export const secondaryImage = (
|
|
|
61
57
|
| Component Version | DS Version |
|
|
62
58
|
| ----------------- | ---------- |
|
|
63
59
|
| Added | `0.2.0` |
|
|
64
|
-
| Latest | `0.
|
|
60
|
+
| Latest | `0.25.1` |
|
|
65
61
|
|
|
66
62
|
<Description of={Hero} />
|
|
67
63
|
|
|
68
|
-
The `Hero` component is used to display a full width banner at the top of a page.
|
|
64
|
+
The `Hero` component is used to display a full width banner at the top of a page.
|
|
65
|
+
The `Hero` will contain a required `h1` page title and may also include optional
|
|
66
|
+
descriptive text and images.
|
|
69
67
|
|
|
70
|
-
<
|
|
68
|
+
<Canvas withToolbar>
|
|
71
69
|
<Story
|
|
72
70
|
name="Hero Props"
|
|
73
71
|
args={{
|
|
74
|
-
heroType: HeroTypes.
|
|
72
|
+
heroType: HeroTypes.Campaign,
|
|
75
73
|
}}
|
|
76
74
|
>
|
|
77
75
|
{(args) =>
|
|
@@ -79,32 +77,21 @@ The `Hero` component is used to display a full width banner at the top of a page
|
|
|
79
77
|
<Hero
|
|
80
78
|
{...args}
|
|
81
79
|
heading={
|
|
82
|
-
<Heading level={
|
|
80
|
+
<Heading level={HeadingLevels.One} id="1" text="Hero Primary" />
|
|
83
81
|
}
|
|
84
82
|
subHeaderText="Example Subtitle"
|
|
85
83
|
backgroundImageSrc="https://placeimg.com/2400/800/nature"
|
|
86
84
|
/>
|
|
87
85
|
)) ||
|
|
88
|
-
(args.heroType
|
|
89
|
-
<div className=
|
|
86
|
+
(HeroSecondaryTypes.includes(args.heroType) && (
|
|
87
|
+
<div className="nypl--books-and-more">
|
|
90
88
|
<Hero
|
|
91
89
|
{...args}
|
|
92
90
|
heading={
|
|
93
|
-
<Heading
|
|
94
|
-
level={1}
|
|
95
|
-
id="1"
|
|
96
|
-
text="Hero Secondary"
|
|
97
|
-
blockName="hero"
|
|
98
|
-
/>
|
|
91
|
+
<Heading level={HeadingLevels.One} id="1" text="Hero Secondary" />
|
|
99
92
|
}
|
|
100
93
|
subHeaderText={secondarySubHeaderText}
|
|
101
|
-
image={
|
|
102
|
-
<Image
|
|
103
|
-
src="https://placeimg.com/800/400/animals"
|
|
104
|
-
blockName="hero"
|
|
105
|
-
alt="Image example"
|
|
106
|
-
/>
|
|
107
|
-
}
|
|
94
|
+
image={image}
|
|
108
95
|
/>
|
|
109
96
|
</div>
|
|
110
97
|
)) ||
|
|
@@ -112,36 +99,34 @@ The `Hero` component is used to display a full width banner at the top of a page
|
|
|
112
99
|
<Hero
|
|
113
100
|
{...args}
|
|
114
101
|
heading={
|
|
115
|
-
<Heading level={
|
|
102
|
+
<Heading level={HeadingLevels.One} id="1" text="Hero Tertiary" />
|
|
116
103
|
}
|
|
117
104
|
subHeaderText={otherSubHeaderText}
|
|
118
105
|
/>
|
|
119
106
|
)) ||
|
|
120
|
-
(args.heroType === HeroTypes.
|
|
107
|
+
(args.heroType === HeroTypes.Campaign && (
|
|
121
108
|
<Hero
|
|
122
109
|
{...args}
|
|
110
|
+
heading={
|
|
111
|
+
<Heading level={HeadingLevels.One} id="1" text="Hero Campaign" />
|
|
112
|
+
}
|
|
123
113
|
subHeaderText={otherSubHeaderText}
|
|
114
|
+
backgroundImageSrc="https://placeimg.com/2400/800/nature"
|
|
124
115
|
image={
|
|
125
116
|
<Image
|
|
126
|
-
src="https://placeimg.com/
|
|
127
|
-
blockName="hero"
|
|
117
|
+
src="https://placeimg.com/800/400/animals"
|
|
128
118
|
alt="Image example"
|
|
129
119
|
/>
|
|
130
120
|
}
|
|
131
121
|
/>
|
|
132
122
|
)) ||
|
|
133
|
-
(args.heroType === HeroTypes.
|
|
123
|
+
(args.heroType === HeroTypes.FiftyFifty && (
|
|
134
124
|
<Hero
|
|
135
125
|
{...args}
|
|
136
|
-
heading={
|
|
137
|
-
<Heading level={1} id="1" text="Hero Campaign" blockName="hero" />
|
|
138
|
-
}
|
|
139
126
|
subHeaderText={otherSubHeaderText}
|
|
140
|
-
backgroundImageSrc="https://placeimg.com/2400/800/nature/grayscale"
|
|
141
127
|
image={
|
|
142
128
|
<Image
|
|
143
|
-
src="https://placeimg.com/
|
|
144
|
-
blockName="hero"
|
|
129
|
+
src="https://placeimg.com/600/200/animals"
|
|
145
130
|
alt="Image example"
|
|
146
131
|
/>
|
|
147
132
|
}
|
|
@@ -149,58 +134,183 @@ The `Hero` component is used to display a full width banner at the top of a page
|
|
|
149
134
|
))
|
|
150
135
|
}
|
|
151
136
|
</Story>
|
|
152
|
-
</
|
|
137
|
+
</Canvas>
|
|
153
138
|
|
|
154
139
|
<ArgsTable story="Hero Props" />
|
|
155
140
|
|
|
156
141
|
## Color Variations for Secondary Hero
|
|
157
142
|
|
|
158
|
-
The background color for the title bar in
|
|
143
|
+
The background color for the title bar in "Secondary" types changes based on
|
|
144
|
+
variants for the `Secondary` main variant. Before, components relied on the
|
|
145
|
+
parent wrapper's CSS class name for background color updates. Now, the proper
|
|
146
|
+
`HeroType` must be passed in.
|
|
147
|
+
|
|
148
|
+
```jsx
|
|
149
|
+
// Before
|
|
150
|
+
<div className="nypl--books-and-more">
|
|
151
|
+
<Hero {...props} />
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
// Now
|
|
155
|
+
<Hero heroType={HeroTypes.SecondaryBooksAndMore} {...props} />
|
|
156
|
+
```
|
|
159
157
|
|
|
160
158
|
<Canvas>
|
|
161
159
|
<Story name="Color Variations for Secondary Hero">
|
|
162
|
-
<
|
|
160
|
+
<VStack spacing={10} align="stretch">
|
|
161
|
+
<Heading
|
|
162
|
+
level={HeadingLevels.Two}
|
|
163
|
+
text="HeroTypes.SecondaryBooksAndMore"
|
|
164
|
+
id="books-heading"
|
|
165
|
+
/>
|
|
166
|
+
<Hero
|
|
167
|
+
heroType={HeroTypes.SecondaryBooksAndMore}
|
|
168
|
+
heading={
|
|
169
|
+
<Heading
|
|
170
|
+
level={HeadingLevels.One}
|
|
171
|
+
id="books-hero"
|
|
172
|
+
text="Books and More"
|
|
173
|
+
/>
|
|
174
|
+
}
|
|
175
|
+
subHeaderText={secondarySubHeaderText}
|
|
176
|
+
image={image}
|
|
177
|
+
/>
|
|
178
|
+
<Heading
|
|
179
|
+
level={HeadingLevels.Two}
|
|
180
|
+
text="HeroTypes.SecondaryLocations"
|
|
181
|
+
id="location-heading"
|
|
182
|
+
/>
|
|
183
|
+
<Hero
|
|
184
|
+
heroType={HeroTypes.SecondaryLocations}
|
|
185
|
+
heading={
|
|
186
|
+
<Heading
|
|
187
|
+
level={HeadingLevels.One}
|
|
188
|
+
id="locations-hero"
|
|
189
|
+
text="Locations"
|
|
190
|
+
/>
|
|
191
|
+
}
|
|
192
|
+
subHeaderText={secondarySubHeaderText}
|
|
193
|
+
image={image}
|
|
194
|
+
/>
|
|
195
|
+
<Heading
|
|
196
|
+
level={HeadingLevels.Two}
|
|
197
|
+
text="HeroTypes.SecondaryResearch"
|
|
198
|
+
id="research-heading"
|
|
199
|
+
/>
|
|
163
200
|
<Hero
|
|
164
|
-
heroType={HeroTypes.
|
|
201
|
+
heroType={HeroTypes.SecondaryResearch}
|
|
165
202
|
heading={
|
|
166
|
-
<Heading
|
|
203
|
+
<Heading
|
|
204
|
+
level={HeadingLevels.One}
|
|
205
|
+
id="research-hero"
|
|
206
|
+
text="Research"
|
|
207
|
+
/>
|
|
167
208
|
}
|
|
168
209
|
subHeaderText={secondarySubHeaderText}
|
|
169
|
-
image={
|
|
210
|
+
image={image}
|
|
170
211
|
/>
|
|
171
|
-
|
|
212
|
+
<Heading
|
|
213
|
+
level={HeadingLevels.Two}
|
|
214
|
+
text="HeroTypes.SecondaryWhatsOn"
|
|
215
|
+
id="whats-on-heading"
|
|
216
|
+
/>
|
|
217
|
+
<Hero
|
|
218
|
+
heroType={HeroTypes.SecondaryWhatsOn}
|
|
219
|
+
heading={
|
|
220
|
+
<Heading
|
|
221
|
+
level={HeadingLevels.One}
|
|
222
|
+
id="whats-on-hero"
|
|
223
|
+
text="What's On"
|
|
224
|
+
/>
|
|
225
|
+
}
|
|
226
|
+
subHeaderText={secondarySubHeaderText}
|
|
227
|
+
image={image}
|
|
228
|
+
/>
|
|
229
|
+
</VStack>
|
|
172
230
|
</Story>
|
|
173
231
|
</Canvas>
|
|
174
232
|
|
|
175
|
-
|
|
176
|
-
<div className={"nypl-ds nypl--locations"}>
|
|
177
|
-
<Hero
|
|
178
|
-
heroType={HeroTypes.Secondary}
|
|
179
|
-
heading={<Heading level={1} id="1" text={"Locations"} blockName="hero" />}
|
|
180
|
-
subHeaderText={secondarySubHeaderText}
|
|
181
|
-
image={secondaryImage}
|
|
182
|
-
/>
|
|
183
|
-
</div>
|
|
184
|
-
</Canvas>
|
|
185
|
-
|
|
186
|
-
<Canvas>
|
|
187
|
-
<div className={"nypl-ds nypl--research"}>
|
|
188
|
-
<Hero
|
|
189
|
-
heroType={HeroTypes.Secondary}
|
|
190
|
-
heading={<Heading level={1} id="1" text={"Research"} blockName="hero" />}
|
|
191
|
-
subHeaderText={secondarySubHeaderText}
|
|
192
|
-
image={secondaryImage}
|
|
193
|
-
/>
|
|
194
|
-
</div>
|
|
195
|
-
</Canvas>
|
|
233
|
+
## All Variations
|
|
196
234
|
|
|
197
235
|
<Canvas>
|
|
198
|
-
<
|
|
199
|
-
<
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
236
|
+
<DSProvider>
|
|
237
|
+
<VStack spacing={10} align="stretch">
|
|
238
|
+
<Heading level={HeadingLevels.Two} text="Primary" id="primary-heading" />
|
|
239
|
+
<Hero
|
|
240
|
+
heroType={HeroTypes.Primary}
|
|
241
|
+
heading={
|
|
242
|
+
<Heading
|
|
243
|
+
level={HeadingLevels.One}
|
|
244
|
+
id="primary-hero"
|
|
245
|
+
text="Hero Primary"
|
|
246
|
+
/>
|
|
247
|
+
}
|
|
248
|
+
backgroundImageSrc="https://placeimg.com/1600/800/arch"
|
|
249
|
+
/>
|
|
250
|
+
<Heading
|
|
251
|
+
level={HeadingLevels.Two}
|
|
252
|
+
text="Secondary"
|
|
253
|
+
id="secondary-heading"
|
|
254
|
+
/>
|
|
255
|
+
<div className="nypl--locations">
|
|
256
|
+
<Hero
|
|
257
|
+
heroType={HeroTypes.Secondary}
|
|
258
|
+
heading={
|
|
259
|
+
<Heading
|
|
260
|
+
level={HeadingLevels.One}
|
|
261
|
+
id="secondary-hero"
|
|
262
|
+
text="Hero Secondary"
|
|
263
|
+
/>
|
|
264
|
+
}
|
|
265
|
+
subHeaderText={secondarySubHeaderText}
|
|
266
|
+
image={image}
|
|
267
|
+
/>
|
|
268
|
+
</div>
|
|
269
|
+
<Heading
|
|
270
|
+
level={HeadingLevels.Two}
|
|
271
|
+
text="Tertiary"
|
|
272
|
+
id="tertiary-heading"
|
|
273
|
+
/>
|
|
274
|
+
<Hero
|
|
275
|
+
heroType={HeroTypes.Tertiary}
|
|
276
|
+
heading={
|
|
277
|
+
<Heading
|
|
278
|
+
level={HeadingLevels.One}
|
|
279
|
+
id="tertiary-hero"
|
|
280
|
+
text="Hero Tertiary"
|
|
281
|
+
/>
|
|
282
|
+
}
|
|
283
|
+
subHeaderText={otherSubHeaderText}
|
|
284
|
+
/>
|
|
285
|
+
<Heading
|
|
286
|
+
level={HeadingLevels.Two}
|
|
287
|
+
text="Campaign"
|
|
288
|
+
id="campaign-heading"
|
|
289
|
+
/>
|
|
290
|
+
<Hero
|
|
291
|
+
heroType={HeroTypes.Campaign}
|
|
292
|
+
heading={
|
|
293
|
+
<Heading
|
|
294
|
+
level={HeadingLevels.One}
|
|
295
|
+
id="campaign-hero"
|
|
296
|
+
text="Hero Campaign"
|
|
297
|
+
/>
|
|
298
|
+
}
|
|
299
|
+
subHeaderText={otherSubHeaderText}
|
|
300
|
+
backgroundImageSrc="https://placeimg.com/2400/800/nature/grayscale"
|
|
301
|
+
image={image}
|
|
302
|
+
/>
|
|
303
|
+
<Box marginTop="30px" />
|
|
304
|
+
<Heading
|
|
305
|
+
level={HeadingLevels.Two}
|
|
306
|
+
text="FiftyFifty"
|
|
307
|
+
id="fiftyfifty-heading"
|
|
308
|
+
/>
|
|
309
|
+
<Hero
|
|
310
|
+
heroType={HeroTypes.FiftyFifty}
|
|
311
|
+
subHeaderText={otherSubHeaderText}
|
|
312
|
+
image={image}
|
|
313
|
+
/>
|
|
314
|
+
</VStack>
|
|
315
|
+
</DSProvider>
|
|
206
316
|
</Canvas>
|