import { StyleProp, ViewStyle, TextStyle, ImageStyle } from 'react-native'; import { ReactNode } from 'react'; import type { TitleTagConfig } from '@/components/DbProductTitle/DbProductTitle.types'; export type ProductCardVariant = 'vertical' | 'horizontal' | 'grid' | 'list' | 'cart' | 'waterfall'; export interface ProductTag { /** 标签文字 */ text: string; /** 标签颜色 */ color?: string; /** 标签背景色 */ backgroundColor?: string; /** 是否描边样式 */ outline?: boolean; } export interface ProductPrice { /** 当前价格 */ current: number | string; /** 原价 */ original?: number | string; /** 价格前缀 */ prefix?: string; /** 价格后缀 */ suffix?: string; /** 价格单位 */ unit?: string; } export interface CartTag { /** 标签文字 */ text: string; /** 预设类型(参考 DbTag preset) */ preset?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'hot' | 'new' | 'sale' | 'discount' | 'free-shipping' | 'guarantee' | 'vip' | 'recommend'; /** 变体风格:solid=实体(默认) outline=虚体/描边 light=浅色背景 */ variant?: 'solid' | 'outline' | 'light'; /** 自定义主色(覆盖预设颜色) */ color?: string; /** 自定义背景色 */ backgroundColor?: string; /** 自定义边框色 */ borderColor?: string; /** 自定义文字颜色 */ textColor?: string; } export interface SkuInfo { /** SKU 名称/规格 */ name: string; /** SKU 提示文字 */ hint?: string; } export interface DbProductCardProps { /** 商品ID */ id?: string | number; /** 商品图片 */ image: string; /** 商品标题 */ title: string; /** 商品副标题/描述 */ subtitle?: string; /** 价格信息 */ price: ProductPrice | number | string; /** 标签列表(旧版,建议使用 titleTags) */ tags?: ProductTag[]; /** 卡片变体 */ variant?: ProductCardVariant; /** 销量文字 */ salesText?: string; /** 评分 (0-5) */ rating?: number; /** 评价数量 */ reviewCount?: number; /** 店铺名称 */ shopName?: string; /** 是否收藏 */ isFavorite?: boolean; /** 是否缺货 */ outOfStock?: boolean; /** 缺货文字 */ outOfStockText?: string; /** 角标内容 */ badge?: string | ReactNode; /** 图片宽度 (仅grid和vertical有效) */ imageWidth?: number; /** 图片高度 */ imageHeight?: number; /** 图片圆角 */ imageRadius?: number; /** 最大显示标签数 */ maxTags?: number; /** 是否显示购买按钮 */ showBuyButton?: boolean; /** 购买按钮文字 */ buyButtonText?: string; /** 是否显示收藏按钮 */ showFavoriteButton?: boolean; /** 点击回调 */ onPress?: () => void; /** 购买按钮点击 */ onBuyPress?: () => void; /** 收藏按钮点击 */ onFavoritePress?: () => void; /** 图片点击 */ onImagePress?: () => void; /** 容器样式 */ style?: StyleProp; /** 图片样式 */ imageStyle?: StyleProp; /** 标题样式 */ titleStyle?: StyleProp; /** 价格样式 */ priceStyle?: StyleProp; /** 自定义底部区域 */ footer?: ReactNode; /** 自定义右侧区域 (horizontal模式) */ rightExtra?: ReactNode; /** 是否启用购物车模式(当 variant='cart' 时自动启用) */ cartMode?: boolean; /** 标题前的标签列表(用于 DbProductTitle) */ titleTags?: TitleTagConfig[]; /** 标题后的标签列表(用于 DbProductTitle) */ titleSuffixTags?: TitleTagConfig[]; /** 购物车标签列表(如"7天无理由"、"极速退款"等,显示在标题下方) */ cartTags?: CartTag[]; /** SKU 信息 */ sku?: SkuInfo; /** SKU 点击回调 */ onSkuPress?: () => void; /** 数量输入初始值 */ quantity?: number; /** 数量变化回调 */ onQuantityChange?: (quantity: number) => void; /** 数量最小值 */ minQuantity?: number; /** 数量最大值 */ maxQuantity?: number; /** 是否显示选择框(Radio/Checkbox) */ showRadio?: boolean; /** 是否选中(显示选择框) */ selected?: boolean; /** 选择框点击回调 */ onSelectChange?: (selected: boolean) => void; /** 选择框是否可交互(默认可交互,传 false 则仅展示状态) */ radioDisabled?: boolean; /** 是否显示删除按钮 */ showDelete?: boolean; /** 删除按钮点击回调 */ onDelete?: () => void; /** 底部扩展区域内容 */ bottomExtra?: ReactNode; /** 卡片圆角(动态可配置) */ borderRadius?: number; /** 间距配置(默认 8) */ gap?: number; /** 数量输入器尺寸: small(默认), medium, large */ numberInputSize?: 'small' | 'medium' | 'large'; /** 数量输入器类型: bordered(默认有边框), borderless(无边框) */ numberInputType?: 'bordered' | 'borderless'; /** 标题行数(默认1行,最多2行) */ titleNumberOfLines?: number; }