@hero-design/rn 8.35.0-alpha.3 → 8.35.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 (371) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.turbo/turbo-build.log +2 -2
  3. package/.turbo/turbo-publish:npm.log +0 -9
  4. package/es/index.js +543 -647
  5. package/jest.config.js +1 -1
  6. package/lib/index.js +553 -657
  7. package/package.json +9 -9
  8. package/src/components/Attachment/__tests__/__snapshots__/index.spec.tsx.snap +1 -1
  9. package/src/components/Badge/__tests__/__snapshots__/Badge.spec.tsx.snap +3 -3
  10. package/src/components/Badge/__tests__/__snapshots__/Status.spec.tsx.snap +1 -1
  11. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/StyledLoadingIndicator.spec.tsx.snap +2 -2
  12. package/src/components/Button/LoadingIndicator/__tests__/__snapshots__/index.spec.tsx.snap +6 -6
  13. package/src/components/Button/UtilityButton/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
  14. package/src/components/Button/__tests__/__snapshots__/Button.spec.tsx.snap +4 -4
  15. package/src/components/Button/__tests__/__snapshots__/StyledButton.spec.tsx.snap +6 -6
  16. package/src/components/Calendar/__tests__/index.spec.tsx +29 -0
  17. package/src/components/Calendar/index.tsx +10 -1
  18. package/src/components/Carousel/__tests__/__snapshots__/index.spec.tsx.snap +75 -74
  19. package/src/components/Carousel/index.tsx +1 -1
  20. package/src/components/DatePicker/DatePickerCalendar.tsx +23 -14
  21. package/src/components/FAB/ActionGroup/__tests__/__snapshots__/index.spec.tsx.snap +1 -1
  22. package/src/components/FAB/ActionGroup/index.tsx +45 -53
  23. package/src/components/FAB/__tests__/__snapshots__/StyledFAB.spec.tsx.snap +1 -1
  24. package/src/components/FAB/index.tsx +0 -4
  25. package/src/components/Icon/__tests__/__snapshots__/index.spec.tsx.snap +1 -1
  26. package/src/components/PinInput/__tests__/__snapshots__/PinCell.spec.tsx.snap +4 -4
  27. package/src/components/PinInput/__tests__/__snapshots__/index.spec.tsx.snap +12 -12
  28. package/src/components/Portal/PortalHost.tsx +24 -0
  29. package/src/components/Portal/PortalProvider.tsx +29 -0
  30. package/src/components/Portal/__tests__/PortalHost.spec.tsx +50 -0
  31. package/src/components/Portal/__tests__/PortalProvider.spec.tsx +24 -0
  32. package/src/components/Portal/__tests__/index.spec.tsx +29 -0
  33. package/src/components/Portal/__tests__/reducer.spec.tsx +110 -0
  34. package/src/components/Portal/constants.ts +10 -0
  35. package/src/components/Portal/contexts.ts +14 -0
  36. package/src/components/Portal/index.tsx +42 -0
  37. package/src/components/Portal/reducer.ts +106 -0
  38. package/src/components/Portal/types.tsx +31 -0
  39. package/src/components/Portal/usePortal.ts +50 -0
  40. package/src/components/Portal/usePortalState.ts +11 -0
  41. package/src/components/Progress/StyledProgressBar.tsx +1 -0
  42. package/src/components/Progress/__tests__/__snapshots__/index.spec.js.snap +46 -44
  43. package/src/components/RichTextEditor/__tests__/__snapshots__/RichTextEditor.spec.tsx.snap +6 -6
  44. package/src/components/SectionHeading/__tests__/__snapshots__/index.spec.tsx.snap +1 -1
  45. package/src/components/Skeleton/__tests__/__snapshots__/index.spec.tsx.snap +7 -7
  46. package/src/components/Swipeable/__tests__/__snapshots__/index.spec.tsx.snap +5 -0
  47. package/src/components/Swipeable/index.tsx +6 -1
  48. package/src/components/Switch/SelectorSwitch/StyledSelectorSwitch.tsx +4 -7
  49. package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/Option.spec.tsx.snap +3 -3
  50. package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/index.spec.tsx.snap +9 -9
  51. package/src/components/Switch/SelectorSwitch/index.tsx +7 -15
  52. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabs.spec.tsx.snap +21 -21
  53. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabsHeader.spec.tsx.snap +6 -6
  54. package/src/components/Tabs/__tests__/__snapshots__/TabWithBadge.spec.tsx.snap +2 -2
  55. package/src/components/Tabs/__tests__/__snapshots__/index.spec.tsx.snap +9 -9
  56. package/src/components/Tag/StyledTag.tsx +6 -35
  57. package/src/components/Tag/__tests__/Tag.spec.tsx +13 -13
  58. package/src/components/Tag/__tests__/__snapshots__/Tag.spec.tsx.snap +40 -79
  59. package/src/components/Tag/index.tsx +8 -6
  60. package/src/components/TextInput/__tests__/__snapshots__/StyledTextInput.spec.tsx.snap +7 -7
  61. package/src/components/TextInput/__tests__/__snapshots__/index.spec.tsx.snap +20 -20
  62. package/src/components/Toolbar/__tests__/__snapshots__/ToolbarItem.spec.tsx.snap +1 -1
  63. package/src/components/Typography/Body/__tests__/__snapshots__/StyledBody.tsx.snap +1 -1
  64. package/src/components/Typography/Body/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
  65. package/src/components/Typography/Caption/__tests__/__snapshots__/StyledCaption.spec.tsx.snap +1 -1
  66. package/src/components/Typography/Caption/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
  67. package/src/components/Typography/Label/__tests__/__snapshots__/StyledLabel.tsx.snap +1 -1
  68. package/src/components/Typography/Label/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
  69. package/src/components/Typography/Text/__tests__/__snapshots__/StyledText.spec.tsx.snap +1 -1
  70. package/src/components/Typography/Title/__tests__/__snapshots__/StyledTitle.tsx.snap +3 -3
  71. package/src/components/Typography/Title/__tests__/__snapshots__/index.spec.tsx.snap +4 -4
  72. package/src/index.ts +2 -2
  73. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +49 -46
  74. package/src/theme/components/button.ts +1 -1
  75. package/src/theme/components/progress.ts +2 -2
  76. package/src/theme/components/swipeable.ts +5 -1
  77. package/src/theme/components/switch.ts +4 -4
  78. package/src/theme/components/tabs.ts +1 -1
  79. package/src/theme/components/tag.ts +2 -2
  80. package/src/theme/components/typography.ts +2 -2
  81. package/src/theme/global/colors/__tests__/__snapshots__/eBens.spec.ts.snap +7 -7
  82. package/src/theme/global/colors/__tests__/__snapshots__/global.spec.ts.snap +5 -5
  83. package/src/theme/global/colors/__tests__/__snapshots__/jobs.spec.ts.snap +6 -6
  84. package/src/theme/global/colors/__tests__/__snapshots__/swag.spec.ts.snap +6 -6
  85. package/src/theme/global/colors/__tests__/__snapshots__/wallet.spec.ts.snap +7 -7
  86. package/src/theme/global/colors/__tests__/__snapshots__/work.spec.ts.snap +5 -5
  87. package/src/theme/global/colors/eBens.ts +2 -2
  88. package/src/theme/global/colors/global.ts +5 -5
  89. package/src/theme/global/colors/jobs.ts +1 -1
  90. package/src/theme/global/colors/swag.ts +1 -1
  91. package/src/theme/global/colors/wallet.ts +2 -2
  92. package/types/components/Accordion/AccordionItem.d.ts +0 -0
  93. package/types/components/Accordion/StyledAccordion.d.ts +0 -0
  94. package/types/components/Accordion/index.d.ts +0 -0
  95. package/types/components/Alert/StyledAlert.d.ts +0 -0
  96. package/types/components/Alert/index.d.ts +0 -0
  97. package/types/components/Attachment/StyledAttachment.d.ts +0 -0
  98. package/types/components/Attachment/index.d.ts +0 -0
  99. package/types/components/Avatar/Avatar.d.ts +0 -0
  100. package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
  101. package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
  102. package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
  103. package/types/components/Avatar/StyledAvatar.d.ts +0 -0
  104. package/types/components/Avatar/index.d.ts +0 -0
  105. package/types/components/Badge/Status.d.ts +0 -0
  106. package/types/components/Badge/StyledBadge.d.ts +0 -0
  107. package/types/components/Badge/index.d.ts +0 -0
  108. package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
  109. package/types/components/BottomNavigation/index.d.ts +0 -0
  110. package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
  111. package/types/components/BottomSheet/Footer.d.ts +0 -0
  112. package/types/components/BottomSheet/Header.d.ts +0 -0
  113. package/types/components/BottomSheet/ScrollView.d.ts +0 -0
  114. package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
  115. package/types/components/BottomSheet/index.d.ts +0 -0
  116. package/types/components/Box/StyledBox.d.ts +0 -0
  117. package/types/components/Box/config.d.ts +0 -0
  118. package/types/components/Box/index.d.ts +0 -0
  119. package/types/components/Box/types.d.ts +0 -0
  120. package/types/components/Button/Button.d.ts +0 -0
  121. package/types/components/Button/IconButton.d.ts +0 -0
  122. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
  123. package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
  124. package/types/components/Button/StyledButton.d.ts +0 -0
  125. package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
  126. package/types/components/Button/UtilityButton/index.d.ts +0 -0
  127. package/types/components/Button/index.d.ts +0 -0
  128. package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
  129. package/types/components/Calendar/StyledCalendar.d.ts +0 -0
  130. package/types/components/Calendar/helpers.d.ts +0 -0
  131. package/types/components/Calendar/index.d.ts +2 -1
  132. package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
  133. package/types/components/Card/DataCard/index.d.ts +0 -0
  134. package/types/components/Card/StyledCard.d.ts +0 -0
  135. package/types/components/Card/index.d.ts +0 -0
  136. package/types/components/Carousel/CardCarousel.d.ts +0 -0
  137. package/types/components/Carousel/CarouselItem.d.ts +0 -0
  138. package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
  139. package/types/components/Carousel/StyledCarousel.d.ts +0 -0
  140. package/types/components/Carousel/contants.d.ts +0 -0
  141. package/types/components/Carousel/index.d.ts +0 -0
  142. package/types/components/Carousel/types.d.ts +0 -0
  143. package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
  144. package/types/components/Checkbox/index.d.ts +0 -0
  145. package/types/components/Collapse/StyledCollapse.d.ts +0 -0
  146. package/types/components/Collapse/index.d.ts +0 -0
  147. package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
  148. package/types/components/ContentNavigator/index.d.ts +0 -0
  149. package/types/components/DatePicker/DatePickerAndroid.d.ts +0 -0
  150. package/types/components/DatePicker/DatePickerCalendar.d.ts +0 -0
  151. package/types/components/DatePicker/DatePickerIOS.d.ts +0 -0
  152. package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
  153. package/types/components/DatePicker/index.d.ts +0 -0
  154. package/types/components/DatePicker/types.d.ts +0 -0
  155. package/types/components/Divider/StyledDivider.d.ts +0 -0
  156. package/types/components/Divider/index.d.ts +0 -0
  157. package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
  158. package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
  159. package/types/components/Drawer/StyledDrawer.d.ts +0 -0
  160. package/types/components/Drawer/index.d.ts +0 -0
  161. package/types/components/Empty/StyledEmpty.d.ts +0 -0
  162. package/types/components/Empty/index.d.ts +0 -0
  163. package/types/components/Error/StyledError.d.ts +0 -0
  164. package/types/components/Error/index.d.ts +0 -0
  165. package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
  166. package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +0 -0
  167. package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
  168. package/types/components/FAB/ActionGroup/index.d.ts +0 -1
  169. package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
  170. package/types/components/FAB/FAB.d.ts +0 -0
  171. package/types/components/FAB/StyledFAB.d.ts +0 -0
  172. package/types/components/FAB/index.d.ts +0 -3
  173. package/types/components/Icon/AnimatedIcon.d.ts +0 -0
  174. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  175. package/types/components/Icon/IconList.d.ts +0 -0
  176. package/types/components/Icon/index.d.ts +0 -0
  177. package/types/components/Icon/utils.d.ts +0 -0
  178. package/types/components/Image/index.d.ts +0 -0
  179. package/types/components/List/BasicListItem.d.ts +0 -0
  180. package/types/components/List/ListItem.d.ts +0 -0
  181. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  182. package/types/components/List/StyledListItem.d.ts +0 -0
  183. package/types/components/List/index.d.ts +0 -0
  184. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  185. package/types/components/PageControl/index.d.ts +0 -0
  186. package/types/components/PinInput/PinCell.d.ts +0 -0
  187. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  188. package/types/components/PinInput/index.d.ts +0 -0
  189. package/types/components/Portal/PortalHost.d.ts +5 -0
  190. package/types/components/Portal/PortalProvider.d.ts +7 -0
  191. package/types/components/Portal/constants.d.ts +8 -0
  192. package/types/components/Portal/contexts.d.ts +9 -0
  193. package/types/components/Portal/index.d.ts +13 -0
  194. package/types/components/Portal/reducer.d.ts +5 -0
  195. package/types/components/Portal/types.d.ts +22 -0
  196. package/types/components/Portal/usePortal.d.ts +8 -0
  197. package/types/components/Portal/usePortalState.d.ts +1 -0
  198. package/types/components/Progress/ProgressBar.d.ts +0 -0
  199. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  200. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  201. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  202. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  203. package/types/components/Progress/constants.d.ts +0 -0
  204. package/types/components/Progress/index.d.ts +0 -0
  205. package/types/components/Progress/types.d.ts +0 -0
  206. package/types/components/Radio/Radio.d.ts +0 -0
  207. package/types/components/Radio/RadioGroup.d.ts +0 -0
  208. package/types/components/Radio/StyledRadio.d.ts +0 -0
  209. package/types/components/Radio/index.d.ts +0 -0
  210. package/types/components/Radio/types.d.ts +0 -0
  211. package/types/components/RefreshControl/index.d.ts +0 -0
  212. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  213. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  214. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  215. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  216. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  217. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  218. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  219. package/types/components/RichTextEditor/constants.d.ts +0 -0
  220. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  221. package/types/components/RichTextEditor/index.d.ts +0 -0
  222. package/types/components/RichTextEditor/types.d.ts +0 -0
  223. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  224. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  225. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  226. package/types/components/SectionHeading/index.d.ts +0 -0
  227. package/types/components/Select/BaseOptionList.d.ts +0 -0
  228. package/types/components/Select/Footer.d.ts +0 -0
  229. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  230. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  231. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  232. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  233. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  234. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  235. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  236. package/types/components/Select/StyledSelect.d.ts +0 -0
  237. package/types/components/Select/helpers.d.ts +0 -0
  238. package/types/components/Select/index.d.ts +0 -0
  239. package/types/components/Select/types.d.ts +0 -0
  240. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  241. package/types/components/Skeleton/index.d.ts +0 -0
  242. package/types/components/Slider/index.d.ts +0 -0
  243. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  244. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  245. package/types/components/Spinner/index.d.ts +0 -0
  246. package/types/components/Success/StyledSuccess.d.ts +0 -0
  247. package/types/components/Success/index.d.ts +0 -0
  248. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  249. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  250. package/types/components/Swipeable/index.d.ts +1 -1
  251. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  252. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  253. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  254. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  255. package/types/components/Switch/index.d.ts +0 -0
  256. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  257. package/types/components/Tabs/SceneView.d.ts +0 -0
  258. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  259. package/types/components/Tabs/ScrollableTabsHeader.d.ts +0 -0
  260. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  261. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  262. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  263. package/types/components/Tabs/index.d.ts +0 -0
  264. package/types/components/Tabs/useIsFocused.d.ts +0 -0
  265. package/types/components/Tabs/utils.d.ts +0 -0
  266. package/types/components/Tag/StyledTag.d.ts +1 -4
  267. package/types/components/Tag/index.d.ts +1 -0
  268. package/types/components/TextInput/StyledTextInput.d.ts +0 -0
  269. package/types/components/TextInput/index.d.ts +0 -0
  270. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  271. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  272. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  273. package/types/components/TimePicker/index.d.ts +0 -0
  274. package/types/components/TimePicker/types.d.ts +0 -0
  275. package/types/components/Toast/StyledToast.d.ts +0 -0
  276. package/types/components/Toast/Toast.d.ts +0 -0
  277. package/types/components/Toast/ToastContainer.d.ts +0 -0
  278. package/types/components/Toast/ToastContext.d.ts +0 -0
  279. package/types/components/Toast/ToastProvider.d.ts +0 -0
  280. package/types/components/Toast/index.d.ts +0 -0
  281. package/types/components/Toast/types.d.ts +0 -0
  282. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  283. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  284. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  285. package/types/components/Toolbar/index.d.ts +0 -0
  286. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  287. package/types/components/Typography/Text/index.d.ts +0 -0
  288. package/types/components/Typography/index.d.ts +0 -0
  289. package/types/index.d.ts +2 -2
  290. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  291. package/types/theme/ThemeProvider.d.ts +0 -0
  292. package/types/theme/ThemeSwitcher.d.ts +0 -0
  293. package/types/theme/components/accordion.d.ts +0 -0
  294. package/types/theme/components/alert.d.ts +0 -0
  295. package/types/theme/components/attachment.d.ts +0 -0
  296. package/types/theme/components/avatar.d.ts +0 -0
  297. package/types/theme/components/badge.d.ts +0 -0
  298. package/types/theme/components/bottomNavigation.d.ts +0 -0
  299. package/types/theme/components/bottomSheet.d.ts +0 -0
  300. package/types/theme/components/button.d.ts +0 -0
  301. package/types/theme/components/calendar.d.ts +0 -0
  302. package/types/theme/components/card.d.ts +0 -0
  303. package/types/theme/components/cardCarousel.d.ts +0 -0
  304. package/types/theme/components/carousel.d.ts +0 -0
  305. package/types/theme/components/checkbox.d.ts +0 -0
  306. package/types/theme/components/contentNavigator.d.ts +0 -0
  307. package/types/theme/components/datePicker.d.ts +0 -0
  308. package/types/theme/components/divider.d.ts +0 -0
  309. package/types/theme/components/drawer.d.ts +0 -0
  310. package/types/theme/components/empty.d.ts +0 -0
  311. package/types/theme/components/error.d.ts +0 -0
  312. package/types/theme/components/fab.d.ts +0 -0
  313. package/types/theme/components/icon.d.ts +0 -0
  314. package/types/theme/components/image.d.ts +0 -0
  315. package/types/theme/components/list.d.ts +0 -0
  316. package/types/theme/components/pageControl.d.ts +0 -0
  317. package/types/theme/components/pinInput.d.ts +0 -0
  318. package/types/theme/components/progress.d.ts +0 -0
  319. package/types/theme/components/radio.d.ts +0 -0
  320. package/types/theme/components/refreshControl.d.ts +0 -0
  321. package/types/theme/components/richTextEditor.d.ts +0 -0
  322. package/types/theme/components/sectionHeading.d.ts +0 -0
  323. package/types/theme/components/select.d.ts +0 -0
  324. package/types/theme/components/skeleton.d.ts +0 -0
  325. package/types/theme/components/slider.d.ts +0 -0
  326. package/types/theme/components/spinner.d.ts +0 -0
  327. package/types/theme/components/success.d.ts +0 -0
  328. package/types/theme/components/swipeable.d.ts +3 -0
  329. package/types/theme/components/switch.d.ts +1 -1
  330. package/types/theme/components/tabs.d.ts +0 -0
  331. package/types/theme/components/tag.d.ts +1 -1
  332. package/types/theme/components/textInput.d.ts +0 -0
  333. package/types/theme/components/timePicker.d.ts +0 -0
  334. package/types/theme/components/toast.d.ts +0 -0
  335. package/types/theme/components/toolbar.d.ts +0 -0
  336. package/types/theme/components/typography.d.ts +0 -0
  337. package/types/theme/getTheme.d.ts +0 -0
  338. package/types/theme/global/borders.d.ts +0 -0
  339. package/types/theme/global/colors/eBens.d.ts +0 -0
  340. package/types/theme/global/colors/global.d.ts +0 -0
  341. package/types/theme/global/colors/globalDark.d.ts +0 -0
  342. package/types/theme/global/colors/jobs.d.ts +0 -0
  343. package/types/theme/global/colors/swag.d.ts +0 -0
  344. package/types/theme/global/colors/swagDark.d.ts +0 -0
  345. package/types/theme/global/colors/types.d.ts +0 -0
  346. package/types/theme/global/colors/wallet.d.ts +0 -0
  347. package/types/theme/global/colors/work.d.ts +0 -0
  348. package/types/theme/global/index.d.ts +0 -0
  349. package/types/theme/global/scale.d.ts +0 -0
  350. package/types/theme/global/sizes.d.ts +0 -0
  351. package/types/theme/global/space.d.ts +0 -0
  352. package/types/theme/global/typography.d.ts +0 -0
  353. package/types/theme/index.d.ts +0 -0
  354. package/types/types.d.ts +0 -0
  355. package/types/utils/functions.d.ts +0 -0
  356. package/types/utils/helpers.d.ts +0 -0
  357. package/types/utils/hooks.d.ts +0 -0
  358. package/types/utils/scale.d.ts +0 -0
  359. package/.tool-versions +0 -1
  360. package/.turbo/turbo-build:types.log +0 -9
  361. package/.turbo/turbo-lint.log +0 -163
  362. package/.turbo/turbo-test.log +0 -725
  363. package/.turbo/turbo-type-check.log +0 -1
  364. package/types/components/FAB/ActionGroup/FABModal.d.ts +0 -21
  365. package/types/components/FAB/ActionGroup/FABModalContentWrapper.d.ts +0 -18
  366. package/types/components/FAB/ActionGroup/FABProvider.d.ts +0 -5
  367. package/types/components/FAB/ActionGroup/ModalPresenter/ModalPresenter.d.ts +0 -34
  368. package/types/components/FAB/ActionGroup/ModalPresenter/index.d.ts +0 -3
  369. package/types/components/Tabs/ScrollableTabsV2/SceneView.d.ts +0 -10
  370. package/types/components/Tabs/ScrollableTabsV2/ScrollableTabsV2.d.ts +0 -9
  371. package/types/components/Tabs/ScrollableTabsV2/index.d.ts +0 -4
@@ -14,7 +14,6 @@ import {
14
14
 
15
15
  import Box from '../../Box';
16
16
  import { FABHandles } from '../FAB';
17
- import { Portal } from '@gorhom/portal';
18
17
 
19
18
  export type ActionGroupHandles = {
20
19
  showFAB: () => void;
@@ -62,7 +61,6 @@ export interface ActionGroupProps {
62
61
  * Testing id of the component.
63
62
  */
64
63
  testID?: string;
65
- portalName?: string;
66
64
  }
67
65
 
68
66
  const ActionGroup = forwardRef<ActionGroupHandles, ActionGroupProps>(
@@ -76,7 +74,6 @@ const ActionGroup = forwardRef<ActionGroupHandles, ActionGroupProps>(
76
74
  testID,
77
75
  fabTitle,
78
76
  fabIcon = 'add',
79
- portalName,
80
77
  },
81
78
  ref
82
79
  ) => {
@@ -126,57 +123,52 @@ const ActionGroup = forwardRef<ActionGroupHandles, ActionGroupProps>(
126
123
  outputRange: [0, 1],
127
124
  });
128
125
 
129
- const Wrapper = portalName ? Portal : React.Fragment;
130
126
  return (
131
- <Wrapper name={portalName}>
132
- <StyledContainer testID={testID} pointerEvents="box-none" style={style}>
133
- <StyledBackdrop
134
- pointerEvents={active ? 'auto' : 'box-none'}
135
- testID="back-drop"
136
- style={{ opacity: interpolatedBackdropOpacityAnimation }}
137
- />
138
- <StyledActionGroupContainer
139
- pointerEvents={active ? 'auto' : 'none'}
140
- testID="action-group"
141
- style={{
142
- opacity: interpolatedActionGroupOpacityAnimation,
143
- }}
144
- >
145
- {!!headerTitle && (
146
- <Animated.View
147
- style={{ transform: [{ translateY: titleTranslateY }] }}
148
- >
149
- <StyledHeaderText testID="header-text" level="h4">
150
- {headerTitle}
151
- </StyledHeaderText>
152
- </Animated.View>
153
- )}
154
-
155
- <Box style={[style, { paddingBottom: 0 }]}>
156
- {items?.map((itemProp, index) => (
157
- <ActionItem
158
- key={itemProp.key || `${itemProp.icon}_${itemProp.title}`}
159
- {...itemProp}
160
- index={active ? index : items.length - index}
161
- active={active}
162
- />
163
- ))}
164
- </Box>
165
- </StyledActionGroupContainer>
166
-
167
- <Portal hostName="CustomPortalHost">
168
- <StyledFAB
169
- testID="fab"
170
- icon={fabIcon}
171
- onPress={onPress}
172
- animated
173
- active={active}
174
- title={fabTitle}
175
- ref={fabRef}
176
- />
177
- </Portal>
178
- </StyledContainer>
179
- </Wrapper>
127
+ <StyledContainer testID={testID} pointerEvents="box-none" style={style}>
128
+ <StyledBackdrop
129
+ pointerEvents={active ? 'auto' : 'box-none'}
130
+ testID="back-drop"
131
+ style={{ opacity: interpolatedBackdropOpacityAnimation }}
132
+ />
133
+ <StyledActionGroupContainer
134
+ pointerEvents={active ? 'auto' : 'none'}
135
+ testID="action-group"
136
+ style={{
137
+ opacity: interpolatedActionGroupOpacityAnimation,
138
+ }}
139
+ >
140
+ {!!headerTitle && (
141
+ <Animated.View
142
+ style={{ transform: [{ translateY: titleTranslateY }] }}
143
+ >
144
+ <StyledHeaderText testID="header-text" level="h4">
145
+ {headerTitle}
146
+ </StyledHeaderText>
147
+ </Animated.View>
148
+ )}
149
+
150
+ <Box style={[style, { paddingBottom: 0 }]}>
151
+ {items?.map((itemProp, index) => (
152
+ <ActionItem
153
+ key={itemProp.key || `${itemProp.icon}_${itemProp.title}`}
154
+ {...itemProp}
155
+ index={active ? index : items.length - index}
156
+ active={active}
157
+ />
158
+ ))}
159
+ </Box>
160
+ </StyledActionGroupContainer>
161
+
162
+ <StyledFAB
163
+ testID="fab"
164
+ icon={fabIcon}
165
+ onPress={onPress}
166
+ animated
167
+ active={active}
168
+ title={fabTitle}
169
+ ref={fabRef}
170
+ />
171
+ </StyledContainer>
180
172
  );
181
173
  }
182
174
  );
@@ -73,7 +73,7 @@ exports[`StyledFAB renders correctly 2`] = `
73
73
  Object {
74
74
  "alignItems": "center",
75
75
  "alignSelf": "flex-start",
76
- "backgroundColor": "#664780",
76
+ "backgroundColor": "#33144d",
77
77
  "borderRadius": 999,
78
78
  "elevation": 2,
79
79
  "flexDirection": "row",
@@ -1,10 +1,6 @@
1
1
  import FAB from './FAB';
2
2
  import ActionGroup from './ActionGroup';
3
- import { Portal, PortalHost, PortalProvider } from '@gorhom/portal';
4
3
 
5
4
  export default Object.assign(FAB, {
6
5
  ActionGroup,
7
- Portal: Portal,
8
- PortalHost: PortalHost,
9
- Provider: PortalProvider,
10
6
  });
@@ -53,7 +53,7 @@ exports[`Icon renders correctly with color and size 1`] = `
53
53
  style={
54
54
  Array [
55
55
  Object {
56
- "color": "#de350b",
56
+ "color": "#cb300a",
57
57
  "fontSize": 28,
58
58
  },
59
59
  undefined,
@@ -102,7 +102,7 @@ exports[`PinCell renders correctly when focused is false, state is error 1`] = `
102
102
  Array [
103
103
  Object {
104
104
  "alignItems": "center",
105
- "borderColor": "#de350b",
105
+ "borderColor": "#cb300a",
106
106
  "borderRadius": 8,
107
107
  "borderWidth": 1,
108
108
  "height": 48,
@@ -128,7 +128,7 @@ exports[`PinCell renders correctly when focused is false, state is error 1`] = `
128
128
  },
129
129
  Array [
130
130
  Object {
131
- "color": "#de350b",
131
+ "color": "#cb300a",
132
132
  },
133
133
  undefined,
134
134
  ],
@@ -198,7 +198,7 @@ exports[`PinCell renders correctly when focused is true, state is error 1`] = `
198
198
  Array [
199
199
  Object {
200
200
  "alignItems": "center",
201
- "borderColor": "#de350b",
201
+ "borderColor": "#cb300a",
202
202
  "borderRadius": 8,
203
203
  "borderWidth": 2,
204
204
  "height": 48,
@@ -224,7 +224,7 @@ exports[`PinCell renders correctly when focused is true, state is error 1`] = `
224
224
  },
225
225
  Array [
226
226
  Object {
227
- "color": "#de350b",
227
+ "color": "#cb300a",
228
228
  },
229
229
  undefined,
230
230
  ],
@@ -822,7 +822,7 @@ exports[`rendering renders correctly when there is error 1`] = `
822
822
  Array [
823
823
  Object {
824
824
  "alignItems": "center",
825
- "borderColor": "#de350b",
825
+ "borderColor": "#cb300a",
826
826
  "borderRadius": 8,
827
827
  "borderWidth": 1,
828
828
  "height": 48,
@@ -839,8 +839,8 @@ exports[`rendering renders correctly when there is error 1`] = `
839
839
  style={
840
840
  Array [
841
841
  Object {
842
- "backgroundColor": "#de350b",
843
- "borderColor": "#de350b",
842
+ "backgroundColor": "#cb300a",
843
+ "borderColor": "#cb300a",
844
844
  "borderRadius": 999,
845
845
  "borderWidth": 1,
846
846
  "height": 16,
@@ -868,7 +868,7 @@ exports[`rendering renders correctly when there is error 1`] = `
868
868
  Array [
869
869
  Object {
870
870
  "alignItems": "center",
871
- "borderColor": "#de350b",
871
+ "borderColor": "#cb300a",
872
872
  "borderRadius": 8,
873
873
  "borderWidth": 1,
874
874
  "height": 48,
@@ -885,8 +885,8 @@ exports[`rendering renders correctly when there is error 1`] = `
885
885
  style={
886
886
  Array [
887
887
  Object {
888
- "backgroundColor": "#de350b",
889
- "borderColor": "#de350b",
888
+ "backgroundColor": "#cb300a",
889
+ "borderColor": "#cb300a",
890
890
  "borderRadius": 999,
891
891
  "borderWidth": 1,
892
892
  "height": 16,
@@ -914,7 +914,7 @@ exports[`rendering renders correctly when there is error 1`] = `
914
914
  Array [
915
915
  Object {
916
916
  "alignItems": "center",
917
- "borderColor": "#de350b",
917
+ "borderColor": "#cb300a",
918
918
  "borderRadius": 8,
919
919
  "borderWidth": 1,
920
920
  "height": 48,
@@ -931,7 +931,7 @@ exports[`rendering renders correctly when there is error 1`] = `
931
931
  style={
932
932
  Array [
933
933
  Object {
934
- "borderColor": "#de350b",
934
+ "borderColor": "#cb300a",
935
935
  "borderRadius": 999,
936
936
  "borderWidth": 1,
937
937
  "height": 16,
@@ -959,7 +959,7 @@ exports[`rendering renders correctly when there is error 1`] = `
959
959
  Array [
960
960
  Object {
961
961
  "alignItems": "center",
962
- "borderColor": "#de350b",
962
+ "borderColor": "#cb300a",
963
963
  "borderRadius": 8,
964
964
  "borderWidth": 1,
965
965
  "height": 48,
@@ -976,7 +976,7 @@ exports[`rendering renders correctly when there is error 1`] = `
976
976
  style={
977
977
  Array [
978
978
  Object {
979
- "borderColor": "#de350b",
979
+ "borderColor": "#cb300a",
980
980
  "borderRadius": 999,
981
981
  "borderWidth": 1,
982
982
  "height": 16,
@@ -1007,7 +1007,7 @@ exports[`rendering renders correctly when there is error 1`] = `
1007
1007
  style={
1008
1008
  Array [
1009
1009
  Object {
1010
- "color": "#de350b",
1010
+ "color": "#cb300a",
1011
1011
  "fontSize": 16,
1012
1012
  },
1013
1013
  undefined,
@@ -1030,7 +1030,7 @@ exports[`rendering renders correctly when there is error 1`] = `
1030
1030
  },
1031
1031
  Array [
1032
1032
  Object {
1033
- "color": "#de350b",
1033
+ "color": "#cb300a",
1034
1034
  "paddingLeft": 4,
1035
1035
  },
1036
1036
  undefined,
@@ -0,0 +1,24 @@
1
+ import React, { memo, useEffect } from 'react';
2
+ import { usePortal } from './usePortal';
3
+ import { usePortalState } from './usePortalState';
4
+ import { PortalType } from './contexts';
5
+
6
+ export interface PortalHostProps {
7
+ name: string;
8
+ }
9
+ const PortalHostComponent = ({ name }: PortalHostProps) => {
10
+ const state = usePortalState(name);
11
+ const { registerHost, deregisterHost } = usePortal(name);
12
+
13
+ useEffect(() => {
14
+ registerHost();
15
+ return () => {
16
+ deregisterHost();
17
+ };
18
+ }, []);
19
+
20
+ return <>{state.map((item: PortalType) => item.node)}</>;
21
+ };
22
+
23
+ export const PortalHost = memo(PortalHostComponent);
24
+ PortalHost.displayName = 'PortalHost';
@@ -0,0 +1,29 @@
1
+ import React, { memo, useReducer } from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import { PortalHost } from './PortalHost';
4
+ import { reducer } from './reducer';
5
+ import { INITIAL_STATE } from './constants';
6
+ import { PortalDispatchContext, PortalStateContext } from './contexts';
7
+
8
+ export interface PortalProviderProps {
9
+ rootHostName?: string;
10
+ children: ReactNode | ReactNode[];
11
+ }
12
+
13
+ const PortalProviderComponent = ({
14
+ rootHostName = 'root',
15
+ children,
16
+ }: PortalProviderProps) => {
17
+ const [state, dispatch] = useReducer(reducer, INITIAL_STATE);
18
+ return (
19
+ <PortalDispatchContext.Provider value={dispatch}>
20
+ <PortalStateContext.Provider value={state}>
21
+ {children}
22
+ <PortalHost name={rootHostName} />
23
+ </PortalStateContext.Provider>
24
+ </PortalDispatchContext.Provider>
25
+ );
26
+ };
27
+
28
+ export const PortalProvider = memo(PortalProviderComponent);
29
+ PortalProvider.displayName = 'PortalProvider';
@@ -0,0 +1,50 @@
1
+ import React, { useContext } from 'react';
2
+ import { waitFor } from '@testing-library/react-native';
3
+ import { PortalHost } from '../PortalHost';
4
+ import { PortalProvider } from '../PortalProvider';
5
+ import Typography from '../../Typography';
6
+ import renderWithTheme from '../../../testHelpers/renderWithTheme';
7
+ import { PortalStateContext } from '../contexts';
8
+ import theme, { ThemeProvider } from '../../../theme';
9
+
10
+ /*
11
+ * This component is used to test the PortalHost hook
12
+ */
13
+ const TestComponent = () => {
14
+ const state = useContext(PortalStateContext);
15
+
16
+ const text = 'host' in state! ? 'registered' : 'unregistered';
17
+ return <Typography.Body>{text}</Typography.Body>;
18
+ };
19
+
20
+ describe('PortalHost', () => {
21
+ it('should register portal when mount', async () => {
22
+ const { getByText } = renderWithTheme(
23
+ <PortalProvider>
24
+ <PortalHost name="host" />
25
+ <TestComponent />
26
+ </PortalProvider>
27
+ );
28
+
29
+ expect(getByText('registered')).toBeDefined();
30
+ });
31
+
32
+ it('should unregister portal when unmount', async () => {
33
+ const { getByText, rerender } = renderWithTheme(
34
+ <PortalProvider>
35
+ <PortalHost name="host" />
36
+ <TestComponent />
37
+ </PortalProvider>
38
+ );
39
+
40
+ rerender(
41
+ <ThemeProvider theme={theme}>
42
+ <PortalProvider>
43
+ <TestComponent />
44
+ </PortalProvider>
45
+ </ThemeProvider>
46
+ );
47
+
48
+ await waitFor(() => expect(getByText('unregistered')).toBeDefined());
49
+ });
50
+ });
@@ -0,0 +1,24 @@
1
+ import React, { useContext } from 'react';
2
+ import { PortalStateContext } from '../contexts';
3
+ import Typography from '../../Typography';
4
+ import renderWithTheme from '../../../testHelpers/renderWithTheme';
5
+ import { PortalProvider } from '../PortalProvider';
6
+
7
+ const TestComponent = () => {
8
+ const state = useContext(PortalStateContext);
9
+
10
+ const text = 'root' in state! ? 'registered' : 'unregistered';
11
+ return <Typography.Body>{text}</Typography.Body>;
12
+ };
13
+
14
+ describe('PortalProvider', () => {
15
+ it('should register root portal when mount', async () => {
16
+ const { getByText } = renderWithTheme(
17
+ <PortalProvider>
18
+ <TestComponent />
19
+ </PortalProvider>
20
+ );
21
+
22
+ expect(getByText('registered')).toBeDefined();
23
+ });
24
+ });
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { waitFor, within } from '@testing-library/react-native';
4
+ import renderWithTheme from '../../../testHelpers/renderWithTheme';
5
+ import { PortalHost } from '../PortalHost';
6
+ import { PortalProvider } from '../PortalProvider';
7
+ import Typography from '../../Typography';
8
+ import Portal from '..';
9
+
10
+ describe('Portal', () => {
11
+ it('should render Typography inside Portal.Host', async () => {
12
+ const { getByTestId } = renderWithTheme(
13
+ <PortalProvider>
14
+ <View testID="portal-wrapper">
15
+ <PortalHost name="host" />
16
+ </View>
17
+ <Portal hostName="host">
18
+ <Typography.Body>portal</Typography.Body>;
19
+ </Portal>
20
+ </PortalProvider>
21
+ );
22
+
23
+ await waitFor(() =>
24
+ expect(
25
+ within(getByTestId('portal-wrapper')).getByText('portal')
26
+ ).toBeDefined()
27
+ );
28
+ });
29
+ });
@@ -0,0 +1,110 @@
1
+ import React from 'react';
2
+ import Typography from '../../Typography';
3
+ import { ACTIONS, INITIAL_STATE } from '../constants';
4
+ import { reducer } from '../reducer';
5
+
6
+ describe('reducers', () => {
7
+ describe('registerHost', () => {
8
+ it('should return correct state', () => {
9
+ const newState = reducer(INITIAL_STATE, {
10
+ type: ACTIONS.REGISTER_HOST,
11
+ hostName: 'host',
12
+ });
13
+ expect(newState).toEqual({
14
+ host: [],
15
+ });
16
+ });
17
+ });
18
+
19
+ describe('deregisterHost', () => {
20
+ it('should return correct state', () => {
21
+ const newState = reducer(
22
+ {
23
+ removedHost: [],
24
+ host: [],
25
+ },
26
+ {
27
+ type: ACTIONS.DEREGISTER_HOST,
28
+ hostName: 'removedHost',
29
+ }
30
+ );
31
+ expect(newState).toEqual({
32
+ host: [],
33
+ });
34
+ });
35
+ });
36
+
37
+ describe('addUpdatePortal', () => {
38
+ it('should return correct state', () => {
39
+ const newState = reducer(
40
+ {
41
+ host: [],
42
+ },
43
+ {
44
+ type: ACTIONS.ADD_UPDATE_PORTAL,
45
+ hostName: 'host',
46
+ portalName: 'portal',
47
+ node: <Typography.Body>Portal</Typography.Body>,
48
+ }
49
+ );
50
+ expect(newState).toEqual({
51
+ host: [
52
+ {
53
+ name: 'portal',
54
+ node: <Typography.Body>Portal</Typography.Body>,
55
+ },
56
+ ],
57
+ });
58
+ });
59
+
60
+ it('should new portal when the portal is existing', () => {
61
+ const newState = reducer(
62
+ {
63
+ host: [
64
+ {
65
+ name: 'portal',
66
+ node: <Typography.Body>Old Portal</Typography.Body>,
67
+ },
68
+ ],
69
+ },
70
+ {
71
+ type: ACTIONS.ADD_UPDATE_PORTAL,
72
+ hostName: 'host',
73
+ portalName: 'portal',
74
+ node: <Typography.Body>New Portal</Typography.Body>,
75
+ }
76
+ );
77
+ expect(newState).toEqual({
78
+ host: [
79
+ {
80
+ name: 'portal',
81
+ node: <Typography.Body>New Portal</Typography.Body>,
82
+ },
83
+ ],
84
+ });
85
+ });
86
+ });
87
+
88
+ describe('removePortal', () => {
89
+ it('should return correct state', () => {
90
+ const newState = reducer(
91
+ {
92
+ host: [
93
+ {
94
+ name: 'portal',
95
+ node: <Typography.Body>Portal</Typography.Body>,
96
+ },
97
+ ],
98
+ },
99
+ {
100
+ type: ACTIONS.REMOVE_PORTAL,
101
+ hostName: 'host',
102
+ portalName: 'portal',
103
+ }
104
+ );
105
+ expect(newState).toEqual({
106
+ host: [],
107
+ });
108
+ });
109
+ });
110
+ });
@@ -0,0 +1,10 @@
1
+ enum ACTIONS {
2
+ REGISTER_HOST,
3
+ DEREGISTER_HOST,
4
+ ADD_UPDATE_PORTAL,
5
+ REMOVE_PORTAL,
6
+ }
7
+
8
+ const INITIAL_STATE = {};
9
+
10
+ export { ACTIONS, INITIAL_STATE };
@@ -0,0 +1,14 @@
1
+ import React, { createContext } from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import { ActionTypes } from './types';
4
+
5
+ export interface PortalType {
6
+ name: string;
7
+ node: ReactNode;
8
+ }
9
+ export const PortalStateContext = createContext<Record<
10
+ string,
11
+ Array<PortalType>
12
+ > | null>(null);
13
+ export const PortalDispatchContext =
14
+ createContext<React.Dispatch<ActionTypes> | null>(null);
@@ -0,0 +1,42 @@
1
+ import { ReactNode, memo, useLayoutEffect, useMemo } from 'react';
2
+ // Fix issue no crypto in react-native
3
+ // https://stackoverflow.com/a/66852908
4
+ import { customAlphabet } from 'nanoid/non-secure';
5
+ import { usePortal } from './usePortal';
6
+ import { PortalProvider } from './PortalProvider';
7
+ import { PortalHost } from './PortalHost';
8
+
9
+ const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz0123456789', 10);
10
+
11
+ export interface PortalProps {
12
+ name?: string;
13
+ hostName?: string;
14
+ children?: ReactNode | ReactNode[];
15
+ }
16
+
17
+ const PortalComponent = ({ name, hostName, children }: PortalProps) => {
18
+ const { addPortal: addUpdatePortal, removePortal } = usePortal(hostName);
19
+
20
+ const nameOrRandom = useMemo(() => name || nanoid(), [name]);
21
+
22
+ useLayoutEffect(() => {
23
+ addUpdatePortal(nameOrRandom, children);
24
+ return () => {
25
+ removePortal(nameOrRandom);
26
+ };
27
+ }, [addUpdatePortal]);
28
+
29
+ useLayoutEffect(() => {
30
+ addUpdatePortal(nameOrRandom, children);
31
+ }, [children]);
32
+
33
+ return null;
34
+ };
35
+
36
+ const Portal = memo(PortalComponent);
37
+ Portal.displayName = 'Portal';
38
+
39
+ export default Object.assign(Portal, {
40
+ Provider: PortalProvider,
41
+ Host: PortalHost,
42
+ });