diff --git a/src/views/Concept/ConceptTimelineModal.js b/src/views/Concept/ConceptTimelineModal.js
index 4b5df638..c84caf5d 100644
--- a/src/views/Concept/ConceptTimelineModal.js
+++ b/src/views/Concept/ConceptTimelineModal.js
@@ -33,21 +33,21 @@ import {
useBreakpointValue,
} from '@chakra-ui/react';
import {
- ChevronDownIcon,
- ChevronRightIcon,
- ExternalLinkIcon,
- ViewIcon,
- CalendarIcon,
-} from '@chakra-ui/icons';
+ ChevronDown,
+ ChevronRight,
+ ExternalLink,
+ Eye,
+ Calendar,
+} from 'lucide-react';
import {
- FaChartLine,
- FaArrowUp,
- FaArrowDown,
- FaHistory,
- FaNewspaper,
- FaFileAlt,
- FaClock,
-} from 'react-icons/fa';
+ LineChart,
+ ArrowUp,
+ ArrowDown,
+ History,
+ Newspaper as NewspaperIcon,
+ FileText,
+ Clock,
+} from 'lucide-react';
import { keyframes } from '@emotion/react';
dayjs.locale('zh-cn');
@@ -179,13 +179,13 @@ const ConceptTimelineModal = ({
if (value > 0) {
return {
color: 'red',
- icon: FaArrowUp,
+ icon: ArrowUp,
text: `+${value.toFixed(2)}%`
};
} else if (value < 0) {
return {
color: 'green',
- icon: FaArrowDown,
+ icon: ArrowDown,
text: `${value.toFixed(2)}%`
};
} else {
@@ -691,7 +691,7 @@ const ConceptTimelineModal = ({
>
@@ -815,7 +815,7 @@ const ConceptTimelineModal = ({
borderColor="red.400"
flexShrink={0}
>
-
+
上涨
-
+
下跌
@@ -991,7 +991,7 @@ const ConceptTimelineModal = ({
borderColor="blue.500"
>
-
+
{selectedDateData.events.filter(e => e.type === 'news').length}
@@ -1007,7 +1007,7 @@ const ConceptTimelineModal = ({
borderColor="green.500"
>
-
+
{selectedDateData.events.filter(e => e.type === 'report').length}
@@ -1109,7 +1109,7 @@ const ConceptTimelineModal = ({
{event.time && (
-
+
{formatDateTime(event.time)}
@@ -1120,7 +1120,7 @@ const ConceptTimelineModal = ({
size="sm"
colorScheme={event.type === 'news' ? 'blue' : 'green'}
variant="solid"
- leftIcon={}
+ leftIcon={}
boxShadow="sm"
_hover={{
transform: 'scale(1.05)',
@@ -1175,7 +1175,7 @@ const ConceptTimelineModal = ({
borderColor="whiteAlpha.200"
>
}
+ leftIcon={}
onClick={() => {
const url = formatUrl(selectedReport.content_url);
if (url) {
@@ -1379,7 +1379,7 @@ const ConceptTimelineModal = ({
size="sm"
bg="whiteAlpha.100"
color="white"
- leftIcon={}
+ leftIcon={}
onClick={() => window.open(selectedNews.url, '_blank')}
_hover={{ bg: 'whiteAlpha.200' }}
>
diff --git a/src/views/Concept/components/BreadcrumbNav.js b/src/views/Concept/components/BreadcrumbNav.js
index 541f8611..aa0aae00 100644
--- a/src/views/Concept/components/BreadcrumbNav.js
+++ b/src/views/Concept/components/BreadcrumbNav.js
@@ -16,8 +16,7 @@ import {
Flex,
Tooltip,
} from '@chakra-ui/react';
-import { ChevronRightIcon } from '@chakra-ui/icons';
-import { FaFilter, FaTimes, FaHome } from 'react-icons/fa';
+import { ChevronRight, Filter, X, Home } from 'lucide-react';
const BreadcrumbNav = ({
filter,
@@ -139,7 +138,7 @@ const BreadcrumbNav = ({
py={1}
borderRadius="full"
>
-
+
层级筛选
@@ -161,7 +160,7 @@ const BreadcrumbNav = ({
alignItems="center"
gap={1}
>
-
+
全部
@@ -169,7 +168,7 @@ const BreadcrumbNav = ({
{/* 面包屑路径 */}
{breadcrumbs.map((crumb, index) => (
-
+
}
+ icon={}
{...(isDarkMode ? {} : { colorScheme: 'red' })}
color={isDarkMode ? styles.clearBtn.color : undefined}
variant="ghost"
diff --git a/src/views/Concept/components/ConceptStatsPanel.js b/src/views/Concept/components/ConceptStatsPanel.js
index 30c40cb5..cb6eede1 100644
--- a/src/views/Concept/components/ConceptStatsPanel.js
+++ b/src/views/Concept/components/ConceptStatsPanel.js
@@ -37,14 +37,16 @@ import {
useToast,
} from '@chakra-ui/react';
import {
- FaArrowUp,
- FaArrowDown,
- FaChartLine,
- FaNewspaper,
- FaRocket,
- FaCrown,
-} from 'react-icons/fa';
-import { BsLightningFill, BsGraphUp, BsGraphDown } from 'react-icons/bs';
+ ArrowUp,
+ ArrowDown,
+ LineChart,
+ Newspaper,
+ Rocket,
+ Crown,
+ Zap,
+ TrendingUp,
+ TrendingDown,
+} from 'lucide-react';
const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
// 获取正确的API基础URL
@@ -274,7 +276,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
const tabsData = [
{
label: '涨幅榜',
- icon: FaArrowUp,
+ icon: ArrowUp,
color: 'red',
data: statsData.hot_concepts,
renderItem: (item, index) => (
@@ -314,7 +316,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
{index === 0 && (
{
-
+
{item.stock_count}股
·
-
+
{item.news_count}讯
@@ -349,7 +351,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
px={2}
py={1}
>
-
+
{formatChange(item.change_pct)}
@@ -357,7 +359,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
},
{
label: '跌幅榜',
- icon: FaArrowDown,
+ icon: ArrowDown,
color: 'green',
data: statsData.cold_concepts,
renderItem: (item, index) => (
@@ -400,12 +402,12 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
-
+
{item.stock_count}股
·
-
+
{item.news_count}讯
@@ -420,7 +422,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
px={2}
py={1}
>
-
+
{formatChange(item.change_pct)}
@@ -428,7 +430,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
},
{
label: '波动榜',
- icon: BsLightningFill,
+ icon: Zap,
color: 'purple',
data: statsData.volatile_concepts,
renderItem: (item, index) => (
@@ -468,7 +470,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
{index === 0 && (
{
px={2}
py={1}
>
-
+
{item.volatility?.toFixed(1)}%
@@ -503,7 +505,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
},
{
label: '连涨榜',
- icon: FaRocket,
+ icon: Rocket,
color: 'cyan',
data: statsData.momentum_concepts,
renderItem: (item, index) => (
@@ -543,7 +545,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
{index === 0 && (
{
px={2}
py={1}
>
-
+
{item.consecutive_days}天
@@ -620,7 +622,7 @@ const ConceptStatsPanel = ({ apiBaseUrl, onConceptClick }) => {
-
+
diff --git a/src/views/Concept/components/ForceGraphView.js b/src/views/Concept/components/ForceGraphView.js
index fdf12547..1d8245e0 100644
--- a/src/views/Concept/components/ForceGraphView.js
+++ b/src/views/Concept/components/ForceGraphView.js
@@ -31,18 +31,18 @@ import {
} from '@chakra-ui/react';
import { keyframes } from '@emotion/react';
import {
- FaLayerGroup,
- FaSync,
- FaExpand,
- FaCompress,
- FaHome,
- FaArrowUp,
- FaArrowDown,
- FaCircle,
- FaTh,
- FaChevronRight,
- FaArrowLeft,
-} from 'react-icons/fa';
+ Layers,
+ RefreshCw,
+ Maximize2,
+ Minimize2,
+ Home,
+ ArrowUp,
+ ArrowDown,
+ Circle,
+ Grid3x3,
+ ChevronRight,
+ ArrowLeft,
+} from 'lucide-react';
import { logger } from '../../../utils/logger';
// 极光动画 - 黑金色主题
@@ -1052,7 +1052,7 @@ const ForceGraphView = ({
borderColor="whiteAlpha.100"
>
-
+
加载失败:{error}
-
+
数据约下午4点更新
@@ -1627,21 +1661,21 @@ const ConceptCenter = () => {
boxShadow="0 8px 32px rgba(0, 0, 0, 0.3)"
>
-
+
500+
概念板块
-
+
5000+
相关个股
-
+
24/7
实时监控
@@ -1668,7 +1702,7 @@ const ConceptCenter = () => {
>
-
+
{
transform="translateY(-50%)"
size="sm"
aria-label="清除搜索"
- icon={}
+ icon={}
variant="ghost"
color="gray.500"
borderRadius="full"
@@ -1711,7 +1745,7 @@ const ConceptCenter = () => {
borderRadius="0 50px 50px 0"
bgGradient="linear(135deg, #667eea 0%, #764ba2 100%)"
color="white"
- leftIcon={}
+ leftIcon={}
_hover={{
bgGradient: 'linear(135deg, #5568d3 0%, #663a8e 100%)',
transform: 'scale(1.02)',
@@ -1777,7 +1811,7 @@ const ConceptCenter = () => {
{/* 排序方式 - 仅在列表视图显示 */}
{viewMode === 'list' && (
-
+
排序方式: