import type { CSSProperties, VNodeChild } from "vue"; import type { XySemanticClassNames, XySemanticStyles } from "../core"; export type XyDrawerPlacement = "bottom" | "left" | "right" | "top"; export type XyDrawerSize = number | string; export type XyDrawerCloseSource = "close-button" | "keyboard" | "mask"; export type XyDrawerSemanticDom = "body" | "close" | "extra" | "footer" | "header" | "mask" | "panel" | "root" | "title" | "wrapper"; export interface XyDrawerSemanticProps { closable: boolean; hasExtra: boolean; hasFooter: boolean; hasTitle: boolean; mask: boolean; open: boolean; placement: XyDrawerPlacement; size: XyDrawerSize | undefined; } export type XyDrawerClassNames = XySemanticClassNames; export type XyDrawerStyles = XySemanticStyles; export interface XyDrawerProps { ariaLabel?: string; classNames?: XyDrawerClassNames; closable?: boolean; destroyOnHidden?: boolean; getContainer?: () => HTMLElement | null | undefined; keyboard?: boolean; mask?: boolean; maskClosable?: boolean; modelValue?: boolean; placement?: XyDrawerPlacement; size?: XyDrawerSize; styles?: XyDrawerStyles; teleport?: boolean; title?: string; zIndex?: number; } export interface XyDrawerSlots { default?: () => VNodeChild; extra?: () => VNodeChild; footer?: () => VNodeChild; title?: () => VNodeChild; } export type XyDrawerPanelStyle = CSSProperties;