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.
- package/Package.swift +87 -0
- package/README.md +0 -11
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +16 -1
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +130 -31
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +15 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +17 -7
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +18 -8
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
- package/src/components/stack/host/StackHost.tsx +12 -3
- package/src/components/stack/host/StackHost.types.ts +50 -0
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +14 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -1,11 +1,61 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { HostInstance, ViewProps } from 'react-native';
|
|
3
3
|
import { type NativeProps } from '../../../fabric/stack/StackHostNativeComponent';
|
|
4
|
+
import type { ColorScheme, Direction } from '../../shared/types';
|
|
5
|
+
|
|
6
|
+
export type StackHostColorScheme = ColorScheme | 'inherit';
|
|
7
|
+
|
|
8
|
+
export type StackHostDirection = Direction | 'inherit';
|
|
4
9
|
|
|
5
10
|
export type StackHostProps = {
|
|
11
|
+
// General
|
|
6
12
|
children: NonNullable<ViewProps['children']>;
|
|
7
13
|
// TODO: Work on these types
|
|
8
14
|
ref?:
|
|
9
15
|
| React.RefObject<(React.Component<NativeProps> & HostInstance) | null>
|
|
10
16
|
| undefined;
|
|
17
|
+
/**
|
|
18
|
+
* @summary Specifies the layout direction of the native container, its views
|
|
19
|
+
* and child containers.
|
|
20
|
+
*
|
|
21
|
+
* The following values are currently supported:
|
|
22
|
+
* - `inherit` - uses parent's layout direction,
|
|
23
|
+
* - `ltr` - forces left-to-right layout direction,
|
|
24
|
+
* - `rtl` - forces right-to-left layout direction.
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* Layout direction isn't currently supported on iOS.
|
|
28
|
+
*
|
|
29
|
+
* On Android, this property relies on `react-native`'s `style.direction`
|
|
30
|
+
* (which sets the native Android `layoutDirection` View property). It is
|
|
31
|
+
* propagated via the view hierarchy, so `inherit` falls back to the direction
|
|
32
|
+
* set on one of the parent views.
|
|
33
|
+
*
|
|
34
|
+
* @default inherit
|
|
35
|
+
*
|
|
36
|
+
* @platform android
|
|
37
|
+
*/
|
|
38
|
+
direction?: StackHostDirection | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* @summary Specifies the color scheme used by the container and any child
|
|
41
|
+
* containers.
|
|
42
|
+
*
|
|
43
|
+
* The following values are currently supported:
|
|
44
|
+
* - `inherit` - the interface style from parent,
|
|
45
|
+
* - `light` - the light interface style,
|
|
46
|
+
* - `dark` - the dark interface style.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* Color scheme isn't currently supported on iOS.
|
|
50
|
+
*
|
|
51
|
+
* On Android, changing the effective color scheme rebuilds the header.
|
|
52
|
+
* Toolbar menu state survives the rebuild: checkbox/radio selections and
|
|
53
|
+
* changes applied via the `updateToolbarMenuElements` view command are
|
|
54
|
+
* reapplied to the new toolbar.
|
|
55
|
+
*
|
|
56
|
+
* @default inherit
|
|
57
|
+
*
|
|
58
|
+
* @platform android
|
|
59
|
+
*/
|
|
60
|
+
colorScheme?: StackHostColorScheme | undefined;
|
|
11
61
|
};
|
|
@@ -2,7 +2,11 @@ import { StackHost } from './host';
|
|
|
2
2
|
import { StackScreen } from './screen';
|
|
3
3
|
import { StackHeaderConfig } from './header';
|
|
4
4
|
|
|
5
|
-
export type {
|
|
5
|
+
export type {
|
|
6
|
+
StackHostProps,
|
|
7
|
+
StackHostColorScheme,
|
|
8
|
+
StackHostDirection,
|
|
9
|
+
} from './host';
|
|
6
10
|
|
|
7
11
|
export type {
|
|
8
12
|
OnDismissEventPayload,
|
|
@@ -19,6 +23,9 @@ export type {
|
|
|
19
23
|
StackHeaderConfigRef,
|
|
20
24
|
// Android
|
|
21
25
|
StackHeaderTypeAndroid,
|
|
26
|
+
StackHeaderTitleHorizontalGravityAndroid,
|
|
27
|
+
StackHeaderTitleVerticalGravityAndroid,
|
|
28
|
+
StackHeaderCollapsedTitleGravityModeAndroid,
|
|
22
29
|
StackHeaderBackgroundSubviewCollapseModeAndroid,
|
|
23
30
|
StackHeaderToolbarSubviewAndroid,
|
|
24
31
|
StackHeaderBackgroundSubviewAndroid,
|
|
@@ -35,7 +42,13 @@ export type {
|
|
|
35
42
|
StackHeaderToolbarMenuItemShowAsActionAndroid,
|
|
36
43
|
StackHeaderToolbarMenuItemTypeAndroid,
|
|
37
44
|
// iOS
|
|
45
|
+
StackHeaderBackButtonDisplayModeIOS,
|
|
46
|
+
StackHeaderMinimizationBehaviorIOS,
|
|
47
|
+
StackHeaderRestorationBehaviorIOS,
|
|
48
|
+
StackHeaderItemVisibilityPriorityIOS,
|
|
38
49
|
StackHeaderConfigPropsIOS,
|
|
50
|
+
StackHeaderAppearanceIOS,
|
|
51
|
+
StackHeaderItemVariantIOS,
|
|
39
52
|
StackHeaderInlineItemIOS,
|
|
40
53
|
StackHeaderInlineCustomItemIOS,
|
|
41
54
|
StackHeaderTitleCustomItemIOS,
|
|
@@ -48,10 +48,13 @@ function TabsHost(props: TabsHostProps) {
|
|
|
48
48
|
{...filteredBaseProps}
|
|
49
49
|
// iOS-specific
|
|
50
50
|
layoutDirection={direction}
|
|
51
|
+
tabBarHiddenAnimationEnabled={ios?.tabBarHiddenAnimationEnabled}
|
|
51
52
|
tabBarControllerMode={ios?.tabBarControllerMode}
|
|
53
|
+
tabBarSidebarPreferredPlacement={ios?.tabBarSidebarPreferredPlacement}
|
|
52
54
|
tabBarMinimizeBehavior={ios?.tabBarMinimizeBehavior}
|
|
53
55
|
tabBarTintColor={ios?.tabBarTintColor}
|
|
54
56
|
bottomAccessoryHidden={ios?.bottomAccessoryHidden}
|
|
57
|
+
prominentScreenKey={ios?.prominentScreenKey}
|
|
55
58
|
onMoreTabSelected={ios?.onMoreTabSelected}>
|
|
56
59
|
{children}
|
|
57
60
|
{ios?.bottomAccessory && isIOS26OrHigher && (
|
|
@@ -33,7 +33,28 @@ export type TabBarMinimizeBehavior =
|
|
|
33
33
|
|
|
34
34
|
export type TabBarControllerMode = 'automatic' | 'tabBar' | 'tabSidebar';
|
|
35
35
|
|
|
36
|
+
export type TabBarSidebarPreferredPlacement =
|
|
37
|
+
| 'automatic'
|
|
38
|
+
| 'sidebar'
|
|
39
|
+
| 'tabBar';
|
|
40
|
+
|
|
36
41
|
export interface TabsHostPropsIOS {
|
|
42
|
+
/**
|
|
43
|
+
* @summary Whether changes of `tabBarHidden` are animated.
|
|
44
|
+
*
|
|
45
|
+
* When `true`, the tab bar is hidden and shown with the system transition
|
|
46
|
+
* (`UITabBarController.setTabBarHidden(_:animated:)`). When `false`, the
|
|
47
|
+
* tab bar disappears and reappears immediately.
|
|
48
|
+
*
|
|
49
|
+
* Available starting from iOS 18. On earlier versions the tab bar visibility
|
|
50
|
+
* is never animated, regardless of this prop.
|
|
51
|
+
*
|
|
52
|
+
* @default true
|
|
53
|
+
*
|
|
54
|
+
* @platform ios
|
|
55
|
+
* @supported iOS 18 or higher
|
|
56
|
+
*/
|
|
57
|
+
tabBarHiddenAnimationEnabled?: boolean | undefined;
|
|
37
58
|
/**
|
|
38
59
|
* @summary Specifies the color used for selected tab's text and icon color.
|
|
39
60
|
*
|
|
@@ -125,6 +146,61 @@ export interface TabsHostPropsIOS {
|
|
|
125
146
|
* @supported iOS 18 or higher
|
|
126
147
|
*/
|
|
127
148
|
tabBarControllerMode?: TabBarControllerMode | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* @summary Specifies whether the sidebar or the tab bar is preferred when only
|
|
151
|
+
* one of them can be displayed.
|
|
152
|
+
*
|
|
153
|
+
* @description
|
|
154
|
+
* The following values are currently supported:
|
|
155
|
+
*
|
|
156
|
+
* - `automatic` - the system resolves to the platform default (the tab bar on iOS)
|
|
157
|
+
* - `sidebar` - the sidebar is displayed when it is available
|
|
158
|
+
* - `tabBar` - the tab bar is displayed
|
|
159
|
+
*
|
|
160
|
+
* This prop requires `tabBarControllerMode` to be set to `tabSidebar`.
|
|
161
|
+
* Otherwise, the sidebar is not considered a supported mode and the tab bar
|
|
162
|
+
* is always displayed.
|
|
163
|
+
*
|
|
164
|
+
* The button that shows the sidebar is visible only when the screen has
|
|
165
|
+
* a header. After using it, the sidebar is displayed and the content is accessible.
|
|
166
|
+
*
|
|
167
|
+
* The sidebar can also be shown with a swipe from the leading edge.
|
|
168
|
+
* In this case, the sidebar overlaps the content, and the content is not accessible until
|
|
169
|
+
* the sidebar is hidden.
|
|
170
|
+
*
|
|
171
|
+
* The sidebar is enabled only when the interface has a regular
|
|
172
|
+
* horizontal size class. On iPhone, this applies only to larger models
|
|
173
|
+
* (e.g. Pro Max, Plus and Air) in landscape orientation. On other iPhones
|
|
174
|
+
* (e.g. iPhone 18 Pro), and on all iPhones in portrait orientation,
|
|
175
|
+
* the tab bar is always displayed.
|
|
176
|
+
*
|
|
177
|
+
* @default Defaults to `automatic`.
|
|
178
|
+
*
|
|
179
|
+
* Not supported on tvOS.
|
|
180
|
+
*
|
|
181
|
+
* @platform ios
|
|
182
|
+
* @supported iOS 27 or higher
|
|
183
|
+
*/
|
|
184
|
+
tabBarSidebarPreferredPlacement?: TabBarSidebarPreferredPlacement | undefined;
|
|
185
|
+
/**
|
|
186
|
+
* @summary `screenKey` of the tab screen that should receive the prominent treatment.
|
|
187
|
+
*
|
|
188
|
+
* Must match the `screenKey` of one of the child `TabsScreen`s. Where supported, that tab
|
|
189
|
+
* receives enhanced visual emphasis in the tab bar - it is detached from the other items
|
|
190
|
+
* onto its own surface and stays visible when the tab bar minimizes on scroll
|
|
191
|
+
* (see `tabBarMinimizeBehavior`).
|
|
192
|
+
*
|
|
193
|
+
* When omitted, a tab with `role: 'search'` and `automaticallyActivatesSearch` enabled
|
|
194
|
+
* becomes prominent automatically, otherwise no tab is prominent.
|
|
195
|
+
*
|
|
196
|
+
* @see {@link https://developer.apple.com/documentation/uikit/uitabbarcontroller/prominenttabidentifier|UITabBarController.prominentTabIdentifier}
|
|
197
|
+
*
|
|
198
|
+
* Not supported on tvOS.
|
|
199
|
+
*
|
|
200
|
+
* @platform ios
|
|
201
|
+
* @supported iOS 27 or higher
|
|
202
|
+
*/
|
|
203
|
+
prominentScreenKey?: string | undefined;
|
|
128
204
|
/**
|
|
129
205
|
* @summary
|
|
130
206
|
* A callback that gets invoked when the user taps the "More" tab bar item.
|
|
@@ -181,6 +181,9 @@ export interface TabsHostPropsBase {
|
|
|
181
181
|
/**
|
|
182
182
|
* @summary Hides the tab bar.
|
|
183
183
|
*
|
|
184
|
+
* On iOS 18+, whether the change is animated is controlled by
|
|
185
|
+
* `ios.tabBarHiddenAnimationEnabled`.
|
|
186
|
+
*
|
|
184
187
|
* @default false
|
|
185
188
|
*
|
|
186
189
|
* @platform android, ios
|
|
@@ -19,6 +19,7 @@ export type {
|
|
|
19
19
|
TabsBottomAccessoryComponentFactory,
|
|
20
20
|
TabBarMinimizeBehavior,
|
|
21
21
|
TabBarControllerMode,
|
|
22
|
+
TabBarSidebarPreferredPlacement,
|
|
22
23
|
TabsHostPropsIOS,
|
|
23
24
|
} from './host';
|
|
24
25
|
|
|
@@ -28,12 +29,20 @@ export type {
|
|
|
28
29
|
TabsScreenPropsBase,
|
|
29
30
|
TabsScreenProps,
|
|
30
31
|
// Android
|
|
32
|
+
TabsScreenIconAndroid,
|
|
33
|
+
TabsScreenIconTintingAndroid,
|
|
31
34
|
TabBarItemLabelVisibilityMode,
|
|
32
35
|
TabsScreenItemStateAppearanceAndroid,
|
|
33
36
|
TabsScreenAppearanceAndroid,
|
|
34
37
|
TabsScreenPropsAndroid,
|
|
35
38
|
// iOS
|
|
39
|
+
TabsScreenIconIOS,
|
|
40
|
+
TabsScreenIconImageRenderingModeIOS,
|
|
41
|
+
TabsScreenIconSymbolRenderingModeIOS,
|
|
42
|
+
TabsScreenIconTemplateIOS,
|
|
43
|
+
TabsScreenIconXcassetIOS,
|
|
36
44
|
TabsScreenBlurEffect,
|
|
45
|
+
TabsScreenRole,
|
|
37
46
|
TabsScreenSystemItem,
|
|
38
47
|
TabsScreenAppearanceIOS,
|
|
39
48
|
TabsScreenItemAppearanceIOS,
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from 'react-native';
|
|
9
9
|
import TabsScreenAndroidNativeComponent, {
|
|
10
10
|
type Appearance,
|
|
11
|
+
type IconTinting,
|
|
11
12
|
type ItemStateAppearance,
|
|
12
13
|
type NativeProps as TabsScreenAndroidNativeComponentProps,
|
|
13
14
|
} from '../../../fabric/tabs/TabsScreenAndroidNativeComponent';
|
|
@@ -16,7 +17,7 @@ import type {
|
|
|
16
17
|
TabsScreenItemStateAppearanceAndroid,
|
|
17
18
|
} from './TabsScreen.android.types';
|
|
18
19
|
import type { TabsScreenProps } from '../screen/TabsScreen.types';
|
|
19
|
-
import type {
|
|
20
|
+
import type { TabsScreenIconAndroid } from './TabsScreenIcon.types';
|
|
20
21
|
import { useTabsScreen } from './useTabsScreen';
|
|
21
22
|
import { parseAndroidIconToNativeProps } from '../../shared';
|
|
22
23
|
|
|
@@ -128,13 +129,15 @@ function mapItemStateAppearanceToNativeProp(
|
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
function parseIconsToNativeProps(
|
|
131
|
-
icon:
|
|
132
|
-
selectedIcon:
|
|
132
|
+
icon: TabsScreenIconAndroid | undefined,
|
|
133
|
+
selectedIcon: TabsScreenIconAndroid | undefined,
|
|
133
134
|
): {
|
|
134
135
|
imageIconResource?: ImageResolvedAssetSource | undefined;
|
|
135
136
|
drawableIconResourceName?: string | undefined;
|
|
137
|
+
iconTinting?: IconTinting | undefined;
|
|
136
138
|
selectedImageIconResource?: ImageResolvedAssetSource | undefined;
|
|
137
139
|
selectedDrawableIconResourceName?: string | undefined;
|
|
140
|
+
selectedIconTinting?: IconTinting | undefined;
|
|
138
141
|
} {
|
|
139
142
|
const parsedIcon = parseAndroidIconToNativeProps(icon);
|
|
140
143
|
const parsedSelectedIcon = parseAndroidIconToNativeProps(selectedIcon);
|
|
@@ -142,9 +145,11 @@ function parseIconsToNativeProps(
|
|
|
142
145
|
return {
|
|
143
146
|
imageIconResource: parsedIcon.imageIconResource,
|
|
144
147
|
drawableIconResourceName: parsedIcon.drawableIconResourceName,
|
|
148
|
+
iconTinting: icon?.tinting,
|
|
145
149
|
selectedImageIconResource: parsedSelectedIcon.imageIconResource,
|
|
146
150
|
selectedDrawableIconResourceName:
|
|
147
151
|
parsedSelectedIcon.drawableIconResourceName,
|
|
152
|
+
selectedIconTinting: selectedIcon?.tinting,
|
|
148
153
|
};
|
|
149
154
|
}
|
|
150
155
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ColorValue, TextStyle } from 'react-native';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TabsScreenIconAndroid } from './TabsScreenIcon.types';
|
|
3
3
|
|
|
4
4
|
export type TabBarItemLabelVisibilityMode =
|
|
5
5
|
| 'auto'
|
|
@@ -85,6 +85,14 @@ export interface TabsScreenAppearanceAndroid {
|
|
|
85
85
|
* @platform android
|
|
86
86
|
*/
|
|
87
87
|
disabled?: TabsScreenItemStateAppearanceAndroid | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* @summary Specifies the icon size of this tab's item in dp.
|
|
90
|
+
*
|
|
91
|
+
* Applies to this tab only. Unset uses the system default.
|
|
92
|
+
*
|
|
93
|
+
* @platform android
|
|
94
|
+
*/
|
|
95
|
+
tabBarItemIconSize?: number | undefined;
|
|
88
96
|
/**
|
|
89
97
|
* @summary Specifies the background color of the active indicator.
|
|
90
98
|
*
|
|
@@ -99,6 +107,24 @@ export interface TabsScreenAppearanceAndroid {
|
|
|
99
107
|
* @platform android
|
|
100
108
|
*/
|
|
101
109
|
tabBarItemActiveIndicatorEnabled?: boolean | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* @summary Specifies the width of this tab's active indicator in dp.
|
|
112
|
+
*
|
|
113
|
+
* Applies to this tab only. If unset, it is this tab's icon size plus the
|
|
114
|
+
* default Material padding.
|
|
115
|
+
*
|
|
116
|
+
* @platform android
|
|
117
|
+
*/
|
|
118
|
+
tabBarItemActiveIndicatorWidth?: number | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* @summary Specifies the height of this tab's active indicator in dp.
|
|
121
|
+
*
|
|
122
|
+
* Applies to this tab only. If unset, it is this tab's icon size plus the
|
|
123
|
+
* default Material padding.
|
|
124
|
+
*
|
|
125
|
+
* @platform android
|
|
126
|
+
*/
|
|
127
|
+
tabBarItemActiveIndicatorHeight?: number | undefined;
|
|
102
128
|
/**
|
|
103
129
|
* @summary Specifies the font family used for the title of each tab bar item.
|
|
104
130
|
*
|
|
@@ -162,28 +188,37 @@ export interface TabsScreenPropsAndroid {
|
|
|
162
188
|
* @summary Specifies the icon for the tab bar item.
|
|
163
189
|
*
|
|
164
190
|
* Supported values:
|
|
165
|
-
* - `{ type: 'imageSource', imageSource }`
|
|
166
|
-
* Uses an image from the provided resource.
|
|
191
|
+
* - `{ type: 'imageSource', imageSource, tinting? }`
|
|
192
|
+
* Uses an image from the provided resource. `tinting` defaults to
|
|
193
|
+
* `default`: the tab bar tints the image with the item icon color.
|
|
194
|
+
* `original` keeps the image's own colors.
|
|
167
195
|
*
|
|
168
196
|
* Remarks: `imageSource` type doesn't support SVGs on Android.
|
|
169
197
|
* For loading SVGs use `drawableResource` type.
|
|
170
198
|
*
|
|
171
|
-
* - `{ type: 'drawableResource', name }`
|
|
172
|
-
* Uses a drawable resource with the given name.
|
|
199
|
+
* - `{ type: 'drawableResource', name, tinting? }`
|
|
200
|
+
* Uses a drawable resource with the given name. `tinting` defaults to
|
|
201
|
+
* `default`: the tab bar tints the drawable with the item icon color.
|
|
202
|
+
* `original` keeps the drawable's own colors, e.g. of a multicolor
|
|
203
|
+
* VectorDrawable.
|
|
173
204
|
*
|
|
174
205
|
* Remarks: Requires passing a drawable to resources via Android Studio.
|
|
175
206
|
*
|
|
207
|
+
* See `TabsScreenIconTintingAndroid` for the meaning of each value.
|
|
208
|
+
*
|
|
176
209
|
* @platform android
|
|
177
210
|
*/
|
|
178
|
-
icon?:
|
|
211
|
+
icon?: TabsScreenIconAndroid | undefined;
|
|
179
212
|
/**
|
|
180
213
|
* @summary Specifies the icon for tab bar item when it is selected.
|
|
181
214
|
*
|
|
182
215
|
* Supports the same values as `icon` property for given platform.
|
|
216
|
+
* `tinting` may differ from the one of `icon`, e.g. a drawable that is
|
|
217
|
+
* tinted while unselected and shows its own colors while selected.
|
|
183
218
|
*
|
|
184
219
|
* To use `selectedIcon`, `icon` must also be provided.
|
|
185
220
|
*
|
|
186
221
|
* @platform android
|
|
187
222
|
*/
|
|
188
|
-
selectedIcon?:
|
|
223
|
+
selectedIcon?: TabsScreenIconAndroid | undefined;
|
|
189
224
|
}
|
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
} from 'react-native';
|
|
10
10
|
import TabsScreenIOSNativeComponent, {
|
|
11
11
|
type IconType,
|
|
12
|
+
type IconImageRenderingMode,
|
|
13
|
+
type IconSymbolRenderingMode,
|
|
12
14
|
type NativeProps as TabsScreenIOSNativeComponentProps,
|
|
13
15
|
type Appearance,
|
|
14
16
|
type ItemAppearance,
|
|
@@ -20,7 +22,7 @@ import type {
|
|
|
20
22
|
TabsScreenItemStateAppearanceIOS,
|
|
21
23
|
} from './TabsScreen.ios.types';
|
|
22
24
|
import type { TabsScreenProps } from './TabsScreen.types';
|
|
23
|
-
import type {
|
|
25
|
+
import type { TabsScreenIconIOS } from './TabsScreenIcon.types';
|
|
24
26
|
import { useTabsScreen } from './useTabsScreen';
|
|
25
27
|
|
|
26
28
|
function TabsScreen(props: TabsScreenProps) {
|
|
@@ -72,6 +74,8 @@ function TabsScreen(props: TabsScreenProps) {
|
|
|
72
74
|
)}
|
|
73
75
|
userInterfaceStyle={ios?.experimental_userInterfaceStyle}
|
|
74
76
|
systemItem={ios?.systemItem}
|
|
77
|
+
tabRole={ios?.role}
|
|
78
|
+
automaticallyActivatesSearch={ios?.automaticallyActivatesSearch}
|
|
75
79
|
overrideScrollViewContentInsetAdjustmentBehavior={
|
|
76
80
|
ios?.overrideScrollViewContentInsetAdjustmentBehavior
|
|
77
81
|
}>
|
|
@@ -146,14 +150,18 @@ function mapItemStateAppearanceToNativeProp(
|
|
|
146
150
|
}
|
|
147
151
|
|
|
148
152
|
function parseIconsToNativeProps(
|
|
149
|
-
icon:
|
|
150
|
-
selectedIcon:
|
|
153
|
+
icon: TabsScreenIconIOS | undefined,
|
|
154
|
+
selectedIcon: TabsScreenIconIOS | undefined,
|
|
151
155
|
): {
|
|
152
156
|
imageIconResource?: ImageResolvedAssetSource | undefined;
|
|
153
157
|
drawableIconResourceName?: string | undefined;
|
|
154
158
|
iconType?: IconType | undefined;
|
|
159
|
+
iconImageRenderingMode?: IconImageRenderingMode | undefined;
|
|
160
|
+
iconSymbolRenderingMode?: IconSymbolRenderingMode | undefined;
|
|
155
161
|
iconImageSource?: ImageSourcePropType | undefined;
|
|
156
162
|
iconResourceName?: string | undefined;
|
|
163
|
+
selectedIconImageRenderingMode?: IconImageRenderingMode | undefined;
|
|
164
|
+
selectedIconSymbolRenderingMode?: IconSymbolRenderingMode | undefined;
|
|
157
165
|
selectedIconImageSource?: ImageSourcePropType | undefined;
|
|
158
166
|
selectedIconResourceName?: string | undefined;
|
|
159
167
|
} {
|
|
@@ -177,15 +185,21 @@ function parseIconsToNativeProps(
|
|
|
177
185
|
|
|
178
186
|
return {
|
|
179
187
|
iconType: parsedIcon.iconType,
|
|
188
|
+
iconImageRenderingMode: parsedIcon.iconImageRenderingMode,
|
|
189
|
+
iconSymbolRenderingMode: parsedIcon.iconSymbolRenderingMode,
|
|
180
190
|
iconImageSource: parsedIcon.iconImageSource,
|
|
181
191
|
iconResourceName: parsedIcon.iconResourceName,
|
|
192
|
+
selectedIconImageRenderingMode: parsedSelectedIcon.iconImageRenderingMode,
|
|
193
|
+
selectedIconSymbolRenderingMode: parsedSelectedIcon.iconSymbolRenderingMode,
|
|
182
194
|
selectedIconImageSource: parsedSelectedIcon.iconImageSource,
|
|
183
195
|
selectedIconResourceName: parsedSelectedIcon.iconResourceName,
|
|
184
196
|
};
|
|
185
197
|
}
|
|
186
198
|
|
|
187
|
-
function parseIconToNativeProps(icon:
|
|
199
|
+
function parseIconToNativeProps(icon: TabsScreenIconIOS | undefined): {
|
|
188
200
|
iconType?: IconType | undefined;
|
|
201
|
+
iconImageRenderingMode?: IconImageRenderingMode | undefined;
|
|
202
|
+
iconSymbolRenderingMode?: IconSymbolRenderingMode | undefined;
|
|
189
203
|
iconImageSource?: ImageSourcePropType | undefined;
|
|
190
204
|
iconResourceName?: string | undefined;
|
|
191
205
|
} {
|
|
@@ -196,16 +210,19 @@ function parseIconToNativeProps(icon: PlatformIconIOS | undefined): {
|
|
|
196
210
|
if (icon.type === 'sfSymbol') {
|
|
197
211
|
return {
|
|
198
212
|
iconType: 'sfSymbol',
|
|
213
|
+
iconSymbolRenderingMode: icon.renderingMode,
|
|
199
214
|
iconResourceName: icon.name,
|
|
200
215
|
};
|
|
201
216
|
} else if (icon.type === 'imageSource') {
|
|
202
217
|
return {
|
|
203
218
|
iconType: 'image',
|
|
219
|
+
iconImageRenderingMode: icon.renderingMode,
|
|
204
220
|
iconImageSource: icon.imageSource,
|
|
205
221
|
};
|
|
206
222
|
} else if (icon.type === 'templateSource') {
|
|
207
223
|
return {
|
|
208
|
-
iconType: '
|
|
224
|
+
iconType: 'image',
|
|
225
|
+
iconImageRenderingMode: 'template',
|
|
209
226
|
iconImageSource: icon.templateSource,
|
|
210
227
|
};
|
|
211
228
|
} else if (icon.type === 'xcasset') {
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { ColorValue, TextStyle } from 'react-native';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
BlurEffect,
|
|
5
|
-
PlatformIconIOS,
|
|
6
|
-
} from '../../shared/types';
|
|
2
|
+
import type { UserInterfaceStyle, BlurEffect } from '../../shared/types';
|
|
3
|
+
import type { TabsScreenIconIOS } from './TabsScreenIcon.types';
|
|
7
4
|
|
|
8
5
|
export type TabsScreenBlurEffect = BlurEffect | 'systemDefault';
|
|
9
6
|
|
|
7
|
+
export type TabsScreenRole = 'search';
|
|
8
|
+
|
|
10
9
|
export type TabsScreenSystemItem =
|
|
11
10
|
| 'bookmarks'
|
|
12
11
|
| 'contacts'
|
|
@@ -233,33 +232,52 @@ export interface TabsScreenPropsIOS {
|
|
|
233
232
|
* @summary Specifies the icon for the tab bar item.
|
|
234
233
|
*
|
|
235
234
|
* Supported values:
|
|
236
|
-
* - `{ type: 'imageSource', imageSource }`
|
|
237
|
-
* Uses an image from the provided resource.
|
|
238
|
-
*
|
|
239
|
-
*
|
|
235
|
+
* - `{ type: 'imageSource', imageSource, renderingMode? }`
|
|
236
|
+
* Uses an image from the provided resource. `renderingMode` defaults to
|
|
237
|
+
* `default`, which keeps the image's own colors. With `template` it is
|
|
238
|
+
* used as a template image and follows the state-dependent icon color.
|
|
239
|
+
* - `{ type: 'sfSymbol', name, renderingMode? }`
|
|
240
|
+
* Uses an SF Symbol with the specified name. If no system symbol
|
|
241
|
+
* matches, falls back to a custom symbol with that name from the app's
|
|
242
|
+
* asset catalog. `renderingMode` defaults to `default`, the system
|
|
243
|
+
* behavior: a single color for system symbols, while for custom symbols
|
|
244
|
+
* the rendering intent set in the asset catalog may change it. `original`
|
|
245
|
+
* shows the symbol's own color layers (Apple's "multicolor" rendering).
|
|
240
246
|
* - `{ type: 'xcasset', name }`
|
|
241
|
-
*
|
|
247
|
+
* Deprecated: use `sfSymbol` for custom symbols from the asset catalog, or
|
|
248
|
+
* `imageSource` with `{ uri: 'name' }` for asset catalog images (append
|
|
249
|
+
* `.png` to names containing a dot; add `renderingMode: 'template'` for an
|
|
250
|
+
* asset whose "Render As" is not `Original Image`).
|
|
251
|
+
* Uses an image from the asset catalog. Its colors follow the asset's
|
|
252
|
+
* "Render As" setting in the catalog: `Original Image` keeps its own colors,
|
|
253
|
+
* `Default` and `Template Image` follow the state-dependent icon color.
|
|
242
254
|
* - `{ type: 'templateSource', templateSource }`
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
255
|
+
* Deprecated: use `{ type: 'imageSource', imageSource, renderingMode: 'template' }`
|
|
256
|
+
* instead. Uses the provided image as a template image.
|
|
257
|
+
*
|
|
258
|
+
* See `TabsScreenIconImageRenderingModeIOS` and
|
|
259
|
+
* `TabsScreenIconSymbolRenderingModeIOS` for the meaning of each rendering mode.
|
|
246
260
|
*
|
|
247
261
|
* If no `selectedIcon` is provided, this icon will also
|
|
248
262
|
* be used as the selected state icon.
|
|
249
263
|
*
|
|
250
264
|
* @platform ios
|
|
251
265
|
*/
|
|
252
|
-
icon?:
|
|
266
|
+
icon?: TabsScreenIconIOS | undefined;
|
|
253
267
|
/**
|
|
254
268
|
* @summary Specifies the icon for tab bar item when it is selected.
|
|
255
269
|
*
|
|
256
|
-
* Supports the same values as `icon` property.
|
|
270
|
+
* Supports the same values as `icon` property. It must use the same icon
|
|
271
|
+
* `type` as `icon`; `renderingMode` may differ, e.g.
|
|
272
|
+
* `icon: { type: 'sfSymbol', name }` with
|
|
273
|
+
* `selectedIcon: { type: 'sfSymbol', name, renderingMode: 'original' }`
|
|
274
|
+
* shows the symbol tinted while unselected and in its own colors while selected.
|
|
257
275
|
*
|
|
258
276
|
* To use `selectedIcon`, `icon` must also be provided.
|
|
259
277
|
*
|
|
260
278
|
* @platform ios
|
|
261
279
|
*/
|
|
262
|
-
selectedIcon?:
|
|
280
|
+
selectedIcon?: TabsScreenIconIOS | undefined;
|
|
263
281
|
/**
|
|
264
282
|
* @summary System-provided tab bar item with predefined icon and title
|
|
265
283
|
*
|
|
@@ -269,13 +287,57 @@ export interface TabsScreenPropsIOS {
|
|
|
269
287
|
* overridden by providing a custom `title`.
|
|
270
288
|
*
|
|
271
289
|
* @remarks
|
|
272
|
-
* On iOS 26, `systemItem: 'search'` acts as a detached tab bar item, which does not display
|
|
290
|
+
* On iOS 26, `systemItem: 'search'` acts as a detached tab bar item, which does not display
|
|
291
|
+
* any title (system or custom). This no longer applies on iOS 27; to get a similar separation
|
|
292
|
+
* use `role: 'search'` together with `automaticallyActivatesSearch`.
|
|
273
293
|
*
|
|
274
294
|
* @see {@link https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem|UITabBarItem.SystemItem}
|
|
275
295
|
*
|
|
276
296
|
* @platform ios
|
|
277
297
|
*/
|
|
278
298
|
systemItem?: TabsScreenSystemItem | undefined;
|
|
299
|
+
/**
|
|
300
|
+
* @summary Gives this tab a system role. Currently the only role is `'search'`,
|
|
301
|
+
* which marks the tab as the system search tab.
|
|
302
|
+
*
|
|
303
|
+
* On iOS 26.1+ (where tabs are managed through the `UITab` API) a tab screen with
|
|
304
|
+
* `role: 'search'` is backed natively by `UISearchTab`, which enables the system
|
|
305
|
+
* search behavior: `automaticallyActivatesSearch` and the detached trailing
|
|
306
|
+
* placement UIKit gives search tabs. Behavior differs between OS versions: iOS 26.x
|
|
307
|
+
* detaches `UISearchTab` unconditionally, iOS 27.0 only while `automaticallyActivatesSearch`
|
|
308
|
+
* is enabled. This prop does not affect the tab bar item's icon or title - combine
|
|
309
|
+
* it with `systemItem: 'search'` for the system magnifier item. On iOS 27+ the detached
|
|
310
|
+
* (prominent) placement can be given to any tab instead through `TabsHost`
|
|
311
|
+
* `ios.prominentScreenKey`.
|
|
312
|
+
*
|
|
313
|
+
* The native tab class cannot change during the screen's lifetime - changing
|
|
314
|
+
* `role` on a mounted tab screen is not supported and triggers an assertion
|
|
315
|
+
* in development builds.
|
|
316
|
+
*
|
|
317
|
+
* @see {@link https://developer.apple.com/documentation/uikit/uisearchtab|UISearchTab}
|
|
318
|
+
*
|
|
319
|
+
* @default undefined
|
|
320
|
+
*
|
|
321
|
+
* @platform ios
|
|
322
|
+
* @supported iOS 26.1 or higher
|
|
323
|
+
*/
|
|
324
|
+
role?: TabsScreenRole | undefined;
|
|
325
|
+
/**
|
|
326
|
+
* @summary Specifies whether selecting this tab automatically activates its search field.
|
|
327
|
+
*
|
|
328
|
+
* Effective only for tab screens with `role: 'search'` and only when a search bar
|
|
329
|
+
* is configured in the header of the screen stack nested in this tab
|
|
330
|
+
* (see `headerSearchBarOptions`). When enabled, selecting the search tab immediately
|
|
331
|
+
* activates the search field. Cancelling the search restores the previously selected tab.
|
|
332
|
+
*
|
|
333
|
+
* @see {@link https://developer.apple.com/documentation/uikit/uisearchtab/automaticallyactivatessearch|UISearchTab.automaticallyActivatesSearch}
|
|
334
|
+
*
|
|
335
|
+
* @default false
|
|
336
|
+
*
|
|
337
|
+
* @platform ios
|
|
338
|
+
* @supported iOS 26.1 or higher
|
|
339
|
+
*/
|
|
340
|
+
automaticallyActivatesSearch?: boolean | undefined;
|
|
279
341
|
/**
|
|
280
342
|
* @summary Specifies if `contentInsetAdjustmentBehavior` of first ScrollView
|
|
281
343
|
* in first descendant chain from tab screen should be overridden back from `never`
|