diff --git a/apps/src/tests/Test2320.tsx b/apps/src/tests/Test2320.tsx new file mode 100644 index 0000000000..ebebf1607b --- /dev/null +++ b/apps/src/tests/Test2320.tsx @@ -0,0 +1,56 @@ +import * as React from "react"; +import { ScrollView, Text } from "react-native"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import { NavigationContainer, useTheme } from "@react-navigation/native"; +import { SafeAreaProvider } from "react-native-safe-area-context"; + +const ArticleScreen = () => { + return ( + + + Lorem Ipsum is simply dummy text of the printing and typesetting + industry. Lorem Ipsum has been the industry's standard dummy text + ever since the 1500s, when an unknown printer took a galley of type and + scrambled it to make a type specimen book. It has survived not only five + centuries, but also the leap into electronic typesetting, remaining + essentially unchanged. It was popularised in the 1960s with the release + of Letraset sheets containing Lorem Ipsum passages, and more recently + with desktop publishing software like Aldus PageMaker including versions + of Lorem Ipsum. + Contrary to popular belief, Lorem Ipsum is not simply random text. It + has roots in a piece of classical Latin literature from 45 BC, making it + over 2000 years old. Richard McClintock, a Latin professor at + Hampden-Sydney College in Virginia, looked up one of the more obscure + Latin words, consectetur, from a Lorem Ipsum passage, and going through + the cites of the word in classical literature, discovered the + undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 + of "de Finibus Bonorum et Malorum" (The Extremes of Good and + Evil) by Cicero, written in 45 BC. This book is a treatise on the theory + of ethics, very popular during the Renaissance. The first line of Lorem + Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in + section 1.10.32. + + + ); +} + +export default function App() { + const Stack = createNativeStackNavigator(); + return ( + + + + + + + + ) +} diff --git a/apps/src/tests/index.ts b/apps/src/tests/index.ts index b35f4fb546..979aecaae8 100644 --- a/apps/src/tests/index.ts +++ b/apps/src/tests/index.ts @@ -111,6 +111,7 @@ export { default as Test2252 } from './Test2252'; export { default as Test2271 } from './Test2271'; export { default as Test2282 } from './Test2282'; export { default as Test2317 } from './Test2317'; +export { default as Test2320 } from './Test2320'; export { default as Test2332 } from './Test2332'; export { default as Test2395 } from './Test2395'; export { default as TestScreenAnimation } from './TestScreenAnimation'; diff --git a/ios/RNSConvert.h b/ios/RNSConvert.h index fa3d02f4a9..6ebd7bd9ae 100644 --- a/ios/RNSConvert.h +++ b/ios/RNSConvert.h @@ -1,12 +1,17 @@ -#ifdef RCT_NEW_ARCH_ENABLED #import +#ifdef RCT_NEW_ARCH_ENABLED #import +#endif // RCT_NEW_ARCH_ENABLED #import "RNSEnums.h" +#ifdef RCT_NEW_ARCH_ENABLED namespace react = facebook::react; +#endif // RCT_NEW_ARCH_ENABLED @interface RNSConvert : NSObject +#ifdef RCT_NEW_ARCH_ENABLED + + (UISemanticContentAttribute)UISemanticContentAttributeFromCppEquivalent: (react::RNSScreenStackHeaderConfigDirection)direction; @@ -42,8 +47,12 @@ namespace react = facebook::react; + (NSMutableArray *)arrayFromVector:(const std::vector &)vector; -+ (UIBlurEffectStyle)UIBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect; - -@end ++ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect; #endif // RCT_NEW_ARCH_ENABLED + +/// This method fails (by assertion) when `blurEffect == RNSBlurEffectStyleNone` which has no counter part in the UIKit +/// type. ++ (UIBlurEffectStyle)tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:(RNSBlurEffectStyle)blurEffect; + +@end diff --git a/ios/RNSConvert.mm b/ios/RNSConvert.mm index 67c6519b90..90aac23be6 100644 --- a/ios/RNSConvert.mm +++ b/ios/RNSConvert.mm @@ -1,8 +1,12 @@ #import "RNSConvert.h" -#ifdef RCT_NEW_ARCH_ENABLED +#ifndef RCT_NEW_ARCH_ENABLED +#import +#endif // !RCT_NEW_ARCH_ENABLED + @implementation RNSConvert +#ifdef RCT_NEW_ARCH_ENABLED + (UISemanticContentAttribute)UISemanticContentAttributeFromCppEquivalent: (react::RNSScreenStackHeaderConfigDirection)direction { @@ -173,71 +177,89 @@ + (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RN return array; } -+ (UIBlurEffectStyle)UIBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect ++ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect { #if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 if (@available(iOS 13.0, *)) { switch (blurEffect) { + case react::RNSScreenStackHeaderConfigBlurEffect::None: + return RNSBlurEffectStyleNone; case react::RNSScreenStackHeaderConfigBlurEffect::ExtraLight: - return UIBlurEffectStyleExtraLight; + return RNSBlurEffectStyleExtraLight; case react::RNSScreenStackHeaderConfigBlurEffect::Light: - return UIBlurEffectStyleLight; + return RNSBlurEffectStyleLight; case react::RNSScreenStackHeaderConfigBlurEffect::Dark: - return UIBlurEffectStyleDark; + return RNSBlurEffectStyleDark; case react::RNSScreenStackHeaderConfigBlurEffect::Regular: - return UIBlurEffectStyleRegular; + return RNSBlurEffectStyleRegular; case react::RNSScreenStackHeaderConfigBlurEffect::Prominent: - return UIBlurEffectStyleProminent; + return RNSBlurEffectStyleProminent; case react::RNSScreenStackHeaderConfigBlurEffect::SystemUltraThinMaterial: - return UIBlurEffectStyleSystemUltraThinMaterial; + return RNSBlurEffectStyleSystemUltraThinMaterial; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThinMaterial: - return UIBlurEffectStyleSystemThinMaterial; + return RNSBlurEffectStyleSystemThinMaterial; case react::RNSScreenStackHeaderConfigBlurEffect::SystemMaterial: - return UIBlurEffectStyleSystemMaterial; + return RNSBlurEffectStyleSystemMaterial; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThickMaterial: - return UIBlurEffectStyleSystemThickMaterial; + return RNSBlurEffectStyleSystemThickMaterial; case react::RNSScreenStackHeaderConfigBlurEffect::SystemChromeMaterial: - return UIBlurEffectStyleSystemChromeMaterial; + return RNSBlurEffectStyleSystemChromeMaterial; case react::RNSScreenStackHeaderConfigBlurEffect::SystemUltraThinMaterialLight: - return UIBlurEffectStyleSystemUltraThinMaterialLight; + return RNSBlurEffectStyleSystemUltraThinMaterialLight; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThinMaterialLight: - return UIBlurEffectStyleSystemThinMaterialLight; + return RNSBlurEffectStyleSystemThinMaterialLight; case react::RNSScreenStackHeaderConfigBlurEffect::SystemMaterialLight: - return UIBlurEffectStyleSystemMaterialLight; + return RNSBlurEffectStyleSystemMaterialLight; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThickMaterialLight: - return UIBlurEffectStyleSystemThickMaterialLight; + return RNSBlurEffectStyleSystemThickMaterialLight; case react::RNSScreenStackHeaderConfigBlurEffect::SystemChromeMaterialLight: - return UIBlurEffectStyleSystemChromeMaterialLight; + return RNSBlurEffectStyleSystemChromeMaterialLight; case react::RNSScreenStackHeaderConfigBlurEffect::SystemUltraThinMaterialDark: - return UIBlurEffectStyleSystemUltraThinMaterialDark; + return RNSBlurEffectStyleSystemUltraThinMaterialDark; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThinMaterialDark: - return UIBlurEffectStyleSystemThinMaterialDark; + return RNSBlurEffectStyleSystemThinMaterialDark; case react::RNSScreenStackHeaderConfigBlurEffect::SystemMaterialDark: - return UIBlurEffectStyleSystemMaterialDark; + return RNSBlurEffectStyleSystemMaterialDark; case react::RNSScreenStackHeaderConfigBlurEffect::SystemThickMaterialDark: - return UIBlurEffectStyleSystemThickMaterialDark; + return RNSBlurEffectStyleSystemThickMaterialDark; case react::RNSScreenStackHeaderConfigBlurEffect::SystemChromeMaterialDark: - return UIBlurEffectStyleSystemChromeMaterialDark; + return RNSBlurEffectStyleSystemChromeMaterialDark; } } #endif switch (blurEffect) { + case react::RNSScreenStackHeaderConfigBlurEffect::None: + return RNSBlurEffectStyleNone; case react::RNSScreenStackHeaderConfigBlurEffect::Light: - return UIBlurEffectStyleLight; + return RNSBlurEffectStyleLight; case react::RNSScreenStackHeaderConfigBlurEffect::Dark: - return UIBlurEffectStyleDark; + return RNSBlurEffectStyleDark; case react::RNSScreenStackHeaderConfigBlurEffect::Regular: - return UIBlurEffectStyleRegular; + return RNSBlurEffectStyleRegular; case react::RNSScreenStackHeaderConfigBlurEffect::Prominent: - return UIBlurEffectStyleProminent; + return RNSBlurEffectStyleProminent; case react::RNSScreenStackHeaderConfigBlurEffect::ExtraLight: default: - return UIBlurEffectStyleExtraLight; + return RNSBlurEffectStyleNone; } } -@end +#endif // RCT_NEW_ARCH_ENABLED ++ (UIBlurEffectStyle)tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:(RNSBlurEffectStyle)blurEffect +{ +#ifdef RCT_NEW_ARCH_ENABLED + react_native_assert(blurEffect != RNSBlurEffectStyleNone); +#else + RCTAssert( + blurEffect != RNSBlurEffectStyleNone, @"RNSBlurEffectStyleNone variant is not convertible to UIBlurEffectStyle"); #endif // RCT_NEW_ARCH_ENABLED + + // Cast safety: RNSBlurEffectStyle is defined in such way that its values map 1:1 with + // UIBlurEffectStyle, except RNSBlurEffectStyleNone which is excluded above. + return (UIBlurEffectStyle)blurEffect; +} + +@end diff --git a/ios/RNSEnums.h b/ios/RNSEnums.h index 5a51bb264d..2d05610b48 100644 --- a/ios/RNSEnums.h +++ b/ios/RNSEnums.h @@ -71,3 +71,49 @@ typedef NS_ENUM(NSInteger, RNSSearchBarPlacement) { RNSSearchBarPlacementInline, RNSSearchBarPlacementStacked, }; + +// Redefinition of UIBlurEffectStyle. We need to represent additional case of `None`. +typedef NS_ENUM(NSInteger, RNSBlurEffectStyle) { + /// No blur effect should be visible + RNSBlurEffectStyleNone = -1, + RNSBlurEffectStyleExtraLight = UIBlurEffectStyleExtraLight, + RNSBlurEffectStyleLight = UIBlurEffectStyleLight, + RNSBlurEffectStyleDark = UIBlurEffectStyleDark, + // TODO: Add support for this variant on tvOS + // RNSBlurEffectStyleExtraDark = UIBlurEffectStyleExtraDark API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios) + // API_UNAVAILABLE(watchos), + RNSBlurEffectStyleRegular API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(watchos) = UIBlurEffectStyleRegular, + RNSBlurEffectStyleProminent API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(watchos) = UIBlurEffectStyleProminent, + RNSBlurEffectStyleSystemUltraThinMaterial API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterial, + RNSBlurEffectStyleSystemThinMaterial API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterial, + RNSBlurEffectStyleSystemMaterial API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterial, + RNSBlurEffectStyleSystemThickMaterial API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterial, + RNSBlurEffectStyleSystemChromeMaterial API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterial, + RNSBlurEffectStyleSystemUltraThinMaterialLight API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterialLight, + RNSBlurEffectStyleSystemThinMaterialLight API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterialLight, + RNSBlurEffectStyleSystemMaterialLight API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterialLight, + RNSBlurEffectStyleSystemThickMaterialLight API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterialLight, + RNSBlurEffectStyleSystemChromeMaterialLight API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterialLight, + + RNSBlurEffectStyleSystemUltraThinMaterialDark API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemUltraThinMaterialDark, + RNSBlurEffectStyleSystemThinMaterialDark API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThinMaterialDark, + RNSBlurEffectStyleSystemMaterialDark API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemMaterialDark, + RNSBlurEffectStyleSystemThickMaterialDark API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemThickMaterialDark, + RNSBlurEffectStyleSystemChromeMaterialDark API_AVAILABLE(ios(13.0)) + API_UNAVAILABLE(watchos, tvos) = UIBlurEffectStyleSystemChromeMaterialDark + +} API_AVAILABLE(ios(8.0)) API_UNAVAILABLE(watchos); diff --git a/ios/RNSScreenStackHeaderConfig.h b/ios/RNSScreenStackHeaderConfig.h index f0dad8d9ea..b9d33831d3 100644 --- a/ios/RNSScreenStackHeaderConfig.h +++ b/ios/RNSScreenStackHeaderConfig.h @@ -56,7 +56,7 @@ @property (nonatomic) BOOL backButtonInCustomView; @property (nonatomic) UISemanticContentAttribute direction; @property (nonatomic) UINavigationItemBackButtonDisplayMode backButtonDisplayMode; -@property (nonatomic) UIBlurEffectStyle blurEffect; +@property (nonatomic) RNSBlurEffectStyle blurEffect; + (void)willShowViewController:(UIViewController *)vc animated:(BOOL)animated diff --git a/ios/RNSScreenStackHeaderConfig.mm b/ios/RNSScreenStackHeaderConfig.mm index ff329e4161..d9ad274ae9 100644 --- a/ios/RNSScreenStackHeaderConfig.mm +++ b/ios/RNSScreenStackHeaderConfig.mm @@ -110,6 +110,7 @@ - (void)initProps self.hidden = YES; _reactSubviews = [NSMutableArray new]; _backTitleVisible = YES; + _blurEffect = RNSBlurEffectStyleNone; } - (UIView *)reactSuperview @@ -449,8 +450,11 @@ + (UINavigationBarAppearance *)buildAppearance:(UIViewController *)vc appearance.backgroundColor = config.backgroundColor; } - if (config.blurEffect) { - appearance.backgroundEffect = [UIBlurEffect effectWithStyle:config.blurEffect]; + if (config.blurEffect != RNSBlurEffectStyleNone) { + appearance.backgroundEffect = + [UIBlurEffect effectWithStyle:[RNSConvert tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:config.blurEffect]]; + } else { + appearance.backgroundEffect = nil; } if (config.hideShadow) { @@ -977,7 +981,7 @@ - (void)updateProps:(react::Props::Shared const &)props oldProps:(react::Props:: _backgroundColor = RCTUIColorFromSharedColor(newScreenProps.backgroundColor); if (newScreenProps.blurEffect != oldScreenProps.blurEffect) { - _blurEffect = [RNSConvert UIBlurEffectStyleFromCppEquivalent:newScreenProps.blurEffect]; + _blurEffect = [RNSConvert RNSBlurEffectStyleFromCppEquivalent:newScreenProps.blurEffect]; } [self updateViewControllerIfNeeded]; @@ -1061,7 +1065,7 @@ - (RCTShadowView *)shadowView RCT_EXPORT_VIEW_PROPERTY(backTitleFontSize, NSNumber) RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor) RCT_EXPORT_VIEW_PROPERTY(backTitleVisible, BOOL) -RCT_EXPORT_VIEW_PROPERTY(blurEffect, UIBlurEffectStyle) +RCT_EXPORT_VIEW_PROPERTY(blurEffect, RNSBlurEffectStyle) RCT_EXPORT_VIEW_PROPERTY(color, UIColor) RCT_EXPORT_VIEW_PROPERTY(direction, UISemanticContentAttribute) RCT_EXPORT_VIEW_PROPERTY(largeTitle, BOOL) @@ -1127,36 +1131,37 @@ + (NSMutableDictionary *)blurEffectsForIOSVersion { NSMutableDictionary *blurEffects = [NSMutableDictionary new]; [blurEffects addEntriesFromDictionary:@{ - @"extraLight" : @(UIBlurEffectStyleExtraLight), - @"light" : @(UIBlurEffectStyleLight), - @"dark" : @(UIBlurEffectStyleDark), + @"none" : @(RNSBlurEffectStyleNone), + @"extraLight" : @(RNSBlurEffectStyleExtraLight), + @"light" : @(RNSBlurEffectStyleLight), + @"dark" : @(RNSBlurEffectStyleDark), }]; if (@available(iOS 10.0, *)) { [blurEffects addEntriesFromDictionary:@{ - @"regular" : @(UIBlurEffectStyleRegular), - @"prominent" : @(UIBlurEffectStyleProminent), + @"regular" : @(RNSBlurEffectStyleRegular), + @"prominent" : @(RNSBlurEffectStyleProminent), }]; } #if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \ __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 if (@available(iOS 13.0, *)) { [blurEffects addEntriesFromDictionary:@{ - @"systemUltraThinMaterial" : @(UIBlurEffectStyleSystemUltraThinMaterial), - @"systemThinMaterial" : @(UIBlurEffectStyleSystemThinMaterial), - @"systemMaterial" : @(UIBlurEffectStyleSystemMaterial), - @"systemThickMaterial" : @(UIBlurEffectStyleSystemThickMaterial), - @"systemChromeMaterial" : @(UIBlurEffectStyleSystemChromeMaterial), - @"systemUltraThinMaterialLight" : @(UIBlurEffectStyleSystemUltraThinMaterialLight), - @"systemThinMaterialLight" : @(UIBlurEffectStyleSystemThinMaterialLight), - @"systemMaterialLight" : @(UIBlurEffectStyleSystemMaterialLight), - @"systemThickMaterialLight" : @(UIBlurEffectStyleSystemThickMaterialLight), - @"systemChromeMaterialLight" : @(UIBlurEffectStyleSystemChromeMaterialLight), - @"systemUltraThinMaterialDark" : @(UIBlurEffectStyleSystemUltraThinMaterialDark), - @"systemThinMaterialDark" : @(UIBlurEffectStyleSystemThinMaterialDark), - @"systemMaterialDark" : @(UIBlurEffectStyleSystemMaterialDark), - @"systemThickMaterialDark" : @(UIBlurEffectStyleSystemThickMaterialDark), - @"systemChromeMaterialDark" : @(UIBlurEffectStyleSystemChromeMaterialDark), + @"systemUltraThinMaterial" : @(RNSBlurEffectStyleSystemUltraThinMaterial), + @"systemThinMaterial" : @(RNSBlurEffectStyleSystemThinMaterial), + @"systemMaterial" : @(RNSBlurEffectStyleSystemMaterial), + @"systemThickMaterial" : @(RNSBlurEffectStyleSystemThickMaterial), + @"systemChromeMaterial" : @(RNSBlurEffectStyleSystemChromeMaterial), + @"systemUltraThinMaterialLight" : @(RNSBlurEffectStyleSystemUltraThinMaterialLight), + @"systemThinMaterialLight" : @(RNSBlurEffectStyleSystemThinMaterialLight), + @"systemMaterialLight" : @(RNSBlurEffectStyleSystemMaterialLight), + @"systemThickMaterialLight" : @(RNSBlurEffectStyleSystemThickMaterialLight), + @"systemChromeMaterialLight" : @(RNSBlurEffectStyleSystemChromeMaterialLight), + @"systemUltraThinMaterialDark" : @(RNSBlurEffectStyleSystemUltraThinMaterialDark), + @"systemThinMaterialDark" : @(RNSBlurEffectStyleSystemThinMaterialDark), + @"systemMaterialDark" : @(RNSBlurEffectStyleSystemMaterialDark), + @"systemThickMaterialDark" : @(RNSBlurEffectStyleSystemThickMaterialDark), + @"systemChromeMaterialDark" : @(RNSBlurEffectStyleSystemChromeMaterialDark), }]; } #endif @@ -1182,6 +1187,6 @@ + (NSMutableDictionary *)blurEffectsForIOSVersion UINavigationItemBackButtonDisplayModeDefault, integerValue) -RCT_ENUM_CONVERTER(UIBlurEffectStyle, ([self blurEffectsForIOSVersion]), UIBlurEffectStyleExtraLight, integerValue) +RCT_ENUM_CONVERTER(RNSBlurEffectStyle, ([self blurEffectsForIOSVersion]), RNSBlurEffectStyleNone, integerValue) @end diff --git a/src/fabric/ScreenStackHeaderConfigNativeComponent.ts b/src/fabric/ScreenStackHeaderConfigNativeComponent.ts index 3d0aca023e..f47d82ae0e 100644 --- a/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +++ b/src/fabric/ScreenStackHeaderConfigNativeComponent.ts @@ -18,6 +18,7 @@ type OnDetachedEvent = Readonly<{}>; type BackButtonDisplayMode = 'minimal' | 'default' | 'generic'; type BlurEffect = + | 'none' | 'extraLight' | 'light' | 'dark' @@ -68,7 +69,7 @@ export interface NativeProps extends ViewProps { backButtonDisplayMode?: WithDefault; hideBackButton?: boolean; backButtonInCustomView?: boolean; - blurEffect?: WithDefault; + blurEffect?: WithDefault; // TODO: implement this props on iOS topInsetEnabled?: boolean; } diff --git a/src/types.tsx b/src/types.tsx index a40cbdeb76..2af4400d75 100644 --- a/src/types.tsx +++ b/src/types.tsx @@ -42,6 +42,7 @@ export type StackAnimationTypes = | 'ios_from_right' | 'ios_from_left'; export type BlurEffectTypes = + | 'none' | 'extraLight' | 'light' | 'dark'