import { EventEmitter } from '../../stencil-public-runtime';
export type ModalSize = 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'full';
export type ModalPlacement = 'center' | 'top';
/**
* @component BcmModal
* @description A flexible modal dialog component built on the native HTML Dialog API.
* Provides a powerful way to display content in a layer above the page with full keyboard and focus management.
*
* @slot - Main content area of the modal
* @slot header - Custom header content (overrides header-text prop)
* @slot helper - Custom helper text content (overrides helper-text prop)
* @slot footer - Footer content for action buttons
*
* @part dialog - The native dialog element
* @part container - The container wrapper for centering and scrolling
* @part modal - The main modal box
* @part header - The header section
* @part header-content - The content wrapper inside header
* @part title - The title heading element
* @part helper-text - The helper text paragraph
* @part close-button - The close button in header
* @part content - The main content area
* @part footer - The footer section
*
* @example
* ```html
*
*
*
Modal content goes here
*
*
*
*
*
*
*
*
Custom Header
*
Content here
*
*
*
*
*
*
*
*
*
Full screen content
*
*
*
* Content
*
* ```
*/
export declare class BcmModal {
host: HTMLBcmModalElement;
private dialogRef?;
/**
* Controls whether the modal is open or closed
*/
open: boolean;
/**
* The size of the modal
* - 'small': 400px
* - 'medium': 600px
* - 'large': 800px
* - 'xlarge': 1024px
* - 'xxlarge': 1200px
* - 'full': 100% width
*/
size: ModalSize;
/**
* The placement of the modal on the screen
* - 'center': Centered vertically and horizontally
* - 'top': Aligned to the top with 80px padding
*/
placement: ModalPlacement;
/**
* Controls backdrop behavior
* - true: Shows backdrop, modal can be closed by clicking outside
* - false: No backdrop
* - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
*/
backdrop: boolean | 'static';
/**
* Makes the modal take full width of the viewport (max-width: 100%)
*/
fullWidth: boolean;
/**
* Makes the modal take the full screen (100vw x 100vh, no border radius)
*/
fullScreen: boolean;
/**
* Text to display in the modal header
*/
headerText?: string;
/**
* Helper text to display below the header title
*/
helperText?: string;
/**
* Hides the header section completely
*/
noHeader: boolean;
/**
* Hides the footer section completely
*/
noFooter: boolean;
/**
* Allows closing the modal by clicking on the backdrop
*/
closeOnBackdrop: boolean;
/**
* Allows closing the modal by pressing the Escape key
*/
closeOnEscape: boolean;
isAnimating: boolean;
shake: boolean;
/**
* Emitted after the modal has opened
*/
bcmOpen: EventEmitter;
/**
* Emitted after the modal has closed
*/
bcmClose: EventEmitter;
/**
* Emitted before the modal opens. Can be cancelled by calling event.preventDefault()
*/
bcmBeforeOpen: EventEmitter;
/**
* Emitted before the modal closes. Can be cancelled by calling event.preventDefault()
*/
bcmBeforeClose: EventEmitter;
private modalClass;
handleOpenChange(isOpen: boolean): Promise;
handleClick(event: MouseEvent): void;
handleKeyDown(event: KeyboardEvent): void;
/**
* Programmatically opens the modal
*/
show(): Promise;
/**
* Programmatically closes the modal
*/
hide(): Promise;
/**
* Toggles the modal open/closed state
*/
toggle(): Promise;
private shakeModal;
private handleBackdropClick;
private handleDialogCancel;
private getModalStyle;
componentDidLoad(): void;
disconnectedCallback(): void;
render(): any;
}