@telus-uds/components-base 1.7.0 → 1.8.1

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.
Files changed (183) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/component-docs.json +264 -18
  3. package/lib/Button/ButtonGroup.js +118 -45
  4. package/lib/Checkbox/CheckboxGroup.js +3 -3
  5. package/lib/ExpandCollapse/Panel.js +2 -1
  6. package/lib/Fieldset/Fieldset.js +7 -0
  7. package/lib/InputLabel/InputLabel.js +8 -1
  8. package/lib/InputSupports/InputSupports.js +7 -0
  9. package/lib/Notification/Notification.js +1 -1
  10. package/lib/Radio/RadioGroup.js +12 -5
  11. package/lib/RadioCard/RadioCardGroup.js +7 -0
  12. package/lib/Search/Search.js +1 -1
  13. package/lib/Skeleton/Skeleton.js +48 -2
  14. package/lib/ToggleSwitch/ToggleSwitch.js +7 -0
  15. package/lib/ToggleSwitch/ToggleSwitchGroup.js +7 -0
  16. package/lib/Tooltip/Tooltip.js +1 -1
  17. package/lib/utils/animation/useVerticalExpandAnimation.js +26 -13
  18. package/lib/utils/props/inputSupportsProps.js +7 -0
  19. package/lib/utils/props/textInputProps.js +2 -1
  20. package/lib-module/Button/ButtonGroup.js +117 -45
  21. package/lib-module/Checkbox/CheckboxGroup.js +3 -3
  22. package/lib-module/ExpandCollapse/Panel.js +2 -1
  23. package/lib-module/Fieldset/Fieldset.js +7 -0
  24. package/lib-module/InputLabel/InputLabel.js +8 -1
  25. package/lib-module/InputSupports/InputSupports.js +7 -0
  26. package/lib-module/Notification/Notification.js +1 -1
  27. package/lib-module/Radio/RadioGroup.js +12 -5
  28. package/lib-module/RadioCard/RadioCardGroup.js +7 -0
  29. package/lib-module/Search/Search.js +1 -1
  30. package/lib-module/Skeleton/Skeleton.js +49 -3
  31. package/lib-module/ToggleSwitch/ToggleSwitch.js +7 -0
  32. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +7 -0
  33. package/lib-module/Tooltip/Tooltip.js +1 -1
  34. package/lib-module/utils/animation/useVerticalExpandAnimation.js +26 -14
  35. package/lib-module/utils/props/inputSupportsProps.js +7 -0
  36. package/lib-module/utils/props/textInputProps.js +2 -1
  37. package/package.json +11 -6
  38. package/src/Button/ButtonGroup.jsx +106 -41
  39. package/src/Checkbox/Checkbox.jsx +7 -4
  40. package/src/Checkbox/CheckboxGroup.jsx +3 -3
  41. package/src/ExpandCollapse/Panel.jsx +3 -1
  42. package/src/Fieldset/Fieldset.jsx +6 -0
  43. package/src/InputLabel/InputLabel.jsx +17 -2
  44. package/src/InputSupports/InputSupports.jsx +9 -1
  45. package/src/Notification/Notification.jsx +1 -1
  46. package/src/Radio/Radio.jsx +5 -1
  47. package/src/Radio/RadioGroup.jsx +11 -5
  48. package/src/RadioCard/RadioCard.jsx +5 -1
  49. package/src/RadioCard/RadioCardGroup.jsx +6 -0
  50. package/src/Search/Search.jsx +1 -1
  51. package/src/Skeleton/Skeleton.jsx +56 -3
  52. package/src/ToggleSwitch/ToggleSwitch.jsx +6 -0
  53. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +6 -0
  54. package/src/Tooltip/Tooltip.jsx +1 -1
  55. package/src/utils/animation/useVerticalExpandAnimation.js +25 -12
  56. package/src/utils/props/inputSupportsProps.js +6 -1
  57. package/src/utils/props/textInputProps.js +2 -1
  58. package/src/utils/props/tokens.js +21 -19
  59. package/.storybook/main.js +0 -4
  60. package/.storybook/preview.js +0 -37
  61. package/.turbo/turbo-build.log +0 -8
  62. package/.turbo/turbo-lint.log +0 -13
  63. package/CHANGELOG.json +0 -235
  64. package/__fixtures__/Accessible.js +0 -35
  65. package/__fixtures__/Accessible.native.js +0 -35
  66. package/__fixtures__/Theme.jsx +0 -13
  67. package/__fixtures__/Viewport.jsx +0 -17
  68. package/__fixtures__/test-utils.js +0 -25
  69. package/__fixtures__/testTheme.js +0 -1830
  70. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  71. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  72. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  73. package/__tests__/Box/Box.test.jsx +0 -111
  74. package/__tests__/Button/Button.test.jsx +0 -86
  75. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  76. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  77. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  78. package/__tests__/Card/Card.test.jsx +0 -63
  79. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  80. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  81. package/__tests__/Divider/Divider.test.jsx +0 -91
  82. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  83. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  84. package/__tests__/FlexGrid/Col.test.jsx +0 -256
  85. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  86. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  87. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  88. package/__tests__/Icon/Icon.test.jsx +0 -61
  89. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  90. package/__tests__/InputSupports/InputSupports.test.jsx +0 -50
  91. package/__tests__/Link/Link.test.jsx +0 -63
  92. package/__tests__/Link/TextButton.test.jsx +0 -35
  93. package/__tests__/List/List.test.jsx +0 -60
  94. package/__tests__/Modal/Modal.test.jsx +0 -47
  95. package/__tests__/Notification/Notification.test.jsx +0 -20
  96. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  97. package/__tests__/Progress/Progress.test.jsx +0 -79
  98. package/__tests__/Radio/Radio.test.jsx +0 -87
  99. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  100. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  101. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  102. package/__tests__/Search/Search.test.jsx +0 -73
  103. package/__tests__/Select/Select.test.jsx +0 -94
  104. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  105. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  106. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  107. package/__tests__/StackView/StackView.test.jsx +0 -216
  108. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  109. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  110. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  111. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  112. package/__tests__/Tags/Tags.test.jsx +0 -327
  113. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  114. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  115. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  116. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  117. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  118. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  119. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  120. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  121. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  122. package/__tests__/Typography/typography.test.jsx +0 -90
  123. package/__tests__/utils/children.test.jsx +0 -128
  124. package/__tests__/utils/containUniqueFields.test.js +0 -25
  125. package/__tests__/utils/input.test.js +0 -375
  126. package/__tests__/utils/props.test.js +0 -36
  127. package/__tests__/utils/semantics.test.jsx +0 -34
  128. package/__tests__/utils/useCopy.test.js +0 -42
  129. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  130. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  131. package/__tests__/utils/useUniqueId.test.js +0 -31
  132. package/babel.config.js +0 -35
  133. package/generate-component-docs.js +0 -72
  134. package/jest.config.js +0 -32
  135. package/stories/A11yText/A11yText.stories.jsx +0 -71
  136. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  137. package/stories/Box/Box.stories.jsx +0 -143
  138. package/stories/Button/Button.stories.jsx +0 -72
  139. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  140. package/stories/Button/ButtonLink.stories.jsx +0 -30
  141. package/stories/Card/Card.stories.jsx +0 -62
  142. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  143. package/stories/Divider/Divider.stories.jsx +0 -68
  144. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  145. package/stories/Feedback/Feedback.stories.jsx +0 -96
  146. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  147. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  148. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  149. package/stories/Icon/Icon.stories.jsx +0 -79
  150. package/stories/IconButton/IconButton.stories.jsx +0 -50
  151. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  152. package/stories/Link/ChevronLink.stories.jsx +0 -48
  153. package/stories/Link/Link.stories.jsx +0 -90
  154. package/stories/Link/TextButton.stories.jsx +0 -79
  155. package/stories/List/List.stories.jsx +0 -117
  156. package/stories/Modal/Modal.stories.jsx +0 -54
  157. package/stories/Notification/Notification.stories.jsx +0 -82
  158. package/stories/Pagination/Pagination.stories.jsx +0 -64
  159. package/stories/Progress/Progress.stories.jsx +0 -93
  160. package/stories/Radio/Radio.stories.jsx +0 -100
  161. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  162. package/stories/Search/Search.stories.jsx +0 -66
  163. package/stories/Select/Select.stories.jsx +0 -55
  164. package/stories/SideNav/SideNav.stories.jsx +0 -42
  165. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  166. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  167. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  168. package/stories/Spacer/Spacer.stories.jsx +0 -38
  169. package/stories/StackView/StackView.stories.jsx +0 -75
  170. package/stories/StackView/StackWrap.stories.jsx +0 -64
  171. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  172. package/stories/Tabs/Tabs.stories.jsx +0 -97
  173. package/stories/Tags/Tags.stories.jsx +0 -69
  174. package/stories/TextInput/TextArea.stories.jsx +0 -101
  175. package/stories/TextInput/TextInput.stories.jsx +0 -141
  176. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  177. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  178. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  179. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  180. package/stories/Typography/Typography.stories.jsx +0 -49
  181. package/stories/platform-supports.jsx +0 -32
  182. package/stories/platform-supports.native.jsx +0 -3
  183. package/stories/supports.jsx +0 -236
@@ -1,54 +0,0 @@
1
- import React, { useState } from 'react'
2
-
3
- import { Button, Modal, Spacer, Typography } from '../../src'
4
-
5
- export default {
6
- title: 'Modal',
7
- component: Modal
8
- }
9
-
10
- export const Default = (args) => {
11
- const [isOpen, setIsOpen] = useState(false)
12
- const [isMaxWidthOpen, setIsMaxWidthOpen] = useState(false)
13
- const [isCustomCloseOpen, setIsCustomCloseOpen] = useState(false)
14
- const [isNoCloseOpen, setIsNoCloseOpen] = useState(false)
15
-
16
- return (
17
- <>
18
- <Button onPress={() => setIsOpen(true)}>Open modal</Button>
19
- <Modal {...args} isOpen={isOpen} onClose={() => setIsOpen(false)}>
20
- <Typography>Test content</Typography>
21
- </Modal>
22
- <Spacer space={3} />
23
- <Button onPress={() => setIsMaxWidthOpen(true)}>Open maxWidth modal</Button>
24
- <Modal {...args} isOpen={isMaxWidthOpen} onClose={() => setIsMaxWidthOpen(false)} maxWidth>
25
- <Typography variant={{ size: 'h2' }}>Test heading</Typography>
26
- <Typography>Test content</Typography>
27
- </Modal>
28
- <Spacer space={3} />
29
- <Button onPress={() => setIsCustomCloseOpen(true)}>Open custom close button modal</Button>
30
- <Modal
31
- {...args}
32
- isOpen={isCustomCloseOpen}
33
- onClose={() => setIsCustomCloseOpen(false)}
34
- closeButton={<Button onPress={() => setIsCustomCloseOpen(false)}>Close</Button>}
35
- >
36
- <Typography variant={{ size: 'h2' }}>Test heading</Typography>
37
- <Typography>Test content</Typography>
38
- </Modal>
39
- <Spacer space={3} />
40
- <Button onPress={() => setIsNoCloseOpen(true)}>Open modal without close button</Button>
41
- <Modal
42
- {...args}
43
- isOpen={isNoCloseOpen}
44
- onClose={() => setIsNoCloseOpen(false)}
45
- closeButton={null}
46
- >
47
- <Typography variant={{ size: 'h2' }}>Test heading</Typography>
48
- <Typography>A custom close button is added in the modal content.</Typography>
49
- <Button onPress={() => setIsNoCloseOpen(false)}>Close</Button>
50
- </Modal>
51
- </>
52
- )
53
- }
54
- Default.storyName = 'Modal'
@@ -1,82 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React from 'react'
3
- import { Text } from 'react-native'
4
-
5
- import { Link, Notification, Typography } from '../../src'
6
- import { Container } from '../supports'
7
-
8
- export default {
9
- title: 'Notification',
10
- component: Notification
11
- }
12
-
13
- const Template = (args) => <Notification {...args} />
14
-
15
- export const Default = Template.bind({})
16
- Default.args = {
17
- children: 'Your password was updated successfully.'
18
- }
19
-
20
- export const Variants = () => {
21
- const variants = [{}, { style: 'success' }, { style: 'warning' }, { style: 'error' }]
22
- const propSets = [
23
- {},
24
- { system: true },
25
- { dismissible: true },
26
- { system: true, dismissible: true }
27
- ]
28
-
29
- const combinations = variants.flatMap((variant) => {
30
- return propSets.map((propSet) => ({ variant, ...propSet }))
31
- })
32
-
33
- return combinations.map((props) => {
34
- const label = [
35
- props.variant.style ?? 'default',
36
- props.system && 'system',
37
- props.dismissible && 'dismissible'
38
- ]
39
- .filter((value) => value)
40
- .join(' ')
41
-
42
- return (
43
- <Container key={label}>
44
- <Text>{label}</Text>
45
- <Notification {...props}>
46
- Tip: These services are best suited for large business organizations. Order products and
47
- services at TELUS.com.
48
- </Notification>
49
- </Container>
50
- )
51
- })
52
- }
53
-
54
- export const ContentTypes = () => {
55
- return (
56
- <>
57
- <Container>
58
- <Notification>A regular string content.</Notification>
59
- </Container>
60
- <Container>
61
- <Notification>
62
- <Typography>
63
- Text components content. <Link href="https://telus.com/uds">Combined with a link.</Link>
64
- </Typography>
65
- </Notification>
66
- </Container>
67
- <Container>
68
- <Notification variant={{ customVariant: true }}>
69
- {({ textStyles, variant }) => (
70
- <Text style={textStyles}>
71
- A render function, to apply component styles and variant ({Object.keys(variant)[0]})
72
- to Text and{' '}
73
- <Link href="https://telus.com/uds" tokens={{ color: textStyles.color }}>
74
- Link
75
- </Link>
76
- </Text>
77
- )}
78
- </Notification>
79
- </Container>
80
- </>
81
- )
82
- }
@@ -1,64 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React, { useState } from 'react'
3
- import PropTypes from 'prop-types'
4
-
5
- import { Pagination, Typography } from '../../src'
6
- import { Container, EachParentType, parentTypesParams } from '../supports'
7
-
8
- export default {
9
- title: 'Pagination',
10
- component: Pagination
11
- }
12
-
13
- export const Default = (args) => (
14
- <Pagination {...args}>
15
- <Pagination.PageButton href="#test" hrefAttrs={{ target: '_blank' }} />
16
- <Pagination.PageButton onPress={() => {}} isActive />
17
- <Pagination.PageButton onPress={() => {}} />
18
- <Pagination.PageButton onPress={() => {}} />
19
- </Pagination>
20
- )
21
- Default.storyName = 'Pagination'
22
-
23
- export const LocalTabs = ({ label, ...args }) => {
24
- const [activeItemIndex, setActiveItemIndex] = useState(0)
25
-
26
- const items = []
27
-
28
- for (let i = 0; i < 7; i += 1) {
29
- items.push(`Panel ${i + 1}`)
30
- }
31
-
32
- const activeItem = items[activeItemIndex]
33
- const labelText = label ? `${activeItem} (${label}). ` : activeItem
34
-
35
- /* eslint-disable react/no-array-index-key */
36
- return (
37
- <>
38
- <Container>
39
- <Typography>{labelText}</Typography>
40
- </Container>
41
- <Pagination {...args}>
42
- {items.map((item, index) => (
43
- <Pagination.PageButton
44
- key={index}
45
- onPress={() => setActiveItemIndex(index)}
46
- isActive={index === activeItemIndex}
47
- />
48
- ))}
49
- </Pagination>
50
- </>
51
- )
52
- /* eslint-enable react/no-array-index-key */
53
- }
54
- LocalTabs.propTypes = {
55
- ...Pagination.propTypes,
56
- label: PropTypes.string
57
- }
58
-
59
- export const ParentTypes = (args) => (
60
- <EachParentType componentThemeName="Pagination" {...args}>
61
- {({ label, variant }) => <LocalTabs {...args} variant={variant} label={label} />}
62
- </EachParentType>
63
- )
64
- ParentTypes.parameters = parentTypesParams
@@ -1,93 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React from 'react'
3
-
4
- import { Progress, StackView, Typography } from '../../src'
5
- import { Container, EachParentType, parentTypesParams } from '../supports'
6
-
7
- export default {
8
- title: 'Progress',
9
- component: Progress.Bar,
10
- args: { accessibilityLabel: 'Progress Bar' }
11
- }
12
-
13
- export const Default = (args) => (
14
- <Progress>
15
- <Progress.Bar {...args} />
16
- </Progress>
17
- )
18
- Default.storyName = 'Example'
19
- Default.args = { percentage: 50 }
20
- Default.argTypes = {
21
- percentage: { control: { type: 'range', min: 0, max: 100 } }
22
- }
23
-
24
- export const Variants = () => (
25
- <Container>
26
- <StackView>
27
- <Progress>
28
- <Progress.Bar
29
- percentage={25}
30
- variant={{ inactive: true }}
31
- accessibilityLabel="Inactive progress bar"
32
- />
33
- </Progress>
34
- <Progress>
35
- <Progress.Bar
36
- percentage={50}
37
- variant={{ negative: true }}
38
- accessibilityLabel="Negative progress bar"
39
- />
40
- </Progress>
41
- <Progress>
42
- <Progress.Bar percentage={75} accessibilityLabel="Progress bar" />
43
- </Progress>
44
- <Progress variant={{ size: 'mini' }}>
45
- <Progress.Bar
46
- percentage={25}
47
- variant={{ inactive: true }}
48
- accessibilityLabel="Inactive progress bar"
49
- />
50
- </Progress>
51
- <Progress variant={{ size: 'mini' }}>
52
- <Progress.Bar
53
- percentage={50}
54
- variant={{ negative: true }}
55
- accessibilityLabel="Negative progress bar"
56
- />
57
- </Progress>
58
- <Progress variant={{ size: 'mini' }}>
59
- <Progress.Bar
60
- percentage={75}
61
- variant={{ size: 'mini' }}
62
- accessibilityLabel="Minimal progress bar"
63
- />
64
- </Progress>
65
- </StackView>
66
- </Container>
67
- )
68
-
69
- export const StackedBars = () => (
70
- <Progress>
71
- <Progress.Bar
72
- percentage={75}
73
- variant={{ inactive: true }}
74
- accessibilityLabel="Stacked inactive progress bar"
75
- />
76
- <Progress.Bar percentage={50} accessibilityLabel="Stacked progress bar" />
77
- </Progress>
78
- )
79
-
80
- export const ParentTypes = (args) => (
81
- <EachParentType componentThemeName="ProgressBar" {...args}>
82
- {({ label, variant }) => (
83
- <Container key={label}>
84
- <Typography>{`${label} `}</Typography>
85
- <Progress>
86
- <Progress.Bar {...args} variant={variant} accessibilityLabel={label} />
87
- </Progress>
88
- </Container>
89
- )}
90
- </EachParentType>
91
- )
92
- ParentTypes.parameters = parentTypesParams
93
- ParentTypes.args = { percentage: 75 }
@@ -1,100 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React from 'react'
3
-
4
- import { Radio, RadioGroup, Typography } from '../../src'
5
- import { Container, EachParentType, parentTypesParams } from '../supports'
6
-
7
- export default {
8
- title: 'Radio',
9
- component: Radio,
10
- argTypes: {
11
- checked: {
12
- control: { type: 'radio' },
13
- options: [true, false, undefined]
14
- }
15
- },
16
- args: {
17
- label: 'Radio',
18
- checked: undefined
19
- }
20
- }
21
-
22
- const Template = (args) => (
23
- <Container>
24
- <Radio {...args} />
25
- </Container>
26
- )
27
-
28
- export const Default = Template.bind({})
29
- Default.argTypes = {
30
- checked: { table: { disable: true } }
31
- }
32
-
33
- export const Controlled = Template.bind({})
34
- Controlled.argTypes = {
35
- defaultChecked: { table: { disable: true } }
36
- }
37
- Controlled.args = {
38
- checked: false,
39
- defaultChecked: undefined
40
- }
41
-
42
- export const Inactive = Template.bind({})
43
- Inactive.argTypes = {
44
- inactive: { table: { disable: true } }
45
- }
46
- Inactive.args = {
47
- inactive: true
48
- }
49
-
50
- export const WithDescription = Template.bind({})
51
- WithDescription.argTypes = {
52
- description: { table: { disable: true } }
53
- }
54
- WithDescription.args = {
55
- description: 'This is a description'
56
- }
57
-
58
- export const RadioGroupStory = (args) => <RadioGroup {...args} />
59
- RadioGroupStory.storyName = 'RadioGroup'
60
- RadioGroupStory.args = {
61
- items: [
62
- {
63
- label: 'Radio Card 1'
64
- },
65
- {
66
- label: 'Radio Card 2'
67
- },
68
- {
69
- label: 'Radio Card 3'
70
- },
71
- {
72
- label: 'Radio Card 4'
73
- }
74
- ],
75
- legend: 'Choose a radio button.',
76
- hint: 'Of the radio buttons below, choose one.',
77
- tooltip: 'Decide which radio button you like best, then press it.',
78
- name: 'example'
79
- }
80
-
81
- export const ParentTypes = (args) => (
82
- <EachParentType componentThemeName="Radio" {...args}>
83
- {({ label, variant }) => (
84
- <Container key={label}>
85
- <Typography>{`${label} `}</Typography>
86
- <Radio
87
- {...args}
88
- defaultChecked={false}
89
- name="parentTypes"
90
- value={label}
91
- variant={variant}
92
- />
93
- </Container>
94
- )}
95
- </EachParentType>
96
- )
97
- ParentTypes.parameters = parentTypesParams
98
- ParentTypes.args = {
99
- defaultChecked: undefined
100
- }
@@ -1,98 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React from 'react'
3
-
4
- import { RadioCard, RadioCardGroup, Typography } from '../../src'
5
- import { Container, EachParentType, parentTypesParams } from '../supports'
6
-
7
- export default {
8
- title: 'RadioCard',
9
- component: RadioCard
10
- }
11
-
12
- const additionalContent = (
13
- <>
14
- <Typography>First line</Typography>
15
- <Typography>Second line</Typography>
16
- </>
17
- )
18
-
19
- export const Default = (args) => <RadioCard {...args} />
20
- Default.args = {
21
- title: 'Radio card',
22
- children: additionalContent
23
- }
24
- Default.storyName = 'RadioCard'
25
-
26
- export const RadioCardGroupStory = (args) => <RadioCardGroup {...args} />
27
- RadioCardGroupStory.storyName = 'RadioCardGroup'
28
- RadioCardGroupStory.args = {
29
- items: [
30
- {
31
- title: 'Radio Card 1',
32
- content: (
33
- <>
34
- <Typography>First line</Typography>
35
- </>
36
- )
37
- },
38
- {
39
- title: 'Radio Card 2',
40
- content: (
41
- <>
42
- <Typography>First line</Typography>
43
- <Typography>Second line</Typography>
44
- </>
45
- )
46
- },
47
- {
48
- title: 'Radio Card 3',
49
- content: (
50
- <>
51
- <Typography>First line</Typography>
52
- <Typography>Second line</Typography>
53
- <Typography>Third line</Typography>
54
- </>
55
- )
56
- },
57
- {
58
- title: 'Radio Card 4',
59
- content: (
60
- <>
61
- <Typography>First line</Typography>
62
- <Typography>Second line</Typography>
63
- </>
64
- )
65
- },
66
- {
67
- title: 'Radio Card 5',
68
- content: (
69
- <>
70
- <Typography>First line</Typography>
71
- <Typography>Second line</Typography>
72
- <Typography>Third line</Typography>
73
- <Typography>Fourth line</Typography>
74
- </>
75
- )
76
- }
77
- ],
78
- legend: 'Choose a radio card.',
79
- hint: 'Of the radio cards below, choose one.',
80
- tooltip: 'Decide which radio card you like best, then press it.',
81
- name: 'example'
82
- }
83
-
84
- export const ParentTypes = (args) => (
85
- <EachParentType componentThemeName="Radio" {...args}>
86
- {({ label, variant }) => (
87
- <Container key={label}>
88
- <RadioCard {...args} variant={variant} title={label}>
89
- {additionalContent}
90
- </RadioCard>
91
- </Container>
92
- )}
93
- </EachParentType>
94
- )
95
- ParentTypes.parameters = parentTypesParams
96
- ParentTypes.args = {
97
- defaultChecked: undefined
98
- }
@@ -1,66 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React, { useRef, useState } from 'react'
3
-
4
- import { Search, StackView, TextButton, Typography, List, ListItem } from '../../src'
5
-
6
- export default {
7
- title: 'Search',
8
- component: Search,
9
- argTypes: {
10
- onSubmit: { action: 'submitted' }
11
- }
12
- }
13
-
14
- const Template = (args) => <Search {...args} />
15
-
16
- export const Default = Template.bind({})
17
- Default.args = {}
18
-
19
- export const Inactive = Template.bind({})
20
- Inactive.args = { inactive: true }
21
-
22
- // Lots of smartphone brands. No need to make the file really long, let them sit on one line.
23
- // eslint-disable-next-line prettier/prettier
24
- const options = ['Acer', 'Aermoo', 'AGM', 'Alcatel', 'Allcall', 'Allview', 'Amigoo', 'Amoi', 'Apple', 'Archos', 'Asus', 'Axgio', 'Black Shark', 'BlackBerry', 'Blackview', 'BLU', 'Bluboo', 'BQ', 'Bsimb', 'Cagabi', 'Cat', 'Caterpillar', 'Centric', 'China Mobile', 'Cong', 'Coolpad', 'Cubot', 'Dakele', 'Doogee', 'Doopro', 'E&L', 'Ecoo', 'Elephone', 'Energizer', 'Energy', 'Essential', 'EStar', 'Faea', 'Fairphone', 'Geotel', 'Gigabyte', 'Gigaset', 'Gionee', 'Gome', 'Google', 'Goophone', 'Gretel', 'Hafury', 'Haier', 'Hike', 'HiSense', 'HomTom', 'Honor', 'HP', 'HTC', 'Huawei', 'I Kall', 'iiiF150', 'iLA', 'iMan', 'iNew', 'Infinix', 'InFocus', 'InnJoo', 'Innos', 'Intex', 'iOcean', 'iRULU', 'IUNI', 'iVooMi', 'Jesy', 'Jiake', 'Jiayu', 'Karbonn', 'Kazam', 'Keecoo', 'Kenxinda', 'KingSing', 'KingZone', 'Kodak', 'Kolina', 'Koolnee', 'Landvo', 'Laude', 'Lava', 'Leagoo', 'LeEco (LeTV)', 'Lenovo', 'Leotec', 'LeRee', 'LG', 'Ly', 'Lyf', 'M-Horse', 'M-Net', 'Mann', 'Maze', 'Meiigoo', 'Meitu', 'Meizu', 'Micromax', 'Microsoft', 'Mijue', 'Milai', 'Mlais', 'Morefine', 'Motorola', 'Mpie', 'Mstar', 'MyWigo', 'Neken', 'Neo', 'Newman', 'NO.1', 'Noa', 'Nokia', 'Nomu', 'Nubia', 'Nubia Red Magic', 'NZone', 'OnePlus', 'Oppo', 'Otium', 'Oukitel', 'Palm', 'Panasonic', 'Pantech', 'Pepsi', 'Phicomm', 'Philips', 'Phonemax', 'Plunk', 'POCO', 'Pomp', 'Poptel', 'PPTV', 'Prestigio', 'Qiku', 'Ramos', 'Razer', 'realme', 'Runbo', 'Samsung', 'Sharp', 'Silent Circle', 'Siswoo', 'Smartisan', 'Snopow', 'Sony', 'Sony Ericsson', 'Star', 'Swipe', 'TCL', 'Tengda', 'THL', 'Tianhe', 'Timmy', 'TP-Link', 'Ubro', 'Uhans', 'Uhappy', 'Uimi', 'Ukozi', 'Ulefone', 'UMi', 'UMiDIGI', 'Vargo', 'Vernee', 'ViewSonic', 'Vivo', 'VKworld', 'Voto', 'VPhone', 'Vsmart', 'Weimei', 'Wico', 'Wiko', 'Wileyfox', 'Wolder', 'Woxter', 'Xiaomi', 'Xolo', 'Yota Devices', 'YU', 'Zoji', 'Zopo', 'ZTE', 'Zuk']
25
-
26
- export const Controlled = (args) => {
27
- const [value, setValue] = useState('')
28
- const [searchedValue, setSearchedValue] = useState(null)
29
- const searchRef = useRef()
30
- const selectOption = (option) => {
31
- setValue(option)
32
- if (searchRef.current?.focus) searchRef.current?.focus()
33
- }
34
-
35
- return (
36
- <StackView space={4}>
37
- {searchedValue ? (
38
- <>
39
- <Typography>Search results page for {searchedValue}.</Typography>
40
- <Typography>{searchedValue} phones are really good. You should buy one.</Typography>
41
- <TextButton onPress={() => setSearchedValue(null)}>Go back</TextButton>
42
- </>
43
- ) : (
44
- <>
45
- <Search
46
- {...args}
47
- value={value}
48
- onChange={setValue}
49
- ref={searchRef}
50
- onSubmit={setSearchedValue}
51
- />
52
- <List>
53
- {options
54
- .filter((option) => !value || option.toLowerCase().match(value.toLowerCase()))
55
- .map((option) => (
56
- <ListItem key={option}>
57
- <TextButton onPress={() => selectOption(option)}>{option}</TextButton>
58
- </ListItem>
59
- ))}
60
- </List>
61
- </>
62
- )}
63
- </StackView>
64
- )
65
- }
66
- Controlled.args = {}
@@ -1,55 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { Text } from 'react-native'
3
-
4
- import { Select } from '../../src'
5
-
6
- export default {
7
- title: 'Select',
8
- component: Select
9
- }
10
-
11
- const Template = (args) => (
12
- <Select {...args}>
13
- <Select.Item value="root-item-1">Root item 1</Select.Item>
14
- <Select.Item value="root-item-2">Root item 2</Select.Item>
15
- <Select.Group label="Group label">
16
- <Select.Item value="group-item-1">Group item 1</Select.Item>
17
- <Select.Item value="group-item-2">Group item 2</Select.Item>
18
- </Select.Group>
19
- <Select.Item value="root-item-3">Root item 3</Select.Item>
20
- </Select>
21
- )
22
-
23
- export const Default = Template.bind({})
24
- Default.args = {
25
- label: 'Label',
26
- hint: 'This is the hint (below)',
27
- hintPosition: 'below',
28
- tooltip: 'This is the tooltip content',
29
- feedback: 'Some instructional feedback'
30
- }
31
-
32
- export const Inactive = Template.bind({})
33
- Inactive.args = { inactive: true }
34
-
35
- export const Placeholder = Template.bind({})
36
- Placeholder.args = { placeholder: 'Please select an item...' }
37
-
38
- export const Error = Template.bind({})
39
- Error.args = { validation: 'error' }
40
- export const Success = Template.bind({})
41
- Success.args = { validation: 'success' }
42
-
43
- export const Uncontrolled = Template.bind({})
44
- Uncontrolled.args = { initialValue: 'root-item-3' }
45
-
46
- // eslint-disable-next-line react/no-multi-comp
47
- export const Controlled = () => {
48
- const [value, setValue] = useState('root-item-3')
49
- return (
50
- <>
51
- <Template value={value} onChange={setValue} />
52
- <Text>Value is: {value}</Text>
53
- </>
54
- )
55
- }
@@ -1,42 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React from 'react'
3
- import PropTypes from 'prop-types'
4
- import { SideNav } from '../../src'
5
- import { EachParentType, parentTypesParams } from '../supports'
6
-
7
- export default {
8
- title: 'SideNav',
9
- component: SideNav
10
- }
11
-
12
- const Template = ({ label = 'Level 1 - 1', ...args }) => (
13
- <SideNav {...args}>
14
- <SideNav.Item href="#level-1-1">{label}</SideNav.Item>
15
- <SideNav.ItemsGroup label="Group 1">
16
- <SideNav.Item href="#level-2-1">Level 2 - 1</SideNav.Item>
17
- <SideNav.Item href="#level-2-2">Level 2 - 2</SideNav.Item>
18
- <SideNav.Item href="#level-2-3">Level 2 - 3</SideNav.Item>
19
- </SideNav.ItemsGroup>
20
- <SideNav.Item href="#level-1-2">Level 1 - 2</SideNav.Item>
21
- <SideNav.ItemsGroup label="Group 2">
22
- <SideNav.Item href="#level-2-4">Level 2 - 4</SideNav.Item>
23
- </SideNav.ItemsGroup>
24
- </SideNav>
25
- )
26
- Template.propTypes = {
27
- ...SideNav.propTypes,
28
- label: PropTypes.string
29
- }
30
-
31
- export const Default = Template.bind({})
32
- Default.storyName = 'SideNav'
33
-
34
- export const NonAccordion = Template.bind({})
35
- NonAccordion.args = { accordion: false }
36
-
37
- export const ParentTypes = (args) => (
38
- <EachParentType componentThemeName="SideNav" {...args}>
39
- {({ label, variant }) => <Template {...args} variant={variant} label={label} />}
40
- </EachParentType>
41
- )
42
- ParentTypes.parameters = parentTypesParams
@@ -1,9 +0,0 @@
1
- import React from 'react'
2
- import { SideNav } from '../../src'
3
-
4
- export default {
5
- title: 'SideNav/Item',
6
- component: SideNav.Item
7
- }
8
-
9
- export const Item = () => <SideNav.Item href="#level-1-1">Level 1 - 1</SideNav.Item>
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import { SideNav } from '../../src'
3
-
4
- export default {
5
- title: 'SideNav/Items Group',
6
- component: SideNav.ItemsGroup
7
- }
8
-
9
- export const ItemsGroup = () => (
10
- <SideNav>
11
- <SideNav.ItemsGroup label="Group 1">
12
- <SideNav.Item href="#level-2-1">Level 2 - 1</SideNav.Item>
13
- <SideNav.Item href="#level-2-2">Level 2 - 2</SideNav.Item>
14
- <SideNav.Item href="#level-2-3">Level 2 - 3</SideNav.Item>
15
- </SideNav.ItemsGroup>
16
- </SideNav>
17
- )