UNPKG

react-native-screens

Version:
292 lines • 11.5 kB
import type { ColorValue, TextStyle } from 'react-native'; import type { UserInterfaceStyle, BlurEffect } from '../../shared/types'; import type { PlatformIconIOS } from '../../../types'; export type TabsScreenBlurEffect = BlurEffect | 'systemDefault'; export type TabsScreenSystemItem = 'bookmarks' | 'contacts' | 'downloads' | 'favorites' | 'featured' | 'history' | 'more' | 'mostRecent' | 'mostViewed' | 'recents' | 'search' | 'topRated'; export interface TabsScreenAppearanceIOS { /** * @summary Specifies the appearance of tab bar items when they are in stacked layout. * * Tab bar items in stacked layout have the icon above the title. * Stacked layout is used e.g. on the iPhone in portrait orientation. * * @platform ios */ stacked?: TabsScreenItemAppearanceIOS | undefined; /** * @summary Specifies the appearance of tab bar items when they are in inline layout. * * Tab bar items in inline layout have the icon next to the title. * Inline layout is used in regular-width environments, e.g. in landscape orientation on the iPhone 16 Pro Max. * * Complete list of size classes for iOS and iPadOS devices is available in Apple's Human Interface Guidelines: * @see {@link https://developer.apple.com/design/human-interface-guidelines/layout#iOS-iPadOS-device-size-classes|HIG: Device size classes} * * @platform ios */ inline?: TabsScreenItemAppearanceIOS | undefined; /** * @summary Specifies the appearance of tab bar items when they are in compact inline layout. * * Tab bar items in compact inline layout have the icon next to the title. * Compact inline layout is used in compact-width environments, e.g. in landscape orientation on the iPhone 16 Pro. * * Complete list of size classes for iOS and iPadOS devices is available in Apple's Human Interface Guidelines: * @see {@link https://developer.apple.com/design/human-interface-guidelines/layout#iOS-iPadOS-device-size-classes|HIG: Device size classes} * * @platform ios */ compactInline?: TabsScreenItemAppearanceIOS | undefined; /** * @summary Specifies the background color for the entire tab bar when tab screen is selected. * * This property does not affect the tab bar starting from iOS 26. * * @platform ios * @supported iOS 18 or lower */ tabBarBackgroundColor?: ColorValue | undefined; /** * @summary Specifies the blur effect applied to the tab bar when tab screen is selected. * * Works with backgroundColor's alpha < 1. * * This property does not affect the tab bar starting from iOS 26. * * The following values are currently supported: * * - `none` - disables blur effect * - `systemDefault` - uses UIKit's default tab bar blur effect * - one of styles mapped from UIKit's UIBlurEffectStyle, e.g. `systemUltraThinMaterial` * * Complete list of possible blur effect styles is available in the official UIKit documentation: * @see {@link https://developer.apple.com/documentation/uikit/uiblureffect/style|UIBlurEffect.Style} * * @default systemDefault * * @platform ios * @supported iOS 18 or lower */ tabBarBlurEffect?: TabsScreenBlurEffect | undefined; /** * @summary Specifies the shadow color for the tab bar when tab screen is selected. * * This property does not affect the tab bar starting from iOS 26. * * @platform ios * @supported iOS 18 or lower */ tabBarShadowColor?: ColorValue | undefined; } export interface TabsScreenItemAppearanceIOS { /** * Defines appearance for all tab bar items which are in their enabled, unselected and unfocused state. * The color scheme is determined by the configuration of the currently selected tab. * * @platform ios */ normal?: TabsScreenItemStateAppearanceIOS | undefined; /** * Defines appearance for the tab bar item that is currently active. * The appearance is determined by the configuration of the currently selected tab itself. * * @platform ios */ selected?: TabsScreenItemStateAppearanceIOS | undefined; /** * Defines appearance for a tab bar item when it receives focus. * The appearance is determined by the configuration of the currently selected tab. * * @platform ios */ focused?: TabsScreenItemStateAppearanceIOS | undefined; /** * Defines appearance for tab bar items when they are disabled. * The appearance is determined by the configuration of the currently selected tab. * * @platform ios */ disabled?: TabsScreenItemStateAppearanceIOS | undefined; } export interface TabsScreenItemStateAppearanceIOS { /** * @summary Specifies the font family used for the title of each tab bar item * when tab screen is selected. * * @platform ios */ tabBarItemTitleFontFamily?: TextStyle['fontFamily'] | undefined; /** * @summary Specifies the font size used for the title of each tab bar item * when tab screen is selected. * * @platform ios */ tabBarItemTitleFontSize?: TextStyle['fontSize'] | undefined; /** * @summary Specifies the font weight used for the title of each tab bar item * when tab screen is selected. * * @platform ios */ tabBarItemTitleFontWeight?: TextStyle['fontWeight'] | undefined; /** * @summary Specifies the font style used for the title of each tab bar item * when tab screen is selected. * * @platform ios */ tabBarItemTitleFontStyle?: TextStyle['fontStyle'] | undefined; /** * @summary Specifies the font color used for the title of each tab bar item * when tab screen is selected. * * Overrides the color defined in `tabBarTintColor` and `tabBarItemIconColor`. * * @platform ios */ tabBarItemTitleFontColor?: TextStyle['color'] | undefined; /** * @summary Specifies the title offset for each tab bar item when tab screen * is selected. * * Depending on the iOS version and the device's interface orientation, * this setting may affect the alignment of the text, badge and icon. * * @platform ios */ tabBarItemTitlePositionAdjustment?: { horizontal?: number | undefined; vertical?: number | undefined; } | undefined; /** * @summary Specifies the icon color for each tab bar item when tab screen * is selected. * * This also impacts the title text color. * * Starting from iOS 26, it only applies to selected tab bar item. Other items * adopt a dark or light appearance depending on the theme of the tab bar. * * Is overridden by `tabBarItemTitleFontColor` (for title text color). * Overrides `tabBarTintColor`. * * @platform ios */ tabBarItemIconColor?: ColorValue | undefined; /** * @summary Specifies the background color of badges for each tab bar item * when tab screen is selected. * * @platform ios */ tabBarItemBadgeBackgroundColor?: ColorValue | undefined; } export interface TabsScreenPropsIOS { /** * @summary Specifies the standard tab bar appearance. * * Allows to customize the appearance depending on the tab bar item layout (stacked, * inline, compact inline) and state (normal, selected, focused, disabled). * * @platform ios */ standardAppearance?: TabsScreenAppearanceIOS | undefined; /** * @summary Specifies the tab bar appearace when edge of scrollable content aligns * with the edge of the tab bar. * * Allows to customize the appearance depending on the tab bar item layout (stacked, * inline, compact inline) and state (normal, selected, focused, disabled). * * If this property is `undefined`, UIKit uses `standardAppearance`, modified to * have a transparent background. * * @platform ios */ scrollEdgeAppearance?: TabsScreenAppearanceIOS | undefined; /** * @summary Specifies the icon for the tab bar item. * * Supported values: * - `{ type: 'imageSource', imageSource }` * Uses an image from the provided resource. * - `{ type: 'sfSymbol', name }` * Uses an SF Symbol with the specified name. * - `{ type: 'xcasset', name }` * Uses asset from Xcassets. * - `{ type: 'templateSource', templateSource }` * Uses the provided image as a template image. * The icon color will depend on the current state * of the tab bar item and icon color-related props. * * If no `selectedIcon` is provided, this icon will also * be used as the selected state icon. * * @platform ios */ icon?: PlatformIconIOS | undefined; /** * @summary Specifies the icon for tab bar item when it is selected. * * Supports the same values as `icon` property. * * To use `selectedIcon`, `icon` must also be provided. * * @platform ios */ selectedIcon?: PlatformIconIOS | undefined; /** * @summary System-provided tab bar item with predefined icon and title * * Uses Apple's built-in tab bar items (e.g., bookmarks, contacts, downloads) with * standard iOS styling and localized titles. Custom `icon` or `selectedIcon` * properties will override the system icon, but the system-defined title cannot * be customized. * * @see {@link https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem|UITabBarItem.SystemItem} * * @platform ios */ systemItem?: TabsScreenSystemItem | undefined; /** * @summary Specifies if `contentInsetAdjustmentBehavior` of first ScrollView * in first descendant chain from tab screen should be overridden back from `never` * to `automatic`. * * By default, `react-native`'s ScrollView has `contentInsetAdjustmentBehavior` * set to `never` instead of UIKit-default (which is `automatic`). This * prevents ScrollViews from respecting navigation bar insets. * When this prop is set to `true`, `automatic` behavior is reverted. * * Supported only on Fabric. * * @default true * * @platform ios */ overrideScrollViewContentInsetAdjustmentBehavior?: boolean | undefined; /** * @summary Allows to override system appearance for the tab bar. * * Does not support dynamic changes to the prop value for the currently visible screen. * * Please note that this prop is marked as **experimental** and might be subject to breaking changes or even removal. * Consider using `colorScheme` on `TabsHost` instead. * * The following values are currently supported: * - `unspecified` - an unspecified interface style, * - `light` - the light interface style, * - `dark` - the dark interface style. * * The supported values correspond to the official UIKit documentation: * * @see {@link https://developer.apple.com/documentation/uikit/uiuserinterfacestyle|UIUserInterfaceStyle} * * @default unspecified * * @platform ios */ experimental_userInterfaceStyle?: UserInterfaceStyle | undefined; } //# sourceMappingURL=TabsScreen.ios.types.d.ts.map