// src/views/Community/components/EventCard/DetailedEventCard.js import React from 'react'; import { HStack, Card, CardBody, VStack, Flex, Text, useColorModeValue, } from '@chakra-ui/react'; import moment from 'moment'; import { getImportanceConfig } from '../../../../constants/importanceLevels'; // 导入子组件 import EventTimeline from './EventTimeline'; import EventHeader from './EventHeader'; import EventStats from './EventStats'; import EventFollowButton from './EventFollowButton'; import EventPriceDisplay from './EventPriceDisplay'; import EventDescription from './EventDescription'; /** * 详细模式事件卡片组件 * @param {Object} props * @param {Object} props.event - 事件对象 * @param {boolean} props.isFollowing - 是否已关注 * @param {number} props.followerCount - 关注数 * @param {Function} props.onEventClick - 卡片点击事件 * @param {Function} props.onTitleClick - 标题点击事件 * @param {Function} props.onToggleFollow - 切换关注事件 * @param {Object} props.timelineStyle - 时间轴样式配置 * @param {string} props.borderColor - 边框颜色 */ const DetailedEventCard = ({ event, isFollowing, followerCount, onEventClick, onTitleClick, 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 textColor = useColorModeValue('gray.700', 'gray.200'); return ( {/* 左侧时间轴 */} {/* 事件卡片 */} onEventClick?.(event)} mb={3} > {/* 第一行:标题+优先级 | 统计+关注 */} {/* 左侧:标题 + 优先级标签 */} onTitleClick?.(e, event)} linkColor={linkColor} compact={false} size="md" /> {/* 右侧:统计数据 + 关注按钮 */} {/* 统计数据 */} {/* 关注按钮 */} onToggleFollow?.(event.id)} size="sm" showCount={false} /> {/* 第二行:价格标签 | 时间+作者 */} {/* 左侧:价格标签 */} {/* 右侧:时间 + 作者 */} {moment(event.created_at).format('YYYY-MM-DD HH:mm')} @{event.creator?.username || 'Anonymous'} {/* 第三行:描述文字 + 展开/收起 */} ); }; export default DetailedEventCard;