import { type ReactNode } from 'react'; /** * Creates a stable DOM element whose React subtree * survives parent re-mounts. Call `Source` once (outside any conditional * branches) to declare *what* to render, and place `Target` wherever the * content should appear in the DOM. * * Because the host `
` is created once (via `useStableHost`) and only * moved via `appendChild` in a `useLayoutEffect`, React never unmounts the * subtree when the layout switches between split / overlay / collapsed / * drawer modes. * * @example * ```tsx * const content = useTeleport(); * const panel = useTeleport(); * * // Always rendered – defines *what* goes into each slot. * main area * sidebar / details * * // Placed in the appropriate layout branch. * {mode === 'split' ? : null} * {mode === 'drawer' ? : null} * ``` * * @internal */ export declare function useTeleport(): { /** * Renders `children` into `host` via a React portal. * Must be rendered exactly **once** and must not be rendered conditionally. */ Source: ({ children }: { children: ReactNode; }) => import("react").ReactPortal; /** * Places the `host` element in the DOM at the point where this * component is mounted. When `Target` moves between different parents * the DOM node is re-appended without React unmounting it. * * Delegates to `TeleportTarget` — the same component used by call sites * that manage their own host node directly (e.g. `PageLayout`). */ Target: () => import("react/jsx-runtime").JSX.Element; };