import type { CSSProperties, VNodeChild } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; export type XyModalWidth = number | string; export type XyModalCloseSource = "close-button" | "keyboard" | "mask"; export type XyModalSemanticDom = "body" | "close" | "dialog" | "footer" | "header" | "mask" | "root" | "title" | "wrapper"; export interface XyModalSemanticProps { centered: boolean; closable: boolean; fullscreen: boolean; hasFooter: boolean; hasTitle: boolean; mask: boolean; open: boolean; width: XyModalWidth; } export type XyModalClassNames = XySemanticClassNames; export type XyModalStyles = XySemanticStyles; export interface XyModalProps { ariaLabel?: string; centered?: boolean; classNames?: XyModalClassNames; closable?: boolean; destroyOnHidden?: boolean; focusTriggerAfterClose?: boolean; fullscreen?: boolean; getContainer?: () => HTMLElement | null | undefined; keyboard?: boolean; mask?: boolean; maskClosable?: boolean; modelValue?: boolean; open?: boolean; styles?: XyModalStyles; teleport?: boolean; title?: string; width?: XyModalWidth; zIndex?: number; } export interface XyModalSlots { closeIcon?: () => VNodeChild; default?: () => VNodeChild; footer?: () => VNodeChild; title?: () => VNodeChild; } export type XyModalDialogStyle = CSSProperties;