UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

90 lines 2.99 kB
import type { ComponentType } from 'react'; import type { StackRender, StackRenderProps } from './web/ScreenRenderContext'; /** * Tab bar render component receives bottom-tabs' standard tabBar props plus * the children prop is omitted (tab bar replaces only the bar UI, not the * screens). The actual prop type from `@react-navigation/bottom-tabs` is * `BottomTabBarProps`; we re-export a structural-compatible type so the * registry can be typed without a hard dep on bottom-tabs. */ export type TabsRenderProps = { state: any; navigation: any; descriptors: any; insets: { top: number; right: number; bottom: number; left: number; }; }; export type TabsRenderComponent = ComponentType<TabsRenderProps>; export type TabsRender = { web?: TabsRenderComponent; ios?: TabsRenderComponent; android?: TabsRenderComponent; }; /** * Drawer sidebar render component. Receives the standard * `DrawerContentComponentProps` from `@react-navigation/drawer`. Replaces * the drawer's sidebar content (the list of items / nav UI) but not the * drawer chrome itself (overlay, gestures, animation). */ export type DrawerRenderProps = { state: any; navigation: any; descriptors: any; }; export type DrawerRenderComponent = ComponentType<DrawerRenderProps>; export type DrawerRender = { web?: DrawerRenderComponent; ios?: DrawerRenderComponent; android?: DrawerRenderComponent; }; /** * Global render configuration. Populated by `setupRendering()`, typically * called from One's setup file. Each navigator (Stack, Tabs) reads from * this registry as a fallback when no per-instance `render` prop is set. * * Per-instance render prop > per-route options.render > setupRendering global. */ export type RenderingConfig = { Stack?: StackRender; Tabs?: TabsRender; Drawer?: DrawerRender; }; /** * Register default render components for One's navigators. Call from your * setup file before the app renders. Settings are global - every `<Stack>` * and `<Tabs>` instance picks them up unless overridden via prop or * per-route options. * * @example * ```ts * // app/setup.ts * import { setupRendering } from 'one' * import { Sheet } from 'tamagui' * * setupRendering({ * Stack: { * web: ({ children, open, dismiss, sheetAllowedDetents }) => ( * <Sheet modal open={open} onOpenChange={(o) => !o && dismiss()} * snapPoints={sheetAllowedDetents}> * <Sheet.Overlay /> * <Sheet.Frame>{children}</Sheet.Frame> * </Sheet> * ), * }, * Tabs: { web: MyCustomTabBar }, * }) * ``` */ export declare function setupRendering(config: RenderingConfig): void; export declare function getRenderingConfig(): RenderingConfig; /** * For tests - clears the global registry. * @internal */ export declare function resetRenderingConfig(): void; export type { StackRender, StackRenderProps }; //# sourceMappingURL=renderingRegistry.d.ts.map