import type { ReactNode } from "react";
export interface ModalProps {
    /** Whether the modal is currently open. */
    open: boolean;
    /** Called whenever the modal open state changes. */
    onOpenChange: (open: boolean) => void;
    /** Modal content rendered inside the dialog. */
    children: ReactNode;
    /** Accessible label for the dialog when no labelled title is provided. */
    "aria-label"?: string;
    /** ID of the element that labels the dialog. */
    "aria-labelledby"?: string;
}
export interface ModalContainerClassNames {
    container?: string;
    overlay?: string;
    content?: string;
}
export interface ModalContainerProps {
    /** Modal sections rendered inside the container shell. */
    children: ReactNode;
    /** Max width applied to the dialog surface. */
    maxWidth?: string;
    /** Class name overrides for the modal shell slots. */
    classNames?: ModalContainerClassNames;
    /** Accessible label for the dialog shell when needed. */
    "aria-label"?: string;
    /** ID of the element that labels the dialog shell. */
    "aria-labelledby"?: string;
}
export interface ModalHeaderClassNames {
    root?: string;
    container?: string;
    title?: string;
    titleContainer?: string;
    subtitle?: string;
    close?: string;
}
export interface ModalHeaderProps {
    /** Primary title rendered in the modal header. */
    title?: string;
    /** Secondary text rendered below the title. */
    subtitle?: string;
    /** Optional content rendered before the title block. */
    leftElement?: ReactNode;
    /** Optional content rendered at the far end of the header. */
    rightElement?: ReactNode;
    /** Whether to hide the default close button. */
    hideClose?: boolean;
    /** Custom icon or element used for the close affordance. */
    closeIcon?: ReactNode;
    /** Class name overrides for header slots. */
    classNames?: ModalHeaderClassNames;
    /** Additional custom content rendered inside the header. */
    children?: ReactNode;
    /** Whether to hide the header bottom border. */
    hideBorder?: boolean;
}
export interface ModalBodyClassNames {
    root?: string;
}
export interface ModalBodyProps {
    /** Main body content rendered inside the modal. */
    children: ReactNode;
    /** Class name overrides for the body wrapper. */
    classNames?: ModalBodyClassNames;
}
export interface ModalFooterClassNames {
    root?: string;
}
export interface ModalFooterProps {
    /** Footer content rendered at the bottom of the modal. */
    children: ReactNode;
    /** Class name overrides for the footer wrapper. */
    classNames?: ModalFooterClassNames;
    /** Whether to hide the footer top border. */
    hideBorder?: boolean;
}
