import { Type } from '@angular/core'; import { Color } from '@ionic/core'; /** * Modal size preset. */ export type ModalSize = 'small' | 'medium' | 'large' | 'full' | 'auto'; /** * Modal breakpoint configuration for sheet modals. */ export interface ModalBreakpoint { /** Initial breakpoint (0-1) */ initialBreakpoint?: number; /** Available breakpoints */ breakpoints?: number[]; /** Can dismiss by dragging below threshold */ canDismiss?: boolean | (() => boolean | Promise); /** Handle element */ handleBehavior?: 'cycle' | 'none'; /** Show handle */ showHandle?: boolean; } /** * Modal header configuration. */ export interface ModalHeader { /** Title text */ title?: string; /** Subtitle text */ subtitle?: string; /** Show close button */ showCloseButton?: boolean; /** Close button icon */ closeIcon?: string; /** Header color */ color?: Color; /** Custom CSS class */ cssClass?: string; } /** * Modal footer configuration. */ export interface ModalFooter { /** Footer buttons */ buttons?: ModalButton[]; /** Footer alignment */ alignment?: 'start' | 'center' | 'end' | 'space-between'; /** Custom CSS class */ cssClass?: string; } /** * Modal button configuration. */ export interface ModalButton { /** Button text */ text: string; /** Button role */ role?: 'cancel' | 'confirm' | 'destructive' | string; /** Button color */ color?: Color; /** Button fill */ fill?: 'clear' | 'outline' | 'solid'; /** Button size */ size?: 'small' | 'default' | 'large'; /** Custom CSS class */ cssClass?: string; /** Disabled state */ disabled?: boolean; /** Loading state */ loading?: boolean; /** Handler function */ handler?: (data?: any) => void | boolean | Promise; } /** * Metadata for creating a modal with a component. */ export interface ModalMetadata { /** Component to render in modal */ component: Type; /** Component inputs/props */ componentProps?: Partial; /** Unique identifier */ id?: string; /** Modal header configuration */ header?: ModalHeader; /** Modal footer configuration */ footer?: ModalFooter; /** Modal size */ size?: ModalSize; /** Custom width (overrides size) */ width?: string; /** Custom height (overrides size) */ height?: string; /** Show backdrop */ showBackdrop?: boolean; /** Backdrop dismiss */ backdropDismiss?: boolean; /** Enable keyboard close (ESC) */ keyboardClose?: boolean; /** CSS class for modal */ cssClass?: string; /** Animation mode */ mode?: 'ios' | 'md'; /** Enter animation */ enterAnimation?: any; /** Leave animation */ leaveAnimation?: any; /** Sheet modal breakpoints */ breakpoints?: ModalBreakpoint; /** Presenting element for card modal */ presentingElement?: HTMLElement; /** Can dismiss callback */ canDismiss?: boolean | (() => boolean | Promise); /** Animated */ animated?: boolean; } /** * Metadata for creating a simple content modal. */ export interface SimpleModalMetadata { /** Modal title */ title: string; /** Modal content (HTML or plain text) */ content: string; /** Modal size */ size?: ModalSize; /** Footer buttons */ buttons?: ModalButton[]; /** Show close button in header */ showCloseButton?: boolean; /** Backdrop dismiss */ backdropDismiss?: boolean; /** CSS class */ cssClass?: string; } /** * Result from modal dismissal. */ export interface ModalResult { /** Role of the dismissal (button role or 'backdrop') */ role?: string; /** Data returned from modal */ data?: T; } /** * Default modal sizes. */ export declare const MODAL_SIZES: Record; /** * Default modal buttons. */ export declare const DEFAULT_MODAL_CONFIRM_BUTTON: ModalButton; export declare const DEFAULT_MODAL_CANCEL_BUTTON: ModalButton;