@hero-design/rn 8.23.0 → 8.24.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/.turbo/turbo-build.log +9 -9
  2. package/.turbo/turbo-build:types.log +2 -0
  3. package/.turbo/turbo-lint.log +146 -0
  4. package/.turbo/turbo-publish:npm.log +9 -0
  5. package/.turbo/turbo-test.log +451 -0
  6. package/.turbo/turbo-type-check.log +1 -0
  7. package/es/index.js +293 -101
  8. package/lib/assets/fonts/hero-icons-mobile.ttf +0 -0
  9. package/lib/index.js +293 -101
  10. package/package.json +1 -1
  11. package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.spec.tsx.snap +21 -9
  12. package/src/components/DatePicker/__tests__/__snapshots__/DatePickerAndroid.spec.tsx.snap +7 -3
  13. package/src/components/DatePicker/__tests__/__snapshots__/DatePickerCalendar.spec.tsx.snap +7 -3
  14. package/src/components/DatePicker/__tests__/__snapshots__/DatePickerIOS.spec.tsx.snap +7 -3
  15. package/src/components/RichTextEditor/RichTextEditor.tsx +10 -7
  16. package/src/components/RichTextEditor/__tests__/__snapshots__/RichTextEditor.spec.tsx.snap +10 -8
  17. package/src/components/Select/MultiSelect/__tests__/__snapshots__/index.spec.tsx.snap +37 -16
  18. package/src/components/Select/SingleSelect/__tests__/__snapshots__/index.spec.tsx.snap +37 -16
  19. package/src/components/Tabs/ScrollableTabs.tsx +10 -149
  20. package/src/components/Tabs/ScrollableTabsHeader.tsx +214 -0
  21. package/src/components/Tabs/ScrollableTabsV2/SceneView.tsx +61 -0
  22. package/src/components/Tabs/ScrollableTabsV2/ScrollableTabsV2.tsx +120 -0
  23. package/src/components/Tabs/ScrollableTabsV2/__tests__/SceneView.spec.tsx +76 -0
  24. package/src/components/Tabs/ScrollableTabsV2/__tests__/ScrollableTabsV2.spec.tsx +166 -0
  25. package/src/components/Tabs/ScrollableTabsV2/__tests__/__snapshots__/SceneView.spec.tsx.snap +161 -0
  26. package/src/components/Tabs/ScrollableTabsV2/__tests__/__snapshots__/ScrollableTabsV2.spec.tsx.snap +2497 -0
  27. package/src/components/Tabs/ScrollableTabsV2/index.tsx +5 -0
  28. package/src/components/Tabs/__tests__/ScrollableTabsHeader.spec.tsx +80 -0
  29. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabsHeader.spec.tsx.snap +587 -0
  30. package/src/components/Tabs/index.tsx +2 -0
  31. package/src/components/TextInput/StyledTextInput.tsx +40 -29
  32. package/src/components/TextInput/__tests__/StyledTextInput.spec.tsx +48 -57
  33. package/src/components/TextInput/__tests__/__snapshots__/StyledTextInput.spec.tsx.snap +84 -58
  34. package/src/components/TextInput/__tests__/__snapshots__/index.spec.tsx.snap +326 -74
  35. package/src/components/TextInput/__tests__/index.spec.tsx +16 -4
  36. package/src/components/TextInput/index.tsx +25 -15
  37. package/src/components/TimePicker/__tests__/__snapshots__/TimePickerAndroid.spec.tsx.snap +14 -6
  38. package/src/components/TimePicker/__tests__/__snapshots__/TimePickerIOS.spec.tsx.snap +14 -6
  39. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +8 -3
  40. package/src/theme/components/textInput.ts +10 -4
  41. package/testUtils/setup.tsx +6 -0
  42. package/types/components/Accordion/AccordionItem.d.ts +0 -0
  43. package/types/components/Accordion/StyledAccordion.d.ts +0 -0
  44. package/types/components/Accordion/index.d.ts +0 -0
  45. package/types/components/Alert/StyledAlert.d.ts +0 -0
  46. package/types/components/Alert/index.d.ts +0 -0
  47. package/types/components/Attachment/StyledAttachment.d.ts +0 -0
  48. package/types/components/Attachment/index.d.ts +0 -0
  49. package/types/components/Avatar/Avatar.d.ts +0 -0
  50. package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
  51. package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
  52. package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
  53. package/types/components/Avatar/StyledAvatar.d.ts +0 -0
  54. package/types/components/Avatar/index.d.ts +0 -0
  55. package/types/components/Badge/Status.d.ts +0 -0
  56. package/types/components/Badge/StyledBadge.d.ts +0 -0
  57. package/types/components/Badge/index.d.ts +0 -0
  58. package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
  59. package/types/components/BottomNavigation/index.d.ts +0 -0
  60. package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
  61. package/types/components/BottomSheet/Footer.d.ts +0 -0
  62. package/types/components/BottomSheet/Header.d.ts +0 -0
  63. package/types/components/BottomSheet/ScrollView.d.ts +0 -0
  64. package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
  65. package/types/components/BottomSheet/index.d.ts +0 -0
  66. package/types/components/Box/StyledBox.d.ts +0 -0
  67. package/types/components/Box/config.d.ts +0 -0
  68. package/types/components/Box/index.d.ts +0 -0
  69. package/types/components/Box/types.d.ts +0 -0
  70. package/types/components/Button/Button.d.ts +0 -0
  71. package/types/components/Button/IconButton.d.ts +0 -0
  72. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
  73. package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
  74. package/types/components/Button/StyledButton.d.ts +0 -0
  75. package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
  76. package/types/components/Button/UtilityButton/index.d.ts +0 -0
  77. package/types/components/Button/index.d.ts +0 -0
  78. package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
  79. package/types/components/Calendar/StyledCalendar.d.ts +0 -0
  80. package/types/components/Calendar/helpers.d.ts +0 -0
  81. package/types/components/Calendar/index.d.ts +0 -0
  82. package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
  83. package/types/components/Card/DataCard/index.d.ts +0 -0
  84. package/types/components/Card/StyledCard.d.ts +0 -0
  85. package/types/components/Card/index.d.ts +0 -0
  86. package/types/components/Carousel/CardCarousel.d.ts +0 -0
  87. package/types/components/Carousel/CarouselItem.d.ts +0 -0
  88. package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
  89. package/types/components/Carousel/StyledCarousel.d.ts +0 -0
  90. package/types/components/Carousel/contants.d.ts +0 -0
  91. package/types/components/Carousel/index.d.ts +0 -0
  92. package/types/components/Carousel/types.d.ts +0 -0
  93. package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
  94. package/types/components/Checkbox/index.d.ts +0 -0
  95. package/types/components/Collapse/StyledCollapse.d.ts +0 -0
  96. package/types/components/Collapse/index.d.ts +0 -0
  97. package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
  98. package/types/components/ContentNavigator/index.d.ts +0 -0
  99. package/types/components/DatePicker/DatePickerAndroid.d.ts +0 -0
  100. package/types/components/DatePicker/DatePickerCalendar.d.ts +0 -0
  101. package/types/components/DatePicker/DatePickerIOS.d.ts +0 -0
  102. package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
  103. package/types/components/DatePicker/index.d.ts +0 -0
  104. package/types/components/DatePicker/types.d.ts +0 -0
  105. package/types/components/Divider/StyledDivider.d.ts +0 -0
  106. package/types/components/Divider/index.d.ts +0 -0
  107. package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
  108. package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
  109. package/types/components/Drawer/StyledDrawer.d.ts +0 -0
  110. package/types/components/Drawer/index.d.ts +0 -0
  111. package/types/components/Empty/StyledEmpty.d.ts +0 -0
  112. package/types/components/Empty/index.d.ts +0 -0
  113. package/types/components/Error/StyledError.d.ts +0 -0
  114. package/types/components/Error/index.d.ts +0 -0
  115. package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
  116. package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +0 -0
  117. package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
  118. package/types/components/FAB/ActionGroup/index.d.ts +0 -0
  119. package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
  120. package/types/components/FAB/FAB.d.ts +0 -0
  121. package/types/components/FAB/StyledFAB.d.ts +0 -0
  122. package/types/components/FAB/index.d.ts +0 -0
  123. package/types/components/Icon/AnimatedIcon.d.ts +0 -0
  124. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  125. package/types/components/Icon/IconList.d.ts +0 -0
  126. package/types/components/Icon/index.d.ts +0 -0
  127. package/types/components/Icon/utils.d.ts +0 -0
  128. package/types/components/Image/index.d.ts +0 -0
  129. package/types/components/List/BasicListItem.d.ts +0 -0
  130. package/types/components/List/ListItem.d.ts +0 -0
  131. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  132. package/types/components/List/StyledListItem.d.ts +0 -0
  133. package/types/components/List/index.d.ts +0 -0
  134. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  135. package/types/components/PageControl/index.d.ts +0 -0
  136. package/types/components/PinInput/PinCell.d.ts +0 -0
  137. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  138. package/types/components/PinInput/index.d.ts +0 -0
  139. package/types/components/Progress/ProgressBar.d.ts +0 -0
  140. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  141. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  142. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  143. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  144. package/types/components/Progress/constants.d.ts +0 -0
  145. package/types/components/Progress/index.d.ts +0 -0
  146. package/types/components/Progress/types.d.ts +0 -0
  147. package/types/components/Radio/Radio.d.ts +0 -0
  148. package/types/components/Radio/RadioGroup.d.ts +0 -0
  149. package/types/components/Radio/StyledRadio.d.ts +0 -0
  150. package/types/components/Radio/index.d.ts +0 -0
  151. package/types/components/Radio/types.d.ts +0 -0
  152. package/types/components/RefreshControl/index.d.ts +0 -0
  153. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  154. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  155. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  156. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  157. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  158. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  159. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  160. package/types/components/RichTextEditor/constants.d.ts +0 -0
  161. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  162. package/types/components/RichTextEditor/index.d.ts +0 -0
  163. package/types/components/RichTextEditor/types.d.ts +0 -0
  164. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  165. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  166. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  167. package/types/components/SectionHeading/index.d.ts +0 -0
  168. package/types/components/Select/BaseOptionList.d.ts +0 -0
  169. package/types/components/Select/Footer.d.ts +0 -0
  170. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  171. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  172. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  173. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  174. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  175. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  176. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  177. package/types/components/Select/StyledSelect.d.ts +0 -0
  178. package/types/components/Select/helpers.d.ts +0 -0
  179. package/types/components/Select/index.d.ts +0 -0
  180. package/types/components/Select/types.d.ts +0 -0
  181. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  182. package/types/components/Skeleton/index.d.ts +0 -0
  183. package/types/components/Slider/index.d.ts +0 -0
  184. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  185. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  186. package/types/components/Spinner/index.d.ts +0 -0
  187. package/types/components/Success/StyledSuccess.d.ts +0 -0
  188. package/types/components/Success/index.d.ts +0 -0
  189. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  190. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  191. package/types/components/Swipeable/index.d.ts +0 -0
  192. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  193. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  194. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  195. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  196. package/types/components/Switch/index.d.ts +0 -0
  197. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  198. package/types/components/Tabs/SceneView.d.ts +9 -0
  199. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  200. package/types/components/Tabs/ScrollableTabsHeader.d.ts +35 -0
  201. package/types/components/Tabs/ScrollableTabsV2/SceneView.d.ts +10 -0
  202. package/types/components/Tabs/ScrollableTabsV2/ScrollableTabsV2.d.ts +9 -0
  203. package/types/components/Tabs/ScrollableTabsV2/index.d.ts +4 -0
  204. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  205. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  206. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  207. package/types/components/Tabs/index.d.ts +3 -0
  208. package/types/components/Tabs/utils.d.ts +0 -0
  209. package/types/components/Tag/StyledTag.d.ts +0 -0
  210. package/types/components/Tag/index.d.ts +0 -0
  211. package/types/components/TextInput/StyledTextInput.d.ts +12 -7
  212. package/types/components/TextInput/index.d.ts +8 -4
  213. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  214. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  215. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  216. package/types/components/TimePicker/index.d.ts +0 -0
  217. package/types/components/TimePicker/types.d.ts +0 -0
  218. package/types/components/Toast/StyledToast.d.ts +0 -0
  219. package/types/components/Toast/Toast.d.ts +0 -0
  220. package/types/components/Toast/ToastContainer.d.ts +0 -0
  221. package/types/components/Toast/ToastContext.d.ts +0 -0
  222. package/types/components/Toast/ToastProvider.d.ts +0 -0
  223. package/types/components/Toast/index.d.ts +0 -0
  224. package/types/components/Toast/types.d.ts +0 -0
  225. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  226. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  227. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  228. package/types/components/Toolbar/index.d.ts +0 -0
  229. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  230. package/types/components/Typography/Text/index.d.ts +0 -0
  231. package/types/components/Typography/index.d.ts +0 -0
  232. package/types/index.d.ts +0 -0
  233. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  234. package/types/theme/ThemeProvider.d.ts +0 -0
  235. package/types/theme/ThemeSwitcher.d.ts +0 -0
  236. package/types/theme/components/accordion.d.ts +0 -0
  237. package/types/theme/components/alert.d.ts +0 -0
  238. package/types/theme/components/attachment.d.ts +0 -0
  239. package/types/theme/components/avatar.d.ts +0 -0
  240. package/types/theme/components/badge.d.ts +0 -0
  241. package/types/theme/components/bottomNavigation.d.ts +0 -0
  242. package/types/theme/components/bottomSheet.d.ts +0 -0
  243. package/types/theme/components/button.d.ts +0 -0
  244. package/types/theme/components/calendar.d.ts +0 -0
  245. package/types/theme/components/card.d.ts +0 -0
  246. package/types/theme/components/cardCarousel.d.ts +0 -0
  247. package/types/theme/components/carousel.d.ts +0 -0
  248. package/types/theme/components/checkbox.d.ts +0 -0
  249. package/types/theme/components/contentNavigator.d.ts +0 -0
  250. package/types/theme/components/datePicker.d.ts +0 -0
  251. package/types/theme/components/divider.d.ts +0 -0
  252. package/types/theme/components/drawer.d.ts +0 -0
  253. package/types/theme/components/empty.d.ts +0 -0
  254. package/types/theme/components/error.d.ts +0 -0
  255. package/types/theme/components/fab.d.ts +0 -0
  256. package/types/theme/components/icon.d.ts +0 -0
  257. package/types/theme/components/image.d.ts +0 -0
  258. package/types/theme/components/list.d.ts +0 -0
  259. package/types/theme/components/pageControl.d.ts +0 -0
  260. package/types/theme/components/pinInput.d.ts +0 -0
  261. package/types/theme/components/progress.d.ts +0 -0
  262. package/types/theme/components/radio.d.ts +0 -0
  263. package/types/theme/components/refreshControl.d.ts +0 -0
  264. package/types/theme/components/richTextEditor.d.ts +0 -0
  265. package/types/theme/components/sectionHeading.d.ts +0 -0
  266. package/types/theme/components/select.d.ts +0 -0
  267. package/types/theme/components/skeleton.d.ts +0 -0
  268. package/types/theme/components/slider.d.ts +0 -0
  269. package/types/theme/components/spinner.d.ts +0 -0
  270. package/types/theme/components/success.d.ts +0 -0
  271. package/types/theme/components/swipeable.d.ts +0 -0
  272. package/types/theme/components/switch.d.ts +0 -0
  273. package/types/theme/components/tabs.d.ts +0 -0
  274. package/types/theme/components/tag.d.ts +0 -0
  275. package/types/theme/components/textInput.d.ts +5 -0
  276. package/types/theme/components/timePicker.d.ts +0 -0
  277. package/types/theme/components/toast.d.ts +0 -0
  278. package/types/theme/components/toolbar.d.ts +0 -0
  279. package/types/theme/components/typography.d.ts +0 -0
  280. package/types/theme/getTheme.d.ts +0 -0
  281. package/types/theme/global/borders.d.ts +0 -0
  282. package/types/theme/global/colors/eBens.d.ts +0 -0
  283. package/types/theme/global/colors/global.d.ts +0 -0
  284. package/types/theme/global/colors/globalDark.d.ts +0 -0
  285. package/types/theme/global/colors/jobs.d.ts +0 -0
  286. package/types/theme/global/colors/swag.d.ts +0 -0
  287. package/types/theme/global/colors/swagDark.d.ts +0 -0
  288. package/types/theme/global/colors/types.d.ts +0 -0
  289. package/types/theme/global/colors/wallet.d.ts +0 -0
  290. package/types/theme/global/colors/work.d.ts +0 -0
  291. package/types/theme/global/index.d.ts +0 -0
  292. package/types/theme/global/scale.d.ts +0 -0
  293. package/types/theme/global/sizes.d.ts +0 -0
  294. package/types/theme/global/space.d.ts +0 -0
  295. package/types/theme/global/typography.d.ts +0 -0
  296. package/types/theme/index.d.ts +0 -0
  297. package/types/types.d.ts +0 -0
  298. package/types/utils/functions.d.ts +0 -0
  299. package/types/utils/helpers.d.ts +0 -0
  300. package/types/utils/hooks.d.ts +0 -0
  301. package/types/utils/scale.d.ts +0 -0
@@ -74,7 +74,7 @@ Array [
74
74
  }
75
75
  testID="text-input-border"
76
76
  themeFocused={false}
77
- themeVariant="default"
77
+ themeState="default"
78
78
  />
79
79
  <View
80
80
  style={
@@ -107,6 +107,7 @@ Array [
107
107
  undefined,
108
108
  ]
109
109
  }
110
+ themeVariant="text"
110
111
  >
111
112
  <Text
112
113
  allowFontScaling={false}
@@ -124,7 +125,7 @@ Array [
124
125
  "alignContent": "center",
125
126
  "alignItems": "center",
126
127
  "color": "#001f23",
127
- "fontSize": 14,
128
+ "fontSize": 16,
128
129
  "marginTop": -2,
129
130
  "textAlignVertical": "center",
130
131
  },
@@ -136,8 +137,8 @@ Array [
136
137
  themeFontSize="medium"
137
138
  themeFontWeight="regular"
138
139
  themeIntent="body"
140
+ themeState="default"
139
141
  themeTypeface="neutral"
140
- themeVariant="default"
141
142
  >
142
143
  Choose collaborators
143
144
  </Text>
@@ -161,8 +162,11 @@ Array [
161
162
  Object {
162
163
  "alignSelf": "stretch",
163
164
  "flexGrow": 2,
164
- "fontSize": 14,
165
+ "fontFamily": "BeVietnamPro-Regular",
166
+ "fontSize": 16,
167
+ "height": undefined,
165
168
  "marginHorizontal": 8,
169
+ "maxHeight": 144,
166
170
  "paddingVertical": 0,
167
171
  "textAlignVertical": "center",
168
172
  },
@@ -173,6 +177,7 @@ Array [
173
177
  ]
174
178
  }
175
179
  testID="text-input"
180
+ themeVariant="text"
176
181
  />
177
182
  </View>
178
183
  <HeroIcon
@@ -1391,7 +1396,7 @@ Array [
1391
1396
  }
1392
1397
  testID="text-input-border"
1393
1398
  themeFocused={false}
1394
- themeVariant="filled"
1399
+ themeState="filled"
1395
1400
  />
1396
1401
  <View
1397
1402
  pointerEvents="none"
@@ -1438,8 +1443,8 @@ Array [
1438
1443
  themeFontSize="small"
1439
1444
  themeFontWeight="regular"
1440
1445
  themeIntent="body"
1446
+ themeState="filled"
1441
1447
  themeTypeface="neutral"
1442
- themeVariant="filled"
1443
1448
  >
1444
1449
  Allow notifications
1445
1450
  </Text>
@@ -1477,8 +1482,11 @@ Array [
1477
1482
  Object {
1478
1483
  "alignSelf": "stretch",
1479
1484
  "flexGrow": 2,
1480
- "fontSize": 14,
1485
+ "fontFamily": "BeVietnamPro-Regular",
1486
+ "fontSize": 16,
1487
+ "height": undefined,
1481
1488
  "marginHorizontal": 8,
1489
+ "maxHeight": 144,
1482
1490
  "paddingVertical": 0,
1483
1491
  "textAlignVertical": "center",
1484
1492
  },
@@ -1489,6 +1497,7 @@ Array [
1489
1497
  ]
1490
1498
  }
1491
1499
  testID="text-input"
1500
+ themeVariant="text"
1492
1501
  value="Monday"
1493
1502
  />
1494
1503
  </View>
@@ -1618,7 +1627,7 @@ Array [
1618
1627
  }
1619
1628
  testID="text-input-border"
1620
1629
  themeFocused={false}
1621
- themeVariant="filled"
1630
+ themeState="filled"
1622
1631
  />
1623
1632
  <View
1624
1633
  pointerEvents="none"
@@ -1665,8 +1674,8 @@ Array [
1665
1674
  themeFontSize="small"
1666
1675
  themeFontWeight="regular"
1667
1676
  themeIntent="body"
1677
+ themeState="filled"
1668
1678
  themeTypeface="neutral"
1669
- themeVariant="filled"
1670
1679
  >
1671
1680
  Allow notifications
1672
1681
  </Text>
@@ -1704,8 +1713,11 @@ Array [
1704
1713
  Object {
1705
1714
  "alignSelf": "stretch",
1706
1715
  "flexGrow": 2,
1707
- "fontSize": 14,
1716
+ "fontFamily": "BeVietnamPro-Regular",
1717
+ "fontSize": 16,
1718
+ "height": undefined,
1708
1719
  "marginHorizontal": 8,
1720
+ "maxHeight": 144,
1709
1721
  "paddingVertical": 0,
1710
1722
  "textAlignVertical": "center",
1711
1723
  },
@@ -1716,6 +1728,7 @@ Array [
1716
1728
  ]
1717
1729
  }
1718
1730
  testID="text-input"
1731
+ themeVariant="text"
1719
1732
  value="Monday"
1720
1733
  />
1721
1734
  </View>
@@ -3061,7 +3074,7 @@ Array [
3061
3074
  }
3062
3075
  testID="text-input-border"
3063
3076
  themeFocused={false}
3064
- themeVariant="readonly"
3077
+ themeState="readonly"
3065
3078
  />
3066
3079
  <View
3067
3080
  pointerEvents="none"
@@ -3108,8 +3121,8 @@ Array [
3108
3121
  themeFontSize="small"
3109
3122
  themeFontWeight="regular"
3110
3123
  themeIntent="body"
3124
+ themeState="readonly"
3111
3125
  themeTypeface="neutral"
3112
- themeVariant="readonly"
3113
3126
  >
3114
3127
  Allow notifications
3115
3128
  </Text>
@@ -3147,8 +3160,11 @@ Array [
3147
3160
  Object {
3148
3161
  "alignSelf": "stretch",
3149
3162
  "flexGrow": 2,
3150
- "fontSize": 14,
3163
+ "fontFamily": "BeVietnamPro-Regular",
3164
+ "fontSize": 16,
3165
+ "height": undefined,
3151
3166
  "marginHorizontal": 8,
3167
+ "maxHeight": 144,
3152
3168
  "paddingVertical": 0,
3153
3169
  "textAlignVertical": "center",
3154
3170
  },
@@ -3159,6 +3175,7 @@ Array [
3159
3175
  ]
3160
3176
  }
3161
3177
  testID="text-input"
3178
+ themeVariant="text"
3162
3179
  value="Monday"
3163
3180
  />
3164
3181
  </View>
@@ -3301,7 +3318,7 @@ Array [
3301
3318
  }
3302
3319
  testID="text-input-border"
3303
3320
  themeFocused={false}
3304
- themeVariant="filled"
3321
+ themeState="filled"
3305
3322
  />
3306
3323
  <View
3307
3324
  pointerEvents="none"
@@ -3348,8 +3365,8 @@ Array [
3348
3365
  themeFontSize="small"
3349
3366
  themeFontWeight="regular"
3350
3367
  themeIntent="body"
3368
+ themeState="filled"
3351
3369
  themeTypeface="neutral"
3352
- themeVariant="filled"
3353
3370
  >
3354
3371
  Allow notifications
3355
3372
  </Text>
@@ -3387,8 +3404,11 @@ Array [
3387
3404
  Object {
3388
3405
  "alignSelf": "stretch",
3389
3406
  "flexGrow": 2,
3390
- "fontSize": 14,
3407
+ "fontFamily": "BeVietnamPro-Regular",
3408
+ "fontSize": 16,
3409
+ "height": undefined,
3391
3410
  "marginHorizontal": 8,
3411
+ "maxHeight": 144,
3392
3412
  "paddingVertical": 0,
3393
3413
  "textAlignVertical": "center",
3394
3414
  },
@@ -3399,6 +3419,7 @@ Array [
3399
3419
  ]
3400
3420
  }
3401
3421
  testID="text-input"
3422
+ themeVariant="text"
3402
3423
  value="A1"
3403
3424
  />
3404
3425
  </View>
@@ -1,59 +1,13 @@
1
1
  import React from 'react';
2
- import { TouchableWithoutFeedback, FlatList, Animated } from 'react-native';
3
2
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
4
- import { useTheme } from '@emotion/react';
5
3
  import PagerView from 'react-native-pager-view';
6
4
  import {
7
- HeaderTabItem,
8
- HeaderTabWrapper,
9
5
  TabContainer,
10
6
  TabScreen,
11
7
  ContentWrapper,
12
- HeaderTabItemOutline,
13
- HeaderTabItemWrapper,
14
- HeaderTabItemOutlineWrapper,
15
8
  } from './StyledScrollableTabs';
16
- import { useAnimatedValueArray } from './utils';
17
- import { isHeroIcon } from '../Icon/utils';
18
- import Icon from '../Icon';
19
- import Typography from '../Typography';
20
- import type { ItemType, TabsProps, TabType } from '.';
21
- import TabWithBadge from './TabWithBadge';
22
-
23
- const getTabItem = ({
24
- item,
25
- color,
26
- active,
27
- }: {
28
- item: ItemType;
29
- color: string;
30
- active: boolean;
31
- }) => {
32
- if (isHeroIcon(item)) {
33
- return (
34
- <Icon
35
- icon={item}
36
- testID={`hero-icon-${item}`}
37
- size="small"
38
- style={{ color }}
39
- />
40
- );
41
- }
42
-
43
- if (typeof item === 'string') {
44
- return (
45
- <Typography.Text
46
- fontWeight={active ? 'semi-bold' : 'regular'}
47
- numberOfLines={1}
48
- style={{ color }}
49
- >
50
- {item}
51
- </Typography.Text>
52
- );
53
- }
54
-
55
- return item({ color });
56
- };
9
+ import type { TabsProps } from '.';
10
+ import ScrollableTabHeader from './ScrollableTabsHeader';
57
11
 
58
12
  const ScrollableTab = ({
59
13
  onTabPress,
@@ -66,24 +20,14 @@ const ScrollableTab = ({
66
20
  swipeEnabled = true,
67
21
  testID: componentTestID,
68
22
  }: TabsProps) => {
69
- const flatListRef = React.useRef<FlatList>(null);
70
23
  const pagerViewRef = React.useRef<PagerView>(null);
71
24
  const insets = useSafeAreaInsets();
72
- const theme = useTheme();
73
25
  const selectedTabIndex = tabs.findIndex(
74
26
  (item) => item.key === selectedTabKey
75
27
  );
76
- const tabsAnims = useAnimatedValueArray(
77
- tabs.map((_, i) => (i === selectedTabIndex ? 1 : 0))
78
- );
79
-
80
28
  React.useEffect(() => {
81
29
  let timeoutHandle: number | null = null;
82
30
  if (selectedTabIndex !== -1) {
83
- flatListRef.current?.scrollToIndex({
84
- index: selectedTabIndex,
85
- viewPosition: 0.5,
86
- });
87
31
  // If the selected tab is changed too quickly, the setPage is crashed and not work anymore
88
32
  // We apply throttle to prevent this issue https://github.com/Thinkei/hero-design/issues/1715
89
33
  timeoutHandle = setTimeout(() => {
@@ -92,19 +36,7 @@ const ScrollableTab = ({
92
36
  }, 200);
93
37
  }
94
38
 
95
- const animation = Animated.parallel([
96
- ...tabs.map((_, i) =>
97
- Animated.timing(tabsAnims[i], {
98
- toValue: i === selectedTabIndex ? 1 : 0,
99
- duration: 150,
100
- useNativeDriver: true,
101
- })
102
- ),
103
- ]);
104
- animation.start();
105
-
106
39
  return () => {
107
- animation.stop();
108
40
  if (timeoutHandle) {
109
41
  clearTimeout(timeoutHandle);
110
42
  }
@@ -113,85 +45,14 @@ const ScrollableTab = ({
113
45
 
114
46
  return (
115
47
  <TabContainer style={containerStyle} testID={componentTestID}>
116
- <HeaderTabWrapper themeInsets={insets} style={barStyle}>
117
- <FlatList<TabType>
118
- testID={componentTestID ? `${componentTestID}-tab-bar` : undefined}
119
- ref={flatListRef}
120
- horizontal
121
- data={tabs}
122
- keyExtractor={(tab) => String(tab.key)}
123
- showsHorizontalScrollIndicator={false}
124
- onScrollToIndexFailed={({ index }) => {
125
- setTimeout(
126
- () =>
127
- flatListRef.current?.scrollToIndex({
128
- index,
129
- viewPosition: 0.5,
130
- }),
131
- 100
132
- );
133
- }}
134
- contentContainerStyle={{
135
- paddingHorizontal:
136
- theme.__hd__.tabs.space.flatListHorizontalPadding,
137
- }}
138
- renderItem={({ item: tab, index }) => {
139
- const {
140
- key,
141
- testID,
142
- activeItem,
143
- inactiveItem: originalInactiveItem,
144
- badge,
145
- } = tab;
146
- const active = selectedTabKey === key;
147
- const activeAnimated = tabsAnims[index];
148
- const outlineScale = active
149
- ? activeAnimated.interpolate({
150
- inputRange: [0, 1],
151
- outputRange: [0.5, 1],
152
- })
153
- : 0;
154
-
155
- const inactiveItem = originalInactiveItem ?? activeItem;
156
- const tabItem = getTabItem({
157
- item: active ? activeItem : inactiveItem,
158
- color: active
159
- ? theme.__hd__.tabs.colors.active
160
- : theme.__hd__.tabs.colors.inactive,
161
- active,
162
- });
163
-
164
- return (
165
- <TouchableWithoutFeedback
166
- key={key}
167
- onPress={() => {
168
- onTabPress(key);
169
- }}
170
- testID={testID}
171
- >
172
- <HeaderTabItem isFirstItem={index === 0}>
173
- <HeaderTabItemOutlineWrapper>
174
- <HeaderTabItemOutline
175
- themeActive={active}
176
- style={{
177
- flex: 1,
178
- transform: [
179
- {
180
- scaleX: outlineScale,
181
- },
182
- ],
183
- }}
184
- />
185
- </HeaderTabItemOutlineWrapper>
186
- <HeaderTabItemWrapper>
187
- <TabWithBadge config={badge} tabItem={tabItem} />
188
- </HeaderTabItemWrapper>
189
- </HeaderTabItem>
190
- </TouchableWithoutFeedback>
191
- );
192
- }}
193
- />
194
- </HeaderTabWrapper>
48
+ <ScrollableTabHeader
49
+ tabs={tabs}
50
+ selectedIndex={selectedTabIndex}
51
+ onTabPress={onTabPress}
52
+ barStyle={barStyle}
53
+ insets={insets}
54
+ testID={componentTestID ? `${componentTestID}-tab-bar` : undefined}
55
+ />
195
56
  <ContentWrapper
196
57
  initialPage={selectedTabIndex}
197
58
  ref={pagerViewRef}
@@ -0,0 +1,214 @@
1
+ import React from 'react';
2
+ import {
3
+ TouchableWithoutFeedback,
4
+ FlatList,
5
+ Animated,
6
+ StyleProp,
7
+ ViewStyle,
8
+ ViewProps,
9
+ } from 'react-native';
10
+ import { useTheme } from '@emotion/react';
11
+ import {
12
+ HeaderTabItem,
13
+ HeaderTabWrapper,
14
+ HeaderTabItemOutline,
15
+ HeaderTabItemWrapper,
16
+ HeaderTabItemOutlineWrapper,
17
+ } from './StyledScrollableTabs';
18
+ import { useAnimatedValueArray } from './utils';
19
+ import { isHeroIcon } from '../Icon/utils';
20
+ import Icon from '../Icon';
21
+ import Typography from '../Typography';
22
+ import type { ItemType, TabType } from '.';
23
+ import TabWithBadge from './TabWithBadge';
24
+
25
+ const getTabItem = ({
26
+ item,
27
+ color,
28
+ active,
29
+ }: {
30
+ item: ItemType;
31
+ color: string;
32
+ active: boolean;
33
+ }) => {
34
+ if (isHeroIcon(item)) {
35
+ return (
36
+ <Icon
37
+ icon={item}
38
+ testID={`hero-icon-${item}`}
39
+ size="small"
40
+ style={{ color }}
41
+ />
42
+ );
43
+ }
44
+
45
+ if (typeof item === 'string') {
46
+ return (
47
+ <Typography.Text
48
+ fontWeight={active ? 'semi-bold' : 'regular'}
49
+ numberOfLines={1}
50
+ style={{ color }}
51
+ >
52
+ {item}
53
+ </Typography.Text>
54
+ );
55
+ }
56
+
57
+ return item({ color });
58
+ };
59
+
60
+ export interface ScrollableTabHeaderProps extends ViewProps {
61
+ /**
62
+ * Callback which is called on tab press, receiving key of upcoming active Tab.
63
+ */
64
+ onTabPress: (key: string) => void;
65
+ /**
66
+ * Current selected tab key.
67
+ */
68
+ selectedIndex?: number;
69
+ /**
70
+ * List of Tabs to be rendered. Each Tab must have an unique key.
71
+ */
72
+ tabs: TabType[];
73
+ /**
74
+ * Style for the tab navigation bar.
75
+ */
76
+ barStyle?: StyleProp<ViewStyle>;
77
+ /**
78
+ * Testing id of the component.
79
+ */
80
+ testID?: string;
81
+ /**
82
+ * component insets
83
+ */
84
+ insets?: {
85
+ top: number;
86
+ bottom: number;
87
+ right: number;
88
+ left: number;
89
+ };
90
+ }
91
+ const ScrollableTabHeader = ({
92
+ onTabPress,
93
+ selectedIndex,
94
+ tabs,
95
+ barStyle,
96
+ testID,
97
+ insets = { top: 0, bottom: 0, right: 0, left: 0 },
98
+ }: ScrollableTabHeaderProps) => {
99
+ const flatListRef = React.useRef<FlatList>(null);
100
+ const theme = useTheme();
101
+ const tabsAnims = useAnimatedValueArray(
102
+ tabs.map((_, i) => (i === selectedIndex ? 1 : 0))
103
+ );
104
+
105
+ React.useEffect(() => {
106
+ const timeoutHandle: number | null = null;
107
+ if (selectedIndex !== undefined && selectedIndex !== -1) {
108
+ flatListRef.current?.scrollToIndex({
109
+ index: selectedIndex,
110
+ viewPosition: 0.5,
111
+ });
112
+ }
113
+
114
+ const animation = Animated.parallel([
115
+ ...tabs.map((_, i) =>
116
+ Animated.timing(tabsAnims[i], {
117
+ toValue: i === selectedIndex ? 1 : 0,
118
+ duration: 150,
119
+ useNativeDriver: true,
120
+ })
121
+ ),
122
+ ]);
123
+ animation.start();
124
+
125
+ return () => {
126
+ animation.stop();
127
+ if (timeoutHandle) {
128
+ clearTimeout(timeoutHandle);
129
+ }
130
+ };
131
+ }, [selectedIndex]);
132
+
133
+ return (
134
+ <HeaderTabWrapper themeInsets={insets} style={barStyle}>
135
+ <FlatList<TabType>
136
+ testID={testID}
137
+ ref={flatListRef}
138
+ horizontal
139
+ data={tabs}
140
+ keyExtractor={(tab) => String(tab.key)}
141
+ showsHorizontalScrollIndicator={false}
142
+ onScrollToIndexFailed={({ index }) => {
143
+ setTimeout(
144
+ () =>
145
+ flatListRef.current?.scrollToIndex({
146
+ index,
147
+ viewPosition: 0.5,
148
+ }),
149
+ 100
150
+ );
151
+ }}
152
+ contentContainerStyle={{
153
+ paddingHorizontal: theme.__hd__.tabs.space.flatListHorizontalPadding,
154
+ }}
155
+ renderItem={({ item: tab, index }) => {
156
+ const {
157
+ key,
158
+ testID: tabItemTestID,
159
+ activeItem,
160
+ inactiveItem: originalInactiveItem,
161
+ badge,
162
+ } = tab;
163
+ const active = selectedIndex === index;
164
+ const activeAnimated = tabsAnims[index];
165
+ const outlineScale = active
166
+ ? activeAnimated.interpolate({
167
+ inputRange: [0, 1],
168
+ outputRange: [0.5, 1],
169
+ })
170
+ : 0;
171
+
172
+ const inactiveItem = originalInactiveItem ?? activeItem;
173
+ const tabItem = getTabItem({
174
+ item: active ? activeItem : inactiveItem,
175
+ color: active
176
+ ? theme.__hd__.tabs.colors.active
177
+ : theme.__hd__.tabs.colors.inactive,
178
+ active,
179
+ });
180
+
181
+ return (
182
+ <TouchableWithoutFeedback
183
+ key={key}
184
+ onPress={() => {
185
+ onTabPress(key);
186
+ }}
187
+ testID={tabItemTestID}
188
+ >
189
+ <HeaderTabItem isFirstItem={index === 0}>
190
+ <HeaderTabItemOutlineWrapper>
191
+ <HeaderTabItemOutline
192
+ themeActive={active}
193
+ style={{
194
+ flex: 1,
195
+ transform: [
196
+ {
197
+ scaleX: outlineScale,
198
+ },
199
+ ],
200
+ }}
201
+ />
202
+ </HeaderTabItemOutlineWrapper>
203
+ <HeaderTabItemWrapper>
204
+ <TabWithBadge config={badge} tabItem={tabItem} />
205
+ </HeaderTabItemWrapper>
206
+ </HeaderTabItem>
207
+ </TouchableWithoutFeedback>
208
+ );
209
+ }}
210
+ />
211
+ </HeaderTabWrapper>
212
+ );
213
+ };
214
+ export default ScrollableTabHeader;
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import { TabScreen } from '../StyledScrollableTabs';
4
+
5
+ export const SceneView = ({
6
+ lazy = false,
7
+ lazyPreloadDistance = 1,
8
+ children,
9
+ index,
10
+ selectedIndex,
11
+ testID,
12
+ }: {
13
+ children: React.ReactNode;
14
+ index: number;
15
+ selectedIndex: number;
16
+ lazy?: boolean;
17
+ lazyPreloadDistance?: number;
18
+ testID?: string;
19
+ }) => {
20
+ const [isLoading, setIsLoading] = React.useState(
21
+ Math.abs(selectedIndex - index) > lazyPreloadDistance
22
+ );
23
+ const focused = index === selectedIndex;
24
+
25
+ if (isLoading && Math.abs(selectedIndex - index) <= lazyPreloadDistance) {
26
+ // Always render the route when it becomes focused
27
+ setIsLoading(false);
28
+ }
29
+
30
+ React.useEffect(() => {
31
+ let unsubscribe: (() => void) | undefined;
32
+ let timer: number | undefined;
33
+
34
+ if (!lazy && isLoading) {
35
+ // If lazy mode is not enabled, render the scene with a delay if not loaded already
36
+ // This improves the initial startup time as the scene is no longer blocking
37
+ timer = setTimeout(() => setIsLoading(false), 0);
38
+ }
39
+
40
+ return () => {
41
+ unsubscribe?.();
42
+ clearTimeout(timer);
43
+ };
44
+ }, [index, isLoading, lazy, focused]);
45
+
46
+ return (
47
+ <TabScreen
48
+ accessibilityElementsHidden={!focused}
49
+ importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}
50
+ style={[
51
+ { flex: 1, overflow: 'hidden' },
52
+ focused ? StyleSheet.absoluteFill : null,
53
+ ]}
54
+ testID={testID}
55
+ >
56
+ {focused || !isLoading ? children : null}
57
+ </TabScreen>
58
+ );
59
+ };
60
+
61
+ export default SceneView;