@edvisor/product-language 0.9.0 → 0.10.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/.babelrc +12 -0
- package/.eslintrc.json +147 -0
- package/.release-it.json +17 -0
- package/.storybook/main.js +57 -0
- package/.storybook/manager.js +7 -0
- package/.storybook/preview.js +15 -0
- package/.storybook/tsconfig.json +30 -0
- package/jest.config.ts +15 -0
- package/jest.setup.ts +2 -0
- package/package.json +2 -27
- package/project.json +98 -0
- package/src/README.md +61 -0
- package/src/assets/svg/example_icon.svg +3 -0
- package/src/assets/svg/example_icon_white.svg +3 -0
- package/src/assets/svg/spinner.svg +3 -0
- package/src/assets/svg/spinner_white.svg +3 -0
- package/src/helpers/index.ts +4 -0
- package/src/helpers/playground.ts +26 -0
- package/src/helpers/talesOf.tsx +42 -0
- package/src/index.ts +2 -0
- package/src/lib/components/README.md +49 -0
- package/src/lib/components/alert-banner/alert-banner.test.tsx +93 -0
- package/src/lib/components/alert-banner/alert-banner.tsx +117 -0
- package/src/lib/components/alert-banner/alert-level-flags.ts +101 -0
- package/src/lib/components/alert-banner/index.ts +1 -0
- package/src/lib/components/alert-banner/storybook/alert-banner.stories.mdx +67 -0
- package/src/lib/components/alert-banner/storybook/components.tsx +124 -0
- package/src/lib/components/badge/badge-type-flags.ts +72 -0
- package/src/lib/components/badge/badge.test.tsx +29 -0
- package/src/lib/components/badge/badge.tsx +22 -0
- package/src/lib/components/badge/index.ts +1 -0
- package/src/lib/components/badge/stories/badge.stories.mdx +44 -0
- package/src/lib/components/badge/stories/components.tsx +49 -0
- package/{lib/components/card/atoms/card-frame.d.ts → src/lib/components/card/atoms/card-frame.tsx} +16 -7
- package/src/lib/components/card/atoms/index.ts +1 -0
- package/src/lib/components/card/card.test.tsx +162 -0
- package/src/lib/components/card/card.tsx +78 -0
- package/src/lib/components/card/components/card-alert-banner-slot.tsx +16 -0
- package/src/lib/components/card/components/card-controls-slot.tsx +19 -0
- package/src/lib/components/card/components/card-section-slot.tsx +51 -0
- package/src/lib/components/card/components/index.ts +3 -0
- package/src/lib/components/card/index.ts +3 -0
- package/src/lib/components/card/molecules/index.ts +1 -0
- package/src/lib/components/card/molecules/left-right-card.test.tsx +89 -0
- package/src/lib/components/card/molecules/left-right-card.tsx +63 -0
- package/src/lib/components/card/storybook/card.stories.mdx +100 -0
- package/src/lib/components/card/storybook/components.tsx +227 -0
- package/src/lib/components/checkbox/checkbox.test.tsx +39 -0
- package/src/lib/components/checkbox/checkbox.tsx +70 -0
- package/src/lib/components/checkbox/helpers.tsx +98 -0
- package/src/lib/components/checkbox/index.tsx +1 -0
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +57 -0
- package/src/lib/components/checkbox/stories/components.tsx +84 -0
- package/src/lib/components/date-picker/components/custom-calendar.tsx +193 -0
- package/src/lib/components/date-picker/components/index.ts +1 -0
- package/src/lib/components/date-picker/data-picker.test.tsx +220 -0
- package/src/lib/components/date-picker/date-picker.tsx +10 -0
- package/src/lib/components/date-picker/helpers/date-picker-factory.tsx +210 -0
- package/src/lib/components/date-picker/index.ts +1 -0
- package/src/lib/components/date-picker/storybook/components.tsx +259 -0
- package/src/lib/components/date-picker/storybook/date-picker.stories.mdx +133 -0
- package/src/lib/components/divider/divider-type-flags.tsx +37 -0
- package/src/lib/components/divider/divider.test.tsx +34 -0
- package/src/lib/components/divider/divider.tsx +37 -0
- package/src/lib/components/divider/index.tsx +1 -0
- package/src/lib/components/divider/stories/components.tsx +13 -0
- package/src/lib/components/divider/stories/divider.stories.mdx +44 -0
- package/src/lib/components/flag/flag-size-flags.tsx +55 -0
- package/src/lib/components/flag/flag.list.tsx +788 -0
- package/src/lib/components/flag/flag.test.tsx +65 -0
- package/src/lib/components/flag/flag.tsx +97 -0
- package/src/lib/components/flag/index.tsx +1 -0
- package/src/lib/components/flag/stories/components.tsx +403 -0
- package/src/lib/components/flag/stories/flag.stories.mdx +48 -0
- package/src/lib/components/flag/stories/playGround-select.tsx +145 -0
- package/src/lib/components/icon/icon-list.tsx +135 -0
- package/src/lib/components/icon/icon.test.tsx +47 -0
- package/src/lib/components/icon/icon.tsx +181 -0
- package/src/lib/components/icon/index.tsx +1 -0
- package/src/lib/components/icon/stories/components.tsx +282 -0
- package/src/lib/components/icon/stories/icon.stories.mdx +65 -0
- package/src/lib/components/index.ts +26 -0
- package/src/lib/components/input-field/components/index.ts +2 -0
- package/src/lib/components/input-field/components/labeled-input.tsx +57 -0
- package/src/lib/components/input-field/components/stepper.tsx +64 -0
- package/src/lib/components/input-field/index.ts +6 -0
- package/src/lib/components/input-field/input-field.test.tsx +107 -0
- package/src/lib/components/input-field/input-field.tsx +154 -0
- package/src/lib/components/input-field/input-number.tsx +41 -0
- package/src/lib/components/input-field/input-text.tsx +30 -0
- package/src/lib/components/input-field/storybook/components.tsx +367 -0
- package/src/lib/components/input-field/storybook/input-field.stories.mdx +120 -0
- package/src/lib/components/layout/flex.tsx +22 -0
- package/src/lib/components/layout/grid-layout.tsx +40 -0
- package/src/lib/components/layout/index.ts +3 -0
- package/src/lib/components/layout/left-right-layout.tsx +67 -0
- package/src/lib/components/link/index.ts +1 -0
- package/src/lib/components/link/link.test.tsx +29 -0
- package/src/lib/components/link/link.tsx +56 -0
- package/src/lib/components/link/storybook/link.stories.mdx +52 -0
- package/src/lib/components/modal/index.ts +3 -0
- package/src/lib/components/modal/modal-base.tsx +129 -0
- package/src/lib/components/modal/modal-destructive.tsx +70 -0
- package/src/lib/components/modal/modal.test.tsx +138 -0
- package/src/lib/components/modal/modal.tsx +114 -0
- package/src/lib/components/modal/storybook/components.tsx +105 -0
- package/src/lib/components/modal/storybook/modal-destructive.stories.mdx +31 -0
- package/src/lib/components/modal/storybook/modal.stories.mdx +50 -0
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +55 -0
- package/src/lib/components/molecules/avatar/avatar.test.tsx +114 -0
- package/src/lib/components/molecules/avatar/avatar.tsx +80 -0
- package/src/lib/components/molecules/avatar/index.tsx +1 -0
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +52 -0
- package/src/lib/components/molecules/avatar/stories/components.tsx +36 -0
- package/src/lib/components/molecules/button/button-flags.tsx +340 -0
- package/src/lib/components/molecules/button/button.test.tsx +77 -0
- package/src/lib/components/molecules/button/button.tsx +212 -0
- package/src/lib/components/molecules/button/index.tsx +1 -0
- package/src/lib/components/molecules/button/stories/button.stories.mdx +105 -0
- package/src/lib/components/molecules/button/stories/components.tsx +90 -0
- package/src/lib/components/molecules/index.ts +3 -0
- package/src/lib/components/molecules/input-checkbox/index.tsx +1 -0
- package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +34 -0
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +50 -0
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +53 -0
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +49 -0
- package/src/lib/components/organisms/choice-list/choice-list.test.tsx +36 -0
- package/src/lib/components/organisms/choice-list/choice-list.tsx +72 -0
- package/src/lib/components/organisms/choice-list/index.tsx +1 -0
- package/src/lib/components/organisms/choice-list/stories/choice-list.stories.mdx +57 -0
- package/src/lib/components/organisms/choice-list/stories/components.tsx +45 -0
- package/src/lib/components/organisms/index.ts +2 -0
- package/src/lib/components/organisms/multi-choice-list/index.tsx +1 -0
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +33 -0
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +53 -0
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +124 -0
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +99 -0
- package/src/lib/components/progress-bar/index.ts +1 -0
- package/src/lib/components/progress-bar/progress-bar-size-flags.tsx +37 -0
- package/src/lib/components/progress-bar/progress-bar.test.tsx +66 -0
- package/src/lib/components/progress-bar/progress-bar.tsx +42 -0
- package/src/lib/components/progress-bar/storybook/components.tsx +62 -0
- package/src/lib/components/progress-bar/storybook/progress-bar.stories.mdx +43 -0
- package/{lib/components/spinner/index.d.ts → src/lib/components/radio-button/index.tsx} +1 -1
- package/src/lib/components/radio-button/radio-button.tsx +135 -0
- package/src/lib/components/radio-button/radio.test.tsx +59 -0
- package/src/lib/components/radio-button/stories/components.tsx +36 -0
- package/src/lib/components/radio-button/stories/radio-button.stories.mdx +44 -0
- package/src/lib/components/range-slider/components/bar-chart.tsx +50 -0
- package/src/lib/components/range-slider/components/handle.tsx +58 -0
- package/src/lib/components/range-slider/components/rail.tsx +44 -0
- package/src/lib/components/range-slider/components/slider-component.tsx +98 -0
- package/src/lib/components/range-slider/components/slider-inputs.tsx +150 -0
- package/src/lib/components/range-slider/components/tick.tsx +51 -0
- package/src/lib/components/range-slider/components/track.tsx +67 -0
- package/src/lib/components/range-slider/index.tsx +2 -0
- package/src/lib/components/range-slider/range-slider.test.tsx +185 -0
- package/src/lib/components/range-slider/range-slider.tsx +132 -0
- package/src/lib/components/range-slider/slider.test.tsx +89 -0
- package/src/lib/components/range-slider/slider.tsx +80 -0
- package/src/lib/components/range-slider/stories/components.tsx +179 -0
- package/src/lib/components/range-slider/stories/range-slider.stories.mdx +84 -0
- package/src/lib/components/range-slider/types.ts +18 -0
- package/src/lib/components/select/components/menu-container.tsx +69 -0
- package/src/lib/components/select/components/menu-list.tsx +195 -0
- package/src/lib/components/select/components/menu-row.tsx +43 -0
- package/src/lib/components/select/components/menu.tsx +151 -0
- package/src/lib/components/select/components/option.tsx +91 -0
- package/src/lib/components/select/components/select-label.tsx +10 -0
- package/src/lib/components/select/components/value-component-multi.tsx +40 -0
- package/src/lib/components/select/components/value-component-single.tsx +27 -0
- package/src/lib/components/select/components/value.tsx +370 -0
- package/src/lib/components/select/index.tsx +3 -0
- package/src/lib/components/select/select.test.tsx +148 -0
- package/src/lib/components/select/select.tsx +337 -0
- package/src/lib/components/select/storybook/components.tsx +999 -0
- package/src/lib/components/select/storybook/radio-group.tsx +157 -0
- package/src/lib/components/select/storybook/select.stories.mdx +172 -0
- package/src/lib/components/select/types.ts +149 -0
- package/src/lib/components/select/utils.ts +101 -0
- package/src/lib/components/spinner/index.tsx +1 -0
- package/src/lib/components/spinner/spinner-size-flags.tsx +39 -0
- package/src/lib/components/spinner/spinner.test.tsx +31 -0
- package/src/lib/components/spinner/spinner.tsx +54 -0
- package/src/lib/components/spinner/stories/components.tsx +39 -0
- package/src/lib/components/spinner/stories/spinner.stories.mdx +35 -0
- package/src/lib/components/tabs/components/index.ts +1 -0
- package/src/lib/components/tabs/components/tab.tsx +85 -0
- package/src/lib/components/tabs/index.tsx +1 -0
- package/src/lib/components/tabs/storybook/components.tsx +317 -0
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +105 -0
- package/src/lib/components/tabs/tabs.test.tsx +86 -0
- package/src/lib/components/tabs/tabs.tsx +115 -0
- package/src/lib/components/tag/components/close-button.tsx +85 -0
- package/src/lib/components/tag/components/index.ts +2 -0
- package/src/lib/components/tag/components/tag-label.tsx +45 -0
- package/src/lib/components/tag/index.tsx +1 -0
- package/src/lib/components/tag/stories/components.tsx +86 -0
- package/src/lib/components/tag/stories/tag.stories.mdx +42 -0
- package/src/lib/components/tag/tag.test.tsx +36 -0
- package/src/lib/components/tag/tag.tsx +33 -0
- package/src/lib/components/thumbnail/index.tsx +1 -0
- package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +44 -0
- package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +41 -0
- package/src/lib/components/thumbnail/thumbnail.test.tsx +51 -0
- package/src/lib/components/thumbnail/thumbnail.tsx +44 -0
- package/src/lib/components/tooltip/index.tsx +1 -0
- package/src/lib/components/tooltip/stories/components.tsx +224 -0
- package/src/lib/components/tooltip/stories/tooltip.stories.mdx +63 -0
- package/src/lib/components/tooltip/tooltip.test.tsx +22 -0
- package/src/lib/components/tooltip/tooltip.tsx +179 -0
- package/src/lib/components/tree-view/components/tree-node.tsx +203 -0
- package/src/lib/components/tree-view/helper.tsx +171 -0
- package/src/lib/components/tree-view/index.ts +2 -0
- package/src/lib/components/tree-view/stories/components.tsx +640 -0
- package/src/lib/components/tree-view/stories/tree-view.stories.mdx +127 -0
- package/src/lib/components/tree-view/tree-view.test.tsx +146 -0
- package/src/lib/components/tree-view/tree-view.tsx +168 -0
- package/src/lib/components/tree-view/types.tsx +70 -0
- package/src/lib/components/typography/index.ts +1 -0
- package/src/lib/components/typography/storybook/components.tsx +288 -0
- package/src/lib/components/typography/storybook/typography.stories.mdx +90 -0
- package/src/lib/components/typography/typography.test.tsx +97 -0
- package/src/lib/components/typography/typography.tsx +99 -0
- package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +123 -0
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +93 -0
- package/src/lib/foundations/color-system/base-palette/index.ts +1 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +85 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +231 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +160 -0
- package/src/lib/foundations/color-system/color-guidelines/index.ts +1 -0
- package/src/lib/foundations/color-system/components/color-sample.tsx +99 -0
- package/src/lib/foundations/color-system/components/index.ts +1 -0
- package/src/lib/foundations/color-system/index.ts +1 -0
- package/src/lib/foundations/index.ts +4 -0
- package/src/lib/foundations/shadows/components.tsx +59 -0
- package/src/lib/foundations/shadows/index.ts +1 -0
- package/src/lib/foundations/shadows/shadows.stories.mdx +71 -0
- package/src/lib/foundations/shadows/shadows.tsx +47 -0
- package/src/lib/foundations/spacing/index.ts +1 -0
- package/src/lib/foundations/spacing/spacing-guidelines.ts +37 -0
- package/src/lib/foundations/spacing/spacing.stories.mdx +51 -0
- package/src/lib/foundations/spacing/spacing.ts +18 -0
- package/src/lib/foundations/typography/constants.ts +25 -0
- package/src/lib/foundations/typography/fonts.ts +205 -0
- package/src/lib/foundations/typography/index.tsx +1 -0
- package/src/lib/foundations/typography/text-aspect-flags.ts +61 -0
- package/src/lib/foundations/typography/typography.tsx +102 -0
- package/src/lib/helpers/generic-types.ts +44 -0
- package/src/lib/helpers/index.ts +8 -0
- package/src/lib/helpers/isReactElementOfType.test.tsx +108 -0
- package/src/lib/helpers/isReactElementOfType.ts +42 -0
- package/src/lib/helpers/nothing.tsx +22 -0
- package/{lib/helpers/numbers.d.ts → src/lib/helpers/numbers.ts} +67 -50
- package/src/lib/helpers/safe-navigation.ts +57 -0
- package/src/lib/helpers/slots.tsx +126 -0
- package/src/lib/helpers/strings.test.ts +47 -0
- package/src/lib/helpers/strings.ts +16 -0
- package/src/lib/helpers/useInputElementState.ts +56 -0
- package/src/lib/helpers/useKeyDown.ts +17 -0
- package/tsconfig.json +35 -0
- package/tsconfig.lib.json +28 -0
- package/tsconfig.spec.json +21 -0
- package/index.d.ts +0 -2
- package/index.js +0 -11246
- package/lib/components/alert-banner/alert-banner.d.ts +0 -15
- package/lib/components/alert-banner/alert-level-flags.d.ts +0 -18
- package/lib/components/alert-banner/index.d.ts +0 -1
- package/lib/components/badge/badge-type-flags.d.ts +0 -18
- package/lib/components/badge/badge.d.ts +0 -5
- package/lib/components/badge/index.d.ts +0 -1
- package/lib/components/card/atoms/index.d.ts +0 -1
- package/lib/components/card/card.d.ts +0 -14
- package/lib/components/card/components/card-alert-banner-slot.d.ts +0 -6
- package/lib/components/card/components/card-controls-slot.d.ts +0 -5
- package/lib/components/card/components/card-section-slot.d.ts +0 -11
- package/lib/components/card/components/index.d.ts +0 -3
- package/lib/components/card/index.d.ts +0 -3
- package/lib/components/card/molecules/index.d.ts +0 -1
- package/lib/components/card/molecules/left-right-card.d.ts +0 -16
- package/lib/components/checkbox/checkbox.d.ts +0 -11
- package/lib/components/checkbox/helpers.d.ts +0 -12
- package/lib/components/checkbox/index.d.ts +0 -1
- package/lib/components/date-picker/components/custom-calendar.d.ts +0 -6
- package/lib/components/date-picker/components/index.d.ts +0 -1
- package/lib/components/date-picker/date-picker.d.ts +0 -4
- package/lib/components/date-picker/helpers/date-picker-factory.d.ts +0 -34
- package/lib/components/date-picker/index.d.ts +0 -1
- package/lib/components/divider/divider-type-flags.d.ts +0 -9
- package/lib/components/divider/divider.d.ts +0 -7
- package/lib/components/divider/index.d.ts +0 -1
- package/lib/components/flag/flag-size-flags.d.ts +0 -12
- package/lib/components/flag/flag.d.ts +0 -9
- package/lib/components/flag/flag.list.d.ts +0 -782
- package/lib/components/flag/index.d.ts +0 -1
- package/lib/components/icon/icon-list.d.ts +0 -132
- package/lib/components/icon/icon.d.ts +0 -131
- package/lib/components/icon/index.d.ts +0 -1
- package/lib/components/index.d.ts +0 -24
- package/lib/components/input-field/components/index.d.ts +0 -2
- package/lib/components/input-field/components/labeled-input.d.ts +0 -10
- package/lib/components/input-field/components/stepper.d.ts +0 -7
- package/lib/components/input-field/index.d.ts +0 -3
- package/lib/components/input-field/input-field.d.ts +0 -26
- package/lib/components/input-field/input-number.d.ts +0 -18
- package/lib/components/input-field/input-text.d.ts +0 -14
- package/lib/components/layout/flex.d.ts +0 -16
- package/lib/components/layout/grid-layout.d.ts +0 -11
- package/lib/components/layout/index.d.ts +0 -3
- package/lib/components/layout/left-right-layout.d.ts +0 -34
- package/lib/components/link/index.d.ts +0 -1
- package/lib/components/link/link.d.ts +0 -14
- package/lib/components/modal/index.d.ts +0 -3
- package/lib/components/modal/modal-base.d.ts +0 -28
- package/lib/components/modal/modal-destructive.d.ts +0 -11
- package/lib/components/modal/modal.d.ts +0 -13
- package/lib/components/molecules/avatar/avatar-size-flags.d.ts +0 -12
- package/lib/components/molecules/avatar/avatar.d.ts +0 -12
- package/lib/components/molecules/avatar/index.d.ts +0 -1
- package/lib/components/molecules/button/button-flags.d.ts +0 -44
- package/lib/components/molecules/button/button.d.ts +0 -12
- package/lib/components/molecules/button/index.d.ts +0 -1
- package/lib/components/molecules/index.d.ts +0 -3
- package/lib/components/molecules/input-checkbox/index.d.ts +0 -1
- package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +0 -8
- package/lib/components/organisms/choice-list/choice-list.d.ts +0 -9
- package/lib/components/organisms/choice-list/index.d.ts +0 -1
- package/lib/components/organisms/index.d.ts +0 -2
- package/lib/components/organisms/multi-choice-list/index.d.ts +0 -1
- package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +0 -11
- package/lib/components/radio-button/index.d.ts +0 -1
- package/lib/components/radio-button/radio-button.d.ts +0 -10
- package/lib/components/range-slider/components/bar-chart.d.ts +0 -8
- package/lib/components/range-slider/components/handle.d.ts +0 -12
- package/lib/components/range-slider/components/rail.d.ts +0 -9
- package/lib/components/range-slider/components/slider-component.d.ts +0 -12
- package/lib/components/range-slider/components/slider-inputs.d.ts +0 -14
- package/lib/components/range-slider/components/tick.d.ts +0 -10
- package/lib/components/range-slider/components/track.d.ts +0 -11
- package/lib/components/range-slider/index.d.ts +0 -2
- package/lib/components/range-slider/range-slider.d.ts +0 -15
- package/lib/components/range-slider/slider.d.ts +0 -11
- package/lib/components/range-slider/types.d.ts +0 -11
- package/lib/components/select/components/menu-container.d.ts +0 -3
- package/lib/components/select/components/menu-list.d.ts +0 -3
- package/lib/components/select/components/menu-row.d.ts +0 -9
- package/lib/components/select/components/menu.d.ts +0 -3
- package/lib/components/select/components/option.d.ts +0 -13
- package/lib/components/select/components/select-label.d.ts +0 -1
- package/lib/components/select/components/value-component-multi.d.ts +0 -4
- package/lib/components/select/components/value-component-single.d.ts +0 -4
- package/lib/components/select/components/value.d.ts +0 -4
- package/lib/components/select/index.d.ts +0 -3
- package/lib/components/select/select.d.ts +0 -10
- package/lib/components/select/types.d.ts +0 -133
- package/lib/components/select/utils.d.ts +0 -15
- package/lib/components/spinner/spinner-size-flags.d.ts +0 -10
- package/lib/components/spinner/spinner.d.ts +0 -9
- package/lib/components/tabs/components/index.d.ts +0 -1
- package/lib/components/tabs/components/tab.d.ts +0 -8
- package/lib/components/tabs/index.d.ts +0 -1
- package/lib/components/tabs/tabs.d.ts +0 -16
- package/lib/components/tag/components/close-button.d.ts +0 -8
- package/lib/components/tag/components/index.d.ts +0 -2
- package/lib/components/tag/components/tag-label.d.ts +0 -8
- package/lib/components/tag/index.d.ts +0 -1
- package/lib/components/tag/tag.d.ts +0 -10
- package/lib/components/thumbnail/index.d.ts +0 -1
- package/lib/components/thumbnail/thumbnail-size-flags.d.ts +0 -10
- package/lib/components/thumbnail/thumbnail.d.ts +0 -10
- package/lib/components/tooltip/index.d.ts +0 -1
- package/lib/components/tooltip/tooltip.d.ts +0 -26
- package/lib/components/tree-view/components/tree-node.d.ts +0 -3
- package/lib/components/tree-view/helper.d.ts +0 -12
- package/lib/components/tree-view/index.d.ts +0 -2
- package/lib/components/tree-view/tree-view.d.ts +0 -3
- package/lib/components/tree-view/types.d.ts +0 -63
- package/lib/components/typography/index.d.ts +0 -1
- package/lib/components/typography/typography.d.ts +0 -24
- package/lib/foundations/color-system/base-palette/base-palette.d.ts +0 -76
- package/lib/foundations/color-system/base-palette/index.d.ts +0 -1
- package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +0 -133
- package/lib/foundations/color-system/color-guidelines/index.d.ts +0 -1
- package/lib/foundations/color-system/components/color-sample.d.ts +0 -17
- package/lib/foundations/color-system/components/index.d.ts +0 -1
- package/lib/foundations/color-system/index.d.ts +0 -1
- package/lib/foundations/index.d.ts +0 -4
- package/lib/foundations/shadows/components.d.ts +0 -8
- package/lib/foundations/shadows/index.d.ts +0 -1
- package/lib/foundations/shadows/shadows.d.ts +0 -8
- package/lib/foundations/spacing/index.d.ts +0 -1
- package/lib/foundations/spacing/spacing-guidelines.d.ts +0 -33
- package/lib/foundations/spacing/spacing.d.ts +0 -18
- package/lib/foundations/typography/constants.d.ts +0 -22
- package/lib/foundations/typography/fonts.d.ts +0 -1
- package/lib/foundations/typography/index.d.ts +0 -1
- package/lib/foundations/typography/text-aspect-flags.d.ts +0 -19
- package/lib/foundations/typography/typography.d.ts +0 -24
- package/lib/helpers/generic-types.d.ts +0 -21
- package/lib/helpers/index.d.ts +0 -8
- package/lib/helpers/isReactElementOfType.d.ts +0 -8
- package/lib/helpers/nothing.d.ts +0 -10
- package/lib/helpers/safe-navigation.d.ts +0 -17
- package/lib/helpers/slots.d.ts +0 -17
- package/lib/helpers/strings.d.ts +0 -1
- package/lib/helpers/useInputElementState.d.ts +0 -30
- package/lib/helpers/useKeyDown.d.ts +0 -1
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { Actions, Borders, Surface, Text } from 'foundations/color-system'
|
|
2
|
+
import { Margin, Padding } from 'foundations/spacing'
|
|
3
|
+
import styled from 'styled-components'
|
|
4
|
+
import { is } from '@helpers'
|
|
5
|
+
import {
|
|
6
|
+
Display,
|
|
7
|
+
Heading1,
|
|
8
|
+
Heading2,
|
|
9
|
+
Heading3,
|
|
10
|
+
Heading4,
|
|
11
|
+
Body,
|
|
12
|
+
BodyLarge,
|
|
13
|
+
Caption,
|
|
14
|
+
Label,
|
|
15
|
+
} from '../typography'
|
|
16
|
+
import { Typography } from '@foundations'
|
|
17
|
+
import { Flex } from 'components/layout'
|
|
18
|
+
import { useState } from 'react'
|
|
19
|
+
import { StoryComponent } from '@stories'
|
|
20
|
+
|
|
21
|
+
const Table = styled.div`
|
|
22
|
+
background: ${Surface.Default};
|
|
23
|
+
border-radius: 6px;
|
|
24
|
+
`
|
|
25
|
+
|
|
26
|
+
const Row = styled.div<{ gray?: boolean }>`
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: row;
|
|
29
|
+
background-color: ${(props) => (is(props.gray) ? Surface.Default.Subdued : Surface.Default)};
|
|
30
|
+
border-bottom: 1px solid ${Borders.Default.Subdued};
|
|
31
|
+
`
|
|
32
|
+
|
|
33
|
+
const Column = styled.div`
|
|
34
|
+
${Typography.Body}
|
|
35
|
+
display: flex;
|
|
36
|
+
padding: ${Padding.l};
|
|
37
|
+
flex: 1;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
justify-content: space-between;
|
|
41
|
+
&:nth-child(1) {
|
|
42
|
+
flex: 2;
|
|
43
|
+
}
|
|
44
|
+
`
|
|
45
|
+
|
|
46
|
+
const HeaderColumn = styled(Column)`
|
|
47
|
+
color: ${Text.Subdued};
|
|
48
|
+
`
|
|
49
|
+
|
|
50
|
+
export const Button = styled.div<{ critical?: boolean, primary?: boolean }>`
|
|
51
|
+
background: ${({ critical, primary }) => {
|
|
52
|
+
if (is(critical)) {
|
|
53
|
+
return Actions.Critical.Default
|
|
54
|
+
} else if (is(primary)) {
|
|
55
|
+
return Actions.Primary.Default
|
|
56
|
+
} else {
|
|
57
|
+
return Actions.Secondary.Default
|
|
58
|
+
}
|
|
59
|
+
}};
|
|
60
|
+
border: 1px solid ${({ critical, primary }) => {
|
|
61
|
+
if (is(critical)) {
|
|
62
|
+
return 'none'
|
|
63
|
+
} else if (is(primary)) {
|
|
64
|
+
return 'none'
|
|
65
|
+
} else {
|
|
66
|
+
return Borders.Default
|
|
67
|
+
}
|
|
68
|
+
}};
|
|
69
|
+
box-sizing: border-box;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: row;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
align-items: center;
|
|
76
|
+
padding: ${Padding.xs} ${Padding.m};
|
|
77
|
+
|
|
78
|
+
border-radius: 6px;
|
|
79
|
+
margin-right: ${Margin.s};
|
|
80
|
+
`
|
|
81
|
+
|
|
82
|
+
const Header = () => (
|
|
83
|
+
<Row>
|
|
84
|
+
<HeaderColumn><Label subdued>Typographic System</Label></HeaderColumn>
|
|
85
|
+
<HeaderColumn><Label subdued>Weight</Label></HeaderColumn>
|
|
86
|
+
<HeaderColumn><Label subdued>Size</Label></HeaderColumn>
|
|
87
|
+
<HeaderColumn><Label subdued>Line Height</Label></HeaderColumn>
|
|
88
|
+
<HeaderColumn><Label subdued>Spacing</Label></HeaderColumn>
|
|
89
|
+
</Row>
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
const toTextAspectProps = (aspect: string) => {
|
|
93
|
+
switch (aspect) {
|
|
94
|
+
case 'subdued': return { subdued: true }
|
|
95
|
+
case 'light': return { light: true }
|
|
96
|
+
case 'critical': return { critical: true }
|
|
97
|
+
case 'success': return { success: true }
|
|
98
|
+
case 'onPrimary': return { onPrimary: true }
|
|
99
|
+
case 'onCritical': return { onCritical: true }
|
|
100
|
+
default: return {}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const toButtonProps = (aspect: string) => {
|
|
105
|
+
switch (aspect) {
|
|
106
|
+
case 'onPrimary': return { primary: true }
|
|
107
|
+
case 'onCritical': return { critical: true }
|
|
108
|
+
default: return {}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export const TypographyTable: StoryComponent = () => {
|
|
113
|
+
const [aspect, setAspect] = useState('')
|
|
114
|
+
|
|
115
|
+
return (
|
|
116
|
+
<div>
|
|
117
|
+
<Flex>
|
|
118
|
+
<Button onClick={() => setAspect('default')}>
|
|
119
|
+
<Body>Default</Body>
|
|
120
|
+
</Button>
|
|
121
|
+
<Button onClick={() => setAspect('subdued')}>
|
|
122
|
+
<Body subdued>Subdued</Body>
|
|
123
|
+
</Button>
|
|
124
|
+
<Button onClick={() => setAspect('light')}>
|
|
125
|
+
<Body light>Light</Body>
|
|
126
|
+
</Button>
|
|
127
|
+
<Button onClick={() => setAspect('critical')}>
|
|
128
|
+
<Body critical>Critical</Body>
|
|
129
|
+
</Button>
|
|
130
|
+
<Button onClick={() => setAspect('success')}>
|
|
131
|
+
<Body success>Success</Body>
|
|
132
|
+
</Button>
|
|
133
|
+
<Button primary onClick={() => setAspect('onPrimary')}>
|
|
134
|
+
<Body onPrimary>OnPrimary</Body>
|
|
135
|
+
</Button>
|
|
136
|
+
<Button critical onClick={() => setAspect('onCritical')}>
|
|
137
|
+
<Body onCritical>OnCritical</Body>
|
|
138
|
+
</Button>
|
|
139
|
+
</Flex>
|
|
140
|
+
<Table>
|
|
141
|
+
<Header />
|
|
142
|
+
<Row gray>
|
|
143
|
+
<Column>
|
|
144
|
+
<Button {...toButtonProps(aspect)}>
|
|
145
|
+
<Display {...toTextAspectProps(aspect)}>Display1</Display>
|
|
146
|
+
</Button>
|
|
147
|
+
</Column>
|
|
148
|
+
<Column>Regular 400</Column>
|
|
149
|
+
<Column>36px (2.25rem)</Column>
|
|
150
|
+
<Column>44px</Column>
|
|
151
|
+
<Column>0 px</Column>
|
|
152
|
+
</Row>
|
|
153
|
+
<Row>
|
|
154
|
+
<Column>
|
|
155
|
+
<Button {...toButtonProps(aspect)}>
|
|
156
|
+
<Heading1 {...toTextAspectProps(aspect)}>Heading1</Heading1>
|
|
157
|
+
</Button>
|
|
158
|
+
</Column>
|
|
159
|
+
<Column>Semibold 600</Column>
|
|
160
|
+
<Column>28px (1.75rem)</Column>
|
|
161
|
+
<Column>32px</Column>
|
|
162
|
+
<Column>0 px</Column>
|
|
163
|
+
</Row>
|
|
164
|
+
<Row>
|
|
165
|
+
<Column>
|
|
166
|
+
<Button {...toButtonProps(aspect)}>
|
|
167
|
+
<Heading2 {...toTextAspectProps(aspect)}>Heading2</Heading2>
|
|
168
|
+
</Button>
|
|
169
|
+
</Column>
|
|
170
|
+
<Column>Semibold 600</Column>
|
|
171
|
+
<Column>20px (1.25rem)</Column>
|
|
172
|
+
<Column>28px</Column>
|
|
173
|
+
<Column>0 px</Column>
|
|
174
|
+
</Row>
|
|
175
|
+
<Row>
|
|
176
|
+
<Column>
|
|
177
|
+
<Button {...toButtonProps(aspect)}>
|
|
178
|
+
<Heading3 {...toTextAspectProps(aspect)}>Heading3</Heading3>
|
|
179
|
+
</Button>
|
|
180
|
+
</Column>
|
|
181
|
+
<Column>Semibold 600</Column>
|
|
182
|
+
<Column>16px (1 rem)</Column>
|
|
183
|
+
<Column>24px</Column>
|
|
184
|
+
<Column>0 px</Column>
|
|
185
|
+
</Row>
|
|
186
|
+
<Row>
|
|
187
|
+
<Column>
|
|
188
|
+
<Button {...toButtonProps(aspect)}>
|
|
189
|
+
<Heading4 {...toTextAspectProps(aspect)}>Heading4</Heading4>
|
|
190
|
+
</Button>
|
|
191
|
+
</Column>
|
|
192
|
+
<Column>Semibold 600</Column>
|
|
193
|
+
<Column>14px (0.875rem)</Column>
|
|
194
|
+
<Column>20px</Column>
|
|
195
|
+
<Column>0 px</Column>
|
|
196
|
+
</Row>
|
|
197
|
+
<Row gray>
|
|
198
|
+
<Column>
|
|
199
|
+
<Button {...toButtonProps(aspect)}>
|
|
200
|
+
<BodyLarge strong {...toTextAspectProps(aspect)}>BodyLarge/Strong</BodyLarge>
|
|
201
|
+
</Button>
|
|
202
|
+
</Column>
|
|
203
|
+
<Column>Semibold 600</Column>
|
|
204
|
+
<Column>18px (1.125rem)</Column>
|
|
205
|
+
<Column>28px</Column>
|
|
206
|
+
<Column>0 px</Column>
|
|
207
|
+
</Row>
|
|
208
|
+
<Row gray>
|
|
209
|
+
<Column>
|
|
210
|
+
<Button {...toButtonProps(aspect)}>
|
|
211
|
+
<BodyLarge {...toTextAspectProps(aspect)}>BodyLarge/Default</BodyLarge>
|
|
212
|
+
</Button>
|
|
213
|
+
</Column>
|
|
214
|
+
<Column>Regular 400</Column>
|
|
215
|
+
<Column>18px (1.125rem)</Column>
|
|
216
|
+
<Column>28px</Column>
|
|
217
|
+
<Column>0 px</Column>
|
|
218
|
+
</Row>
|
|
219
|
+
<Row gray>
|
|
220
|
+
<Column>
|
|
221
|
+
<Button {...toButtonProps(aspect)}>
|
|
222
|
+
<Body strong {...toTextAspectProps(aspect)}>Body Strong</Body>
|
|
223
|
+
</Button>
|
|
224
|
+
</Column>
|
|
225
|
+
<Column>Medium 500</Column>
|
|
226
|
+
<Column>14px (0.875rem)</Column>
|
|
227
|
+
<Column>20px</Column>
|
|
228
|
+
<Column>0 px</Column>
|
|
229
|
+
</Row>
|
|
230
|
+
<Row gray>
|
|
231
|
+
<Column>
|
|
232
|
+
<Button {...toButtonProps(aspect)}>
|
|
233
|
+
<Body {...toTextAspectProps(aspect)}>Body default</Body>
|
|
234
|
+
</Button>
|
|
235
|
+
</Column>
|
|
236
|
+
<Column>Regular 400</Column>
|
|
237
|
+
<Column>14px (0.875rem)</Column>
|
|
238
|
+
<Column>20px</Column>
|
|
239
|
+
<Column>0 px</Column>
|
|
240
|
+
</Row>
|
|
241
|
+
<Row gray>
|
|
242
|
+
<Column>
|
|
243
|
+
<Button {...toButtonProps(aspect)}>
|
|
244
|
+
<Caption {...toTextAspectProps(aspect)}>Caption</Caption>
|
|
245
|
+
</Button>
|
|
246
|
+
</Column>
|
|
247
|
+
<Column>Regular 400</Column>
|
|
248
|
+
<Column>13px (0.8125rem)</Column>
|
|
249
|
+
<Column>16px</Column>
|
|
250
|
+
<Column>0 px</Column>
|
|
251
|
+
</Row>
|
|
252
|
+
<Row>
|
|
253
|
+
<Column>
|
|
254
|
+
<Button {...toButtonProps(aspect)}>
|
|
255
|
+
<Label strong {...toTextAspectProps(aspect)}>Label/Strong</Label>
|
|
256
|
+
</Button>
|
|
257
|
+
</Column>
|
|
258
|
+
<Column>Medium 500</Column>
|
|
259
|
+
<Column>14px (0.875rem)</Column>
|
|
260
|
+
<Column>20px</Column>
|
|
261
|
+
<Column>0 px</Column>
|
|
262
|
+
</Row>
|
|
263
|
+
<Row>
|
|
264
|
+
<Column>
|
|
265
|
+
<Button {...toButtonProps(aspect)}>
|
|
266
|
+
<Label {...toTextAspectProps(aspect)}>Label/Default</Label>
|
|
267
|
+
</Button>
|
|
268
|
+
</Column>
|
|
269
|
+
<Column>Regular 400</Column>
|
|
270
|
+
<Column>14px (0.875rem)</Column>
|
|
271
|
+
<Column>20px</Column>
|
|
272
|
+
<Column>0 px</Column>
|
|
273
|
+
</Row>
|
|
274
|
+
<Row>
|
|
275
|
+
<Column>
|
|
276
|
+
<Button {...toButtonProps(aspect)}>
|
|
277
|
+
<Label subtle {...toTextAspectProps(aspect)}>Label/Subtle</Label>
|
|
278
|
+
</Button>
|
|
279
|
+
</Column>
|
|
280
|
+
<Column>Regular 400</Column>
|
|
281
|
+
<Column>13px (0.8125rem)</Column>
|
|
282
|
+
<Column>16px</Column>
|
|
283
|
+
<Column>0 px</Column>
|
|
284
|
+
</Row>
|
|
285
|
+
</Table>
|
|
286
|
+
</div>
|
|
287
|
+
)
|
|
288
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Canvas, Meta } from '@storybook/addon-docs';
|
|
2
|
+
import { TypographyTable, Button } from './components'
|
|
3
|
+
import { Heading3, Label, Body } from '../typography'
|
|
4
|
+
|
|
5
|
+
<Meta title="Components/Typography" />
|
|
6
|
+
|
|
7
|
+
# Typography
|
|
8
|
+
|
|
9
|
+
All text that appears in the front-end should be wrapped by one of these components.
|
|
10
|
+
|
|
11
|
+
## Basic usage
|
|
12
|
+
|
|
13
|
+
When you are building from a mockup you will be clicking on elements and checking in the figma inspector to see what components you should use, and how you should configure them. With typography there are two relevant sections: Typography and Color.
|
|
14
|
+
|
|
15
|
+
### Typography: Ag
|
|
16
|
+
|
|
17
|
+
When you see text in a mockup you can click that text to see what kind of typographic component it represents. In the typography section of the figma inspector you will see a label Ag with a value like "Label Default" or "Label Strong" or "Label Subtle". This is the name of the component you should use, and whether you should set the strong or subtle flag.
|
|
18
|
+
|
|
19
|
+
For example if you see "Ag Heading3".
|
|
20
|
+
|
|
21
|
+
<Canvas>
|
|
22
|
+
<Heading3>Heading 3, no modifiers</Heading3>
|
|
23
|
+
</Canvas>
|
|
24
|
+
|
|
25
|
+
If you see "Ag Label Strong" you should use a Label with strong set.
|
|
26
|
+
|
|
27
|
+
<Canvas>
|
|
28
|
+
<Label>Label default</Label>
|
|
29
|
+
<Label subtle>Label Subtle</Label>
|
|
30
|
+
<Label strong>Label Strong</Label>
|
|
31
|
+
</Canvas>
|
|
32
|
+
|
|
33
|
+
### Colors: Text
|
|
34
|
+
|
|
35
|
+
Below the Typography section in the figma inspector you will see the Colors section. Here you will see a color swatch and a label like "Text/Default" or "Text/Subdued". In most cases you will see "Text/Default" and can proceed without any modifiers. When you do see a modifier you will be able to use it as is to configure your component.
|
|
36
|
+
|
|
37
|
+
<Canvas>
|
|
38
|
+
<Button><Body>Text/Default</Body></Button>
|
|
39
|
+
<Button><Body subdued>Text/Subdued</Body></Button>
|
|
40
|
+
<Button><Body light>Text/Light</Body></Button>
|
|
41
|
+
<Button primary><Body onPrimary>Text/onPrimary</Body></Button>
|
|
42
|
+
<Button critical><Body onCritical>Text/onCritical</Body></Button>
|
|
43
|
+
</Canvas>
|
|
44
|
+
|
|
45
|
+
In addition there are two less commonly used text colors: Text/Critical and Text/Success. These appear from time to time in mockups to indicate some problems (like an invalid field) or some big win (like a discount on a price).
|
|
46
|
+
|
|
47
|
+
<Canvas>
|
|
48
|
+
<Body critical>Text/Critical</Body>
|
|
49
|
+
<Body success>Text/Success</Body>
|
|
50
|
+
</Canvas>
|
|
51
|
+
|
|
52
|
+
## Recommended usage with i18n
|
|
53
|
+
|
|
54
|
+
In practice you will not be using these typographic components without i18n. In our previous projects i18n has usually looked something like this:
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
<Body critical><T.Trans>YOU_LOSE</T.Trans></Body>
|
|
58
|
+
<Body success><T.Trans>YOU_WIN</T.Trans></Body>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Or like this,
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
<Body critical>{t(YOU_LOSE)}</Body>
|
|
65
|
+
<Body success>{t(YOU_WIN)}</Body>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Instead we recommend wrapping the typographic components with i18n helpers and re-exporting them in your project.
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
// my/typography.tsx
|
|
72
|
+
import { Body as _Body, IBodyProps } from '@edvisor/product-language'
|
|
73
|
+
import { useI18n } from 'your-i18n-library'
|
|
74
|
+
|
|
75
|
+
// something like this:
|
|
76
|
+
export const Body = (props: IBodyProps) => {
|
|
77
|
+
const { t } = useI18n()
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<_Body {...props}>{t(props.children)}</_Body>
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// then you can use it like this:
|
|
85
|
+
<Body success>YOU_WIN</Body>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Typography Table
|
|
89
|
+
|
|
90
|
+
<TypographyTable />
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react'
|
|
2
|
+
import { FontWeight, LineHeight } from 'foundations/typography/constants'
|
|
3
|
+
import {
|
|
4
|
+
Display,
|
|
5
|
+
Heading1,
|
|
6
|
+
Heading2,
|
|
7
|
+
Heading3,
|
|
8
|
+
Heading4,
|
|
9
|
+
Body,
|
|
10
|
+
BodyLarge,
|
|
11
|
+
Caption,
|
|
12
|
+
Label,
|
|
13
|
+
} from './typography'
|
|
14
|
+
|
|
15
|
+
describe('Typography', () => {
|
|
16
|
+
it('should render Display successfully', () => {
|
|
17
|
+
const { baseElement } = render(<Display>My Text Here</Display>)
|
|
18
|
+
expect(baseElement).toBeTruthy()
|
|
19
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('should render Heading1 successfully', () => {
|
|
23
|
+
render(<Heading1>My Text Here</Heading1>)
|
|
24
|
+
|
|
25
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('should render Heading2 successfully', () => {
|
|
29
|
+
render(<Heading2>My Text Here</Heading2>)
|
|
30
|
+
|
|
31
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('should render Heading3 successfully', () => {
|
|
35
|
+
render(<Heading3>My Text Here</Heading3>)
|
|
36
|
+
|
|
37
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('should render Heading4 successfully', () => {
|
|
41
|
+
render(<Heading4>My Text Here</Heading4>)
|
|
42
|
+
|
|
43
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('should render large successfully', () => {
|
|
47
|
+
render(<BodyLarge>My Text Here</BodyLarge>)
|
|
48
|
+
|
|
49
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
50
|
+
expect(screen.getByText('My Text Here')).toHaveStyle(`line-height: ${LineHeight.d}`)
|
|
51
|
+
expect(screen.getByText('My Text Here')).toHaveStyle(`font-weight: ${FontWeight.Regular}`)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('should render Body successfully', () => {
|
|
55
|
+
render(<Body>My Text Here</Body>)
|
|
56
|
+
|
|
57
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('should render Subdued successfully', () => {
|
|
61
|
+
render(<Body subdued>My Text Here</Body>)
|
|
62
|
+
|
|
63
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('should render Light successfully', () => {
|
|
67
|
+
render(<Body light>My Text Here</Body>)
|
|
68
|
+
|
|
69
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
it('should render White successfully', () => {
|
|
73
|
+
render(<Body onPrimary>My Text Here</Body>)
|
|
74
|
+
|
|
75
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('should render Caption successfully', () => {
|
|
79
|
+
render(<Caption>My Text Here</Caption>)
|
|
80
|
+
|
|
81
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('should render Label successfully', () => {
|
|
85
|
+
render(<Label>My Text Here</Label>)
|
|
86
|
+
|
|
87
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
it('should render Label Strong successfully', () => {
|
|
91
|
+
render(<Label strong>My Text Here</Label>)
|
|
92
|
+
|
|
93
|
+
expect(screen.getByText('My Text Here')).toBeTruthy()
|
|
94
|
+
expect(screen.getByText('My Text Here')).toHaveStyle(`line-height: ${LineHeight.b}`)
|
|
95
|
+
expect(screen.getByText('My Text Here')).toHaveStyle(`font-weight: ${FontWeight.Medium}`)
|
|
96
|
+
})
|
|
97
|
+
})
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react'
|
|
2
|
+
import styled from 'styled-components'
|
|
3
|
+
import { Typography, Margin, IBodyProps, ILabelProps } from '@foundations'
|
|
4
|
+
import { FC, PropsWithChildren } from '@helpers'
|
|
5
|
+
import { ITextAspectProps, ITransientTextAspectProps } from 'foundations/typography/text-aspect-flags'
|
|
6
|
+
|
|
7
|
+
export type ITextComponentProps = ITextAspectProps & { emphasis?: boolean } & HTMLAttributes<HTMLElement> & PropsWithChildren
|
|
8
|
+
type ITransientTextComponentProps = ITransientTextAspectProps & { $emphasis?: boolean } & HTMLAttributes<HTMLElement>
|
|
9
|
+
|
|
10
|
+
function toTransientProps (props: ITextComponentProps): ITransientTextComponentProps {
|
|
11
|
+
const { onCritical, onPrimary, emphasis, children, ...rest } = props
|
|
12
|
+
|
|
13
|
+
return {
|
|
14
|
+
...rest,
|
|
15
|
+
$onCritical: onCritical,
|
|
16
|
+
$onPrimary: onPrimary,
|
|
17
|
+
$emphasis: emphasis,
|
|
18
|
+
} as unknown as ITransientTextComponentProps
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const DISPLAY = styled.div<ITransientTextComponentProps>`
|
|
22
|
+
${Typography.Display};
|
|
23
|
+
`
|
|
24
|
+
|
|
25
|
+
export const Display: FC<ITextComponentProps> = (props) => {
|
|
26
|
+
return <DISPLAY {...toTransientProps(props)}>{props.children}</DISPLAY>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const HEADING1 = styled.h1<ITransientTextComponentProps>`
|
|
30
|
+
${Typography.Heading1};
|
|
31
|
+
margin: ${Margin.none};
|
|
32
|
+
margin-bottom: ${Margin.l};
|
|
33
|
+
`
|
|
34
|
+
|
|
35
|
+
export const Heading1: FC<ITextComponentProps> = (props) => {
|
|
36
|
+
return <HEADING1 {...toTransientProps(props)}>{props.children}</HEADING1>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const HEADING2 = styled.h2<ITransientTextComponentProps>`
|
|
40
|
+
${Typography.Heading2};
|
|
41
|
+
margin: ${Margin.none};
|
|
42
|
+
margin-bottom: ${Margin.m};
|
|
43
|
+
`
|
|
44
|
+
|
|
45
|
+
export const Heading2: FC<ITextComponentProps> = (props) => {
|
|
46
|
+
return <HEADING2 {...toTransientProps(props)}>{props.children}</HEADING2>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const HEADING3 = styled.h3<ITransientTextComponentProps>`
|
|
50
|
+
${Typography.Heading3};
|
|
51
|
+
margin: ${Margin.none};
|
|
52
|
+
margin-bottom: ${Margin.l};
|
|
53
|
+
`
|
|
54
|
+
|
|
55
|
+
export const Heading3: FC<ITextComponentProps> = (props) => {
|
|
56
|
+
return <HEADING3 {...toTransientProps(props)}>{props.children}</HEADING3>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const HEADING4 = styled.h4<ITransientTextComponentProps>`
|
|
60
|
+
${Typography.Heading4};
|
|
61
|
+
margin: ${Margin.none};
|
|
62
|
+
margin-bottom: ${Margin.m};
|
|
63
|
+
`
|
|
64
|
+
|
|
65
|
+
export const Heading4: FC<ITextComponentProps> = (props) => {
|
|
66
|
+
return <HEADING4 {...toTransientProps(props)}>{props.children}</HEADING4>
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const BODY_LARGE = styled.div<ITransientTextComponentProps & IBodyProps>`
|
|
70
|
+
${Typography.BodyLarge};
|
|
71
|
+
`
|
|
72
|
+
|
|
73
|
+
export const BodyLarge: FC<ITextComponentProps & IBodyProps> = (props) => {
|
|
74
|
+
return <BODY_LARGE {...toTransientProps(props)}>{props.children}</BODY_LARGE>
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const BODY = styled.div<ITransientTextComponentProps & IBodyProps>`
|
|
78
|
+
${Typography.Body};
|
|
79
|
+
`
|
|
80
|
+
|
|
81
|
+
export const Body: FC<ITextComponentProps & IBodyProps> = (props) => {
|
|
82
|
+
return <BODY {...toTransientProps(props)}>{props.children}</BODY>
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export const CAPTION = styled.div<ITransientTextComponentProps>`
|
|
86
|
+
${Typography.Caption};
|
|
87
|
+
`
|
|
88
|
+
|
|
89
|
+
export const Caption: FC<ITextComponentProps> = (props) => {
|
|
90
|
+
return <CAPTION {...toTransientProps(props)}>{props.children}</CAPTION>
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export const LABEL = styled.div<ITransientTextComponentProps & ILabelProps>`
|
|
94
|
+
${Typography.Label};
|
|
95
|
+
`
|
|
96
|
+
|
|
97
|
+
export const Label: FC<ITextComponentProps & ILabelProps> = (props) => {
|
|
98
|
+
return <LABEL {...toTransientProps(props)}>{props.children}</LABEL>
|
|
99
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Card, gridLayoutGenerator, leftRightLayoutGenerator } from '@components'
|
|
2
|
+
import { FC } from '@helpers'
|
|
3
|
+
import { BLUE, BRAND, ColorPalette, GRAY, GREEN, ORANGE, RED, SHADES } from './base-palette'
|
|
4
|
+
import { ColorRectangle } from '../components'
|
|
5
|
+
import { StoryComponent, talesOf } from '@stories'
|
|
6
|
+
|
|
7
|
+
const Story: StoryComponent = () => {
|
|
8
|
+
return (
|
|
9
|
+
<Card
|
|
10
|
+
heading={'Color System: Base Palette'}
|
|
11
|
+
>
|
|
12
|
+
<Card.Section>
|
|
13
|
+
<Hue
|
|
14
|
+
colorName={'Gray'}
|
|
15
|
+
colorPalette={GRAY}
|
|
16
|
+
description={
|
|
17
|
+
'These colors are used as supporting colors in backgrounds, text colors, seperators, modals, etc.'
|
|
18
|
+
}
|
|
19
|
+
/>
|
|
20
|
+
</Card.Section>
|
|
21
|
+
<Card.Section>
|
|
22
|
+
<Hue
|
|
23
|
+
colorName={'Blue'}
|
|
24
|
+
colorPalette={BLUE}
|
|
25
|
+
description={
|
|
26
|
+
'These colors are used as across all the interactive elements such as CTAs, links, active states, etc.'
|
|
27
|
+
}
|
|
28
|
+
/>
|
|
29
|
+
</Card.Section>
|
|
30
|
+
<Card.Section>
|
|
31
|
+
<Hue
|
|
32
|
+
colorName={'Green'}
|
|
33
|
+
colorPalette={GREEN}
|
|
34
|
+
description={
|
|
35
|
+
'These colors are used to depict the emotion of positivity. Generally used across success and complete states.'
|
|
36
|
+
}
|
|
37
|
+
/>
|
|
38
|
+
</Card.Section>
|
|
39
|
+
<Card.Section>
|
|
40
|
+
<Hue
|
|
41
|
+
colorName={'Orange'}
|
|
42
|
+
colorPalette={ORANGE}
|
|
43
|
+
description={
|
|
44
|
+
'These colors are used to depict the emotion of caution. Generally used across warning states.'
|
|
45
|
+
}
|
|
46
|
+
/>
|
|
47
|
+
</Card.Section>
|
|
48
|
+
<Card.Section>
|
|
49
|
+
<Hue
|
|
50
|
+
colorName={'Red'}
|
|
51
|
+
colorPalette={RED}
|
|
52
|
+
description={
|
|
53
|
+
'These colors decpict the emotion of negativity. Generally used across critical or destructive states.'
|
|
54
|
+
}
|
|
55
|
+
/>
|
|
56
|
+
</Card.Section>
|
|
57
|
+
<Card.Section>
|
|
58
|
+
<Hue
|
|
59
|
+
colorName={'Shades'}
|
|
60
|
+
colorPalette={SHADES}
|
|
61
|
+
description={
|
|
62
|
+
'White is generally used to color text on surfaces such as primary buttons. Various opacities of black are used for shadows.'
|
|
63
|
+
}
|
|
64
|
+
/>
|
|
65
|
+
</Card.Section>
|
|
66
|
+
<Card.Section>
|
|
67
|
+
<Hue
|
|
68
|
+
colorName={'Brand'}
|
|
69
|
+
colorPalette={BRAND}
|
|
70
|
+
description={
|
|
71
|
+
'Edvisor brand color.'
|
|
72
|
+
}
|
|
73
|
+
/>
|
|
74
|
+
</Card.Section>
|
|
75
|
+
</Card>
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const { Layout } = leftRightLayoutGenerator()
|
|
80
|
+
|
|
81
|
+
interface IHueProps {
|
|
82
|
+
colorName: string
|
|
83
|
+
colorPalette: ColorPalette
|
|
84
|
+
description: string
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** a "hue" is a color like "green" or "red" without saturation or value */
|
|
88
|
+
const Hue: FC<IHueProps> = (props) => {
|
|
89
|
+
return (
|
|
90
|
+
<Layout>
|
|
91
|
+
<Layout.Left>
|
|
92
|
+
<Layout.HeadingText>{props.colorName}</Layout.HeadingText>
|
|
93
|
+
<Layout.HelpText>{props.description}</Layout.HelpText>
|
|
94
|
+
</Layout.Left>
|
|
95
|
+
<Layout.Right>
|
|
96
|
+
<Palette colors={props.colorPalette} />
|
|
97
|
+
</Layout.Right>
|
|
98
|
+
</Layout>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const { Grid } = gridLayoutGenerator({
|
|
103
|
+
columns: 5,
|
|
104
|
+
rows: 2,
|
|
105
|
+
columnGutter: 16,
|
|
106
|
+
rowGutter: 24,
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
interface IPaletteProps {
|
|
110
|
+
colors: ColorPalette
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const Palette: FC<IPaletteProps> = (props) => {
|
|
114
|
+
return (
|
|
115
|
+
<Grid>
|
|
116
|
+
{Object.entries(props.colors).map(([name, hex]) =>
|
|
117
|
+
<ColorRectangle key={hex} name={name} hex={hex}/>
|
|
118
|
+
)}
|
|
119
|
+
</Grid>
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
talesOf(__filename, module, Story)
|