@nypl/design-system-react-components 0.25.0 → 0.25.4
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 +142 -1
- package/README.md +98 -50
- package/dist/components/Accordion/Accordion.d.ts +14 -14
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
- package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
- package/dist/components/Button/Button.d.ts +13 -8
- package/dist/components/Button/ButtonTypes.d.ts +3 -1
- package/dist/components/Card/Card.d.ts +36 -52
- package/dist/components/Card/CardTypes.d.ts +2 -17
- package/dist/components/Checkbox/Checkbox.d.ts +17 -13
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
- package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
- package/dist/components/DatePicker/DatePicker.d.ts +37 -35
- package/dist/components/Fieldset/Fieldset.d.ts +25 -0
- package/dist/components/Form/Form.d.ts +13 -8
- package/dist/components/Form/FormTypes.d.ts +2 -8
- package/dist/components/Grid/GridTypes.d.ts +9 -0
- package/dist/components/Grid/SimpleGrid.d.ts +14 -0
- package/dist/components/Heading/Heading.d.ts +4 -4
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
- package/dist/components/Hero/Hero.d.ts +19 -14
- package/dist/components/Hero/HeroTypes.d.ts +10 -5
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
- package/dist/components/Icons/Icon.d.ts +19 -14
- package/dist/components/Icons/IconSvgs.d.ts +11 -0
- package/dist/components/Icons/IconTypes.d.ts +89 -64
- package/dist/components/Image/Image.d.ts +19 -9
- package/dist/components/Image/ImageTypes.d.ts +20 -0
- package/dist/components/Label/Label.d.ts +5 -17
- package/dist/components/Link/Link.d.ts +12 -12
- package/dist/components/List/List.d.ts +19 -14
- package/dist/components/Notification/Notification.d.ts +37 -16
- package/dist/components/Pagination/Pagination.d.ts +16 -13
- package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
- package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
- package/dist/components/Radio/Radio.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
- package/dist/components/SearchBar/SearchBar.d.ts +45 -27
- package/dist/components/Select/Select.d.ts +34 -35
- package/dist/components/Select/SelectTypes.d.ts +4 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
- package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
- package/dist/components/Slider/Slider.d.ts +57 -0
- package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
- package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/Template/Template.d.ts +91 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/Text/TextTypes.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +44 -31
- package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
- package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
- package/dist/design-system-react-components.cjs.development.js +6473 -2630
- 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 +6463 -2631
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +16 -0
- package/dist/hooks/useNYPLTheme.d.ts +54 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +19 -7
- package/dist/resources.scss +180 -170
- package/dist/styles.css +1 -1
- package/dist/theme/components/accordion.d.ts +25 -0
- package/dist/theme/components/breadcrumb.d.ts +90 -0
- package/dist/theme/components/button.d.ts +39 -15
- package/dist/theme/components/card.d.ts +168 -0
- package/dist/theme/components/checkbox.d.ts +12 -8
- package/dist/theme/components/checkboxGroup.d.ts +12 -0
- package/dist/theme/components/componentWrapper.d.ts +11 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +27 -0
- package/dist/theme/components/global.d.ts +65 -0
- package/dist/theme/components/globalMixins.d.ts +23 -0
- package/dist/theme/components/heading.d.ts +55 -20
- package/dist/theme/components/helperErrorText.d.ts +10 -0
- package/dist/theme/components/hero.d.ts +493 -0
- package/dist/theme/components/horizontalRule.d.ts +14 -0
- package/dist/theme/components/icon.d.ts +13 -0
- package/dist/theme/components/image.d.ts +31 -0
- package/dist/theme/components/label.d.ts +18 -0
- package/dist/theme/components/link.d.ts +49 -0
- package/dist/theme/components/list.d.ts +89 -0
- package/dist/theme/components/notification.d.ts +75 -0
- package/dist/theme/components/pagination.d.ts +19 -0
- package/dist/theme/components/progressIndicator.d.ts +50 -0
- package/dist/theme/components/radio.d.ts +8 -7
- package/dist/theme/components/radioGroup.d.ts +12 -0
- package/dist/theme/components/searchBar.d.ts +20 -0
- package/dist/theme/components/select.d.ts +67 -0
- package/dist/theme/components/skeletonLoader.d.ts +98 -0
- package/dist/theme/components/slider.d.ts +51 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/tabs.d.ts +63 -12
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +20 -0
- package/dist/theme/components/textInput.d.ts +112 -0
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +8 -8
- package/dist/theme/foundations/global.d.ts +8 -0
- package/dist/theme/foundations/radii.d.ts +5 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +16 -16
- package/dist/utils/utils.d.ts +6 -0
- package/package.json +72 -82
- package/src/__tests__/setup.ts +2 -2
- package/src/components/Accordion/Accordion.stories.mdx +223 -34
- package/src/components/Accordion/Accordion.test.tsx +135 -19
- package/src/components/Accordion/Accordion.tsx +81 -56
- package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
- package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
- package/src/components/Autosuggest/_Autosuggest.scss +5 -5
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
- package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
- package/src/components/Button/Button.stories.mdx +45 -36
- package/src/components/Button/Button.test.tsx +37 -11
- package/src/components/Button/Button.tsx +22 -34
- package/src/components/Button/ButtonTypes.tsx +2 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
- package/src/components/Card/Card.stories.mdx +314 -273
- package/src/components/Card/Card.test.tsx +157 -91
- package/src/components/Card/Card.tsx +195 -145
- package/src/components/Card/CardTypes.tsx +2 -19
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
- package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
- package/src/components/CardEdition/CardEdition.test.tsx +23 -31
- package/src/components/CardEdition/_CardEdition.scss +22 -23
- package/src/components/Chakra/Box.stories.mdx +15 -16
- package/src/components/Chakra/Center.stories.mdx +56 -24
- package/src/components/Chakra/Grid.stories.mdx +92 -0
- package/src/components/Chakra/Stack.stories.mdx +38 -21
- package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
- package/src/components/Checkbox/Checkbox.test.tsx +47 -2
- package/src/components/Checkbox/Checkbox.tsx +44 -41
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
- package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
- package/src/components/DatePicker/DatePicker.test.tsx +264 -64
- package/src/components/DatePicker/DatePicker.tsx +165 -134
- package/src/components/DatePicker/_DatePicker.scss +33 -66
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
- package/src/components/Fieldset/Fieldset.test.tsx +125 -0
- package/src/components/Fieldset/Fieldset.tsx +52 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
- package/src/components/Form/Form.stories.mdx +70 -27
- package/src/components/Form/Form.test.tsx +58 -45
- package/src/components/Form/Form.tsx +50 -21
- package/src/components/Form/FormTypes.tsx +3 -8
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
- package/src/components/Grid/GridTypes.tsx +9 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
- package/src/components/Grid/SimpleGrid.test.tsx +66 -0
- package/src/components/Grid/SimpleGrid.tsx +37 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
- package/src/components/Heading/Heading.stories.mdx +3 -3
- package/src/components/Heading/Heading.tsx +12 -6
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
- package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
- package/src/components/Hero/Hero.stories.mdx +198 -121
- package/src/components/Hero/Hero.test.tsx +537 -107
- package/src/components/Hero/Hero.tsx +79 -92
- package/src/components/Hero/HeroTypes.tsx +18 -5
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
- package/src/components/Icons/Icon.stories.mdx +94 -77
- package/src/components/Icons/Icon.test.tsx +48 -22
- package/src/components/Icons/Icon.tsx +78 -61
- package/src/components/Icons/IconSvgs.tsx +22 -0
- package/src/components/Icons/IconTypes.tsx +91 -64
- package/src/components/Image/Image.stories.mdx +220 -0
- package/src/components/Image/Image.test.tsx +131 -29
- package/src/components/Image/Image.tsx +84 -56
- package/src/components/Image/ImageTypes.ts +22 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
- package/src/components/Input/Input.stories.tsx +23 -67
- package/src/components/Input/Input.test.tsx +4 -4
- package/src/components/Input/_Input.scss +23 -14
- package/src/components/Label/Label.stories.mdx +28 -7
- package/src/components/Label/Label.test.tsx +43 -12
- package/src/components/Label/Label.tsx +21 -34
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
- package/src/components/Link/Link.stories.mdx +41 -41
- package/src/components/Link/Link.test.tsx +33 -44
- package/src/components/Link/Link.tsx +117 -100
- package/src/components/List/List.stories.mdx +124 -51
- package/src/components/List/List.test.tsx +142 -63
- package/src/components/List/List.tsx +89 -93
- package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
- package/src/components/Modal/Modal.stories.mdx +3 -3
- package/src/components/Modal/_Modal.scss +2 -2
- package/src/components/Notification/Notification.stories.mdx +119 -111
- package/src/components/Notification/Notification.test.tsx +102 -126
- package/src/components/Notification/Notification.tsx +157 -161
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
- package/src/components/Pagination/Pagination.stories.mdx +26 -27
- package/src/components/Pagination/Pagination.stories.tsx +11 -16
- package/src/components/Pagination/Pagination.test.tsx +276 -140
- package/src/components/Pagination/Pagination.tsx +174 -154
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
- package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
- package/src/components/Radio/Radio.test.tsx +20 -4
- package/src/components/Radio/Radio.tsx +6 -3
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
- package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
- package/src/components/RadioGroup/RadioGroup.tsx +21 -29
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
- package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
- package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
- package/src/components/SearchBar/SearchBar.tsx +161 -46
- package/src/components/Select/Select.stories.mdx +188 -170
- package/src/components/Select/Select.test.tsx +132 -375
- package/src/components/Select/Select.tsx +121 -165
- package/src/components/Select/SelectTypes.tsx +5 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
- package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
- package/src/components/Slider/Slider.stories.mdx +529 -0
- package/src/components/Slider/Slider.test.tsx +653 -0
- package/src/components/Slider/Slider.tsx +303 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
- package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
- package/src/components/StatusBadge/StatusBadge.tsx +24 -25
- package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
- package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
- package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
- package/src/components/StyleGuide/ColorCard.tsx +46 -0
- package/src/components/StyleGuide/Colors.stories.mdx +196 -0
- package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
- package/src/components/StyleGuide/Forms.stories.mdx +9 -7
- package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
- package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
- package/src/components/StyleGuide/Typography.stories.mdx +202 -189
- package/src/components/StyleGuide/UIDocCard.tsx +1 -1
- package/src/components/Tabs/Tabs.stories.mdx +73 -11
- package/src/components/Tabs/Tabs.tsx +88 -67
- package/src/components/Template/Template.stories.mdx +572 -0
- package/src/components/Template/Template.test.tsx +124 -0
- package/src/components/Template/Template.tsx +226 -0
- package/src/components/Text/Text.stories.mdx +70 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +55 -0
- package/src/components/Text/TextTypes.tsx +6 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
- package/src/components/TextInput/TextInput.stories.mdx +89 -90
- package/src/components/TextInput/TextInput.test.tsx +84 -85
- package/src/components/TextInput/TextInput.tsx +121 -95
- package/src/components/TextInput/TextInputTypes.tsx +8 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
- package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
- package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
- package/src/docs/Chakra.stories.mdx +246 -65
- package/src/docs/Intro.stories.mdx +18 -13
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.ts +34 -0
- package/src/hooks/useNYPLTheme.ts +67 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +39 -16
- package/src/resources.scss +5 -5
- package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
- package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
- package/src/styles/base/_03-base.scss +25 -0
- package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
- package/src/styles/base/_place-holder.scss +14 -3
- package/src/styles/{03-space → space}/_space-inline.scss +14 -14
- package/src/styles/{03-space → space}/_space-inset.scss +10 -10
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +13 -62
- package/src/theme/components/accordion.ts +30 -0
- package/src/theme/components/breadcrumb.ts +77 -0
- package/src/theme/components/button.ts +91 -71
- package/src/theme/components/card.ts +174 -0
- package/src/theme/components/checkbox.ts +22 -29
- package/src/theme/components/checkboxGroup.ts +8 -0
- package/src/theme/components/componentWrapper.ts +10 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +18 -0
- package/src/theme/components/global.ts +82 -0
- package/src/theme/components/globalMixins.ts +24 -0
- package/src/theme/components/heading.ts +25 -13
- package/src/theme/components/helperErrorText.ts +9 -0
- package/src/theme/components/hero.ts +240 -0
- package/src/theme/components/horizontalRule.ts +13 -0
- package/src/theme/components/icon.ts +79 -0
- package/src/theme/components/image.ts +116 -0
- package/src/theme/components/label.ts +10 -0
- package/src/theme/components/link.ts +51 -0
- package/src/theme/components/list.ts +73 -0
- package/src/theme/components/notification.ts +93 -0
- package/src/theme/components/pagination.ts +20 -0
- package/src/theme/components/progressIndicator.ts +62 -0
- package/src/theme/components/radio.ts +22 -33
- package/src/theme/components/radioGroup.ts +8 -0
- package/src/theme/components/searchBar.ts +21 -0
- package/src/theme/components/select.ts +53 -0
- package/src/theme/components/skeletonLoader.ts +107 -0
- package/src/theme/components/slider.ts +79 -0
- package/src/theme/components/statusBadge.ts +26 -0
- package/src/theme/components/tabs.ts +102 -69
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +31 -0
- package/src/theme/components/textInput.ts +62 -0
- package/src/theme/components/videoPlayer.ts +49 -0
- package/src/theme/foundations/breakpoints.ts +8 -8
- package/src/theme/foundations/colors.ts +29 -13
- package/src/theme/foundations/global.ts +8 -0
- package/src/theme/foundations/radii.ts +6 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +24 -24
- package/src/theme/index.ts +74 -13
- package/src/utils/componentCategories.ts +12 -5
- package/src/utils/utils.ts +13 -0
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
- package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
- package/dist/components/Image/Image.stories.d.ts +0 -18
- package/dist/components/List/List.stories.d.ts +0 -7
- package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
- package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
- package/dist/components/Template/Template.stories.d.ts +0 -30
- package/dist/theme/components/customRadioGroup.d.ts +0 -17
- package/src/components/Accordion/Accordion.stories.tsx +0 -66
- package/src/components/Accordion/_Accordion.scss +0 -81
- package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
- package/src/components/Button/_Button.scss +0 -56
- package/src/components/Card/_Card.scss +0 -308
- package/src/components/Form/_Form.scss +0 -67
- package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
- package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
- package/src/components/Hero/_Hero.scss +0 -256
- package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
- package/src/components/Icons/_Icons.scss +0 -116
- package/src/components/Image/Image.stories.tsx +0 -54
- package/src/components/Image/_Image.scss +0 -38
- package/src/components/Label/_Label.scss +0 -22
- package/src/components/Link/_Link.scss +0 -73
- package/src/components/List/List.stories.tsx +0 -139
- package/src/components/List/_List.scss +0 -76
- package/src/components/Notification/_Notification.scss +0 -110
- package/src/components/Pagination/_Pagination.scss +0 -40
- package/src/components/SearchBar/_SearchBar.scss +0 -16
- package/src/components/Select/_Select.scss +0 -82
- package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
- package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
- package/src/components/StatusBadge/_StatusBadge.scss +0 -23
- package/src/components/StyleGuide/Colors.stories.tsx +0 -289
- package/src/components/Template/Template.stories.tsx +0 -86
- package/src/components/Template/_Template.scss +0 -63
- package/src/components/TextInput/_TextInput.scss +0 -59
- package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
- package/src/styles/01-colors/_colors-brand.scss +0 -56
- package/src/styles/01-colors/_colors-utility.scss +0 -65
- package/src/styles/02-typography/_type-scale.css +0 -11
- package/src/styles/02-typography/_type-weight.css +0 -7
- package/src/styles/02-typography/_typefaces.css +0 -4
- package/src/styles/03-space/_space-stack.scss +0 -116
- package/src/styles/03-space/_space.css +0 -30
- package/src/styles/base/_04-base.scss +0 -19
- package/src/styles/base/_card-grid.scss +0 -78
- package/src/styles/base/_typography.scss +0 -11
- package/src/theme/components/customRadioGroup.ts +0 -18
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { renderHook, act } from "@testing-library/react-hooks";
|
|
2
|
+
import useCarouselStyles from "../useCarouselStyles";
|
|
3
|
+
|
|
4
|
+
describe("useCarouselStyles hook", () => {
|
|
5
|
+
it("returns two functions and a CSS style object", () => {
|
|
6
|
+
const { result } = renderHook(() => useCarouselStyles());
|
|
7
|
+
|
|
8
|
+
expect(typeof result.current.nextSlide).toEqual("function");
|
|
9
|
+
expect(typeof result.current.prevSlide).toEqual("function");
|
|
10
|
+
expect(result.current.carouselStyle).toEqual({
|
|
11
|
+
marginLeft: "-0%",
|
|
12
|
+
transition: "all .5s",
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("updates the style object when the nextSlide function is clicked", () => {
|
|
17
|
+
// Mocking we have an array of five slides.
|
|
18
|
+
const slides = [1, 2, 3, 4, 5];
|
|
19
|
+
const { result } = renderHook(() => useCarouselStyles(slides.length));
|
|
20
|
+
const nextSlide = result.current.nextSlide;
|
|
21
|
+
|
|
22
|
+
// Start at the first slide.
|
|
23
|
+
expect(result.current.carouselStyle).toEqual({
|
|
24
|
+
marginLeft: "-0%",
|
|
25
|
+
transition: "all .5s",
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
act(() => nextSlide());
|
|
29
|
+
// Each slide takes up a width of 100% by default.
|
|
30
|
+
// So now we move by 100% to the left for the next slide.
|
|
31
|
+
expect(result.current.carouselStyle).toEqual({
|
|
32
|
+
marginLeft: "-100%",
|
|
33
|
+
transition: "all .5s",
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
act(() => nextSlide());
|
|
37
|
+
// Move on to the next slide.
|
|
38
|
+
expect(result.current.carouselStyle).toEqual({
|
|
39
|
+
marginLeft: "-200%",
|
|
40
|
+
transition: "all .5s",
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// We now click through all five slides and we expect to wrap around
|
|
44
|
+
// back to the first slide which starts at "-0%" (the negative value
|
|
45
|
+
// is set for direction but -0 is still 0).
|
|
46
|
+
act(() => nextSlide());
|
|
47
|
+
act(() => nextSlide());
|
|
48
|
+
act(() => nextSlide());
|
|
49
|
+
expect(result.current.carouselStyle).toEqual({
|
|
50
|
+
marginLeft: "-0%",
|
|
51
|
+
transition: "all .5s",
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("updates the style object when the prevSlide function is clicked", () => {
|
|
56
|
+
// Mocking we have an array of five slides.
|
|
57
|
+
const slides = [1, 2, 3, 4, 5];
|
|
58
|
+
const { result } = renderHook(() => useCarouselStyles(slides.length));
|
|
59
|
+
const prevSlide = result.current.prevSlide;
|
|
60
|
+
|
|
61
|
+
// Start at the first slide.
|
|
62
|
+
expect(result.current.carouselStyle).toEqual({
|
|
63
|
+
marginLeft: "-0%",
|
|
64
|
+
transition: "all .5s",
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
act(() => prevSlide());
|
|
68
|
+
// We started on the first slide and nwo we expect to wrap around
|
|
69
|
+
// to the last element.
|
|
70
|
+
expect(result.current.carouselStyle).toEqual({
|
|
71
|
+
marginLeft: "-400%",
|
|
72
|
+
transition: "all .5s",
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
act(() => prevSlide());
|
|
76
|
+
// Move on to the previous slide.
|
|
77
|
+
expect(result.current.carouselStyle).toEqual({
|
|
78
|
+
marginLeft: "-300%",
|
|
79
|
+
transition: "all .5s",
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// We now clicked through all five slides and we expect to
|
|
83
|
+
// be at the first slide.
|
|
84
|
+
act(() => prevSlide());
|
|
85
|
+
act(() => prevSlide());
|
|
86
|
+
act(() => prevSlide());
|
|
87
|
+
expect(result.current.carouselStyle).toEqual({
|
|
88
|
+
marginLeft: "-0%",
|
|
89
|
+
transition: "all .5s",
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("resets the slide back to the first slide", () => {
|
|
94
|
+
// Mocking we have an array of five slides.
|
|
95
|
+
const slides = [1, 2, 3, 4, 5];
|
|
96
|
+
const { result } = renderHook(() => useCarouselStyles(slides.length));
|
|
97
|
+
const { nextSlide, goToStart } = result.current;
|
|
98
|
+
|
|
99
|
+
// Start at the first slide.
|
|
100
|
+
expect(result.current.carouselStyle).toEqual({
|
|
101
|
+
marginLeft: "-0%",
|
|
102
|
+
transition: "all .5s",
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// Move on to the third slide.
|
|
106
|
+
act(() => nextSlide());
|
|
107
|
+
act(() => nextSlide());
|
|
108
|
+
act(() => nextSlide());
|
|
109
|
+
expect(result.current.carouselStyle).toEqual({
|
|
110
|
+
marginLeft: "-300%",
|
|
111
|
+
transition: "all .5s",
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
act(() => goToStart());
|
|
115
|
+
expect(result.current.carouselStyle).toEqual({
|
|
116
|
+
marginLeft: "-0%",
|
|
117
|
+
transition: "all .5s",
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("can set a custom slide count and slide width", () => {
|
|
122
|
+
const slides = [1, 2, 3];
|
|
123
|
+
const slideWidth = 50;
|
|
124
|
+
const { result } = renderHook(() =>
|
|
125
|
+
useCarouselStyles(slides.length, slideWidth)
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
expect(result.current.carouselStyle).toEqual({
|
|
129
|
+
marginLeft: "-0%",
|
|
130
|
+
transition: "all .5s",
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
act(() => result.current.nextSlide());
|
|
134
|
+
// Since each slide is of length 50, we expect to move by a 50%.
|
|
135
|
+
expect(result.current.carouselStyle).toEqual({
|
|
136
|
+
marginLeft: "-50%",
|
|
137
|
+
transition: "all .5s",
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { renderHook } from "@testing-library/react-hooks";
|
|
3
|
+
|
|
4
|
+
import useNYPLTheme from "../useNYPLTheme";
|
|
5
|
+
import DSProvider from "../../theme/provider";
|
|
6
|
+
|
|
7
|
+
describe("useNYPLTheme", () => {
|
|
8
|
+
it("returns an empty object when not used inside a DSProvider component", () => {
|
|
9
|
+
const warn = jest.spyOn(console, "warn");
|
|
10
|
+
const { result } = renderHook(() => useNYPLTheme());
|
|
11
|
+
|
|
12
|
+
expect(warn).toHaveBeenCalledWith(
|
|
13
|
+
"The `useNYPLTheme` hook must be used inside of `<DSProvider />`."
|
|
14
|
+
);
|
|
15
|
+
expect(result.current).toEqual({});
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("returns an object with NYPL styles", () => {
|
|
19
|
+
const { result } = renderHook(() => useNYPLTheme(), {
|
|
20
|
+
wrapper: ({ children }) => <DSProvider>{children}</DSProvider>,
|
|
21
|
+
});
|
|
22
|
+
const allKeys = Object.keys(result.current);
|
|
23
|
+
const colorsKeys = Object.keys(result.current.colors);
|
|
24
|
+
|
|
25
|
+
expect(allKeys).toEqual([
|
|
26
|
+
"breakpoints",
|
|
27
|
+
"colors",
|
|
28
|
+
"fontSizes",
|
|
29
|
+
"fontWeights",
|
|
30
|
+
"fonts",
|
|
31
|
+
"radii",
|
|
32
|
+
"space",
|
|
33
|
+
]);
|
|
34
|
+
expect(colorsKeys).toEqual(["brand", "section", "transparent", "ui"]);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that controls the sliding function for the carousel wrapper.
|
|
5
|
+
* This returns functions to use for the "previous" and "next" buttons as well
|
|
6
|
+
* as a CSS style object that should be use to transition between slides.
|
|
7
|
+
* Inspired by: https://codesandbox.io/s/fxjeo
|
|
8
|
+
*/
|
|
9
|
+
const useCarouselStyles = (slidesCount = 0, slideWidth = 100) => {
|
|
10
|
+
const [currentSlide, setCurrentSlide] = React.useState(0);
|
|
11
|
+
// This wraps around to the last slide if this is invoked while the
|
|
12
|
+
// first slide is active.
|
|
13
|
+
const prevSlide = () => {
|
|
14
|
+
setCurrentSlide((slide) => (slide === 0 ? slidesCount - 1 : slide - 1));
|
|
15
|
+
};
|
|
16
|
+
// This wraps around to the first slide if this is invoked while the
|
|
17
|
+
// last slide is active.
|
|
18
|
+
const nextSlide = () => {
|
|
19
|
+
setCurrentSlide((slide) => (slide === slidesCount - 1 ? 0 : slide + 1));
|
|
20
|
+
};
|
|
21
|
+
const goToStart = () => {
|
|
22
|
+
setCurrentSlide(0);
|
|
23
|
+
};
|
|
24
|
+
// Updates the left margin for the carousel so the elements can
|
|
25
|
+
// slide inside the container.
|
|
26
|
+
const carouselStyle = {
|
|
27
|
+
transition: "all .5s",
|
|
28
|
+
marginLeft: `-${currentSlide * slideWidth}%`,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return { prevSlide, nextSlide, carouselStyle, goToStart };
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default useCarouselStyles;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useTheme } from "@chakra-ui/react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A custom hook that returns the Chakra-based NYPL theme object. This must be
|
|
5
|
+
* used inside a component that is wrapped in the `DSProvider` component, so
|
|
6
|
+
* that the theme object can be available to use.
|
|
7
|
+
*/
|
|
8
|
+
function useNYPLTheme() {
|
|
9
|
+
const theme = useTheme();
|
|
10
|
+
if (!theme || Object.keys(theme).length === 0) {
|
|
11
|
+
console.warn(
|
|
12
|
+
"The `useNYPLTheme` hook must be used inside of `<DSProvider />`."
|
|
13
|
+
);
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Chakra provides a lot of their own styles but
|
|
18
|
+
// only NYPL styles should be exported.
|
|
19
|
+
return {
|
|
20
|
+
// base, sm, md, lg, xl, 2xl
|
|
21
|
+
breakpoints: theme.breakpoints,
|
|
22
|
+
colors: {
|
|
23
|
+
// primary, secondary
|
|
24
|
+
brand: theme.colors.brand,
|
|
25
|
+
// blogs, books-and-more, locations, research,
|
|
26
|
+
// research-library, whats-on
|
|
27
|
+
section: theme.colors.section,
|
|
28
|
+
transparent: theme.colors.transparent,
|
|
29
|
+
// black, disabled, error, focus, gray, link,
|
|
30
|
+
// status, success, test, warning, white
|
|
31
|
+
ui: theme.colors.ui,
|
|
32
|
+
},
|
|
33
|
+
fontSizes: {
|
|
34
|
+
"-3": theme.fontSizes["-3"],
|
|
35
|
+
"-2": theme.fontSizes.xs,
|
|
36
|
+
"-1": theme.fontSizes.sm,
|
|
37
|
+
"0": theme.fontSizes.md,
|
|
38
|
+
"1": theme.fontSizes.lg,
|
|
39
|
+
"2": theme.fontSizes["2"],
|
|
40
|
+
"3": theme.fontSizes["3"],
|
|
41
|
+
"4": theme.fontSizes["4"],
|
|
42
|
+
},
|
|
43
|
+
fontWeights: {
|
|
44
|
+
light: theme.fontWeights.light,
|
|
45
|
+
regular: theme.fontWeights.regular,
|
|
46
|
+
medium: theme.fontWeights.medium,
|
|
47
|
+
bold: theme.fontWeights.bold,
|
|
48
|
+
},
|
|
49
|
+
fonts: {
|
|
50
|
+
body: theme.fonts.body,
|
|
51
|
+
heading: theme.fonts.heading,
|
|
52
|
+
},
|
|
53
|
+
radii: theme.radii,
|
|
54
|
+
space: {
|
|
55
|
+
xxs: theme.space.xxs,
|
|
56
|
+
xs: theme.space.xs,
|
|
57
|
+
s: theme.space.s,
|
|
58
|
+
m: theme.space.m,
|
|
59
|
+
l: theme.space.l,
|
|
60
|
+
xl: theme.space.xl,
|
|
61
|
+
xxl: theme.space.xxl,
|
|
62
|
+
xxxl: theme.space.xxxl,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default useNYPLTheme;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface WindowSize {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* React hook used to get the window size on device resizing.
|
|
10
|
+
* Based on https://usehooks-typescript.com/react-hook/use-window-size
|
|
11
|
+
*/
|
|
12
|
+
function useWindowSize(): WindowSize {
|
|
13
|
+
const [windowSize, setWindowSize] = React.useState<WindowSize>({
|
|
14
|
+
width: 0,
|
|
15
|
+
height: 0,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
React.useEffect(() => {
|
|
19
|
+
const handler = () => {
|
|
20
|
+
setWindowSize({
|
|
21
|
+
width: window.innerWidth,
|
|
22
|
+
height: window.innerHeight,
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Set size at the first client-side load
|
|
27
|
+
handler();
|
|
28
|
+
|
|
29
|
+
window.addEventListener("resize", handler);
|
|
30
|
+
|
|
31
|
+
// Remove event listener on cleanup
|
|
32
|
+
return () => {
|
|
33
|
+
window.removeEventListener("resize", handler);
|
|
34
|
+
};
|
|
35
|
+
}, []);
|
|
36
|
+
|
|
37
|
+
return windowSize;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default useWindowSize;
|
package/src/index.ts
CHANGED
|
@@ -4,16 +4,20 @@ import "./styles.scss";
|
|
|
4
4
|
// components for usage in consuming applications.
|
|
5
5
|
export {
|
|
6
6
|
Box,
|
|
7
|
+
ButtonGroup,
|
|
7
8
|
Center,
|
|
8
9
|
Circle,
|
|
10
|
+
Grid,
|
|
11
|
+
GridItem,
|
|
12
|
+
HStack,
|
|
9
13
|
Square,
|
|
10
14
|
Stack,
|
|
11
|
-
HStack,
|
|
12
15
|
VStack,
|
|
13
16
|
} from "@chakra-ui/react";
|
|
14
17
|
export { default as Accordion } from "./components/Accordion/Accordion";
|
|
15
18
|
export { default as Breadcrumbs } from "./components/Breadcrumbs/Breadcrumbs";
|
|
16
|
-
export {
|
|
19
|
+
export { ColorVariants } from "./components/Breadcrumbs/BreadcrumbsTypes";
|
|
20
|
+
export { default as Button } from "./components/Button/Button";
|
|
17
21
|
export { ButtonTypes } from "./components/Button/ButtonTypes";
|
|
18
22
|
export {
|
|
19
23
|
default as Card,
|
|
@@ -21,17 +25,18 @@ export {
|
|
|
21
25
|
CardContent,
|
|
22
26
|
CardHeading,
|
|
23
27
|
} from "./components/Card/Card";
|
|
24
|
-
export {
|
|
25
|
-
CardImageRatios,
|
|
26
|
-
CardImageSizes,
|
|
27
|
-
CardLayouts,
|
|
28
|
-
} from "./components/Card/CardTypes";
|
|
28
|
+
export { CardLayouts } from "./components/Card/CardTypes";
|
|
29
29
|
export { default as CardEdition } from "./components/CardEdition/CardEdition";
|
|
30
30
|
export { default as Checkbox } from "./components/Checkbox/Checkbox";
|
|
31
|
+
export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
|
|
32
|
+
export { CheckboxGroupLayoutTypes } from "./components/CheckboxGroup/CheckboxGroupLayoutTypes";
|
|
31
33
|
export { default as DatePicker } from "./components/DatePicker/DatePicker";
|
|
32
34
|
export { DatePickerTypes } from "./components/DatePicker/DatePickerTypes";
|
|
35
|
+
export { default as DSProvider } from "./theme/provider";
|
|
36
|
+
export { default as Fieldset } from "./components/Fieldset/Fieldset";
|
|
33
37
|
export { default as Form, FormField, FormRow } from "./components/Form/Form";
|
|
34
38
|
export { FormSpacing } from "./components/Form/FormTypes";
|
|
39
|
+
export { GridGaps } from "./components/Grid/GridTypes";
|
|
35
40
|
export { default as Heading } from "./components/Heading/Heading";
|
|
36
41
|
export {
|
|
37
42
|
HeadingDisplaySizes,
|
|
@@ -43,13 +48,20 @@ export { HeroTypes } from "./components/Hero/HeroTypes";
|
|
|
43
48
|
export { default as HorizontalRule } from "./components/HorizontalRule/HorizontalRule";
|
|
44
49
|
export { default as Icon } from "./components/Icons/Icon";
|
|
45
50
|
export {
|
|
51
|
+
IconAlign,
|
|
52
|
+
IconColors,
|
|
46
53
|
IconNames,
|
|
47
|
-
LogoNames,
|
|
48
54
|
IconRotationTypes,
|
|
49
|
-
IconColors,
|
|
50
55
|
IconSizes,
|
|
56
|
+
IconTypes,
|
|
57
|
+
LogoNames,
|
|
51
58
|
} from "./components/Icons/IconTypes";
|
|
52
59
|
export { default as Image } from "./components/Image/Image";
|
|
60
|
+
export {
|
|
61
|
+
ImageRatios,
|
|
62
|
+
ImageSizes,
|
|
63
|
+
ImageTypes,
|
|
64
|
+
} from "./components/Image/ImageTypes";
|
|
53
65
|
export { default as Input } from "./components/Input/Input";
|
|
54
66
|
export { InputTypes } from "./components/Input/InputTypes";
|
|
55
67
|
export { default as Label } from "./components/Label/Label";
|
|
@@ -58,24 +70,22 @@ export { LinkTypes } from "./components/Link/LinkTypes";
|
|
|
58
70
|
export { default as List } from "./components/List/List";
|
|
59
71
|
export { ListTypes } from "./components/List/ListTypes";
|
|
60
72
|
export { default as Modal } from "./components/Modal/Modal";
|
|
61
|
-
export {
|
|
62
|
-
default as Notification,
|
|
63
|
-
NotificationContent,
|
|
64
|
-
NotificationHeading,
|
|
65
|
-
} from "./components/Notification/Notification";
|
|
73
|
+
export { default as Notification } from "./components/Notification/Notification";
|
|
66
74
|
export { NotificationTypes } from "./components/Notification/NotificationTypes";
|
|
67
75
|
export { default as Pagination } from "./components/Pagination/Pagination";
|
|
68
76
|
export { default as Radio } from "./components/Radio/Radio";
|
|
69
77
|
export { default as RadioGroup } from "./components/RadioGroup/RadioGroup";
|
|
70
78
|
export { RadioGroupLayoutTypes } from "./components/RadioGroup/RadioGroupLayoutTypes";
|
|
71
79
|
export { default as SearchBar } from "./components/SearchBar/SearchBar";
|
|
80
|
+
export { default as Select } from "./components/Select/Select";
|
|
81
|
+
export { default as SimpleGrid } from "./components/Grid/SimpleGrid";
|
|
72
82
|
export { default as SkeletonLoader } from "./components/SkeletonLoader/SkeletonLoader";
|
|
73
83
|
export {
|
|
74
84
|
SkeletonLoaderImageRatios,
|
|
75
85
|
SkeletonLoaderLayouts,
|
|
76
86
|
} from "./components/SkeletonLoader/SkeletonLoaderTypes";
|
|
77
|
-
export { default as Select } from "./components/Select/Select";
|
|
78
87
|
export { default as StatusBadge } from "./components/StatusBadge/StatusBadge";
|
|
88
|
+
export { StatusBadgeTypes } from "./components/StatusBadge/StatusBadgeTypes";
|
|
79
89
|
export {
|
|
80
90
|
Tabs,
|
|
81
91
|
TabList,
|
|
@@ -83,14 +93,27 @@ export {
|
|
|
83
93
|
TabPanels,
|
|
84
94
|
TabPanel,
|
|
85
95
|
} from "./components/Tabs/Tabs";
|
|
96
|
+
export {
|
|
97
|
+
TemplateAppContainer,
|
|
98
|
+
Template,
|
|
99
|
+
TemplateHeader,
|
|
100
|
+
TemplateBreakout,
|
|
101
|
+
TemplateContent,
|
|
102
|
+
TemplateContentTop,
|
|
103
|
+
TemplateContentPrimary,
|
|
104
|
+
TemplateContentSidebar,
|
|
105
|
+
TemplateFooter,
|
|
106
|
+
} from "./components/Template/Template";
|
|
107
|
+
export { default as Text } from "./components/Text/Text";
|
|
108
|
+
export { TextDisplaySizes } from "./components/Text/TextTypes";
|
|
86
109
|
export {
|
|
87
110
|
default as TextInput,
|
|
88
111
|
TextInputRefType,
|
|
89
112
|
} from "./components/TextInput/TextInput";
|
|
90
113
|
export { TextInputTypes } from "./components/TextInput/TextInputTypes";
|
|
114
|
+
export { default as useNYPLTheme } from "./hooks/useNYPLTheme";
|
|
91
115
|
export { default as VideoPlayer } from "./components/VideoPlayer/VideoPlayer";
|
|
92
116
|
export {
|
|
93
117
|
VideoPlayerAspectRatios,
|
|
94
118
|
VideoPlayerTypes,
|
|
95
119
|
} from "./components/VideoPlayer/VideoPlayerTypes";
|
|
96
|
-
export { default as DSProvider } from "./theme/provider";
|
package/src/resources.scss
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Resources to export as sass mixins
|
|
2
|
-
@import "./styles/
|
|
3
|
-
@import "./styles/
|
|
4
|
-
@import "./styles/
|
|
5
|
-
@import "./styles/
|
|
6
|
-
@import "./styles/
|
|
2
|
+
@import "./styles/base/01-breakpoints";
|
|
3
|
+
@import "./styles/base/02-mixins";
|
|
4
|
+
@import "./styles/space/space-inline";
|
|
5
|
+
@import "./styles/space/space-inset";
|
|
6
|
+
@import "./styles/space/space-stack";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Breakpoint Configuration
|
|
3
3
|
* @see https://github.com/Team-Sass/breakpoint/wiki
|
|
4
|
-
*
|
|
5
4
|
*/
|
|
6
5
|
|
|
7
6
|
// Global Breakpoints
|
|
@@ -12,17 +11,17 @@
|
|
|
12
11
|
// Sass' breakpoint() mixin doesn't work without Sass variables.
|
|
13
12
|
// CSS variables expose the breakpoint variables to consumers.
|
|
14
13
|
:root {
|
|
15
|
-
--breakpoint-small: 320px;
|
|
16
|
-
--breakpoint-medium: 600px;
|
|
17
|
-
--breakpoint-large: 960px;
|
|
18
|
-
--breakpoint-xl: 1280px;
|
|
14
|
+
--nypl-breakpoint-small: 320px;
|
|
15
|
+
--nypl-breakpoint-medium: 600px;
|
|
16
|
+
--nypl-breakpoint-large: 960px;
|
|
17
|
+
--nypl-breakpoint-xl: 1280px;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
|
-
$breakpoint-small: 320px;
|
|
22
|
-
$breakpoint-medium: 600px;
|
|
23
|
-
$breakpoint-large: 960px;
|
|
24
|
-
$breakpoint-xl: 1280px;
|
|
20
|
+
$nypl-breakpoint-small: 320px;
|
|
21
|
+
$nypl-breakpoint-medium: 600px;
|
|
22
|
+
$nypl-breakpoint-large: 960px;
|
|
23
|
+
$nypl-breakpoint-xl: 1280px;
|
|
25
24
|
// The max-width breakpoint is used when the design should be applied at
|
|
26
25
|
// whatever the largest breakpoint is regardless of actual pixel value,
|
|
27
26
|
// e.g. removing outer margin on body wrapper.
|
|
28
|
-
$max-width: $breakpoint-xl;
|
|
27
|
+
$nypl-max-width: $nypl-breakpoint-xl;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
/// Mixin - Clearfix.
|
|
5
5
|
/// Adds clearfix based on http://bourbon.io/docs/#clearfix
|
|
6
|
-
/// use example =
|
|
6
|
+
/// use example = @include clearfix
|
|
7
7
|
|
|
8
8
|
@mixin clearfix {
|
|
9
9
|
&::after {
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
/// Outer container mixin for large screens
|
|
30
30
|
@mixin wrapper(
|
|
31
31
|
$container-max-width: $max-width,
|
|
32
|
-
$outer-container-break: $breakpoint-small,
|
|
32
|
+
$outer-container-break: $nypl-breakpoint-small,
|
|
33
33
|
$v-margin: 0,
|
|
34
34
|
$v-padding: 0,
|
|
35
|
-
$h-padding: var(--space)
|
|
35
|
+
$h-padding: var(--nypl-space-s)
|
|
36
36
|
) {
|
|
37
37
|
margin: #{$v-margin} auto;
|
|
38
38
|
max-width: #{$container-max-width};
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.container {
|
|
44
|
-
|
|
44
|
+
padding: var(--nypl-space-s);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/// Use the breakout mixin for elements that should be edge-to-edge
|
|
48
48
|
/// Even when a parent container uses the wrapper mixin
|
|
49
|
-
@mixin breakout($v-padding: var(--space)) {
|
|
49
|
+
@mixin breakout($v-padding: var(--nypl-space-s)) {
|
|
50
50
|
margin-left: calc(-50vw + 50%);
|
|
51
51
|
margin-right: calc(-50vw + 50%);
|
|
52
52
|
}
|
|
@@ -61,6 +61,17 @@
|
|
|
61
61
|
word-wrap: normal;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
// Focus state mixin
|
|
65
|
+
@mixin focus-outline($darkBackground: false) {
|
|
66
|
+
outline: 2px solid var(--nypl-colors-ui-focus);
|
|
67
|
+
outline-offset: 2px;
|
|
68
|
+
z-index: 9999;
|
|
69
|
+
|
|
70
|
+
@if $darkBackground {
|
|
71
|
+
outline-color: var(--nypl-colors-ui-white);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
64
75
|
//Convert pixel values to rem
|
|
65
76
|
@function to-rem($size) {
|
|
66
77
|
@return $size / 16px * 1rem;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Kept for backwards compatibility.
|
|
2
|
+
.nypl-ds {
|
|
3
|
+
box-sizing: border-box;
|
|
4
|
+
color: var(--nypl-colors-ui-black);
|
|
5
|
+
font-family: var(--nypl-fonts-body);
|
|
6
|
+
|
|
7
|
+
// Sets up the base font-size, 1rem, for the system
|
|
8
|
+
font-size: 16px;
|
|
9
|
+
font-weight: 300;
|
|
10
|
+
line-height: 1.5;
|
|
11
|
+
|
|
12
|
+
// Users with non-overlay scrollbars have a small horizontal scrollbar from
|
|
13
|
+
// our breakout mixin. Fix identified here: https://cloudfour.com/thinks/breaking-out-with-viewport-units-and-calc/#one-big-dumb-caveat
|
|
14
|
+
overflow-x: hidden;
|
|
15
|
+
|
|
16
|
+
p {
|
|
17
|
+
margin: 0 0 var(--nypl-space-s);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
*,
|
|
21
|
+
*::after,
|
|
22
|
+
*::before {
|
|
23
|
+
box-sizing: inherit;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
// Focus state mixin
|
|
2
|
-
@mixin focus-outline($darkBackground: false) {
|
|
3
|
-
outline: 2px solid var(--ui-focus);
|
|
4
|
-
outline-offset: 2px;
|
|
5
|
-
z-index: 9999;
|
|
6
|
-
|
|
7
|
-
@if $darkBackground {
|
|
8
|
-
outline-color: var(--ui-white);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
1
|
// Apply :focus behavior to focusable elements only (For IE 11)
|
|
13
2
|
.nypl-ds {
|
|
14
3
|
input,
|
|
@@ -31,7 +20,3 @@
|
|
|
31
20
|
}
|
|
32
21
|
}
|
|
33
22
|
}
|
|
34
|
-
|
|
35
|
-
.focus {
|
|
36
|
-
@include focus-outline;
|
|
37
|
-
}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
.placeholder {
|
|
2
|
-
--color-place-holder: var(--ui-gray-
|
|
2
|
+
--color-place-holder: var(--nypl-colors-ui-gray-dark);
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
@include
|
|
4
|
+
margin-bottom: var(--nypl-space-l);
|
|
5
|
+
@include breakpoint($nypl-breakpoint-large) {
|
|
6
|
+
margin-bottom: var(--nypl-space-xl);
|
|
7
|
+
}
|
|
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
|
+
padding: var(--nypl-space-s);
|
|
6
17
|
|
|
7
18
|
align-items: center;
|
|
8
19
|
border: 4px dashed var(--color-place-holder);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
2
|
+
* --nypl-space-xxs: --nypl-space-s / 4 // 4px or 0.25rem
|
|
3
|
+
* --nypl-space-xs: --nypl-space-s / 2 // 8px or 0.5rem
|
|
4
|
+
* --nypl-space-s: --nypl-space-s * 1; // 16px or 1rem
|
|
5
|
+
* --nypl-space-m: --nypl-space * 1.5; // 24px or 1.5rem
|
|
6
|
+
* --nypl-space-l: --nypl-space * 2; // 32px or 2rem
|
|
7
|
+
* --nypl-space-xl: --nypl-space * 3; // 48px or 3rem
|
|
8
|
+
* --nypl-space-xxl: --nypl-space * 4; // 64px or 4rem
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
@mixin space-inline-none {
|
|
@@ -13,31 +13,31 @@
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
@mixin space-inline-xxs {
|
|
16
|
-
margin-right: var(--space-xxs);
|
|
16
|
+
margin-right: var(--nypl-space-xxs);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
@mixin space-inline-xs {
|
|
20
|
-
margin-right: var(--space-xs);
|
|
20
|
+
margin-right: var(--nypl-space-xs);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
@mixin space-inline-s {
|
|
24
|
-
margin-right: var(--space-s);
|
|
24
|
+
margin-right: var(--nypl-space-s);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@mixin space-inline-m {
|
|
28
|
-
margin-right: var(--space-m);
|
|
28
|
+
margin-right: var(--nypl-space-m);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
@mixin space-inline-l {
|
|
32
|
-
margin-right: var(--space-l);
|
|
32
|
+
margin-right: var(--nypl-space-l);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
@mixin space-inline-xl {
|
|
36
|
-
margin-right: var(--space-xl);
|
|
36
|
+
margin-right: var(--nypl-space-xl);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
@mixin space-inline-xxl {
|
|
40
|
-
margin-right: var(--space-xxl);
|
|
40
|
+
margin-right: var(--nypl-space-xxl);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
@mixin get-space-inline($id) {
|