/** * Modal Component - wrapper around the native element providing * backdrop, scroll locking and keyboard interaction, without styling content. * Closing runs through a cancellable `beforeclose` event (unsaved-state flows). */ /** * Modal attributes configuration */ export interface ModalAttributes { open: boolean; backdrop: boolean; closeOnOutsideClick: boolean; closeOnEscape: boolean; } /** * How a modal close was triggered. */ export type ModalCloseReason = 'programmatic' | 'backdrop' | 'escape' | 'close-button' | 'native'; /** * Modal close event detail */ export interface ModalCloseDetail { reason: ModalCloseReason; returnValue?: string; } /** * Modal beforeclose event detail — fired *before* the modal closes. The event * is cancellable; consumers can call `event.preventDefault()` to abort the * close, render their own UI (e.g. a styled "Discard changes?" prompt), and * later call `.hide()` themselves when ready. */ export interface ModalBeforeCloseDetail { reason: ModalCloseReason; } /** * TyModal Web Component */ export declare class TyModal extends HTMLElement { /** Programmatic API methods */ show?: () => void; /** * Close the modal. Without `force`, fires `beforeclose` first — consumers * can `preventDefault()` to abort. With `force: true`, bypasses the * cancellable event; used when the consumer has already obtained user * consent through their own UI. */ hide?: (opts?: { force?: boolean; }) => void; static get observedAttributes(): string[]; get open(): boolean; set open(v: boolean); get backdrop(): boolean; set backdrop(v: boolean); /** @deprecated Use preventOutsideClick — prevent-* wins when both are set. */ get closeOnOutsideClick(): boolean; set closeOnOutsideClick(v: boolean); /** @deprecated Use preventEscape — prevent-* wins when both are set. */ get closeOnEscape(): boolean; set closeOnEscape(v: boolean); get preventOutsideClick(): boolean; set preventOutsideClick(v: boolean); get preventEscape(): boolean; set preventEscape(v: boolean); constructor(); connectedCallback(): void; disconnectedCallback(): void; attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null): void; }