@nypl/design-system-react-components 1.0.1 → 1.0.2
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 +1428 -3
- package/README.md +391 -3
- package/dist/__tests__/fileMock.d.ts +4 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/{lib/stories/0-Welcome.stories.d.ts → dist/__tests__/utils/utils.test.d.ts} +1 -1
- package/dist/components/Accordion/Accordion.d.ts +21 -0
- package/dist/components/Autosuggest/Autosuggest.stories.d.ts +4 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +18 -0
- package/dist/components/Button/Button.d.ts +25 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +22 -0
- package/dist/components/Card/Card.d.ts +49 -0
- package/dist/components/Checkbox/Checkbox.d.ts +47 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +49 -0
- package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +29 -0
- package/dist/components/DatePicker/DatePicker.d.ts +81 -0
- package/dist/components/Fieldset/Fieldset.d.ts +22 -0
- package/dist/components/Form/Form.d.ts +29 -0
- package/dist/components/Grid/SimpleGrid.d.ts +17 -0
- package/dist/components/Heading/Heading.d.ts +27 -0
- package/dist/components/HelperErrorText/HelperErrorText.d.ts +29 -0
- package/dist/components/Hero/Hero.d.ts +40 -0
- package/dist/components/HorizontalRule/HorizontalRule.d.ts +11 -0
- package/dist/components/Icons/Icon.d.ts +37 -0
- package/dist/components/Icons/IconSvgs.d.ts +33 -0
- package/dist/components/Image/Image.d.ts +61 -0
- package/dist/components/Label/Label.d.ts +20 -0
- package/dist/components/Link/Link.d.ts +20 -0
- package/dist/components/List/List.d.ts +35 -0
- package/dist/components/Logo/Logo.d.ts +26 -0
- package/dist/components/Logo/LogoSvgs.d.ts +46 -0
- package/dist/components/Modal/Modal.d.ts +33 -0
- package/dist/components/Notification/Notification.d.ts +50 -0
- package/dist/components/Pagination/Pagination.d.ts +27 -0
- package/dist/components/Placeholder/Placeholder.d.ts +10 -0
- package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +30 -0
- package/dist/components/Radio/Radio.d.ts +43 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +51 -0
- package/dist/components/SearchBar/SearchBar.d.ts +61 -0
- package/dist/components/Select/Select.d.ts +57 -0
- package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +39 -0
- package/dist/components/SkipNavigation/SkipNavigation.d.ts +17 -0
- package/dist/components/Slider/Slider.d.ts +60 -0
- package/dist/components/StatusBadge/StatusBadge.d.ts +16 -0
- package/dist/components/StructuredContent/StructuredContent.d.ts +28 -0
- package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
- package/dist/components/Table/Table.d.ts +29 -0
- package/dist/components/Tabs/Tabs.d.ts +26 -0
- package/dist/components/Template/Template.d.ts +126 -0
- package/dist/components/Text/Text.d.ts +16 -0
- package/dist/components/TextInput/TextInput.d.ts +78 -0
- package/dist/components/Toggle/Toggle.d.ts +42 -0
- package/dist/components/VideoPlayer/VideoPlayer.d.ts +38 -0
- package/dist/design-system-react-components.cjs.development.js +11305 -0
- package/dist/design-system-react-components.cjs.development.js.map +1 -0
- package/dist/design-system-react-components.cjs.production.min.js +2 -0
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -0
- package/dist/design-system-react-components.esm.js +11150 -0
- package/dist/design-system-react-components.esm.js.map +1 -0
- package/dist/helpers/types.d.ts +1 -0
- package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
- package/dist/hooks/useCarouselStyles.d.ts +17 -0
- package/dist/hooks/useNYPLTheme.d.ts +66 -0
- package/dist/hooks/useWindowSize.d.ts +10 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +8 -0
- package/dist/resources.scss +386 -0
- package/dist/styles.css +3 -0
- package/dist/theme/components/accordion.d.ts +20 -0
- package/dist/theme/components/breadcrumb.d.ts +105 -0
- package/dist/theme/components/button.d.ts +120 -0
- package/dist/theme/components/buttonGroup.d.ts +11 -0
- package/dist/theme/components/card.d.ts +381 -0
- package/dist/theme/components/checkbox.d.ts +95 -0
- package/dist/theme/components/checkboxGroup.d.ts +14 -0
- package/dist/theme/components/componentWrapper.d.ts +12 -0
- package/dist/theme/components/customTable.d.ts +136 -0
- package/dist/theme/components/datePicker.d.ts +16 -0
- package/dist/theme/components/fieldset.d.ts +20 -0
- package/dist/theme/components/global.d.ts +73 -0
- package/dist/theme/components/globalMixins.d.ts +23 -0
- package/dist/theme/components/heading.d.ts +160 -0
- package/dist/theme/components/helperErrorText.d.ts +12 -0
- package/dist/theme/components/hero.d.ts +499 -0
- package/dist/theme/components/horizontalRule.d.ts +15 -0
- package/dist/theme/components/icon.d.ts +47755 -0
- package/dist/theme/components/image.d.ts +590 -0
- package/dist/theme/components/label.d.ts +18 -0
- package/dist/theme/components/link.d.ts +62 -0
- package/dist/theme/components/list.d.ts +182 -0
- package/dist/theme/components/logo.d.ts +477 -0
- package/dist/theme/components/notification.d.ts +95 -0
- package/dist/theme/components/pagination.d.ts +16 -0
- package/dist/theme/components/progressIndicator.d.ts +52 -0
- package/dist/theme/components/radio.d.ts +99 -0
- package/dist/theme/components/radioGroup.d.ts +14 -0
- package/dist/theme/components/searchBar.d.ts +18 -0
- package/dist/theme/components/select.d.ts +87 -0
- package/dist/theme/components/skeletonLoader.d.ts +102 -0
- package/dist/theme/components/skipNavigation.d.ts +25 -0
- package/dist/theme/components/slider.d.ts +59 -0
- package/dist/theme/components/statusBadge.d.ts +25 -0
- package/dist/theme/components/structuredContent.d.ts +226 -0
- package/dist/theme/components/tabs.d.ts +136 -0
- package/dist/theme/components/template.d.ts +105 -0
- package/dist/theme/components/text.d.ts +26 -0
- package/dist/theme/components/textInput.d.ts +124 -0
- package/dist/theme/components/toggle.d.ts +92 -0
- package/dist/theme/components/videoPlayer.d.ts +40 -0
- package/dist/theme/foundations/breakpoints.d.ts +23 -0
- package/dist/theme/foundations/colors.d.ts +3 -0
- package/dist/theme/foundations/global.d.ts +58 -0
- package/dist/theme/foundations/radii.d.ts +6 -0
- package/dist/theme/foundations/shadows.d.ts +4 -0
- package/dist/theme/foundations/spacing.d.ts +82 -0
- package/dist/theme/foundations/typography.d.ts +8 -0
- package/dist/theme/index.d.ts +20 -0
- package/dist/theme/provider.d.ts +3 -0
- package/dist/theme/types.d.ts +1 -0
- package/dist/utils/componentCategories.d.ts +1 -0
- package/dist/utils/interfaces.d.ts +5 -0
- package/dist/utils/utils.d.ts +31 -0
- package/package.json +133 -20
- package/src/__tests__/fileMock.ts +6 -0
- package/src/__tests__/setup.ts +27 -0
- package/src/__tests__/utils/utils.test.ts +18 -0
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +42 -0
- package/src/components/Accordion/Accordion.stories.mdx +333 -0
- package/src/components/Accordion/Accordion.test.tsx +237 -0
- package/src/components/Accordion/Accordion.tsx +137 -0
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +734 -0
- package/src/components/Autosuggest/Autosuggest.stories.mdx +75 -0
- package/src/components/Autosuggest/Autosuggest.stories.tsx +211 -0
- package/src/components/Autosuggest/_Autosuggest.scss +51 -0
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +231 -0
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +144 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +98 -0
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +695 -0
- package/src/components/Button/Button.stories.mdx +320 -0
- package/src/components/Button/Button.test.tsx +184 -0
- package/src/components/Button/Button.tsx +95 -0
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +106 -0
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +178 -0
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +141 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +100 -0
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +117 -0
- package/src/components/Card/Card.stories.mdx +1041 -0
- package/src/components/Card/Card.test.tsx +388 -0
- package/src/components/Card/Card.tsx +346 -0
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +568 -0
- package/src/components/Chakra/Box.stories.mdx +52 -0
- package/src/components/Chakra/Center.stories.mdx +96 -0
- package/src/components/Chakra/Flex.stories.mdx +111 -0
- package/src/components/Chakra/Grid.stories.mdx +89 -0
- package/src/components/Chakra/Stack.stories.mdx +109 -0
- package/src/components/Checkbox/Checkbox.stories.mdx +243 -0
- package/src/components/Checkbox/Checkbox.test.tsx +350 -0
- package/src/components/Checkbox/Checkbox.tsx +152 -0
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +661 -0
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +462 -0
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +492 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +173 -0
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1842 -0
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +163 -0
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +76 -0
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +103 -0
- package/src/components/DatePicker/DatePicker.stories.mdx +452 -0
- package/src/components/DatePicker/DatePicker.test.tsx +940 -0
- package/src/components/DatePicker/DatePicker.tsx +450 -0
- package/src/components/DatePicker/_DatePicker.scss +100 -0
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +908 -0
- package/src/components/Fieldset/Fieldset.stories.mdx +96 -0
- package/src/components/Fieldset/Fieldset.test.tsx +155 -0
- package/src/components/Fieldset/Fieldset.tsx +55 -0
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +89 -0
- package/src/components/Form/Form.stories.mdx +426 -0
- package/src/components/Form/Form.test.tsx +234 -0
- package/src/components/Form/Form.tsx +124 -0
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +115 -0
- package/src/components/Grid/SimpleGrid.stories.mdx +336 -0
- package/src/components/Grid/SimpleGrid.test.tsx +79 -0
- package/src/components/Grid/SimpleGrid.tsx +49 -0
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +23 -0
- package/src/components/Heading/Heading.stories.mdx +187 -0
- package/src/components/Heading/Heading.test.tsx +171 -0
- package/src/components/Heading/Heading.tsx +104 -0
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +90 -0
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +172 -0
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +114 -0
- package/src/components/HelperErrorText/HelperErrorText.tsx +62 -0
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +93 -0
- package/src/components/Hero/Hero.stories.mdx +378 -0
- package/src/components/Hero/Hero.test.tsx +611 -0
- package/src/components/Hero/Hero.tsx +203 -0
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +379 -0
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +73 -0
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +54 -0
- package/src/components/HorizontalRule/HorizontalRule.tsx +27 -0
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +44 -0
- package/src/components/Icons/Icon.stories.mdx +413 -0
- package/src/components/Icons/Icon.test.tsx +120 -0
- package/src/components/Icons/Icon.tsx +187 -0
- package/src/components/Icons/IconSvgs.tsx +64 -0
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
- package/src/components/Image/Image.stories.mdx +332 -0
- package/src/components/Image/Image.test.tsx +155 -0
- package/src/components/Image/Image.tsx +171 -0
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +269 -0
- package/src/components/Label/Label.stories.mdx +100 -0
- package/src/components/Label/Label.test.tsx +116 -0
- package/src/components/Label/Label.tsx +55 -0
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +45 -0
- package/src/components/Link/Link.stories.mdx +249 -0
- package/src/components/Link/Link.test.tsx +224 -0
- package/src/components/Link/Link.tsx +178 -0
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +286 -0
- package/src/components/List/List.stories.mdx +393 -0
- package/src/components/List/List.test.tsx +265 -0
- package/src/components/List/List.tsx +156 -0
- package/src/components/List/__snapshots__/List.test.tsx.snap +213 -0
- package/src/components/Logo/Logo.stories.mdx +295 -0
- package/src/components/Logo/Logo.test.tsx +116 -0
- package/src/components/Logo/Logo.tsx +151 -0
- package/src/components/Logo/LogoSvgs.tsx +90 -0
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +142 -0
- package/src/components/Modal/Modal.stories.mdx +294 -0
- package/src/components/Modal/Modal.test.tsx +157 -0
- package/src/components/Modal/Modal.tsx +154 -0
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -0
- package/src/components/Notification/Notification.stories.mdx +358 -0
- package/src/components/Notification/Notification.test.tsx +279 -0
- package/src/components/Notification/Notification.tsx +224 -0
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +525 -0
- package/src/components/Pagination/Pagination.stories.mdx +184 -0
- package/src/components/Pagination/Pagination.test.tsx +419 -0
- package/src/components/Pagination/Pagination.tsx +269 -0
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +544 -0
- package/src/components/Placeholder/Placeholder.tsx +19 -0
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +360 -0
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +298 -0
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +132 -0
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +434 -0
- package/src/components/Radio/Radio.stories.mdx +216 -0
- package/src/components/Radio/Radio.test.tsx +247 -0
- package/src/components/Radio/Radio.tsx +119 -0
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +451 -0
- package/src/components/RadioGroup/RadioGroup.stories.mdx +479 -0
- package/src/components/RadioGroup/RadioGroup.test.tsx +471 -0
- package/src/components/RadioGroup/RadioGroup.tsx +171 -0
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1550 -0
- package/src/components/SearchBar/SearchBar.stories.mdx +518 -0
- package/src/components/SearchBar/SearchBar.test.tsx +435 -0
- package/src/components/SearchBar/SearchBar.tsx +210 -0
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1049 -0
- package/src/components/Select/Select.stories.mdx +439 -0
- package/src/components/Select/Select.test.tsx +358 -0
- package/src/components/Select/Select.tsx +183 -0
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +895 -0
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +142 -0
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +116 -0
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +123 -0
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +898 -0
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +90 -0
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +63 -0
- package/src/components/SkipNavigation/SkipNavigation.tsx +51 -0
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +130 -0
- package/src/components/Slider/Slider.stories.mdx +628 -0
- package/src/components/Slider/Slider.test.tsx +736 -0
- package/src/components/Slider/Slider.tsx +322 -0
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +2186 -0
- package/src/components/StatusBadge/StatusBadge.stories.mdx +109 -0
- package/src/components/StatusBadge/StatusBadge.test.tsx +70 -0
- package/src/components/StatusBadge/StatusBadge.tsx +35 -0
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +47 -0
- package/src/components/StructuredContent/StructuredContent.stories.mdx +567 -0
- package/src/components/StructuredContent/StructuredContent.test.tsx +435 -0
- package/src/components/StructuredContent/StructuredContent.tsx +139 -0
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +368 -0
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +206 -0
- package/src/components/StyleGuide/Breakpoints.stories.mdx +55 -0
- package/src/components/StyleGuide/Buttons.stories.mdx +194 -0
- package/src/components/StyleGuide/ColorCard.tsx +43 -0
- package/src/components/StyleGuide/Colors.stories.mdx +201 -0
- package/src/components/StyleGuide/DesignTokens.stories.mdx +193 -0
- package/src/components/StyleGuide/Forms.stories.mdx +94 -0
- package/src/components/StyleGuide/Iconography.stories.mdx +142 -0
- package/src/components/StyleGuide/Spacing.stories.mdx +116 -0
- package/src/components/StyleGuide/Typography.stories.mdx +419 -0
- package/src/components/Table/Table.stories.mdx +272 -0
- package/src/components/Table/Table.test.tsx +241 -0
- package/src/components/Table/Table.tsx +152 -0
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +1703 -0
- package/src/components/Tabs/Tabs.stories.mdx +338 -0
- package/src/components/Tabs/Tabs.test.tsx +298 -0
- package/src/components/Tabs/Tabs.tsx +264 -0
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +584 -0
- package/src/components/Template/Template.stories.mdx +695 -0
- package/src/components/Template/Template.test.tsx +309 -0
- package/src/components/Template/Template.tsx +326 -0
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +342 -0
- package/src/components/Text/Text.stories.mdx +103 -0
- package/src/components/Text/Text.test.tsx +63 -0
- package/src/components/Text/Text.tsx +50 -0
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +50 -0
- package/src/components/TextInput/TextInput.stories.mdx +268 -0
- package/src/components/TextInput/TextInput.test.tsx +451 -0
- package/src/components/TextInput/TextInput.tsx +240 -0
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +274 -0
- package/src/components/Toggle/Toggle.stories.mdx +237 -0
- package/src/components/Toggle/Toggle.test.tsx +170 -0
- package/src/components/Toggle/Toggle.tsx +128 -0
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +470 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +212 -0
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +308 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +188 -0
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +192 -0
- package/src/docs/Chakra.stories.mdx +563 -0
- package/src/docs/Welcome.stories.mdx +148 -0
- package/src/helpers/types.ts +1 -0
- package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
- package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
- package/src/hooks/useCarouselStyles.stories.mdx +30 -0
- package/src/hooks/useCarouselStyles.ts +35 -0
- package/src/hooks/useNYPLTheme.stories.mdx +98 -0
- package/src/hooks/useNYPLTheme.ts +91 -0
- package/src/hooks/useWindowSize.stories.mdx +23 -0
- package/src/hooks/useWindowSize.ts +40 -0
- package/src/index.ts +136 -0
- package/src/resources.scss +6 -0
- package/src/styles/base/_01-breakpoints.scss +27 -0
- package/src/styles/base/_02-mixins.scss +103 -0
- package/src/styles/base/_place-holder.scss +33 -0
- package/src/styles/space/_space-inline.scss +79 -0
- package/src/styles/space/_space-inset.scss +57 -0
- package/src/styles/space/_space-stack.scss +116 -0
- package/src/styles.scss +23 -0
- package/src/theme/components/accordion.ts +25 -0
- package/src/theme/components/breadcrumb.ts +94 -0
- package/src/theme/components/button.ts +133 -0
- package/src/theme/components/buttonGroup.ts +10 -0
- package/src/theme/components/card.ts +237 -0
- package/src/theme/components/checkbox.ts +110 -0
- package/src/theme/components/checkboxGroup.ts +10 -0
- package/src/theme/components/componentWrapper.ts +14 -0
- package/src/theme/components/customTable.ts +77 -0
- package/src/theme/components/datePicker.ts +17 -0
- package/src/theme/components/fieldset.ts +23 -0
- package/src/theme/components/global.ts +91 -0
- package/src/theme/components/globalMixins.ts +24 -0
- package/src/theme/components/heading.ts +79 -0
- package/src/theme/components/helperErrorText.ts +14 -0
- package/src/theme/components/hero.ts +238 -0
- package/src/theme/components/horizontalRule.ts +17 -0
- package/src/theme/components/icon.ts +88 -0
- package/src/theme/components/image.ts +136 -0
- package/src/theme/components/label.ts +15 -0
- package/src/theme/components/link.ts +63 -0
- package/src/theme/components/list.ts +88 -0
- package/src/theme/components/logo.ts +58 -0
- package/src/theme/components/notification.ts +132 -0
- package/src/theme/components/pagination.ts +17 -0
- package/src/theme/components/progressIndicator.ts +67 -0
- package/src/theme/components/radio.ts +103 -0
- package/src/theme/components/radioGroup.ts +10 -0
- package/src/theme/components/searchBar.ts +19 -0
- package/src/theme/components/select.ts +72 -0
- package/src/theme/components/skeletonLoader.ts +113 -0
- package/src/theme/components/skipNavigation.ts +29 -0
- package/src/theme/components/slider.ts +95 -0
- package/src/theme/components/statusBadge.ts +26 -0
- package/src/theme/components/structuredContent.ts +149 -0
- package/src/theme/components/tabs.ts +109 -0
- package/src/theme/components/template.ts +114 -0
- package/src/theme/components/text.ts +38 -0
- package/src/theme/components/textInput.ts +65 -0
- package/src/theme/components/toggle.ts +109 -0
- package/src/theme/components/videoPlayer.ts +47 -0
- package/src/theme/foundations/breakpoints.ts +24 -0
- package/src/theme/foundations/colors.ts +212 -0
- package/src/theme/foundations/global.ts +43 -0
- package/src/theme/foundations/radii.ts +7 -0
- package/src/theme/foundations/shadows.ts +5 -0
- package/src/theme/foundations/spacing.ts +136 -0
- package/src/theme/foundations/typography.ts +107 -0
- package/src/theme/index.ts +131 -0
- package/src/theme/provider.tsx +9 -0
- package/src/theme/types.ts +1 -0
- package/src/utils/componentCategories.ts +152 -0
- package/src/utils/interfaces.ts +5 -0
- package/src/utils/utils.ts +84 -0
- package/lib/components/Button/Button.d.ts +0 -17
- package/lib/components/Button/Button.js +0 -42
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -6
- package/lib/stories/0-Welcome.stories.js +0 -19
- package/lib/stories/1-Button.stories.d.ts +0 -6
- package/lib/stories/1-Button.stories.js +0 -20
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { Canvas, Meta } from "@storybook/addon-docs";
|
|
2
|
+
|
|
3
|
+
import Button from "../Button/Button";
|
|
4
|
+
import ButtonGroup from "../ButtonGroup/ButtonGroup";
|
|
5
|
+
import Icon from "../Icons/Icon";
|
|
6
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
7
|
+
import DSProvider from "../../theme/provider";
|
|
8
|
+
|
|
9
|
+
<Meta title={getCategory("Buttons")} />
|
|
10
|
+
|
|
11
|
+
# Buttons
|
|
12
|
+
|
|
13
|
+
| Table of Contents |
|
|
14
|
+
| ---------------------------------------------- |
|
|
15
|
+
| 1. [General Information](#general-information) |
|
|
16
|
+
| 2. [Guidelines](#guidelines) |
|
|
17
|
+
| 3. [Button Groups](#button-groups) |
|
|
18
|
+
| 4. [Button Types](#button-types) |
|
|
19
|
+
| 5. [Patterns](#patterns) |
|
|
20
|
+
| 6. [Figma Reference](#figma-reference) |
|
|
21
|
+
|
|
22
|
+
## General Information
|
|
23
|
+
|
|
24
|
+
Use the [Button](https://nypl.github.io/nypl-design-system/reservoir/v1/?path=/docs/components-form-elements-button--button-with-controls)
|
|
25
|
+
component to render form buttons.
|
|
26
|
+
|
|
27
|
+
```jsx
|
|
28
|
+
import { Button } from "@nypl/design-system-react-components";
|
|
29
|
+
|
|
30
|
+
<Button id="btn">Button Text</Button>;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Guidelines
|
|
34
|
+
|
|
35
|
+
- Button text is optional.
|
|
36
|
+
- Button text should be title case.
|
|
37
|
+
- Button icon is optional.
|
|
38
|
+
- Buttons may have an icon on either the left or the right.
|
|
39
|
+
- Buttons by default are blue. However, Donation callout buttons are red.
|
|
40
|
+
- Buttons used for Back to Top actions have a Secondary button style with an
|
|
41
|
+
arrow icon pointing up.
|
|
42
|
+
- When buttons are used in a group, they should be wrapped in a `ButtonGroup`.
|
|
43
|
+
- When buttons are used in a group where the user can move forward or backward,
|
|
44
|
+
the `Primary` button is on the right and the `Secondary` button on the left
|
|
45
|
+
(i.e. cancel = secondary, submit = primary).
|
|
46
|
+
|
|
47
|
+
## Button Groups
|
|
48
|
+
|
|
49
|
+
When `Button` components are displayed in a group, use the `ButtonGroup`
|
|
50
|
+
component to handle the spacing and layout. The `ButtonGroup` component will use
|
|
51
|
+
`--nypl-space-xs` (0.5rem) for spacing in horizontal group layouts.
|
|
52
|
+
|
|
53
|
+
Standalone `Button` components and the `ButtonGroup` component should use
|
|
54
|
+
`--nypl-space-l` (2rem) for spacing between all other UI elements. This spacing
|
|
55
|
+
can be achieved by using the `Form` component to wrap the `Button`s.
|
|
56
|
+
|
|
57
|
+
<Canvas>
|
|
58
|
+
<DSProvider>
|
|
59
|
+
<ButtonGroup>
|
|
60
|
+
<Button id="basic">Button Text</Button>
|
|
61
|
+
<Button id="btn-search">
|
|
62
|
+
<Icon name="search" size="small" align="left" />
|
|
63
|
+
Button Text
|
|
64
|
+
</Button>
|
|
65
|
+
<Button id="only-icon">
|
|
66
|
+
<Icon name="close" size="medium" />
|
|
67
|
+
</Button>
|
|
68
|
+
<Button buttonType="callout" id="donate">
|
|
69
|
+
Donate
|
|
70
|
+
</Button>
|
|
71
|
+
<Button buttonType="secondary" id="btn-back-to-top">
|
|
72
|
+
Back to Top
|
|
73
|
+
<Icon
|
|
74
|
+
name="arrow"
|
|
75
|
+
size="small"
|
|
76
|
+
align="right"
|
|
77
|
+
iconRotation="rotate180"
|
|
78
|
+
/>
|
|
79
|
+
</Button>
|
|
80
|
+
</ButtonGroup>
|
|
81
|
+
</DSProvider>
|
|
82
|
+
</Canvas>
|
|
83
|
+
|
|
84
|
+
## Button Types
|
|
85
|
+
|
|
86
|
+
The `buttonType` prop should be used to render various forms of the button
|
|
87
|
+
component.
|
|
88
|
+
|
|
89
|
+
<Canvas>
|
|
90
|
+
<DSProvider>
|
|
91
|
+
<ButtonGroup>
|
|
92
|
+
<Button buttonType="primary" id="primary">
|
|
93
|
+
Primary Button
|
|
94
|
+
</Button>
|
|
95
|
+
<Button buttonType="secondary" id="secondary">
|
|
96
|
+
Secondary Button
|
|
97
|
+
</Button>
|
|
98
|
+
<Button buttonType="callout" id="callout">
|
|
99
|
+
Callout Button
|
|
100
|
+
</Button>
|
|
101
|
+
<Button buttonType="pill" id="pill">
|
|
102
|
+
Pill Button
|
|
103
|
+
</Button>
|
|
104
|
+
<Button buttonType="link" id="link">
|
|
105
|
+
Link Button
|
|
106
|
+
</Button>
|
|
107
|
+
<Button buttonType="noBrand" id="noBrand">
|
|
108
|
+
NoBrand Button
|
|
109
|
+
</Button>
|
|
110
|
+
</ButtonGroup>
|
|
111
|
+
</DSProvider>
|
|
112
|
+
</Canvas>
|
|
113
|
+
|
|
114
|
+
### Primary
|
|
115
|
+
|
|
116
|
+
- used for actions that move the user forward
|
|
117
|
+
- Visual Treatment: rectangular, filled
|
|
118
|
+
|
|
119
|
+
### Secondary
|
|
120
|
+
|
|
121
|
+
- used for actions that move the user back, such as a form cancel button
|
|
122
|
+
- often paired with a Primary button
|
|
123
|
+
- Visual Treatment: rectangular, outlined
|
|
124
|
+
|
|
125
|
+
### Callout
|
|
126
|
+
|
|
127
|
+
- used for call to actions such as donation buttons
|
|
128
|
+
- Visual Treatment: rectangular, NYPL red background
|
|
129
|
+
|
|
130
|
+
### Pill
|
|
131
|
+
|
|
132
|
+
- used for equally weighted actions
|
|
133
|
+
- should only be used for buttons that are displayed in a set (i.e. never use for a singleton button)
|
|
134
|
+
- Visual Treatment: rounded, outlined
|
|
135
|
+
|
|
136
|
+
### Link
|
|
137
|
+
|
|
138
|
+
- used for equally weighted actions
|
|
139
|
+
- Visual Treatment: text link with underline
|
|
140
|
+
|
|
141
|
+
### NoBrand
|
|
142
|
+
|
|
143
|
+
- used in cases where there is no brand color
|
|
144
|
+
- Visual Treatment: rectangular, filled with a black background
|
|
145
|
+
|
|
146
|
+
## Patterns
|
|
147
|
+
|
|
148
|
+
- Buttons are blue by default.
|
|
149
|
+
- Buttons that are intended as a call out (i.e. Donation buttons) should be set
|
|
150
|
+
as `"callout"`.
|
|
151
|
+
- The "Back to Top" button must be set as `"secondary"` and must include an up
|
|
152
|
+
arrow icon.
|
|
153
|
+
- Previous and Next buttons should be set as `"secondary"` and be wrapped in a
|
|
154
|
+
`ButtonGroup`.
|
|
155
|
+
- Only use the `"noBrand"` style where there is no brand color. _This should be
|
|
156
|
+
rarely used._
|
|
157
|
+
|
|
158
|
+
<Canvas>
|
|
159
|
+
<DSProvider>
|
|
160
|
+
<ButtonGroup>
|
|
161
|
+
<Button buttonType="callout" id="callout2">
|
|
162
|
+
Donate to this library
|
|
163
|
+
</Button>
|
|
164
|
+
<Button buttonType="secondary" id="secondary2">
|
|
165
|
+
Back to Top
|
|
166
|
+
<Icon
|
|
167
|
+
align="right"
|
|
168
|
+
iconRotation="rotate180"
|
|
169
|
+
name="arrow"
|
|
170
|
+
size="small"
|
|
171
|
+
/>
|
|
172
|
+
</Button>
|
|
173
|
+
<Button buttonType="secondary" id="previous">
|
|
174
|
+
<Icon align="left" iconRotation="rotate90" name="arrow" size="small" />
|
|
175
|
+
Previous
|
|
176
|
+
</Button>
|
|
177
|
+
<Button buttonType="secondary" id="next">
|
|
178
|
+
Next
|
|
179
|
+
<Icon
|
|
180
|
+
align="right"
|
|
181
|
+
iconRotation="rotate270"
|
|
182
|
+
name="arrow"
|
|
183
|
+
size="small"
|
|
184
|
+
/>
|
|
185
|
+
</Button>
|
|
186
|
+
</ButtonGroup>
|
|
187
|
+
</DSProvider>
|
|
188
|
+
</Canvas>
|
|
189
|
+
|
|
190
|
+
## Figma Reference
|
|
191
|
+
|
|
192
|
+
For more styling information, please refer to the Figma Main file.
|
|
193
|
+
|
|
194
|
+
- https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11477%3A2298
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import Card from "../Card/Card";
|
|
4
|
+
import Heading from "../Heading/Heading";
|
|
5
|
+
|
|
6
|
+
export interface ColorCardProps {
|
|
7
|
+
/** backgroundColor of the color card */
|
|
8
|
+
backgroundColor: string;
|
|
9
|
+
/** name of the CSS var */
|
|
10
|
+
colorName: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* ColorCard
|
|
15
|
+
* Component only used for Storybook.
|
|
16
|
+
*/
|
|
17
|
+
export default function ColorCard(
|
|
18
|
+
props: React.PropsWithChildren<ColorCardProps>
|
|
19
|
+
) {
|
|
20
|
+
const { backgroundColor, colorName = "" } = props;
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div style={{ display: "flex", alignItems: "center" }}>
|
|
24
|
+
<Card
|
|
25
|
+
backgroundColor={backgroundColor}
|
|
26
|
+
isBordered
|
|
27
|
+
isCentered
|
|
28
|
+
layout="column"
|
|
29
|
+
/>
|
|
30
|
+
<div style={{ marginLeft: "1rem" }}>
|
|
31
|
+
<Heading level="four">{colorName}</Heading>
|
|
32
|
+
{/*
|
|
33
|
+
TODO:
|
|
34
|
+
This code is returning the CSS variable name. This is not what we
|
|
35
|
+
want. Rather, we want to see the variable's hex value. This is
|
|
36
|
+
somethign we will need to come back to.
|
|
37
|
+
|
|
38
|
+
<Text noSpace>{backgroundColor}</Text>
|
|
39
|
+
*/}
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { Canvas, Meta } from "@storybook/addon-docs";
|
|
2
|
+
|
|
3
|
+
import ColorCard from "./ColorCard";
|
|
4
|
+
import Heading from "../Heading/Heading";
|
|
5
|
+
import SimpleGrid from "../Grid/SimpleGrid";
|
|
6
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
7
|
+
import DSProvider from "../../theme/provider";
|
|
8
|
+
|
|
9
|
+
export const cssVars = {
|
|
10
|
+
brand: ["--nypl-colors-brand-primary", "--nypl-colors-brand-secondary"],
|
|
11
|
+
blogs: [
|
|
12
|
+
"--nypl-colors-section-blogs-primary",
|
|
13
|
+
"--nypl-colors-section-blogs-secondary",
|
|
14
|
+
],
|
|
15
|
+
booksAndMore: [
|
|
16
|
+
"--nypl-colors-section-books-and-more-primary",
|
|
17
|
+
"--nypl-colors-section-books-and-more-secondary",
|
|
18
|
+
],
|
|
19
|
+
education: [
|
|
20
|
+
"--nypl-colors-section-education-primary",
|
|
21
|
+
"--nypl-colors-section-education-secondary",
|
|
22
|
+
],
|
|
23
|
+
locations: [
|
|
24
|
+
"--nypl-colors-section-locations-primary",
|
|
25
|
+
"--nypl-colors-section-locations-secondary",
|
|
26
|
+
],
|
|
27
|
+
research: [
|
|
28
|
+
"--nypl-colors-section-research-primary",
|
|
29
|
+
"--nypl-colors-section-research-secondary",
|
|
30
|
+
],
|
|
31
|
+
researchLibraries: [
|
|
32
|
+
"--nypl-colors-section-research-library-lpa",
|
|
33
|
+
"--nypl-colors-section-research-library-schomburg",
|
|
34
|
+
"--nypl-colors-section-research-library-schwartzman",
|
|
35
|
+
],
|
|
36
|
+
whatsOn: [
|
|
37
|
+
"--nypl-colors-section-whats-on-primary",
|
|
38
|
+
"--nypl-colors-section-whats-on-secondary",
|
|
39
|
+
],
|
|
40
|
+
ui: [
|
|
41
|
+
"--nypl-colors-ui-black",
|
|
42
|
+
"--nypl-colors-ui-white",
|
|
43
|
+
"--nypl-colors-ui-disabled-primary",
|
|
44
|
+
"--nypl-colors-ui-disabled-secondary",
|
|
45
|
+
"--nypl-colors-ui-error-primary",
|
|
46
|
+
"--nypl-colors-ui-error-secondary",
|
|
47
|
+
"--nypl-colors-ui-focus",
|
|
48
|
+
"--nypl-colors-ui-link-primary",
|
|
49
|
+
"--nypl-colors-ui-link-secondary",
|
|
50
|
+
"--nypl-colors-ui-status-primary",
|
|
51
|
+
"--nypl-colors-ui-status-secondary",
|
|
52
|
+
"--nypl-colors-ui-success-primary",
|
|
53
|
+
"--nypl-colors-ui-success-secondary",
|
|
54
|
+
"--nypl-colors-ui-test",
|
|
55
|
+
"--nypl-colors-ui-warning-primary",
|
|
56
|
+
"--nypl-colors-ui-warning-secondary",
|
|
57
|
+
],
|
|
58
|
+
grayscale: [
|
|
59
|
+
"--nypl-colors-ui-gray-xdark",
|
|
60
|
+
"--nypl-colors-ui-gray-dark",
|
|
61
|
+
"--nypl-colors-ui-gray-medium",
|
|
62
|
+
"--nypl-colors-ui-gray-light-cool",
|
|
63
|
+
"--nypl-colors-ui-gray-light-warm",
|
|
64
|
+
"--nypl-colors-ui-gray-x-light-cool",
|
|
65
|
+
"--nypl-colors-ui-gray-x-light-warm",
|
|
66
|
+
"--nypl-colors-ui-gray-xx-light-cool",
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const makeColorCard = function (key) {
|
|
71
|
+
const cssValue = `var(${key})`;
|
|
72
|
+
const card = (
|
|
73
|
+
<ColorCard backgroundColor={cssValue} colorName={key} key={key} />
|
|
74
|
+
);
|
|
75
|
+
return card;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const getColorCards = (cat) => {
|
|
79
|
+
const cards = [];
|
|
80
|
+
const catArr = cssVars[cat];
|
|
81
|
+
for (let i = 0; i < catArr.length; i++) {
|
|
82
|
+
const varName = catArr[i];
|
|
83
|
+
const card = makeColorCard(varName);
|
|
84
|
+
cards.push(card);
|
|
85
|
+
}
|
|
86
|
+
return cards;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
<Meta title={getCategory("Colors")} />
|
|
90
|
+
|
|
91
|
+
# NYPL Colors
|
|
92
|
+
|
|
93
|
+
| Table of Contents |
|
|
94
|
+
| ---------------------------------------- |
|
|
95
|
+
| 1. [Brand Colors](#brand-colors) |
|
|
96
|
+
| 2. [Section Colors](#section-colors) |
|
|
97
|
+
| 3. [Utility Colors](#utility-colors) |
|
|
98
|
+
| 3. [Grayscale Colors](#grayscale-colors) |
|
|
99
|
+
| 4. [Figma Reference](#figma-reference) |
|
|
100
|
+
|
|
101
|
+
## Brand Colors
|
|
102
|
+
|
|
103
|
+
Brand fills are the NYPL primary and secondary colors.
|
|
104
|
+
|
|
105
|
+
<Canvas>
|
|
106
|
+
<DSProvider>
|
|
107
|
+
<SimpleGrid columns={1}>{getColorCards("brand")}</SimpleGrid>
|
|
108
|
+
</DSProvider>
|
|
109
|
+
</Canvas>
|
|
110
|
+
|
|
111
|
+
## Section Colors
|
|
112
|
+
|
|
113
|
+
Section colors are branding colors only in use at NYPL.
|
|
114
|
+
|
|
115
|
+
<Canvas>
|
|
116
|
+
<DSProvider>
|
|
117
|
+
<Heading>Blogs</Heading>
|
|
118
|
+
<p>Blogs is used for the Blogs section.</p>
|
|
119
|
+
<SimpleGrid columns={1}>{getColorCards("blogs")}</SimpleGrid>
|
|
120
|
+
</DSProvider>
|
|
121
|
+
</Canvas>
|
|
122
|
+
|
|
123
|
+
<Canvas>
|
|
124
|
+
<DSProvider>
|
|
125
|
+
<Heading>Books and More</Heading>
|
|
126
|
+
<p>
|
|
127
|
+
Books and More is used for the Catalog, Staff Picks, Recommendations, New
|
|
128
|
+
Arrivals, and E-Book Central.
|
|
129
|
+
</p>
|
|
130
|
+
<SimpleGrid columns={1}>{getColorCards("booksAndMore")}</SimpleGrid>
|
|
131
|
+
</DSProvider>
|
|
132
|
+
</Canvas>
|
|
133
|
+
|
|
134
|
+
<Canvas>
|
|
135
|
+
<DSProvider>
|
|
136
|
+
<Heading>Education</Heading>
|
|
137
|
+
<p>
|
|
138
|
+
Education is used for the Education section front and all associated
|
|
139
|
+
sub-sections.
|
|
140
|
+
</p>
|
|
141
|
+
<SimpleGrid columns={1}>{getColorCards("education")}</SimpleGrid>
|
|
142
|
+
</DSProvider>
|
|
143
|
+
</Canvas>
|
|
144
|
+
|
|
145
|
+
<Canvas>
|
|
146
|
+
<DSProvider>
|
|
147
|
+
<Heading>Locations</Heading>
|
|
148
|
+
<p>
|
|
149
|
+
Locations is used for Location Finder and all branch pages with the
|
|
150
|
+
exceptions of some research libraries.
|
|
151
|
+
</p>
|
|
152
|
+
<SimpleGrid columns={1}>{getColorCards("locations")}</SimpleGrid>
|
|
153
|
+
</DSProvider>
|
|
154
|
+
</Canvas>
|
|
155
|
+
|
|
156
|
+
<Canvas>
|
|
157
|
+
<DSProvider>
|
|
158
|
+
<Heading>Research</Heading>
|
|
159
|
+
<p>Research is used for the Research Catalog and SCC.</p>
|
|
160
|
+
<SimpleGrid columns={1}>{getColorCards("research")}</SimpleGrid>
|
|
161
|
+
</DSProvider>
|
|
162
|
+
</Canvas>
|
|
163
|
+
|
|
164
|
+
<Canvas>
|
|
165
|
+
<DSProvider>
|
|
166
|
+
<Heading>Research Libraries</Heading>
|
|
167
|
+
<p>Research libraries with specific brand colors to adhere to.</p>
|
|
168
|
+
<SimpleGrid columns={1}>{getColorCards("researchLibraries")}</SimpleGrid>
|
|
169
|
+
</DSProvider>
|
|
170
|
+
</Canvas>
|
|
171
|
+
|
|
172
|
+
<Canvas>
|
|
173
|
+
<DSProvider>
|
|
174
|
+
<Heading>What's On</Heading>
|
|
175
|
+
<p>What's On is used for Events, Exhibitions & Audio Guides.</p>
|
|
176
|
+
<SimpleGrid columns={1}>{getColorCards("whatsOn")}</SimpleGrid>
|
|
177
|
+
</DSProvider>
|
|
178
|
+
</Canvas>
|
|
179
|
+
|
|
180
|
+
## Utility Colors
|
|
181
|
+
|
|
182
|
+
<Canvas>
|
|
183
|
+
<DSProvider>
|
|
184
|
+
<SimpleGrid columns={1}>{getColorCards("ui")}</SimpleGrid>
|
|
185
|
+
</DSProvider>
|
|
186
|
+
</Canvas>
|
|
187
|
+
|
|
188
|
+
## Grayscale Colors
|
|
189
|
+
|
|
190
|
+
<Canvas>
|
|
191
|
+
<DSProvider>
|
|
192
|
+
<SimpleGrid columns={1}>{getColorCards("grayscale")}</SimpleGrid>
|
|
193
|
+
</DSProvider>
|
|
194
|
+
</Canvas>
|
|
195
|
+
|
|
196
|
+
## Figma Reference
|
|
197
|
+
|
|
198
|
+
For additional spacing information, please refer to the Figma Main file.
|
|
199
|
+
|
|
200
|
+
- [NYPL Brand Colors](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=15454%3A47007)
|
|
201
|
+
- [NYPL UI Colors](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=47083%3A27674)
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Meta } from "@storybook/addon-docs";
|
|
2
|
+
|
|
3
|
+
import { getCategory } from "../../utils/componentCategories";
|
|
4
|
+
|
|
5
|
+
<Meta title={getCategory("Design Tokens")} />
|
|
6
|
+
|
|
7
|
+
# Design Tokens
|
|
8
|
+
|
|
9
|
+
| Table of Contents |
|
|
10
|
+
| ---------------------------------------------------------------------------------------------- |
|
|
11
|
+
| 1. [What are Design Tokens?](#what-are-design-tokens) |
|
|
12
|
+
| 2. [Why Use Design Tokens?](#why-use-design-tokens) |
|
|
13
|
+
| 3. [How to Use the Reservoir Design Tokens](#figma-reference) |
|
|
14
|
+
| 4. [Using Reservoir Design Tokens in CSS](#using-reservoir-design-tokens-in-css) |
|
|
15
|
+
| 5. [Using Reservoir Design Tokens in Javascript](#using-reservoir-design-tokens-in-javascript) |
|
|
16
|
+
| 6. [Reservoir Design Token Categories](#reservoir-design-token-categories) |
|
|
17
|
+
|
|
18
|
+
## What are Design Tokens?
|
|
19
|
+
|
|
20
|
+
Design tokens are the style values that define a design system. These values
|
|
21
|
+
can include, but may not be limited to, spacing, color, typography, breakpoints
|
|
22
|
+
and object styles. Ultimately, these values are used to construct and maintain
|
|
23
|
+
the components that make up our system.
|
|
24
|
+
|
|
25
|
+
## Why Use Design Tokens?
|
|
26
|
+
|
|
27
|
+
_"With design tokens, you can capture low-level values and then use them to
|
|
28
|
+
create the styles for your product or app. You can maintain a scalable and
|
|
29
|
+
consistent visual system for UI development."_ - Jina Bolton, Lead Designer
|
|
30
|
+
for the Salesforce Design System
|
|
31
|
+
|
|
32
|
+
Design tokens are a single source of truth when it comes to styles. They allow
|
|
33
|
+
an organization to more easily build multiple applications - web and/or native -
|
|
34
|
+
that feel and look the same without slowing down the development team.
|
|
35
|
+
|
|
36
|
+
## How to Use the Reservoir Design Tokens
|
|
37
|
+
|
|
38
|
+
The NYPL design tokens are built into the Reservoir Design System (DS) and are
|
|
39
|
+
offered in two formats for consumption: CSS variables and javascript data
|
|
40
|
+
objects. To access either of these formats, the DS `v0.25.9` or higher needs
|
|
41
|
+
to be properly installed in a consuming React application.
|
|
42
|
+
|
|
43
|
+
## Using Reservoir Design Tokens in CSS
|
|
44
|
+
|
|
45
|
+
If your app uses CSS or SCSS to handle styles, the DS creates standard CSS
|
|
46
|
+
custom properties (e.g. variables) for consumption in your stylesheets. If the
|
|
47
|
+
DS is properly installed, the CSS custom properties will be available for you
|
|
48
|
+
to use. Nothing more needs to be done to your app.
|
|
49
|
+
|
|
50
|
+
To assist with CSS scope isolation, all of the CSS custom properties created
|
|
51
|
+
by the DS are prefixed with "nypl." Please see the examples below.
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
--nypl-colors-brand-primary
|
|
55
|
+
--nypl-colors-brand-secondary
|
|
56
|
+
--nypl-fontSizes-sm
|
|
57
|
+
--nypl-fontSizes-md
|
|
58
|
+
--nypl-fontSizes-lg
|
|
59
|
+
--nypl-fontSizes-xl
|
|
60
|
+
--nypl-space-xxs
|
|
61
|
+
--nypl-space-xs
|
|
62
|
+
--nypl-space-s
|
|
63
|
+
--nypl-space-m
|
|
64
|
+
--nypl-space-l
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The CSS custom properties are defined on the :root pseudo-class and should be
|
|
68
|
+
implemented using standard CSS custom properties conventions.
|
|
69
|
+
|
|
70
|
+
```css
|
|
71
|
+
/* Property Declaration in the DS */
|
|
72
|
+
:root {
|
|
73
|
+
--nypl-colors-brand-primary: #c60917;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Property Usage in Your Application */
|
|
77
|
+
.custom-button {
|
|
78
|
+
background: var(--nypl-colors-brand-primary);
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Using Reservoir Design Tokens in Javascript
|
|
83
|
+
|
|
84
|
+
If you would like to use CSS-in-JS styles in your React components, the
|
|
85
|
+
`useNYPLTheme` hook will provide you with Reservoir design token values. The hook
|
|
86
|
+
depends on the `DSProvider` component and will not work properly outside of
|
|
87
|
+
the `DSProvider` wrapper component.
|
|
88
|
+
|
|
89
|
+
After importing and implementing the `DSProvider` wrapper component, as
|
|
90
|
+
explained in the `DSProvider` section of the [DS Chakra UI](?path=/story/chakra-ui--page#dsprovider)
|
|
91
|
+
document, your children components can use this hook function.
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
import { useNYPLTheme } from "@nypl/design-system-react-components";
|
|
95
|
+
const theme = useNYPLTheme();
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The theme variable will be a javascript object containing the NYPL design
|
|
99
|
+
token style values. This will allow you to use design token values in your
|
|
100
|
+
components through CSS-in-JS.
|
|
101
|
+
|
|
102
|
+
```tsx
|
|
103
|
+
// theme
|
|
104
|
+
{
|
|
105
|
+
breakpoints: { ... },
|
|
106
|
+
colors: {
|
|
107
|
+
brand: { ... },
|
|
108
|
+
section: { ... },
|
|
109
|
+
transparent: { ... },
|
|
110
|
+
ui: { ... },
|
|
111
|
+
},
|
|
112
|
+
fontSizes: { ... },
|
|
113
|
+
fontWeights: { ... },
|
|
114
|
+
fonts: { ... },
|
|
115
|
+
radii: { ... },
|
|
116
|
+
space: { ... },
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### Using in DS Components
|
|
121
|
+
|
|
122
|
+
The general rule of thumb is that DS components and the available variants
|
|
123
|
+
should be used with the styles and variants as they are shown in Storybook,
|
|
124
|
+
but there may be rare times when a component does require a modification.
|
|
125
|
+
That said, if a DS component does need an updated style, first contact the
|
|
126
|
+
Design System and UX teams about this update.
|
|
127
|
+
|
|
128
|
+
If you receive approval to make a change in a consuming app, then you can add
|
|
129
|
+
styles directly as style props. For example, if the `Heading` component needs to
|
|
130
|
+
render text in Reservoir's "success primary" green color and add a bold font
|
|
131
|
+
weight, then you can do the following:
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
const theme = useNYPLTheme();
|
|
135
|
+
|
|
136
|
+
// ...
|
|
137
|
+
return (
|
|
138
|
+
<div>
|
|
139
|
+
<Heading
|
|
140
|
+
level={2}
|
|
141
|
+
color={theme.colors.ui.success.primary}
|
|
142
|
+
fontWeight={theme.fontWeights.bold}
|
|
143
|
+
>
|
|
144
|
+
Get a Digital Library Card Today in a Few Easy Steps
|
|
145
|
+
</Heading>
|
|
146
|
+
</div>
|
|
147
|
+
);
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
IMPORTANT: At the moment, not all DS components have this prop or feature.
|
|
151
|
+
|
|
152
|
+
#### Using in HTML Components
|
|
153
|
+
|
|
154
|
+
For styling standard HTML elements, use the `style` attribute to add inline styles.
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<p style={{ color: theme.colors.ui.success.primary }}>
|
|
158
|
+
If you are 13 or older and live, work, attend school, or pay property
|
|
159
|
+
taxes in New York State, you can get a free digital library card right
|
|
160
|
+
now using this online form. Visitors to New York State can also use this
|
|
161
|
+
form to apply for a temporary card.
|
|
162
|
+
</p>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### Using in Styled Components
|
|
166
|
+
|
|
167
|
+
For adding theme styles to styled-objects, use the theme object as a standard javascript variable.
|
|
168
|
+
|
|
169
|
+
```tsx
|
|
170
|
+
const CustomButton = styled.button`
|
|
171
|
+
background: ${theme.colors.brand.primary};
|
|
172
|
+
`;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Reservoir Design Token Categories
|
|
176
|
+
|
|
177
|
+
The DS design tokens are broken into the following categories:
|
|
178
|
+
|
|
179
|
+
- [breakpoints](?path=/story/documentation-style-guide-breakpoints--page)
|
|
180
|
+
- [colors](?path=/story/documentation-style-guide-colors--page)
|
|
181
|
+
- brand
|
|
182
|
+
- section
|
|
183
|
+
- transparent
|
|
184
|
+
- ui
|
|
185
|
+
- radii
|
|
186
|
+
- [spacing](?path=/story/documentation-style-guide-spacing--page)
|
|
187
|
+
- [typography](?path=/story/documentation-style-guide-typography--page)
|
|
188
|
+
- font families
|
|
189
|
+
- font sizes
|
|
190
|
+
- font weights
|
|
191
|
+
|
|
192
|
+
For details related to a specific category, please refer to the corresponding
|
|
193
|
+
section in the Style Guide available in the DS Storybook.
|