import { StyleProp, ViewStyle, TextStyle, TextInputProps } from 'react-native'; import { ReactNode } from 'react'; /** 图标配置类型 */ export interface SearchBarIconConfig { /** 图标名称 (Ionicons) */ name?: string; /** 图标库 */ family?: 'Ionicons' | 'FontAwesome' | 'MaterialIcons' | 'Entypo'; /** 图标大小 */ size?: number; /** 图标颜色 */ color?: string; } /** 所有图标的配置 */ export interface SearchBarIconsConfig { /** 搜索图标配置 */ search?: SearchBarIconConfig; /** 清除图标配置 */ clear?: SearchBarIconConfig; /** 拍照图标配置 */ camera?: SearchBarIconConfig; /** 扫一扫图标配置 */ scan?: SearchBarIconConfig; /** 语音图标配置 */ voice?: SearchBarIconConfig; } export interface DbSearchBarProps extends Omit { /** 搜索框的值 */ value?: string; /** 默认值 */ defaultValue?: string; /** 占位文字 */ placeholder?: string; /** 占位文字颜色 */ placeholderTextColor?: string; /** 值变化回调 */ onChangeText?: (text: string) => void; /** 提交搜索回调 */ onSubmit?: (text: string) => void; /** 点击搜索框回调 (用于跳转搜索页) */ onPress?: () => void; /** 聚焦回调 */ onFocus?: () => void; /** 失焦回调 */ onBlur?: () => void; /** 清空回调 */ onClear?: () => void; /** 左侧图标 (默认搜索图标) */ leftIcon?: ReactNode; /** 左侧额外内容 (如返回按钮) */ leftExtra?: ReactNode; /** 点击左侧图标 */ onLeftIconPress?: () => void; /** 点击左侧额外区域 */ onLeftExtraPress?: () => void; /** 右侧图标列表 */ rightIcons?: ReactNode[]; /** 右侧额外内容 (如搜索按钮) */ rightExtra?: ReactNode; /** 点击右侧额外区域 */ onRightExtraPress?: () => void; /** 是否显示拍照按钮 */ showCamera?: boolean; /** 拍照回调 */ onCameraPress?: () => void; /** 是否显示扫一扫按钮 */ showScan?: boolean; /** 扫一扫回调 */ onScanPress?: () => void; /** 是否显示语音按钮 */ showVoice?: boolean; /** 语音回调 */ onVoicePress?: () => void; /** 是否显示清除按钮 (有内容时显示) */ showClear?: boolean; /** 自定义图标配置 */ icons?: SearchBarIconsConfig; /** 是否禁用输入 (只能点击跳转) */ disabled?: boolean; /** 是否自动聚焦 */ autoFocus?: boolean; /** 搜索框形状 */ shape?: 'round' | 'square'; /** 输入框背景色 */ inputBackground?: string; /** 容器背景色 */ background?: string; /** 图标颜色 */ iconColor?: string; /** 图标大小 */ iconSize?: number; /** 容器样式 */ style?: StyleProp; /** 输入框容器样式 */ inputContainerStyle?: StyleProp; /** 输入框样式 */ inputStyle?: StyleProp; /** 搜索按钮文字 */ searchButtonText?: string; /** 是否显示搜索按钮 */ showSearchButton?: boolean; /** 搜索按钮样式 */ searchButtonStyle?: StyleProp; /** 搜索按钮文字样式 */ searchButtonTextStyle?: StyleProp; }