import type { CSSProperties } from 'vue'; export type PopupPlacement = 'top' | 'left' | 'right' | 'bottom' | 'center'; export type PopupSource = 'close-btn' | 'overlay' | 'document'; export type AttachNode = string | (() => HTMLElement); export interface OverlayProps { visible?: boolean; zIndex?: number; backgroundColor?: string; } export interface PopupProps { modelValue?: boolean; append?: AttachNode; closeBtn?: boolean; closeOnOverlayClick?: boolean; customStyle?: CSSProperties; duration?: number; height?: string; overlayProps?: OverlayProps; placement?: PopupPlacement; preventScrollThrough?: boolean; showOverlay?: boolean; transitionName?: string; visible?: boolean; defaultVisible?: boolean; zIndex?: number; } export interface PopupEmits { (e: 'update:modelValue', value: boolean): void; (e: 'update:visible', visible: boolean): void; (e: 'close', context: { e: MouseEvent; }): void; (e: 'closed'): void; (e: 'open'): void; (e: 'opened'): void; (e: 'visible-change', visible: boolean, trigger: PopupSource): void; }