Merge branch 'feature_bugfix/251217_stock' of https://git.valuefrontier.cn/vf/vf_react into feature_bugfix/251217_stock
This commit is contained in:
@@ -23,7 +23,7 @@ import {
|
||||
Tooltip,
|
||||
Icon,
|
||||
} from '@chakra-ui/react';
|
||||
import { TimeIcon, BellIcon } from '@chakra-ui/icons';
|
||||
import { Clock, Bell } from 'lucide-react';
|
||||
import { useNotification } from '@contexts/NotificationContext';
|
||||
import EventScrollList from './EventScrollList';
|
||||
import ModeToggleButtons from './ModeToggleButtons';
|
||||
@@ -565,7 +565,7 @@ const [currentMode, setCurrentMode] = useState('vertical');
|
||||
<HStack spacing={4}>
|
||||
<Heading size={isMobile ? "sm" : "md"} color={PROFESSIONAL_COLORS.text.primary}>
|
||||
<HStack spacing={2}>
|
||||
<TimeIcon color={PROFESSIONAL_COLORS.gold[500]} />
|
||||
<Clock size={20} color={PROFESSIONAL_COLORS.gold[500]} />
|
||||
<Text bgGradient={PROFESSIONAL_COLORS.gradients.gold} bgClip="text">实时要闻·动态追踪</Text>
|
||||
</HStack>
|
||||
</Heading>
|
||||
@@ -584,9 +584,8 @@ const [currentMode, setCurrentMode] = useState('vertical');
|
||||
_hover={{ opacity: 0.8 }}
|
||||
transition="opacity 0.2s"
|
||||
>
|
||||
<Icon
|
||||
as={BellIcon}
|
||||
boxSize={3.5}
|
||||
<Bell
|
||||
size={14}
|
||||
color={PROFESSIONAL_COLORS.gold[500]}
|
||||
/>
|
||||
<Text
|
||||
|
||||
@@ -12,10 +12,7 @@ import {
|
||||
useColorModeValue,
|
||||
useToast,
|
||||
} from '@chakra-ui/react';
|
||||
import {
|
||||
ChevronLeftIcon,
|
||||
ChevronRightIcon,
|
||||
} from '@chakra-ui/icons';
|
||||
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
||||
|
||||
/**
|
||||
* 分页控制器组件(使用 React.memo 优化,避免不必要的重新渲染)
|
||||
@@ -116,7 +113,7 @@ const PaginationControl = React.memo(({ currentPage, totalPages, onPageChange })
|
||||
<HStack spacing={1.5} justify="center" flexWrap="wrap">
|
||||
{/* 上一页按钮 */}
|
||||
<IconButton
|
||||
icon={<ChevronLeftIcon />}
|
||||
icon={<ChevronLeft size={14} />}
|
||||
size="xs"
|
||||
onClick={() => onPageChange(currentPage - 1)}
|
||||
isDisabled={currentPage === 1}
|
||||
@@ -164,7 +161,7 @@ const PaginationControl = React.memo(({ currentPage, totalPages, onPageChange })
|
||||
|
||||
{/* 下一页按钮 */}
|
||||
<IconButton
|
||||
icon={<ChevronRightIcon />}
|
||||
icon={<ChevronRight size={14} />}
|
||||
size="xs"
|
||||
onClick={() => onPageChange(currentPage + 1)}
|
||||
isDisabled={currentPage === totalPages}
|
||||
|
||||
@@ -23,8 +23,7 @@ import {
|
||||
Tooltip,
|
||||
Button,
|
||||
} from "@chakra-ui/react";
|
||||
import { ChevronDownIcon, ChevronUpIcon, RepeatIcon } from "@chakra-ui/icons";
|
||||
import { FiTrendingUp, FiZap } from "react-icons/fi";
|
||||
import { ChevronDown, ChevronUp, RefreshCw, TrendingUp, Zap } from "lucide-react";
|
||||
import { FireOutlined } from "@ant-design/icons";
|
||||
import dayjs from "dayjs";
|
||||
import { Select } from "antd";
|
||||
@@ -363,7 +362,7 @@ const MainlineCard = React.memo(
|
||||
)}
|
||||
</VStack>
|
||||
<Icon
|
||||
as={isExpanded ? ChevronUpIcon : ChevronDownIcon}
|
||||
as={isExpanded ? ChevronUp : ChevronDown}
|
||||
boxSize={4}
|
||||
color={COLORS.secondaryTextColor}
|
||||
ml={2}
|
||||
@@ -744,7 +743,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
<VStack spacing={4}>
|
||||
<Text color="red.500">加载失败: {error}</Text>
|
||||
<IconButton
|
||||
icon={<RepeatIcon />}
|
||||
icon={<RefreshCw size={16} />}
|
||||
colorScheme="blue"
|
||||
onClick={fetchMainlineData}
|
||||
aria-label="重试"
|
||||
@@ -761,7 +760,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
<Box display={display} p={8} bg={COLORS.containerBg} minH="400px">
|
||||
<Center h="400px">
|
||||
<VStack spacing={4}>
|
||||
<Icon as={FiZap} boxSize={12} color="gray.400" />
|
||||
<Icon as={Zap} boxSize={12} color="gray.400" />
|
||||
<Text color={COLORS.secondaryTextColor}>暂无主线数据</Text>
|
||||
<Text fontSize="sm" color={COLORS.secondaryTextColor}>
|
||||
尝试调整筛选条件
|
||||
@@ -801,7 +800,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
>
|
||||
<HStack spacing={4}>
|
||||
<HStack spacing={2}>
|
||||
<Icon as={FiTrendingUp} color="blue.400" />
|
||||
<Icon as={TrendingUp} color="blue.400" />
|
||||
<Text fontWeight="bold" color={COLORS.textColor} fontSize="sm">
|
||||
{mainline_count} 条主线
|
||||
</Text>
|
||||
@@ -900,7 +899,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
/>
|
||||
<Tooltip label="全部展开">
|
||||
<IconButton
|
||||
icon={<ChevronDownIcon />}
|
||||
icon={<ChevronDown size={16} />}
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
color={COLORS.secondaryTextColor}
|
||||
@@ -911,7 +910,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
</Tooltip>
|
||||
<Tooltip label="全部折叠">
|
||||
<IconButton
|
||||
icon={<ChevronUpIcon />}
|
||||
icon={<ChevronUp size={16} />}
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
color={COLORS.secondaryTextColor}
|
||||
@@ -922,7 +921,7 @@ const MainlineTimelineViewComponent = forwardRef(
|
||||
</Tooltip>
|
||||
<Tooltip label="刷新">
|
||||
<IconButton
|
||||
icon={<RepeatIcon />}
|
||||
icon={<RefreshCw size={16} />}
|
||||
size="sm"
|
||||
variant="ghost"
|
||||
color={COLORS.secondaryTextColor}
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
useBreakpointValue,
|
||||
useDisclosure
|
||||
} from '@chakra-ui/react';
|
||||
import { InfoIcon } from '@chakra-ui/icons';
|
||||
import { Info } from 'lucide-react';
|
||||
import HorizontalDynamicNewsEventCard from '../../EventCard/HorizontalDynamicNewsEventCard';
|
||||
import EventDetailScrollPanel from '../EventDetailScrollPanel';
|
||||
import EventDetailModal from '../../EventDetailModal';
|
||||
@@ -134,7 +134,7 @@ const VerticalModeLayout = React.memo(({
|
||||
/* 空状态 */
|
||||
<Center h="100%" minH="400px">
|
||||
<VStack spacing={4}>
|
||||
<InfoIcon w={12} h={12} color="gray.400" />
|
||||
<Info size={48} color="gray.400" />
|
||||
<Text fontSize="lg" color="gray.500" textAlign="center">
|
||||
当前筛选条件下暂无数据
|
||||
</Text>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// src/views/Community/components/EventCard/atoms/EventFollowButton.js
|
||||
import React from 'react';
|
||||
import { IconButton, Box } from '@chakra-ui/react';
|
||||
import { AiFillStar, AiOutlineStar } from 'react-icons/ai';
|
||||
import { Star } from 'lucide-react';
|
||||
|
||||
/**
|
||||
* 事件关注按钮组件
|
||||
@@ -39,17 +39,11 @@ const EventFollowButton = ({
|
||||
boxShadow: 'md'
|
||||
}}
|
||||
icon={
|
||||
isFollowing ? (
|
||||
<AiFillStar
|
||||
size={iconSize}
|
||||
color="gold"
|
||||
/>
|
||||
) : (
|
||||
<AiOutlineStar
|
||||
size={iconSize}
|
||||
color="gold"
|
||||
/>
|
||||
)
|
||||
<Star
|
||||
size={iconSize}
|
||||
color="gold"
|
||||
fill={isFollowing ? "currentColor" : "none"}
|
||||
/>
|
||||
}
|
||||
onClick={handleClick}
|
||||
aria-label={isFollowing ? '取消关注' : '关注'}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// src/views/Community/components/EventCard/atoms/EventImportanceBadge.js
|
||||
import React from 'react';
|
||||
import { Badge, Tooltip, VStack, HStack, Text, Divider, Circle } from '@chakra-ui/react';
|
||||
import { InfoIcon } from '@chakra-ui/icons';
|
||||
import { Info } from 'lucide-react';
|
||||
import { getImportanceConfig, getAllImportanceLevels } from '@constants/importanceLevels';
|
||||
|
||||
/**
|
||||
@@ -86,7 +86,7 @@ const EventImportanceBadge = ({
|
||||
gap={1}
|
||||
flexShrink={0}
|
||||
>
|
||||
{showIcon && <InfoIcon boxSize={2.5} />}
|
||||
{showIcon && <Info size={10} />}
|
||||
{importance || 'C'}级
|
||||
</Badge>
|
||||
</Tooltip>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// src/views/Community/components/EventCard/EventStats.js
|
||||
import React from 'react';
|
||||
import { HStack, Text, Tooltip } from '@chakra-ui/react';
|
||||
import { ViewIcon, ChatIcon, StarIcon } from '@chakra-ui/icons';
|
||||
import { Eye, MessageCircle, Star } from 'lucide-react';
|
||||
|
||||
/**
|
||||
* 事件统计信息组件(浏览量、帖子数、关注数)
|
||||
@@ -31,7 +31,7 @@ const EventStats = ({
|
||||
{/* 浏览量 */}
|
||||
<Tooltip label="浏览量" placement="top">
|
||||
<HStack spacing={1}>
|
||||
<ViewIcon boxSize={iconSize} />
|
||||
<Eye size={iconSize === '12px' ? 12 : 16} />
|
||||
<Text fontSize={fontSize}>{viewCount}</Text>
|
||||
</HStack>
|
||||
</Tooltip>
|
||||
@@ -39,7 +39,7 @@ const EventStats = ({
|
||||
{/* 帖子数 */}
|
||||
<Tooltip label="帖子数" placement="top">
|
||||
<HStack spacing={1}>
|
||||
<ChatIcon boxSize={iconSize} />
|
||||
<MessageCircle size={iconSize === '12px' ? 12 : 16} />
|
||||
<Text fontSize={fontSize}>{postCount}</Text>
|
||||
</HStack>
|
||||
</Tooltip>
|
||||
@@ -47,7 +47,7 @@ const EventStats = ({
|
||||
{/* 关注数 */}
|
||||
<Tooltip label="关注数" placement="top">
|
||||
<HStack spacing={1}>
|
||||
<StarIcon boxSize={iconSize} />
|
||||
<Star size={iconSize === '12px' ? 12 : 16} />
|
||||
<Text fontSize={fontSize}>{followerCount}</Text>
|
||||
</HStack>
|
||||
</Tooltip>
|
||||
|
||||
Reference in New Issue
Block a user