@nypl/design-system-react-components 0.25.7 → 0.25.10
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 +119 -1
- package/README.md +1 -1
- package/dist/components/Button/Button.d.ts +6 -6
- package/dist/components/Button/ButtonTypes.d.ts +0 -1
- package/dist/components/Card/Card.d.ts +6 -4
- package/dist/components/Checkbox/Checkbox.d.ts +3 -2
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
- package/dist/components/DatePicker/DatePicker.d.ts +4 -3
- package/dist/components/Fieldset/Fieldset.d.ts +1 -3
- package/dist/components/Form/Form.d.ts +15 -14
- package/dist/components/Form/FormTypes.d.ts +2 -2
- package/dist/components/Heading/Heading.d.ts +7 -3
- package/dist/components/Heading/HeadingTypes.d.ts +6 -6
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
- package/dist/components/Icons/Icon.d.ts +4 -4
- package/dist/components/Icons/IconSvgs.d.ts +1 -21
- package/dist/components/Icons/IconTypes.d.ts +1 -23
- package/dist/components/Image/Image.d.ts +11 -3
- package/dist/components/Image/ImageTypes.d.ts +3 -1
- package/dist/components/Link/LinkTypes.d.ts +1 -0
- package/dist/components/Logo/Logo.d.ts +28 -0
- package/dist/components/Logo/LogoSvgs.d.ts +18 -0
- package/dist/components/Logo/LogoTypes.d.ts +30 -0
- package/dist/components/Modal/Modal.d.ts +0 -4
- package/dist/components/Notification/Notification.d.ts +4 -2
- package/dist/components/Placeholder/Placeholder.d.ts +3 -5
- package/dist/components/Radio/Radio.d.ts +6 -5
- package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
- package/dist/components/SearchBar/SearchBar.d.ts +15 -7
- package/dist/components/Select/Select.d.ts +5 -2
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
- package/dist/components/Slider/Slider.d.ts +3 -2
- package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
- package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
- package/dist/components/Table/Table.d.ts +29 -0
- package/dist/components/Template/Template.d.ts +30 -6
- package/dist/components/Text/Text.d.ts +2 -2
- package/dist/components/TextInput/TextInput.d.ts +4 -3
- package/dist/components/Toggle/Toggle.d.ts +48 -0
- package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
- package/dist/design-system-react-components.cjs.development.js +4698 -4405
- 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 +5862 -5573
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/resources.scss +0 -2
- package/dist/styles.css +2 -2
- package/dist/theme/components/breadcrumb.d.ts +1 -1
- package/dist/theme/components/button.d.ts +0 -12
- package/dist/theme/components/card.d.ts +14 -2
- package/dist/theme/components/customTable.d.ts +56 -0
- package/dist/theme/components/fieldset.d.ts +2 -2
- package/dist/theme/components/global.d.ts +1 -1
- package/dist/theme/components/heading.d.ts +4 -0
- package/dist/theme/components/label.d.ts +1 -1
- package/dist/theme/components/link.d.ts +14 -1
- package/dist/theme/components/list.d.ts +0 -2
- package/dist/theme/components/logo.d.ts +4 -0
- package/dist/theme/components/notification.d.ts +8 -4
- package/dist/theme/components/searchBar.d.ts +7 -13
- package/dist/theme/components/select.d.ts +1 -0
- package/dist/theme/components/structuredContent.d.ts +33 -0
- package/dist/theme/components/template.d.ts +10 -10
- package/dist/theme/components/textInput.d.ts +2 -0
- package/dist/theme/components/toggle.d.ts +71 -0
- package/dist/theme/foundations/spacing.d.ts +2 -0
- package/dist/utils/utils.d.ts +10 -0
- package/package.json +40 -37
- package/src/__tests__/utils/utils.test.ts +23 -1
- package/src/components/Accordion/Accordion.stories.mdx +16 -15
- package/src/components/Accordion/Accordion.test.tsx +45 -1
- package/src/components/Accordion/Accordion.tsx +20 -8
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
- package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
- package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
- package/src/components/Autosuggest/_Autosuggest.scss +2 -6
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +25 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
- package/src/components/Button/Button.stories.mdx +93 -48
- package/src/components/Button/Button.test.tsx +0 -12
- package/src/components/Button/Button.tsx +7 -8
- package/src/components/Button/ButtonTypes.tsx +0 -1
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
- package/src/components/Card/Card.stories.mdx +246 -64
- package/src/components/Card/Card.test.tsx +45 -22
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
- package/src/components/Chakra/Box.stories.mdx +3 -3
- package/src/components/Chakra/Center.stories.mdx +5 -5
- package/src/components/Chakra/Flex.stories.mdx +113 -0
- package/src/components/Chakra/Grid.stories.mdx +14 -17
- package/src/components/Chakra/Stack.stories.mdx +2 -2
- package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
- package/src/components/Checkbox/Checkbox.tsx +13 -8
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
- package/src/components/DatePicker/DatePicker.test.tsx +14 -12
- package/src/components/DatePicker/DatePicker.tsx +13 -10
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
- package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
- package/src/components/Fieldset/Fieldset.tsx +2 -4
- package/src/components/Form/Form.stories.mdx +75 -49
- package/src/components/Form/Form.test.tsx +92 -3
- package/src/components/Form/Form.tsx +28 -23
- package/src/components/Form/FormTypes.tsx +2 -2
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
- package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
- package/src/components/Heading/Heading.stories.mdx +59 -23
- package/src/components/Heading/Heading.test.tsx +82 -18
- package/src/components/Heading/Heading.tsx +31 -31
- package/src/components/Heading/HeadingTypes.tsx +6 -6
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
- package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
- package/src/components/Hero/Hero.stories.mdx +72 -53
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
- package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
- package/src/components/Icons/Icon.stories.mdx +77 -75
- package/src/components/Icons/Icon.tsx +4 -5
- package/src/components/Icons/IconSvgs.tsx +2 -42
- package/src/components/Icons/IconTypes.tsx +1 -24
- package/src/components/Image/Image.stories.mdx +214 -104
- package/src/components/Image/Image.test.tsx +10 -0
- package/src/components/Image/Image.tsx +21 -10
- package/src/components/Image/ImageTypes.ts +2 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
- package/src/components/Label/Label.stories.mdx +21 -20
- package/src/components/Link/Link.stories.mdx +103 -53
- package/src/components/Link/Link.test.tsx +108 -7
- package/src/components/Link/Link.tsx +58 -19
- package/src/components/Link/LinkTypes.tsx +1 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
- package/src/components/List/List.stories.mdx +37 -25
- package/src/components/List/List.tsx +1 -1
- package/src/components/Logo/Logo.stories.mdx +220 -0
- package/src/components/Logo/Logo.test.tsx +98 -0
- package/src/components/Logo/Logo.tsx +97 -0
- package/src/components/Logo/LogoSvgs.tsx +34 -0
- package/src/components/Logo/LogoTypes.tsx +32 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
- package/src/components/Modal/Modal.stories.mdx +20 -5
- package/src/components/Modal/Modal.tsx +2 -8
- package/src/components/Notification/Notification.stories.mdx +96 -40
- package/src/components/Notification/Notification.test.tsx +62 -16
- package/src/components/Notification/Notification.tsx +26 -9
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
- package/src/components/Pagination/Pagination.stories.mdx +19 -9
- package/src/components/Pagination/Pagination.tsx +3 -3
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
- package/src/components/Placeholder/Placeholder.tsx +7 -14
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
- package/src/components/Radio/Radio.stories.mdx +39 -19
- package/src/components/Radio/Radio.tsx +13 -9
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
- package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
- package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
- package/src/components/RadioGroup/RadioGroup.tsx +97 -94
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
- package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
- package/src/components/SearchBar/SearchBar.stories.mdx +116 -34
- package/src/components/SearchBar/SearchBar.tsx +70 -50
- package/src/components/Select/Select.stories.mdx +177 -66
- package/src/components/Select/Select.test.tsx +91 -2
- package/src/components/Select/Select.tsx +29 -13
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
- package/src/components/Slider/Slider.stories.mdx +74 -23
- package/src/components/Slider/Slider.test.tsx +35 -0
- package/src/components/Slider/Slider.tsx +22 -11
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
- package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
- package/src/components/StatusBadge/StatusBadge.tsx +2 -1
- package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
- package/src/components/StructuredContent/StructuredContent.tsx +153 -0
- package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
- package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
- package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
- package/src/components/StyleGuide/ColorCard.tsx +1 -2
- package/src/components/StyleGuide/Colors.stories.mdx +3 -11
- package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
- package/src/components/StyleGuide/Forms.stories.mdx +2 -10
- package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
- package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
- package/src/components/StyleGuide/Typography.stories.mdx +64 -76
- package/src/components/Table/Table.stories.mdx +165 -0
- package/src/components/Table/Table.test.tsx +137 -0
- package/src/components/Table/Table.tsx +126 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
- package/src/components/Tabs/Tabs.stories.mdx +20 -14
- package/src/components/Tabs/Tabs.test.tsx +21 -5
- package/src/components/Tabs/Tabs.tsx +33 -18
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
- package/src/components/Template/Template.stories.mdx +132 -49
- package/src/components/Template/Template.test.tsx +128 -6
- package/src/components/Template/Template.tsx +93 -13
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
- package/src/components/Text/Text.stories.mdx +33 -11
- package/src/components/Text/Text.tsx +2 -2
- package/src/components/TextInput/TextInput.stories.mdx +84 -17
- package/src/components/TextInput/TextInput.test.tsx +96 -0
- package/src/components/TextInput/TextInput.tsx +12 -8
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
- package/src/components/Toggle/Toggle.stories.mdx +200 -0
- package/src/components/Toggle/Toggle.test.tsx +140 -0
- package/src/components/Toggle/Toggle.tsx +123 -0
- package/src/components/Toggle/ToggleSizes.tsx +4 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
- package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
- package/src/docs/Chakra.stories.mdx +5 -8
- package/src/docs/Intro.stories.mdx +2 -2
- package/src/index.ts +19 -6
- package/src/styles/base/_03-base.scss +1 -1
- package/src/styles/base/_place-holder.scss +7 -7
- package/src/styles.scss +1 -5
- package/src/theme/components/breadcrumb.ts +5 -5
- package/src/theme/components/button.ts +5 -12
- package/src/theme/components/card.ts +9 -7
- package/src/theme/components/checkbox.ts +1 -1
- package/src/theme/components/customTable.ts +63 -0
- package/src/theme/components/datePicker.ts +1 -1
- package/src/theme/components/global.ts +7 -7
- package/src/theme/components/heading.ts +13 -11
- package/src/theme/components/helperErrorText.ts +1 -1
- package/src/theme/components/icon.ts +2 -2
- package/src/theme/components/image.ts +9 -1
- package/src/theme/components/link.ts +17 -5
- package/src/theme/components/list.ts +1 -3
- package/src/theme/components/logo.ts +54 -0
- package/src/theme/components/notification.ts +9 -7
- package/src/theme/components/searchBar.ts +7 -13
- package/src/theme/components/select.ts +1 -0
- package/src/theme/components/statusBadge.ts +1 -1
- package/src/theme/components/structuredContent.ts +54 -0
- package/src/theme/components/template.ts +10 -10
- package/src/theme/components/text.ts +6 -6
- package/src/theme/components/textInput.ts +1 -0
- package/src/theme/components/toggle.ts +69 -0
- package/src/theme/components/videoPlayer.ts +0 -2
- package/src/theme/foundations/global.ts +2 -2
- package/src/theme/foundations/spacing.ts +3 -0
- package/src/theme/foundations/typography.ts +84 -12
- package/src/theme/index.ts +8 -0
- package/src/utils/componentCategories.ts +5 -2
- package/src/utils/utils.ts +17 -0
- package/dist/__tests__/utils/bem.test.d.ts +0 -1
- package/dist/components/CardEdition/CardEdition.d.ts +0 -21
- package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
- package/dist/components/Input/Input.d.ts +0 -36
- package/dist/components/Input/Input.stories.d.ts +0 -29
- package/dist/components/Input/InputTypes.d.ts +0 -6
- package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
- package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
- package/dist/helpers/getCSSVariable.d.ts +0 -1
- package/dist/interfaces.d.ts +0 -3
- package/dist/utils/bem.d.ts +0 -1
- package/src/__tests__/utils/bem.test.ts +0 -37
- package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
- package/src/components/CardEdition/CardEdition.test.tsx +0 -395
- package/src/components/CardEdition/CardEdition.tsx +0 -60
- package/src/components/CardEdition/_CardEdition.scss +0 -137
- package/src/components/Input/Input.stories.tsx +0 -133
- package/src/components/Input/Input.test.tsx +0 -266
- package/src/components/Input/Input.tsx +0 -81
- package/src/components/Input/InputTypes.tsx +0 -8
- package/src/components/Input/_Input.scss +0 -78
- package/src/components/StyleGuide/UIDocCard.tsx +0 -36
- package/src/helpers/CSSVariablesHelper.tsx +0 -34
- package/src/helpers/getCSSVariable.tsx +0 -5
- package/src/interfaces.ts +0 -3
- package/src/utils/bem.ts +0 -44
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
|
-
ArgsTable,
|
|
6
|
-
Description,
|
|
7
|
-
} from "@storybook/addon-docs/blocks";
|
|
8
|
-
import { withDesign } from "storybook-addon-designs";
|
|
9
1
|
import { Stack } from "@chakra-ui/react";
|
|
2
|
+
import { Canvas, Meta } from "@storybook/addon-docs";
|
|
3
|
+
import { withDesign } from "storybook-addon-designs";
|
|
10
4
|
|
|
11
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
12
5
|
import Icon from "../Icons/Icon";
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
IconSizes,
|
|
16
|
-
IconNames,
|
|
17
|
-
LogoNames,
|
|
18
|
-
} from "../Icons/IconTypes";
|
|
6
|
+
import { IconColors, IconSizes, IconNames } from "../Icons/IconTypes";
|
|
7
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
19
8
|
import DSProvider from "../../theme/provider";
|
|
20
9
|
|
|
21
10
|
<Meta
|
|
@@ -24,8 +13,7 @@ import DSProvider from "../../theme/provider";
|
|
|
24
13
|
parameters={{
|
|
25
14
|
design: {
|
|
26
15
|
type: "figma",
|
|
27
|
-
url:
|
|
28
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
16
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
29
17
|
},
|
|
30
18
|
}}
|
|
31
19
|
/>
|
|
@@ -44,16 +32,14 @@ import DSProvider from "../../theme/provider";
|
|
|
44
32
|
## General Information
|
|
45
33
|
|
|
46
34
|
Use the NYPL Design System [Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
|
|
47
|
-
component to render and control icons
|
|
48
|
-
consuming apps.
|
|
35
|
+
component to render and control icons as `<svg>` elements within consuming apps.
|
|
49
36
|
|
|
50
37
|
The DS utilizes the `Filled` icons available in the [Material UI Design System](https://material-ui.com/components/material-icons/).
|
|
51
38
|
|
|
52
39
|
## Icon Examples
|
|
53
40
|
|
|
54
|
-
The graphic of the `Icon` component is handled through the `IconNames`
|
|
55
|
-
|
|
56
|
-
[Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
|
|
41
|
+
The graphic of the `Icon` component is handled through the `IconNames` enum. To see all graphic options
|
|
42
|
+
for `Icon`, please refer to the [Icon](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/icon--control-props)
|
|
57
43
|
Storybook page.
|
|
58
44
|
|
|
59
45
|
<Canvas>
|
|
@@ -79,16 +65,6 @@ Storybook page.
|
|
|
79
65
|
size={IconSizes.ExtraExtraExtraLarge}
|
|
80
66
|
name={IconNames.SpeakerNotes}
|
|
81
67
|
/>
|
|
82
|
-
<Icon
|
|
83
|
-
decorative
|
|
84
|
-
size={IconSizes.ExtraExtraExtraLarge}
|
|
85
|
-
name={LogoNames.LogoNypl}
|
|
86
|
-
/>
|
|
87
|
-
<Icon
|
|
88
|
-
decorative
|
|
89
|
-
size={IconSizes.ExtraExtraExtraLarge}
|
|
90
|
-
name={LogoNames.LogoBrooklyn}
|
|
91
|
-
/>
|
|
92
68
|
</Stack>
|
|
93
69
|
</DSProvider>
|
|
94
70
|
</Canvas>
|
|
@@ -99,8 +75,6 @@ Storybook page.
|
|
|
99
75
|
| `IconNames.Close` |
|
|
100
76
|
| `IconNames.ErrorOutline` |
|
|
101
77
|
| `IconNames.SpeakerNotes` |
|
|
102
|
-
| `LogoNames.LogoNypl` |
|
|
103
|
-
| `LogoNames.LogoBrooklyn` |
|
|
104
78
|
|
|
105
79
|
## Icon Sizes
|
|
106
80
|
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
|
-
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
|
-
Description,
|
|
8
|
-
} from "@storybook/addon-docs/blocks";
|
|
1
|
+
import { Meta } from "@storybook/addon-docs";
|
|
9
2
|
import { withDesign } from "storybook-addon-designs";
|
|
10
3
|
|
|
11
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
12
|
-
import getCSSVariable from "../../helpers/getCSSVariable";
|
|
13
4
|
import Card from "../Card/Card";
|
|
14
5
|
import List from "../List/List";
|
|
15
6
|
import { ListTypes } from "../List/ListTypes";
|
|
7
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
16
8
|
import DSProvider from "../../theme/provider";
|
|
17
9
|
|
|
18
10
|
<Meta
|
|
@@ -21,8 +13,7 @@ import DSProvider from "../../theme/provider";
|
|
|
21
13
|
parameters={{
|
|
22
14
|
design: {
|
|
23
15
|
type: "figma",
|
|
24
|
-
url:
|
|
25
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17249%3A13",
|
|
16
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17249%3A13",
|
|
26
17
|
},
|
|
27
18
|
}}
|
|
28
19
|
/>
|
|
@@ -48,7 +39,6 @@ The DS spacing values are based on a root font size of `16px` (`1rem` = `16px`).
|
|
|
48
39
|
<DSProvider>
|
|
49
40
|
The following CSS variables are available through the DS.
|
|
50
41
|
|
|
51
|
-
|
|
52
42
|
| Variable Name | REM Equivalent | Pixel Equivalent | Visual Reference |
|
|
53
43
|
| ------------------- | -------------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
54
44
|
| `--nypl-space-xxs` | `0.25rem` | `4px` | <div style={{ width: "var(--nypl-space-xxs)", backgroundColor: "var(--nypl-colors-ui-focus)" }}> </div> |
|
|
@@ -62,7 +52,6 @@ The following CSS variables are available through the DS.
|
|
|
62
52
|
|
|
63
53
|
</DSProvider>
|
|
64
54
|
|
|
65
|
-
|
|
66
55
|
## Section Spacing
|
|
67
56
|
|
|
68
57
|
In consuming apps, the major page sections should be separated vertically by `3rem` `(--nypl-space-xl`). This includes the space after the page global `header` and the space before the global `footer`.
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Story,
|
|
4
|
-
Canvas,
|
|
5
|
-
ArgsTable,
|
|
6
|
-
Preview,
|
|
7
|
-
Description,
|
|
8
|
-
} from "@storybook/addon-docs/blocks";
|
|
1
|
+
import { Canvas, Meta } from "@storybook/addon-docs";
|
|
9
2
|
import { withDesign } from "storybook-addon-designs";
|
|
10
3
|
|
|
11
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
12
4
|
import Heading from "../Heading/Heading";
|
|
13
5
|
import { HeadingDisplaySizes, HeadingLevels } from "../Heading/HeadingTypes";
|
|
14
6
|
import List from "../List/List";
|
|
15
7
|
import { ListTypes } from "../List/ListTypes";
|
|
16
8
|
import Text from "../Text/Text";
|
|
17
9
|
import { TextDisplaySizes } from "../Text/TextTypes";
|
|
10
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
18
11
|
import DSProvider from "../../theme/provider";
|
|
19
12
|
|
|
20
13
|
<Meta
|
|
@@ -23,8 +16,7 @@ import DSProvider from "../../theme/provider";
|
|
|
23
16
|
parameters={{
|
|
24
17
|
design: {
|
|
25
18
|
type: "figma",
|
|
26
|
-
url:
|
|
27
|
-
"https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
19
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10975%3A16",
|
|
28
20
|
},
|
|
29
21
|
}}
|
|
30
22
|
/>
|
|
@@ -67,52 +59,50 @@ Use the NYPL Design System [Heading](/docs/components-typography-styles-heading-
|
|
|
67
59
|
|
|
68
60
|
<DSProvider>
|
|
69
61
|
|
|
70
|
-
|
|
71
62
|
Each heading level has a default style and size, but those styles can be overridden using the `displaySize` prop. The display sizes are separate from semantic elements and may be used to override the default size and styling of the semantic HTML heading elements. For example, the `h1` element has the `Primary` style applied by default, but a new style can be applied through the `displaySize` prop. Any `displaySize` style can be applied to any `Heading` element.
|
|
72
63
|
|
|
73
64
|
<Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Primary}>
|
|
74
65
|
Primary Heading
|
|
75
66
|
</Heading>
|
|
76
67
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
68
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
69
|
+
| --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
|
|
70
|
+
| **Font Size** | `2.25rem` | `fontSize: "heading.primary"` | `font-size: var(--nypl-fontSizes-heading-primary)` |
|
|
71
|
+
| **Font Weight** | `300` | `fontWeight: "heading.primary"` | `font-weight: var(--nypl-fontWeights-heading-primary)` |
|
|
72
|
+
| **Line Height** | `1.1` | n/a | n/a |
|
|
82
73
|
|
|
83
74
|
<Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Secondary}>
|
|
84
75
|
Secondary Heading
|
|
85
76
|
</Heading>
|
|
86
77
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
78
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
79
|
+
| --------------- | --------- | --------------------------------- | -------------------------------------------------------- |
|
|
80
|
+
| **Font Size** | `1.75rem` | `fontSize: "heading.secondary"` | `font-size: var(--nypl-fontSizes-heading-secondary)` |
|
|
81
|
+
| **Font Weight** | `500` | `fontWeight: "heading.secondary"` | `font-weight: var(--nypl-fontWeights-heading-secondary)` |
|
|
82
|
+
| **Line Height** | `1.25` | n/a | n/a |
|
|
92
83
|
|
|
93
84
|
<Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Tertiary}>
|
|
94
85
|
Tertiary Heading
|
|
95
86
|
</Heading>
|
|
96
87
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
88
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
89
|
+
| --------------- | ---------- | -------------------------------- | ------------------------------------------------------- |
|
|
90
|
+
| **Font Size** | `1.375rem` | `fontSize: "heading.tertiary"` | `font-size: var(--nypl-fontSizes-heading-tertiary)` |
|
|
91
|
+
| **Font Weight** | `500` | `fontWeight: "heading.tertiary"` | `font-weight: var(--nypl-fontWeights-heading-tertiary)` |
|
|
92
|
+
| **Line Height** | `1.25` | n/a | n/a |
|
|
102
93
|
|
|
103
94
|
<Heading level={HeadingLevels.One} displaySize={HeadingDisplaySizes.Callout}>
|
|
104
95
|
Callout Heading
|
|
105
96
|
</Heading>
|
|
106
97
|
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
98
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
99
|
+
| --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
|
|
100
|
+
| **Font Size** | `1.25rem` | `fontSize: "heading.callout"` | `font-size: var(--nypl-fontSizes-heading-callout)` |
|
|
101
|
+
| **Font Weight** | `500` | `fontWeight: "heading.callout"` | `font-weight: var(--nypl-fontWeights-heading-callout)` |
|
|
102
|
+
| **Line Height** | `1.25` | n/a | n/a |
|
|
112
103
|
|
|
113
104
|
</DSProvider>
|
|
114
105
|
|
|
115
|
-
|
|
116
106
|
## Text Component
|
|
117
107
|
|
|
118
108
|
Use the NYPL Design System [Text](/docs/components-typography-styles-text--text) component to render a standard HTML `<p>` tag. The Text component is generally used for body copy, captions and secondary captions.
|
|
@@ -132,7 +122,6 @@ Use the NYPL Design System [Text](/docs/components-typography-styles-text--text)
|
|
|
132
122
|
|
|
133
123
|
<DSProvider>
|
|
134
124
|
|
|
135
|
-
|
|
136
125
|
The `displaySize` prop can be used to render a specific style from the DS default text styles.
|
|
137
126
|
|
|
138
127
|
- [Typography: Body Styles](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A52)
|
|
@@ -140,39 +129,38 @@ The `displaySize` prop can be used to render a specific style from the DS defaul
|
|
|
140
129
|
|
|
141
130
|
<Text displaySize={TextDisplaySizes.Default}>Default</Text>
|
|
142
131
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
132
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
133
|
+
| --------------- | ------ | ---------------------------- | --------------------------------------------------- |
|
|
134
|
+
| **Font Size** | `1rem` | `fontSize: "text.default"` | `font-size: var(--nypl-fontSizes-text-default)` |
|
|
135
|
+
| **Font Weight** | `300` | `fontWeight: "text.default"` | `font-weight: var(--nypl-fontWeights-text-default)` |
|
|
136
|
+
| **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
|
|
148
137
|
|
|
149
138
|
<Text displaySize={TextDisplaySizes.Caption}>Caption</Text>
|
|
150
139
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
140
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
141
|
+
| --------------- | ---------- | ---------------------------- | --------------------------------------------------- |
|
|
142
|
+
| **Font Size** | `0.875rem` | `fontSize: "text.caption"` | `font-size: var(--nypl-fontSizes-text-caption)` |
|
|
143
|
+
| **Font Weight** | `300` | `fontWeight: "text.caption"` | `font-weight: var(--nypl-fontWeights-text-caption)` |
|
|
144
|
+
| **Line Height** | `1.25` | `fontWeight: 1.25` | `font-weight: 1.25` |
|
|
156
145
|
|
|
157
146
|
<Text displaySize={TextDisplaySizes.Tag}>Tag</Text>
|
|
158
147
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
148
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
149
|
+
| --------------- | --------- | ------------------------ | ----------------------------------------------- |
|
|
150
|
+
| **Font Size** | `0.75rem` | `fontSize: "text.tag"` | `font-size: var(--nypl-fontSizes-text-tag)` |
|
|
151
|
+
| **Font Weight** | `400` | `fontWeight: "text.tag"` | `font-weight: var(--nypl-fontWeights-text-tag)` |
|
|
152
|
+
| **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
|
|
164
153
|
|
|
165
154
|
<Text displaySize={TextDisplaySizes.Mini}>Mini</Text>
|
|
166
155
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
156
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
157
|
+
| --------------- | ---------- | ------------------------- | ------------------------------------------------ |
|
|
158
|
+
| **Font Size** | `0.625rem` | `fontSize: "text.mini"` | `font-size: var(--nypl-fontSizes-text-mini)` |
|
|
159
|
+
| **Font Weight** | `400` | `fontWeight: "text.mini"` | `font-weight: var(--nypl-fontWeights-text-mini)` |
|
|
160
|
+
| **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
|
|
172
161
|
|
|
173
162
|
</DSProvider>
|
|
174
163
|
|
|
175
|
-
|
|
176
164
|
## Font Family
|
|
177
165
|
|
|
178
166
|
With website accessibility in mind, font choices for the DS were made with an eye toward clarity and readability. Headings and body content use the following font family assignment:
|
|
@@ -225,7 +213,7 @@ The DS uses four font weights to render text. The default font-weight is 300.
|
|
|
225
213
|
fontFamily: "var(--nypl-fonts-body)",
|
|
226
214
|
}}
|
|
227
215
|
>
|
|
228
|
-
Light / 300
|
|
216
|
+
Light / 300 (default)
|
|
229
217
|
</p>
|
|
230
218
|
<p
|
|
231
219
|
style={{
|
|
@@ -257,14 +245,14 @@ The DS uses four font weights to render text. The default font-weight is 300.
|
|
|
257
245
|
</>
|
|
258
246
|
</Canvas>
|
|
259
247
|
|
|
260
|
-
The following
|
|
248
|
+
The following design tokens are available through the DS.
|
|
261
249
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
--nypl-fontWeights-
|
|
265
|
-
--nypl-fontWeights-
|
|
266
|
-
--nypl-fontWeights-
|
|
267
|
-
|
|
250
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
251
|
+
| ----------- | ----- | ----------------------- | ---------------------------------------------- |
|
|
252
|
+
| **Light** | `300` | `fontWeight: "light"` | `font-weight: var(--nypl-fontWeights-light)` |
|
|
253
|
+
| **Regular** | `400` | `fontWeight: "regular"` | `font-weight: var(--nypl-fontWeights-regular)` |
|
|
254
|
+
| **Medium** | `500` | `fontWeight: "medium"` | `font-weight: var(--nypl-fontWeights-medium)` |
|
|
255
|
+
| **Bold** | `700` | `fontWeight: "bold"` | `font-weight: var(--nypl-fontWeights-bold)` |
|
|
268
256
|
|
|
269
257
|
## Font Sizes
|
|
270
258
|
|
|
@@ -302,7 +290,7 @@ Font sizing is based on a root font size of 16px (1rem = 16px).
|
|
|
302
290
|
fontWeight: "var(--nypl-fontWeights-light)",
|
|
303
291
|
}}
|
|
304
292
|
>
|
|
305
|
-
Font size 0
|
|
293
|
+
Font size 0 (default)
|
|
306
294
|
</p>
|
|
307
295
|
<p
|
|
308
296
|
style={{
|
|
@@ -339,18 +327,18 @@ Font sizing is based on a root font size of 16px (1rem = 16px).
|
|
|
339
327
|
</>
|
|
340
328
|
</Canvas>
|
|
341
329
|
|
|
342
|
-
The following
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
--nypl-fontSizes--
|
|
347
|
-
--nypl-fontSizes--
|
|
348
|
-
|
|
349
|
-
--nypl-fontSizes-
|
|
350
|
-
--nypl-fontSizes-
|
|
351
|
-
--nypl-fontSizes-
|
|
352
|
-
--nypl-fontSizes-
|
|
353
|
-
|
|
330
|
+
The following font size design tokens are available through the DS.
|
|
331
|
+
|
|
332
|
+
| | Value | JS Theme Object | CSS Variable |
|
|
333
|
+
| ------ | ---------- | ---------------- | ------------------------------------- |
|
|
334
|
+
| **-3** | `0.625rem` | `fontSize: "-3"` | `font-size: var(--nypl-fontSizes--3)` |
|
|
335
|
+
| **-2** | `0.75rem` | `fontSize: "-2"` | `font-size: var(--nypl-fontSizes--2)` |
|
|
336
|
+
| **-1** | `0.875rem` | `fontSize: "-1"` | `font-size: var(--nypl-fontSizes--1)` |
|
|
337
|
+
| **0** | `1rem` | `fontSize: "0"` | `font-size: var(--nypl-fontSizes-0)` |
|
|
338
|
+
| **1** | `1.125rem` | `fontSize: "1"` | `font-size: var(--nypl-fontSizes-1)` |
|
|
339
|
+
| **2** | `1.375rem` | `fontSize: "2"` | `font-size: var(--nypl-fontSizes-2)` |
|
|
340
|
+
| **3** | `1.75rem` | `fontSize: "3"` | `font-size: var(--nypl-fontSizes-3)` |
|
|
341
|
+
| **4** | `2.25rem` | `fontSize: "4"` | `font-size: var(--nypl-fontSizes-4)` |
|
|
354
342
|
|
|
355
343
|
## Text Case
|
|
356
344
|
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Meta,
|
|
3
|
+
Story,
|
|
4
|
+
Canvas,
|
|
5
|
+
ArgsTable,
|
|
6
|
+
Description,
|
|
7
|
+
} from "@storybook/addon-docs";
|
|
8
|
+
import { withDesign } from "storybook-addon-designs";
|
|
9
|
+
|
|
10
|
+
import Table from "./Table";
|
|
11
|
+
import DSProvider from "../../theme/provider";
|
|
12
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
13
|
+
|
|
14
|
+
<Meta
|
|
15
|
+
title={getCategory("Table")}
|
|
16
|
+
component={Table}
|
|
17
|
+
decorators={[withDesign]}
|
|
18
|
+
parameters={{
|
|
19
|
+
design: {
|
|
20
|
+
type: "figma",
|
|
21
|
+
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=46780%3A27675",
|
|
22
|
+
},
|
|
23
|
+
jest: ["Table.test.tsx"],
|
|
24
|
+
}}
|
|
25
|
+
argTypes={{
|
|
26
|
+
columnHeaders: { control: { disable: true } },
|
|
27
|
+
columnHeadersBackgroundColor: { control: { type: "color" } },
|
|
28
|
+
columnHeadersTextColor: { control: { type: "color" } },
|
|
29
|
+
id: { control: false },
|
|
30
|
+
tableData: { control: false },
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
33
|
+
|
|
34
|
+
# Table
|
|
35
|
+
|
|
36
|
+
| Component Version | DS Version |
|
|
37
|
+
| ----------------- | ---------- |
|
|
38
|
+
| Added | `0.25.9` |
|
|
39
|
+
| Latest | `0.25.10` |
|
|
40
|
+
|
|
41
|
+
<Description of={Table} />
|
|
42
|
+
|
|
43
|
+
export const columnHeaders = [
|
|
44
|
+
"First Name",
|
|
45
|
+
"Last Name",
|
|
46
|
+
"Nick Name",
|
|
47
|
+
"Address1",
|
|
48
|
+
"City",
|
|
49
|
+
"State",
|
|
50
|
+
"Zipcode",
|
|
51
|
+
];
|
|
52
|
+
export const tableData = [
|
|
53
|
+
["Tom", "Nook", "Tanukichi", "Main Street", "New York", "NY", "23458"],
|
|
54
|
+
["Isabelle", "-", "Shizue", "Walnut Street", "New York", "NY", "23458"],
|
|
55
|
+
["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "NY", "98765"],
|
|
56
|
+
[
|
|
57
|
+
"Sonny",
|
|
58
|
+
"Resetti",
|
|
59
|
+
"Risetto san",
|
|
60
|
+
"Village Road",
|
|
61
|
+
"New York",
|
|
62
|
+
"NY",
|
|
63
|
+
"09873",
|
|
64
|
+
],
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
<Canvas withToolbar>
|
|
68
|
+
<Story
|
|
69
|
+
name="Table"
|
|
70
|
+
args={{
|
|
71
|
+
className: undefined,
|
|
72
|
+
columnHeaders,
|
|
73
|
+
columnHeadersBackgroundColor: undefined,
|
|
74
|
+
columnHeadersTextColor: undefined,
|
|
75
|
+
id: undefined,
|
|
76
|
+
showRowDividers: false,
|
|
77
|
+
tableData,
|
|
78
|
+
titleText: undefined,
|
|
79
|
+
useRowHeaders: false,
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
{(args) => <Table {...args}></Table>}
|
|
83
|
+
</Story>
|
|
84
|
+
</Canvas>
|
|
85
|
+
|
|
86
|
+
<ArgsTable story="Table" />
|
|
87
|
+
|
|
88
|
+
## Accessibility
|
|
89
|
+
|
|
90
|
+
- The HTML for the `Table` element is structured with proper semantic use of the
|
|
91
|
+
`table`, `caption`, `thead`, `tbody`, `tr`, and `td` HTML elements.
|
|
92
|
+
- When titles are added through the `titleText` prop, the `caption` element will
|
|
93
|
+
be rendered on the page.
|
|
94
|
+
- The first row and/or the first cell in a `tr` row can be headers. Each `th`
|
|
95
|
+
header cell has an appropriate scope attribute set to either `scope="col"` or
|
|
96
|
+
`scope="row"`. For example, every `th` cell in a `thead` `tr` row will have
|
|
97
|
+
`scope="col"`. Every `th` cell in a `tbody` `tr` row will have `scope="row"`.
|
|
98
|
+
These headers are visually different from the data. Use the `useRowHeaders`
|
|
99
|
+
prop to render the first cell in every row as a header.
|
|
100
|
+
|
|
101
|
+
## With a title
|
|
102
|
+
|
|
103
|
+
Use the `titleText` prop to add a title to the table.
|
|
104
|
+
|
|
105
|
+
<Canvas>
|
|
106
|
+
<DSProvider>
|
|
107
|
+
<Table
|
|
108
|
+
columnHeaders={columnHeaders}
|
|
109
|
+
id="title-table"
|
|
110
|
+
tableData={tableData}
|
|
111
|
+
titleText="Table with a title"
|
|
112
|
+
/>
|
|
113
|
+
</DSProvider>
|
|
114
|
+
</Canvas>
|
|
115
|
+
|
|
116
|
+
## With Row Dividers
|
|
117
|
+
|
|
118
|
+
Use the `showRowDividers` prop to render a divider between each row.
|
|
119
|
+
|
|
120
|
+
<Canvas>
|
|
121
|
+
<DSProvider>
|
|
122
|
+
<Table
|
|
123
|
+
columnHeaders={columnHeaders}
|
|
124
|
+
id="showRowDividers-table"
|
|
125
|
+
showRowDividers
|
|
126
|
+
tableData={tableData}
|
|
127
|
+
/>
|
|
128
|
+
</DSProvider>
|
|
129
|
+
</Canvas>
|
|
130
|
+
|
|
131
|
+
## With Row Headers
|
|
132
|
+
|
|
133
|
+
Use the `useRowHeaders` prop to render the first cell in every row as a header.
|
|
134
|
+
Notice that they turn bold.
|
|
135
|
+
|
|
136
|
+
<Canvas>
|
|
137
|
+
<DSProvider>
|
|
138
|
+
<Table
|
|
139
|
+
columnHeaders={columnHeaders}
|
|
140
|
+
id="rowHeaders-table"
|
|
141
|
+
tableData={tableData}
|
|
142
|
+
useRowHeaders
|
|
143
|
+
/>
|
|
144
|
+
</DSProvider>
|
|
145
|
+
</Canvas>
|
|
146
|
+
|
|
147
|
+
## With Custom Header Colors
|
|
148
|
+
|
|
149
|
+
It's possible to customize the header colors by using the `columnHeadersBackgroundColor`
|
|
150
|
+
and `columnHeadersTextColor` props. Note that the colors need to have sufficient
|
|
151
|
+
color contrast.
|
|
152
|
+
|
|
153
|
+
<Canvas>
|
|
154
|
+
<DSProvider>
|
|
155
|
+
<Table
|
|
156
|
+
columnHeaders={columnHeaders}
|
|
157
|
+
columnHeadersBackgroundColor="var(--nypl-colors-ui-link-secondary)"
|
|
158
|
+
columnHeadersTextColor="var(--nypl-colors-ui-white)"
|
|
159
|
+
id="rowHeaders-table"
|
|
160
|
+
showRowDividers
|
|
161
|
+
tableData={tableData}
|
|
162
|
+
useRowHeaders
|
|
163
|
+
/>
|
|
164
|
+
</DSProvider>
|
|
165
|
+
</Canvas>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { render, screen } from "@testing-library/react";
|
|
3
|
+
import { axe } from "jest-axe";
|
|
4
|
+
import renderer from "react-test-renderer";
|
|
5
|
+
|
|
6
|
+
import Table from "./Table";
|
|
7
|
+
|
|
8
|
+
export const columnHeaders = [
|
|
9
|
+
"First Name",
|
|
10
|
+
"Last Name",
|
|
11
|
+
"Nick Name",
|
|
12
|
+
"Address1",
|
|
13
|
+
"City",
|
|
14
|
+
"Zipcode",
|
|
15
|
+
"State",
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
export const tableData = [
|
|
19
|
+
["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
|
|
20
|
+
["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
|
|
21
|
+
["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
|
|
22
|
+
[
|
|
23
|
+
"Sonny",
|
|
24
|
+
"Resetti",
|
|
25
|
+
"Risetto san",
|
|
26
|
+
"Village Road",
|
|
27
|
+
"New York",
|
|
28
|
+
"09873",
|
|
29
|
+
"NY",
|
|
30
|
+
],
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
describe("Table Accessibility", () => {
|
|
34
|
+
it("passes axe accessibility test with the columnHeaders and tableData prop", async () => {
|
|
35
|
+
const { container } = render(
|
|
36
|
+
<Table columnHeaders={columnHeaders} tableData={tableData} />
|
|
37
|
+
);
|
|
38
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("passes axe accessibility test with tableData prop", async () => {
|
|
42
|
+
const { container } = render(<Table tableData={tableData} />);
|
|
43
|
+
expect(await axe(container)).toHaveNoViolations();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe("Table", () => {
|
|
48
|
+
it("renders a caption", () => {
|
|
49
|
+
render(<Table tableData={tableData} titleText="this is the caption" />);
|
|
50
|
+
expect(screen.getByText("this is the caption")).toBeInTheDocument();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("renders a table header", () => {
|
|
54
|
+
render(
|
|
55
|
+
<Table
|
|
56
|
+
columnHeaders={columnHeaders}
|
|
57
|
+
tableData={tableData}
|
|
58
|
+
titleText="this is the caption"
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
expect(screen.getByText("First Name")).toBeInTheDocument();
|
|
63
|
+
expect(screen.getByText("Last Name")).toBeInTheDocument();
|
|
64
|
+
expect(screen.getByText("Nick Name")).toBeInTheDocument();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("renders table data", () => {
|
|
68
|
+
render(<Table tableData={tableData} columnHeaders={columnHeaders} />);
|
|
69
|
+
|
|
70
|
+
expect(screen.getByText("Tom")).toBeInTheDocument();
|
|
71
|
+
expect(screen.getByText("Nook")).toBeInTheDocument();
|
|
72
|
+
expect(screen.getByText("Village Road")).toBeInTheDocument();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("logs a warning when the `tableData` prop is an empty array", async () => {
|
|
76
|
+
const warn = jest.spyOn(console, "warn");
|
|
77
|
+
render(<Table tableData={[]} />);
|
|
78
|
+
expect(warn).toHaveBeenCalledWith(
|
|
79
|
+
"Table: data should be two dimensional array."
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it("renders the UI snapshot correctly", () => {
|
|
84
|
+
const basic = renderer
|
|
85
|
+
.create(<Table id="basic" tableData={tableData} />)
|
|
86
|
+
.toJSON();
|
|
87
|
+
const withCaption = renderer
|
|
88
|
+
.create(
|
|
89
|
+
<Table
|
|
90
|
+
id="withCaption"
|
|
91
|
+
tableData={tableData}
|
|
92
|
+
titleText="this is the caption"
|
|
93
|
+
/>
|
|
94
|
+
)
|
|
95
|
+
.toJSON();
|
|
96
|
+
const withHeaders = renderer
|
|
97
|
+
.create(
|
|
98
|
+
<Table
|
|
99
|
+
columnHeaders={columnHeaders}
|
|
100
|
+
id="withHeaders"
|
|
101
|
+
tableData={tableData}
|
|
102
|
+
titleText="this is the caption"
|
|
103
|
+
/>
|
|
104
|
+
)
|
|
105
|
+
.toJSON();
|
|
106
|
+
const withRowHeaders = renderer
|
|
107
|
+
.create(
|
|
108
|
+
<Table
|
|
109
|
+
columnHeaders={columnHeaders}
|
|
110
|
+
id="withHeaders"
|
|
111
|
+
tableData={tableData}
|
|
112
|
+
titleText="this is the caption"
|
|
113
|
+
useRowHeaders
|
|
114
|
+
/>
|
|
115
|
+
)
|
|
116
|
+
.toJSON();
|
|
117
|
+
const withCustomHeaderColors = renderer
|
|
118
|
+
.create(
|
|
119
|
+
<Table
|
|
120
|
+
columnHeadersBackgroundColor="var(--nypl-colors-ui-link-primary)"
|
|
121
|
+
columnHeadersTextColor="var(--nypl-colors-ui-white)"
|
|
122
|
+
columnHeaders={columnHeaders}
|
|
123
|
+
id="withHeaders"
|
|
124
|
+
tableData={tableData}
|
|
125
|
+
titleText="this is the caption"
|
|
126
|
+
useRowHeaders
|
|
127
|
+
/>
|
|
128
|
+
)
|
|
129
|
+
.toJSON();
|
|
130
|
+
|
|
131
|
+
expect(basic).toMatchSnapshot();
|
|
132
|
+
expect(withCaption).toMatchSnapshot();
|
|
133
|
+
expect(withHeaders).toMatchSnapshot();
|
|
134
|
+
expect(withRowHeaders).toMatchSnapshot();
|
|
135
|
+
expect(withCustomHeaderColors).toMatchSnapshot();
|
|
136
|
+
});
|
|
137
|
+
});
|