expo-router
Version:
Expo Router is a file-based router for React Native and web applications.
72 lines (71 loc) • 3.83 kB
TypeScript
import React from 'react';
import { type ViewProps } from 'react-native';
import { type TabsHostProps, type TabsScreenProps } from 'react-native-screens';
import type { NativeTabOptions, NativeTabsViewProps } from './types';
export declare const TabsScreen: React.ComponentType<TabsScreenProps & Pick<ViewProps, "nativeID" | "pointerEvents">>;
export declare function useSelectedScreenKey({ focusedIndex, provenance, tabs, }: Pick<NativeTabsViewProps, 'focusedIndex' | 'provenance' | 'tabs'>): {
selectedScreenKey: string;
provenance: number;
};
export declare function useOnTabSelectedHandler(onTabChange: NativeTabsViewProps['onTabChange']): NonNullable<TabsHostProps['onTabSelected']>;
export declare function useOnTabSelectionPreventedHandler(onTabChange: NativeTabsViewProps['onTabChange']): NonNullable<TabsHostProps['onTabSelectionPrevented']>;
/**
* Cross-platform fields used to render a single tab screen. Each platform
* extends this with its own appearance fields.
*/
export interface InternalTabScreenProps {
name: string;
isFocused: boolean;
options: NativeTabOptions;
contentRenderer: () => React.ReactNode;
}
export declare function useSharedScreenProps(props: InternalTabScreenProps): {
options: NativeTabOptions;
pointerEvents: "box-none" | "none";
title: string;
nativeIosOverrides: import("react-native-screens").TabsScreenPropsIOS | undefined;
nativeAndroidOverrides: import("react-native-screens").TabsScreenPropsAndroid | undefined;
nativeRestOverrides: {
children?: React.ReactNode;
style?: import("react-native").StyleProp<Pick<import("react-native").ViewStyle, "backgroundColor">>;
testID?: string | undefined | undefined;
accessibilityLabel?: string | undefined | undefined;
orientation?: import("react-native-screens").TabsScreenOrientation | undefined;
title?: string | undefined | undefined;
onWillAppear?: import("react-native-screens").TabsScreenEventHandler<import("react-native-screens/lib/typescript/components/tabs/screen").EmptyObject> | undefined;
onWillDisappear?: import("react-native-screens").TabsScreenEventHandler<import("react-native-screens/lib/typescript/components/tabs/screen").EmptyObject> | undefined;
preventNativeSelection?: boolean | undefined | undefined;
badgeValue?: string | undefined | undefined;
specialEffects?: {
repeatedTabSelection?: {
popToRoot?: boolean | undefined;
scrollToTop?: boolean | undefined;
} | undefined;
} | undefined | undefined;
tabBarItemTestID?: string | undefined | undefined;
tabBarItemAccessibilityLabel?: string | undefined | undefined;
onDidAppear?: import("react-native-screens").TabsScreenEventHandler<import("react-native-screens/lib/typescript/components/tabs/screen").EmptyObject> | undefined;
onDidDisappear?: import("react-native-screens").TabsScreenEventHandler<import("react-native-screens/lib/typescript/components/tabs/screen").EmptyObject> | undefined;
};
screenKey: string;
icon: {
sf?: import("sf-symbols-typescript").SFSymbol;
xcasset?: string;
drawable?: string;
} | {
src?: import("react-native").ImageSourcePropType;
renderingMode?: import("./types").IconRenderingMode;
} | undefined;
selectedIcon: {
sf?: import("sf-symbols-typescript").SFSymbol;
xcasset?: string;
drawable?: string;
} | {
src?: import("react-native").ImageSourcePropType;
renderingMode?: import("./types").IconRenderingMode;
} | undefined;
};
export declare function ScreenContent({ options, contentRenderer, }: {
options: NativeTabOptions;
contentRenderer: () => React.ReactNode;
}): React.JSX.Element;