@nypl/design-system-react-components 1.0.2 → 1.0.3-beta
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/README.md +0 -2
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +33 -10
- 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 +33 -10
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/radio.d.ts +8 -0
- package/dist/theme/components/template.d.ts +4 -1
- package/package.json +2 -3
- package/CHANGELOG.md +0 -1430
- package/src/__tests__/fileMock.ts +0 -6
- package/src/__tests__/setup.ts +0 -27
- package/src/__tests__/utils/utils.test.ts +0 -18
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
- package/src/components/Accordion/Accordion.stories.mdx +0 -333
- package/src/components/Accordion/Accordion.test.tsx +0 -237
- package/src/components/Accordion/Accordion.tsx +0 -137
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
- package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
- package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
- package/src/components/Autosuggest/_Autosuggest.scss +0 -51
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
- package/src/components/Button/Button.stories.mdx +0 -320
- package/src/components/Button/Button.test.tsx +0 -184
- package/src/components/Button/Button.tsx +0 -95
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
- package/src/components/Card/Card.stories.mdx +0 -1041
- package/src/components/Card/Card.test.tsx +0 -388
- package/src/components/Card/Card.tsx +0 -346
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
- package/src/components/Chakra/Box.stories.mdx +0 -52
- package/src/components/Chakra/Center.stories.mdx +0 -96
- package/src/components/Chakra/Flex.stories.mdx +0 -111
- package/src/components/Chakra/Grid.stories.mdx +0 -89
- package/src/components/Chakra/Stack.stories.mdx +0 -109
- package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
- package/src/components/Checkbox/Checkbox.test.tsx +0 -350
- package/src/components/Checkbox/Checkbox.tsx +0 -152
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
- package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
- package/src/components/DatePicker/DatePicker.test.tsx +0 -940
- package/src/components/DatePicker/DatePicker.tsx +0 -450
- package/src/components/DatePicker/_DatePicker.scss +0 -100
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
- package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
- package/src/components/Fieldset/Fieldset.test.tsx +0 -155
- package/src/components/Fieldset/Fieldset.tsx +0 -55
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
- package/src/components/Form/Form.stories.mdx +0 -426
- package/src/components/Form/Form.test.tsx +0 -234
- package/src/components/Form/Form.tsx +0 -124
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
- package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
- package/src/components/Grid/SimpleGrid.test.tsx +0 -79
- package/src/components/Grid/SimpleGrid.tsx +0 -49
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
- package/src/components/Heading/Heading.stories.mdx +0 -187
- package/src/components/Heading/Heading.test.tsx +0 -171
- package/src/components/Heading/Heading.tsx +0 -104
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
- package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
- package/src/components/Hero/Hero.stories.mdx +0 -378
- package/src/components/Hero/Hero.test.tsx +0 -611
- package/src/components/Hero/Hero.tsx +0 -203
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
- package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
- package/src/components/Icons/Icon.stories.mdx +0 -413
- package/src/components/Icons/Icon.test.tsx +0 -120
- package/src/components/Icons/Icon.tsx +0 -187
- package/src/components/Icons/IconSvgs.tsx +0 -64
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
- package/src/components/Image/Image.stories.mdx +0 -332
- package/src/components/Image/Image.test.tsx +0 -155
- package/src/components/Image/Image.tsx +0 -171
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
- package/src/components/Label/Label.stories.mdx +0 -100
- package/src/components/Label/Label.test.tsx +0 -116
- package/src/components/Label/Label.tsx +0 -55
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
- package/src/components/Link/Link.stories.mdx +0 -249
- package/src/components/Link/Link.test.tsx +0 -224
- package/src/components/Link/Link.tsx +0 -178
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
- package/src/components/List/List.stories.mdx +0 -393
- package/src/components/List/List.test.tsx +0 -265
- package/src/components/List/List.tsx +0 -156
- package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
- package/src/components/Logo/Logo.stories.mdx +0 -295
- package/src/components/Logo/Logo.test.tsx +0 -116
- package/src/components/Logo/Logo.tsx +0 -151
- package/src/components/Logo/LogoSvgs.tsx +0 -90
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
- package/src/components/Modal/Modal.stories.mdx +0 -294
- package/src/components/Modal/Modal.test.tsx +0 -157
- package/src/components/Modal/Modal.tsx +0 -154
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
- package/src/components/Notification/Notification.stories.mdx +0 -358
- package/src/components/Notification/Notification.test.tsx +0 -279
- package/src/components/Notification/Notification.tsx +0 -224
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
- package/src/components/Pagination/Pagination.stories.mdx +0 -184
- package/src/components/Pagination/Pagination.test.tsx +0 -419
- package/src/components/Pagination/Pagination.tsx +0 -269
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
- package/src/components/Placeholder/Placeholder.tsx +0 -19
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
- package/src/components/Radio/Radio.stories.mdx +0 -216
- package/src/components/Radio/Radio.test.tsx +0 -247
- package/src/components/Radio/Radio.tsx +0 -119
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
- package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
- package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
- package/src/components/RadioGroup/RadioGroup.tsx +0 -171
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
- package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
- package/src/components/SearchBar/SearchBar.test.tsx +0 -435
- package/src/components/SearchBar/SearchBar.tsx +0 -210
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
- package/src/components/Select/Select.stories.mdx +0 -439
- package/src/components/Select/Select.test.tsx +0 -358
- package/src/components/Select/Select.tsx +0 -183
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
- package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
- package/src/components/Slider/Slider.stories.mdx +0 -628
- package/src/components/Slider/Slider.test.tsx +0 -736
- package/src/components/Slider/Slider.tsx +0 -322
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
- package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
- package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
- package/src/components/StatusBadge/StatusBadge.tsx +0 -35
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
- package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
- package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
- package/src/components/StructuredContent/StructuredContent.tsx +0 -139
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
- package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
- package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
- package/src/components/StyleGuide/ColorCard.tsx +0 -43
- package/src/components/StyleGuide/Colors.stories.mdx +0 -201
- package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
- package/src/components/StyleGuide/Forms.stories.mdx +0 -94
- package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
- package/src/components/StyleGuide/Typography.stories.mdx +0 -419
- package/src/components/Table/Table.stories.mdx +0 -272
- package/src/components/Table/Table.test.tsx +0 -241
- package/src/components/Table/Table.tsx +0 -152
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
- package/src/components/Tabs/Tabs.stories.mdx +0 -338
- package/src/components/Tabs/Tabs.test.tsx +0 -298
- package/src/components/Tabs/Tabs.tsx +0 -264
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
- package/src/components/Template/Template.stories.mdx +0 -695
- package/src/components/Template/Template.test.tsx +0 -309
- package/src/components/Template/Template.tsx +0 -326
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
- package/src/components/Text/Text.stories.mdx +0 -103
- package/src/components/Text/Text.test.tsx +0 -63
- package/src/components/Text/Text.tsx +0 -50
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
- package/src/components/TextInput/TextInput.stories.mdx +0 -268
- package/src/components/TextInput/TextInput.test.tsx +0 -451
- package/src/components/TextInput/TextInput.tsx +0 -240
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
- package/src/components/Toggle/Toggle.stories.mdx +0 -237
- package/src/components/Toggle/Toggle.test.tsx +0 -170
- package/src/components/Toggle/Toggle.tsx +0 -128
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
- package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
- package/src/docs/Chakra.stories.mdx +0 -563
- package/src/docs/Welcome.stories.mdx +0 -148
- package/src/helpers/types.ts +0 -1
- package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
- package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
- package/src/hooks/useCarouselStyles.stories.mdx +0 -30
- package/src/hooks/useCarouselStyles.ts +0 -35
- package/src/hooks/useNYPLTheme.stories.mdx +0 -98
- package/src/hooks/useNYPLTheme.ts +0 -91
- package/src/hooks/useWindowSize.stories.mdx +0 -23
- package/src/hooks/useWindowSize.ts +0 -40
- package/src/index.ts +0 -136
- package/src/resources.scss +0 -6
- package/src/styles/base/_01-breakpoints.scss +0 -27
- package/src/styles/base/_02-mixins.scss +0 -103
- package/src/styles/base/_place-holder.scss +0 -33
- package/src/styles/space/_space-inline.scss +0 -79
- package/src/styles/space/_space-inset.scss +0 -57
- package/src/styles/space/_space-stack.scss +0 -116
- package/src/styles.scss +0 -23
- package/src/theme/components/accordion.ts +0 -25
- package/src/theme/components/breadcrumb.ts +0 -94
- package/src/theme/components/button.ts +0 -133
- package/src/theme/components/buttonGroup.ts +0 -10
- package/src/theme/components/card.ts +0 -237
- package/src/theme/components/checkbox.ts +0 -110
- package/src/theme/components/checkboxGroup.ts +0 -10
- package/src/theme/components/componentWrapper.ts +0 -14
- package/src/theme/components/customTable.ts +0 -77
- package/src/theme/components/datePicker.ts +0 -17
- package/src/theme/components/fieldset.ts +0 -23
- package/src/theme/components/global.ts +0 -91
- package/src/theme/components/globalMixins.ts +0 -24
- package/src/theme/components/heading.ts +0 -79
- package/src/theme/components/helperErrorText.ts +0 -14
- package/src/theme/components/hero.ts +0 -238
- package/src/theme/components/horizontalRule.ts +0 -17
- package/src/theme/components/icon.ts +0 -88
- package/src/theme/components/image.ts +0 -136
- package/src/theme/components/label.ts +0 -15
- package/src/theme/components/link.ts +0 -63
- package/src/theme/components/list.ts +0 -88
- package/src/theme/components/logo.ts +0 -58
- package/src/theme/components/notification.ts +0 -132
- package/src/theme/components/pagination.ts +0 -17
- package/src/theme/components/progressIndicator.ts +0 -67
- package/src/theme/components/radio.ts +0 -103
- package/src/theme/components/radioGroup.ts +0 -10
- package/src/theme/components/searchBar.ts +0 -19
- package/src/theme/components/select.ts +0 -72
- package/src/theme/components/skeletonLoader.ts +0 -113
- package/src/theme/components/skipNavigation.ts +0 -29
- package/src/theme/components/slider.ts +0 -95
- package/src/theme/components/statusBadge.ts +0 -26
- package/src/theme/components/structuredContent.ts +0 -149
- package/src/theme/components/tabs.ts +0 -109
- package/src/theme/components/template.ts +0 -114
- package/src/theme/components/text.ts +0 -38
- package/src/theme/components/textInput.ts +0 -65
- package/src/theme/components/toggle.ts +0 -109
- package/src/theme/components/videoPlayer.ts +0 -47
- package/src/theme/foundations/breakpoints.ts +0 -24
- package/src/theme/foundations/colors.ts +0 -212
- package/src/theme/foundations/global.ts +0 -43
- package/src/theme/foundations/radii.ts +0 -7
- package/src/theme/foundations/shadows.ts +0 -5
- package/src/theme/foundations/spacing.ts +0 -136
- package/src/theme/foundations/typography.ts +0 -107
- package/src/theme/index.ts +0 -131
- package/src/theme/provider.tsx +0 -9
- package/src/theme/types.ts +0 -1
- package/src/utils/componentCategories.ts +0 -152
- package/src/utils/interfaces.ts +0 -5
- package/src/utils/utils.ts +0 -84
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// HorizontalRule
|
|
2
|
-
import { Box, chakra, useStyleConfig } from "@chakra-ui/react";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
|
|
5
|
-
export interface HorizontalRuleProps {
|
|
6
|
-
/** Optional alignment value to align the horizontal rule to one side or the
|
|
7
|
-
* other when the width is less than 100%. If omitted, the horizontal rule
|
|
8
|
-
* will have a default center alignment. */
|
|
9
|
-
align?: "left" | "right";
|
|
10
|
-
/** ClassName you can add in addition to `horizontal-rule` */
|
|
11
|
-
className?: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const HorizontalRule = chakra((props: HorizontalRuleProps) => {
|
|
15
|
-
const { align, className, ...rest } = props;
|
|
16
|
-
const styles = useStyleConfig("HorizontalRule", { align });
|
|
17
|
-
|
|
18
|
-
const finalStyles = {
|
|
19
|
-
...styles,
|
|
20
|
-
height: "2px",
|
|
21
|
-
width: "100%",
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return <Box as="hr" className={className} __css={finalStyles} {...rest} />;
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export default HorizontalRule;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`HorizontalRule renders the UI snapshot correctly 1`] = `
|
|
4
|
-
<hr
|
|
5
|
-
className="css-mvtkpx"
|
|
6
|
-
/>
|
|
7
|
-
`;
|
|
8
|
-
|
|
9
|
-
exports[`HorizontalRule renders the UI snapshot correctly 2`] = `
|
|
10
|
-
<hr
|
|
11
|
-
className="css-j99tgf"
|
|
12
|
-
/>
|
|
13
|
-
`;
|
|
14
|
-
|
|
15
|
-
exports[`HorizontalRule renders the UI snapshot correctly 3`] = `
|
|
16
|
-
<hr
|
|
17
|
-
className="css-21sffo"
|
|
18
|
-
/>
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
exports[`HorizontalRule renders the UI snapshot correctly 4`] = `
|
|
22
|
-
<hr
|
|
23
|
-
className="css-mvtkpx"
|
|
24
|
-
/>
|
|
25
|
-
`;
|
|
26
|
-
|
|
27
|
-
exports[`HorizontalRule renders the UI snapshot correctly 5`] = `
|
|
28
|
-
<hr
|
|
29
|
-
className="css-mvtkpx"
|
|
30
|
-
/>
|
|
31
|
-
`;
|
|
32
|
-
|
|
33
|
-
exports[`HorizontalRule renders the UI snapshot correctly 6`] = `
|
|
34
|
-
<hr
|
|
35
|
-
className="css-1pg2j4r"
|
|
36
|
-
/>
|
|
37
|
-
`;
|
|
38
|
-
|
|
39
|
-
exports[`HorizontalRule renders the UI snapshot correctly 7`] = `
|
|
40
|
-
<hr
|
|
41
|
-
className="css-mvtkpx"
|
|
42
|
-
data-testid="props"
|
|
43
|
-
/>
|
|
44
|
-
`;
|
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArgsTable,
|
|
3
|
-
Canvas,
|
|
4
|
-
Description,
|
|
5
|
-
Meta,
|
|
6
|
-
Story,
|
|
7
|
-
} from "@storybook/addon-docs";
|
|
8
|
-
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
|
|
10
|
-
import Heading from "../Heading/Heading";
|
|
11
|
-
import Icon from "./Icon";
|
|
12
|
-
import iconSvgs from "./IconSvgs";
|
|
13
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
-
|
|
15
|
-
<Meta
|
|
16
|
-
title={getCategory("Icon")}
|
|
17
|
-
component={Icon}
|
|
18
|
-
decorators={[withDesign]}
|
|
19
|
-
parameters={{
|
|
20
|
-
design: {
|
|
21
|
-
type: "figma",
|
|
22
|
-
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A3945",
|
|
23
|
-
},
|
|
24
|
-
jest: ["Icon.test.tsx"],
|
|
25
|
-
}}
|
|
26
|
-
argTypes={{
|
|
27
|
-
align: {
|
|
28
|
-
table: { defaultValue: { summary: "none" } },
|
|
29
|
-
},
|
|
30
|
-
children: { table: { disable: true } },
|
|
31
|
-
className: { control: false },
|
|
32
|
-
color: {
|
|
33
|
-
control: { type: "select" },
|
|
34
|
-
table: { defaultValue: { summary: "ui.black" } },
|
|
35
|
-
options: [
|
|
36
|
-
"ui.black",
|
|
37
|
-
"ui.white",
|
|
38
|
-
"brand.primary",
|
|
39
|
-
"brand.secondary",
|
|
40
|
-
"section.blogs.primary",
|
|
41
|
-
"section.blogs.secondary",
|
|
42
|
-
"section.books-and-more.primary",
|
|
43
|
-
"section.books-and-more.secondary",
|
|
44
|
-
"section.education.primary",
|
|
45
|
-
"section.education.secondary",
|
|
46
|
-
"section.locations.primary",
|
|
47
|
-
"section.locations.secondary",
|
|
48
|
-
"section.research.primary",
|
|
49
|
-
"section.research.secondary",
|
|
50
|
-
"section.research-library.lpa",
|
|
51
|
-
"section.research-library.schomburg",
|
|
52
|
-
"section.research-library.schwartzman",
|
|
53
|
-
"section.whats-on.primary",
|
|
54
|
-
"section.whats-on.secondary",
|
|
55
|
-
],
|
|
56
|
-
},
|
|
57
|
-
iconRotation: {
|
|
58
|
-
table: { defaultValue: { summary: "rotate0" } },
|
|
59
|
-
},
|
|
60
|
-
id: { control: false },
|
|
61
|
-
name: {},
|
|
62
|
-
size: {
|
|
63
|
-
table: { defaultValue: { summary: "medium" } },
|
|
64
|
-
},
|
|
65
|
-
title: {
|
|
66
|
-
control: false,
|
|
67
|
-
table: { defaultValue: { summary: "`${name} icon`" } },
|
|
68
|
-
},
|
|
69
|
-
type: {
|
|
70
|
-
control: false,
|
|
71
|
-
table: { defaultValue: { summary: "default" } },
|
|
72
|
-
},
|
|
73
|
-
}}
|
|
74
|
-
/>
|
|
75
|
-
|
|
76
|
-
# Icon
|
|
77
|
-
|
|
78
|
-
| Component Version | DS Version |
|
|
79
|
-
| ----------------- | ---------- |
|
|
80
|
-
| Added | `0.0.4` |
|
|
81
|
-
| Latest | `0.28.0` |
|
|
82
|
-
|
|
83
|
-
## Table of Contents
|
|
84
|
-
|
|
85
|
-
- [Overview](#overview)
|
|
86
|
-
- [Component Props](#component-props)
|
|
87
|
-
- [Accessibility](#accessibility)
|
|
88
|
-
- [Rotation Types](#rotation-types)
|
|
89
|
-
- [IconColors Types](#icon-colors-types)
|
|
90
|
-
- [IconSizes Types](#icon-sizes-types)
|
|
91
|
-
- [All Display Icons](#all-display-icons)
|
|
92
|
-
- [Custom Icons](#custom-icons)
|
|
93
|
-
|
|
94
|
-
## Overview
|
|
95
|
-
|
|
96
|
-
<Description of={Icon} />
|
|
97
|
-
|
|
98
|
-
## Component Props
|
|
99
|
-
|
|
100
|
-
<Canvas withToolbar>
|
|
101
|
-
<Story
|
|
102
|
-
name="Icon with Controls"
|
|
103
|
-
args={{
|
|
104
|
-
align: "none",
|
|
105
|
-
className: undefined,
|
|
106
|
-
color: "ui.black",
|
|
107
|
-
decorative: true,
|
|
108
|
-
iconRotation: "rotate0",
|
|
109
|
-
id: "icon-id",
|
|
110
|
-
name: "check",
|
|
111
|
-
size: "xxlarge",
|
|
112
|
-
title: undefined,
|
|
113
|
-
type: "default",
|
|
114
|
-
}}
|
|
115
|
-
>
|
|
116
|
-
{(args) => <Icon {...args} />}
|
|
117
|
-
</Story>
|
|
118
|
-
</Canvas>
|
|
119
|
-
|
|
120
|
-
<ArgsTable story="Icon with Controls" />
|
|
121
|
-
|
|
122
|
-
export const iconRow = (iconName, opts = {}) => {
|
|
123
|
-
// We'll use this setup function to render all the icons in a list item.
|
|
124
|
-
// Some icons display better with a dark background.
|
|
125
|
-
const styles = { display: "block" };
|
|
126
|
-
const {
|
|
127
|
-
size = "large",
|
|
128
|
-
iconRotation = "rotate0",
|
|
129
|
-
color = "ui.black",
|
|
130
|
-
displayValue = iconName,
|
|
131
|
-
} = opts;
|
|
132
|
-
let key = iconName;
|
|
133
|
-
if (iconName.indexOf("Negative") !== -1 || color.indexOf("White") !== -1) {
|
|
134
|
-
styles.backgroundColor = "#000";
|
|
135
|
-
styles.padding = "1rem";
|
|
136
|
-
}
|
|
137
|
-
// The following is just to fix duplicate React key issues.
|
|
138
|
-
if (iconRotation !== "rotate0") {
|
|
139
|
-
key += `-${iconRotation}`;
|
|
140
|
-
}
|
|
141
|
-
if (color !== "ui.black") {
|
|
142
|
-
key += `-${color}`;
|
|
143
|
-
}
|
|
144
|
-
if (size !== "large") {
|
|
145
|
-
key += `-${size}`;
|
|
146
|
-
}
|
|
147
|
-
return (
|
|
148
|
-
<li
|
|
149
|
-
key={key}
|
|
150
|
-
style={{ marginBottom: "var(--nypl-space-l)", textAlign: "center" }}
|
|
151
|
-
>
|
|
152
|
-
<Heading level="four">{displayValue}</Heading>
|
|
153
|
-
<span style={styles}>
|
|
154
|
-
<Icon
|
|
155
|
-
name={iconName}
|
|
156
|
-
size={size}
|
|
157
|
-
iconRotation={iconRotation}
|
|
158
|
-
color={color}
|
|
159
|
-
/>
|
|
160
|
-
</span>
|
|
161
|
-
</li>
|
|
162
|
-
);
|
|
163
|
-
};
|
|
164
|
-
export const icons = [];
|
|
165
|
-
export const rotations = [];
|
|
166
|
-
export const colors = [];
|
|
167
|
-
export const sizes = [];
|
|
168
|
-
export const iconColorsValues = [
|
|
169
|
-
"ui.black",
|
|
170
|
-
"ui.white",
|
|
171
|
-
"brand.primary",
|
|
172
|
-
"brand.secondary",
|
|
173
|
-
"section.blogs.primary",
|
|
174
|
-
"section.blogs.secondary",
|
|
175
|
-
"section.books-and-more.primary",
|
|
176
|
-
"section.books-and-more.secondary",
|
|
177
|
-
"section.education.primary",
|
|
178
|
-
"section.education.secondary",
|
|
179
|
-
"section.locations.primary",
|
|
180
|
-
"section.locations.secondary",
|
|
181
|
-
"section.research.primary",
|
|
182
|
-
"section.research.secondary",
|
|
183
|
-
"section.research-library.lpa",
|
|
184
|
-
"section.research-library.schomburg",
|
|
185
|
-
"section.research-library.schwartzman",
|
|
186
|
-
"section.whats-on.primary",
|
|
187
|
-
"section.whats-on.secondary",
|
|
188
|
-
];
|
|
189
|
-
export const iconNamesValues = [
|
|
190
|
-
"accessibilityFull",
|
|
191
|
-
"accessibilityPartial",
|
|
192
|
-
"actionCheckCircle",
|
|
193
|
-
"actionHelpDefault",
|
|
194
|
-
"actionHelpOutline",
|
|
195
|
-
"alertNotificationImportant",
|
|
196
|
-
"actionLaunch",
|
|
197
|
-
"arrow",
|
|
198
|
-
"check",
|
|
199
|
-
"clock",
|
|
200
|
-
"close",
|
|
201
|
-
"download",
|
|
202
|
-
"errorFilled",
|
|
203
|
-
"errorOutline",
|
|
204
|
-
"fileTypeAudio",
|
|
205
|
-
"fileTypeDoc",
|
|
206
|
-
"fileTypeGenericDoc",
|
|
207
|
-
"fileTypeImage",
|
|
208
|
-
"fileTypePdf",
|
|
209
|
-
"fileTypeSpreadsheet",
|
|
210
|
-
"fileTypeVideo",
|
|
211
|
-
"headset",
|
|
212
|
-
"minus",
|
|
213
|
-
"plus",
|
|
214
|
-
"search",
|
|
215
|
-
"speakerNotes",
|
|
216
|
-
"utilityAccountFilled",
|
|
217
|
-
"utilityAccountUnfilled",
|
|
218
|
-
"utilityHamburger",
|
|
219
|
-
"utilitySearch",
|
|
220
|
-
];
|
|
221
|
-
export const iconRotationTypesValues = [
|
|
222
|
-
"rotate0",
|
|
223
|
-
"rotate90",
|
|
224
|
-
"rotate180",
|
|
225
|
-
"rotate270",
|
|
226
|
-
];
|
|
227
|
-
export const iconSizesValues = [
|
|
228
|
-
"default",
|
|
229
|
-
"small",
|
|
230
|
-
"medium",
|
|
231
|
-
"large",
|
|
232
|
-
"xlarge",
|
|
233
|
-
"xxlarge",
|
|
234
|
-
"xxxlarge",
|
|
235
|
-
];
|
|
236
|
-
for (const icon in iconNamesValues) {
|
|
237
|
-
icons.push(
|
|
238
|
-
iconRow(iconNamesValues[icon], {
|
|
239
|
-
displayValue: iconNamesValues[icon],
|
|
240
|
-
size: "xxlarge",
|
|
241
|
-
})
|
|
242
|
-
);
|
|
243
|
-
}
|
|
244
|
-
for (const iconRotation in iconRotationTypesValues) {
|
|
245
|
-
rotations.push(
|
|
246
|
-
iconRow("arrow", {
|
|
247
|
-
displayValue: iconRotationTypesValues[iconRotation],
|
|
248
|
-
iconRotation: iconRotationTypesValues[iconRotation],
|
|
249
|
-
size: "xxlarge",
|
|
250
|
-
})
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
|
-
for (const iconColor in iconColorsValues) {
|
|
254
|
-
colors.push(
|
|
255
|
-
iconRow("errorFilled", {
|
|
256
|
-
color: iconColorsValues[iconColor],
|
|
257
|
-
displayValue: iconColorsValues[iconColor],
|
|
258
|
-
size: "xxlarge",
|
|
259
|
-
})
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
for (const iconSize in iconSizesValues) {
|
|
263
|
-
sizes.push(
|
|
264
|
-
iconRow("actionCheckCircle", {
|
|
265
|
-
displayValue: iconSizesValues[iconSize],
|
|
266
|
-
size: iconSizesValues[iconSize],
|
|
267
|
-
})
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
export const allIconsType = (list) => (
|
|
272
|
-
<ul style={{ listStyle: "none" }}>{list}</ul>
|
|
273
|
-
);
|
|
274
|
-
|
|
275
|
-
## Accessibility
|
|
276
|
-
|
|
277
|
-
For accessibility purposes, every Reservoir Design System (DS) `Icon` will
|
|
278
|
-
render the `svg` element with its icon name in the `title` element. The default
|
|
279
|
-
text in the `title` element is the icon's code name. Pass in better descriptive
|
|
280
|
-
text in the `title` prop when using the `Icon` component in your application.
|
|
281
|
-
This will give screenreaders a better descriptive title for the `svg` graphic.
|
|
282
|
-
|
|
283
|
-
`Icon`s are decorative by default. This means that they are presentational and
|
|
284
|
-
screenreaders will not read them because the `aria-hidden` attribute is set to
|
|
285
|
-
`true`.
|
|
286
|
-
|
|
287
|
-
Resources:
|
|
288
|
-
|
|
289
|
-
- [W3C Design System SVG Icons](https://design-system.w3.org/styles/svg-icons.html)
|
|
290
|
-
- [CSS-Tricks Accessible SVG Icons](https://css-tricks.com/accessible-svg-icons/)
|
|
291
|
-
- [Chakra UI Icon](https://chakra-ui.com/docs/components/media-and-icons/icon)
|
|
292
|
-
|
|
293
|
-
## Rotation Types
|
|
294
|
-
|
|
295
|
-
Passing an `iconRotation` prop with a value from `IconRotationTypes` allows
|
|
296
|
-
the icon to be rotated when it is rendered. The values are:
|
|
297
|
-
`"rotate0"`, `"rotate90"`, `"rotate180"`, and `"rotate270"`.
|
|
298
|
-
|
|
299
|
-
Note: All of the examples below have been rendered with the `size` prop set to
|
|
300
|
-
`xxlarge`.
|
|
301
|
-
|
|
302
|
-
```jsx
|
|
303
|
-
// Example
|
|
304
|
-
<Icon iconRotation="rotate180" name="arrow" size="xxlarge" />
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
<Canvas>
|
|
308
|
-
<Story name="Icon Rotation">{allIconsType(rotations)}</Story>
|
|
309
|
-
</Canvas>
|
|
310
|
-
|
|
311
|
-
## IconColors Types
|
|
312
|
-
|
|
313
|
-
Update an SVG icon by passing a `color` prop with a value from the `IconColors`
|
|
314
|
-
type. The values are: `"ui.black"`, `"ui.white"`, `"brand.primary"`,
|
|
315
|
-
`"brand.secondary"`, `"section.blogs.primary"`, `"section.blogs.secondary"`,
|
|
316
|
-
`"section.books-and-more.primary"`, `"section.books-and-more.secondary"`,
|
|
317
|
-
`"section.education.primary"`, `"section.education.secondary"`,
|
|
318
|
-
`"section.locations.primary"`, `"section.locations.secondary"`,
|
|
319
|
-
`"section.research.primary"`, `"section.research.secondary"`,
|
|
320
|
-
`"section.research-library.lpa"`, `"section.research-library.schomburg"`,
|
|
321
|
-
`"section.research-library.schwartzman"`, `"section.whats-on.primary"`,
|
|
322
|
-
`"section.whats-on.secondary"`.
|
|
323
|
-
|
|
324
|
-
Note: All of the examples below have been rendered with the `size` prop set to
|
|
325
|
-
`xxlarge`.
|
|
326
|
-
|
|
327
|
-
```jsx
|
|
328
|
-
// Example
|
|
329
|
-
<Icon color="brand.primary" name="errorFilled" size="xxlarge" />
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
<Canvas>
|
|
333
|
-
<Story name="Icon Colors">{allIconsType(colors)}</Story>
|
|
334
|
-
</Canvas>
|
|
335
|
-
|
|
336
|
-
## IconSizes Types
|
|
337
|
-
|
|
338
|
-
Update an SVG icon by passing a `size` prop with a value from `IconSizes`. The
|
|
339
|
-
values are: `"default"`, `"small"`, `"medium"`, `"large"`, `"xlarge"`,
|
|
340
|
-
`"xxlarge"`, `"xxxlarge"`.
|
|
341
|
-
|
|
342
|
-
Note: `"default"` sets the width to `100%` and the rendered icon will expand to
|
|
343
|
-
fill the full width of the parent element.
|
|
344
|
-
|
|
345
|
-
```jsx
|
|
346
|
-
// Example
|
|
347
|
-
<Icon name="actionCheckCircle" size="xxlarge" />
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
<Canvas>
|
|
351
|
-
<Story name="Icon Sizes">{allIconsType(sizes)}</Story>
|
|
352
|
-
</Canvas>
|
|
353
|
-
|
|
354
|
-
## All Display Icons
|
|
355
|
-
|
|
356
|
-
The following icons are for generic purposes. All the available icon names can
|
|
357
|
-
be found in the `IconNames` type. They are: `"accessibilityFull"`,
|
|
358
|
-
`"accessibilityPartial"`, `"actionCheckCircle"`, `"actionHelpDefault"`,
|
|
359
|
-
`"actionHelpOutline"`, `"alertNotificationImportant"`, `"actionLaunch"`,
|
|
360
|
-
`"arrow"`, `"check"`, `"clock"`, `"close"`, `"download"`, `"errorFilled"`,
|
|
361
|
-
`"errorOutline"`, `"fileTypeAudio"`, `"fileTypeDoc"`,
|
|
362
|
-
`"fileTypeGenericDoc"`, `"fileTypeImage"`, `"fileTypePdf"`,
|
|
363
|
-
`"fileTypeSpreadsheet"`, `"fileTypeVideo"`, `"headset"`, `"minus"`,
|
|
364
|
-
`"plus"`, `"search"`, `"speakerNotes"`, `"utilityAccountFilled"`,
|
|
365
|
-
`"utilityAccountUnfilled"`, `"utilityHamburger"`, `"utilitySearch"`.
|
|
366
|
-
|
|
367
|
-
Note: All of the examples below have been rendered with the `size` prop set to
|
|
368
|
-
`xxlarge`.
|
|
369
|
-
|
|
370
|
-
<Canvas withToolbar>
|
|
371
|
-
<Story name="All Icons">{allIconsType(icons)}</Story>
|
|
372
|
-
</Canvas>
|
|
373
|
-
|
|
374
|
-
## Custom Icons
|
|
375
|
-
|
|
376
|
-
If you'd like to pass a custom svg to your application, you can pass it a
|
|
377
|
-
child to the `Icon` component.
|
|
378
|
-
|
|
379
|
-
```jsx
|
|
380
|
-
<Icon {...props}>
|
|
381
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750" fill="#6BE9D8">
|
|
382
|
-
<g>
|
|
383
|
-
<path d="M709.9 399.9c-4.5-145.7-115.8-169.6-151.1-170.3-4.2-.1-6.7-4.9-4.2-8.4L632 110.6c3.4-4.8 2.4-11.7-2.3-15.3-15.9-12-36.3-21.4-60.3-28.8-4.3-1.3-8.6 2-8.5 6.5 1.2 50.5-27.6 114.3-36.5 132.9-1 2-3.9 1.9-4.8-.1C485.1 124 397.7 95.1 327.9 104.4c-71.3 9.5-101.6 26.5-163.5 96.6-61.9 70.1-80.2 260.7-82.1 309.4C80.4 559 40 617.1 40 617.1c154 81.4 340.9 68.2 402.2 61.9 44.4-4.6 68.5-21.8 78.5-30.9 2.5-2.3 1.4-6.6-2-7.3-73.8-15.7-80.7-37.2-94.8-63.5-14.5-27.1 8.2-135.7 104.2-108.6 79.6 22.5 51.5 114.9 39.6 145.8-1.4 3.7 2.4 7.3 6 5.6 34-16.5 140.5-79.5 136.2-220.2zM234.7 181.3c17.7-17 69-56.7 167.1-38 99.8 18.9 98.5 109.5 80.4 141.7-2.3 4.1-7 4.5-8.8.1-11.1-27.7-45.5-97.4-112-108-61.8-9.8-105.6 1.7-124.2 8.3-2.5.8-4.4-2.3-2.5-4.1zm-60.2 72l16.9-27.4c5.1-8.3 13.2-14.3 22.6-16.6 16.3-4.1 33-6.9 49.5-8.9 40.3-4.8 79.4-2.1 116.7 15.1 17.4 8 33.6 18.2 46.1 32.9 11.4 13.4 19 29.6 23.7 46.5 1.8 6.3 3.2 12.8 4.3 19.3.6 3.2-.1 6.6-1.7 9.4l-15.8 27.1c-1.7 3-6.1 2.4-7.1-.9-6.7-22-17.9-43.9-32.8-61-12.6-14.4-29.1-23.5-46.1-31.6-12.2-5.8-24.9-10.5-38-13.6-35.3-8.4-71.9-4.4-106.3 5.9-9.2 2.8-18.3 5.9-27.2 9.5-2.3.9-4.9-.7-5.2-3.2-.2-1 0-1.8.4-2.5zm-21.9 64.2l11.7-40.8c1.2-4.3 5-7.5 9.5-7.9l5.2-.5s87.8-25.9 160.4 9.8c56.9 28 68.3 78.8 70.5 99.5.6 5.5-1.4 11-5.3 14.8L389 407.5c-3.8 3.7-10.2 2.2-12-2.8-6-17.2-13.8-34.1-23.5-49.3-5.8-9.1-12.7-18.3-21.6-24.6-16.2-11.5-36.5-19.2-55.7-23.9-14.4-3.6-29.3-4.8-44.1-3.8-12.9.8-25.6 3.2-38 6.7-7.2 2-14.3 4.4-21.3 7.1-3.8 1.5-7.6 3-11.3 4.7-.6.2-1.9.7-3.4 1.3-3.2 1.1-6.5-2-5.5-5.4zM410 465.8c4.4 2 5.8 7.5 3 11.4l-14.8 20.7c-3.5 4.9-9.9 6.6-15.4 4.3l-25.5-10.9c-4.5-1.9-5.5-7.8-1.9-11.1l17.3-15.7c5.8-5.7 14.6-9.1 22-5.8l15.3 7.1zm-270.3-96.3l4.5-23.6c1.2-6.5 5.7-11.9 11.8-14.3 15.7-6.2 50.5-14.3 109.2-.1 62.6 15.1 83.4 66.2 90 91.6 2.2 8.5-.7 17.5-7.5 23.1l-13.4 11.1c-4.2 3.4-10.5 1.5-12-3.7-5.3-18.5-21.2-54.5-66.1-73.7-45.5-19.5-88.3-9.3-107.8-2.6-4.8 1.5-9.7-2.8-8.7-7.8zm-4.4 29.7c.1-5.4 4.2-9.9 9.6-10.6 30.7-3.8 127.8-7.6 155.8 89.7 1.6 5.4-.5 11.3-5.2 14.4l-15.1 10.1c-5 3.4-11.9 1.2-14-4.5-9.5-26-40.2-85.6-119.7-68.3-6.2 1.3-12-3.4-11.9-9.7l.5-21.1zm-9.1 72.9l3.3-19.1c1.4-8.3 9-14.1 17.4-13.1 21.2 2.4 60.2 11.5 85.5 44.9 5.8 7.7 9.2 16.8 10 26.4l.3 3.4c.6 7.1-2.7 14-8.7 18l-12.1 8.2c-4.4 3-10.5 1.2-12.6-3.7l-8.2-24.4c-3.5-10.4-11-19.1-20.8-24.1l-11.1-5.6c-6.7-3.4-14.2-5-21.7-4.5l-14.8.9c-4 .2-7.1-3.4-6.5-7.3zm-15.5 55.7l9.4-30.7c1.8-5.9 8-9.2 13.9-7.4 18.3 5.6 53.5 21.9 54.3 65.2 0 2.7-1.3 5.1-3.6 6.4-8.5 4.9-26.8 12.9-27.8 12-1.2-1.1.8-42.6-39.7-37.7-1.2.1-2.5-.1-3.6-.7-2.5-1.3-3.8-4.3-2.9-7.1zm63.8 100.5c-1.1 6.4-7.4 10.5-13.7 8.9l-85.5-21.9c-3.9-1-5.7-5.5-3.6-8.9l31.4-51.7c1.8-3 5.5-4.5 8.9-3.4 8.3 2.6 22.4 9 24.4 23.2.6 4.3-.9 8.7-4 11.8-1.4 1.4-3 2.5-4.8 3.2l-26.8 10.4c-2.1.8-2.6 3.5-1 5 .6.5 1.3.8 2.1.8l19.5-.2c3.7 0 7.4-.4 11.1-1 12.8-2.1 47-5 42 23.8zm72.1 12.7c-2.3 2.8-5 5.9-8.8 6.3-1.5.2-2.9 0-4.4-.2-1.5-.2-2.9-.2-4.4-.3l-10.5-.9c-3.8-.3-7.5-.7-11.3-1.2-2.9-.3-5.8-.7-8.6-1.2-4-.7-6.6-4.7-5.4-8.6 2.5-8.6 4.2-23.7-8.4-37.6-2-2.2-1.4-5.8 1.2-7.3l24.8-14.1c3.6-2.1 8-2.1 11.6-.1 8.2 4.5 22.3 14.1 29 28.8 5.4 12.1 3.4 26.2-4.8 36.4zm67 3.1c-4.2 4.1-9.8 6.5-15.7 6.8l-24.2 1.1c-4.2.2-7.1-4.2-5.3-8 8.1-17 20.6-55.5-19.4-76.9-3-1.6-3.3-5.9-.4-7.8l15.3-10.2c4.7-3.2 10.8-3.5 15.8-.7 22.8 12.3 80.6 50.2 33.9 95.7zm118.2-5.2c3.5 2.7 1.6 8.2-2.8 8.3l-77.5.8c-4.8.1-8.1-5-6-9.3 30.8-64.1-17.7-97.3-37.5-107.6-3.5-1.8-4-6.7-.9-9.1l9.6-7.7c7.2-5.7 16.7-7.7 25.6-5.4 14.1 3.7 26.1 11.8 33.7 18 5.4 4.4 8.6 10.9 8.8 17.9.9 51.1 29.9 80.9 47 94.1zm76.6-205c-12.4 0-36.1 1.2-52.5 10.2-4.7 2.6-10.2 3.1-15.4 1.7l-26.8-7.4c-4-1.1-5.6-5.9-3-9.2l14.9-18.8c5.2-7.1 13-11.6 21.6-10.2 17.4 2.9 46.3 10.1 63.6 27.4 2.6 2.3 1 6.3-2.4 6.3zm115 112c-1.7 2.2-5 2.2-6.8 0l-.1-.1c-1.8-2.3-7.3-138.3-146.4-168.7-5.4-1.2-7.7-7.5-4.3-11.9l19.6-25.6c4.6-6 12.2-8.9 19.7-7.5 28.1 5.5 95.7 25.7 120.5 96.6 29.5 84.5 13.9 96.8-2.2 117.2zm46.4-88.4c-.8 4.1-6.6 4.2-7.5.1-9.8-43.6-44.3-150.3-147.6-150.8-4.4 0-7.2-4.8-5-8.6l17.6-31.4c4.4-7.9 19.3-9.1 28.1-7 41.1 9.9 143 47.6 114.4 197.7z" />
|
|
384
|
-
</g>
|
|
385
|
-
</svg>
|
|
386
|
-
</Icon>
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
<Canvas>
|
|
390
|
-
<Story
|
|
391
|
-
name="Custom Icons"
|
|
392
|
-
args={{
|
|
393
|
-
color: "ui.black",
|
|
394
|
-
size: "xxxlarge",
|
|
395
|
-
iconRotation: "rotate0",
|
|
396
|
-
decorative: true,
|
|
397
|
-
}}
|
|
398
|
-
>
|
|
399
|
-
{(args) => (
|
|
400
|
-
<Icon {...args}>
|
|
401
|
-
<svg
|
|
402
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
403
|
-
viewBox="0 0 750 750"
|
|
404
|
-
fill="#6BE9D8"
|
|
405
|
-
>
|
|
406
|
-
<g>
|
|
407
|
-
<path d="M709.9 399.9c-4.5-145.7-115.8-169.6-151.1-170.3-4.2-.1-6.7-4.9-4.2-8.4L632 110.6c3.4-4.8 2.4-11.7-2.3-15.3-15.9-12-36.3-21.4-60.3-28.8-4.3-1.3-8.6 2-8.5 6.5 1.2 50.5-27.6 114.3-36.5 132.9-1 2-3.9 1.9-4.8-.1C485.1 124 397.7 95.1 327.9 104.4c-71.3 9.5-101.6 26.5-163.5 96.6-61.9 70.1-80.2 260.7-82.1 309.4C80.4 559 40 617.1 40 617.1c154 81.4 340.9 68.2 402.2 61.9 44.4-4.6 68.5-21.8 78.5-30.9 2.5-2.3 1.4-6.6-2-7.3-73.8-15.7-80.7-37.2-94.8-63.5-14.5-27.1 8.2-135.7 104.2-108.6 79.6 22.5 51.5 114.9 39.6 145.8-1.4 3.7 2.4 7.3 6 5.6 34-16.5 140.5-79.5 136.2-220.2zM234.7 181.3c17.7-17 69-56.7 167.1-38 99.8 18.9 98.5 109.5 80.4 141.7-2.3 4.1-7 4.5-8.8.1-11.1-27.7-45.5-97.4-112-108-61.8-9.8-105.6 1.7-124.2 8.3-2.5.8-4.4-2.3-2.5-4.1zm-60.2 72l16.9-27.4c5.1-8.3 13.2-14.3 22.6-16.6 16.3-4.1 33-6.9 49.5-8.9 40.3-4.8 79.4-2.1 116.7 15.1 17.4 8 33.6 18.2 46.1 32.9 11.4 13.4 19 29.6 23.7 46.5 1.8 6.3 3.2 12.8 4.3 19.3.6 3.2-.1 6.6-1.7 9.4l-15.8 27.1c-1.7 3-6.1 2.4-7.1-.9-6.7-22-17.9-43.9-32.8-61-12.6-14.4-29.1-23.5-46.1-31.6-12.2-5.8-24.9-10.5-38-13.6-35.3-8.4-71.9-4.4-106.3 5.9-9.2 2.8-18.3 5.9-27.2 9.5-2.3.9-4.9-.7-5.2-3.2-.2-1 0-1.8.4-2.5zm-21.9 64.2l11.7-40.8c1.2-4.3 5-7.5 9.5-7.9l5.2-.5s87.8-25.9 160.4 9.8c56.9 28 68.3 78.8 70.5 99.5.6 5.5-1.4 11-5.3 14.8L389 407.5c-3.8 3.7-10.2 2.2-12-2.8-6-17.2-13.8-34.1-23.5-49.3-5.8-9.1-12.7-18.3-21.6-24.6-16.2-11.5-36.5-19.2-55.7-23.9-14.4-3.6-29.3-4.8-44.1-3.8-12.9.8-25.6 3.2-38 6.7-7.2 2-14.3 4.4-21.3 7.1-3.8 1.5-7.6 3-11.3 4.7-.6.2-1.9.7-3.4 1.3-3.2 1.1-6.5-2-5.5-5.4zM410 465.8c4.4 2 5.8 7.5 3 11.4l-14.8 20.7c-3.5 4.9-9.9 6.6-15.4 4.3l-25.5-10.9c-4.5-1.9-5.5-7.8-1.9-11.1l17.3-15.7c5.8-5.7 14.6-9.1 22-5.8l15.3 7.1zm-270.3-96.3l4.5-23.6c1.2-6.5 5.7-11.9 11.8-14.3 15.7-6.2 50.5-14.3 109.2-.1 62.6 15.1 83.4 66.2 90 91.6 2.2 8.5-.7 17.5-7.5 23.1l-13.4 11.1c-4.2 3.4-10.5 1.5-12-3.7-5.3-18.5-21.2-54.5-66.1-73.7-45.5-19.5-88.3-9.3-107.8-2.6-4.8 1.5-9.7-2.8-8.7-7.8zm-4.4 29.7c.1-5.4 4.2-9.9 9.6-10.6 30.7-3.8 127.8-7.6 155.8 89.7 1.6 5.4-.5 11.3-5.2 14.4l-15.1 10.1c-5 3.4-11.9 1.2-14-4.5-9.5-26-40.2-85.6-119.7-68.3-6.2 1.3-12-3.4-11.9-9.7l.5-21.1zm-9.1 72.9l3.3-19.1c1.4-8.3 9-14.1 17.4-13.1 21.2 2.4 60.2 11.5 85.5 44.9 5.8 7.7 9.2 16.8 10 26.4l.3 3.4c.6 7.1-2.7 14-8.7 18l-12.1 8.2c-4.4 3-10.5 1.2-12.6-3.7l-8.2-24.4c-3.5-10.4-11-19.1-20.8-24.1l-11.1-5.6c-6.7-3.4-14.2-5-21.7-4.5l-14.8.9c-4 .2-7.1-3.4-6.5-7.3zm-15.5 55.7l9.4-30.7c1.8-5.9 8-9.2 13.9-7.4 18.3 5.6 53.5 21.9 54.3 65.2 0 2.7-1.3 5.1-3.6 6.4-8.5 4.9-26.8 12.9-27.8 12-1.2-1.1.8-42.6-39.7-37.7-1.2.1-2.5-.1-3.6-.7-2.5-1.3-3.8-4.3-2.9-7.1zm63.8 100.5c-1.1 6.4-7.4 10.5-13.7 8.9l-85.5-21.9c-3.9-1-5.7-5.5-3.6-8.9l31.4-51.7c1.8-3 5.5-4.5 8.9-3.4 8.3 2.6 22.4 9 24.4 23.2.6 4.3-.9 8.7-4 11.8-1.4 1.4-3 2.5-4.8 3.2l-26.8 10.4c-2.1.8-2.6 3.5-1 5 .6.5 1.3.8 2.1.8l19.5-.2c3.7 0 7.4-.4 11.1-1 12.8-2.1 47-5 42 23.8zm72.1 12.7c-2.3 2.8-5 5.9-8.8 6.3-1.5.2-2.9 0-4.4-.2-1.5-.2-2.9-.2-4.4-.3l-10.5-.9c-3.8-.3-7.5-.7-11.3-1.2-2.9-.3-5.8-.7-8.6-1.2-4-.7-6.6-4.7-5.4-8.6 2.5-8.6 4.2-23.7-8.4-37.6-2-2.2-1.4-5.8 1.2-7.3l24.8-14.1c3.6-2.1 8-2.1 11.6-.1 8.2 4.5 22.3 14.1 29 28.8 5.4 12.1 3.4 26.2-4.8 36.4zm67 3.1c-4.2 4.1-9.8 6.5-15.7 6.8l-24.2 1.1c-4.2.2-7.1-4.2-5.3-8 8.1-17 20.6-55.5-19.4-76.9-3-1.6-3.3-5.9-.4-7.8l15.3-10.2c4.7-3.2 10.8-3.5 15.8-.7 22.8 12.3 80.6 50.2 33.9 95.7zm118.2-5.2c3.5 2.7 1.6 8.2-2.8 8.3l-77.5.8c-4.8.1-8.1-5-6-9.3 30.8-64.1-17.7-97.3-37.5-107.6-3.5-1.8-4-6.7-.9-9.1l9.6-7.7c7.2-5.7 16.7-7.7 25.6-5.4 14.1 3.7 26.1 11.8 33.7 18 5.4 4.4 8.6 10.9 8.8 17.9.9 51.1 29.9 80.9 47 94.1zm76.6-205c-12.4 0-36.1 1.2-52.5 10.2-4.7 2.6-10.2 3.1-15.4 1.7l-26.8-7.4c-4-1.1-5.6-5.9-3-9.2l14.9-18.8c5.2-7.1 13-11.6 21.6-10.2 17.4 2.9 46.3 10.1 63.6 27.4 2.6 2.3 1 6.3-2.4 6.3zm115 112c-1.7 2.2-5 2.2-6.8 0l-.1-.1c-1.8-2.3-7.3-138.3-146.4-168.7-5.4-1.2-7.7-7.5-4.3-11.9l19.6-25.6c4.6-6 12.2-8.9 19.7-7.5 28.1 5.5 95.7 25.7 120.5 96.6 29.5 84.5 13.9 96.8-2.2 117.2zm46.4-88.4c-.8 4.1-6.6 4.2-7.5.1-9.8-43.6-44.3-150.3-147.6-150.8-4.4 0-7.2-4.8-5-8.6l17.6-31.4c4.4-7.9 19.3-9.1 28.1-7 41.1 9.9 143 47.6 114.4 197.7z" />
|
|
408
|
-
</g>
|
|
409
|
-
</svg>
|
|
410
|
-
</Icon>
|
|
411
|
-
)}
|
|
412
|
-
</Story>
|
|
413
|
-
</Canvas>
|
|
@@ -1,120 +0,0 @@
|
|
|
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 Icon from "./Icon";
|
|
7
|
-
|
|
8
|
-
describe("Icon Accessibility", () => {
|
|
9
|
-
it("passes axe accessibility test", async () => {
|
|
10
|
-
const { container } = render(<Icon name="download" />);
|
|
11
|
-
expect(await axe(container)).toHaveNoViolations();
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
describe("Icon", () => {
|
|
16
|
-
it("consoles a warning if both name and children are passed to Icon", () => {
|
|
17
|
-
const warn = jest.spyOn(console, "warn");
|
|
18
|
-
render(
|
|
19
|
-
<Icon name="download" decorative={true}>
|
|
20
|
-
<svg viewBox="0 0 24 14" xmlns="http://www.w3.org/2000/svg">
|
|
21
|
-
<path
|
|
22
|
-
fillRule="evenodd"
|
|
23
|
-
clipRule="evenodd"
|
|
24
|
-
d="M10.526 12.871L.263 1.676 1.737.324 12 11.52 22.263.324l1.474 1.352L13.474 12.87a2 2 0 01-2.948 0z"
|
|
25
|
-
/>
|
|
26
|
-
</svg>
|
|
27
|
-
</Icon>
|
|
28
|
-
);
|
|
29
|
-
expect(warn).toHaveBeenCalledWith(
|
|
30
|
-
"NYPL Reservoir Icon: Pass in either a `name` prop or an `svg` element " +
|
|
31
|
-
"child. Do not pass both."
|
|
32
|
-
);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("consoles a warning if both name and children are not passed", () => {
|
|
36
|
-
const warn = jest.spyOn(console, "warn");
|
|
37
|
-
render(<Icon />);
|
|
38
|
-
expect(warn).toHaveBeenCalledWith(
|
|
39
|
-
"NYPL Reservoir Icon: Pass an icon `name` prop or an SVG child to " +
|
|
40
|
-
"ensure an icon appears."
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it("consoles a warning if name is not passed and a child is but it's not an SVG element", () => {
|
|
45
|
-
const warn = jest.spyOn(console, "warn");
|
|
46
|
-
render(<Icon>Not an SVG</Icon>);
|
|
47
|
-
expect(warn).toHaveBeenCalledWith(
|
|
48
|
-
"NYPL Reservoir Icon: An `svg` element must be passed to the `Icon` " +
|
|
49
|
-
"component as its child."
|
|
50
|
-
);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it("renders an icon based on the icon `name` prop", () => {
|
|
54
|
-
const { container } = render(<Icon name="download" />);
|
|
55
|
-
expect(container.querySelector("svg")).toBeInTheDocument();
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// NOTE: the svg icon is dynamically generated by the "svgr" package. At build
|
|
59
|
-
// time, it generate the `title` element but it doesn't generate it for tests.
|
|
60
|
-
// In order to test this, we can check the `title` attribute in the svg
|
|
61
|
-
// element itself. Inspect the `Icon` in Storybook to see the `title` element.
|
|
62
|
-
it("renders a title element", () => {
|
|
63
|
-
const { container, rerender } = render(<Icon name="download" />);
|
|
64
|
-
expect(container.querySelector("svg")).toHaveAttribute(
|
|
65
|
-
"title",
|
|
66
|
-
"download icon"
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
rerender(<Icon name="download" title="title content" />);
|
|
70
|
-
expect(container.querySelector("svg")).toHaveAttribute(
|
|
71
|
-
"title",
|
|
72
|
-
"title content"
|
|
73
|
-
);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it("renders an icon based on the child", () => {
|
|
77
|
-
const { container } = render(
|
|
78
|
-
<Icon>
|
|
79
|
-
<svg viewBox="0 0 24 14" xmlns="http://www.w3.org/2000/svg">
|
|
80
|
-
<path
|
|
81
|
-
fillRule="evenodd"
|
|
82
|
-
clipRule="evenodd"
|
|
83
|
-
d="M10.526 12.871L.263 1.676 1.737.324 12 11.52 22.263.324l1.474 1.352L13.474 12.87a2 2 0 01-2.948 0z"
|
|
84
|
-
/>
|
|
85
|
-
</svg>
|
|
86
|
-
</Icon>
|
|
87
|
-
);
|
|
88
|
-
expect(container.querySelector("svg")).toBeInTheDocument();
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("renders the UI snapshot correctly", () => {
|
|
92
|
-
const basic = renderer.create(<Icon id="basic" name="download" />).toJSON();
|
|
93
|
-
const customIcon = renderer
|
|
94
|
-
.create(
|
|
95
|
-
<Icon id="customIcon">
|
|
96
|
-
<svg viewBox="0 0 24 14" xmlns="http://www.w3.org/2000/svg">
|
|
97
|
-
<path
|
|
98
|
-
fillRule="evenodd"
|
|
99
|
-
clipRule="evenodd"
|
|
100
|
-
d="M10.526 12.871L.263 1.676 1.737.324 12 11.52 22.263.324l1.474 1.352L13.474 12.87a2 2 0 01-2.948 0z"
|
|
101
|
-
/>
|
|
102
|
-
</svg>
|
|
103
|
-
</Icon>
|
|
104
|
-
)
|
|
105
|
-
.toJSON();
|
|
106
|
-
const withChakraProps = renderer
|
|
107
|
-
.create(
|
|
108
|
-
<Icon id="chakra" name="download" p="20px" color="ui.error.primary" />
|
|
109
|
-
)
|
|
110
|
-
.toJSON();
|
|
111
|
-
const withOtherProps = renderer
|
|
112
|
-
.create(<Icon id="props" name="download" data-testid="props" />)
|
|
113
|
-
.toJSON();
|
|
114
|
-
|
|
115
|
-
expect(basic).toMatchSnapshot();
|
|
116
|
-
expect(customIcon).toMatchSnapshot();
|
|
117
|
-
expect(withChakraProps).toMatchSnapshot();
|
|
118
|
-
expect(withOtherProps).toMatchSnapshot();
|
|
119
|
-
});
|
|
120
|
-
});
|