import React from 'react';
import { Variants } from 'motion/react';
/**
 * Overlay positioning options
 */
export type OverlayPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'none';
/**
 * Custom animation variants for overlay and content
 */
export interface OverlayAnimations {
    /** Animation variants for the overlay backdrop */
    overlay?: Variants;
    /** Animation variants for the content container */
    content?: Variants;
}
/**
 * Overlay component props
 */
export interface OverlayProps {
    /** Whether the overlay is currently open */
    isOpen: boolean;
    /** Callback to close the overlay */
    onClose: () => void;
    /** Whether clicking the overlay backdrop should close it (default: true) */
    closeOnOverlayClick?: boolean;
    /** Whether pressing Escape should close the overlay (default: true) */
    closeOnEsc?: boolean;
    /** Whether to lock body scroll when overlay is open (default: true) */
    enableScrollLock?: boolean;
    /** Position of the content within the overlay (default: 'center') */
    position?: OverlayPosition;
    /** Additional class name for the overlay backdrop */
    overlayClassName?: string;
    /** Additional class name for the content container */
    contentClassName?: string;
    /** Inline styles for the content container (useful for dynamic positioning) */
    contentStyle?: React.CSSProperties;
    /** Custom animation variants for overlay and content */
    animations?: OverlayAnimations;
    /** Animation duration overrides */
    animationDuration?: {
        /** Enter animation duration in seconds (default: 0.2) */
        enter?: number;
        /** Exit animation duration in seconds (default: 0.15) */
        exit?: number;
    };
    /** Target element for portal rendering (default: document.body) */
    portalTarget?: Element | null;
    /** ARIA role for the content container (e.g. 'dialog', 'alertdialog') */
    role?: string;
    /** ID of the element that labels the content */
    ariaLabelledBy?: string;
    /** ID of the element that describes the content */
    ariaDescribedBy?: string;
    /** Whether the content is a modal (adds aria-modal="true") */
    ariaModal?: boolean;
    /** Whether to trap focus within the content (default: true) */
    enableFocusTrap?: boolean;
    /** Overlay content */
    children: React.ReactNode;
}
