feat(HotSectorsRanking): 支持板块/概念类型切换

- 新增 type 属性区分 sector/concept
- 添加默认概念数据
- 根据类型切换图标 (TrendingUp/Flame) 和颜色

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-31 18:33:51 +08:00
parent fd393d18e5
commit c120c1c65b

View File

@@ -1,11 +1,11 @@
// 热门板块排行组件 - 紧凑版(与 WatchlistPanel 风格保持一致)
// 热门板块/概念排行组件 - 紧凑版(与 WatchlistPanel 风格保持一致)
import React from 'react';
import { Box, Text, VStack, HStack, Icon } from '@chakra-ui/react';
import { TrendingUp } from 'lucide-react';
import { TrendingUp, Flame } from 'lucide-react';
import MiniTrendLine from './MiniTrendLine';
const HotSectorsRanking = ({ sectors = [], title = '热门板块', onSectorClick }) => {
// 默认数据
const HotSectorsRanking = ({ sectors = [], title = '热门板块', type = 'sector', onSectorClick }) => {
// 默认板块数据
const defaultSectors = [
{ rank: 1, name: '人工智能', change: 3.2, trend: [100, 102, 101, 104, 103, 106] },
{ rank: 2, name: '新能源车', change: 1.8, trend: [100, 99, 101, 102, 101, 103] },
@@ -14,14 +14,28 @@ const HotSectorsRanking = ({ sectors = [], title = '热门板块', onSectorClick
{ rank: 5, name: '芯片半导体', change: 0.4, trend: [100, 100, 100, 101, 100, 101] },
];
const data = sectors.length > 0 ? sectors : defaultSectors;
// 默认概念数据
const defaultConcepts = [
{ rank: 1, name: '锂电池', change: 4.5, trend: [100, 103, 105, 104, 108, 110] },
{ rank: 2, name: '人工智能', change: 3.8, trend: [100, 102, 104, 103, 106, 108] },
{ rank: 3, name: '机器人', change: 2.9, trend: [100, 101, 103, 102, 104, 106] },
{ rank: 4, name: '国企改革', change: 2.1, trend: [100, 101, 102, 101, 103, 104] },
{ rank: 5, name: '新能源', change: 1.6, trend: [100, 100, 101, 102, 101, 103] },
];
const defaultData = type === 'concept' ? defaultConcepts : defaultSectors;
const data = sectors.length > 0 ? sectors : defaultData;
// 根据类型选择图标和颜色
const IconComponent = type === 'concept' ? Flame : TrendingUp;
const iconColor = type === 'concept' ? 'rgba(139, 92, 246, 0.9)' : 'rgba(34, 197, 94, 0.9)';
return (
<Box>
{/* 标题 - 与 WatchlistPanel 风格一致 */}
<HStack justify="space-between" mb={2}>
<HStack spacing={1}>
<Icon as={TrendingUp} boxSize={3.5} color="rgba(34, 197, 94, 0.9)" />
<Icon as={IconComponent} boxSize={3.5} color={iconColor} />
<Text fontSize="xs" fontWeight="bold" color="rgba(255, 255, 255, 0.9)">
{title}
</Text>