react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.4

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 (456) hide show
  1. package/Package.swift +87 -0
  2. package/README.md +0 -11
  3. package/android/build.gradle +1 -0
  4. package/android/consumer-rules.pro +3 -0
  5. package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
  6. package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
  7. package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
  8. package/android/src/main/cpp/NativeProxy.cpp +30 -6
  9. package/android/src/main/cpp/NativeProxy.h +7 -1
  10. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
  11. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
  12. package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
  13. package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
  15. package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
  19. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
  20. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
  23. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
  25. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
  26. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
  27. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
  28. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
  29. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
  30. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
  31. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
  32. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
  33. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
  34. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
  35. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
  36. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
  37. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
  38. package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
  39. package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
  40. package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
  41. package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
  42. package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
  43. package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
  44. package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
  45. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
  46. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
  47. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
  48. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
  49. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
  50. package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
  51. package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
  52. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
  53. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
  54. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
  55. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
  56. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
  57. package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
  58. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
  59. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
  60. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
  61. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
  62. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
  63. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
  64. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
  65. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
  66. package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
  67. package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
  68. package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
  69. package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
  70. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
  71. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
  72. package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
  73. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
  74. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
  75. package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
  76. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
  77. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
  78. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
  79. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
  80. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
  81. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
  82. package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
  83. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
  84. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
  85. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
  86. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
  87. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
  88. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
  89. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
  90. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
  91. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
  92. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
  93. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
  94. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
  95. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
  96. package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
  97. package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
  98. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
  99. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
  100. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
  101. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
  102. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
  103. package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
  104. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
  105. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
  106. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
  107. package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
  108. package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
  109. package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
  110. package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
  111. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
  112. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
  113. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
  114. package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
  115. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
  116. package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
  117. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
  118. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
  119. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
  120. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
  121. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
  122. package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
  123. package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
  124. package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
  125. package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
  126. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
  127. package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
  128. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
  129. package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
  130. package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
  131. package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
  132. package/ios/RNSEnums.h +16 -1
  133. package/ios/conversion/RNSConversions.h +7 -108
  134. package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
  135. package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
  136. package/ios/legacy/RNSBarButtonItem.mm +15 -0
  137. package/ios/legacy/RNSConvert.h +6 -0
  138. package/ios/legacy/RNSConvert.mm +17 -0
  139. package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
  140. package/ios/legacy/RNSModalScreen.mm +1 -1
  141. package/ios/legacy/RNSNavigationBar.h +31 -0
  142. package/ios/legacy/RNSNavigationBar.mm +15 -0
  143. package/ios/legacy/RNSScreen.mm +130 -31
  144. package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
  145. package/ios/legacy/RNSScreenStack.mm +202 -15
  146. package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
  147. package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
  148. package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
  149. package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
  150. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
  151. package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
  152. package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
  153. package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
  154. package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
  155. package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
  156. package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
  157. package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
  158. package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
  159. package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
  160. package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
  161. package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
  162. package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
  163. package/ios/split/RNSSplitHostComponentView.h +5 -15
  164. package/ios/split/RNSSplitHostComponentView.mm +55 -6
  165. package/ios/split/RNSSplitHostController.h +25 -6
  166. package/ios/split/RNSSplitHostController.mm +24 -92
  167. package/ios/split/RNSSplitHostProviders.h +67 -0
  168. package/ios/split/RNSSplitScreenComponentView.h +0 -39
  169. package/ios/split/RNSSplitScreenComponentView.mm +27 -10
  170. package/ios/split/RNSSplitScreenController.h +26 -3
  171. package/ios/split/RNSSplitScreenController.mm +13 -30
  172. package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
  173. package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
  174. package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
  175. package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
  176. package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
  177. package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
  178. package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
  179. package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
  180. package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
  181. package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
  182. package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
  183. package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
  184. package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
  185. package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
  186. package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
  187. package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
  188. package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
  189. package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
  190. package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
  191. package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
  192. package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
  193. package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
  194. package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
  195. package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
  196. package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
  197. package/ios/stack/host/RNSStackNavigationBar.h +25 -0
  198. package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
  199. package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
  200. package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
  201. package/ios/stack/host/RNSStackNavigationController.mm +13 -5
  202. package/ios/stack/host/RNSStackOperation.h +0 -2
  203. package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
  204. package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
  205. package/ios/stack/screen/RNSStackScreenController.mm +12 -0
  206. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
  207. package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
  208. package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
  209. package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
  210. package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
  211. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
  212. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
  213. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
  214. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
  215. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
  216. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
  217. package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
  218. package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
  219. package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
  220. package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
  221. package/ios/tabs/host/RNSTabBarController.h +16 -0
  222. package/ios/tabs/host/RNSTabBarController.mm +516 -107
  223. package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
  224. package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
  225. package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
  226. package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
  227. package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
  228. package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
  229. package/ios/utils/RNSDefines.h +15 -7
  230. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
  231. package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  232. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
  233. package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  234. package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
  235. package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
  236. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
  237. package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  238. package/lib/commonjs/components/stack/host/StackHost.js +17 -7
  239. package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
  240. package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
  241. package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
  242. package/lib/commonjs/components/stack/index.js.map +1 -1
  243. package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
  244. package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
  245. package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
  246. package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
  247. package/lib/commonjs/components/tabs/index.js.map +1 -1
  248. package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
  249. package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
  250. package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
  251. package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
  252. package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
  253. package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
  254. package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
  255. package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
  256. package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  257. package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  258. package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  259. package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  260. package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  261. package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
  262. package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  263. package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  264. package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
  265. package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  266. package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
  267. package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
  268. package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
  269. package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
  270. package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
  271. package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
  272. package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
  273. package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
  274. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
  275. package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
  276. package/lib/module/components/stack/host/StackHost.js +18 -8
  277. package/lib/module/components/stack/host/StackHost.js.map +1 -1
  278. package/lib/module/components/stack/host/StackHost.web.js +0 -3
  279. package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
  280. package/lib/module/components/stack/index.js.map +1 -1
  281. package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
  282. package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
  283. package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
  284. package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
  285. package/lib/module/components/tabs/index.js.map +1 -1
  286. package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
  287. package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
  288. package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
  289. package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
  290. package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
  291. package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
  292. package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
  293. package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
  294. package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
  295. package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
  296. package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
  297. package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
  298. package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
  299. package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
  300. package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
  301. package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
  302. package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
  303. package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
  304. package/lib/module/legacy/components/ScreenStackItem.js +31 -11
  305. package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
  306. package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
  307. package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
  308. package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
  309. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
  310. package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
  311. package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
  312. package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
  313. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
  314. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
  315. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
  316. package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
  317. package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
  318. package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
  319. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
  320. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
  321. package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
  322. package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
  323. package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
  324. package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
  325. package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
  326. package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
  327. package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
  328. package/lib/typescript/components/stack/index.d.ts +4 -3
  329. package/lib/typescript/components/stack/index.d.ts.map +1 -1
  330. package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
  331. package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
  332. package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
  333. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
  334. package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
  335. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
  336. package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
  337. package/lib/typescript/components/tabs/index.d.ts +4 -6
  338. package/lib/typescript/components/tabs/index.d.ts.map +1 -1
  339. package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
  340. package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
  341. package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
  342. package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
  343. package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
  344. package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
  345. package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
  346. package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
  347. package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
  348. package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
  349. package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
  350. package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
  351. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
  352. package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
  353. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
  354. package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
  355. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
  356. package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
  357. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
  358. package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
  359. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
  360. package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
  361. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
  362. package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
  363. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
  364. package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
  365. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
  366. package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
  367. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
  368. package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
  369. package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
  370. package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
  371. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
  372. package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
  373. package/lib/typescript/legacy/types.d.ts +30 -0
  374. package/lib/typescript/legacy/types.d.ts.map +1 -1
  375. package/package.json +11 -8
  376. package/react-native.config.js +3 -0
  377. package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
  378. package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
  379. package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
  380. package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
  381. package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
  382. package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
  383. package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
  384. package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
  385. package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
  386. package/src/components/stack/host/StackHost.tsx +12 -3
  387. package/src/components/stack/host/StackHost.types.ts +50 -0
  388. package/src/components/stack/host/StackHost.web.tsx +1 -4
  389. package/src/components/stack/index.ts +14 -1
  390. package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
  391. package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
  392. package/src/components/tabs/host/TabsHost.tsx +7 -0
  393. package/src/components/tabs/host/TabsHost.types.ts +3 -0
  394. package/src/components/tabs/index.ts +9 -0
  395. package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
  396. package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
  397. package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
  398. package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
  399. package/src/components/tabs/screen/TabsScreen.tsx +7 -0
  400. package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
  401. package/src/components/tabs/screen/index.ts +1 -0
  402. package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
  403. package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
  404. package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
  405. package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
  406. package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
  407. package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
  408. package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
  409. package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
  410. package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
  411. package/src/legacy/components/ScreenStackItem.tsx +59 -12
  412. package/src/legacy/types.ts +31 -0
  413. package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
  414. package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
  415. package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
  416. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
  417. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
  418. package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
  419. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
  420. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
  421. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
  422. package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
  423. package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
  424. package/ios/conversion/RNSConversions-Stack.h +0 -32
  425. package/ios/conversion/RNSConversions-Stack.mm +0 -41
  426. package/ios/conversion/always_false.h +0 -31
  427. package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
  428. package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
  429. package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
  430. package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
  431. package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
  432. package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
  433. package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
  434. package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
  435. package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
  436. package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
  437. package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
  438. package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
  439. package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
  440. package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
  441. package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
  442. package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
  443. package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
  444. package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
  445. package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
  446. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
  447. package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
  448. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
  449. package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
  450. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
  451. package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
  452. package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
  453. package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
  454. package/src/components/tabs/host/TabsHost.d.ts +0 -12
  455. package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
  456. /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
@@ -1,19 +1,15 @@
1
1
  import React, {
2
2
  type ComponentRef,
3
- type Ref,
4
- forwardRef,
5
3
  useCallback,
6
4
  useEffect,
7
5
  useImperativeHandle,
8
6
  useMemo,
9
7
  useRef,
10
8
  } from 'react';
11
- import type {
12
- StackHeaderConfigProps,
13
- StackHeaderConfigRef,
14
- } from './StackHeaderConfig.types';
9
+ import type { StackHeaderConfigProps } from './StackHeaderConfig.types';
15
10
  import StackHeaderConfigIOSNativeComponent, {
16
11
  Commands as StackHeaderConfigIOSNativeCommands,
12
+ HeaderAppearance,
17
13
  MenuItemPressEvent,
18
14
  MenuSelectionChangeEvent,
19
15
  NativeMenuElementOptionsIOS,
@@ -22,8 +18,9 @@ import type { StackHeaderItemPlacement } from './ios/StackHeaderItem.ios.types';
22
18
  import { StackHeaderItemSpacerPlacement } from './ios/StackHeaderItemSpacer.ios.types';
23
19
  import StackHeaderItemSpacer from './ios/StackHeaderItemSpacer.ios';
24
20
  import StackHeaderItem from './ios/StackHeaderItem.ios';
25
- import { NativeSyntheticEvent, StyleSheet } from 'react-native';
21
+ import { NativeSyntheticEvent, StyleSheet, processColor } from 'react-native';
26
22
  import type {
23
+ StackHeaderAppearanceIOS,
27
24
  StackHeaderInlineCustomItemIOS,
28
25
  StackHeaderInlineItemIOS,
29
26
  StackHeaderMenuItemOptionsIOS,
@@ -37,13 +34,10 @@ import { resolveIconAssetSources, resolveMenuIcons } from './ios/iconUtils.ios';
37
34
  /**
38
35
  * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
39
36
  */
40
- function StackHeaderConfig(
41
- props: StackHeaderConfigProps,
42
- forwardedRef: Ref<StackHeaderConfigRef>,
43
- ) {
37
+ function StackHeaderConfig(props: StackHeaderConfigProps) {
44
38
  // android props are safely dropped
45
39
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
46
- const { ios, android, ...restProps } = props;
40
+ const { ref: forwardedRef, ios, android, ...restProps } = props;
47
41
 
48
42
  const {
49
43
  leadingItems,
@@ -55,6 +49,14 @@ function StackHeaderConfig(
55
49
  largeTitle,
56
50
  largeSubtitle,
57
51
  largeTitleEnabled,
52
+ prompt,
53
+ minimizationBehavior,
54
+ restorationBehavior,
55
+ backButtonTitle,
56
+ backButtonDisplayMode,
57
+ backButtonMenuEnabled,
58
+ standardAppearance,
59
+ scrollEdgeAppearance,
58
60
  } = ios ?? {};
59
61
 
60
62
  const nativeRef =
@@ -102,10 +104,10 @@ function StackHeaderConfig(
102
104
  [
103
105
  ...(leadingItems ?? [])
104
106
  .filter(it => it && it.type === 'item')
105
- .map(it => it.menu),
107
+ .flatMap(it => [it.menu, it.menuRepresentation]),
106
108
  ...(trailingItems ?? [])
107
109
  .filter(it => it && it.type === 'item')
108
- .map(it => it.menu),
110
+ .flatMap(it => [it.menu, it.menuRepresentation]),
109
111
  titleMenu,
110
112
  ].filter(it => !!it),
111
113
  [leadingItems, trailingItems, titleMenu],
@@ -151,9 +153,17 @@ function StackHeaderConfig(
151
153
  ref={nativeRef}
152
154
  {...restProps}
153
155
  collapsable={false}
156
+ backButtonTitle={backButtonTitle}
157
+ backButtonDisplayMode={backButtonDisplayMode}
158
+ backButtonMenuEnabled={backButtonMenuEnabled}
154
159
  largeTitle={largeTitle}
155
160
  largeSubtitle={largeSubtitle}
156
161
  largeTitleEnabled={!!largeTitleEnabled}
162
+ prompt={prompt}
163
+ minimizationBehavior={minimizationBehavior}
164
+ restorationBehavior={restorationBehavior}
165
+ standardAppearance={mapAppearanceToNativeProp(standardAppearance)}
166
+ scrollEdgeAppearance={mapAppearanceToNativeProp(scrollEdgeAppearance)}
157
167
  titleMenu={resolvedTitleMenu}
158
168
  style={styles.config}
159
169
  onMenuItemPress={handleMenuItemPress}
@@ -168,6 +178,36 @@ function StackHeaderConfig(
168
178
  );
169
179
  }
170
180
 
181
+ function mapAppearanceToNativeProp(
182
+ appearance?: StackHeaderAppearanceIOS,
183
+ ): HeaderAppearance | undefined {
184
+ if (!appearance) return undefined;
185
+
186
+ const {
187
+ titleFontColor,
188
+ titleFontWeight,
189
+ largeTitleFontColor,
190
+ largeTitleFontWeight,
191
+ subtitleFontColor,
192
+ subtitleFontWeight,
193
+ } = appearance;
194
+
195
+ return {
196
+ ...appearance,
197
+ titleFontColor: processColor(titleFontColor),
198
+ titleFontWeight:
199
+ titleFontWeight !== undefined ? String(titleFontWeight) : undefined,
200
+ largeTitleFontColor: processColor(largeTitleFontColor),
201
+ largeTitleFontWeight:
202
+ largeTitleFontWeight !== undefined
203
+ ? String(largeTitleFontWeight)
204
+ : undefined,
205
+ subtitleFontColor: processColor(subtitleFontColor),
206
+ subtitleFontWeight:
207
+ subtitleFontWeight !== undefined ? String(subtitleFontWeight) : undefined,
208
+ };
209
+ }
210
+
171
211
  function makeItemViewFromItem(
172
212
  item:
173
213
  | StackHeaderInlineItemIOS
@@ -254,6 +294,4 @@ const styles = StyleSheet.create({
254
294
  },
255
295
  });
256
296
 
257
- export default forwardRef<StackHeaderConfigRef, StackHeaderConfigProps>(
258
- StackHeaderConfig,
259
- );
297
+ export default StackHeaderConfig;
@@ -1,4 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
+ import type { TextStyle } from 'react-native';
2
3
  import type { PlatformIconIOS } from '../../shared/types';
3
4
  import type { StackHeaderMenuIOS } from './ios/StackHeaderMenu.ios.types';
4
5
 
@@ -92,8 +93,110 @@ export interface SupportsMenuIOS {
92
93
  * @platform iOS
93
94
  */
94
95
  menu?: StackHeaderMenuIOS | undefined;
96
+ /**
97
+ * @summary Menu definition substituting the item when it is displayed in a menu.
98
+ *
99
+ * @description
100
+ * When the system moves the item into a menu (e.g. the navigation bar
101
+ * overflow menu), this menu is displayed in its place. Useful for custom items
102
+ * ({@link StackHeaderInlineCustomItemIOS.render | render}), which iOS doesn't display in the overflow menu otherwise.
103
+ * The `id`s used in the menu are expected to be unique across every `menu` and `menuRepresentation`.
104
+ *
105
+ * @platform iOS
106
+ *
107
+ * @supported iOS 16 and higher
108
+ */
109
+ menuRepresentation?: StackHeaderMenuIOS | undefined;
110
+ }
111
+
112
+ export interface SupportsSharedBackgroundIOS {
113
+ /**
114
+ * @summary Whether the liquid glass background for this item should be hidden.
115
+ *
116
+ * @description
117
+ * On iOS 26, adjacent bar button items are grouped inside a shared liquid
118
+ * glass background. Setting this to `true` removes the shared background
119
+ * from this item.
120
+ *
121
+ * @default false
122
+ *
123
+ * @platform iOS
124
+ *
125
+ * @supported iOS 26 and higher
126
+ */
127
+ hidesSharedBackground?: boolean | undefined;
128
+ }
129
+
130
+ /**
131
+ * @summary Priority used when the header has to decide which items to keep.
132
+ *
133
+ * @description
134
+ * Each value maps to the matching `UIBarButtonItemVisibilityPriority` constant.
135
+ *
136
+ * @platform iOS
137
+ *
138
+ * @supported iOS 27 and higher
139
+ */
140
+ export type StackHeaderItemVisibilityPriorityIOS = 'low' | 'standard' | 'high';
141
+
142
+ export interface SupportsVisibilityPriorityIOS {
143
+ /**
144
+ * @summary Decides which items give way first when the header runs out of room.
145
+ *
146
+ * @description
147
+ * When the items do not fit, the header moves the ones with the lowest
148
+ * priority into the overflow ("...") menu, and keeps the higher ones.
149
+ *
150
+ * Accepts `'low'`, `'standard'` (the default) and `'high'`, which map to the
151
+ * `UIBarButtonItemVisibilityPriority` constants. Only the relative order of
152
+ * the items matters.
153
+ *
154
+ * When the item is placed in an implicit group of items, the group
155
+ * inherits this priority.
156
+ *
157
+ * A custom item ({@link StackHeaderInlineCustomItemIOS.render | render})
158
+ * moved into the overflow menu has no content to show there.
159
+ *
160
+ * @default 'standard'
161
+ *
162
+ * @platform iOS
163
+ *
164
+ * @supported iOS 27 and higher
165
+ */
166
+ visibilityPriority?: StackHeaderItemVisibilityPriorityIOS | undefined;
95
167
  }
96
168
 
169
+ export interface SupportsIdentifierIOS {
170
+ /**
171
+ * @summary Stable identifier used to match the item across different screens
172
+ * for more intelligent animation on transition.
173
+ *
174
+ * @description
175
+ * When navigating between screens, iOS tries to match similarly looking items (i.e. same sfSymbol)
176
+ * and animate between them. If the heuristic fails, a simpler crossfade is applied.
177
+ * In a situation where visually different items should be logically considered the same across screens,
178
+ * you may use this prop to tell this fact to the system. The identifier shouldn't be updated at runtime;
179
+ * doing so will result in item rebuild and visual flash.
180
+ *
181
+ * @platform iOS
182
+ *
183
+ * @supported iOS 26 and higher
184
+ */
185
+ identifier?: string | undefined;
186
+ }
187
+
188
+ /**
189
+ * @summary Visual variant (style) of a header item.
190
+ *
191
+ * @description
192
+ * - `plain`: the default look of a bar button item.
193
+ * - `prominent`: the item is emphasized with a tinted background.
194
+ * On iOS below 26 it falls back to bold text (the `done` style).
195
+ *
196
+ * @platform iOS
197
+ */
198
+ export type StackHeaderItemVariantIOS = 'plain' | 'prominent';
199
+
97
200
  /**
98
201
  * @summary Native header item with text label.
99
202
  *
@@ -101,13 +204,37 @@ export interface SupportsMenuIOS {
101
204
  */
102
205
  export interface StackHeaderInlineItemIOS
103
206
  extends StackHeaderBaseItemIOS,
104
- SupportsMenuIOS {
207
+ SupportsMenuIOS,
208
+ SupportsIdentifierIOS,
209
+ SupportsSharedBackgroundIOS,
210
+ SupportsVisibilityPriorityIOS {
105
211
  /**
106
212
  * @summary Marks this object as a header item definition.
107
213
  *
108
214
  * @platform iOS
109
215
  */
110
216
  type: 'item';
217
+ /**
218
+ * @summary Visual variant (style) of the item.
219
+ *
220
+ * @default 'plain'
221
+ *
222
+ * @platform iOS
223
+ */
224
+ variant?: StackHeaderItemVariantIOS | undefined;
225
+ /**
226
+ * @summary Whether the item is disabled.
227
+ *
228
+ * @description
229
+ * A disabled item is grayed out and does not respond to user interaction:
230
+ * neither {@link StackHeaderInlineItemIOS.onPress | onPress} nor
231
+ * {@link SupportsMenuIOS.menu | menu} is triggered.
232
+ *
233
+ * @default false
234
+ *
235
+ * @platform iOS
236
+ */
237
+ disabled?: boolean | undefined;
111
238
  /**
112
239
  * @summary Callback invoked when the header item is pressed.
113
240
  *
@@ -126,7 +253,11 @@ export interface StackHeaderInlineItemIOS
126
253
  *
127
254
  * @platform iOS
128
255
  */
129
- export interface StackHeaderInlineCustomItemIOS extends SupportsMenuIOS {
256
+ export interface StackHeaderInlineCustomItemIOS
257
+ extends SupportsMenuIOS,
258
+ SupportsIdentifierIOS,
259
+ SupportsSharedBackgroundIOS,
260
+ SupportsVisibilityPriorityIOS {
130
261
  /**
131
262
  * @summary A unique identifier within the screen header.
132
263
  *
@@ -250,7 +381,203 @@ export interface StackHeaderTitleCustomItemIOS {
250
381
  render: () => ReactElement;
251
382
  }
252
383
 
384
+ /**
385
+ * @summary Controls how the back button title is displayed.
386
+ *
387
+ * @description
388
+ * - `default`: the system chooses the title depending on available space.
389
+ * On iOS < 26 options include: custom title (defaults to previous screen title),
390
+ * generic "Back", no title; on iOS >= 26 it's either custom title (if set) or no title.
391
+ * - `generic`: on iOS < 26, the system uses a generic "Back" title or no title;
392
+ * on iOS >= 26 it's the same as `minimal`.
393
+ * - `minimal`: no title is displayed next to the back button chevron.
394
+ *
395
+ * @platform iOS
396
+ */
397
+ export type StackHeaderBackButtonDisplayModeIOS =
398
+ | 'default'
399
+ | 'generic'
400
+ | 'minimal';
401
+
402
+ /**
403
+ * @summary Controls when the navigation bar minimizes in response to scrolling.
404
+ *
405
+ * @description
406
+ * - `automatic`: the system determines the minimization behavior.
407
+ * - `never`: the navigation bar does not minimize.
408
+ * - `onScrollDown`: the navigation bar minimizes when the user scrolls down.
409
+ * - `onScrollUp`: the navigation bar minimizes when the user scrolls up.
410
+ *
411
+ * @platform iOS
412
+ */
413
+ export type StackHeaderMinimizationBehaviorIOS =
414
+ | 'automatic'
415
+ | 'never'
416
+ | 'onScrollDown'
417
+ | 'onScrollUp';
418
+
419
+ /**
420
+ * @summary Controls when a minimized navigation bar restores.
421
+ *
422
+ * @description
423
+ * - `automatic`: the system determines the restoration behavior. By default
424
+ * the navigation bar restores when the user reverses scroll direction.
425
+ * - `atScrollEdge`: the navigation bar restores only when the scroll view's
426
+ * content reaches the scroll edge. Honored only together with
427
+ * `minimizationBehavior: 'onScrollDown'`.
428
+ *
429
+ * @platform iOS
430
+ */
431
+ export type StackHeaderRestorationBehaviorIOS = 'automatic' | 'atScrollEdge';
432
+
433
+ export interface StackHeaderAppearanceIOS {
434
+ /**
435
+ * @summary Specifies the font family used for the title of the header.
436
+ *
437
+ * @platform ios
438
+ */
439
+ titleFontFamily?: TextStyle['fontFamily'] | undefined;
440
+ /**
441
+ * @summary Specifies the font size used for the title of the header.
442
+ *
443
+ * @platform ios
444
+ */
445
+ titleFontSize?: TextStyle['fontSize'] | undefined;
446
+ /**
447
+ * @summary Specifies the font weight used for the title of the header.
448
+ *
449
+ * @platform ios
450
+ */
451
+ titleFontWeight?: TextStyle['fontWeight'] | undefined;
452
+ /**
453
+ * @summary Specifies the font style used for the title of the header.
454
+ *
455
+ * @platform ios
456
+ */
457
+ titleFontStyle?: TextStyle['fontStyle'] | undefined;
458
+ /**
459
+ * @summary Specifies the font color used for the title of the header.
460
+ *
461
+ * @platform ios
462
+ */
463
+ titleFontColor?: TextStyle['color'] | undefined;
464
+ /**
465
+ * @summary Specifies the font family used for the large title of the header.
466
+ *
467
+ * @platform ios
468
+ */
469
+ largeTitleFontFamily?: TextStyle['fontFamily'] | undefined;
470
+ /**
471
+ * @summary Specifies the font size used for the large title of the header.
472
+ *
473
+ * @platform ios
474
+ */
475
+ largeTitleFontSize?: TextStyle['fontSize'] | undefined;
476
+ /**
477
+ * @summary Specifies the font weight used for the large title of the header.
478
+ *
479
+ * @platform ios
480
+ */
481
+ largeTitleFontWeight?: TextStyle['fontWeight'] | undefined;
482
+ /**
483
+ * @summary Specifies the font style used for the large title of the header.
484
+ *
485
+ * @platform ios
486
+ */
487
+ largeTitleFontStyle?: TextStyle['fontStyle'] | undefined;
488
+ /**
489
+ * @summary Specifies the font color used for the large title of the header.
490
+ *
491
+ * @platform ios
492
+ */
493
+ largeTitleFontColor?: TextStyle['color'] | undefined;
494
+ /**
495
+ * @summary Specifies the font family used for the subtitle of the header.
496
+ *
497
+ * @description Applies to both the regular and the large subtitle.
498
+ *
499
+ * @platform ios
500
+ *
501
+ * @supported iOS 26 and higher
502
+ */
503
+ subtitleFontFamily?: TextStyle['fontFamily'] | undefined;
504
+ /**
505
+ * @summary Specifies the font size used for the subtitle of the header.
506
+ *
507
+ * @description Applies to both the regular and the large subtitle.
508
+ *
509
+ * @platform ios
510
+ *
511
+ * @supported iOS 26 and higher
512
+ */
513
+ subtitleFontSize?: TextStyle['fontSize'] | undefined;
514
+ /**
515
+ * @summary Specifies the font weight used for the subtitle of the header.
516
+ *
517
+ * @description Applies to both the regular and the large subtitle.
518
+ *
519
+ * @platform ios
520
+ *
521
+ * @supported iOS 26 and higher
522
+ */
523
+ subtitleFontWeight?: TextStyle['fontWeight'] | undefined;
524
+ /**
525
+ * @summary Specifies the font style used for the subtitle of the header.
526
+ *
527
+ * @description Applies to both the regular and the large subtitle.
528
+ *
529
+ * @platform ios
530
+ *
531
+ * @supported iOS 26 and higher
532
+ */
533
+ subtitleFontStyle?: TextStyle['fontStyle'] | undefined;
534
+ /**
535
+ * @summary Specifies the font color used for the subtitle of the header.
536
+ *
537
+ * @description Applies to both the regular and the large subtitle.
538
+ *
539
+ * @platform ios
540
+ *
541
+ * @supported iOS 26 and higher
542
+ */
543
+ subtitleFontColor?: TextStyle['color'] | undefined;
544
+ }
545
+
253
546
  export interface StackHeaderConfigPropsIOS {
547
+ /**
548
+ * @summary Title displayed next to the back button on this screen.
549
+ *
550
+ * @description
551
+ * Configured on the screen whose back button it applies to (the screen that
552
+ * is pushed on top). When unset, the system derives the back title from the
553
+ * previous screen's `title`.
554
+ *
555
+ * @platform iOS
556
+ */
557
+ backButtonTitle?: string | undefined;
558
+ /**
559
+ * @summary Controls how the back button title is displayed.
560
+ *
561
+ * @default 'default'
562
+ *
563
+ * @platform iOS
564
+ */
565
+ backButtonDisplayMode?: StackHeaderBackButtonDisplayModeIOS | undefined;
566
+ /**
567
+ * @summary Whether the back button shows the navigation history menu.
568
+ *
569
+ * @description
570
+ * Configured on the screen whose back button it applies to (the screen that
571
+ * is pushed on top). When `false`, the navigation history menu is not shown
572
+ * on either of the gestures that normally open it: long-pressing the back
573
+ * button and secondary-clicking it (trackpad / mouse right click); tapping
574
+ * it still pops the screen.
575
+ *
576
+ * @default true
577
+ *
578
+ * @platform iOS
579
+ */
580
+ backButtonMenuEnabled?: boolean | undefined;
254
581
  /**
255
582
  * @summary Custom item to display as a subtitle.
256
583
  *
@@ -351,6 +678,61 @@ export interface StackHeaderConfigPropsIOS {
351
678
  * @supported iOS 26 and higher
352
679
  */
353
680
  largeSubtitleItem?: StackHeaderTitleCustomItemIOS | undefined;
681
+ /**
682
+ * @summary A single line of text displayed at the top of the navigation bar,
683
+ * above the title.
684
+ *
685
+ * @description
686
+ * Setting this prop increases the height of the navigation bar.
687
+ *
688
+ * @platform iOS
689
+ */
690
+ prompt?: string | undefined;
691
+ /**
692
+ * @summary Controls when the navigation bar minimizes in response to scrolling.
693
+ *
694
+ * @description
695
+ * When the navigation bar minimizes, an integrated top tab bar minimizes as well.
696
+ *
697
+ * @default 'automatic'
698
+ *
699
+ * @platform iOS
700
+ *
701
+ * @supported iOS 27 and higher
702
+ */
703
+ minimizationBehavior?: StackHeaderMinimizationBehaviorIOS | undefined;
704
+ /**
705
+ * @summary Controls when a minimized navigation bar restores.
706
+ *
707
+ * @description
708
+ * Currently honored only together with `minimizationBehavior: 'onScrollDown'`.
709
+ * With other minimization behaviors, the system falls back to `automatic`.
710
+ *
711
+ * @default 'automatic'
712
+ *
713
+ * @platform iOS
714
+ *
715
+ * @supported iOS 27 and higher
716
+ */
717
+ restorationBehavior?: StackHeaderRestorationBehaviorIOS | undefined;
718
+ /**
719
+ * @summary Appearance of the header when the edge of scrollable content
720
+ * is not aligned with the edge of the header.
721
+ *
722
+ * @platform ios
723
+ */
724
+ standardAppearance?: StackHeaderAppearanceIOS | undefined;
725
+ /**
726
+ * @summary Appearance of the header when the edge of scrollable content
727
+ * is aligned with the edge of the header.
728
+ *
729
+ * @description If unset, derives the configuration from `standardAppearance`,
730
+ * otherwise becomes a standalone definition. In both cases it keeps transparent
731
+ * background by default (iOS <18).
732
+ *
733
+ * @platform ios
734
+ */
735
+ scrollEdgeAppearance?: StackHeaderAppearanceIOS | undefined;
354
736
  }
355
737
 
356
738
  export interface StackHeaderConfigCommandsIOS {
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StackHeaderConfigProps } from './StackHeaderConfig.types';
4
+
5
+ /**
6
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
7
+ */
8
+ function StackHeaderConfig(_props: StackHeaderConfigProps) {
9
+ return <View />;
10
+ }
11
+
12
+ export default StackHeaderConfig;
@@ -1,3 +1,4 @@
1
+ import type { Ref } from 'react';
1
2
  import type { StackHeaderConfigCommandsAndroid } from './StackHeaderConfig.android.types';
2
3
  import { StackHeaderConfigPropsAndroid } from './StackHeaderConfig.android.types';
3
4
  import type { StackHeaderConfigCommandsIOS } from './StackHeaderConfig.ios.types';
@@ -11,9 +12,9 @@ export interface StackHeaderConfigPropsBase {
11
12
  */
12
13
  title?: string | undefined;
13
14
  /**
14
- * @summary Subtitle displayed in the header. Currently unsupported on Android.
15
+ * @summary Subtitle displayed in the header.
15
16
  *
16
- * @platform ios
17
+ * @platform android, ios
17
18
  */
18
19
  subtitle?: string | undefined;
19
20
  /**
@@ -58,6 +59,7 @@ export interface StackHeaderConfigPropsBase {
58
59
  export interface StackHeaderConfigProps extends StackHeaderConfigPropsBase {
59
60
  android?: StackHeaderConfigPropsAndroid | undefined;
60
61
  ios?: StackHeaderConfigPropsIOS | undefined;
62
+ ref?: Ref<StackHeaderConfigRef> | undefined;
61
63
  }
62
64
 
63
65
  export interface StackHeaderConfigRef {
@@ -6,7 +6,7 @@ import { NativeSyntheticEvent, StyleSheet } from 'react-native';
6
6
  import { resolveIconAssetSources, resolveMenuIcons } from './iconUtils.ios';
7
7
 
8
8
  export default function StackHeaderItem(props: StackHeaderItemProps) {
9
- const { render, onPress, icon, menu, ...rest } = props;
9
+ const { render, onPress, icon, menu, menuRepresentation, ...rest } = props;
10
10
 
11
11
  // `rest.menu` includes some JS callback within nested menu specification
12
12
  // codegen strips JS functions and replaces them with NULLT and keys of such type
@@ -24,12 +24,20 @@ export default function StackHeaderItem(props: StackHeaderItemProps) {
24
24
  () => (menu != null ? resolveMenuIcons(menu) : undefined),
25
25
  [menu],
26
26
  );
27
+ const resolvedMenuRepresentation = useMemo(
28
+ () =>
29
+ menuRepresentation != null
30
+ ? resolveMenuIcons(menuRepresentation)
31
+ : undefined,
32
+ [menuRepresentation],
33
+ );
27
34
 
28
35
  return (
29
36
  <StackHeaderItemIOSNativeComponent
30
37
  {...rest}
31
38
  icon={resolvedIcon}
32
39
  menu={resolvedMenu}
40
+ menuRepresentation={resolvedMenuRepresentation}
33
41
  // We need to tell iOS that we want the handler to be attached only when we actually require it
34
42
  // because doing so makes the menu appear on long press instead of tap
35
43
  respondsToOnPress={!!onPress}
@@ -1,6 +1,7 @@
1
1
  import type { ReactElement } from 'react';
2
2
  import type { PlatformIconIOS } from '../../../shared/types';
3
3
  import type { StackHeaderMenuIOS } from './StackHeaderMenu.ios.types';
4
+ import type { StackHeaderItemVisibilityPriorityIOS } from '../StackHeaderConfig.ios.types';
4
5
 
5
6
  export type StackHeaderItemPlacement =
6
7
  | 'leading'
@@ -12,9 +13,15 @@ export type StackHeaderItemPlacement =
12
13
  export type StackHeaderItemProps = {
13
14
  placement: StackHeaderItemPlacement;
14
15
  itemId?: string | undefined;
16
+ identifier?: string | undefined;
17
+ hidesSharedBackground?: boolean | undefined;
18
+ visibilityPriority?: StackHeaderItemVisibilityPriorityIOS | undefined;
15
19
  title?: string | undefined;
16
20
  icon?: PlatformIconIOS | undefined;
17
21
  render?: (() => ReactElement) | undefined;
18
22
  menu?: StackHeaderMenuIOS | undefined;
23
+ menuRepresentation?: StackHeaderMenuIOS | undefined;
24
+ variant?: 'plain' | 'prominent' | undefined;
25
+ disabled?: boolean | undefined;
19
26
  onPress?: (() => void) | undefined;
20
27
  };
@@ -1,14 +1,23 @@
1
1
  import React from 'react';
2
- import { StyleSheet } from 'react-native';
2
+ import { Platform, StyleSheet } from 'react-native';
3
3
  import StackHostNativeComponent from '../../../fabric/stack/StackHostNativeComponent';
4
4
  import type { StackHostProps } from './StackHost.types';
5
5
 
6
6
  /**
7
7
  * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
8
8
  */
9
- function StackHost({ children, ref }: StackHostProps) {
9
+ function StackHost(props: StackHostProps) {
10
+ const { children, ref, direction, ...restProps } = props;
11
+
12
+ // RN's `direction` style sets the native View's layoutDirection, which the
13
+ // stack's native subtree inherits. iOS needs a trait override instead.
14
+ const directionStyle = Platform.OS === 'android' ? { direction } : undefined;
15
+
10
16
  return (
11
- <StackHostNativeComponent ref={ref} style={styles.container}>
17
+ <StackHostNativeComponent
18
+ ref={ref}
19
+ style={[styles.container, directionStyle]}
20
+ {...restProps}>
12
21
  {children}
13
22
  </StackHostNativeComponent>
14
23
  );