@hero-design/rn 7.2.1 → 7.3.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 (190) hide show
  1. package/.expo/packager-info.json +1 -1
  2. package/.expo/prebuild/cached-packages.json +4 -0
  3. package/.expo/xcodebuild-error.log +2 -0
  4. package/.expo/xcodebuild.log +11199 -0
  5. package/.turbo/turbo-build.log +8 -8
  6. package/.turbo/turbo-build:types.log +2 -0
  7. package/.turbo/turbo-test.log +131 -0
  8. package/.turbo/turbo-type-check.log +7 -0
  9. package/es/index.js +2393 -457
  10. package/jest.config.js +1 -1
  11. package/lib/index.js +2407 -466
  12. package/package.json +4 -2
  13. package/playground/components/Avatar.tsx +102 -0
  14. package/playground/components/Badge.tsx +146 -9
  15. package/playground/components/Button.tsx +138 -35
  16. package/playground/components/Card.tsx +39 -13
  17. package/playground/components/Collapse.tsx +99 -0
  18. package/playground/components/Drawer.tsx +32 -0
  19. package/playground/components/FAB.tsx +15 -0
  20. package/playground/components/IconButton.tsx +67 -0
  21. package/playground/components/Progress.tsx +95 -0
  22. package/playground/components/Tabs.tsx +106 -14
  23. package/playground/components/Tag.tsx +45 -0
  24. package/playground/index.tsx +18 -0
  25. package/src/components/Avatar/StyledAvatar.tsx +61 -0
  26. package/src/components/Avatar/__tests__/StyledAvatar.spec.tsx +48 -0
  27. package/src/components/Avatar/__tests__/__snapshots__/StyledAvatar.spec.tsx.snap +87 -0
  28. package/src/components/Avatar/__tests__/__snapshots__/index.spec.tsx.snap +88 -0
  29. package/src/components/Avatar/__tests__/index.spec.tsx +26 -0
  30. package/src/components/Avatar/index.tsx +71 -0
  31. package/src/components/Badge/Status.tsx +77 -0
  32. package/src/components/Badge/StyledBadge.tsx +38 -26
  33. package/src/components/Badge/__tests__/Badge.spec.tsx +16 -0
  34. package/src/components/Badge/__tests__/Status.spec.tsx +27 -0
  35. package/src/components/Badge/__tests__/__snapshots__/Badge.spec.tsx.snap +133 -52
  36. package/src/components/Badge/__tests__/__snapshots__/Status.spec.tsx.snap +89 -0
  37. package/src/components/Badge/index.tsx +77 -19
  38. package/src/components/Button/Button.tsx +163 -0
  39. package/src/components/Button/LoadingIndicator/StyledLoadingIndicator.tsx +58 -0
  40. package/src/components/Button/LoadingIndicator/__tests__/StyledLoadingIndicator.spec.tsx +20 -0
  41. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/StyledLoadingIndicator.spec.tsx.snap +101 -0
  42. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/index.spec.tsx.snap +606 -0
  43. package/src/components/Button/LoadingIndicator/__tests__/index.spec.tsx +24 -0
  44. package/src/components/Button/LoadingIndicator/index.tsx +140 -0
  45. package/src/components/Button/StyledButton.tsx +254 -0
  46. package/src/components/Button/__tests__/Button.spec.tsx +86 -0
  47. package/src/components/Button/__tests__/{index.spec.tsx → IconButton.spec.tsx} +0 -0
  48. package/src/components/Button/__tests__/StyledButton.spec.tsx +154 -0
  49. package/src/components/Button/__tests__/__snapshots__/{index.spec.tsx.snap → IconButton.spec.tsx.snap} +0 -0
  50. package/src/components/Button/__tests__/__snapshots__/StyledButton.spec.tsx.snap +895 -0
  51. package/src/components/Button/index.tsx +10 -2
  52. package/src/components/Card/StyledCard.tsx +27 -5
  53. package/src/components/Card/__tests__/StyledCard.spec.tsx +15 -3
  54. package/src/components/Card/__tests__/__snapshots__/StyledCard.spec.tsx.snap +34 -2
  55. package/src/components/Card/__tests__/index.spec.tsx +16 -21
  56. package/src/components/Card/index.tsx +15 -2
  57. package/src/components/Collapse/StyledCollapse.tsx +15 -0
  58. package/src/components/Collapse/__tests__/StyledCollapse.spec.tsx +26 -0
  59. package/src/components/Collapse/__tests__/__snapshots__/StyledCollapse.spec.tsx.snap +37 -0
  60. package/src/components/Collapse/__tests__/__snapshots__/index.spec.tsx.snap +84 -0
  61. package/src/components/Collapse/__tests__/index.spec.tsx +42 -0
  62. package/src/components/Collapse/index.tsx +109 -0
  63. package/src/components/Divider/index.tsx +1 -1
  64. package/src/components/Drawer/StyledDrawer.tsx +39 -0
  65. package/src/components/Drawer/__tests__/__snapshots__/index.spec.tsx.snap +244 -0
  66. package/src/components/Drawer/__tests__/index.spec.tsx +37 -0
  67. package/src/components/Drawer/index.tsx +93 -0
  68. package/src/components/FAB/ActionGroup/__tests__/__snapshots__/index.spec.tsx.snap +78 -62
  69. package/src/components/FAB/ActionGroup/__tests__/index.spec.tsx +2 -0
  70. package/src/components/FAB/ActionGroup/index.tsx +13 -0
  71. package/src/components/FAB/FAB.tsx +63 -13
  72. package/src/components/FAB/StyledFAB.tsx +25 -6
  73. package/src/components/FAB/__tests__/__snapshots__/AnimatedFABIcon.spec.tsx.snap +6 -2
  74. package/src/components/FAB/__tests__/__snapshots__/StyledFAB.spec.tsx.snap +7 -3
  75. package/src/components/FAB/__tests__/__snapshots__/index.spec.tsx.snap +88 -6
  76. package/src/components/FAB/__tests__/index.spec.tsx +16 -0
  77. package/src/components/Progress/ProgressBar.tsx +73 -0
  78. package/src/components/Progress/ProgressCircle.tsx +165 -0
  79. package/src/components/Progress/StyledProgressBar.tsx +21 -0
  80. package/src/components/Progress/StyledProgressCircle.tsx +66 -0
  81. package/src/components/Progress/__tests__/__snapshots__/index.spec.js.snap +641 -0
  82. package/src/components/Progress/__tests__/index.spec.js +46 -0
  83. package/src/components/Progress/index.tsx +6 -0
  84. package/src/components/Progress/types.ts +1 -0
  85. package/src/components/Tabs/ActiveTabIndicator.tsx +37 -0
  86. package/src/components/Tabs/ScrollableTabs.tsx +216 -0
  87. package/src/components/Tabs/StyledScrollableTabs.tsx +60 -0
  88. package/src/components/Tabs/StyledTabs.tsx +30 -44
  89. package/src/components/Tabs/__tests__/ScrollableTabs.spec.tsx +84 -0
  90. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabs.spec.tsx.snap +591 -0
  91. package/src/components/Tabs/__tests__/__snapshots__/index.spec.tsx.snap +317 -224
  92. package/src/components/Tabs/__tests__/index.spec.tsx +22 -21
  93. package/src/components/Tabs/index.tsx +155 -114
  94. package/src/components/Tabs/utils.ts +13 -0
  95. package/src/components/Tag/StyledTag.tsx +35 -0
  96. package/src/components/Tag/__tests__/Tag.spec.tsx +41 -0
  97. package/src/components/Tag/__tests__/__snapshots__/Tag.spec.tsx.snap +153 -0
  98. package/src/components/Tag/index.tsx +41 -0
  99. package/src/components/Typography/Text/index.tsx +1 -1
  100. package/src/index.ts +10 -0
  101. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +181 -22
  102. package/src/theme/components/avatar.ts +40 -0
  103. package/src/theme/components/badge.ts +14 -16
  104. package/src/theme/components/button.ts +57 -0
  105. package/src/theme/components/card.ts +5 -5
  106. package/src/theme/components/drawer.ts +24 -0
  107. package/src/theme/components/fab.ts +9 -2
  108. package/src/theme/components/progress.ts +27 -0
  109. package/src/theme/components/tabs.ts +22 -7
  110. package/src/theme/components/tag.ts +39 -0
  111. package/src/theme/global/borders.ts +13 -1
  112. package/src/theme/global/colors.ts +6 -1
  113. package/src/theme/global/index.ts +3 -1
  114. package/src/theme/global/scale.ts +3 -0
  115. package/src/theme/index.ts +15 -0
  116. package/src/utils/hooks.ts +10 -0
  117. package/testUtils/setup.tsx +43 -0
  118. package/types/playground/components/Avatar.d.ts +2 -0
  119. package/types/playground/components/Collapse.d.ts +2 -0
  120. package/types/playground/components/Drawer.d.ts +2 -0
  121. package/types/playground/components/IconButton.d.ts +2 -0
  122. package/types/playground/components/Progress.d.ts +2 -0
  123. package/types/playground/components/Tag.d.ts +2 -0
  124. package/types/src/components/Avatar/StyledAvatar.d.ts +46 -0
  125. package/types/src/components/Avatar/__tests__/StyledAvatar.spec.d.ts +1 -0
  126. package/types/src/components/Avatar/__tests__/index.spec.d.ts +1 -0
  127. package/types/src/components/Avatar/index.d.ts +25 -0
  128. package/types/src/components/Badge/Status.d.ts +24 -0
  129. package/types/src/components/Badge/StyledBadge.d.ts +17 -9
  130. package/types/src/components/Badge/__tests__/Status.spec.d.ts +1 -0
  131. package/types/src/components/Badge/index.d.ts +17 -7
  132. package/types/src/components/Button/Button.d.ts +57 -0
  133. package/types/src/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +20 -0
  134. package/types/src/components/Button/LoadingIndicator/__tests__/StyledLoadingIndicator.spec.d.ts +1 -0
  135. package/types/src/components/Button/LoadingIndicator/__tests__/index.spec.d.ts +1 -0
  136. package/types/src/components/Button/LoadingIndicator/index.d.ts +26 -0
  137. package/types/src/components/Button/StyledButton.d.ts +40 -0
  138. package/types/src/components/Button/__tests__/Button.spec.d.ts +1 -0
  139. package/types/src/components/Button/__tests__/IconButton.spec.d.ts +1 -0
  140. package/types/src/components/Button/__tests__/StyledButton.spec.d.ts +1 -0
  141. package/types/src/components/Button/index.d.ts +8 -4
  142. package/types/src/components/Card/StyledCard.d.ts +9 -1
  143. package/types/src/components/Card/index.d.ts +5 -1
  144. package/types/src/components/Collapse/StyledCollapse.d.ts +15 -0
  145. package/types/src/components/Collapse/__tests__/StyledCollapse.spec.d.ts +1 -0
  146. package/types/src/components/Collapse/__tests__/index.spec.d.ts +1 -0
  147. package/types/src/components/Collapse/index.d.ts +23 -0
  148. package/types/src/components/Drawer/StyledDrawer.d.ts +25 -0
  149. package/types/src/components/Drawer/__tests__/index.spec.d.ts +1 -0
  150. package/types/src/components/Drawer/index.d.ts +25 -0
  151. package/types/src/components/FAB/ActionGroup/index.d.ts +5 -1
  152. package/types/src/components/FAB/FAB.d.ts +5 -1
  153. package/types/src/components/FAB/StyledFAB.d.ts +8 -2
  154. package/types/src/components/FAB/index.d.ts +2 -2
  155. package/types/src/components/Icon/utils.d.ts +1 -1
  156. package/types/src/components/Progress/ProgressBar.d.ts +18 -0
  157. package/types/src/components/Progress/ProgressCircle.d.ts +18 -0
  158. package/types/src/components/Progress/StyledProgressBar.d.ts +18 -0
  159. package/types/src/components/Progress/StyledProgressCircle.d.ts +38 -0
  160. package/types/src/components/Progress/__tests__/index.spec.d.ts +1 -0
  161. package/types/src/components/Progress/index.d.ts +5 -0
  162. package/types/src/components/Progress/types.d.ts +1 -0
  163. package/types/src/components/Tabs/ActiveTabIndicator.d.ts +8 -0
  164. package/types/src/components/Tabs/ScrollableTabs.d.ts +3 -0
  165. package/types/src/components/Tabs/StyledScrollableTabs.d.ts +61 -0
  166. package/types/src/components/Tabs/StyledTabs.d.ts +22 -22
  167. package/types/src/components/Tabs/__tests__/ScrollableTabs.spec.d.ts +1 -0
  168. package/types/src/components/Tabs/index.d.ts +28 -19
  169. package/types/src/components/Tabs/utils.d.ts +2 -0
  170. package/types/src/components/Tag/StyledTag.d.ts +20 -0
  171. package/types/src/components/Tag/__tests__/Tag.spec.d.ts +1 -0
  172. package/types/src/components/Tag/index.d.ts +21 -0
  173. package/types/src/index.d.ts +6 -1
  174. package/types/src/theme/components/avatar.d.ts +32 -0
  175. package/types/src/theme/components/badge.d.ts +12 -13
  176. package/types/src/theme/components/button.d.ts +37 -0
  177. package/types/src/theme/components/card.d.ts +3 -3
  178. package/types/src/theme/components/drawer.d.ts +21 -0
  179. package/types/src/theme/components/fab.d.ts +8 -1
  180. package/types/src/theme/components/progress.d.ts +21 -0
  181. package/types/src/theme/components/tabs.d.ts +14 -2
  182. package/types/src/theme/components/tag.d.ts +30 -0
  183. package/types/src/theme/global/borders.d.ts +7 -1
  184. package/types/src/theme/global/colors.d.ts +6 -1
  185. package/types/src/theme/global/index.d.ts +7 -1
  186. package/types/src/theme/global/scale.d.ts +1 -0
  187. package/types/src/theme/index.d.ts +10 -0
  188. package/types/src/utils/hooks.d.ts +1 -0
  189. package/src/components/Card/__tests__/__snapshots__/index.spec.tsx.snap +0 -34
  190. package/testUtils/setup.ts +0 -18
@@ -27,9 +27,9 @@ exports[`Tabs renders correctly 1`] = `
27
27
  style={
28
28
  Array [
29
29
  Object {
30
- "backgroundColor": "#7622d7",
31
- "paddingLeft": 0,
32
- "paddingRight": 0,
30
+ "borderBottomColor": "#dadbde",
31
+ "borderBottomWidth": 1,
32
+ "paddingHorizontal": 0,
33
33
  },
34
34
  undefined,
35
35
  ]
@@ -43,279 +43,372 @@ exports[`Tabs renders correctly 1`] = `
43
43
  }
44
44
  }
45
45
  >
46
- <RCTScrollView
47
- data={
48
- Array [
49
- Object {
50
- "component": <Text>
51
- Work Screen
52
- </Text>,
53
- "icon": "suitcase",
54
- "key": "work",
55
- "title": "Work",
56
- },
57
- Object {
58
- "component": <Text>
59
- Personal Screen
60
- </Text>,
61
- "icon": "face-smiley",
62
- "key": "personal",
63
- "title": "Personal",
64
- },
65
- ]
66
- }
67
- getItem={[Function]}
68
- getItemCount={[Function]}
69
- horizontal={true}
70
- keyExtractor={[Function]}
71
- onContentSizeChange={[Function]}
72
- onLayout={[Function]}
73
- onMomentumScrollBegin={[Function]}
74
- onMomentumScrollEnd={[Function]}
75
- onScroll={[Function]}
76
- onScrollBeginDrag={[Function]}
77
- onScrollEndDrag={[Function]}
78
- onScrollToIndexFailed={[Function]}
79
- removeClippedSubviews={false}
80
- renderItem={[Function]}
81
- scrollEventThrottle={50}
82
- showsHorizontalScrollIndicator={false}
83
- stickyHeaderIndices={Array []}
84
- style={
85
- Array [
86
- Object {
87
- "paddingLeft": 8,
88
- "paddingRight": 8,
89
- },
90
- undefined,
91
- ]
92
- }
93
- viewabilityConfigCallbackPairs={Array []}
94
- >
95
- <View>
46
+ <View>
47
+ <View
48
+ onLayout={[Function]}
49
+ style={
50
+ Array [
51
+ Object {
52
+ "flexDirection": "row",
53
+ },
54
+ undefined,
55
+ ]
56
+ }
57
+ >
96
58
  <View
97
- onLayout={[Function]}
59
+ accessible={true}
60
+ focusable={true}
61
+ onClick={[Function]}
62
+ onResponderGrant={[Function]}
63
+ onResponderMove={[Function]}
64
+ onResponderRelease={[Function]}
65
+ onResponderTerminate={[Function]}
66
+ onResponderTerminationRequest={[Function]}
67
+ onStartShouldSetResponder={[Function]}
98
68
  style={
99
69
  Array [
100
70
  Object {
101
- "flexDirection": "row",
71
+ "alignItems": "center",
72
+ "flex": 1,
73
+ "paddingVertical": 8,
102
74
  },
103
- null,
75
+ undefined,
104
76
  ]
105
77
  }
106
78
  >
107
- <View
108
- accessible={true}
109
- collapsable={false}
110
- focusable={true}
111
- nativeID="animatedComponent"
112
- onClick={[Function]}
113
- onResponderGrant={[Function]}
114
- onResponderMove={[Function]}
115
- onResponderRelease={[Function]}
116
- onResponderTerminate={[Function]}
117
- onResponderTerminationRequest={[Function]}
118
- onStartShouldSetResponder={[Function]}
119
- style={
120
- Object {
121
- "opacity": 1,
122
- }
123
- }
124
- >
125
- <View
79
+ <View>
80
+ <Text
81
+ numberOfLines={1}
126
82
  style={
127
83
  Array [
128
84
  Object {
129
- "alignItems": "center",
130
- "flexDirection": "row",
131
- "paddingBottom": 24,
132
- "paddingLeft": 16,
133
- "paddingRight": 16,
134
- "paddingTop": 24,
85
+ "color": "#292a2b",
86
+ "fontFamily": "BeVietnamPro-SemiBold",
87
+ "fontSize": 14,
88
+ "letterSpacing": 0.42,
89
+ "lineHeight": 22,
90
+ },
91
+ Object {
92
+ "color": "#292a2b",
135
93
  },
136
- undefined,
137
94
  ]
138
95
  }
96
+ themeFontSize="medium"
97
+ themeFontWeight="semi-bold"
98
+ themeIntent="body"
139
99
  >
140
- <HeroIcon
141
- name="suitcase"
142
- style={
143
- Array [
144
- Object {
145
- "color": "#292a2b",
146
- "fontSize": 24,
147
- },
148
- Array [
149
- Object {
150
- "color": "#ffffff",
151
- },
152
- undefined,
153
- ],
154
- ]
155
- }
156
- testID="hero-icon-suitcase"
157
- themeIntent="text"
158
- themeSize="medium"
159
- />
160
- <Text
161
- numberOfLines={1}
162
- style={
163
- Array [
100
+ Work
101
+ </Text>
102
+ <View
103
+ collapsable={false}
104
+ nativeID="animatedComponent"
105
+ style={
106
+ Object {
107
+ "backgroundColor": "#de350b",
108
+ "borderRadius": 999,
109
+ "height": 8,
110
+ "opacity": 0,
111
+ "position": "absolute",
112
+ "right": -2,
113
+ "top": -2,
114
+ "transform": Array [
164
115
  Object {
165
- "color": "#292a2b",
166
- "fontFamily": "BeVietnamPro-SemiBold",
167
- "fontSize": 14,
168
- "letterSpacing": 0.42,
169
- "lineHeight": 22,
116
+ "scale": 0.5,
170
117
  },
171
- Array [
172
- Object {
173
- "color": "#ffffff",
174
- "marginLeft": 8,
175
- },
176
- undefined,
177
- ],
178
- ]
118
+ ],
119
+ "width": 8,
179
120
  }
180
- themeActive={true}
181
- themeFontSize="medium"
182
- themeFontWeight="semi-bold"
183
- themeIntent="body"
184
- >
185
- Work
186
- </Text>
187
- </View>
121
+ }
122
+ themeIntent="danger"
123
+ />
188
124
  </View>
189
125
  </View>
190
126
  <View
191
- onLayout={[Function]}
127
+ accessible={true}
128
+ focusable={true}
129
+ onClick={[Function]}
130
+ onResponderGrant={[Function]}
131
+ onResponderMove={[Function]}
132
+ onResponderRelease={[Function]}
133
+ onResponderTerminate={[Function]}
134
+ onResponderTerminationRequest={[Function]}
135
+ onStartShouldSetResponder={[Function]}
192
136
  style={
193
137
  Array [
194
138
  Object {
195
- "flexDirection": "row",
139
+ "alignItems": "center",
140
+ "flex": 1,
141
+ "paddingVertical": 8,
196
142
  },
197
- null,
143
+ undefined,
198
144
  ]
199
145
  }
200
146
  >
201
- <View
202
- accessible={true}
203
- collapsable={false}
204
- focusable={true}
205
- nativeID="animatedComponent"
206
- onClick={[Function]}
207
- onResponderGrant={[Function]}
208
- onResponderMove={[Function]}
209
- onResponderRelease={[Function]}
210
- onResponderTerminate={[Function]}
211
- onResponderTerminationRequest={[Function]}
212
- onStartShouldSetResponder={[Function]}
213
- style={
214
- Object {
215
- "opacity": 1,
216
- }
217
- }
218
- >
219
- <View
147
+ <View>
148
+ <Text
149
+ numberOfLines={1}
220
150
  style={
221
151
  Array [
222
152
  Object {
223
- "alignItems": "center",
224
- "flexDirection": "row",
225
- "paddingBottom": 24,
226
- "paddingLeft": 16,
227
- "paddingRight": 16,
228
- "paddingTop": 24,
153
+ "color": "#292a2b",
154
+ "fontFamily": "BeVietnamPro-Regular",
155
+ "fontSize": 14,
156
+ "letterSpacing": 0.42,
157
+ "lineHeight": 22,
158
+ },
159
+ Object {
160
+ "color": "#292a2b",
229
161
  },
230
- undefined,
231
162
  ]
232
163
  }
164
+ themeFontSize="medium"
165
+ themeFontWeight="regular"
166
+ themeIntent="body"
233
167
  >
234
- <HeroIcon
235
- name="face-smiley"
236
- style={
237
- Array [
168
+ Personal
169
+ </Text>
170
+ <View
171
+ collapsable={false}
172
+ nativeID="animatedComponent"
173
+ style={
174
+ Object {
175
+ "backgroundColor": "#de350b",
176
+ "borderRadius": 999,
177
+ "height": 8,
178
+ "opacity": 0,
179
+ "position": "absolute",
180
+ "right": -2,
181
+ "top": -2,
182
+ "transform": Array [
238
183
  Object {
239
- "color": "#292a2b",
240
- "fontSize": 24,
184
+ "scale": 0.5,
241
185
  },
242
- Array [
243
- Object {
244
- "color": "#ffffff50",
245
- },
246
- undefined,
247
- ],
248
- ]
186
+ ],
187
+ "width": 8,
249
188
  }
250
- testID="hero-icon-face-smiley"
251
- themeIntent="text"
252
- themeSize="medium"
253
- />
254
- <Text
255
- numberOfLines={1}
256
- style={
257
- Array [
189
+ }
190
+ themeIntent="danger"
191
+ />
192
+ </View>
193
+ </View>
194
+ <View
195
+ accessible={true}
196
+ focusable={true}
197
+ onClick={[Function]}
198
+ onResponderGrant={[Function]}
199
+ onResponderMove={[Function]}
200
+ onResponderRelease={[Function]}
201
+ onResponderTerminate={[Function]}
202
+ onResponderTerminationRequest={[Function]}
203
+ onStartShouldSetResponder={[Function]}
204
+ style={
205
+ Array [
206
+ Object {
207
+ "alignItems": "center",
208
+ "flex": 1,
209
+ "paddingVertical": 8,
210
+ },
211
+ undefined,
212
+ ]
213
+ }
214
+ >
215
+ <View>
216
+ <Text
217
+ numberOfLines={1}
218
+ style={
219
+ Array [
220
+ Object {
221
+ "color": "#292a2b",
222
+ "fontFamily": "BeVietnamPro-Regular",
223
+ "fontSize": 14,
224
+ "letterSpacing": 0.42,
225
+ "lineHeight": 22,
226
+ },
227
+ Object {
228
+ "color": "#292a2b",
229
+ },
230
+ ]
231
+ }
232
+ themeFontSize="medium"
233
+ themeFontWeight="regular"
234
+ themeIntent="body"
235
+ >
236
+ Home
237
+ </Text>
238
+ <View
239
+ collapsable={false}
240
+ nativeID="animatedComponent"
241
+ style={
242
+ Object {
243
+ "backgroundColor": "#de350b",
244
+ "borderRadius": 999,
245
+ "height": 8,
246
+ "opacity": 1,
247
+ "position": "absolute",
248
+ "right": -2,
249
+ "top": -2,
250
+ "transform": Array [
258
251
  Object {
259
- "color": "#292a2b",
260
- "fontFamily": "BeVietnamPro-SemiBold",
261
- "fontSize": 14,
262
- "letterSpacing": 0.42,
263
- "lineHeight": 22,
252
+ "scale": 1,
264
253
  },
265
- Array [
266
- Object {
267
- "color": "#ffffff50",
268
- "marginLeft": 8,
269
- },
270
- undefined,
271
- ],
272
- ]
254
+ ],
255
+ "width": 8,
273
256
  }
274
- themeActive={false}
275
- themeFontSize="medium"
276
- themeFontWeight="semi-bold"
277
- themeIntent="body"
278
- >
279
- Personal
280
- </Text>
281
- </View>
257
+ }
258
+ themeIntent="danger"
259
+ />
282
260
  </View>
283
261
  </View>
284
262
  </View>
285
- </RCTScrollView>
263
+ <View
264
+ collapsable={false}
265
+ nativeID="animatedComponent"
266
+ style={
267
+ Object {
268
+ "backgroundColor": "#292a2b",
269
+ "bottom": 0,
270
+ "height": 2,
271
+ "position": "absolute",
272
+ "transform": Array [
273
+ Object {
274
+ "translateX": 0,
275
+ },
276
+ ],
277
+ "width": 0,
278
+ }
279
+ }
280
+ themeWidth={0}
281
+ />
282
+ </View>
286
283
  </View>
287
- <View
288
- style={
289
- Array [
290
- Object {
291
- "flex": 1,
292
- },
293
- undefined,
294
- ]
295
- }
284
+ <RNCViewPager
285
+ layoutDirection="ltr"
286
+ onMoveShouldSetResponderCapture={[Function]}
287
+ onPageScroll={[Function]}
288
+ onPageScrollStateChanged={[Function]}
289
+ onPageSelected={[Function]}
296
290
  >
297
291
  <View
298
- accessibilityElementsHidden={false}
299
292
  collapsable={false}
300
- importantForAccessibility="auto"
301
- pointerEvents="auto"
302
- removeClippedSubviews={false}
303
293
  style={
304
- Array [
305
- Object {
306
- "display": "flex",
307
- "flex": 1,
308
- },
309
- undefined,
310
- ]
294
+ Object {
295
+ "bottom": 0,
296
+ "left": 0,
297
+ "position": "absolute",
298
+ "right": 0,
299
+ "top": 0,
300
+ }
311
301
  }
312
- themeVisibility={true}
313
302
  >
314
- <Text>
315
- Work Screen
316
- </Text>
303
+ <View
304
+ accessibilityElementsHidden={false}
305
+ collapsable={false}
306
+ importantForAccessibility="auto"
307
+ pointerEvents="auto"
308
+ style={
309
+ Array [
310
+ Object {
311
+ "flex": 1,
312
+ },
313
+ Array [
314
+ undefined,
315
+ Object {
316
+ "bottom": 0,
317
+ "left": 0,
318
+ "position": "absolute",
319
+ "right": 0,
320
+ "top": 0,
321
+ },
322
+ ],
323
+ ]
324
+ }
325
+ >
326
+ <Text>
327
+ Work Screen
328
+ </Text>
329
+ </View>
317
330
  </View>
318
- </View>
331
+ <View
332
+ collapsable={false}
333
+ style={
334
+ Object {
335
+ "bottom": 0,
336
+ "left": 0,
337
+ "position": "absolute",
338
+ "right": 0,
339
+ "top": 0,
340
+ }
341
+ }
342
+ >
343
+ <View
344
+ accessibilityElementsHidden={true}
345
+ collapsable={false}
346
+ importantForAccessibility="no-hide-descendants"
347
+ pointerEvents="none"
348
+ style={
349
+ Array [
350
+ Object {
351
+ "flex": 1,
352
+ },
353
+ Array [
354
+ undefined,
355
+ Object {
356
+ "bottom": 0,
357
+ "left": 0,
358
+ "position": "absolute",
359
+ "right": 0,
360
+ "top": 0,
361
+ },
362
+ ],
363
+ ]
364
+ }
365
+ >
366
+ <Text>
367
+ Personal Screen
368
+ </Text>
369
+ </View>
370
+ </View>
371
+ <View
372
+ collapsable={false}
373
+ style={
374
+ Object {
375
+ "bottom": 0,
376
+ "left": 0,
377
+ "position": "absolute",
378
+ "right": 0,
379
+ "top": 0,
380
+ }
381
+ }
382
+ >
383
+ <View
384
+ accessibilityElementsHidden={true}
385
+ collapsable={false}
386
+ importantForAccessibility="no-hide-descendants"
387
+ pointerEvents="none"
388
+ style={
389
+ Array [
390
+ Object {
391
+ "flex": 1,
392
+ },
393
+ Array [
394
+ undefined,
395
+ Object {
396
+ "bottom": 0,
397
+ "left": 0,
398
+ "position": "absolute",
399
+ "right": 0,
400
+ "top": 0,
401
+ },
402
+ ],
403
+ ]
404
+ }
405
+ >
406
+ <Text>
407
+ Home Screen
408
+ </Text>
409
+ </View>
410
+ </View>
411
+ </RNCViewPager>
319
412
  </View>
320
413
  </RNCSafeAreaProvider>
321
414
  `;
@@ -15,16 +15,20 @@ const TestTabsComponent = (
15
15
  const tabs: TabType[] = [
16
16
  {
17
17
  key: 'work',
18
- title: 'Work',
19
- icon: 'suitcase',
18
+ activeItem: 'Work',
20
19
  component: <Text>Work Screen</Text>,
21
20
  },
22
21
  {
23
22
  key: 'personal',
24
- title: 'Personal',
25
- icon: 'face-smiley',
23
+ activeItem: 'Personal',
26
24
  component: <Text>Personal Screen</Text>,
27
25
  },
26
+ {
27
+ key: 'home',
28
+ activeItem: 'Home',
29
+ component: <Text>Home Screen</Text>,
30
+ showBadge: true,
31
+ },
28
32
  ];
29
33
 
30
34
  return (
@@ -46,34 +50,31 @@ const TestTabsComponent = (
46
50
 
47
51
  describe('Tabs', () => {
48
52
  it('renders correctly', () => {
49
- const { getByTestId, getByText, toJSON } = renderWithTheme(
50
- <TestTabsComponent />
51
- );
53
+ const { getByText, toJSON } = renderWithTheme(<TestTabsComponent />);
52
54
 
53
55
  expect(toJSON()).toMatchSnapshot();
54
56
  expect(getByText('Work')).toBeDefined();
55
57
  expect(getByText('Personal')).toBeDefined();
56
- expect(getByTestId('hero-icon-suitcase')).toBeDefined();
57
- expect(getByTestId('hero-icon-face-smiley')).toBeDefined();
58
- fireEvent.press(getByText('Personal'));
59
-
60
- // All screens are rendered and component is not unmounted when switching screen.
58
+ expect(getByText('Home')).toBeDefined();
61
59
  expect(getByText('Work Screen')).toBeDefined();
60
+ fireEvent.press(getByText('Personal'));
62
61
  expect(getByText('Personal Screen')).toBeDefined();
62
+ fireEvent.press(getByText('Home'));
63
+ expect(getByText('Home Screen')).toBeDefined();
63
64
  });
64
65
 
65
- it('renders correctly with renderActiveTabOnly is true', () => {
66
- const { getByText, queryByText, getByTestId } = renderWithTheme(
67
- <TestTabsComponent renderActiveTabOnly />
66
+ it('renders correctly with lazy preloaded', () => {
67
+ const { getByText, queryByText } = renderWithTheme(
68
+ <TestTabsComponent lazy lazyPreloadDistance={1} />
68
69
  );
69
70
 
70
- // Can switch tab by clicking icon.
71
- fireEvent.press(getByTestId('hero-icon-face-smiley'));
72
- expect(getByText('Personal Screen')).toBeDefined();
73
- fireEvent.press(getByTestId('hero-icon-suitcase'));
74
71
  expect(getByText('Work Screen')).toBeDefined();
72
+ expect(getByText('Personal Screen')).toBeDefined();
73
+ // Preload distance is 1, so Home Screen is not rendered.
74
+ expect(queryByText('Home Screen')).toBeNull();
75
75
 
76
- // Only render selected screen, others are unmounted.
77
- expect(queryByText('Personal Screen')).toBeNull();
76
+ fireEvent.press(getByText('Home'));
77
+ expect(getByText('Home Screen')).toBeDefined();
78
+ expect(queryByText('Work Screen')).toBeNull();
78
79
  });
79
80
  });