import type { CSSProperties, ReactNode } from 'react'; /** * 从 @pisell/utils 重新导出公共类型 */ export type { DisplayState } from '@pisell/utils'; /** * PisellRating 组件 Props 类型定义 * * 基于 Ant Design Rate 组件,独立实现 */ export interface PisellRatingProps { /** * 显示模式 * @default 'edit' */ mode?: 'read' | 'edit'; /** * 是否禁用 * @default false */ disabled?: boolean; /** * 当前评分值(受控) */ value?: number; /** * 默认评分值(非受控) */ defaultValue?: number; /** * 评分变更回调 */ onChange?: (value: number) => void; /** * 星星数量 * @default 5 */ count?: number; /** * 最大评分值(同 count,为了与 Number 系列保持一致) * @default 5 */ max?: number; /** * 是否允许半星评分 * @default false */ allowHalf?: boolean; /** * 是否允许清除评分 * @default true */ allowClear?: boolean; /** * 自定义字符 * @default StarFilled */ character?: ReactNode | ((props: { index: number; value: number; }) => ReactNode); /** * 评分描述文本数组 * @example ['很差', '差', '一般', '好', '很好'] */ tooltips?: string[]; /** * 是否显示数值文本 * @default false */ showValue?: boolean; /** * 是否显示评分人数 * @default false */ showCount?: boolean; /** * 评分人数 */ reviewCount?: number; /** * 星星尺寸(仅影响样式) * @default 20 */ size?: number; /** * 星星颜色(已选中) * @default '#fadb14' */ color?: string; /** * 星星颜色(未选中) * @default '#d9d9d9' */ unselectedColor?: string; /** * 悬停评分值变化回调 */ onHoverChange?: (value: number) => void; /** * 聚焦回调 */ onFocus?: () => void; /** * 失焦回调 */ onBlur?: () => void; /** * 自定义类名 */ className?: string; /** * 自定义样式 */ style?: CSSProperties; /** * ARIA 标签 */ 'aria-label'?: string; /** * HTML id 属性 */ id?: string; }