import { type RefObject } from 'react'; import type { PagePanelSizes, PanelName } from './page-types.js'; interface BasePagePanelState { ref: RefObject; isControlled: boolean; isDismissed: boolean; minWidth: number; breakpoint: number; } interface MainPagePanelState extends BasePagePanelState { isControlled: false; isDismissed: false; } /** @internal */ export interface PageLayoutState { sidebar: BasePagePanelState | null; main: MainPagePanelState | null; details: BasePagePanelState | null; } /** @internal */ export interface PageContext { containerSize: number; panels: PageLayoutState; registerPanel: (name: PanelName, options: { ref: RefObject; isControlled: boolean; isDismissed: boolean; minWidth: number; breakpoint: number; }) => void; removePanel: (name: PanelName) => void; dismissPanel: (name: PanelName) => void; expandPanel: (name: PanelName) => void; togglePanel: (name: PanelName) => void; getPanelSizes: () => PagePanelSizes; } /** @internal */ export declare const pageContext: import("react").Context; /** @internal */ export declare function usePageContext(): PageContext; interface Options { ref: RefObject; /** * Whether the dismissed state is controlled externally. * @defaultValue false */ isControlled?: boolean; /** * Whether the panel is dismissed (collapsed) or not. * @defaultValue false */ isDismissed?: boolean; /** * The minimum width (in px) the panel can be resized to. * @defaultValue 0 */ minWidth?: number; /** * The breakpoint (in px) at which the panel is displayed as a `Drawer`. * `0` means the panel will never be displayed as a `Drawer`. * @defaultValue 0 */ breakpoint?: number; } /** @internal */ export declare function useRegisterPagePanel(name: PanelName, options: Options): BasePagePanelState | MainPagePanelState | null; export {};