import { ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons' import './StatCard.css' /** * 统计卡片组件 * @param {Object} props * @param {string} props.title - 卡片标题 * @param {number|string} props.value - 统计值 * @param {ReactNode} props.icon - 图标 * @param {string} props.color - 主题颜色,默认 'blue' * @param {Object} props.trend - 趋势信息 { value: number, direction: 'up' | 'down' } * @param {string} props.suffix - 后缀单位 * @param {string} props.layout - 布局模式: 'column' | 'row',默认 'column'(一列) * @param {string} props.gridColumn - 网格列跨度,如 '1 / -1' 表示占满整行 * @param {string} props.className - 自定义类名 * @param {Function} props.onClick - 点击事件处理函数 * @param {Object} props.style - 自定义样式对象 */ function StatCard({ title, value, icon, color = 'blue', trend, suffix = '', layout = 'column', gridColumn, className = '', onClick, style: customStyle = {}, }) { const colorMap = { blue: '#1677ff', green: '#52c41a', orange: '#faad14', red: '#ff4d4f', purple: '#722ed1', gray: '#8c8c8c', } const themeColor = colorMap[color] || color const style = { ...(gridColumn ? { gridColumn } : {}), ...customStyle, } return (