@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
|
@@ -63,6 +63,46 @@ describe("VideoPlayer", () => {
|
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
+
describe("using embedCode prop", () => {
|
|
67
|
+
const embedCode = `<iframe src="https://player.vimeo.com/video/421404144?h=5467db7edd" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>`;
|
|
68
|
+
const embedCodeWithTitle = `<iframe title="Pre-Existing iFrame Title" src="https://player.vimeo.com/video/421404144?h=5467db7edd" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>`;
|
|
69
|
+
|
|
70
|
+
it("Renders custom embed code", () => {
|
|
71
|
+
render(<VideoPlayer embedCode={embedCode} />);
|
|
72
|
+
expect(screen.getByTitle("Video player")).toBeInTheDocument();
|
|
73
|
+
expect(screen.getByTitle("Video player")).toHaveAttribute(
|
|
74
|
+
"src",
|
|
75
|
+
`https://player.vimeo.com/video/421404144?h=5467db7edd`
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("Renders custom embed code with custom iframe title", () => {
|
|
80
|
+
render(
|
|
81
|
+
<VideoPlayer embedCode={embedCode} iframeTitle="Custom iFrame Title" />
|
|
82
|
+
);
|
|
83
|
+
expect(screen.getByTitle("Custom iFrame Title")).toBeInTheDocument();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("Renders custom embed code with pre-existing title", () => {
|
|
87
|
+
render(<VideoPlayer embedCode={embedCodeWithTitle} />);
|
|
88
|
+
expect(
|
|
89
|
+
screen.getByTitle("Pre-Existing iFrame Title")
|
|
90
|
+
).toBeInTheDocument();
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("Renders custom embed code with pre-existing title and ignores `iframeTitle` prop", () => {
|
|
94
|
+
render(
|
|
95
|
+
<VideoPlayer
|
|
96
|
+
embedCode={embedCodeWithTitle}
|
|
97
|
+
iframeTitle="Custom iFrame Title"
|
|
98
|
+
/>
|
|
99
|
+
);
|
|
100
|
+
expect(
|
|
101
|
+
screen.getByTitle("Pre-Existing iFrame Title")
|
|
102
|
+
).toBeInTheDocument();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
66
106
|
describe("text elements", () => {
|
|
67
107
|
beforeEach(() => {
|
|
68
108
|
utils = render(
|
|
@@ -121,7 +161,7 @@ describe("VideoPlayer", () => {
|
|
|
121
161
|
});
|
|
122
162
|
|
|
123
163
|
describe("prop validation", () => {
|
|
124
|
-
it("Throws error if videoId not formatted properly", () => {
|
|
164
|
+
it("Throws error if the videoId prop not is formatted properly", () => {
|
|
125
165
|
render(
|
|
126
166
|
<VideoPlayer
|
|
127
167
|
videoType={VideoPlayerTypes.Vimeo}
|
|
@@ -135,6 +175,56 @@ describe("VideoPlayer", () => {
|
|
|
135
175
|
)
|
|
136
176
|
).toBeInTheDocument();
|
|
137
177
|
});
|
|
178
|
+
|
|
179
|
+
it("Throws appropriate error if VideoPlayer props are not configured properly", () => {
|
|
180
|
+
const warn = jest.spyOn(console, "warn");
|
|
181
|
+
|
|
182
|
+
render(<VideoPlayer />);
|
|
183
|
+
expect(warn).toHaveBeenCalledWith(
|
|
184
|
+
"VideoPlayer requires either the `embedCode` prop or both the `videoType` and `videoId` props."
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
render(<VideoPlayer videoId="http://vimeo.com/474719268" />);
|
|
188
|
+
expect(warn).toHaveBeenCalledWith(
|
|
189
|
+
"VideoPlayer also requires the `videoType` prop. You have only set the `videoId` prop."
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
render(<VideoPlayer videoType={VideoPlayerTypes.Vimeo} />);
|
|
193
|
+
expect(warn).toHaveBeenCalledWith(
|
|
194
|
+
"VideoPlayer also requires the `videoId` prop. You have only set the `videoType` prop."
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
render(
|
|
198
|
+
<VideoPlayer
|
|
199
|
+
embedCode="<iframe src='https://player.vimeo.com/video/421404144?h=5467db7edd' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe>"
|
|
200
|
+
videoType={VideoPlayerTypes.Vimeo}
|
|
201
|
+
videoId="http://vimeo.com/474719268"
|
|
202
|
+
/>
|
|
203
|
+
);
|
|
204
|
+
expect(warn).toHaveBeenCalledWith(
|
|
205
|
+
"VideoPlayer can accept the `embedCode` prop or the `videoType` and `videoId` props. You have set both."
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
render(
|
|
209
|
+
<VideoPlayer
|
|
210
|
+
embedCode="<iframe src='https://player.vimeo.com/video/421404144?h=5467db7edd' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe>"
|
|
211
|
+
videoType={VideoPlayerTypes.Vimeo}
|
|
212
|
+
/>
|
|
213
|
+
);
|
|
214
|
+
expect(warn).toHaveBeenCalledWith(
|
|
215
|
+
"VideoPlayer can accept the `embedCode` prop or the `videoType` and `videoId` props. You have set both."
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
render(
|
|
219
|
+
<VideoPlayer
|
|
220
|
+
embedCode="<iframe src='https://player.vimeo.com/video/421404144?h=5467db7edd' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe>"
|
|
221
|
+
videoId="http://vimeo.com/474719268"
|
|
222
|
+
/>
|
|
223
|
+
);
|
|
224
|
+
expect(warn).toHaveBeenCalledWith(
|
|
225
|
+
"VideoPlayer can accept the `embedCode` prop or the `videoType` and `videoId` props. You have set both."
|
|
226
|
+
);
|
|
227
|
+
});
|
|
138
228
|
});
|
|
139
229
|
|
|
140
230
|
it("renders the UI snapshot correctly", () => {
|
|
@@ -159,6 +249,17 @@ describe("VideoPlayer", () => {
|
|
|
159
249
|
/>
|
|
160
250
|
)
|
|
161
251
|
.toJSON();
|
|
252
|
+
const videoPlayerUsingEmbedCode = renderer
|
|
253
|
+
.create(
|
|
254
|
+
<VideoPlayer
|
|
255
|
+
descriptionText="VideoPlayer description"
|
|
256
|
+
embedCode="<iframe src='https://player.vimeo.com/video/421404144?h=5467db7edd' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe>"
|
|
257
|
+
headingText="VideoPlayer Heading"
|
|
258
|
+
id="video-player-with-text"
|
|
259
|
+
helperText="VideoPlayer helper test."
|
|
260
|
+
/>
|
|
261
|
+
)
|
|
262
|
+
.toJSON();
|
|
162
263
|
const videoPlayerError = renderer
|
|
163
264
|
.create(
|
|
164
265
|
<VideoPlayer
|
|
@@ -171,6 +272,7 @@ describe("VideoPlayer", () => {
|
|
|
171
272
|
|
|
172
273
|
expect(videoPlayerWithoutText).toMatchSnapshot();
|
|
173
274
|
expect(videoPlayerWithText).toMatchSnapshot();
|
|
275
|
+
expect(videoPlayerUsingEmbedCode).toMatchSnapshot();
|
|
174
276
|
expect(videoPlayerError).toMatchSnapshot();
|
|
175
277
|
});
|
|
176
278
|
});
|
|
@@ -1,31 +1,43 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
1
|
import { Box, useMultiStyleConfig } from "@chakra-ui/react";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
3
4
|
import ComponentWrapper from "../ComponentWrapper/ComponentWrapper";
|
|
5
|
+
import { HelperErrorTextType } from "../HelperErrorText/HelperErrorText";
|
|
6
|
+
import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
|
|
4
7
|
import generateUUID from "../../helpers/generateUUID";
|
|
5
8
|
import { getVariant } from "../../utils/utils";
|
|
6
|
-
import { VideoPlayerAspectRatios, VideoPlayerTypes } from "./VideoPlayerTypes";
|
|
7
9
|
|
|
8
10
|
export interface VideoPlayerProps {
|
|
9
|
-
/** Optional aspect ratio prop to control the sizing of the video player; if
|
|
11
|
+
/** Optional aspect ratio prop to control the sizing of the video player; if
|
|
12
|
+
* omitted, the video player defaults to `sixteen-by-nine` */
|
|
10
13
|
aspectRatio?: VideoPlayerAspectRatios;
|
|
11
14
|
/** Optional className you can add in addition to `video-player` */
|
|
12
15
|
className?: string;
|
|
13
16
|
/** Optional string to set the text for a video description */
|
|
14
17
|
descriptionText?: string;
|
|
18
|
+
/** Optional string to set a code snippet provided by YouTube or Vimeo; the
|
|
19
|
+
* `videoPlayer` component will accept the `embedCode` prop or the `videoId`
|
|
20
|
+
* and `videoType` props */
|
|
21
|
+
embedCode?: string;
|
|
15
22
|
/** Optional string to set the text for a `Heading` component */
|
|
16
23
|
headingText?: string;
|
|
17
24
|
/** Optional string to set the text for a `HelperErrorText` component */
|
|
18
|
-
helperText?:
|
|
25
|
+
helperText?: HelperErrorTextType;
|
|
19
26
|
/** ID that other components can cross reference for accessibility purposes */
|
|
20
27
|
id?: string;
|
|
21
|
-
/** Optional title to be added to the `<iframe>` element for improved
|
|
28
|
+
/** Optional title to be added to the `<iframe>` element for improved
|
|
29
|
+
* accessibility; this title should describe in a few words the content of
|
|
30
|
+
* the video; if omitted, a generic title will be added; if a `title`
|
|
31
|
+
* attribute is already present in the `embedCode` prop, this prop will be
|
|
32
|
+
* ignored */
|
|
22
33
|
iframeTitle?: string;
|
|
23
34
|
/** Offers the ability to hide the helper/invalid text. */
|
|
24
35
|
showHelperInvalidText?: boolean;
|
|
25
|
-
/** Required YouTube or Vimeo video ID. This value can be pulled from a
|
|
26
|
-
|
|
36
|
+
/** Required YouTube or Vimeo video ID. This value can be pulled from a
|
|
37
|
+
* video's YouTube or Vimeo URL. */
|
|
38
|
+
videoId?: string;
|
|
27
39
|
/** Required. Used to specify which video service is being used. */
|
|
28
|
-
videoType
|
|
40
|
+
videoType?: VideoPlayerTypes;
|
|
29
41
|
}
|
|
30
42
|
|
|
31
43
|
export default function VideoPlayer(
|
|
@@ -35,6 +47,7 @@ export default function VideoPlayer(
|
|
|
35
47
|
aspectRatio,
|
|
36
48
|
className,
|
|
37
49
|
descriptionText,
|
|
50
|
+
embedCode,
|
|
38
51
|
headingText,
|
|
39
52
|
helperText,
|
|
40
53
|
id = generateUUID(),
|
|
@@ -54,29 +67,64 @@ export default function VideoPlayer(
|
|
|
54
67
|
? `https://player.vimeo.com/video/${videoId}?autoplay=0&loop=0`
|
|
55
68
|
: `https://www.youtube.com/embed/${videoId}?disablekb=1&autoplay=0&fs=1&modestbranding=0`;
|
|
56
69
|
|
|
70
|
+
const iFrameTitleEmbedCode = iframeTitle ? `${iframeTitle}` : `Video player`;
|
|
71
|
+
|
|
72
|
+
const embedCodeFinal =
|
|
73
|
+
embedCode && embedCode.includes("<iframe") && !embedCode.includes("title=")
|
|
74
|
+
? embedCode.replace(
|
|
75
|
+
`<iframe `,
|
|
76
|
+
`<iframe title="${iFrameTitleEmbedCode}" `
|
|
77
|
+
)
|
|
78
|
+
: embedCode;
|
|
79
|
+
|
|
57
80
|
const errorMessage =
|
|
58
81
|
"<strong>Error:</strong> This video player has not been configured properly. Please contact the site administrator.";
|
|
59
82
|
|
|
60
83
|
let isInvalid = false;
|
|
61
|
-
if (!videoType && !videoId) {
|
|
62
|
-
console.warn(
|
|
84
|
+
if (!embedCodeFinal && !videoType && !videoId) {
|
|
85
|
+
console.warn(
|
|
86
|
+
"VideoPlayer requires either the `embedCode` prop or both the `videoType` and `videoId` props."
|
|
87
|
+
);
|
|
63
88
|
isInvalid = true;
|
|
64
|
-
} else if (!videoType) {
|
|
65
|
-
console.warn(
|
|
89
|
+
} else if (!embedCodeFinal && !videoType) {
|
|
90
|
+
console.warn(
|
|
91
|
+
"VideoPlayer also requires the `videoType` prop. You have only set the `videoId` prop."
|
|
92
|
+
);
|
|
66
93
|
isInvalid = true;
|
|
67
|
-
} else if (!videoId) {
|
|
68
|
-
console.warn(
|
|
94
|
+
} else if (!embedCodeFinal && !videoId) {
|
|
95
|
+
console.warn(
|
|
96
|
+
"VideoPlayer also requires the `videoId` prop. You have only set the `videoType` prop."
|
|
97
|
+
);
|
|
98
|
+
isInvalid = true;
|
|
99
|
+
} else if (embedCodeFinal && (videoType || videoId)) {
|
|
100
|
+
console.warn(
|
|
101
|
+
"VideoPlayer can accept the `embedCode` prop or the `videoType` and `videoId` props. You have set both."
|
|
102
|
+
);
|
|
103
|
+
isInvalid = true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (
|
|
107
|
+
videoId &&
|
|
108
|
+
(videoId.includes("://") ||
|
|
109
|
+
videoId.includes("http") ||
|
|
110
|
+
videoId.includes(".") ||
|
|
111
|
+
videoId.includes("youtube") ||
|
|
112
|
+
videoId.includes("vimeo"))
|
|
113
|
+
) {
|
|
114
|
+
console.warn("The VideoPlayer `videoId` prop is not configured properly.");
|
|
69
115
|
isInvalid = true;
|
|
70
116
|
}
|
|
71
117
|
|
|
72
118
|
if (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
119
|
+
embedCodeFinal &&
|
|
120
|
+
((!embedCodeFinal.includes("vimeo.com") &&
|
|
121
|
+
!embedCodeFinal.includes("youtube.com")) ||
|
|
122
|
+
!embedCodeFinal.includes("<iframe") ||
|
|
123
|
+
!embedCodeFinal.includes("</iframe"))
|
|
78
124
|
) {
|
|
79
|
-
console.warn(
|
|
125
|
+
console.warn(
|
|
126
|
+
"The VideoPlayer `embedCode` prop is not configured properly."
|
|
127
|
+
);
|
|
80
128
|
isInvalid = true;
|
|
81
129
|
}
|
|
82
130
|
|
|
@@ -85,7 +133,9 @@ export default function VideoPlayer(
|
|
|
85
133
|
: getVariant(aspectRatio, VideoPlayerAspectRatios);
|
|
86
134
|
const styles = useMultiStyleConfig("VideoPlayer", { variant });
|
|
87
135
|
|
|
88
|
-
const
|
|
136
|
+
const embedElement = embedCodeFinal ? (
|
|
137
|
+
<span dangerouslySetInnerHTML={{ __html: embedCodeFinal }} />
|
|
138
|
+
) : (
|
|
89
139
|
<Box
|
|
90
140
|
as="iframe"
|
|
91
141
|
src={videoSrc}
|
|
@@ -113,7 +163,7 @@ export default function VideoPlayer(
|
|
|
113
163
|
helperText={helperText && showHelperInvalidText ? helperText : null}
|
|
114
164
|
id={`${id}-componentWrapper`}
|
|
115
165
|
>
|
|
116
|
-
<Box __css={styles.inside}>{
|
|
166
|
+
<Box __css={styles.inside}>{embedElement}</Box>
|
|
117
167
|
</ComponentWrapper>
|
|
118
168
|
)}
|
|
119
169
|
</Box>
|
|
@@ -64,17 +64,71 @@ exports[`VideoPlayer renders the UI snapshot correctly 2`] = `
|
|
|
64
64
|
aria-atomic={true}
|
|
65
65
|
aria-live="off"
|
|
66
66
|
className=" css-0"
|
|
67
|
+
dangerouslySetInnerHTML={
|
|
68
|
+
Object {
|
|
69
|
+
"__html": "VideoPlayer helper test.",
|
|
70
|
+
}
|
|
71
|
+
}
|
|
67
72
|
data-isinvalid={false}
|
|
68
73
|
id="video-player-with-text-componentWrapper-helperText"
|
|
69
|
-
|
|
70
|
-
VideoPlayer helper test.
|
|
71
|
-
</div>
|
|
74
|
+
/>
|
|
72
75
|
</div>
|
|
73
76
|
</div>
|
|
74
77
|
</div>
|
|
75
78
|
`;
|
|
76
79
|
|
|
77
80
|
exports[`VideoPlayer renders the UI snapshot correctly 3`] = `
|
|
81
|
+
<div
|
|
82
|
+
className="css-0"
|
|
83
|
+
data-testid="video-player-component"
|
|
84
|
+
id="video-player-with-text"
|
|
85
|
+
>
|
|
86
|
+
<div
|
|
87
|
+
className="css-0"
|
|
88
|
+
>
|
|
89
|
+
<h2
|
|
90
|
+
className="chakra-heading css-0"
|
|
91
|
+
id="video-player-with-text-componentWrapper-heading"
|
|
92
|
+
>
|
|
93
|
+
VideoPlayer Heading
|
|
94
|
+
</h2>
|
|
95
|
+
<p
|
|
96
|
+
className="chakra-text css-0"
|
|
97
|
+
>
|
|
98
|
+
VideoPlayer description
|
|
99
|
+
</p>
|
|
100
|
+
<div
|
|
101
|
+
className="css-0"
|
|
102
|
+
>
|
|
103
|
+
<span
|
|
104
|
+
dangerouslySetInnerHTML={
|
|
105
|
+
Object {
|
|
106
|
+
"__html": "<iframe title=\\"Video player\\" src='https://player.vimeo.com/video/421404144?h=5467db7edd' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe>",
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/>
|
|
110
|
+
</div>
|
|
111
|
+
<div
|
|
112
|
+
className="css-0"
|
|
113
|
+
>
|
|
114
|
+
<div
|
|
115
|
+
aria-atomic={true}
|
|
116
|
+
aria-live="off"
|
|
117
|
+
className=" css-0"
|
|
118
|
+
dangerouslySetInnerHTML={
|
|
119
|
+
Object {
|
|
120
|
+
"__html": "VideoPlayer helper test.",
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
data-isinvalid={false}
|
|
124
|
+
id="video-player-with-text-componentWrapper-helperText"
|
|
125
|
+
/>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
`;
|
|
130
|
+
|
|
131
|
+
exports[`VideoPlayer renders the UI snapshot correctly 4`] = `
|
|
78
132
|
<div
|
|
79
133
|
className="css-0"
|
|
80
134
|
data-testid="video-player-component"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta } from "@storybook/addon-docs
|
|
1
|
+
import { Meta } from "@storybook/addon-docs";
|
|
2
2
|
|
|
3
3
|
<Meta title="Chakra UI" />
|
|
4
4
|
|
|
@@ -141,9 +141,7 @@ function Tabs(props) {
|
|
|
141
141
|
|
|
142
142
|
#### Patterns
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
structure and write CSS, but it is slowly being phased out. We are moving away
|
|
146
|
-
from this and re-writing SCSS classes into Javascript objects that work with
|
|
144
|
+
We are writing CSS style object rules into Javascript objects that work with
|
|
147
145
|
Chakra's theme. Instead of creating a variant for a component with a class name,
|
|
148
146
|
now different props or internal logic are used to get the appropriate variant.
|
|
149
147
|
Internally, the right variant will be mapped to a Chakra theme variant that will
|
|
@@ -172,10 +170,6 @@ to test them ourselves.
|
|
|
172
170
|
|
|
173
171
|
## Styling
|
|
174
172
|
|
|
175
|
-
As mentioned in the [Components composed with Chakra](#components-composed-with-chakra)
|
|
176
|
-
section, we are moving away from using the BEM structure to using Javascript
|
|
177
|
-
objects to extend Chakra's theme.
|
|
178
|
-
|
|
179
173
|
The NYPL DS' theme file can be found at `src/theme/index.ts`. This creates a new
|
|
180
174
|
theme that extends Chakra's theme and is set in the `DSProvider` component. Note
|
|
181
175
|
that the example below is the general structure of the `theme` object but the DS
|
|
@@ -183,6 +177,9 @@ that the example below is the general structure of the `theme` object but the DS
|
|
|
183
177
|
only work and add new object values in the `components` obejct key for new
|
|
184
178
|
components and their theme or variants.
|
|
185
179
|
|
|
180
|
+
_Note_: There are some SCSS files used to style third party plugins and to
|
|
181
|
+
generate SCSS mixins.
|
|
182
|
+
|
|
186
183
|
```ts
|
|
187
184
|
const theme = extendTheme({
|
|
188
185
|
styles: { ... },
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Meta } from "@storybook/addon-docs
|
|
1
|
+
import { Meta } from "@storybook/addon-docs";
|
|
2
|
+
|
|
2
3
|
import Hero from "../components/Hero/Hero.tsx";
|
|
3
4
|
import { HeroTypes } from "../components/Hero/HeroTypes.tsx";
|
|
4
5
|
import Heading from "../components/Heading/Heading.tsx";
|
|
5
6
|
import Image from "../components/Image/Image.tsx";
|
|
6
|
-
import getCSSVariable from "../helpers/getCSSVariable";
|
|
7
7
|
import DSProvider from "../theme/provider";
|
|
8
8
|
|
|
9
9
|
<Meta title="Introduction" />
|
package/src/index.ts
CHANGED
|
@@ -7,9 +7,11 @@ export {
|
|
|
7
7
|
ButtonGroup,
|
|
8
8
|
Center,
|
|
9
9
|
Circle,
|
|
10
|
+
Flex,
|
|
10
11
|
Grid,
|
|
11
12
|
GridItem,
|
|
12
13
|
HStack,
|
|
14
|
+
Spacer,
|
|
13
15
|
Square,
|
|
14
16
|
Stack,
|
|
15
17
|
VStack,
|
|
@@ -26,16 +28,18 @@ export {
|
|
|
26
28
|
CardHeading,
|
|
27
29
|
} from "./components/Card/Card";
|
|
28
30
|
export { CardLayouts } from "./components/Card/CardTypes";
|
|
29
|
-
export { default as CardEdition } from "./components/CardEdition/CardEdition";
|
|
30
31
|
export { default as Checkbox } from "./components/Checkbox/Checkbox";
|
|
31
32
|
export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
|
|
32
33
|
export { CheckboxGroupLayoutTypes } from "./components/CheckboxGroup/CheckboxGroupLayoutTypes";
|
|
33
|
-
export {
|
|
34
|
+
export {
|
|
35
|
+
default as DatePicker,
|
|
36
|
+
FullDateType,
|
|
37
|
+
} from "./components/DatePicker/DatePicker";
|
|
34
38
|
export { DatePickerTypes } from "./components/DatePicker/DatePickerTypes";
|
|
35
39
|
export { default as DSProvider } from "./theme/provider";
|
|
36
40
|
export { default as Fieldset } from "./components/Fieldset/Fieldset";
|
|
37
41
|
export { default as Form, FormField, FormRow } from "./components/Form/Form";
|
|
38
|
-
export {
|
|
42
|
+
export { FormGaps } from "./components/Form/FormTypes";
|
|
39
43
|
export { GridGaps } from "./components/Grid/GridTypes";
|
|
40
44
|
export { default as Heading } from "./components/Heading/Heading";
|
|
41
45
|
export {
|
|
@@ -54,7 +58,6 @@ export {
|
|
|
54
58
|
IconRotationTypes,
|
|
55
59
|
IconSizes,
|
|
56
60
|
IconTypes,
|
|
57
|
-
LogoNames,
|
|
58
61
|
} from "./components/Icons/IconTypes";
|
|
59
62
|
export { default as Image } from "./components/Image/Image";
|
|
60
63
|
export {
|
|
@@ -62,18 +65,22 @@ export {
|
|
|
62
65
|
ImageSizes,
|
|
63
66
|
ImageTypes,
|
|
64
67
|
} from "./components/Image/ImageTypes";
|
|
65
|
-
export { default as Input } from "./components/Input/Input";
|
|
66
|
-
export { InputTypes } from "./components/Input/InputTypes";
|
|
67
68
|
export { default as Label } from "./components/Label/Label";
|
|
68
69
|
export { default as Link } from "./components/Link/Link";
|
|
69
70
|
export { LinkTypes } from "./components/Link/LinkTypes";
|
|
70
71
|
export { default as List } from "./components/List/List";
|
|
71
72
|
export { ListTypes } from "./components/List/ListTypes";
|
|
73
|
+
export { default as Logo } from "./components/Logo/Logo";
|
|
74
|
+
export { LogoColors, LogoNames, LogoSizes } from "./components/Logo/LogoTypes";
|
|
72
75
|
export { default as Modal } from "./components/Modal/Modal";
|
|
73
76
|
export { default as Notification } from "./components/Notification/Notification";
|
|
74
77
|
export { NotificationTypes } from "./components/Notification/NotificationTypes";
|
|
75
78
|
export { default as Pagination } from "./components/Pagination/Pagination";
|
|
76
79
|
export { default as ProgressIndicator } from "./components/ProgressIndicator/ProgressIndicator";
|
|
80
|
+
export {
|
|
81
|
+
ProgressIndicatorSizes,
|
|
82
|
+
ProgressIndicatorTypes,
|
|
83
|
+
} from "./components/ProgressIndicator/ProgressIndicatorTypes";
|
|
77
84
|
export { default as Radio } from "./components/Radio/Radio";
|
|
78
85
|
export { default as RadioGroup } from "./components/RadioGroup/RadioGroup";
|
|
79
86
|
export { RadioGroupLayoutTypes } from "./components/RadioGroup/RadioGroupLayoutTypes";
|
|
@@ -88,6 +95,8 @@ export {
|
|
|
88
95
|
export { default as Slider } from "./components/Slider/Slider";
|
|
89
96
|
export { default as StatusBadge } from "./components/StatusBadge/StatusBadge";
|
|
90
97
|
export { StatusBadgeTypes } from "./components/StatusBadge/StatusBadgeTypes";
|
|
98
|
+
export { default as StructuredContent } from "./components/StructuredContent/StructuredContent";
|
|
99
|
+
export { StructuredContentImagePosition } from "./components/StructuredContent/StructuredContentTypes";
|
|
91
100
|
export {
|
|
92
101
|
Tabs,
|
|
93
102
|
TabList,
|
|
@@ -98,6 +107,7 @@ export {
|
|
|
98
107
|
export {
|
|
99
108
|
TemplateAppContainer,
|
|
100
109
|
Template,
|
|
110
|
+
TemplateAboveHeader,
|
|
101
111
|
TemplateHeader,
|
|
102
112
|
TemplateBreakout,
|
|
103
113
|
TemplateContent,
|
|
@@ -113,9 +123,12 @@ export {
|
|
|
113
123
|
TextInputRefType,
|
|
114
124
|
} from "./components/TextInput/TextInput";
|
|
115
125
|
export { TextInputTypes } from "./components/TextInput/TextInputTypes";
|
|
126
|
+
export { default as Toggle } from "./components/Toggle/Toggle";
|
|
127
|
+
export { ToggleSizes } from "./components/Toggle/ToggleSizes";
|
|
116
128
|
export { default as useNYPLTheme } from "./hooks/useNYPLTheme";
|
|
117
129
|
export { default as VideoPlayer } from "./components/VideoPlayer/VideoPlayer";
|
|
118
130
|
export {
|
|
119
131
|
VideoPlayerAspectRatios,
|
|
120
132
|
VideoPlayerTypes,
|
|
121
133
|
} from "./components/VideoPlayer/VideoPlayerTypes";
|
|
134
|
+
export { default as Table } from "./components/Table/Table";
|
|
@@ -6,13 +6,6 @@
|
|
|
6
6
|
margin-bottom: var(--nypl-space-xl);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
&--full {
|
|
10
|
-
margin-bottom: var(--nypl-space-xxl);
|
|
11
|
-
@include breakpoint($nypl-breakpoint-large) {
|
|
12
|
-
margin-bottom: var(--nypl-space-xxxl);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
9
|
padding: var(--nypl-space-s);
|
|
17
10
|
|
|
18
11
|
align-items: center;
|
|
@@ -25,6 +18,13 @@
|
|
|
25
18
|
padding: 4rem 1rem;
|
|
26
19
|
width: 100%;
|
|
27
20
|
|
|
21
|
+
&--full {
|
|
22
|
+
margin-bottom: var(--nypl-space-xxl);
|
|
23
|
+
@include breakpoint($nypl-breakpoint-large) {
|
|
24
|
+
margin-bottom: var(--nypl-space-xxxl);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
28
|
&--short {
|
|
29
29
|
padding: 1rem 1rem;
|
|
30
30
|
}
|
package/src/styles.scss
CHANGED
|
@@ -20,11 +20,7 @@
|
|
|
20
20
|
@import "./styles/space/_space-inset";
|
|
21
21
|
@import "./styles/space/_space-stack";
|
|
22
22
|
|
|
23
|
-
// Legacy/deprecated components:
|
|
24
|
-
@import "./components/CardEdition/_CardEdition.scss";
|
|
25
|
-
@import "./components/Input/_Input.scss";
|
|
26
|
-
|
|
27
23
|
// Components.
|
|
28
|
-
@import "./components/Autosuggest/_Autosuggest.scss";
|
|
24
|
+
@import "./components/Autosuggest/_Autosuggest.scss";
|
|
29
25
|
@import "./components/DatePicker/_DatePicker.scss";
|
|
30
26
|
@import "./components/Modal/_Modal.scss";
|
|
@@ -12,7 +12,7 @@ const booksAndMore = {
|
|
|
12
12
|
bg: "section.books-and-more.secondary",
|
|
13
13
|
};
|
|
14
14
|
const locations = {
|
|
15
|
-
bg: "section.locations.
|
|
15
|
+
bg: "section.locations.primary",
|
|
16
16
|
};
|
|
17
17
|
const research = {
|
|
18
18
|
bg: "section.research.secondary",
|
|
@@ -25,8 +25,8 @@ const Breadcrumb = {
|
|
|
25
25
|
baseStyle: {
|
|
26
26
|
bg: "ui.black",
|
|
27
27
|
color: "ui.white",
|
|
28
|
-
fontSize: "
|
|
29
|
-
fontWeight: "
|
|
28
|
+
fontSize: "breadcrumbs.default",
|
|
29
|
+
fontWeight: "breadcrumbs.default",
|
|
30
30
|
paddingBottom: "xs",
|
|
31
31
|
paddingTop: "xs",
|
|
32
32
|
ol: {
|
|
@@ -43,7 +43,7 @@ const Breadcrumb = {
|
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
"li:last-child": {
|
|
46
|
-
fontWeight: { base: "
|
|
46
|
+
fontWeight: { base: "breadcrumbs.default", md: "breadcrumbs.lastChild" },
|
|
47
47
|
".chakra-breadcrumb__link": {
|
|
48
48
|
_hover: {
|
|
49
49
|
cursor: "default",
|
|
@@ -67,7 +67,7 @@ const Breadcrumb = {
|
|
|
67
67
|
marginInlineStart: "xxs",
|
|
68
68
|
},
|
|
69
69
|
},
|
|
70
|
-
"li:nth-last-
|
|
70
|
+
"li:nth-last-of-type(2)": {
|
|
71
71
|
display: "inline-block",
|
|
72
72
|
span: {
|
|
73
73
|
display: { base: "none", md: "inline" },
|
|
@@ -10,7 +10,7 @@ const baseStyle = {
|
|
|
10
10
|
px: "s",
|
|
11
11
|
textDecoration: "none",
|
|
12
12
|
wordWrap: "normal",
|
|
13
|
-
fontWeight: "
|
|
13
|
+
fontWeight: "button.default",
|
|
14
14
|
svg: {
|
|
15
15
|
fill: "currentColor",
|
|
16
16
|
marginTop: "xxs",
|
|
@@ -34,14 +34,14 @@ const primary = {
|
|
|
34
34
|
bg: "ui.link.primary",
|
|
35
35
|
minWidth: "none",
|
|
36
36
|
height: "none",
|
|
37
|
-
fontSize: "
|
|
37
|
+
fontSize: "button.default",
|
|
38
38
|
};
|
|
39
39
|
const secondary = {
|
|
40
40
|
bg: "ui.white",
|
|
41
41
|
border: "1px solid",
|
|
42
42
|
borderColor: "ui.gray.light-cool",
|
|
43
43
|
color: "inherit",
|
|
44
|
-
fontSize: "
|
|
44
|
+
fontSize: "button.default",
|
|
45
45
|
_hover: {
|
|
46
46
|
bg: "ui.gray.xx-light-cool",
|
|
47
47
|
},
|
|
@@ -68,7 +68,7 @@ const pill = {
|
|
|
68
68
|
py: "xs",
|
|
69
69
|
paddingInlineStart: "m",
|
|
70
70
|
paddingInlineEnd: "m",
|
|
71
|
-
fontSize: "
|
|
71
|
+
fontSize: "button.default",
|
|
72
72
|
_hover: {
|
|
73
73
|
bg: "ui.gray.xx-light-cool",
|
|
74
74
|
},
|
|
@@ -86,7 +86,7 @@ const iconOnly = {
|
|
|
86
86
|
};
|
|
87
87
|
const callout = {
|
|
88
88
|
bg: "brand.primary",
|
|
89
|
-
fontSize: "
|
|
89
|
+
fontSize: "button.default",
|
|
90
90
|
_hover: {
|
|
91
91
|
bg: "brand.secondary",
|
|
92
92
|
},
|
|
@@ -94,12 +94,6 @@ const callout = {
|
|
|
94
94
|
bg: "brand.secondary",
|
|
95
95
|
},
|
|
96
96
|
};
|
|
97
|
-
const searchBar = {
|
|
98
|
-
...primary,
|
|
99
|
-
borderLeftRadius: "none",
|
|
100
|
-
borderRightRadius: { base: "none", md: "sm" },
|
|
101
|
-
lineHeight: "1.75",
|
|
102
|
-
};
|
|
103
97
|
const noBrand = {
|
|
104
98
|
...primary,
|
|
105
99
|
bg: "ui.black",
|
|
@@ -119,7 +113,6 @@ const Button = {
|
|
|
119
113
|
pill,
|
|
120
114
|
iconOnly,
|
|
121
115
|
callout,
|
|
122
|
-
searchBar,
|
|
123
116
|
noBrand,
|
|
124
117
|
},
|
|
125
118
|
// Default values
|