import { StyleProp, ViewStyle, TextStyle } from 'react-native'; import { ReactNode } from 'react'; export type ContainerVariant = 'default' | 'card' | 'section' | 'flex'; export type FlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse'; export type JustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'; export type AlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'; export type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse'; export interface DbContainerProps { /** 子元素 */ children?: ReactNode; /** 容器变体类型 */ variant?: ContainerVariant; /** Flex方向 */ direction?: FlexDirection; /** 主轴对齐 */ justify?: JustifyContent; /** 交叉轴对齐 */ align?: AlignItems; /** 是否换行 */ wrap?: FlexWrap; /** 间距 */ gap?: number; /** 内边距 */ padding?: number | { top?: number; right?: number; bottom?: number; left?: number; }; /** 外边距 */ margin?: number | { top?: number; right?: number; bottom?: number; left?: number; }; /** 圆角 */ radius?: number; /** 背景色 */ background?: string; /** 边框颜色 */ borderColor?: string; /** 边框宽度 */ borderWidth?: number; /** 阴影 (仅card变体) */ shadow?: boolean | 'sm' | 'md' | 'lg'; /** 是否占满宽度 */ fullWidth?: boolean; /** 宽度 */ width?: number | string; /** 高度 */ height?: number | string; /** flex值 */ flex?: number; /** 容器样式 */ style?: StyleProp; /** 点击事件 */ onPress?: () => void; /** 长按事件 */ onLongPress?: () => void; /** 是否禁用 */ disabled?: boolean; /** 无障碍标签 */ accessibilityLabel?: string; } export interface DbSectionProps extends Omit { /** Section标题 */ title?: string; /** 标题样式 */ titleStyle?: StyleProp; /** 右侧操作区域 */ extra?: ReactNode; /** 是否显示分隔线 */ showDivider?: boolean; /** 标题左侧图标 */ icon?: ReactNode; } export interface DbCardProps extends Omit { /** 卡片标题 */ title?: string; /** 标题样式 */ titleStyle?: StyleProp; /** 副标题 */ subtitle?: string; /** 副标题样式 */ subtitleStyle?: StyleProp; /** 头部右侧区域 */ headerExtra?: ReactNode; /** 底部区域 */ footer?: ReactNode; /** 封面图片 */ cover?: string; /** 封面高度 */ coverHeight?: number; /** 是否可展开 */ collapsible?: boolean; /** 是否默认展开 */ defaultExpanded?: boolean; /** 展开状态变化回调 */ onExpandChange?: (expanded: boolean) => void; } export interface DbRowProps extends Omit { /** 是否居中对齐 */ center?: boolean; } export interface DbColProps extends Omit { /** 是否居中对齐 */ center?: boolean; /** 占比 (1-24) */ span?: number; } export interface DbSpacerProps { /** 宽度 */ width?: number; /** 高度 */ height?: number; /** 是否flex占位 */ flex?: number; }