import { type ReactNode, type RefObject } from 'react';
declare const MODAL_SIZE_CLASS: {
    readonly md: "max-w-lg";
    readonly lg: "max-w-3xl";
    /** Wide form dialogs (post/page field editors) — body scrolls inside the shell. */
    readonly xl: "flex max-h-[min(92vh,880px)] max-w-5xl flex-col";
};
export type ModalSize = keyof typeof MODAL_SIZE_CLASS;
export interface ModalProps {
    open: boolean;
    onClose: () => void;
    title: string;
    children: ReactNode;
    actions?: ReactNode;
    /** Dialog width preset. Defaults to `md` (512px). */
    size?: ModalSize;
    /**
     * Accessible description for the dialog, announced after the title. Optional —
     * omit when the body content is self-explanatory.
     */
    description?: string;
    /**
     * Element to focus when the dialog opens, instead of Radix's default
     * (the first tabbable element, which is the header close button). Use for
     * form dialogs where the user should land in the first input.
     */
    initialFocusRef?: RefObject<HTMLElement | null>;
    /**
     * When set, overlay click, Escape, and the header X invoke this instead of
     * closing immediately — use to confirm before discarding unsaved edits.
     * The dialog stays open until the parent calls `onClose()`.
     */
    onDismiss?: () => void;
}
/**
 * The canonical admin modal. Built on Radix `Dialog`, which provides the
 * accessibility contract for free: focus is trapped while open and restored to
 * the trigger on close, Escape and overlay-click dismiss, the surface is
 * exposed as `role="dialog"` + `aria-modal`, and the title/description are wired
 * via `aria-labelledby`/`aria-describedby`.
 *
 * The portal mounts inside `.actuate-admin` (see `adminPortalContainer`) so the
 * dialog inherits theme tokens and dark mode instead of rendering unstyled on
 * `document.body`.
 */
export declare function Modal({ open, onClose, title, children, actions, size, description, initialFocusRef, onDismiss, }: ModalProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=Modal.d.ts.map