import { StyleProp, ViewStyle, TextStyle } from 'react-native'; /** 弹出位置 */ export type PopupPosition = 'center' | 'top' | 'bottom' | 'left' | 'right'; /** 关闭图标位置 */ export type CloseIconPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; /** DbPopup 组件属性 */ export interface DbPopupProps { /** 是否显示弹出层 */ visible: boolean; /** 关闭回调 */ onClose?: () => void; /** 弹出位置 */ position?: PopupPosition; /** 是否显示遮罩层 */ overlay?: boolean; /** 遮罩层颜色 */ overlayColor?: string; /** 遮罩层透明度 */ overlayOpacity?: number; /** 点击遮罩层是否关闭 */ closeOnClickOverlay?: boolean; /** 是否显示关闭按钮 */ closable?: boolean; /** 关闭按钮位置 */ closeIconPosition?: CloseIconPosition; /** 关闭按钮颜色 */ closeIconColor?: string; /** 关闭按钮大小 */ closeIconSize?: number; /** 是否显示圆角 */ round?: boolean; /** 圆角大小 */ borderRadius?: number; /** 弹出层宽度(position 为 left/right 时有效) */ width?: number | string; /** 弹出层高度(position 为 top/bottom 时有效) */ height?: number | string; /** 弹出层最大高度 */ maxHeight?: number | string; /** 弹出层最大宽度 */ maxWidth?: number | string; /** 弹出层背景色 */ backgroundColor?: string; /** 是否启用安全区域 */ safeAreaInsetTop?: boolean; /** 是否启用底部安全区域 */ safeAreaInsetBottom?: boolean; /** 动画时长(毫秒) */ duration?: number; /** 是否锁定滚动 */ lockScroll?: boolean; /** 层级 */ zIndex?: number; /** 标题 */ title?: string; /** 标题样式 */ titleStyle?: StyleProp; /** 子元素 */ children?: React.ReactNode; /** 弹出层样式 */ style?: StyleProp; /** 内容区域样式 */ contentStyle?: StyleProp; /** 完全打开后的回调 */ onOpened?: () => void; /** 完全关闭后的回调 */ onClosed?: () => void; /** 自定义遮罩层样式 */ overlayStyle?: StyleProp; /** 自定义头部 */ header?: React.ReactNode; /** 自定义底部 */ footer?: React.ReactNode; /** 是否可滚动 */ scrollable?: boolean; } /** 弹出层动作按钮配置 */ export interface PopupActionConfig { /** 按钮文本 */ text: string; /** 按钮类型 */ type?: 'default' | 'primary' | 'danger'; /** 点击回调 */ onPress?: () => void; /** 是否禁用 */ disabled?: boolean; /** 是否加载中 */ loading?: boolean; }