import { ParamListBase, StackRouter as RNStackRouter, StackNavigationState, type RouteProp } from '@react-navigation/native'; import { NativeStackNavigationEventMap, NativeStackNavigationOptions } from '@react-navigation/native-stack'; import { ComponentProps } from 'react'; 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: import("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; } & { 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; } & { id?: undefined; }, "children">> & import("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']>; declare const Stack: ((props: ComponentProps) => import("react").JSX.Element) & { Screen: (props: ComponentProps & { singular?: boolean; }) => null; Protected: import("react").FunctionComponent; }; export default Stack; export declare const StackRouter: typeof RNStackRouter; //# sourceMappingURL=StackClient.d.ts.map