// src/views/Community/components/EventCard/CompactEventCard.js import React from 'react'; import { HStack, Card, CardBody, VStack, Flex, Box, Button, Text, useColorModeValue, } from '@chakra-ui/react'; import dayjs from 'dayjs'; import { getImportanceConfig } from '../../../../constants/importanceLevels'; // 导入子组件 import EventTimeline from './EventTimeline'; import EventHeader from './EventHeader'; import EventStats from './EventStats'; import EventFollowButton from './EventFollowButton'; /** * 紧凑模式事件卡片组件 * @param {Object} props * @param {Object} props.event - 事件对象 * @param {number} props.index - 事件索引 * @param {boolean} props.isFollowing - 是否已关注 * @param {number} props.followerCount - 关注数 * @param {Function} props.onEventClick - 卡片点击事件 * @param {Function} props.onTitleClick - 标题点击事件 * @param {Function} props.onViewDetail - 查看详情事件 * @param {Function} props.onToggleFollow - 切换关注事件 * @param {Object} props.timelineStyle - 时间轴样式配置 * @param {string} props.borderColor - 边框颜色 */ const CompactEventCard = ({ event, index, isFollowing, followerCount, onEventClick, onTitleClick, onViewDetail, onToggleFollow, timelineStyle, borderColor, }) => { const importance = getImportanceConfig(event.importance); const cardBg = useColorModeValue('white', 'gray.800'); const linkColor = useColorModeValue('blue.600', 'blue.400'); const mutedColor = useColorModeValue('gray.500', 'gray.400'); const handleViewDetailClick = (e) => { e.stopPropagation(); onViewDetail?.(event.id); }; return ( {/* 左侧时间轴 */} {/* 右侧内容卡片 */} onEventClick?.(event)} mb={2} > {/* 第一行:标题(2行)+ 标签(内联)+ 按钮(右侧) */} {/* 标题区域:标题+标签(内联) */} onTitleClick?.(e, event)} linkColor={linkColor} compact={true} avgChange={event.related_avg_chg} size="md" /> {/* 操作按钮 - 固定右侧 */} onToggleFollow?.(event.id)} size="xs" showCount={true} /> {/* 第二行:统计数据(左) + 作者时间(右) */} {/* 左侧:统计数据 */} {/* 右侧:作者 + 时间 */} @{event.creator?.username || 'Anonymous'} {dayjs(event.created_at).format('YYYY-MM-DD HH:mm')} ); }; export default CompactEventCard;