@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
package/lib/index.js CHANGED
@@ -2948,12 +2948,15 @@ var getTextInputTheme = function getTextInputTheme(theme) {
2948
2948
  containerMarginTop: theme.space.small,
2949
2949
  labelInsideTextInputMarginTop: -theme.space.xxsmall
2950
2950
  };
2951
+ var fonts = {
2952
+ text: theme.fonts.neutral.regular
2953
+ };
2951
2954
  var fontSizes = {
2952
- text: theme.fontSizes.medium,
2953
- labelInsideTextInput: theme.fontSizes.medium,
2955
+ text: theme.fontSizes.large,
2956
+ labelInsideTextInput: theme.fontSizes.large,
2954
2957
  error: theme.fontSizes.small,
2955
2958
  maxLength: theme.fontSizes.small,
2956
- asteriskLabel: theme.fontSizes.medium
2959
+ asteriskLabel: theme.fontSizes.large
2957
2960
  };
2958
2961
  var borderWidths = {
2959
2962
  container: {
@@ -2965,11 +2968,14 @@ var getTextInputTheme = function getTextInputTheme(theme) {
2965
2968
  container: theme.radii.medium
2966
2969
  };
2967
2970
  var sizes = {
2968
- errorAndHelpTextContainerHeight: theme.sizes.medium
2971
+ errorAndHelpTextContainerHeight: theme.sizes.medium,
2972
+ textareaHeight: theme.sizes['15xlarge'],
2973
+ textInputMaxHeight: theme.sizes['15xlarge']
2969
2974
  };
2970
2975
  return {
2971
2976
  colors: colors,
2972
2977
  space: space,
2978
+ fonts: fonts,
2973
2979
  fontSizes: fontSizes,
2974
2980
  borderWidths: borderWidths,
2975
2981
  radii: radii,
@@ -11645,47 +11651,48 @@ var StyledLabelContainer = index$a(reactNative.View)(function (_ref2) {
11645
11651
  });
11646
11652
  var StyledLabel = index$a(Typography.Text)(function (_ref3) {
11647
11653
  var theme = _ref3.theme,
11648
- themeVariant = _ref3.themeVariant;
11654
+ themeState = _ref3.themeState;
11649
11655
  return {
11650
- color: theme.__hd__.textInput.colors.labels[themeVariant]
11656
+ color: theme.__hd__.textInput.colors.labels[themeState]
11651
11657
  };
11652
11658
  });
11653
11659
  var StyledAsteriskLabel = index$a(Typography.Text)(function (_ref4) {
11654
11660
  var theme = _ref4.theme,
11655
- themeVariant = _ref4.themeVariant;
11661
+ themeState = _ref4.themeState;
11656
11662
  return {
11657
- color: theme.__hd__.textInput.colors.asterisks[themeVariant]
11663
+ color: theme.__hd__.textInput.colors.asterisks[themeState]
11658
11664
  };
11659
11665
  });
11660
- var StyledLabelContainerInsideTextInput = index$a(reactNative.View)(function () {
11666
+ var StyledLabelContainerInsideTextInput = index$a(reactNative.View)(function (_ref5) {
11667
+ var themeVariant = _ref5.themeVariant;
11661
11668
  return _objectSpread2({
11662
11669
  flexDirection: 'row',
11663
11670
  zIndex: 9999,
11664
- alignItems: 'center'
11671
+ alignItems: themeVariant === 'text' ? 'center' : 'flex-start'
11665
11672
  }, reactNative.StyleSheet.absoluteFillObject);
11666
11673
  });
11667
- var StyledLabelInsideTextInput = index$a(Typography.Text)(function (_ref5) {
11668
- var theme = _ref5.theme,
11669
- themeVariant = _ref5.themeVariant;
11674
+ var StyledLabelInsideTextInput = index$a(Typography.Text)(function (_ref6) {
11675
+ var theme = _ref6.theme,
11676
+ themeState = _ref6.themeState;
11670
11677
  return {
11671
11678
  textAlignVertical: 'center',
11672
11679
  alignContent: 'center',
11673
11680
  fontSize: theme.__hd__.textInput.fontSizes.labelInsideTextInput,
11674
11681
  alignItems: 'center',
11675
- color: theme.__hd__.textInput.colors.labelsInsideTextInput[themeVariant],
11682
+ color: theme.__hd__.textInput.colors.labelsInsideTextInput[themeState],
11676
11683
  marginTop: theme.__hd__.textInput.space.labelInsideTextInputMarginTop
11677
11684
  };
11678
11685
  });
11679
- var StyledAsteriskLabelInsideTextInput = index$a(Typography.Text)(function (_ref6) {
11680
- var theme = _ref6.theme,
11681
- themeVariant = _ref6.themeVariant;
11686
+ var StyledAsteriskLabelInsideTextInput = index$a(Typography.Text)(function (_ref7) {
11687
+ var theme = _ref7.theme,
11688
+ themeState = _ref7.themeState;
11682
11689
  return {
11683
- color: theme.__hd__.textInput.colors.asterisks[themeVariant],
11690
+ color: theme.__hd__.textInput.colors.asterisks[themeState],
11684
11691
  fontSize: theme.__hd__.textInput.fontSizes.asteriskLabel
11685
11692
  };
11686
11693
  });
11687
- var StyledErrorContainer$2 = index$a(reactNative.View)(function (_ref7) {
11688
- var theme = _ref7.theme;
11694
+ var StyledErrorContainer$2 = index$a(reactNative.View)(function (_ref8) {
11695
+ var theme = _ref8.theme;
11689
11696
  return {
11690
11697
  marginRight: theme.__hd__.textInput.space.errorContainerMarginRight,
11691
11698
  flexDirection: 'row',
@@ -11694,19 +11701,19 @@ var StyledErrorContainer$2 = index$a(reactNative.View)(function (_ref7) {
11694
11701
  flexGrow: 4
11695
11702
  };
11696
11703
  });
11697
- var StyledError = index$a(Typography.Text)(function (_ref8) {
11698
- var theme = _ref8.theme;
11704
+ var StyledError = index$a(Typography.Text)(function (_ref9) {
11705
+ var theme = _ref9.theme;
11699
11706
  return {
11700
11707
  color: theme.__hd__.textInput.colors.error,
11701
11708
  fontSize: theme.__hd__.textInput.fontSizes.error,
11702
11709
  marginLeft: theme.__hd__.textInput.space.errorMarginLeft
11703
11710
  };
11704
11711
  });
11705
- var StyledMaxLengthMessage = index$a(Typography.Text)(function (_ref9) {
11706
- var theme = _ref9.theme,
11707
- themeVariant = _ref9.themeVariant;
11712
+ var StyledMaxLengthMessage = index$a(Typography.Text)(function (_ref10) {
11713
+ var theme = _ref10.theme,
11714
+ themeState = _ref10.themeState;
11708
11715
  return {
11709
- color: theme.__hd__.textInput.colors.maxLengthLabels[themeVariant],
11716
+ color: theme.__hd__.textInput.colors.maxLengthLabels[themeState],
11710
11717
  fontSize: theme.__hd__.textInput.fontSizes.maxLength,
11711
11718
  marginRight: theme.__hd__.textInput.space.maxLengthLabelMarginLeft,
11712
11719
  alignSelf: 'flex-end',
@@ -11715,36 +11722,40 @@ var StyledMaxLengthMessage = index$a(Typography.Text)(function (_ref9) {
11715
11722
  textAlign: 'right'
11716
11723
  };
11717
11724
  });
11718
- var StyledHelperText = index$a(Typography.Text)(function (_ref10) {
11719
- var theme = _ref10.theme;
11725
+ var StyledHelperText = index$a(Typography.Text)(function (_ref11) {
11726
+ var theme = _ref11.theme;
11720
11727
  return {
11721
11728
  fontSize: theme.__hd__.textInput.fontSizes.error
11722
11729
  };
11723
11730
  });
11724
- var StyledTextInput = index$a(reactNative.TextInput)(function (_ref11) {
11725
- var theme = _ref11.theme;
11731
+ var StyledTextInput = index$a(reactNative.TextInput)(function (_ref12) {
11732
+ var theme = _ref12.theme,
11733
+ themeVariant = _ref12.themeVariant;
11726
11734
  return {
11727
- textAlignVertical: 'center',
11735
+ textAlignVertical: themeVariant === 'text' ? 'center' : 'top',
11728
11736
  fontSize: theme.__hd__.textInput.fontSizes.text,
11729
11737
  alignSelf: 'stretch',
11730
11738
  flexGrow: 2,
11731
11739
  marginHorizontal: theme.__hd__.textInput.space.inputHorizontalMargin,
11732
- paddingVertical: 0
11740
+ paddingVertical: 0,
11741
+ maxHeight: theme.__hd__.textInput.sizes.textInputMaxHeight,
11742
+ height: themeVariant === 'text' ? undefined : theme.__hd__.textInput.sizes.textareaHeight,
11743
+ fontFamily: theme.__hd__.textInput.fonts.text
11733
11744
  };
11734
11745
  });
11735
- var StyledBorderBackDrop = index$a(reactNative.View)(function (_ref12) {
11746
+ var StyledBorderBackDrop = index$a(reactNative.View)(function (_ref13) {
11736
11747
  var _theme$__hd__$textInp;
11737
- var theme = _ref12.theme,
11738
- themeFocused = _ref12.themeFocused,
11739
- themeVariant = _ref12.themeVariant;
11748
+ var theme = _ref13.theme,
11749
+ themeFocused = _ref13.themeFocused,
11750
+ themeState = _ref13.themeState;
11740
11751
  return _objectSpread2(_objectSpread2({}, reactNative.StyleSheet.absoluteFillObject), {}, {
11741
11752
  borderWidth: themeFocused ? theme.__hd__.textInput.borderWidths.container.focused : theme.__hd__.textInput.borderWidths.container.normal,
11742
11753
  borderRadius: theme.__hd__.textInput.radii.container,
11743
- borderColor: (_theme$__hd__$textInp = theme.__hd__.textInput.colors.borders[themeVariant]) !== null && _theme$__hd__$textInp !== void 0 ? _theme$__hd__$textInp : theme.__hd__.textInput.colors.borders["default"]
11754
+ borderColor: (_theme$__hd__$textInp = theme.__hd__.textInput.colors.borders[themeState]) !== null && _theme$__hd__$textInp !== void 0 ? _theme$__hd__$textInp : theme.__hd__.textInput.colors.borders["default"]
11744
11755
  });
11745
11756
  });
11746
- var StyledTextInputContainer = index$a(reactNative.View)(function (_ref13) {
11747
- var theme = _ref13.theme;
11757
+ var StyledTextInputContainer = index$a(reactNative.View)(function (_ref14) {
11758
+ var theme = _ref14.theme;
11748
11759
  return {
11749
11760
  flexDirection: 'row',
11750
11761
  alignItems: 'center',
@@ -11762,8 +11773,8 @@ var StyledTextInputAndLabelContainer = index$a(reactNative.View)(function () {
11762
11773
  flexShrink: 1
11763
11774
  };
11764
11775
  });
11765
- var StyledErrorAndHelpTextContainer = index$a(reactNative.View)(function (_ref14) {
11766
- var theme = _ref14.theme;
11776
+ var StyledErrorAndHelpTextContainer = index$a(reactNative.View)(function (_ref15) {
11777
+ var theme = _ref15.theme;
11767
11778
  return {
11768
11779
  paddingLeft: theme.__hd__.textInput.space.errorAndHelpTextContainerPaddingLeft,
11769
11780
  minHeight: theme.__hd__.textInput.sizes.errorAndHelpTextContainerHeight
@@ -11776,8 +11787,8 @@ var StyledErrorAndMaxLengthContainer = index$a(reactNative.View)(function () {
11776
11787
  };
11777
11788
  });
11778
11789
 
11779
- var _excluded$e = ["label", "prefix", "suffix", "style", "textStyle", "testID", "accessibilityLabelledBy", "error", "required", "editable", "disabled", "loading", "maxLength", "hideCharacterCount", "helpText", "value", "defaultValue", "renderInputValue", "allowFontScaling"];
11780
- var getVariant$1 = function getVariant(_ref) {
11790
+ var _excluded$e = ["label", "prefix", "suffix", "style", "textStyle", "testID", "accessibilityLabelledBy", "error", "required", "editable", "disabled", "loading", "maxLength", "hideCharacterCount", "helpText", "value", "defaultValue", "renderInputValue", "allowFontScaling", "variant"];
11791
+ var getState$1 = function getState(_ref) {
11781
11792
  var disabled = _ref.disabled,
11782
11793
  error = _ref.error,
11783
11794
  editable = _ref.editable,
@@ -11826,6 +11837,8 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11826
11837
  renderInputValue = _ref2.renderInputValue,
11827
11838
  _ref2$allowFontScalin = _ref2.allowFontScaling,
11828
11839
  allowFontScaling = _ref2$allowFontScalin === void 0 ? false : _ref2$allowFontScalin,
11840
+ _ref2$variant = _ref2.variant,
11841
+ variant = _ref2$variant === void 0 ? 'text' : _ref2$variant,
11829
11842
  nativeProps = _objectWithoutProperties(_ref2, _excluded$e);
11830
11843
  var displayText = (_ref3 = value !== undefined ? value : defaultValue) !== null && _ref3 !== void 0 ? _ref3 : '';
11831
11844
  var isEmptyValue = displayText.length === 0;
@@ -11834,7 +11847,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11834
11847
  _React$useState2 = _slicedToArray(_React$useState, 2),
11835
11848
  isFocused = _React$useState2[0],
11836
11849
  setIsFocused = _React$useState2[1];
11837
- var variant = getVariant$1({
11850
+ var state = getState$1({
11838
11851
  disabled: disabled,
11839
11852
  error: error,
11840
11853
  editable: editable,
@@ -11910,7 +11923,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11910
11923
  }, textStyleWithoutBorderStyle]),
11911
11924
  testID: 'text-input',
11912
11925
  accessibilityState: {
11913
- disabled: variant === 'disabled' || variant === 'readonly'
11926
+ disabled: state === 'disabled' || state === 'readonly'
11914
11927
  },
11915
11928
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11916
11929
  // @ts-ignore
@@ -11939,11 +11952,11 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11939
11952
  });
11940
11953
  return /*#__PURE__*/React__default["default"].createElement(StyledContainer$4, {
11941
11954
  style: styleWithoutBackgroundColor,
11942
- pointerEvents: variant === 'disabled' || variant === 'readonly' ? 'none' : 'auto',
11955
+ pointerEvents: state === 'disabled' || state === 'readonly' ? 'none' : 'auto',
11943
11956
  testID: testID
11944
11957
  }, /*#__PURE__*/React__default["default"].createElement(StyledTextInputContainer, null, /*#__PURE__*/React__default["default"].createElement(StyledBorderBackDrop, {
11945
11958
  themeFocused: isFocused,
11946
- themeVariant: variant,
11959
+ themeState: state,
11947
11960
  testID: "text-input-border",
11948
11961
  style: [{
11949
11962
  backgroundColor: backgroundColor
@@ -11955,36 +11968,39 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11955
11968
  backgroundColor: backgroundColor
11956
11969
  }
11957
11970
  }, required && /*#__PURE__*/React__default["default"].createElement(StyledAsteriskLabel, {
11958
- themeVariant: variant,
11971
+ themeState: state,
11959
11972
  fontSize: "small"
11960
11973
  }, "*"), !!label && /*#__PURE__*/React__default["default"].createElement(StyledLabel, {
11961
11974
  nativeID: accessibilityLabelledBy,
11962
11975
  testID: "input-label",
11963
11976
  fontSize: "small",
11964
- themeVariant: variant,
11977
+ themeState: state,
11965
11978
  style: {
11966
11979
  backgroundColor: backgroundColor
11967
11980
  }
11968
11981
  }, label)), typeof prefix === 'string' ? /*#__PURE__*/React__default["default"].createElement(Icon, {
11969
- intent: variant === 'disabled' ? 'disabled-text' : 'text',
11982
+ intent: state === 'disabled' ? 'disabled-text' : 'text',
11970
11983
  testID: "input-prefix",
11971
11984
  icon: prefix,
11972
11985
  size: "xsmall"
11973
11986
  }) : prefix, /*#__PURE__*/React__default["default"].createElement(StyledTextInputAndLabelContainer, null, !isFocused && isEmptyValue && /*#__PURE__*/React__default["default"].createElement(StyledLabelContainerInsideTextInput, {
11987
+ themeVariant: variant,
11974
11988
  pointerEvents: "none"
11975
11989
  }, required && /*#__PURE__*/React__default["default"].createElement(StyledAsteriskLabelInsideTextInput, {
11976
- themeVariant: variant
11990
+ themeState: state
11977
11991
  }, "*"), !!label && /*#__PURE__*/React__default["default"].createElement(StyledLabelInsideTextInput, {
11978
11992
  nativeID: accessibilityLabelledBy,
11979
11993
  testID: "input-label",
11980
11994
  fontSize: "medium",
11981
- themeVariant: variant
11995
+ themeState: state
11982
11996
  }, label)), renderInputValue ? renderInputValue(nativeInputProps) : /*#__PURE__*/React__default["default"].createElement(StyledTextInput, _extends$1({}, nativeInputProps, {
11997
+ themeVariant: variant,
11998
+ multiline: variant === 'textarea' || nativeProps.multiline,
11983
11999
  ref: function ref(reference) {
11984
12000
  innerTextInput.current = reference;
11985
12001
  }
11986
12002
  }))), typeof actualSuffix === 'string' ? /*#__PURE__*/React__default["default"].createElement(Icon, {
11987
- intent: variant === 'disabled' ? 'disabled-text' : 'text',
12003
+ intent: state === 'disabled' ? 'disabled-text' : 'text',
11988
12004
  testID: "input-suffix",
11989
12005
  icon: actualSuffix,
11990
12006
  spin: actualSuffix === 'loading',
@@ -11997,7 +12013,7 @@ var TextInput = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
11997
12013
  }), /*#__PURE__*/React__default["default"].createElement(StyledError, {
11998
12014
  testID: "input-error-message"
11999
12015
  }, error)) : !!helpText && /*#__PURE__*/React__default["default"].createElement(StyledHelperText, null, helpText), shouldShowMaxLength && /*#__PURE__*/React__default["default"].createElement(StyledMaxLengthMessage, {
12000
- themeVariant: variant,
12016
+ themeState: state,
12001
12017
  fontSize: "small"
12002
12018
  }, displayText.length, "/", maxLength))));
12003
12019
  });
@@ -15349,48 +15365,35 @@ var getTabItem$1 = function getTabItem(_ref) {
15349
15365
  color: color
15350
15366
  });
15351
15367
  };
15352
- var ScrollableTab = function ScrollableTab(_ref2) {
15368
+ var ScrollableTabHeader = function ScrollableTabHeader(_ref2) {
15353
15369
  var onTabPress = _ref2.onTabPress,
15354
- selectedTabKey = _ref2.selectedTabKey,
15370
+ selectedIndex = _ref2.selectedIndex,
15355
15371
  tabs = _ref2.tabs,
15356
- containerStyle = _ref2.containerStyle,
15357
15372
  barStyle = _ref2.barStyle,
15358
- _ref2$lazy = _ref2.lazy,
15359
- lazy = _ref2$lazy === void 0 ? false : _ref2$lazy,
15360
- _ref2$lazyPreloadDist = _ref2.lazyPreloadDistance,
15361
- lazyPreloadDistance = _ref2$lazyPreloadDist === void 0 ? 1 : _ref2$lazyPreloadDist,
15362
- _ref2$swipeEnabled = _ref2.swipeEnabled,
15363
- swipeEnabled = _ref2$swipeEnabled === void 0 ? true : _ref2$swipeEnabled,
15364
- componentTestID = _ref2.testID;
15373
+ testID = _ref2.testID,
15374
+ _ref2$insets = _ref2.insets,
15375
+ insets = _ref2$insets === void 0 ? {
15376
+ top: 0,
15377
+ bottom: 0,
15378
+ right: 0,
15379
+ left: 0
15380
+ } : _ref2$insets;
15365
15381
  var flatListRef = React__default["default"].useRef(null);
15366
- var pagerViewRef = React__default["default"].useRef(null);
15367
- var insets = reactNativeSafeAreaContext.useSafeAreaInsets();
15368
15382
  var theme = useTheme$1();
15369
- var selectedTabIndex = tabs.findIndex(function (item) {
15370
- return item.key === selectedTabKey;
15371
- });
15372
15383
  var tabsAnims = useAnimatedValueArray(tabs.map(function (_, i) {
15373
- return i === selectedTabIndex ? 1 : 0;
15384
+ return i === selectedIndex ? 1 : 0;
15374
15385
  }));
15375
15386
  React__default["default"].useEffect(function () {
15376
- var timeoutHandle = null;
15377
- if (selectedTabIndex !== -1) {
15387
+ if (selectedIndex !== undefined && selectedIndex !== -1) {
15378
15388
  var _flatListRef$current;
15379
15389
  (_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToIndex({
15380
- index: selectedTabIndex,
15390
+ index: selectedIndex,
15381
15391
  viewPosition: 0.5
15382
15392
  });
15383
- // If the selected tab is changed too quickly, the setPage is crashed and not work anymore
15384
- // We apply throttle to prevent this issue https://github.com/Thinkei/hero-design/issues/1715
15385
- timeoutHandle = setTimeout(function () {
15386
- var _pagerViewRef$current;
15387
- // use no animation to prevent unexpected behavior if users select tab too quickly
15388
- (_pagerViewRef$current = pagerViewRef.current) === null || _pagerViewRef$current === void 0 ? void 0 : _pagerViewRef$current.setPageWithoutAnimation(selectedTabIndex);
15389
- }, 200);
15390
15393
  }
15391
15394
  var animation = reactNative.Animated.parallel(_toConsumableArray(tabs.map(function (_, i) {
15392
15395
  return reactNative.Animated.timing(tabsAnims[i], {
15393
- toValue: i === selectedTabIndex ? 1 : 0,
15396
+ toValue: i === selectedIndex ? 1 : 0,
15394
15397
  duration: 150,
15395
15398
  useNativeDriver: true
15396
15399
  });
@@ -15398,19 +15401,13 @@ var ScrollableTab = function ScrollableTab(_ref2) {
15398
15401
  animation.start();
15399
15402
  return function () {
15400
15403
  animation.stop();
15401
- if (timeoutHandle) {
15402
- clearTimeout(timeoutHandle);
15403
- }
15404
15404
  };
15405
- }, [selectedTabIndex, pagerViewRef]);
15406
- return /*#__PURE__*/React__default["default"].createElement(TabContainer, {
15407
- style: containerStyle,
15408
- testID: componentTestID
15409
- }, /*#__PURE__*/React__default["default"].createElement(HeaderTabWrapper, {
15405
+ }, [selectedIndex]);
15406
+ return /*#__PURE__*/React__default["default"].createElement(HeaderTabWrapper, {
15410
15407
  themeInsets: insets,
15411
15408
  style: barStyle
15412
15409
  }, /*#__PURE__*/React__default["default"].createElement(reactNative.FlatList, {
15413
- testID: componentTestID ? "".concat(componentTestID, "-tab-bar") : undefined,
15410
+ testID: testID,
15414
15411
  ref: flatListRef,
15415
15412
  horizontal: true,
15416
15413
  data: tabs,
@@ -15435,11 +15432,11 @@ var ScrollableTab = function ScrollableTab(_ref2) {
15435
15432
  var tab = _ref4.item,
15436
15433
  index = _ref4.index;
15437
15434
  var key = tab.key,
15438
- testID = tab.testID,
15435
+ tabItemTestID = tab.testID,
15439
15436
  activeItem = tab.activeItem,
15440
15437
  originalInactiveItem = tab.inactiveItem,
15441
15438
  badge = tab.badge;
15442
- var active = selectedTabKey === key;
15439
+ var active = selectedIndex === index;
15443
15440
  var activeAnimated = tabsAnims[index];
15444
15441
  var outlineScale = active ? activeAnimated.interpolate({
15445
15442
  inputRange: [0, 1],
@@ -15456,7 +15453,7 @@ var ScrollableTab = function ScrollableTab(_ref2) {
15456
15453
  onPress: function onPress() {
15457
15454
  onTabPress(key);
15458
15455
  },
15459
- testID: testID
15456
+ testID: tabItemTestID
15460
15457
  }, /*#__PURE__*/React__default["default"].createElement(HeaderTabItem, {
15461
15458
  isFirstItem: index === 0
15462
15459
  }, /*#__PURE__*/React__default["default"].createElement(HeaderTabItemOutlineWrapper, null, /*#__PURE__*/React__default["default"].createElement(HeaderTabItemOutline, {
@@ -15472,7 +15469,55 @@ var ScrollableTab = function ScrollableTab(_ref2) {
15472
15469
  tabItem: tabItem
15473
15470
  }))));
15474
15471
  }
15475
- })), /*#__PURE__*/React__default["default"].createElement(ContentWrapper, {
15472
+ }));
15473
+ };
15474
+
15475
+ var ScrollableTab$1 = function ScrollableTab(_ref) {
15476
+ var onTabPress = _ref.onTabPress,
15477
+ selectedTabKey = _ref.selectedTabKey,
15478
+ tabs = _ref.tabs,
15479
+ containerStyle = _ref.containerStyle,
15480
+ barStyle = _ref.barStyle,
15481
+ _ref$lazy = _ref.lazy,
15482
+ lazy = _ref$lazy === void 0 ? false : _ref$lazy,
15483
+ _ref$lazyPreloadDista = _ref.lazyPreloadDistance,
15484
+ lazyPreloadDistance = _ref$lazyPreloadDista === void 0 ? 1 : _ref$lazyPreloadDista,
15485
+ _ref$swipeEnabled = _ref.swipeEnabled,
15486
+ swipeEnabled = _ref$swipeEnabled === void 0 ? true : _ref$swipeEnabled,
15487
+ componentTestID = _ref.testID;
15488
+ var pagerViewRef = React__default["default"].useRef(null);
15489
+ var insets = reactNativeSafeAreaContext.useSafeAreaInsets();
15490
+ var selectedTabIndex = tabs.findIndex(function (item) {
15491
+ return item.key === selectedTabKey;
15492
+ });
15493
+ React__default["default"].useEffect(function () {
15494
+ var timeoutHandle = null;
15495
+ if (selectedTabIndex !== -1) {
15496
+ // If the selected tab is changed too quickly, the setPage is crashed and not work anymore
15497
+ // We apply throttle to prevent this issue https://github.com/Thinkei/hero-design/issues/1715
15498
+ timeoutHandle = setTimeout(function () {
15499
+ var _pagerViewRef$current;
15500
+ // use no animation to prevent unexpected behavior if users select tab too quickly
15501
+ (_pagerViewRef$current = pagerViewRef.current) === null || _pagerViewRef$current === void 0 ? void 0 : _pagerViewRef$current.setPageWithoutAnimation(selectedTabIndex);
15502
+ }, 200);
15503
+ }
15504
+ return function () {
15505
+ if (timeoutHandle) {
15506
+ clearTimeout(timeoutHandle);
15507
+ }
15508
+ };
15509
+ }, [selectedTabIndex, pagerViewRef]);
15510
+ return /*#__PURE__*/React__default["default"].createElement(TabContainer, {
15511
+ style: containerStyle,
15512
+ testID: componentTestID
15513
+ }, /*#__PURE__*/React__default["default"].createElement(ScrollableTabHeader, {
15514
+ tabs: tabs,
15515
+ selectedIndex: selectedTabIndex,
15516
+ onTabPress: onTabPress,
15517
+ barStyle: barStyle,
15518
+ insets: insets,
15519
+ testID: componentTestID ? "".concat(componentTestID, "-tab-bar") : undefined
15520
+ }), /*#__PURE__*/React__default["default"].createElement(ContentWrapper, {
15476
15521
  initialPage: selectedTabIndex,
15477
15522
  ref: pagerViewRef,
15478
15523
  onPageSelected: function onPageSelected(e) {
@@ -15500,6 +15545,151 @@ var ScrollableTab = function ScrollableTab(_ref2) {
15500
15545
  })));
15501
15546
  };
15502
15547
 
15548
+ var SceneView = function SceneView(_ref) {
15549
+ var _ref$lazy = _ref.lazy,
15550
+ lazy = _ref$lazy === void 0 ? false : _ref$lazy,
15551
+ _ref$lazyPreloadDista = _ref.lazyPreloadDistance,
15552
+ lazyPreloadDistance = _ref$lazyPreloadDista === void 0 ? 1 : _ref$lazyPreloadDista,
15553
+ children = _ref.children,
15554
+ index = _ref.index,
15555
+ selectedIndex = _ref.selectedIndex,
15556
+ focused = _ref.focused,
15557
+ testID = _ref.testID;
15558
+ var _React$useState = React__default["default"].useState(Math.abs(selectedIndex - index) > lazyPreloadDistance),
15559
+ _React$useState2 = _slicedToArray(_React$useState, 2),
15560
+ isLoading = _React$useState2[0],
15561
+ setIsLoading = _React$useState2[1];
15562
+ if (isLoading && Math.abs(selectedIndex - index) <= lazyPreloadDistance) {
15563
+ // Always render the route when it becomes focused
15564
+ setIsLoading(false);
15565
+ }
15566
+ if (lazy && isLoading) {
15567
+ console.error('Lazy loading is not supported in this version of Tabs');
15568
+ }
15569
+ React__default["default"].useEffect(function () {
15570
+ var timer;
15571
+ if (!lazy && isLoading) {
15572
+ // If lazy mode is not enabled, render the scene with a delay if not loaded already
15573
+ // This improves the initial startup time as the scene is no longer blocking
15574
+ timer = setTimeout(function () {
15575
+ return setIsLoading(false);
15576
+ }, 0);
15577
+ }
15578
+ return function () {
15579
+ clearTimeout(timer);
15580
+ };
15581
+ }, [index, isLoading, lazy, focused]);
15582
+ return /*#__PURE__*/React__default["default"].createElement(TabScreen, {
15583
+ accessibilityElementsHidden: !focused,
15584
+ importantForAccessibility: focused ? 'auto' : 'no-hide-descendants',
15585
+ style: [{
15586
+ flex: 1,
15587
+ overflow: 'hidden'
15588
+ }, focused ? reactNative.StyleSheet.absoluteFill : null],
15589
+ testID: testID
15590
+ }, focused || !isLoading ? children : null);
15591
+ };
15592
+
15593
+ var TabContext = /*#__PURE__*/React__default["default"].createContext(null);
15594
+ var ScreenContext = /*#__PURE__*/React__default["default"].createContext(null);
15595
+ var useIsFocused = function useIsFocused() {
15596
+ var context = React__default["default"].useContext(TabContext);
15597
+ var key = React__default["default"].useContext(ScreenContext);
15598
+ if (!context || !key) {
15599
+ return;
15600
+ }
15601
+ var isFocused = context.selectedTabKey === key;
15602
+ return isFocused;
15603
+ };
15604
+ var ScrollableTab = function ScrollableTab(_ref) {
15605
+ var onTabPress = _ref.onTabPress,
15606
+ selectedTabKey = _ref.selectedTabKey,
15607
+ tabs = _ref.tabs,
15608
+ containerStyle = _ref.containerStyle,
15609
+ barStyle = _ref.barStyle,
15610
+ _ref$lazy = _ref.lazy,
15611
+ lazy = _ref$lazy === void 0 ? false : _ref$lazy,
15612
+ _ref$lazyPreloadDista = _ref.lazyPreloadDistance,
15613
+ lazyPreloadDistance = _ref$lazyPreloadDista === void 0 ? 1 : _ref$lazyPreloadDista,
15614
+ _ref$swipeEnabled = _ref.swipeEnabled,
15615
+ swipeEnabled = _ref$swipeEnabled === void 0 ? true : _ref$swipeEnabled,
15616
+ componentTestID = _ref.testID;
15617
+ var pagerViewRef = React__default["default"].useRef(null);
15618
+ var insets = reactNativeSafeAreaContext.useSafeAreaInsets();
15619
+ var selectedTabIndex = tabs.findIndex(function (item) {
15620
+ return item.key === selectedTabKey;
15621
+ });
15622
+ React__default["default"].useEffect(function () {
15623
+ var timeoutHandle = null;
15624
+ if (selectedTabIndex !== -1) {
15625
+ // If the selected tab is changed too quickly, the setPage is crashed and not work anymore
15626
+ // We apply throttle to prevent this issue https://github.com/Thinkei/hero-design/issues/1715
15627
+ timeoutHandle = setTimeout(function () {
15628
+ var _pagerViewRef$current;
15629
+ // use no animation to prevent unexpected behavior if users select tab too quickly
15630
+ (_pagerViewRef$current = pagerViewRef.current) === null || _pagerViewRef$current === void 0 ? void 0 : _pagerViewRef$current.setPageWithoutAnimation(selectedTabIndex);
15631
+ }, 200);
15632
+ }
15633
+ return function () {
15634
+ if (timeoutHandle) {
15635
+ clearTimeout(timeoutHandle);
15636
+ }
15637
+ };
15638
+ }, [selectedTabIndex, pagerViewRef]);
15639
+ var indexRef = React__default["default"].useRef(selectedTabIndex);
15640
+ var tabContextProviderValue = React__default["default"].useMemo(function () {
15641
+ return {
15642
+ selectedTabKey: selectedTabKey
15643
+ };
15644
+ }, [selectedTabKey]);
15645
+ return /*#__PURE__*/React__default["default"].createElement(TabContext.Provider, {
15646
+ value: tabContextProviderValue
15647
+ }, /*#__PURE__*/React__default["default"].createElement(TabContainer, {
15648
+ style: containerStyle,
15649
+ testID: componentTestID
15650
+ }, /*#__PURE__*/React__default["default"].createElement(ScrollableTabHeader, {
15651
+ tabs: tabs,
15652
+ selectedIndex: selectedTabIndex,
15653
+ onTabPress: onTabPress,
15654
+ barStyle: barStyle,
15655
+ insets: insets,
15656
+ testID: componentTestID ? "".concat(componentTestID, "-tab-bar") : undefined
15657
+ }), /*#__PURE__*/React__default["default"].createElement(ContentWrapper, {
15658
+ initialPage: selectedTabIndex,
15659
+ ref: pagerViewRef,
15660
+ onPageSelected: function onPageSelected(e) {
15661
+ var index = e.nativeEvent.position;
15662
+ var selectedItem = tabs[index];
15663
+ if (selectedItem) {
15664
+ setTimeout(function () {
15665
+ onTabPress(selectedItem.key);
15666
+ });
15667
+ }
15668
+ indexRef.current = index;
15669
+ },
15670
+ scrollEnabled: swipeEnabled
15671
+ }, tabs.map(function (tab, index) {
15672
+ var key = tab.key,
15673
+ component = tab.component,
15674
+ testID = tab.testID;
15675
+ return /*#__PURE__*/React__default["default"].createElement(ScreenContext.Provider, {
15676
+ value: key
15677
+ }, /*#__PURE__*/React__default["default"].createElement(SceneView, {
15678
+ testID: testID,
15679
+ key: key,
15680
+ index: index,
15681
+ selectedIndex: indexRef.current,
15682
+ lazy: lazy,
15683
+ lazyPreloadDistance: lazyPreloadDistance,
15684
+ focused: selectedTabKey === key
15685
+ }, component));
15686
+ }))));
15687
+ };
15688
+
15689
+ var ScrollableTabsV2 = Object.assign(ScrollableTab, {
15690
+ useIsFocused: useIsFocused
15691
+ });
15692
+
15503
15693
  var getTabItem = function getTabItem(_ref) {
15504
15694
  var item = _ref.item,
15505
15695
  color = _ref.color,
@@ -15626,7 +15816,8 @@ var Tabs = function Tabs(_ref2) {
15626
15816
  })));
15627
15817
  };
15628
15818
  var index$2 = Object.assign(Tabs, {
15629
- Scroll: ScrollableTab
15819
+ Scroll: ScrollableTab$1,
15820
+ ScrollV2: ScrollableTabsV2
15630
15821
  });
15631
15822
 
15632
15823
  var getFilledStyles = function getFilledStyles(themeIntent, theme) {
@@ -32481,7 +32672,7 @@ var RichTextEditor = function RichTextEditor(_ref) {
32481
32672
  var isEmptyValue = React.useMemo(function () {
32482
32673
  return lib.exports.isEmptyContent(value);
32483
32674
  }, [value]);
32484
- var variant = React.useMemo(function () {
32675
+ var state = React.useMemo(function () {
32485
32676
  if (error) {
32486
32677
  return 'error';
32487
32678
  }
@@ -32589,25 +32780,26 @@ var RichTextEditor = function RichTextEditor(_ref) {
32589
32780
  return /*#__PURE__*/React__default["default"].createElement(StyledContainer$4, {
32590
32781
  testID: testID
32591
32782
  }, /*#__PURE__*/React__default["default"].createElement(StyledTextInputContainer, null, /*#__PURE__*/React__default["default"].createElement(StyledBorderBackDrop, {
32592
- themeVariant: variant,
32783
+ themeState: state,
32593
32784
  themeFocused: isFocused
32594
32785
  }), (isFocused || label && !isEmptyValue) && /*#__PURE__*/React__default["default"].createElement(StyledLabelContainer, {
32595
32786
  pointerEvents: "none"
32596
32787
  }, required && /*#__PURE__*/React__default["default"].createElement(StyledAsteriskLabel, {
32597
- themeVariant: variant,
32788
+ themeState: state,
32598
32789
  fontSize: "small"
32599
32790
  }, "*"), !!label && /*#__PURE__*/React__default["default"].createElement(StyledLabel, {
32600
32791
  testID: "input-label",
32601
32792
  fontSize: "small",
32602
- themeVariant: variant
32793
+ themeState: state
32603
32794
  }, label)), /*#__PURE__*/React__default["default"].createElement(StyledTextInputAndLabelContainer, null, !isFocused && isEmptyValue && /*#__PURE__*/React__default["default"].createElement(StyledLabelContainerInsideTextInput, {
32795
+ themeVariant: "text",
32604
32796
  pointerEvents: "none"
32605
32797
  }, required && /*#__PURE__*/React__default["default"].createElement(StyledAsteriskLabelInsideTextInput, {
32606
- themeVariant: variant
32798
+ themeState: state
32607
32799
  }, "*"), !!label && /*#__PURE__*/React__default["default"].createElement(StyledLabelInsideTextInput, {
32608
32800
  testID: "input-label",
32609
32801
  fontSize: "medium",
32610
- themeVariant: variant
32802
+ themeState: state
32611
32803
  }, label)), /*#__PURE__*/React__default["default"].createElement(reactNative.TouchableWithoutFeedback, {
32612
32804
  onPress: function onPress(e) {
32613
32805
  return e.stopPropagation();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hero-design/rn",
3
- "version": "8.23.0",
3
+ "version": "8.24.0-alpha.0",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",