interface DesktopModalProps { /** Shortcut: renders an automatic header. Prefer composing with DesktopModal.Header. */ title?: React.ReactNode; /** @internal Fallback title from Modal.tsx wrapper. */ rootTitle?: React.ReactNode; /** Modal content. Function form receives context passed via open(). */ children: React.ReactNode | ((context: TContext | null) => React.ReactNode); /** Called after the modal closes. Receives the context at close time. */ onClose?: (context: TContext | null) => void; className?: string; /** @deprecated Use zIndex instead */ zindex?: number; /** z-index for overlay and panel. @default 40 */ zIndex?: number; /** Render inline instead of portaling to document.body. */ attachToParent?: boolean; /** Show debug borders/labels on each slot for development. @default false */ debugMode?: boolean; /** Safe margin around the panel in px. @default 24 */ safeMarginSize?: number; /** 'content': Content scrolls independently. 'dialog': entire panel scrolls. @default 'content' */ scroll?: "content" | "dialog"; /** Max width constraint. medium: 740px, large: 1224px. @default 'large' */ size?: "medium" | "large"; /** Unmount children after close animation. Frees memory. @default true */ unmountChildrenOnClose?: boolean; /** Panel takes full width. @default true */ expandX?: boolean; /** Panel takes max height, Content auto-fills. @default false */ expandY?: boolean; /** Hide the close button in the header. @default false */ hideCloseButton?: boolean; /** Show backdrop overlay (dark background + blur). @default true */ modal?: boolean; /** Close when clicking outside the panel. Works with or without backdrop. @default true */ closeOnOverlayClick?: boolean; /** Close on Escape key. Set false for non-dismissable flows. @default true */ closeOnEscape?: boolean; /** Controlled open state. Changes trigger open/close. Internal closes still work and notify via onClose. */ isOpen?: boolean; } export interface DesktopModalHandle { /** Open the modal. Optionally pass context accessible via function children. */ open: (context?: TContext, snap?: string | number | "auto") => void; /** Close the modal. Triggers onClose callback. */ close: () => void; /** Whether the modal is currently open. Not reactive — use useModalState for reactive. */ isOpen: boolean; /** Get the current context value. */ getContext: () => TContext | null; /** Returns 0 on desktop. Use getChromeHeight on mobile for layout calculations. */ getChromeHeight: () => number; /** Subscribe to open/close changes. Returns unsubscribe function. */ subscribeOpenChange: (callback: (open: boolean) => void) => () => void; } type DesktopModalComponent = (props: DesktopModalProps & React.RefAttributes>) => React.ReactElement | null; type DesktopModalComponentWithDisplayName = DesktopModalComponent & { displayName?: string; }; interface ModalContentProps { children?: React.ReactNode; className?: string; /** @deprecated No effect — panel flex-col gives full width. Use root expandX. */ expandX?: boolean; expandY?: boolean; } declare const ModalContent: import('react').MemoExoticComponent<({ children, className, expandX, expandY: localExpandY }: ModalContentProps) => import("react/jsx-runtime").JSX.Element>; interface ModalTitleProps { children?: React.ReactNode; className?: string; /** @deprecated No effect — use root expandX. */ expandX?: boolean; expandY?: boolean; } declare const ModalTitle: import('react').MemoExoticComponent<({ children, className, expandX, expandY }: ModalTitleProps) => import("react/jsx-runtime").JSX.Element>; interface ModalHeaderProps { children?: React.ReactNode; className?: string; title?: React.ReactNode; actions?: React.ReactNode; /** @deprecated No effect — use root expandX. */ expandX?: boolean; expandY?: boolean; } declare const ModalHeader: import('react').MemoExoticComponent<({ children, className, title, actions, expandX, expandY, }: ModalHeaderProps) => import("react/jsx-runtime").JSX.Element>; interface ModalHeaderActionsProps { children?: React.ReactNode; className?: string; } declare const ModalHeaderActions: import('react').MemoExoticComponent<({ children, className }: ModalHeaderActionsProps) => import("react/jsx-runtime").JSX.Element>; interface ModalFooterProps { children?: React.ReactNode; className?: string; /** @deprecated No effect — use root expandX. */ expandX?: boolean; expandY?: boolean; } declare const ModalFooter: import('react').MemoExoticComponent<({ children, className, expandX, expandY }: ModalFooterProps) => import("react/jsx-runtime").JSX.Element>; type ModalCompoundComponent = DesktopModalComponentWithDisplayName & { Content: typeof ModalContent; Header: typeof ModalHeader; Footer: typeof ModalFooter; Title: typeof ModalTitle; HeaderActions: typeof ModalHeaderActions; }; declare const DesktopModal: ModalCompoundComponent; export default DesktopModal;