import * as react_jsx_runtime from 'react/jsx-runtime'; import { ReactNode } from 'react'; interface EscapeShaderProps { children: ReactNode; /** * When true, the ghost is `position: absolute; inset: 0`, so it does * NOT contribute to layout but still has the dimensions of the nearest * positioned ancestor. Useful when the escaped subtree is positioned * absolutely (e.g. floating overlays) and the parent already reserves * the space some other way. Default: false (ghost is in flow). */ fill?: boolean; /** * Controls `pointer-events` on the portal wrapper in the escape layer. * Default `"auto"` (escaped DOM is clickable). Set to `"none"` for * purely visual overlays whose area should pass clicks through to * elements behind them. Default: "auto". */ pointerEvents?: "auto" | "none"; } /** * Renders children outside the shader pipeline while maintaining layout position. * * Ghost (visibility:hidden) stays in the overlay for correct layout participation. * Real children are portaled above the canvas via the escape layer. * * Trade-off: children render twice (ghost + portal). For simple components * (buttons, badges, links) this is negligible. */ declare function EscapeShader({ children, fill, pointerEvents, }: EscapeShaderProps): react_jsx_runtime.JSX.Element; export { EscapeShader as E, type EscapeShaderProps as a };