/**
* @license
* Copyright 2023 Nuraly, Laabidi Aymen
* SPDX-License-Identifier: MIT
*/
import { LitElement, nothing, type PropertyValues } from 'lit';
import { ModalSize, ModalPosition, ModalAnimation, ModalBackdrop } from './modal.types.js';
import { ModalDragHost, ModalKeyboardHost } from './controllers/index.js';
declare const NrModalElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement;
/**
* Versatile modal component with multiple sizes, animations, and enhanced functionality.
*
* @example
* ```html
*
*
* Modal content goes here
*
*
*
*
*
*
* Custom Header
*
* Modal content
*
* Cancel
* OK
*
*
* ```
*
* @fires modal-open - Modal opened
* @fires modal-close - Modal closed
* @fires modal-before-close - Before modal closes (cancelable)
* @fires modal-after-open - After modal opens
* @fires modal-escape - Escape key pressed
*
* @slot default - Modal body content
* @slot header - Custom header content
* @slot footer - Custom footer content
*/
export declare class NrModalElement extends NrModalElement_base implements ModalDragHost, ModalKeyboardHost {
static useShadowDom: boolean;
static styles: import("lit").CSSResult;
/** Whether the modal is open */
open: boolean;
/** Modal size (small, medium, large, xl) */
size: ModalSize;
/** Modal position (center, top, bottom) */
position: ModalPosition;
/** Animation type */
animation: ModalAnimation;
/** Backdrop behavior */
backdrop: ModalBackdrop;
/** Whether the modal can be closed */
closable: boolean;
/** Whether the modal can be dragged */
modalDraggable: boolean;
/** Whether the modal is resizable */
resizable: boolean;
/** Whether the modal is fullscreen */
fullscreen: boolean;
/** Modal title */
modalTitle: string;
/** Show close button in header */
showCloseButton: boolean;
/** Header icon */
headerIcon: string;
/** Z-index for the modal */
zIndex: number;
/** Custom width */
width: string;
/** Custom height */
height: string;
/** Dragging state */
isDragging: boolean;
/** Current X offset for dragging */
offsetX: number;
/** Current Y offset for dragging */
offsetY: number;
/** Animation state */
private animationState;
/** Previous focus element */
private previousActiveElement;
requiredComponents: string[];
private dragController;
private keyboardController;
connectedCallback(): void;
disconnectedCallback(): void;
willUpdate(changedProperties: PropertyValues): void;
private handleOpen;
private startOpenAnimation;
private getAnimationKeyframes;
private handleClose;
/**
* Opens the modal
*/
openModal(): void;
/**
* Closes the modal
*/
closeModal: () => void;
private handleBackdropClick;
private getBackdropClasses;
private getModalClasses;
private getModalStyles;
private renderHeader;
private renderFooter;
updated(): void;
private updateDataTheme;
render(): typeof nothing | import("lit-html").TemplateResult<1>;
}
export {};
//# sourceMappingURL=modal.component.d.ts.map