@telus-uds/components-base 1.8.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 (129) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/package.json +4 -4
  3. package/.storybook/main.js +0 -11
  4. package/.storybook/preview.js +0 -37
  5. package/.turbo/turbo-build.log +0 -8
  6. package/.turbo/turbo-lint.log +0 -3
  7. package/CHANGELOG.json +0 -311
  8. package/__fixtures__/Accessible.js +0 -34
  9. package/__fixtures__/Accessible.native.js +0 -34
  10. package/__fixtures__/Theme.jsx +0 -13
  11. package/__fixtures__/Viewport.jsx +0 -17
  12. package/__fixtures__/test-utils.js +0 -25
  13. package/__fixtures__/testTheme.js +0 -1830
  14. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  15. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  16. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  17. package/__tests__/Box/Box.test.jsx +0 -111
  18. package/__tests__/Button/Button.test.jsx +0 -86
  19. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  20. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  21. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  22. package/__tests__/Card/Card.test.jsx +0 -63
  23. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  24. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  25. package/__tests__/Divider/Divider.test.jsx +0 -91
  26. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  27. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  28. package/__tests__/FlexGrid/Col.test.jsx +0 -261
  29. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  30. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  31. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  32. package/__tests__/Icon/Icon.test.jsx +0 -61
  33. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  34. package/__tests__/InputLabel/InputLabel.test.jsx +0 -28
  35. package/__tests__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
  36. package/__tests__/InputSupports/InputSupports.test.jsx +0 -60
  37. package/__tests__/Link/Link.test.jsx +0 -63
  38. package/__tests__/Link/TextButton.test.jsx +0 -35
  39. package/__tests__/List/List.test.jsx +0 -60
  40. package/__tests__/Modal/Modal.test.jsx +0 -47
  41. package/__tests__/Notification/Notification.test.jsx +0 -20
  42. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  43. package/__tests__/Progress/Progress.test.jsx +0 -79
  44. package/__tests__/Radio/Radio.test.jsx +0 -87
  45. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  46. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  47. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  48. package/__tests__/Search/Search.test.jsx +0 -73
  49. package/__tests__/Select/Select.test.jsx +0 -94
  50. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  51. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  52. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  53. package/__tests__/StackView/StackView.test.jsx +0 -216
  54. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  55. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  56. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  57. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  58. package/__tests__/Tags/Tags.test.jsx +0 -327
  59. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  60. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  61. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  62. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  63. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  64. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  65. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  66. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  67. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  68. package/__tests__/Typography/typography.test.jsx +0 -90
  69. package/__tests__/utils/children.test.jsx +0 -128
  70. package/__tests__/utils/containUniqueFields.test.js +0 -25
  71. package/__tests__/utils/input.test.js +0 -375
  72. package/__tests__/utils/props.test.js +0 -36
  73. package/__tests__/utils/semantics.test.jsx +0 -34
  74. package/__tests__/utils/useCopy.test.js +0 -42
  75. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  76. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  77. package/__tests__/utils/useUniqueId.test.js +0 -31
  78. package/babel.config.js +0 -35
  79. package/generate-component-docs.js +0 -72
  80. package/jest.config.js +0 -32
  81. package/stories/A11yText/A11yText.stories.jsx +0 -71
  82. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  83. package/stories/Box/Box.stories.jsx +0 -143
  84. package/stories/Button/Button.stories.jsx +0 -72
  85. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  86. package/stories/Button/ButtonLink.stories.jsx +0 -30
  87. package/stories/Card/Card.stories.jsx +0 -62
  88. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  89. package/stories/Divider/Divider.stories.jsx +0 -68
  90. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  91. package/stories/Feedback/Feedback.stories.jsx +0 -96
  92. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  93. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  94. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  95. package/stories/Icon/Icon.stories.jsx +0 -79
  96. package/stories/IconButton/IconButton.stories.jsx +0 -50
  97. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  98. package/stories/Link/ChevronLink.stories.jsx +0 -48
  99. package/stories/Link/Link.stories.jsx +0 -90
  100. package/stories/Link/TextButton.stories.jsx +0 -79
  101. package/stories/List/List.stories.jsx +0 -117
  102. package/stories/Modal/Modal.stories.jsx +0 -54
  103. package/stories/Notification/Notification.stories.jsx +0 -82
  104. package/stories/Pagination/Pagination.stories.jsx +0 -64
  105. package/stories/Progress/Progress.stories.jsx +0 -93
  106. package/stories/Radio/Radio.stories.jsx +0 -100
  107. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  108. package/stories/Search/Search.stories.jsx +0 -66
  109. package/stories/Select/Select.stories.jsx +0 -55
  110. package/stories/SideNav/SideNav.stories.jsx +0 -42
  111. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  112. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  113. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  114. package/stories/Spacer/Spacer.stories.jsx +0 -38
  115. package/stories/StackView/StackView.stories.jsx +0 -75
  116. package/stories/StackView/StackWrap.stories.jsx +0 -64
  117. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  118. package/stories/Tabs/Tabs.stories.jsx +0 -98
  119. package/stories/Tags/Tags.stories.jsx +0 -69
  120. package/stories/TextInput/TextArea.stories.jsx +0 -101
  121. package/stories/TextInput/TextInput.stories.jsx +0 -141
  122. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  123. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  124. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  125. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  126. package/stories/Typography/Typography.stories.jsx +0 -49
  127. package/stories/platform-supports.jsx +0 -32
  128. package/stories/platform-supports.native.jsx +0 -3
  129. 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
- )