import { ParamListBase, StackRouter as RNStackRouter, StackNavigationState, type RouteProp } from '@react-navigation/native'; import { NativeStackNavigationEventMap, NativeStackNavigationOptions } from '@react-navigation/native-stack'; import React, { ComponentProps } from 'react'; import { type StackScreenProps, StackSearchBar } from './stack-utils'; import { Protected } from '../views/Protected'; /** * We extend NativeStackNavigationOptions with our custom props * to allow for several extra props to be used on web, like modalWidth */ export type ExtendedStackNavigationOptions = NativeStackNavigationOptions & { webModalStyle?: { /** * Override the width of the modal (px or percentage). Only applies on web platform. * @platform web */ width?: number | string; /** * Override the height of the modal (px or percentage). Applies on web desktop. * @platform web */ height?: number | string; /** * Minimum height of the desktop modal (px or percentage). Overrides the default 640px clamp. * @platform web */ minHeight?: number | string; /** * Minimum width of the desktop modal (px or percentage). Overrides the default 580px. * @platform web */ minWidth?: number | string; /** * Override the border of the desktop modal (any valid CSS border value, e.g. '1px solid #ccc' or 'none'). * @platform web */ border?: string; /** * Override the overlay background color (any valid CSS color or rgba/hsla value). * @platform web */ overlayBackground?: string; /** * Override the modal shadow filter (any valid CSS filter value, e.g. 'drop-shadow(0 4px 8px rgba(0,0,0,0.1))' or 'none'). * @platform web */ shadow?: string; }; }; declare const RNStack: React.ForwardRefExoticComponent & import("@react-navigation/native").DefaultRouterOptions & { children: React.ReactNode; layout?: ((props: { state: StackNavigationState; navigation: import("@react-navigation/native").NavigationHelpers; descriptors: Record, NativeStackNavigationOptions, NativeStackNavigationEventMap>, RouteProp>>; children: React.ReactNode; }) => React.ReactElement) | undefined; screenListeners?: Partial<{ transitionStart: import("@react-navigation/native").EventListenerCallback>, "transitionStart", unknown>; transitionEnd: import("@react-navigation/native").EventListenerCallback>, "transitionEnd", unknown>; gestureCancel: import("@react-navigation/native").EventListenerCallback>, "gestureCancel", unknown>; sheetDetentChange: import("@react-navigation/native").EventListenerCallback>, "sheetDetentChange", unknown>; focus: import("@react-navigation/native").EventListenerCallback>, "focus", unknown>; blur: import("@react-navigation/native").EventListenerCallback>, "blur", unknown>; state: import("@react-navigation/native").EventListenerCallback>, "state", unknown>; beforeRemove: import("@react-navigation/native").EventListenerCallback>, "beforeRemove", true>; }> | ((props: { route: RouteProp; navigation: import("@react-navigation/native-stack").NativeStackNavigationProp; }) => Partial<{ transitionStart: import("@react-navigation/native").EventListenerCallback>, "transitionStart", unknown>; transitionEnd: import("@react-navigation/native").EventListenerCallback>, "transitionEnd", unknown>; gestureCancel: import("@react-navigation/native").EventListenerCallback>, "gestureCancel", unknown>; sheetDetentChange: import("@react-navigation/native").EventListenerCallback>, "sheetDetentChange", unknown>; focus: import("@react-navigation/native").EventListenerCallback>, "focus", unknown>; blur: import("@react-navigation/native").EventListenerCallback>, "blur", unknown>; state: import("@react-navigation/native").EventListenerCallback>, "state", unknown>; beforeRemove: import("@react-navigation/native").EventListenerCallback>, "beforeRemove", true>; }>) | undefined; screenOptions?: NativeStackNavigationOptions | ((props: { route: RouteProp; navigation: import("@react-navigation/native-stack").NativeStackNavigationProp; theme: ReactNavigation.Theme; }) => NativeStackNavigationOptions) | undefined; screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs>) => React.ReactElement) | undefined; UNSTABLE_router?: (>(original: import("@react-navigation/native").Router, Action>) => Partial, Action>>) | undefined; UNSTABLE_routeNamesChangeBehavior?: "firstMatch" | "lastUnhandled"; } & { id?: undefined; }, "children"> & Partial & import("@react-navigation/native").DefaultRouterOptions & { children: React.ReactNode; layout?: ((props: { state: StackNavigationState; navigation: import("@react-navigation/native").NavigationHelpers; descriptors: Record, NativeStackNavigationOptions, NativeStackNavigationEventMap>, RouteProp>>; children: React.ReactNode; }) => React.ReactElement) | undefined; screenListeners?: Partial<{ transitionStart: import("@react-navigation/native").EventListenerCallback>, "transitionStart", unknown>; transitionEnd: import("@react-navigation/native").EventListenerCallback>, "transitionEnd", unknown>; gestureCancel: import("@react-navigation/native").EventListenerCallback>, "gestureCancel", unknown>; sheetDetentChange: import("@react-navigation/native").EventListenerCallback>, "sheetDetentChange", unknown>; focus: import("@react-navigation/native").EventListenerCallback>, "focus", unknown>; blur: import("@react-navigation/native").EventListenerCallback>, "blur", unknown>; state: import("@react-navigation/native").EventListenerCallback>, "state", unknown>; beforeRemove: import("@react-navigation/native").EventListenerCallback>, "beforeRemove", true>; }> | ((props: { route: RouteProp; navigation: import("@react-navigation/native-stack").NativeStackNavigationProp; }) => Partial<{ transitionStart: import("@react-navigation/native").EventListenerCallback>, "transitionStart", unknown>; transitionEnd: import("@react-navigation/native").EventListenerCallback>, "transitionEnd", unknown>; gestureCancel: import("@react-navigation/native").EventListenerCallback>, "gestureCancel", unknown>; sheetDetentChange: import("@react-navigation/native").EventListenerCallback>, "sheetDetentChange", unknown>; focus: import("@react-navigation/native").EventListenerCallback>, "focus", unknown>; blur: import("@react-navigation/native").EventListenerCallback>, "blur", unknown>; state: import("@react-navigation/native").EventListenerCallback>, "state", unknown>; beforeRemove: import("@react-navigation/native").EventListenerCallback>, "beforeRemove", true>; }>) | undefined; screenOptions?: NativeStackNavigationOptions | ((props: { route: RouteProp; navigation: import("@react-navigation/native-stack").NativeStackNavigationProp; theme: ReactNavigation.Theme; }) => NativeStackNavigationOptions) | undefined; screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs>) => React.ReactElement) | undefined; UNSTABLE_router?: (>(original: import("@react-navigation/native").Router, Action>) => Partial, Action>>) | undefined; UNSTABLE_routeNamesChangeBehavior?: "firstMatch" | "lastUnhandled"; } & { id?: undefined; }, "children">> & React.RefAttributes> & { Screen: (props: import("../useScreens").ScreenProps, NativeStackNavigationEventMap>) => null; Protected: typeof Protected; }; /** * React Navigation matches a screen by its name or a 'getID' function that uniquely identifies a screen. * When a screen has been uniquely identified, the Stack can only have one instance of that screen. * * Expo Router allows for a screen to be matched by name and path params, a 'getID' function or a singular id. * * Instead of reimplementing the entire StackRouter, we can override the getStateForAction method to handle the singular screen logic. * */ export declare const stackRouterOverride: NonNullable['UNSTABLE_router']>; /** * Renders a native stack navigator. * * @hideType */ declare const Stack: ((props: ComponentProps) => React.JSX.Element) & { Screen: (({ children, options, ...rest }: StackScreenProps) => React.JSX.Element) & { Title: typeof import("./stack-utils").StackScreenTitle; BackButton: typeof import("./stack-utils").StackScreenBackButton; }; Protected: React.FunctionComponent; Header: typeof import("./stack-utils/StackHeaderComponent").StackHeaderComponent; SearchBar: typeof StackSearchBar; Toolbar: { (props: import("./stack-utils").StackToolbarProps): React.JSX.Element; Button: React.FC; Menu: React.FC; MenuAction: React.FC; SearchBarSlot: React.FC; Spacer: React.FC; View: React.FC; Label: React.FC; Icon: React.FC; Badge: React.FC; }; }; export default Stack; export declare const StackRouter: typeof RNStackRouter; //# sourceMappingURL=StackClient.d.ts.map