@utilitywarehouse/hearth-react-native 0.27.2 → 0.28.0-testid-fix-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 (155) hide show
  1. package/.turbo/turbo-build.log +5 -4
  2. package/.turbo/turbo-lint.log +70 -69
  3. package/CHANGELOG.md +149 -0
  4. package/build/components/Button/ButtonRoot.js +8 -0
  5. package/build/components/Combobox/Combobox.context.d.ts +13 -0
  6. package/build/components/Combobox/Combobox.context.js +9 -0
  7. package/build/components/Combobox/Combobox.d.ts +6 -0
  8. package/build/components/Combobox/Combobox.js +246 -0
  9. package/build/components/Combobox/Combobox.props.d.ts +180 -0
  10. package/build/components/Combobox/Combobox.props.js +1 -0
  11. package/build/components/Combobox/ComboboxOption.d.ts +6 -0
  12. package/build/components/Combobox/ComboboxOption.js +56 -0
  13. package/build/components/Combobox/index.d.ts +4 -0
  14. package/build/components/Combobox/index.js +3 -0
  15. package/build/components/DatePicker/TimePicker.d.ts +3 -0
  16. package/build/components/DatePicker/TimePicker.js +84 -0
  17. package/build/components/DatePicker/time-picker/animated-math.d.ts +4 -0
  18. package/build/components/DatePicker/time-picker/animated-math.js +19 -0
  19. package/build/components/DatePicker/time-picker/period-native.d.ts +6 -0
  20. package/build/components/DatePicker/time-picker/period-native.js +17 -0
  21. package/build/components/DatePicker/time-picker/period-picker.d.ts +6 -0
  22. package/build/components/DatePicker/time-picker/period-picker.js +10 -0
  23. package/build/components/DatePicker/time-picker/period-web.d.ts +6 -0
  24. package/build/components/DatePicker/time-picker/period-web.js +21 -0
  25. package/build/components/DatePicker/time-picker/wheel-native.d.ts +8 -0
  26. package/build/components/DatePicker/time-picker/wheel-native.js +19 -0
  27. package/build/components/DatePicker/time-picker/wheel-picker/index.d.ts +2 -0
  28. package/build/components/DatePicker/time-picker/wheel-picker/index.js +2 -0
  29. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker-item.d.ts +16 -0
  30. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker-item.js +97 -0
  31. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker.d.ts +21 -0
  32. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker.js +88 -0
  33. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker.style.d.ts +23 -0
  34. package/build/components/DatePicker/time-picker/wheel-picker/wheel-picker.style.js +21 -0
  35. package/build/components/DatePicker/time-picker/wheel-web.d.ts +8 -0
  36. package/build/components/DatePicker/time-picker/wheel-web.js +146 -0
  37. package/build/components/DatePicker/time-picker/wheel.d.ts +8 -0
  38. package/build/components/DatePicker/time-picker/wheel.js +10 -0
  39. package/build/components/List/List.js +2 -2
  40. package/build/components/Modal/Modal.js +31 -42
  41. package/build/components/Modal/Modal.web.js +3 -3
  42. package/build/components/Pagination/Pagination.d.ts +6 -0
  43. package/build/components/Pagination/Pagination.js +125 -0
  44. package/build/components/Pagination/Pagination.props.d.ts +26 -0
  45. package/build/components/Pagination/Pagination.props.js +1 -0
  46. package/build/components/Pagination/Pagination.utils.d.ts +2 -0
  47. package/build/components/Pagination/Pagination.utils.js +20 -0
  48. package/build/components/Pagination/Pagination.utils.test.d.ts +1 -0
  49. package/build/components/Pagination/Pagination.utils.test.js +16 -0
  50. package/build/components/Pagination/index.d.ts +2 -0
  51. package/build/components/Pagination/index.js +1 -0
  52. package/build/components/SafeAreaView/SafeAreaView.d.ts +5 -0
  53. package/build/components/SafeAreaView/SafeAreaView.js +117 -0
  54. package/build/components/SafeAreaView/SafeAreaView.props.d.ts +17 -0
  55. package/build/components/SafeAreaView/SafeAreaView.props.js +1 -0
  56. package/build/components/SafeAreaView/index.d.ts +2 -0
  57. package/build/components/SafeAreaView/index.js +1 -0
  58. package/build/components/Select/Select.d.ts +1 -1
  59. package/build/components/Select/Select.js +6 -5
  60. package/build/components/Select/Select.props.d.ts +4 -0
  61. package/build/components/Select/SelectOption.d.ts +1 -1
  62. package/build/components/Select/SelectOption.js +2 -2
  63. package/build/components/Table/Table.context.d.ts +12 -0
  64. package/build/components/Table/Table.context.js +9 -0
  65. package/build/components/Table/Table.d.ts +6 -0
  66. package/build/components/Table/Table.js +71 -0
  67. package/build/components/Table/Table.props.d.ts +56 -0
  68. package/build/components/Table/Table.props.js +1 -0
  69. package/build/components/Table/Table.utils.d.ts +5 -0
  70. package/build/components/Table/Table.utils.js +48 -0
  71. package/build/components/Table/Table.utils.test.d.ts +1 -0
  72. package/build/components/Table/Table.utils.test.js +71 -0
  73. package/build/components/Table/TableBody.d.ts +6 -0
  74. package/build/components/Table/TableBody.js +16 -0
  75. package/build/components/Table/TableCell.d.ts +10 -0
  76. package/build/components/Table/TableCell.js +44 -0
  77. package/build/components/Table/TableHeader.d.ts +6 -0
  78. package/build/components/Table/TableHeader.js +24 -0
  79. package/build/components/Table/TableHeaderCell.d.ts +10 -0
  80. package/build/components/Table/TableHeaderCell.js +97 -0
  81. package/build/components/Table/TablePagination.d.ts +6 -0
  82. package/build/components/Table/TablePagination.js +7 -0
  83. package/build/components/Table/TableRow.d.ts +8 -0
  84. package/build/components/Table/TableRow.js +25 -0
  85. package/build/components/Table/index.d.ts +8 -0
  86. package/build/components/Table/index.js +7 -0
  87. package/build/components/Timeline/Timeline.d.ts +6 -0
  88. package/build/components/Timeline/Timeline.js +34 -0
  89. package/build/components/Timeline/Timeline.props.d.ts +47 -0
  90. package/build/components/Timeline/Timeline.props.js +1 -0
  91. package/build/components/Timeline/TimelineItem.d.ts +6 -0
  92. package/build/components/Timeline/TimelineItem.js +235 -0
  93. package/build/components/Timeline/index.d.ts +3 -0
  94. package/build/components/Timeline/index.js +2 -0
  95. package/build/components/VerificationInput/VerificationInput.js +3 -3
  96. package/build/components/index.d.ts +5 -0
  97. package/build/components/index.js +5 -0
  98. package/build/tokens/components/dark/timeline.d.ts +2 -2
  99. package/build/tokens/components/dark/timeline.js +2 -2
  100. package/docs/components/AllComponents.web.tsx +106 -23
  101. package/docs/llm-docs/unistyles-llms-full.txt +1132 -534
  102. package/docs/llm-docs/unistyles-llms-small.txt +37 -37
  103. package/package.json +4 -4
  104. package/src/components/Button/Button.stories.tsx +43 -7
  105. package/src/components/Button/ButtonRoot.tsx +8 -0
  106. package/src/components/Combobox/Combobox.context.ts +26 -0
  107. package/src/components/Combobox/Combobox.docs.mdx +277 -0
  108. package/src/components/Combobox/Combobox.figma.tsx +60 -0
  109. package/src/components/Combobox/Combobox.props.ts +187 -0
  110. package/src/components/Combobox/Combobox.stories.tsx +233 -0
  111. package/src/components/Combobox/Combobox.tsx +446 -0
  112. package/src/components/Combobox/ComboboxOption.tsx +100 -0
  113. package/src/components/Combobox/index.ts +9 -0
  114. package/src/components/List/List.tsx +5 -4
  115. package/src/components/Modal/Modal.tsx +67 -74
  116. package/src/components/Modal/Modal.web.tsx +3 -3
  117. package/src/components/Pagination/Pagination.docs.mdx +99 -0
  118. package/src/components/Pagination/Pagination.figma.tsx +20 -0
  119. package/src/components/Pagination/Pagination.props.ts +28 -0
  120. package/src/components/Pagination/Pagination.stories.tsx +88 -0
  121. package/src/components/Pagination/Pagination.tsx +248 -0
  122. package/src/components/Pagination/Pagination.utils.test.ts +20 -0
  123. package/src/components/Pagination/Pagination.utils.ts +37 -0
  124. package/src/components/Pagination/index.ts +2 -0
  125. package/src/components/SafeAreaView/SafeAreaView.props.ts +20 -0
  126. package/src/components/SafeAreaView/SafeAreaView.tsx +173 -0
  127. package/src/components/SafeAreaView/index.ts +2 -0
  128. package/src/components/Select/Select.props.ts +4 -0
  129. package/src/components/Select/Select.tsx +35 -28
  130. package/src/components/Select/SelectOption.tsx +2 -0
  131. package/src/components/Table/Table.context.tsx +23 -0
  132. package/src/components/Table/Table.docs.mdx +239 -0
  133. package/src/components/Table/Table.figma.tsx +65 -0
  134. package/src/components/Table/Table.props.ts +65 -0
  135. package/src/components/Table/Table.stories.tsx +399 -0
  136. package/src/components/Table/Table.tsx +127 -0
  137. package/src/components/Table/Table.utils.test.ts +82 -0
  138. package/src/components/Table/Table.utils.ts +72 -0
  139. package/src/components/Table/TableBody.tsx +25 -0
  140. package/src/components/Table/TableCell.tsx +67 -0
  141. package/src/components/Table/TableHeader.tsx +41 -0
  142. package/src/components/Table/TableHeaderCell.tsx +136 -0
  143. package/src/components/Table/TablePagination.tsx +10 -0
  144. package/src/components/Table/TableRow.tsx +42 -0
  145. package/src/components/Table/index.ts +16 -0
  146. package/src/components/Timeline/Timeline.docs.mdx +177 -0
  147. package/src/components/Timeline/Timeline.figma.tsx +89 -0
  148. package/src/components/Timeline/Timeline.props.ts +51 -0
  149. package/src/components/Timeline/Timeline.stories.tsx +102 -0
  150. package/src/components/Timeline/Timeline.tsx +48 -0
  151. package/src/components/Timeline/TimelineItem.tsx +293 -0
  152. package/src/components/Timeline/index.ts +9 -0
  153. package/src/components/VerificationInput/VerificationInput.tsx +3 -0
  154. package/src/components/index.ts +5 -0
  155. package/src/tokens/components/dark/timeline.ts +2 -2
@@ -0,0 +1,102 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Timeline, TimelineItem } from '.';
3
+ import { VariantTitle } from '../../../docs/components';
4
+ import { Badge } from '../Badge';
5
+ import { BodyText } from '../BodyText';
6
+ import { Box } from '../Box';
7
+ import { Card } from '../Card';
8
+ import { Flex } from '../Flex';
9
+
10
+ const meta = {
11
+ title: 'Stories / Timeline',
12
+ component: Timeline,
13
+ argTypes: {
14
+ variant: {
15
+ options: ['static', 'progress'],
16
+ control: 'select',
17
+ description: 'The timeline indicator style.',
18
+ },
19
+ },
20
+ args: {
21
+ variant: 'progress',
22
+ },
23
+ } satisfies Meta<typeof Timeline>;
24
+
25
+ export default meta;
26
+ type Story = StoryObj<typeof meta>;
27
+
28
+ export const Playground: Story = {
29
+ render: args => {
30
+ const isProgress = args.variant === 'progress';
31
+
32
+ return (
33
+ <Box style={{ width: 280 }}>
34
+ <Timeline {...args}>
35
+ <TimelineItem
36
+ label="Order placed"
37
+ helperText="We have received your request"
38
+ state={isProgress ? 'complete' : undefined}
39
+ />
40
+ <TimelineItem
41
+ label="Checking details"
42
+ helperText="We are validating the information"
43
+ state={isProgress ? 'complete' : undefined}
44
+ />
45
+ <TimelineItem
46
+ label="Engineer booked"
47
+ helperText="Your appointment has been reserved"
48
+ state={isProgress ? 'active' : undefined}
49
+ />
50
+ <TimelineItem
51
+ label="Service live"
52
+ helperText="Everything is ready to go"
53
+ state={isProgress ? 'incomplete' : undefined}
54
+ />
55
+ </Timeline>
56
+ </Box>
57
+ );
58
+ },
59
+ };
60
+
61
+ export const Variants: Story = {
62
+ render: () => (
63
+ <Flex direction="column" spacing="xl" style={{ width: 320 }}>
64
+ <VariantTitle title="Progress">
65
+ <Timeline variant="progress">
66
+ <TimelineItem label="Account created" helperText="Done" state="complete" />
67
+ <TimelineItem label="Documents uploaded" helperText="Done" state="complete" />
68
+ <TimelineItem label="Verification" helperText="In progress" state="active" />
69
+ <TimelineItem label="Decision" helperText="Pending" state="incomplete" />
70
+ </Timeline>
71
+ </VariantTitle>
72
+ <VariantTitle title="Static">
73
+ <Timeline variant="static">
74
+ <TimelineItem label="Collected" helperText="08:15" />
75
+ <TimelineItem label="Sorted" helperText="10:40" />
76
+ <TimelineItem label="Out for delivery" helperText="13:25" />
77
+ </Timeline>
78
+ </VariantTitle>
79
+ </Flex>
80
+ ),
81
+ };
82
+
83
+ export const WithCustomContent: Story = {
84
+ render: () => (
85
+ <Box style={{ width: 320 }}>
86
+ <Timeline variant="progress">
87
+ <TimelineItem
88
+ label="Application started"
89
+ helperText="We have saved your draft"
90
+ state="complete"
91
+ />
92
+ <TimelineItem label="Additional information" helperText="Action needed" state="active">
93
+ <Card variant="subtle" spacing="md">
94
+ <Badge>Required</Badge>
95
+ <BodyText size="sm">Upload proof of address to continue.</BodyText>
96
+ </Card>
97
+ </TimelineItem>
98
+ <TimelineItem label="Review complete" helperText="Pending" state="incomplete" />
99
+ </Timeline>
100
+ </Box>
101
+ ),
102
+ };
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { View, ViewStyle } from 'react-native';
3
+ import { StyleSheet } from 'react-native-unistyles';
4
+ import type { TimelineItemPosition, TimelineItemProps, TimelineProps } from './Timeline.props';
5
+
6
+ const getItemPosition = (index: number, count: number): TimelineItemPosition => {
7
+ if (count <= 1) {
8
+ return 'single';
9
+ }
10
+
11
+ if (index === 0) {
12
+ return 'start';
13
+ }
14
+
15
+ if (index === count - 1) {
16
+ return 'end';
17
+ }
18
+
19
+ return 'middle';
20
+ };
21
+
22
+ const Timeline = ({ children, variant = 'static', style, ...rest }: TimelineProps) => {
23
+ const childElements = React.Children.toArray(children).filter(React.isValidElement);
24
+
25
+ return (
26
+ <View accessibilityRole="list" style={[styles.root, style as ViewStyle]} {...rest}>
27
+ {childElements.map((child, index) => {
28
+ const position = getItemPosition(index, childElements.length);
29
+
30
+ return React.cloneElement(child as React.ReactElement<TimelineItemProps>, {
31
+ key: child.key ?? `timeline-item-${index}`,
32
+ position,
33
+ variant,
34
+ });
35
+ })}
36
+ </View>
37
+ );
38
+ };
39
+
40
+ Timeline.displayName = 'Timeline';
41
+
42
+ const styles = StyleSheet.create(() => ({
43
+ root: {
44
+ width: '100%',
45
+ },
46
+ }));
47
+
48
+ export default Timeline;
@@ -0,0 +1,293 @@
1
+ import { TickSmallIcon } from '@utilitywarehouse/hearth-react-native-icons';
2
+ import { View, ViewStyle } from 'react-native';
3
+ import { StyleSheet } from 'react-native-unistyles';
4
+ import { BodyText } from '../BodyText';
5
+ import { Icon } from '../Icon';
6
+ import type { TimelineItemProps } from './Timeline.props';
7
+
8
+ const TimelineItem = ({
9
+ children,
10
+ helperText,
11
+ label,
12
+ position = 'single',
13
+ state = 'incomplete',
14
+ style,
15
+ variant = 'static',
16
+ accessibilityLabel: accessibilityLabelProp,
17
+ accessible: accessibleProp,
18
+ ...rest
19
+ }: TimelineItemProps) => {
20
+ styles.useVariants({ position, state, variant });
21
+
22
+ const hasCustomContent = Boolean(children);
23
+
24
+ const computedAccessibilityLabel = [
25
+ label,
26
+ helperText,
27
+ variant === 'progress' ? `Step ${state}` : undefined,
28
+ ]
29
+ .filter(Boolean)
30
+ .join(', ');
31
+
32
+ return (
33
+ <View
34
+ style={[styles.item, style as ViewStyle]}
35
+ {...rest}
36
+ accessible={accessibleProp ?? !hasCustomContent}
37
+ accessibilityLabel={
38
+ (accessibleProp ?? !hasCustomContent)
39
+ ? (accessibilityLabelProp ?? computedAccessibilityLabel)
40
+ : undefined
41
+ }
42
+ >
43
+ <View style={styles.indicatorColumn}>
44
+ {(position === 'middle' || position === 'end') && <View style={styles.topConnector} />}
45
+ <View style={styles.circle}>
46
+ {variant === 'progress' && state === 'complete' ? (
47
+ <Icon as={TickSmallIcon} width={20} height={20} style={styles.completeIcon} />
48
+ ) : variant === 'progress' && state === 'active' ? (
49
+ <View style={styles.activeInnerDot} />
50
+ ) : null}
51
+ </View>
52
+ {(position === 'start' || position === 'middle') && <View style={styles.bottomConnector} />}
53
+ </View>
54
+ <View style={styles.content}>
55
+ <View
56
+ style={styles.textContent}
57
+ accessible={hasCustomContent}
58
+ accessibilityLabel={
59
+ hasCustomContent ? (accessibilityLabelProp ?? computedAccessibilityLabel) : undefined
60
+ }
61
+ >
62
+ <BodyText size="md" weight="semibold" style={styles.label}>
63
+ {label}
64
+ </BodyText>
65
+ {helperText ? (
66
+ <BodyText size="md" style={styles.helperText}>
67
+ {helperText}
68
+ </BodyText>
69
+ ) : null}
70
+ </View>
71
+ {children ? <View style={styles.customContent}>{children}</View> : null}
72
+ </View>
73
+ </View>
74
+ );
75
+ };
76
+
77
+ TimelineItem.displayName = 'TimelineItem';
78
+
79
+ const styles = StyleSheet.create(theme => ({
80
+ item: {
81
+ flexDirection: 'row',
82
+ gap: theme.components.timeline.gap,
83
+ width: '100%',
84
+ },
85
+ indicatorColumn: {
86
+ alignItems: 'center',
87
+ variants: {
88
+ variant: {
89
+ static: {
90
+ width: theme.components.timeline.static.circle.width,
91
+ },
92
+ progress: {
93
+ width: theme.components.timeline.progress.circle.width,
94
+ },
95
+ },
96
+ },
97
+ },
98
+ topConnector: {
99
+ width: theme.components.timeline.bar.width,
100
+ variants: {
101
+ variant: {
102
+ static: {
103
+ height: theme.components.timeline.static.circle.height / 2,
104
+ backgroundColor: theme.color.surface.brand.default,
105
+ },
106
+ progress: {
107
+ height: 0,
108
+ },
109
+ },
110
+ state: {
111
+ complete: {},
112
+ active: {},
113
+ incomplete: {},
114
+ },
115
+ },
116
+ compoundVariants: [
117
+ {
118
+ variant: 'progress',
119
+ state: 'complete',
120
+ styles: {
121
+ backgroundColor: theme.color.surface.brand.default,
122
+ },
123
+ },
124
+ {
125
+ variant: 'progress',
126
+ state: 'active',
127
+ styles: {
128
+ backgroundColor: theme.color.surface.brand.default,
129
+ },
130
+ },
131
+ {
132
+ variant: 'progress',
133
+ state: 'incomplete',
134
+ styles: {
135
+ backgroundColor: theme.color.border.subtle,
136
+ },
137
+ },
138
+ ],
139
+ },
140
+ bottomConnector: {
141
+ flex: 1,
142
+ minHeight: theme.components.timeline.content.paddingBottom,
143
+ width: theme.components.timeline.bar.width,
144
+ variants: {
145
+ variant: {
146
+ static: {
147
+ backgroundColor: theme.color.surface.brand.default,
148
+ },
149
+ progress: {},
150
+ },
151
+ state: {
152
+ complete: {},
153
+ active: {},
154
+ incomplete: {},
155
+ },
156
+ },
157
+ compoundVariants: [
158
+ {
159
+ variant: 'progress',
160
+ state: 'complete',
161
+ styles: {
162
+ backgroundColor: theme.color.surface.brand.default,
163
+ },
164
+ },
165
+ {
166
+ variant: 'progress',
167
+ state: 'active',
168
+ styles: {
169
+ backgroundColor: theme.color.border.subtle,
170
+ },
171
+ },
172
+ {
173
+ variant: 'progress',
174
+ state: 'incomplete',
175
+ styles: {
176
+ backgroundColor: theme.color.border.subtle,
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ circle: {
182
+ borderRadius: theme.borderRadius.full,
183
+ alignItems: 'center',
184
+ justifyContent: 'center',
185
+ padding: 2,
186
+ variants: {
187
+ variant: {
188
+ static: {
189
+ width: theme.components.timeline.static.circle.width,
190
+ height: theme.components.timeline.static.circle.height,
191
+ backgroundColor: theme.color.surface.brand.default,
192
+ },
193
+ progress: {
194
+ width: theme.components.timeline.progress.circle.width,
195
+ height: theme.components.timeline.progress.circle.height,
196
+ },
197
+ },
198
+ state: {
199
+ complete: {},
200
+ active: {},
201
+ incomplete: {},
202
+ },
203
+ },
204
+ compoundVariants: [
205
+ {
206
+ variant: 'progress',
207
+ state: 'complete',
208
+ styles: {
209
+ backgroundColor: theme.color.surface.brand.default,
210
+ },
211
+ },
212
+ {
213
+ variant: 'progress',
214
+ state: 'active',
215
+ styles: {
216
+ backgroundColor: theme.color.surface.neutral.subtle,
217
+ borderWidth: theme.borderWidth[2],
218
+ borderColor: theme.color.surface.brand.default,
219
+ },
220
+ },
221
+ {
222
+ variant: 'progress',
223
+ state: 'incomplete',
224
+ styles: {
225
+ backgroundColor: theme.color.surface.neutral.subtle,
226
+ borderWidth: theme.borderWidth[2],
227
+ borderColor: theme.color.border.subtle,
228
+ },
229
+ },
230
+ ],
231
+ },
232
+ activeInnerDot: {
233
+ width: '100%',
234
+ height: '100%',
235
+ borderRadius: theme.borderRadius.full,
236
+ backgroundColor: theme.color.surface.brand.default,
237
+ },
238
+ completeIcon: {
239
+ color: theme.color.text.inverted,
240
+ },
241
+ content: {
242
+ flex: 1,
243
+ minWidth: 0,
244
+ gap: theme.components.timeline.content.gap,
245
+ variants: {
246
+ position: {
247
+ single: {
248
+ paddingBottom: 0,
249
+ },
250
+ start: {
251
+ paddingBottom: theme.components.timeline.content.paddingBottom,
252
+ },
253
+ middle: {
254
+ paddingBottom: theme.components.timeline.content.paddingBottom,
255
+ },
256
+ end: {
257
+ paddingBottom: 0,
258
+ },
259
+ },
260
+ variant: {
261
+ static: {
262
+ paddingTop: 0,
263
+ },
264
+ progress: {
265
+ paddingTop: theme.components.timeline.content.paddingTop,
266
+ },
267
+ },
268
+ },
269
+ compoundVariants: [
270
+ {
271
+ position: 'start',
272
+ variant: 'static',
273
+ styles: {
274
+ marginTop: -6,
275
+ },
276
+ },
277
+ ],
278
+ },
279
+ textContent: {
280
+ width: '100%',
281
+ },
282
+ label: {
283
+ color: theme.color.text.primary,
284
+ },
285
+ helperText: {
286
+ color: theme.color.text.secondary,
287
+ },
288
+ customContent: {
289
+ width: '100%',
290
+ },
291
+ }));
292
+
293
+ export default TimelineItem;
@@ -0,0 +1,9 @@
1
+ export { default as Timeline } from './Timeline';
2
+ export { default as TimelineItem } from './TimelineItem';
3
+ export type {
4
+ TimelineItemPosition,
5
+ TimelineItemProps,
6
+ TimelineItemState,
7
+ TimelineProps,
8
+ TimelineVariant,
9
+ } from './Timeline.props';
@@ -23,6 +23,7 @@ const VerificationInput = forwardRef<VerificationInputHandle, VerificationInputP
23
23
  secureTextEntry = false,
24
24
  autoFocus = false,
25
25
  style,
26
+ testID,
26
27
  ...props
27
28
  },
28
29
  ref
@@ -239,6 +240,7 @@ const VerificationInput = forwardRef<VerificationInputHandle, VerificationInputP
239
240
  maxLength={length}
240
241
  caretHidden
241
242
  style={styles.hiddenInput}
243
+ testID={testID}
242
244
  />
243
245
  {slots.map(index => {
244
246
  const char = displayValue[index] || '';
@@ -260,6 +262,7 @@ const VerificationInput = forwardRef<VerificationInputHandle, VerificationInputP
260
262
  inputRef.current?.focus();
261
263
  setSelectionIndex(index);
262
264
  }}
265
+ testID={testID ? `${testID}-${index}` : undefined}
263
266
  />
264
267
  );
265
268
  })}
@@ -12,6 +12,7 @@ export * from './Card';
12
12
  export * from './Carousel';
13
13
  export * from './Center';
14
14
  export * from './Checkbox';
15
+ export * from './Combobox';
15
16
  export * from './Container';
16
17
  export * from './CurrencyInput';
17
18
  export * from './DateInput';
@@ -40,20 +41,24 @@ export * from './Link';
40
41
  export * from './List';
41
42
  export * from './Menu';
42
43
  export * from './Modal';
44
+ export * from './Pagination';
43
45
  export * from './PillGroup';
44
46
  export * from './ProgressBar';
45
47
  export * from './ProgressStepper';
46
48
  export * from './Radio';
47
49
  export * from './RadioCard';
50
+ export * from './SafeAreaView';
48
51
  export * from './SectionHeader';
49
52
  export * from './SegmentedControl';
50
53
  export * from './Select';
51
54
  export * from './Skeleton';
52
55
  export * from './Spinner';
53
56
  export * from './Switch';
57
+ export * from './Table';
54
58
  export * from './Tabs';
55
59
  export * from './Textarea';
56
60
  export * from './ThemedImage';
61
+ export * from './Timeline';
57
62
  export * from './TimePicker';
58
63
  export * from './TimePickerInput';
59
64
  export * from './Toast';
@@ -14,8 +14,8 @@ export default {
14
14
  gap: 12,
15
15
  progress: {
16
16
  circle: {
17
- height: 24,
18
- width: 24,
17
+ height: 28,
18
+ width: 28,
19
19
  },
20
20
  },
21
21
  static: {