import { StyleProp, ViewStyle, TextStyle, ImageSourcePropType } from 'react-native'; import { ReactNode } from 'react'; /** 登录方式类型 */ export type LoginType = 'account' | 'phone' | 'sms'; /** 第三方登录平台 */ export type ThirdPartyPlatform = 'wechat' | 'alipay' | 'qq' | 'weibo'; /** 第三方登录配置 */ export interface ThirdPartyLoginConfig { platform: ThirdPartyPlatform; icon?: string; iconFamily?: string; title: string; onPress: () => void; } /** 账号密码登录数据 */ export interface AccountLoginData { account: string; password: string; } /** 手机号登录数据 */ export interface PhoneLoginData { phone: string; code?: string; } /** 登录结果 */ export interface LoginResult { success: boolean; data?: any; message?: string; } /** DbLoginPage 组件属性 */ export interface DbLoginPageProps { /** 是否显示Logo */ showLogo?: boolean; /** Logo图片源 */ logoSource?: ImageSourcePropType; /** 应用名称 */ appName?: string; /** 欢迎标题 */ title?: string; /** 副标题 */ subtitle?: string; /** 是否启用账号密码登录 */ enableAccountLogin?: boolean; /** 是否启用手机号登录 */ enablePhoneLogin?: boolean; /** 是否启用短信验证码登录 */ enableSmsLogin?: boolean; /** 是否启用第三方登录 */ enableThirdPartyLogin?: boolean; /** 是否显示注册链接 */ showRegisterLink?: boolean; /** 是否显示忘记密码 */ showForgotPassword?: boolean; /** 默认登录方式 */ defaultLoginType?: LoginType; /** 默认账号值 */ defaultAccount?: string; /** 默认密码值 */ defaultPassword?: string; /** 账号提示文字 */ accountPlaceholder?: string; /** 密码提示文字 */ passwordPlaceholder?: string; /** 手机号提示文字 */ phonePlaceholder?: string; /** 验证码提示文字 */ codePlaceholder?: string; /** 登录按钮文字 */ loginButtonText?: string; /** 第三方登录配置 */ thirdPartyLogins?: ThirdPartyLoginConfig[]; /** 第三方登录标题 */ thirdPartyTitle?: string; /** 账号密码登录 */ onAccountLogin?: (data: AccountLoginData) => Promise | LoginResult; /** 手机号一键登录 */ onPhoneLogin?: (data: PhoneLoginData) => Promise | LoginResult; /** 短信验证码登录 */ onSmsLogin?: (data: PhoneLoginData) => Promise | LoginResult; /** 发送验证码 */ onSendCode?: (phone: string) => Promise; /** 点击注册 */ onRegister?: () => void; /** 点击忘记密码 */ onForgotPassword?: () => void; /** 点击用户协议 */ onUserAgreement?: () => void; /** 点击隐私政策 */ onPrivacyPolicy?: () => void; /** 自定义Logo渲染 */ renderLogo?: () => ReactNode; /** 自定义标题区域 */ renderHeader?: () => ReactNode; /** 自定义底部内容 */ renderFooter?: () => ReactNode; /** 自定义协议区域 */ renderAgreement?: () => ReactNode; /** 容器样式 */ style?: StyleProp; /** 内容区域样式 */ contentStyle?: StyleProp; /** 标题样式 */ titleStyle?: StyleProp; /** 副标题样式 */ subtitleStyle?: StyleProp; /** 登录按钮样式 */ loginButtonStyle?: StyleProp; /** 登录按钮文字样式 */ loginButtonTextStyle?: StyleProp; /** Tab栏样式 */ tabBarStyle?: StyleProp; /** 背景色 */ backgroundColor?: string; /** 主色调 */ primaryColor?: string; /** 是否自动聚焦第一个输入框 */ autoFocus?: boolean; /** 验证码倒计时时间(秒) */ codeCountdown?: number; /** 是否显示密码强度 */ showPasswordStrength?: boolean; /** 协议勾选状态 */ agreeToTerms?: boolean; /** 协议勾选变化回调 */ onAgreeChange?: (agreed: boolean) => void; /** 是否必须勾选协议才能登录 */ requireAgreement?: boolean; } /** DbLoginPage 组件引用方法 */ export interface DbLoginPageRef { /** 重置表单 */ reset: () => void; /** 聚焦到指定字段 */ focus: (field: 'account' | 'password' | 'phone' | 'code') => void; /** 获取当前表单数据 */ getFormData: () => AccountLoginData | PhoneLoginData; /** 设置登录类型 */ setLoginType: (type: LoginType) => void; /** 触发登录 */ triggerLogin: () => void; }