@edvisor/product-language 0.3.0 → 0.4.0
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/index.d.ts +2 -0
- package/index.js +9374 -0
- package/lib/components/alert-banner/alert-banner.d.ts +11 -0
- package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
- package/lib/components/alert-banner/index.d.ts +1 -0
- package/lib/components/badge/badge-type-flags.d.ts +18 -0
- package/lib/components/badge/badge.d.ts +5 -0
- package/lib/components/badge/index.d.ts +1 -0
- package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
- package/lib/components/card/atoms/index.d.ts +1 -0
- package/lib/components/card/card.d.ts +14 -0
- package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
- package/lib/components/card/components/card-controls-slot.d.ts +4 -0
- package/lib/components/card/components/card-section-slot.d.ts +11 -0
- package/lib/components/card/components/index.d.ts +3 -0
- package/lib/components/card/index.d.ts +2 -0
- package/lib/components/card/molecules/index.d.ts +1 -0
- package/lib/components/card/molecules/left-right-card.d.ts +16 -0
- package/lib/components/checkbox/checkbox.d.ts +10 -0
- package/lib/components/checkbox/helpers.d.ts +12 -0
- package/lib/components/checkbox/index.d.ts +1 -0
- package/lib/components/divider/divider-type-flags.d.ts +9 -0
- package/lib/components/divider/divider.d.ts +7 -0
- package/lib/components/divider/index.d.ts +1 -0
- package/lib/components/flag/flag-size-flags.d.ts +12 -0
- package/lib/components/flag/flag.d.ts +9 -0
- package/lib/components/flag/flag.list.d.ts +781 -0
- package/lib/components/flag/index.d.ts +1 -0
- package/lib/components/icon/icon-list.d.ts +131 -0
- package/lib/components/icon/icon.d.ts +131 -0
- package/lib/components/icon/index.d.ts +1 -0
- package/lib/components/index.d.ts +18 -0
- package/lib/components/input-field/components/index.d.ts +2 -0
- package/lib/components/input-field/components/labeled-input.d.ts +10 -0
- package/lib/components/input-field/components/stepper.d.ts +7 -0
- package/lib/components/input-field/index.d.ts +3 -0
- package/lib/components/input-field/input-field.d.ts +25 -0
- package/lib/components/input-field/input-number.d.ts +18 -0
- package/lib/components/input-field/input-text.d.ts +14 -0
- package/lib/components/layout/flex.d.ts +16 -0
- package/lib/components/layout/grid-layout.d.ts +11 -0
- package/lib/components/layout/index.d.ts +3 -0
- package/lib/components/layout/left-right-layout.d.ts +34 -0
- package/lib/components/link/index.d.ts +1 -0
- package/lib/components/link/link.d.ts +14 -0
- package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
- package/lib/components/molecules/avatar/avatar.d.ts +12 -0
- package/lib/components/molecules/avatar/index.d.ts +1 -0
- package/lib/components/molecules/button/button-flags.d.ts +44 -0
- package/lib/components/molecules/button/button.d.ts +12 -0
- package/lib/components/molecules/button/index.d.ts +1 -0
- package/lib/components/molecules/index.d.ts +3 -0
- package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
- package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
- package/lib/components/organisms/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
- package/lib/components/select/components/menu-container.d.ts +3 -0
- package/lib/components/select/components/menu-row.d.ts +9 -0
- package/lib/components/select/components/menu.d.ts +2 -0
- package/lib/components/select/components/option.d.ts +10 -0
- package/lib/components/select/components/select-label.d.ts +1 -0
- package/lib/components/select/components/value-component-multi.d.ts +3 -0
- package/lib/components/select/components/value-component-single.d.ts +4 -0
- package/lib/components/select/components/value.d.ts +4 -0
- package/lib/components/select/index.d.ts +1 -0
- package/lib/components/select/select.d.ts +9 -0
- package/lib/components/select/types.d.ts +124 -0
- package/lib/components/select/utils.d.ts +15 -0
- package/lib/components/spinner/index.d.ts +1 -0
- package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
- package/lib/components/spinner/spinner.d.ts +9 -0
- package/lib/components/tabs/components/index.d.ts +1 -0
- package/lib/components/tabs/components/tab.d.ts +7 -0
- package/lib/components/tabs/index.d.ts +1 -0
- package/lib/components/tabs/tabs.d.ts +15 -0
- package/lib/components/tag/components/close-button.d.ts +8 -0
- package/lib/components/tag/components/index.d.ts +2 -0
- package/lib/components/tag/components/tag-label.d.ts +8 -0
- package/lib/components/tag/index.d.ts +1 -0
- package/lib/components/tag/tag.d.ts +10 -0
- package/lib/components/thumbnail/index.d.ts +1 -0
- package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
- package/lib/components/thumbnail/thumbnail.d.ts +10 -0
- package/lib/components/typography/index.d.ts +1 -0
- package/lib/components/typography/typography.d.ts +24 -0
- package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
- package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
- package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
- package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
- package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
- package/lib/foundations/color-system/components/index.d.ts +1 -0
- package/lib/foundations/color-system/index.d.ts +1 -0
- package/lib/foundations/index.d.ts +4 -0
- package/lib/foundations/shadows/components.d.ts +8 -0
- package/lib/foundations/shadows/index.d.ts +1 -0
- package/lib/foundations/shadows/shadows.d.ts +8 -0
- package/lib/foundations/spacing/index.d.ts +1 -0
- package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
- package/lib/foundations/spacing/spacing.d.ts +18 -0
- package/lib/foundations/typography/constants.d.ts +22 -0
- package/lib/foundations/typography/fonts.d.ts +1 -0
- package/lib/foundations/typography/index.d.ts +1 -0
- package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
- package/lib/foundations/typography/typography.d.ts +24 -0
- package/lib/helpers/generic-types.d.ts +21 -0
- package/lib/helpers/index.d.ts +6 -0
- package/lib/helpers/nothing.d.ts +8 -0
- package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -67
- package/lib/helpers/safe-navigation.d.ts +15 -0
- package/lib/helpers/slots.d.ts +23 -0
- package/lib/helpers/strings.d.ts +1 -0
- package/package.json +12 -3
- package/.babelrc +0 -12
- package/.eslintrc.json +0 -147
- package/.storybook/main.js +0 -57
- package/.storybook/manager.js +0 -7
- package/.storybook/preview.js +0 -15
- package/.storybook/tsconfig.json +0 -30
- package/jest.config.ts +0 -15
- package/jest.setup.ts +0 -2
- package/project.json +0 -96
- package/release-it.json +0 -18
- package/src/README.md +0 -61
- package/src/assets/svg/example_icon.svg +0 -3
- package/src/assets/svg/example_icon_white.svg +0 -3
- package/src/assets/svg/spinner.svg +0 -3
- package/src/assets/svg/spinner_white.svg +0 -3
- package/src/helpers/index.ts +0 -4
- package/src/helpers/playground.ts +0 -16
- package/src/helpers/talesOf.tsx +0 -42
- package/src/index.ts +0 -2
- package/src/lib/components/README.md +0 -49
- package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
- package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
- package/src/lib/components/alert-banner/index.ts +0 -1
- package/src/lib/components/badge/badge-type-flags.ts +0 -72
- package/src/lib/components/badge/badge.test.tsx +0 -29
- package/src/lib/components/badge/badge.tsx +0 -22
- package/src/lib/components/badge/index.ts +0 -1
- package/src/lib/components/badge/stories/badge.stories.mdx +0 -44
- package/src/lib/components/badge/stories/components.tsx +0 -49
- package/src/lib/components/card/atoms/index.ts +0 -1
- package/src/lib/components/card/card.test.tsx +0 -162
- package/src/lib/components/card/card.tsx +0 -78
- package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
- package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
- package/src/lib/components/card/components/card-section-slot.tsx +0 -51
- package/src/lib/components/card/components/index.ts +0 -3
- package/src/lib/components/card/index.ts +0 -2
- package/src/lib/components/card/molecules/index.ts +0 -1
- package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
- package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
- package/src/lib/components/card/storybook/card.stories.mdx +0 -100
- package/src/lib/components/card/storybook/components.tsx +0 -223
- package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
- package/src/lib/components/checkbox/checkbox.tsx +0 -63
- package/src/lib/components/checkbox/helpers.tsx +0 -100
- package/src/lib/components/checkbox/index.tsx +0 -1
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -57
- package/src/lib/components/checkbox/stories/components.tsx +0 -84
- package/src/lib/components/divider/divider-type-flags.tsx +0 -37
- package/src/lib/components/divider/divider.test.tsx +0 -34
- package/src/lib/components/divider/divider.tsx +0 -37
- package/src/lib/components/divider/index.tsx +0 -1
- package/src/lib/components/divider/stories/components.tsx +0 -13
- package/src/lib/components/divider/stories/divider.stories.mdx +0 -44
- package/src/lib/components/flag/flag-size-flags.tsx +0 -55
- package/src/lib/components/flag/flag.list.tsx +0 -788
- package/src/lib/components/flag/flag.test.tsx +0 -65
- package/src/lib/components/flag/flag.tsx +0 -97
- package/src/lib/components/flag/index.tsx +0 -1
- package/src/lib/components/flag/stories/components.tsx +0 -403
- package/src/lib/components/flag/stories/flag.stories.mdx +0 -48
- package/src/lib/components/flag/stories/playGround-select.tsx +0 -145
- package/src/lib/components/icon/icon-list.tsx +0 -135
- package/src/lib/components/icon/icon.test.tsx +0 -48
- package/src/lib/components/icon/icon.tsx +0 -181
- package/src/lib/components/icon/index.tsx +0 -1
- package/src/lib/components/icon/stories/components.tsx +0 -282
- package/src/lib/components/icon/stories/icon.stories.mdx +0 -65
- package/src/lib/components/index.ts +0 -19
- package/src/lib/components/input-field/components/index.ts +0 -2
- package/src/lib/components/input-field/components/labeled-input.tsx +0 -54
- package/src/lib/components/input-field/components/stepper.tsx +0 -60
- package/src/lib/components/input-field/index.ts +0 -6
- package/src/lib/components/input-field/input-field.test.tsx +0 -107
- package/src/lib/components/input-field/input-field.tsx +0 -126
- package/src/lib/components/input-field/input-number.tsx +0 -41
- package/src/lib/components/input-field/input-text.tsx +0 -30
- package/src/lib/components/input-field/storybook/components.tsx +0 -327
- package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
- package/src/lib/components/layout/flex.tsx +0 -22
- package/src/lib/components/layout/grid-layout.tsx +0 -40
- package/src/lib/components/layout/index.ts +0 -3
- package/src/lib/components/layout/left-right-layout.tsx +0 -67
- package/src/lib/components/link/index.ts +0 -1
- package/src/lib/components/link/link.test.tsx +0 -29
- package/src/lib/components/link/link.tsx +0 -56
- package/src/lib/components/link/storybook/link.stories.mdx +0 -52
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
- package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
- package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
- package/src/lib/components/molecules/avatar/index.tsx +0 -1
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -52
- package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
- package/src/lib/components/molecules/button/button-flags.tsx +0 -340
- package/src/lib/components/molecules/button/button.test.tsx +0 -77
- package/src/lib/components/molecules/button/button.tsx +0 -214
- package/src/lib/components/molecules/button/index.tsx +0 -1
- package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -105
- package/src/lib/components/molecules/button/stories/components.tsx +0 -84
- package/src/lib/components/molecules/index.ts +0 -3
- package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
- package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -49
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -53
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -49
- package/src/lib/components/organisms/index.ts +0 -1
- package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -52
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -124
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
- package/src/lib/components/spinner/index.tsx +0 -1
- package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
- package/src/lib/components/spinner/spinner.test.tsx +0 -31
- package/src/lib/components/spinner/spinner.tsx +0 -54
- package/src/lib/components/spinner/stories/components.tsx +0 -39
- package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -35
- package/src/lib/components/tabs/components/index.ts +0 -1
- package/src/lib/components/tabs/components/tab.tsx +0 -62
- package/src/lib/components/tabs/index.tsx +0 -1
- package/src/lib/components/tabs/storybook/components.tsx +0 -282
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +0 -97
- package/src/lib/components/tabs/tabs.test.tsx +0 -86
- package/src/lib/components/tabs/tabs.tsx +0 -101
- package/src/lib/components/tag/components/close-button.tsx +0 -85
- package/src/lib/components/tag/components/index.ts +0 -2
- package/src/lib/components/tag/components/tag-label.tsx +0 -44
- package/src/lib/components/tag/index.tsx +0 -1
- package/src/lib/components/tag/stories/components.tsx +0 -86
- package/src/lib/components/tag/stories/tag.stories.mdx +0 -42
- package/src/lib/components/tag/tag.test.tsx +0 -36
- package/src/lib/components/tag/tag.tsx +0 -33
- package/src/lib/components/thumbnail/index.tsx +0 -1
- package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
- package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
- package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
- package/src/lib/components/thumbnail/thumbnail.tsx +0 -45
- package/src/lib/components/typography/index.ts +0 -1
- package/src/lib/components/typography/storybook/components.tsx +0 -288
- package/src/lib/components/typography/storybook/typography.stories.mdx +0 -90
- package/src/lib/components/typography/typography.test.tsx +0 -97
- package/src/lib/components/typography/typography.tsx +0 -99
- package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -93
- package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -160
- package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
- package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
- package/src/lib/foundations/color-system/components/index.ts +0 -1
- package/src/lib/foundations/color-system/index.ts +0 -1
- package/src/lib/foundations/index.ts +0 -4
- package/src/lib/foundations/shadows/components.tsx +0 -59
- package/src/lib/foundations/shadows/index.ts +0 -1
- package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
- package/src/lib/foundations/shadows/shadows.tsx +0 -47
- package/src/lib/foundations/spacing/index.ts +0 -1
- package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
- package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
- package/src/lib/foundations/spacing/spacing.ts +0 -18
- package/src/lib/foundations/typography/constants.ts +0 -25
- package/src/lib/foundations/typography/fonts.ts +0 -205
- package/src/lib/foundations/typography/index.tsx +0 -1
- package/src/lib/foundations/typography/text-aspect-flags.ts +0 -61
- package/src/lib/foundations/typography/typography.tsx +0 -102
- package/src/lib/helpers/generic-types.ts +0 -44
- package/src/lib/helpers/index.ts +0 -6
- package/src/lib/helpers/nothing.tsx +0 -18
- package/src/lib/helpers/safe-navigation.ts +0 -44
- package/src/lib/helpers/slots.test.tsx +0 -98
- package/src/lib/helpers/slots.tsx +0 -157
- package/src/lib/helpers/strings.test.ts +0 -47
- package/src/lib/helpers/strings.ts +0 -16
- package/tsconfig.json +0 -35
- package/tsconfig.lib.json +0 -28
- package/tsconfig.spec.json +0 -21
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
|
|
3
|
-
import { Surface } from '@foundations'
|
|
4
|
-
import { CardPlayground } from '@stories'
|
|
5
|
-
|
|
6
|
-
import { leftRightLayoutGenerator } from 'components/layout'
|
|
7
|
-
import { Body, Heading3 } from 'components/typography'
|
|
8
|
-
import { InputField } from 'components/input-field'
|
|
9
|
-
|
|
10
|
-
import { Card } from '../card'
|
|
11
|
-
import { LeftRightCard } from '../molecules/left-right-card'
|
|
12
|
-
|
|
13
|
-
export const CardExample = () => (
|
|
14
|
-
<CardPlayground
|
|
15
|
-
code={`
|
|
16
|
-
<Card heading='Heading'>
|
|
17
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
18
|
-
</Card>
|
|
19
|
-
`}
|
|
20
|
-
providerProps={{
|
|
21
|
-
renderAsComponent: true,
|
|
22
|
-
scope: {
|
|
23
|
-
Card,
|
|
24
|
-
},
|
|
25
|
-
}}
|
|
26
|
-
/>
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
export const SectionsExample = () => (
|
|
30
|
-
<CardPlayground
|
|
31
|
-
code={`
|
|
32
|
-
<Card heading='Sections!'>
|
|
33
|
-
If you include section slots, plain children won't render.
|
|
34
|
-
<Card.Section heading='Subheading 1'>
|
|
35
|
-
This is a section.
|
|
36
|
-
</Card.Section>
|
|
37
|
-
<Card.Section heading='Subheading 2'>
|
|
38
|
-
This is another section.
|
|
39
|
-
</Card.Section>
|
|
40
|
-
</Card>
|
|
41
|
-
`}
|
|
42
|
-
providerProps={{
|
|
43
|
-
renderAsComponent: true,
|
|
44
|
-
scope: {
|
|
45
|
-
Card,
|
|
46
|
-
},
|
|
47
|
-
}}
|
|
48
|
-
/>
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
export const CardControlsExample = () => (
|
|
52
|
-
<CardPlayground
|
|
53
|
-
code={`
|
|
54
|
-
const handleCancel = () => alert('Cancel');
|
|
55
|
-
const handleConfirm = () => alert('Confirm');
|
|
56
|
-
|
|
57
|
-
<Card heading='Controls!'>
|
|
58
|
-
<Card.Controls>
|
|
59
|
-
<button onClick={handleCancel}>Cancel</button>
|
|
60
|
-
<button onClick={handleConfirm}>Confirm</button>
|
|
61
|
-
</Card.Controls>
|
|
62
|
-
Notice that the controls render below this text, even though they are above this text in the JSX. That's because Controls is a slot, it is only telling Card what we want to render, not where we want to render it.
|
|
63
|
-
</Card>
|
|
64
|
-
`}
|
|
65
|
-
providerProps={{
|
|
66
|
-
renderAsComponent: true,
|
|
67
|
-
scope: {
|
|
68
|
-
Card,
|
|
69
|
-
},
|
|
70
|
-
}}
|
|
71
|
-
/>
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
export const CardHeadingActionExample = () => (
|
|
75
|
-
<CardPlayground
|
|
76
|
-
code={`
|
|
77
|
-
<Card heading='Heading Actions!'>
|
|
78
|
-
If you include section slots, plain children won't render.
|
|
79
|
-
<Card.HeadingAction><button>Activate</button></Card.HeadingAction>
|
|
80
|
-
</Card>
|
|
81
|
-
`}
|
|
82
|
-
providerProps={{
|
|
83
|
-
renderAsComponent: true,
|
|
84
|
-
scope: {
|
|
85
|
-
Card,
|
|
86
|
-
},
|
|
87
|
-
}}
|
|
88
|
-
/>
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
export const SectionsHeadingActionsExample = () => (
|
|
92
|
-
<CardPlayground
|
|
93
|
-
code={`
|
|
94
|
-
<Card heading='Heading Actions'>
|
|
95
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
96
|
-
|
|
97
|
-
<Card.Section heading='Subheading 1'>
|
|
98
|
-
This is a section.
|
|
99
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
100
|
-
</Card.Section>
|
|
101
|
-
|
|
102
|
-
<Card.Section heading='Subheading 2'>
|
|
103
|
-
This is another section.
|
|
104
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
105
|
-
</Card.Section>
|
|
106
|
-
</Card>
|
|
107
|
-
`}
|
|
108
|
-
providerProps={{
|
|
109
|
-
renderAsComponent: true,
|
|
110
|
-
scope: {
|
|
111
|
-
Card,
|
|
112
|
-
},
|
|
113
|
-
}}
|
|
114
|
-
/>
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
export const AlertBannerExample = () => (
|
|
118
|
-
<CardPlayground
|
|
119
|
-
code={`
|
|
120
|
-
<Card heading='Heading'>
|
|
121
|
-
<Card.AlertBanner info>Seriously though, if you change the student's age or nationality you will regret it.</Card.AlertBanner>
|
|
122
|
-
Disaster can strike at any moment.
|
|
123
|
-
</Card>
|
|
124
|
-
`}
|
|
125
|
-
providerProps={{
|
|
126
|
-
renderAsComponent: true,
|
|
127
|
-
scope: {
|
|
128
|
-
Card,
|
|
129
|
-
},
|
|
130
|
-
}}
|
|
131
|
-
/>
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
const { Layout } = leftRightLayoutGenerator()
|
|
135
|
-
|
|
136
|
-
const GreyBox = styled.div`
|
|
137
|
-
background-color: ${Surface.Neutral};
|
|
138
|
-
height: 100%;
|
|
139
|
-
`
|
|
140
|
-
|
|
141
|
-
export const LeftRightLayoutExample = () => (
|
|
142
|
-
<CardPlayground
|
|
143
|
-
code={`
|
|
144
|
-
<Card>
|
|
145
|
-
<Layout>
|
|
146
|
-
<Layout.Left>
|
|
147
|
-
<Heading3>Personal Information</Heading3>
|
|
148
|
-
<Body subdued>This information will be seen by your colleagues and students.</Body>
|
|
149
|
-
</Layout.Left>
|
|
150
|
-
<Layout.Right>
|
|
151
|
-
<form id='my-form' onSubmit={(e) => e.preventDefault()}>
|
|
152
|
-
<InputField
|
|
153
|
-
label='First name'
|
|
154
|
-
/>
|
|
155
|
-
<InputField
|
|
156
|
-
label='Last name'
|
|
157
|
-
/>
|
|
158
|
-
<InputField
|
|
159
|
-
type='email'
|
|
160
|
-
required
|
|
161
|
-
label='Email'
|
|
162
|
-
/>
|
|
163
|
-
</form>
|
|
164
|
-
</Layout.Right>
|
|
165
|
-
</Layout>
|
|
166
|
-
<Card.Controls>
|
|
167
|
-
<button>Cancel</button>
|
|
168
|
-
<button form='my-form' type='submit'>Confirm</button>
|
|
169
|
-
</Card.Controls>
|
|
170
|
-
</Card>
|
|
171
|
-
`}
|
|
172
|
-
providerProps={{
|
|
173
|
-
renderAsComponent: true,
|
|
174
|
-
scope: {
|
|
175
|
-
Card,
|
|
176
|
-
Layout,
|
|
177
|
-
InputField,
|
|
178
|
-
Heading3,
|
|
179
|
-
Body,
|
|
180
|
-
},
|
|
181
|
-
}}
|
|
182
|
-
/>
|
|
183
|
-
)
|
|
184
|
-
|
|
185
|
-
export const LeftRightCardExample = () => (
|
|
186
|
-
<CardPlayground
|
|
187
|
-
code={`
|
|
188
|
-
<LeftRightCard
|
|
189
|
-
heading='Personal Information'
|
|
190
|
-
helpText='This information will be seen by your colleagues and students.'
|
|
191
|
-
>
|
|
192
|
-
<LeftRightCard.Right>
|
|
193
|
-
<form id='my-form-2' onSubmit={(e) => e.preventDefault()}>
|
|
194
|
-
<InputField
|
|
195
|
-
label='First name'
|
|
196
|
-
/>
|
|
197
|
-
<InputField
|
|
198
|
-
label='Last name'
|
|
199
|
-
/>
|
|
200
|
-
<InputField
|
|
201
|
-
type='email'
|
|
202
|
-
required
|
|
203
|
-
label='Email'
|
|
204
|
-
/>
|
|
205
|
-
</form>
|
|
206
|
-
</LeftRightCard.Right>
|
|
207
|
-
<LeftRightCard.Controls>
|
|
208
|
-
<button>Cancel</button>
|
|
209
|
-
<button form='my-form-2' type='submit'>Confirm</button>
|
|
210
|
-
</LeftRightCard.Controls>
|
|
211
|
-
</LeftRightCard>
|
|
212
|
-
`}
|
|
213
|
-
providerProps={{
|
|
214
|
-
renderAsComponent: true,
|
|
215
|
-
scope: {
|
|
216
|
-
LeftRightCard,
|
|
217
|
-
GreyBox,
|
|
218
|
-
Body,
|
|
219
|
-
InputField,
|
|
220
|
-
},
|
|
221
|
-
}}
|
|
222
|
-
/>
|
|
223
|
-
)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { render, screen } from '@testing-library/react'
|
|
2
|
-
import userEvent from '@testing-library/user-event'
|
|
3
|
-
import { Checkbox } from './checkbox'
|
|
4
|
-
|
|
5
|
-
describe('Checkbox Input Tests', () => {
|
|
6
|
-
it('should render the component and handle event after click', async () => {
|
|
7
|
-
const spyOnChange = jest.fn()
|
|
8
|
-
render(
|
|
9
|
-
<Checkbox
|
|
10
|
-
onChange={spyOnChange}
|
|
11
|
-
/>
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
15
|
-
const myComponent = screen.getByRole('checkbox')
|
|
16
|
-
|
|
17
|
-
expect(myComponent).toBeInTheDocument()
|
|
18
|
-
|
|
19
|
-
await userEvent.click(myComponent)
|
|
20
|
-
expect(spyOnChange).toHaveBeenCalled()
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('should not handle event after click if checkbox has disabled', async () => {
|
|
24
|
-
const spyOnChange = jest.fn()
|
|
25
|
-
render(
|
|
26
|
-
<Checkbox
|
|
27
|
-
disabled
|
|
28
|
-
onChange={spyOnChange}
|
|
29
|
-
/>
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
33
|
-
const myComponent = screen.getByRole('checkbox')
|
|
34
|
-
|
|
35
|
-
userEvent.click(myComponent)
|
|
36
|
-
|
|
37
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
38
|
-
})
|
|
39
|
-
})
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { InputHTMLAttributes } from 'react'
|
|
2
|
-
import styled from 'styled-components'
|
|
3
|
-
import { Margin, Padding, Focused } from '@foundations'
|
|
4
|
-
import { FC, is } from '@helpers'
|
|
5
|
-
import {
|
|
6
|
-
getDisabledStyles,
|
|
7
|
-
getInvalidStyles,
|
|
8
|
-
getDefaultStyles,
|
|
9
|
-
} from './helpers'
|
|
10
|
-
|
|
11
|
-
const CustomizedCheckbox = styled.input<{ error?: boolean }>`
|
|
12
|
-
appearance: none;
|
|
13
|
-
position: relative;
|
|
14
|
-
box-sizing: content-box;
|
|
15
|
-
width: 18px;
|
|
16
|
-
height: 18px;
|
|
17
|
-
margin: ${Margin.none};
|
|
18
|
-
padding: ${Padding.none};
|
|
19
|
-
border-radius: 4px;
|
|
20
|
-
user-select: none;
|
|
21
|
-
vertical-align: bottom;
|
|
22
|
-
display: inline-block;
|
|
23
|
-
|
|
24
|
-
${({ disabled, error }) => {
|
|
25
|
-
if (is(disabled)) {
|
|
26
|
-
return getDisabledStyles()
|
|
27
|
-
} else if (is(error)) {
|
|
28
|
-
return getInvalidStyles()
|
|
29
|
-
} else {
|
|
30
|
-
return getDefaultStyles()
|
|
31
|
-
}
|
|
32
|
-
}}
|
|
33
|
-
|
|
34
|
-
:focus-visible {
|
|
35
|
-
outline: 2px solid ${Focused.Default};
|
|
36
|
-
outline-offset: 1px;
|
|
37
|
-
}
|
|
38
|
-
`
|
|
39
|
-
|
|
40
|
-
export interface ICheckboxProps {
|
|
41
|
-
disabled?: boolean
|
|
42
|
-
checked?: boolean
|
|
43
|
-
error?: boolean
|
|
44
|
-
className?: string
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export type IProps = ICheckboxProps & InputHTMLAttributes<HTMLInputElement>
|
|
48
|
-
|
|
49
|
-
export const Checkbox: FC<IProps> = (props: IProps) => {
|
|
50
|
-
const {
|
|
51
|
-
error = false,
|
|
52
|
-
...htmlProps
|
|
53
|
-
} = props
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<CustomizedCheckbox
|
|
57
|
-
{...htmlProps}
|
|
58
|
-
|
|
59
|
-
type='checkbox'
|
|
60
|
-
error={error}
|
|
61
|
-
/>
|
|
62
|
-
)
|
|
63
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { css } from 'styled-components'
|
|
2
|
-
import { Surface, Borders, Actions, Interactive, Icons } from '@foundations'
|
|
3
|
-
import { Hex, isNil } from '@helpers'
|
|
4
|
-
|
|
5
|
-
interface ICheckedProps {
|
|
6
|
-
checked?: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const WIDTH = 12
|
|
10
|
-
const HEIGHT = 10
|
|
11
|
-
|
|
12
|
-
/** no magic here, just copy/pasted the svg from the mockup
|
|
13
|
-
* I had to tweak the width and height though
|
|
14
|
-
*/
|
|
15
|
-
const svg = `
|
|
16
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='${WIDTH}' height='${HEIGHT}' viewBox='0 0 10 8'>
|
|
17
|
-
<path d='M4.50846 7.37941C4.0689 7.81898 3.35108 7.81898 2.91151 7.37941L0.330581 4.79848C-0.110194 4.35892 -0.110194 3.64109 0.330581 3.20153C0.770146 2.76196 1.48797 2.76196 1.92753 3.20153L3.70999 4.98399L8.07338 0.620598C8.51294 0.181033 9.23076 0.181033 9.67033 0.620598C10.1099 1.06016 10.1099 1.77798 9.67033 2.21755L4.50846 7.37941Z' fill='white'/>
|
|
18
|
-
</svg>
|
|
19
|
-
`
|
|
20
|
-
|
|
21
|
-
function getCheckMark () {
|
|
22
|
-
return css`
|
|
23
|
-
::before {
|
|
24
|
-
position: absolute;
|
|
25
|
-
content: url("data:image/svg+xml,${svg}");
|
|
26
|
-
top: 3px;
|
|
27
|
-
left: 3px;
|
|
28
|
-
}
|
|
29
|
-
`
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** the reason I have this isNil to test
|
|
33
|
-
* whether `checked` was passes is this:
|
|
34
|
-
*
|
|
35
|
-
* if the user passed "checked" then
|
|
36
|
-
* they expect the checked styles to be
|
|
37
|
-
* seen if and only if checked is true.
|
|
38
|
-
* In that case I don't add the :checked
|
|
39
|
-
* selector because the user doesn't want
|
|
40
|
-
* the styles to depend on the browser's
|
|
41
|
-
* idea of the state of the button.
|
|
42
|
-
*/
|
|
43
|
-
function getCheckedStyles (color: Hex) {
|
|
44
|
-
return css<{ checked?: boolean }>`
|
|
45
|
-
${({ checked }) => isNil(checked)
|
|
46
|
-
? css`
|
|
47
|
-
:checked {
|
|
48
|
-
background: ${color};
|
|
49
|
-
border: 2px solid ${color};
|
|
50
|
-
${getCheckMark()}
|
|
51
|
-
}
|
|
52
|
-
`
|
|
53
|
-
: checked
|
|
54
|
-
? css`
|
|
55
|
-
background: ${color};
|
|
56
|
-
border: 2px solid ${color};
|
|
57
|
-
${getCheckMark()}
|
|
58
|
-
`
|
|
59
|
-
: ''
|
|
60
|
-
}
|
|
61
|
-
`
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export const getHoverStyles = () => css`
|
|
65
|
-
background: ${Surface.Default.Hover};
|
|
66
|
-
|
|
67
|
-
${getCheckedStyles(Interactive.Default.Hover)}
|
|
68
|
-
`
|
|
69
|
-
|
|
70
|
-
export const getDisabledStyles = () => css`
|
|
71
|
-
pointer-events: none;
|
|
72
|
-
background: ${(props: ICheckedProps) =>
|
|
73
|
-
props.checked === true
|
|
74
|
-
? `${Borders.Default.Default}`
|
|
75
|
-
: `${Surface.Default.Subdued}`};
|
|
76
|
-
border: 2px solid ${Borders.Default.Default};
|
|
77
|
-
|
|
78
|
-
${getCheckedStyles(Icons.Disabled)}
|
|
79
|
-
`
|
|
80
|
-
|
|
81
|
-
export const getDefaultStyles = () => css`
|
|
82
|
-
background: ${Surface.Default.Default};
|
|
83
|
-
border: 2px solid ${Interactive.Default.Disabled};
|
|
84
|
-
|
|
85
|
-
${getCheckedStyles(Interactive.Default.Default)}
|
|
86
|
-
|
|
87
|
-
:hover {
|
|
88
|
-
${getHoverStyles}
|
|
89
|
-
}
|
|
90
|
-
`
|
|
91
|
-
|
|
92
|
-
export const getInvalidStyles = () => css`
|
|
93
|
-
background: ${(props: ICheckedProps) =>
|
|
94
|
-
props.checked === true
|
|
95
|
-
? `${Actions.Critical.Default}`
|
|
96
|
-
: `${Surface.Critical.Subdued}`};
|
|
97
|
-
border: 2px solid ${Borders.Critical.Default};
|
|
98
|
-
|
|
99
|
-
${getCheckedStyles(Icons.Critical)}
|
|
100
|
-
`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './checkbox'
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Canvas, Meta, Story } from '@storybook/addon-docs';
|
|
2
|
-
import { Checkbox } from '../checkbox'
|
|
3
|
-
import { IntegratedExample, CheckboxExample, LimitationsExample } from './components'
|
|
4
|
-
|
|
5
|
-
<Meta
|
|
6
|
-
title="Components/Checkbox"
|
|
7
|
-
component={Checkbox}
|
|
8
|
-
/>
|
|
9
|
-
|
|
10
|
-
# Checkbox
|
|
11
|
-
|
|
12
|
-
Checkboxes are most commonly used to give users a way to make a range of selections (zero, one, or multiple). They may also be used as a way to have users indicate they agree to specific terms and services.
|
|
13
|
-
|
|
14
|
-
For more details, check out the component page on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=1008%3A1257)
|
|
15
|
-
|
|
16
|
-
## How to use
|
|
17
|
-
|
|
18
|
-
```tsx
|
|
19
|
-
import { Checkbox } from './index'
|
|
20
|
-
|
|
21
|
-
<Checkbox />
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Typical Usage
|
|
25
|
-
|
|
26
|
-
Checkbox is "drop-in" compatible with an html input checkbox.
|
|
27
|
-
|
|
28
|
-
<IntegratedExample />
|
|
29
|
-
|
|
30
|
-
### Modifiers
|
|
31
|
-
|
|
32
|
-
Control the appearance of the checkbox with its modifiers.
|
|
33
|
-
|
|
34
|
-
<CheckboxExample />
|
|
35
|
-
|
|
36
|
-
## API
|
|
37
|
-
|
|
38
|
-
Extends `HTMLAttributes<HTMLInputElement>`
|
|
39
|
-
|
|
40
|
-
| Name | Type | Description |
|
|
41
|
-
| ----------- | --------- | ------------------------------------------------------------------- |
|
|
42
|
-
| `checked?` | `boolean` | Set checkbox as filled |
|
|
43
|
-
| `disabled?` | `boolean` | Set checkbox as a disabled way (can't click or interact with that) |
|
|
44
|
-
| `error?` | `boolean` | Useful to work inside a form or show some feedback from user action |
|
|
45
|
-
| `onChange?` | `event` | You can listen the changes from the component |
|
|
46
|
-
|
|
47
|
-
## Changelog
|
|
48
|
-
|
|
49
|
-
### [0.1.0]
|
|
50
|
-
- replace the checkbox implementation with an input type=checkbox styled to look like what we need
|
|
51
|
-
|
|
52
|
-
### [0.0.1]
|
|
53
|
-
- update checkbox to behave more like html input with type='checkbox'
|
|
54
|
-
|
|
55
|
-
### [0.0.0]
|
|
56
|
-
- Offer the "indeterminate" style
|
|
57
|
-
- Get feedback from the component usage (we can migrate to just rendering with css pseudo elements if necessary)
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Margin, } from '@foundations'
|
|
2
|
-
import { If } from '@helpers'
|
|
3
|
-
import { Button } from 'components/molecules/button'
|
|
4
|
-
import { Caption, Label } from 'components/typography'
|
|
5
|
-
import { Playground } from 'storybook-addon-jarle-monaco'
|
|
6
|
-
import styled from 'styled-components'
|
|
7
|
-
import { Checkbox as Base } from '../checkbox'
|
|
8
|
-
|
|
9
|
-
const Checkbox = styled(Base)`
|
|
10
|
-
display: inline-block;
|
|
11
|
-
`
|
|
12
|
-
|
|
13
|
-
export const CheckboxExample = () => (
|
|
14
|
-
<Playground
|
|
15
|
-
code={`
|
|
16
|
-
<>
|
|
17
|
-
<Checkbox />
|
|
18
|
-
<Checkbox checked readOnly />
|
|
19
|
-
<Checkbox disabled />
|
|
20
|
-
<Checkbox checked disabled readOnly />
|
|
21
|
-
<Checkbox error />
|
|
22
|
-
<Checkbox checked error readOnly />
|
|
23
|
-
</>
|
|
24
|
-
`}
|
|
25
|
-
providerProps={{
|
|
26
|
-
renderAsComponent: true,
|
|
27
|
-
scope: {
|
|
28
|
-
Checkbox,
|
|
29
|
-
},
|
|
30
|
-
}}
|
|
31
|
-
/>
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
const Fields = styled.div`
|
|
35
|
-
margin-bottom: ${Margin.s};
|
|
36
|
-
`
|
|
37
|
-
|
|
38
|
-
export const IntegratedExample = () => (
|
|
39
|
-
<Playground
|
|
40
|
-
code={`
|
|
41
|
-
/* Edit this code sample! */
|
|
42
|
-
const [withError, setWithError] = useState(false);
|
|
43
|
-
const [accepted, setAccepted] = useState(false);
|
|
44
|
-
|
|
45
|
-
<form onSubmit={(e) => {
|
|
46
|
-
e.preventDefault()
|
|
47
|
-
}}
|
|
48
|
-
>
|
|
49
|
-
<Fields>
|
|
50
|
-
{/* try replacing Checkbox with input */}
|
|
51
|
-
<Checkbox
|
|
52
|
-
id="accept_terms"
|
|
53
|
-
type="checkbox"
|
|
54
|
-
checked={accepted}
|
|
55
|
-
onInvalid={(e) => {
|
|
56
|
-
setWithError(true)
|
|
57
|
-
}}
|
|
58
|
-
error={withError}
|
|
59
|
-
onChange={(e) => {
|
|
60
|
-
setAccepted(!accepted)
|
|
61
|
-
setWithError(false)
|
|
62
|
-
}}
|
|
63
|
-
required
|
|
64
|
-
/>
|
|
65
|
-
<label htmlFor="accept_terms"><Label as='span'>I accept these terms.</Label></label>
|
|
66
|
-
<If is={accepted}><Caption subdued>You have accepted the terms.</Caption></If>
|
|
67
|
-
</Fields>
|
|
68
|
-
<Button type='button' onClick={() => setAccepted(false)}>Clear</Button>
|
|
69
|
-
<Button primary type="submit">Submit</Button>
|
|
70
|
-
</form>
|
|
71
|
-
`}
|
|
72
|
-
providerProps={{
|
|
73
|
-
renderAsComponent: true,
|
|
74
|
-
scope: {
|
|
75
|
-
Checkbox,
|
|
76
|
-
Caption,
|
|
77
|
-
Button,
|
|
78
|
-
If,
|
|
79
|
-
Label,
|
|
80
|
-
Fields,
|
|
81
|
-
},
|
|
82
|
-
}}
|
|
83
|
-
/>
|
|
84
|
-
)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// this file was generated, but it is safe to modify
|
|
2
|
-
import { bitwiseOr, MappedEnum, RequireOnlyOne, PropsWithChildren } from '@helpers'
|
|
3
|
-
import { Borders } from '@foundations'
|
|
4
|
-
|
|
5
|
-
const enum DividerType {
|
|
6
|
-
default = 1,
|
|
7
|
-
subdued = 2,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
type DividerTypes<T> = MappedEnum<typeof DividerType, T>
|
|
11
|
-
|
|
12
|
-
function toDividerType(n: number): DividerType {
|
|
13
|
-
switch (n) {
|
|
14
|
-
case DividerType.default:
|
|
15
|
-
return DividerType.default
|
|
16
|
-
case DividerType.subdued:
|
|
17
|
-
return DividerType.subdued
|
|
18
|
-
default:
|
|
19
|
-
return DividerType.default
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const DividerTypeColor = {
|
|
24
|
-
[DividerType.default]: Borders.Default.Default,
|
|
25
|
-
[DividerType.subdued]: Borders.Default.Subdued,
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export type DivideTypeProps = Partial<RequireOnlyOne<DividerTypes<boolean>>> &
|
|
29
|
-
PropsWithChildren
|
|
30
|
-
|
|
31
|
-
export function getColor(props: DivideTypeProps): string {
|
|
32
|
-
return DividerTypeColor[
|
|
33
|
-
toDividerType(
|
|
34
|
-
bitwiseOr([props.default, props.subdued])
|
|
35
|
-
)
|
|
36
|
-
]
|
|
37
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { render, screen } from '@testing-library/react'
|
|
2
|
-
import { Divider } from './index'
|
|
3
|
-
import { Borders } from '@foundations'
|
|
4
|
-
|
|
5
|
-
describe('Divider Tests', () => {
|
|
6
|
-
describe('Divider Tests', () => {
|
|
7
|
-
it('should render the Divider with default color', async () => {
|
|
8
|
-
render(
|
|
9
|
-
<Divider/>
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
13
|
-
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Default}`)
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
it('should render the Divider with default color using parameter', async () => {
|
|
17
|
-
render(
|
|
18
|
-
<Divider default/>
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
22
|
-
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Default}`)
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
it('should render the Divider with subdued color', async () => {
|
|
26
|
-
render(
|
|
27
|
-
<Divider subdued/>
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
31
|
-
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Subdued}`)
|
|
32
|
-
})
|
|
33
|
-
})
|
|
34
|
-
})
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
import { FC } from '@helpers'
|
|
3
|
-
import { DivideTypeProps, getColor } from './divider-type-flags'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* @TODO I added flex here because without it the bottom margin was
|
|
7
|
-
* being collapsed with the next sibling (when I applied margins to the divider,
|
|
8
|
-
* which I expect we basically _always_ will)
|
|
9
|
-
*
|
|
10
|
-
* I'm not confident with reasoning about margin-collapse so if you see
|
|
11
|
-
* this comment and feel like experimenting, go crazy. Check out the
|
|
12
|
-
* card stories for an example of the divider (it's way at the bottom)
|
|
13
|
-
*/
|
|
14
|
-
const DividerWrapper = styled.div`
|
|
15
|
-
position: relative;
|
|
16
|
-
width:100%;
|
|
17
|
-
`
|
|
18
|
-
|
|
19
|
-
const DividerLine = styled.hr<{ color: string }>`
|
|
20
|
-
position: absolute;
|
|
21
|
-
left: 0;
|
|
22
|
-
right: 0;
|
|
23
|
-
margin: unset;
|
|
24
|
-
border: 1px solid ${({ color }) => color};
|
|
25
|
-
`
|
|
26
|
-
|
|
27
|
-
type IProps = { className?: string } & DivideTypeProps
|
|
28
|
-
|
|
29
|
-
export const Divider: FC<IProps> = (props) => {
|
|
30
|
-
const color = getColor(props)
|
|
31
|
-
|
|
32
|
-
return (
|
|
33
|
-
<DividerWrapper className={props.className}>
|
|
34
|
-
<DividerLine color={color} data-testid="divider-test"/>
|
|
35
|
-
</DividerWrapper>
|
|
36
|
-
)
|
|
37
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './divider'
|