import { ReactNode } from 'react'; /** * What a component can learn about the thing hosting it. * * A pane, a dockable tab and a bare `
` give a component very different * surroundings, and the difference that matters is whether a title bar has * already been drawn. Without this, a chat pane inside a `SidebarPane` renders * two headers and two close buttons. */ export interface IPaneHost { /** * The host already draws a title bar and a close affordance, so a hosted * component should not draw its own. */ chrome: boolean; /** Where the host sits, when it knows. Useful for choosing a layout. */ placement?: 'left' | 'right' | 'bottom' | 'tab'; } /** * Read the surrounding host, or `null` when there isn't one. * * Prefer {@link useHostChrome}, which folds in an explicit prop. */ export declare const usePaneHost: () => IPaneHost | null; /** * Whether this component should draw its own title bar. * * The host provides the *default*; an explicit prop always wins. That ordering * is deliberate — auto-detection keeps the common case free of configuration, * but a component that can only be told implicitly is one you cannot unit-test * without building a host around it, and cannot force when the detection is * wrong. * * @param explicit The component's own `chrome` prop, if the caller set one. */ export declare const useHostChrome: (explicit?: boolean) => boolean; export interface PaneHostProviderProps extends IPaneHost { /** Everything that should see this host. */ children: ReactNode; } /** * Declare that everything inside is hosted. * * `SidebarPane` and the shell's tab factory do this for you. Wrap your own * container in it if you draw a title bar and want hosted components to defer. * * @example * ```tsx * * * * * ``` */ export declare const PaneHostProvider: ({ children, ...host }: PaneHostProviderProps) => import("react/jsx-runtime").JSX.Element;