diff --git a/src/components/Auth/AuthFormContent.js b/src/components/Auth/AuthFormContent.js
index 1431f479..46f4e308 100644
--- a/src/components/Auth/AuthFormContent.js
+++ b/src/components/Auth/AuthFormContent.js
@@ -27,7 +27,8 @@ import {
Divider,
IconButton,
} from "@chakra-ui/react";
-import { FaLock, FaWeixin } from "react-icons/fa";
+import { Lock } from "lucide-react";
+import { WechatOutlined } from '@ant-design/icons';
import { useAuth } from "../../contexts/AuthContext";
import { useAuthModal } from "../../hooks/useAuthModal";
import { useNotification } from "../../contexts/NotificationContext";
@@ -490,7 +491,7 @@ export default function AuthFormContent() {
其他登录方式:
}
+ icon={}
size="sm"
variant="ghost"
color="#07C160"
@@ -511,7 +512,7 @@ export default function AuthFormContent() {
)}
-
+
{/* 隐私声明 */}
diff --git a/src/components/Auth/WechatRegister.js b/src/components/Auth/WechatRegister.js
index d11a4a1f..5cbe8430 100644
--- a/src/components/Auth/WechatRegister.js
+++ b/src/components/Auth/WechatRegister.js
@@ -11,8 +11,7 @@ import {
useToast,
Spinner
} from "@chakra-ui/react";
-import { FaQrcode } from "react-icons/fa";
-import { FiAlertCircle } from "react-icons/fi";
+import { QrCode, AlertCircle } from "lucide-react";
import { useNavigate } from "react-router-dom";
import { authService, WECHAT_STATUS, STATUS_MESSAGES } from "../../services/authService";
import { useAuthModal } from "../../hooks/useAuthModal";
@@ -508,7 +507,7 @@ export default function WechatRegister() {
) : (
/* 未获取:显示占位符 */
-
+
- } />
+ } />
);
@@ -555,7 +555,7 @@ const MessageRenderer = ({ message }) => {
return (
- } />
+ } />
{
return (
- } />
+ } />
@@ -592,7 +592,7 @@ const MessageRenderer = ({ message }) => {
return (
- } />
+ } />
{message.stepResults?.map((result, idx) => (
@@ -607,7 +607,7 @@ const MessageRenderer = ({ message }) => {
return (
- } />
+ } />
{/* 最终总结 */}
{
return (
- } />
+ } />
{
{!isUser && (
}
+ icon={}
size="xs"
variant="ghost"
aria-label="复制"
onClick={handleCopy}
/>
}
+ icon={}
size="xs"
variant="ghost"
aria-label="赞"
onClick={() => onFeedback?.('positive')}
/>
}
+ icon={}
size="xs"
variant="ghost"
aria-label="踩"
diff --git a/src/components/ChatBot/PlanCard.js b/src/components/ChatBot/PlanCard.js
index bb35e3d4..ef47397b 100644
--- a/src/components/ChatBot/PlanCard.js
+++ b/src/components/ChatBot/PlanCard.js
@@ -17,7 +17,7 @@ import {
useColorModeValue,
Divider,
} from '@chakra-ui/react';
-import { FiTarget, FiCheckCircle, FiXCircle, FiClock, FiTool } from 'react-icons/fi';
+import { Target, CheckCircle, XCircle, Clock, Wrench } from 'lucide-react';
/**
* 执行计划卡片组件
@@ -38,11 +38,11 @@ export const PlanCard = ({ plan, stepResults }) => {
const getStepIcon = (status) => {
switch (status) {
case 'success':
- return FiCheckCircle;
+ return CheckCircle;
case 'failed':
- return FiXCircle;
+ return XCircle;
default:
- return FiClock;
+ return Clock;
}
};
@@ -70,7 +70,7 @@ export const PlanCard = ({ plan, stepResults }) => {
{/* 目标 */}
-
+
执行目标
diff --git a/src/components/ChatBot/StepResultCard.js b/src/components/ChatBot/StepResultCard.js
index 7f33622c..6d699e70 100644
--- a/src/components/ChatBot/StepResultCard.js
+++ b/src/components/ChatBot/StepResultCard.js
@@ -15,7 +15,7 @@ import {
useColorModeValue,
Divider,
} from '@chakra-ui/react';
-import { FiChevronDown, FiChevronUp, FiCheckCircle, FiXCircle, FiClock, FiDatabase } from 'react-icons/fi';
+import { ChevronDown, ChevronUp, CheckCircle, XCircle, Clock, Database } from 'lucide-react';
/**
* 步骤结果卡片组件
@@ -31,11 +31,11 @@ export const StepResultCard = ({ stepResult }) => {
const getStatusIcon = () => {
switch (stepResult.status) {
case 'success':
- return FiCheckCircle;
+ return CheckCircle;
case 'failed':
- return FiXCircle;
+ return XCircle;
default:
- return FiClock;
+ return Clock;
}
};
@@ -101,7 +101,7 @@ export const StepResultCard = ({ stepResult }) => {
}
+ icon={}
size="sm"
variant="ghost"
aria-label={isExpanded ? "收起" : "展开"}
@@ -117,7 +117,7 @@ export const StepResultCard = ({ stepResult }) => {
{stepResult.arguments && Object.keys(stepResult.arguments).length > 0 && (
-
+
请求参数:
= ({
-
+
{concept?.concept_name} - 相关个股
diff --git a/src/components/Configurator/Configurator.js b/src/components/Configurator/Configurator.js
index 9c8b4242..e23cfb4b 100755
--- a/src/components/Configurator/Configurator.js
+++ b/src/components/Configurator/Configurator.js
@@ -37,7 +37,7 @@ import GitHubButton from "react-github-btn";
import { HSeparator } from "components/Separator/Separator";
import PropTypes from "prop-types";
import React, { useState } from "react";
-import { FaTwitter, FaFacebook } from "react-icons/fa";
+import { Twitter, Facebook } from "lucide-react";
export default function Configurator(props) {
const {
@@ -172,7 +172,7 @@ export default function Configurator(props) {
href='https://twitter.com/intent/tweet?url=https://www.creative-tim.com/product/argon-dashboard-chakra-pro/&text=Check%20Argon%20Dashboard%20Chakra%20PRO%20made%20by%20@simmmple_web%20and%20@CreativeTim'>
}
+ leftIcon={}
me='10px'>
Tweet
@@ -180,7 +180,7 @@ export default function Configurator(props) {
- }>
+ }>
Share
diff --git a/src/components/ConnectionStatusBar/index.js b/src/components/ConnectionStatusBar/index.js
index 738a0368..061c2efd 100644
--- a/src/components/ConnectionStatusBar/index.js
+++ b/src/components/ConnectionStatusBar/index.js
@@ -17,7 +17,7 @@ import {
useColorModeValue,
Slide,
} from '@chakra-ui/react';
-import { MdRefresh } from 'react-icons/md';
+import { RefreshCw } from 'lucide-react';
/**
* 连接状态枚举
@@ -119,7 +119,7 @@ const ConnectionStatusBar = ({
}
+ leftIcon={}
onClick={onRetry}
mr={2}
flexShrink={0}
diff --git a/src/components/ErrorPage/index.tsx b/src/components/ErrorPage/index.tsx
index 568b4c81..f872cb4c 100644
--- a/src/components/ErrorPage/index.tsx
+++ b/src/components/ErrorPage/index.tsx
@@ -14,7 +14,7 @@ import {
Collapse,
useDisclosure,
} from '@chakra-ui/react';
-import { ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons';
+import { ChevronDown, ChevronUp } from 'lucide-react';
import { ExclamationCircleOutlined } from '@ant-design/icons';
import { useNavigate } from 'react-router-dom';
import { trackEventAsync } from '@/lib/posthog';
@@ -362,7 +362,7 @@ const ErrorPage: React.FC = ({
variant="ghost"
size="sm"
color="gray.500"
- rightIcon={isTechOpen ? : }
+ rightIcon={isTechOpen ? : }
onClick={onTechToggle}
_hover={{ bg: 'transparent', color: 'gray.400' }}
>
diff --git a/src/components/EventCommentSection/CommentItem.js b/src/components/EventCommentSection/CommentItem.js
index 9fe3ddf8..2f4aa412 100644
--- a/src/components/EventCommentSection/CommentItem.js
+++ b/src/components/EventCommentSection/CommentItem.js
@@ -23,7 +23,7 @@ import {
Button,
useDisclosure,
} from '@chakra-ui/react';
-import { DeleteIcon } from '@chakra-ui/icons';
+import { Trash2 } from 'lucide-react';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
@@ -117,7 +117,7 @@ const CommentItem = ({ comment, currentUserId, onDelete }) => {
{canDelete && (
}
+ icon={}
size="xs"
variant="ghost"
colorScheme="red"
diff --git a/src/components/EventCommentSection/CommentList.js b/src/components/EventCommentSection/CommentList.js
index 0770e112..e6474953 100644
--- a/src/components/EventCommentSection/CommentList.js
+++ b/src/components/EventCommentSection/CommentList.js
@@ -13,7 +13,7 @@ import {
Box,
useColorModeValue,
} from '@chakra-ui/react';
-import { ChatIcon } from '@chakra-ui/icons';
+import { MessageCircle } from 'lucide-react';
import CommentItem from './CommentItem';
const CommentList = ({ comments, loading, currentUserId, onDelete }) => {
@@ -44,7 +44,7 @@ const CommentList = ({ comments, loading, currentUserId, onDelete }) => {
bg={emptyBgColor}
borderRadius="full"
>
-
+
还没有评论,快来发表第一条吧~
diff --git a/src/components/EventDetailPanel/CollapsibleHeader.js b/src/components/EventDetailPanel/CollapsibleHeader.js
index 6f9de85b..77f02966 100644
--- a/src/components/EventDetailPanel/CollapsibleHeader.js
+++ b/src/components/EventDetailPanel/CollapsibleHeader.js
@@ -11,8 +11,8 @@ import {
IconButton,
Button,
} from '@chakra-ui/react';
-import { ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons';
import { PROFESSIONAL_COLORS } from '@constants/professionalTheme';
+import { ChevronDown, ChevronUp } from 'lucide-react';
/**
* 可折叠模块标题组件
@@ -57,7 +57,7 @@ const CollapsibleHeader = ({
return null; // 简单模式不显示图标
}
// 详细模式:展开显示向上箭头,收起显示向下箭头
- return isOpen ? : ;
+ return isOpen ? : ;
};
return (
@@ -95,7 +95,7 @@ const CollapsibleHeader = ({
{/* 展开/收起图标(showModeToggle 时显示在标题旁边) */}
{showModeToggle && (
: }
+ icon={isOpen ? : }
size="xs"
variant="ghost"
aria-label={isOpen ? '收起' : '展开'}
@@ -125,7 +125,7 @@ const CollapsibleHeader = ({
{/* showModeToggle=false 时显示原有的 IconButton */}
{!showModeToggle && (
: }
+ icon={isOpen ? : }
size="sm"
variant="ghost"
aria-label={isOpen ? '收起' : '展开'}
diff --git a/src/components/EventDetailPanel/CompactMetaBar.js b/src/components/EventDetailPanel/CompactMetaBar.js
index cd84d590..3148ebf6 100644
--- a/src/components/EventDetailPanel/CompactMetaBar.js
+++ b/src/components/EventDetailPanel/CompactMetaBar.js
@@ -9,8 +9,8 @@ import {
Icon,
useColorModeValue,
} from '@chakra-ui/react';
-import { ViewIcon } from '@chakra-ui/icons';
import { EventFollowButton } from '@views/Community/components/EventCard/atoms';
+import { Eye } from 'lucide-react';
/**
* 精简信息栏组件
@@ -79,7 +79,7 @@ const CompactMetaBar = ({ event, importance, isFollowing, followerCount, onToggl
borderRadius="md"
boxShadow="sm"
>
-
+
{(event.view_count || 0).toLocaleString()}
diff --git a/src/components/EventDetailPanel/EventHeaderInfo.js b/src/components/EventDetailPanel/EventHeaderInfo.js
index d88a7eb6..3f787ef0 100644
--- a/src/components/EventDetailPanel/EventHeaderInfo.js
+++ b/src/components/EventDetailPanel/EventHeaderInfo.js
@@ -12,8 +12,8 @@ import {
Icon,
useColorModeValue,
} from '@chakra-ui/react';
-import { ViewIcon } from '@chakra-ui/icons';
import dayjs from 'dayjs';
+import { Eye } from 'lucide-react';
import StockChangeIndicators from '../StockChangeIndicators';
import { EventFollowButton } from '@views/Community/components/EventCard/atoms';
@@ -90,7 +90,7 @@ const EventHeaderInfo = ({ event, importance, isFollowing, followerCount, onTogg
{/* 浏览数 */}
-
+
{(event.view_count || 0).toLocaleString()}次浏览
diff --git a/src/components/EventDetailPanel/RelatedConceptsSection/TradingDateInfo.js b/src/components/EventDetailPanel/RelatedConceptsSection/TradingDateInfo.js
index a3a406a4..32d07641 100644
--- a/src/components/EventDetailPanel/RelatedConceptsSection/TradingDateInfo.js
+++ b/src/components/EventDetailPanel/RelatedConceptsSection/TradingDateInfo.js
@@ -7,7 +7,7 @@ import {
Text,
useColorModeValue,
} from '@chakra-ui/react';
-import { FaCalendarAlt } from 'react-icons/fa';
+import { Calendar } from 'lucide-react';
import dayjs from 'dayjs';
/**
@@ -25,7 +25,7 @@ const TradingDateInfo = ({ effectiveTradingDate, eventTime }) => {
return (
-
+
涨跌幅数据:{effectiveTradingDate}
{eventTime && effectiveTradingDate !== dayjs(eventTime).format('YYYY-MM-DD') && (
diff --git a/src/components/EventDetailPanel/StockListItem.js b/src/components/EventDetailPanel/StockListItem.js
index fedf176c..acb863d1 100644
--- a/src/components/EventDetailPanel/StockListItem.js
+++ b/src/components/EventDetailPanel/StockListItem.js
@@ -16,8 +16,8 @@ import {
Badge,
useColorModeValue,
} from '@chakra-ui/react';
-import { StarIcon } from '@chakra-ui/icons';
import { Tag } from 'antd';
+import { Star } from 'lucide-react';
import { RobotOutlined } from '@ant-design/icons';
import { selectIsMobile } from '@store/slices/deviceSlice';
import { MiniTimelineChart } from '@components/Charts/Stock';
@@ -197,7 +197,7 @@ const StockListItem = ({
size="xs"
variant={isInWatchlist ? 'solid' : 'outline'}
colorScheme={isInWatchlist ? 'yellow' : 'gray'}
- icon={}
+ icon={}
onClick={handleWatchlistClick}
aria-label={isInWatchlist ? '已关注' : '加自选'}
borderRadius="full"
diff --git a/src/components/MiniProgramLauncher/QRCodeDisplay.js b/src/components/MiniProgramLauncher/QRCodeDisplay.js
index a3cbf1b1..fdd194cf 100644
--- a/src/components/MiniProgramLauncher/QRCodeDisplay.js
+++ b/src/components/MiniProgramLauncher/QRCodeDisplay.js
@@ -18,7 +18,7 @@ import {
useDisclosure,
Icon,
} from '@chakra-ui/react';
-import { FiSmartphone } from 'react-icons/fi';
+import { Smartphone } from 'lucide-react';
// 默认小程序码图片(可替换为实际的小程序码)
// 注意:需要在微信公众平台生成小程序码图片
@@ -52,7 +52,7 @@ const QRCodeDisplay = ({
}
+ leftIcon={}
{...buttonProps}
>
{children || '打开小程序'}
diff --git a/src/components/MiniProgramLauncher/UrlSchemeLauncher.js b/src/components/MiniProgramLauncher/UrlSchemeLauncher.js
index 11d68d4b..3d85dfba 100644
--- a/src/components/MiniProgramLauncher/UrlSchemeLauncher.js
+++ b/src/components/MiniProgramLauncher/UrlSchemeLauncher.js
@@ -19,7 +19,7 @@ import {
useToast,
Icon,
} from '@chakra-ui/react';
-import { FiExternalLink, FiCopy, FiCheck } from 'react-icons/fi';
+import { ExternalLink, Copy, Check } from 'lucide-react';
import { isIOSDevice } from './hooks/useWechatEnvironment';
// 小程序 AppID
@@ -145,7 +145,7 @@ const UrlSchemeLauncher = ({
isLoading={loading}
loadingText="正在跳转..."
colorScheme="green"
- leftIcon={}
+ leftIcon={}
style={buttonStyle}
{...buttonProps}
>
@@ -186,7 +186,7 @@ const UrlSchemeLauncher = ({
colorScheme="green"
width="100%"
onClick={handleRetry}
- leftIcon={}
+ leftIcon={}
>
打开微信
@@ -194,7 +194,7 @@ const UrlSchemeLauncher = ({
variant="outline"
width="100%"
onClick={handleCopy}
- leftIcon={}
+ leftIcon={}
>
{copied ? '已复制' : '复制链接'}
diff --git a/src/components/Navbars/AuthNavbar.js b/src/components/Navbars/AuthNavbar.js
index 15084eb3..9935d540 100755
--- a/src/components/Navbars/AuthNavbar.js
+++ b/src/components/Navbars/AuthNavbar.js
@@ -48,8 +48,7 @@ import {
import { SidebarResponsive } from 'components/Sidebar/Sidebar';
import PropTypes from 'prop-types';
import { Fragment } from 'react';
-import { AiFillStar } from 'react-icons/ai';
-import { GoChevronDown, GoChevronRight } from 'react-icons/go';
+import { Star, ChevronDown, ChevronRight } from 'lucide-react';
import { NavLink } from 'react-router-dom';
import { SidebarContext } from 'contexts/SidebarContext';
import routes from 'routes.js';
@@ -313,7 +312,7 @@ export default function AuthNavbar(props) {
{link.name}
-
+
-
+
}
+ icon={}
onClick={clearSearch}
aria-label="清除搜索"
_hover={{ bg: "transparent" }}
diff --git a/src/components/Navbars/components/CalendarButton.js b/src/components/Navbars/components/CalendarButton.js
index 8b2f7a12..3184de44 100644
--- a/src/components/Navbars/components/CalendarButton.js
+++ b/src/components/Navbars/components/CalendarButton.js
@@ -9,7 +9,7 @@ import {
ModalBody,
ModalCloseButton
} from '@chakra-ui/react';
-import { FiCalendar } from 'react-icons/fi';
+import { Calendar } from 'lucide-react';
import InvestmentCalendar from '@components/InvestmentCalendar';
/**
@@ -35,7 +35,7 @@ const CalendarButton = memo(() => {
colorScheme="blue"
variant="solid"
borderRadius="full"
- leftIcon={}
+ leftIcon={}
onClick={() => setIsModalOpen(true)}
>
投资日历
diff --git a/src/components/Navbars/components/FeatureMenus/FollowingEventsMenu.js b/src/components/Navbars/components/FeatureMenus/FollowingEventsMenu.js
index 8e99fb27..7fec7833 100644
--- a/src/components/Navbars/components/FeatureMenus/FollowingEventsMenu.js
+++ b/src/components/Navbars/components/FeatureMenus/FollowingEventsMenu.js
@@ -17,8 +17,7 @@ import {
Spinner,
useColorModeValue
} from '@chakra-ui/react';
-import { ChevronDownIcon } from '@chakra-ui/icons';
-import { FiCalendar } from 'react-icons/fi';
+import { Calendar, ChevronDown } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
import { useFollowingEvents } from '../../../../hooks/useFollowingEvents';
import { getEventDetailUrl } from '@/utils/idEncoder';
@@ -67,8 +66,8 @@ const FollowingEventsMenu = memo(() => {
colorScheme="purple"
variant="solid"
borderRadius="full"
- rightIcon={}
- leftIcon={}
+ rightIcon={}
+ leftIcon={}
>
自选事件
{followingEvents && followingEvents.length > 0 && (
diff --git a/src/components/Navbars/components/FeatureMenus/WatchlistMenu.js b/src/components/Navbars/components/FeatureMenus/WatchlistMenu.js
index 418147bf..1b64012b 100644
--- a/src/components/Navbars/components/FeatureMenus/WatchlistMenu.js
+++ b/src/components/Navbars/components/FeatureMenus/WatchlistMenu.js
@@ -17,8 +17,7 @@ import {
Spinner,
useColorModeValue
} from '@chakra-ui/react';
-import { ChevronDownIcon } from '@chakra-ui/icons';
-import { FiStar } from 'react-icons/fi';
+import { Star, ChevronDown } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
import { useWatchlist } from '../../../../hooks/useWatchlist';
import FavoriteButton from '@/components/FavoriteButton';
@@ -66,8 +65,8 @@ const WatchlistMenu = memo(() => {
colorScheme="teal"
variant="solid"
borderRadius="full"
- rightIcon={}
- leftIcon={}
+ rightIcon={}
+ leftIcon={}
>
自选股
{watchlistQuotes && watchlistQuotes.length > 0 && (
diff --git a/src/components/Navbars/components/NavbarActions/index.js b/src/components/Navbars/components/NavbarActions/index.js
index 23378906..0e804f1a 100644
--- a/src/components/Navbars/components/NavbarActions/index.js
+++ b/src/components/Navbars/components/NavbarActions/index.js
@@ -3,7 +3,7 @@
import React, { memo } from 'react';
import { HStack, IconButton, Box } from '@chakra-ui/react';
-import { HamburgerIcon } from '@chakra-ui/icons';
+import { Menu } from 'lucide-react';
// import ThemeToggleButton from '../ThemeToggleButton'; // ❌ 已删除 - 不再支持深色模式切换
import LoginButton from '../LoginButton';
import CalendarButton from '../CalendarButton';
@@ -84,7 +84,7 @@ const NavbarActions = memo(({
) : (
// 移动端:汉堡菜单(打开抽屉)
}
+ icon={}
variant="ghost"
onClick={onMenuOpen}
aria-label="打开菜单"
diff --git a/src/components/Navbars/components/Navigation/DesktopNav.js b/src/components/Navbars/components/Navigation/DesktopNav.js
index 7932c010..91154cb4 100644
--- a/src/components/Navbars/components/Navigation/DesktopNav.js
+++ b/src/components/Navbars/components/Navigation/DesktopNav.js
@@ -17,7 +17,7 @@ import {
Box,
useColorModeValue
} from '@chakra-ui/react';
-import { ChevronDownIcon } from '@chakra-ui/icons';
+import { ChevronDown } from 'lucide-react';
import { useNavigate, useLocation } from 'react-router-dom';
import { useNavigationEvents } from '../../../../hooks/useNavigationEvents';
import { useDelayedMenu } from '../../../../hooks/useDelayedMenu';
@@ -60,7 +60,7 @@ const DesktopNav = memo(({ isAuthenticated, user }) => {
}
+ rightIcon={}
bg={isActive(['/community', '/concepts']) ? 'blue.600' : 'transparent'}
color={isActive(['/community', '/concepts']) ? 'white' : 'inherit'}
fontWeight={isActive(['/community', '/concepts']) ? 'bold' : 'normal'}
@@ -127,7 +127,7 @@ const DesktopNav = memo(({ isAuthenticated, user }) => {
}
+ rightIcon={}
bg={isActive(['/limit-analyse', '/stocks', '/trading-simulation']) ? 'blue.600' : 'transparent'}
color={isActive(['/limit-analyse', '/stocks', '/trading-simulation']) ? 'white' : 'inherit'}
fontWeight={isActive(['/limit-analyse', '/stocks', '/trading-simulation']) ? 'bold' : 'normal'}
@@ -199,7 +199,7 @@ const DesktopNav = memo(({ isAuthenticated, user }) => {
}
+ rightIcon={}
bg={isActive(['/agent-chat', '/value-forum']) ? 'blue.600' : 'transparent'}
color={isActive(['/agent-chat', '/value-forum']) ? 'white' : 'inherit'}
fontWeight={isActive(['/agent-chat', '/value-forum']) ? 'bold' : 'normal'}
@@ -274,7 +274,7 @@ const DesktopNav = memo(({ isAuthenticated, user }) => {
}
+ rightIcon={}
onMouseEnter={contactUsMenu.handleMouseEnter}
onMouseLeave={contactUsMenu.handleMouseLeave}
onClick={contactUsMenu.handleClick}
diff --git a/src/components/Navbars/components/Navigation/MoreMenu.js b/src/components/Navbars/components/Navigation/MoreMenu.js
index 9b2c349c..5e052d61 100644
--- a/src/components/Navbars/components/Navigation/MoreMenu.js
+++ b/src/components/Navbars/components/Navigation/MoreMenu.js
@@ -14,7 +14,7 @@ import {
HStack,
Badge
} from '@chakra-ui/react';
-import { ChevronDownIcon } from '@chakra-ui/icons';
+import { ChevronDown } from 'lucide-react';
import { useNavigate, useLocation } from 'react-router-dom';
import { useDelayedMenu } from '../../../../hooks/useDelayedMenu';
@@ -45,7 +45,7 @@ const MoreMenu = memo(({ isAuthenticated, user }) => {
}
+ rightIcon={}
fontWeight="medium"
onMouseEnter={moreMenu.handleMouseEnter}
onMouseLeave={moreMenu.handleMouseLeave}
diff --git a/src/components/Navbars/components/Navigation/PersonalCenterMenu.js b/src/components/Navbars/components/Navigation/PersonalCenterMenu.js
index 167e4425..8a84d97b 100644
--- a/src/components/Navbars/components/Navigation/PersonalCenterMenu.js
+++ b/src/components/Navbars/components/Navigation/PersonalCenterMenu.js
@@ -15,9 +15,7 @@ import {
useColorModeValue,
useDisclosure
} from '@chakra-ui/react';
-import { ChevronDownIcon } from '@chakra-ui/icons';
-import { FiHome, FiUser, FiSettings, FiLogOut } from 'react-icons/fi';
-import { FaCrown } from 'react-icons/fa';
+import { ChevronDown, Home, User, Settings, LogOut, Crown } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
/**
@@ -50,7 +48,7 @@ const PersonalCenterMenu = memo(({ user, handleLogout }) => {
as={Button}
size="sm"
variant="ghost"
- rightIcon={}
+ rightIcon={}
_hover={{ bg: hoverBg }}
onMouseEnter={onOpen}
onMouseLeave={onClose}
@@ -70,7 +68,7 @@ const PersonalCenterMenu = memo(({ user, handleLogout }) => {
{/* 前往个人中心 */}
- } onClick={() => {
+ } onClick={() => {
onClose(); // 先关闭菜单
navigate('/home/center');
}}>
@@ -80,13 +78,13 @@ const PersonalCenterMenu = memo(({ user, handleLogout }) => {
{/* 账户管理组 */}
- } onClick={() => {
+ } onClick={() => {
onClose(); // 先关闭菜单
navigate('/home/profile');
}}>
个人资料
- } onClick={() => {
+ } onClick={() => {
onClose(); // 先关闭菜单
navigate('/home/settings');
}}>
@@ -96,7 +94,7 @@ const PersonalCenterMenu = memo(({ user, handleLogout }) => {
{/* 功能入口组 */}
- } onClick={() => {
+ } onClick={() => {
onClose(); // 先关闭菜单
navigate('/home/pages/account/subscription');
}}>
@@ -106,7 +104,7 @@ const PersonalCenterMenu = memo(({ user, handleLogout }) => {
{/* 退出 */}
- } onClick={handleLogout} color="red.500">
+ } onClick={handleLogout} color="red.500">
退出登录
diff --git a/src/components/Navbars/components/ProfileCompletenessAlert/index.js b/src/components/Navbars/components/ProfileCompletenessAlert/index.js
index cc5119d5..a6b5edb4 100644
--- a/src/components/Navbars/components/ProfileCompletenessAlert/index.js
+++ b/src/components/Navbars/components/ProfileCompletenessAlert/index.js
@@ -12,7 +12,7 @@ import {
IconButton,
Icon
} from '@chakra-ui/react';
-import { FiStar } from 'react-icons/fi';
+import { Star } from 'lucide-react';
/**
* 资料完整性提醒横幅组件
@@ -45,7 +45,7 @@ const ProfileCompletenessAlert = memo(({
-
+
完善资料,享受更好服务
diff --git a/src/components/Navbars/components/UserMenu/TabletUserMenu.js b/src/components/Navbars/components/UserMenu/TabletUserMenu.js
index ddb19987..9cca6165 100644
--- a/src/components/Navbars/components/UserMenu/TabletUserMenu.js
+++ b/src/components/Navbars/components/UserMenu/TabletUserMenu.js
@@ -14,8 +14,7 @@ import {
Flex,
useColorModeValue
} from '@chakra-ui/react';
-import { FiStar, FiCalendar, FiUser, FiSettings, FiHome, FiLogOut } from 'react-icons/fi';
-import { FaCrown } from 'react-icons/fa';
+import { Star, Calendar, User, Settings, Home, LogOut, Crown } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
import UserAvatar from './UserAvatar';
import { useSubscription } from '../../../../hooks/useSubscription';
@@ -84,7 +83,7 @@ const TabletUserMenu = memo(({
{/* 订阅管理 - 移动端导航到订阅页面 */}
- } onClick={() => navigate('/home/pages/account/subscription')}>
+ } onClick={() => navigate('/home/pages/account/subscription')}>
订阅管理
@@ -96,12 +95,12 @@ const TabletUserMenu = memo(({
{/* 投资日历 */}
- } onClick={() => navigate('/community')}>
+ } onClick={() => navigate('/community')}>
投资日历
{/* 自选股 */}
- } onClick={() => navigate('/home/center')}>
+ } onClick={() => navigate('/home/center')}>
我的自选股
{watchlistQuotes && watchlistQuotes.length > 0 && (
@@ -111,7 +110,7 @@ const TabletUserMenu = memo(({
{/* 自选事件 */}
- } onClick={() => navigate('/home/center')}>
+ } onClick={() => navigate('/home/center')}>
我的自选事件
{followingEvents && followingEvents.length > 0 && (
@@ -123,20 +122,20 @@ const TabletUserMenu = memo(({
{/* 个人中心 */}
- } onClick={() => navigate('/home/center')}>
+ } onClick={() => navigate('/home/center')}>
个人中心
- } onClick={() => navigate('/home/profile')}>
+ } onClick={() => navigate('/home/profile')}>
个人资料
- } onClick={() => navigate('/home/settings')}>
+ } onClick={() => navigate('/home/settings')}>
账户设置
{/* 退出登录 */}
- } onClick={handleLogout} color="red.500">
+ } onClick={handleLogout} color="red.500">
退出登录
diff --git a/src/components/NotificationContainer/index.js b/src/components/NotificationContainer/index.js
index 4bb338d4..47f45539 100644
--- a/src/components/NotificationContainer/index.js
+++ b/src/components/NotificationContainer/index.js
@@ -19,7 +19,7 @@ import {
} from '@chakra-ui/react';
import { keyframes } from '@emotion/react';
import { motion, AnimatePresence } from 'framer-motion';
-import { MdClose, MdOpenInNew, MdSchedule, MdExpandMore, MdExpandLess, MdPerson, MdAccessTime } from 'react-icons/md';
+import { X, ExternalLink, Clock as ClockIcon, ChevronDown, ChevronUp, User, Clock } from 'lucide-react';
import { useNotification } from '../../contexts/NotificationContext';
import {
NOTIFICATION_TYPE_CONFIGS,
@@ -479,7 +479,7 @@ const NotificationItem = React.memo(({ notification, onClose, isNewest = false }
{/* 关闭按钮 */}
}
+ icon={}
size="xs"
variant="ghost"
colorScheme={typeConfig.colorScheme}
@@ -524,7 +524,7 @@ const NotificationItem = React.memo(({ notification, onClose, isNewest = false }
>
{/* 时间信息 */}
-
+
{publishTime && formatNotificationTime(publishTime)}
{!publishTime && pushTime && formatNotificationTime(pushTime)}
@@ -553,7 +553,7 @@ const NotificationItem = React.memo(({ notification, onClose, isNewest = false }
预测
{extra?.statusHint && (
<>
-
+
{extra.statusHint}
>
)}
@@ -566,7 +566,7 @@ const NotificationItem = React.memo(({ notification, onClose, isNewest = false }
<>
|
-
+
{author.name} - {author.organization}
>
@@ -581,7 +581,7 @@ const NotificationItem = React.memo(({ notification, onClose, isNewest = false }
{isNavigating ? (
) : (
-
+
)}
{/* Loading 时显示"跳转中...",否则显示"查看详情" */}
@@ -734,7 +734,7 @@ const NotificationContainer = () => {
outlineColor: 'blue.500',
outlineOffset: '2px',
}}
- leftIcon={}
+ leftIcon={}
onClick={() => setIsExpanded(!isExpanded)}
aria-expanded={isExpanded}
aria-label={isExpanded ? '收起通知' : `展开查看还有 ${hiddenCount} 条通知`}
diff --git a/src/components/PerformancePanel.tsx b/src/components/PerformancePanel.tsx
index b63a67a3..3e02d89e 100644
--- a/src/components/PerformancePanel.tsx
+++ b/src/components/PerformancePanel.tsx
@@ -27,7 +27,7 @@ import {
DrawerContent,
DrawerCloseButton,
} from '@chakra-ui/react';
-import { MdSpeed, MdClose, MdRefresh, MdFileDownload } from 'react-icons/md';
+import { Gauge, X, RefreshCw, Download } from 'lucide-react';
import { performanceMonitor } from '@/utils/performanceMonitor';
/**
@@ -98,7 +98,7 @@ export const PerformancePanel: React.FC = () => {
{/* 浮动按钮 */}
}
+ icon={}
position="fixed"
bottom="100px"
right="20px"
@@ -117,7 +117,7 @@ export const PerformancePanel: React.FC = () => {
-
+
性能监控面板
@@ -128,7 +128,7 @@ export const PerformancePanel: React.FC = () => {
{/* 操作按钮 */}
}
+ leftIcon={}
size="sm"
colorScheme="blue"
onClick={refreshData}
@@ -136,7 +136,7 @@ export const PerformancePanel: React.FC = () => {
刷新数据
}
+ leftIcon={}
size="sm"
colorScheme="green"
onClick={exportJSON}
diff --git a/src/components/StockChangeIndicators.js b/src/components/StockChangeIndicators.js
index 2fd4a3bb..d00d0b30 100644
--- a/src/components/StockChangeIndicators.js
+++ b/src/components/StockChangeIndicators.js
@@ -3,7 +3,7 @@
import React from 'react';
import { Flex, Box, Text, useColorModeValue } from '@chakra-ui/react';
-import { TriangleUpIcon, TriangleDownIcon } from '@chakra-ui/icons';
+import { ChevronUp, ChevronDown } from 'lucide-react';
import { getChangeColor } from '../utils/colorUtils';
/**
@@ -108,16 +108,12 @@ const StockChangeIndicators = ({
{/* 三角形图标 */}
{value !== 0 && (
value > 0 ? (
-
) : (
-
)
)}
diff --git a/src/components/SubTabContainer/index.tsx b/src/components/SubTabContainer/index.tsx
index 971516c1..c0e3643e 100644
--- a/src/components/SubTabContainer/index.tsx
+++ b/src/components/SubTabContainer/index.tsx
@@ -35,7 +35,7 @@ import {
Spinner,
} from '@chakra-ui/react';
import type { ComponentType } from 'react';
-import type { IconType } from 'react-icons';
+import type { LucideIcon } from 'lucide-react';
/**
* Tab 配置项
@@ -43,7 +43,7 @@ import type { IconType } from 'react-icons';
export interface SubTabConfig {
key: string;
name: string;
- icon?: IconType | ComponentType;
+ icon?: LucideIcon | ComponentType;
component?: ComponentType;
/** 自定义 Suspense fallback(如骨架屏) */
fallback?: React.ReactNode;
diff --git a/src/components/Subscription/SubscriptionContent.js b/src/components/Subscription/SubscriptionContent.js
index 2075b4ae..b3e809c5 100644
--- a/src/components/Subscription/SubscriptionContent.js
+++ b/src/components/Subscription/SubscriptionContent.js
@@ -42,19 +42,19 @@ import { useSubscriptionEvents } from '../../hooks/useSubscriptionEvents';
// Icons
import {
- FaWeixin,
- FaGem,
- FaCheck,
- FaQrcode,
- FaClock,
- FaRedo,
- FaCrown,
- FaStar,
- FaTimes,
- FaInfinity,
- FaChevronDown,
- FaChevronUp,
-} from 'react-icons/fa';
+ Crown,
+ Star,
+ Check,
+ QrCode,
+ Clock,
+ RefreshCw,
+ X,
+ Infinity,
+ ChevronDown,
+ ChevronUp,
+ Gem,
+} from 'lucide-react';
+import { WechatOutlined } from '@ant-design/icons';
import { getApiBase } from '../../utils/apiConfig';
// 会员协议 URL 配置
@@ -761,7 +761,7 @@ export default function SubscriptionContent() {
)}
{user.subscription_status === 'active' && user.subscription_type !== 'free' && (
@@ -909,7 +909,7 @@ export default function SubscriptionContent() {
@@ -945,7 +945,7 @@ export default function SubscriptionContent() {
return (
@@ -1139,7 +1139,7 @@ export default function SubscriptionContent() {
return (
@@ -1260,7 +1260,7 @@ export default function SubscriptionContent() {
支持哪些支付方式?
@@ -1294,7 +1294,7 @@ export default function SubscriptionContent() {
升级或切换套餐时,原套餐的费用怎么办?
@@ -1342,7 +1342,7 @@ export default function SubscriptionContent() {
可以在月付和年付之间切换吗?
@@ -1376,7 +1376,7 @@ export default function SubscriptionContent() {
是否支持退款?
@@ -1430,7 +1430,7 @@ export default function SubscriptionContent() {
Pro版和Max版有什么区别?
@@ -1467,7 +1467,7 @@ export default function SubscriptionContent() {
-
+
微信支付
@@ -1509,7 +1509,7 @@ export default function SubscriptionContent() {
{priceInfo && priceInfo.is_upgrade && (
-
+
{priceInfo.upgrade_type === 'plan_upgrade' ? '套餐升级' :
priceInfo.upgrade_type === 'cycle_change' ? '周期变更' : '套餐和周期调整'}
@@ -1601,12 +1601,12 @@ export default function SubscriptionContent() {
)}
{promoCodeApplied && priceInfo && (
-
+
优惠码已应用!节省 ¥{priceInfo.discount_amount.toFixed(2)}
}
+ leftIcon={}
onClick={() => {
if (!agreementChecked) {
toast({
@@ -1673,7 +1673,7 @@ export default function SubscriptionContent() {
{/* 倒计时 */}
-
+
二维码有效时间: {formatTime(paymentCountdown)}
@@ -1710,7 +1710,7 @@ export default function SubscriptionContent() {
borderColor={borderColor}
borderRadius="lg"
>
-
+
)}
@@ -1734,7 +1734,7 @@ export default function SubscriptionContent() {
}
+ leftIcon={}
onClick={handleCheckPaymentStatus}
isLoading={checkingPayment}
loadingText="检查中..."
diff --git a/src/components/Subscription/SubscriptionContentNew.tsx b/src/components/Subscription/SubscriptionContentNew.tsx
index c8965031..f3c56ebf 100644
--- a/src/components/Subscription/SubscriptionContentNew.tsx
+++ b/src/components/Subscription/SubscriptionContentNew.tsx
@@ -27,20 +27,19 @@ import {
Link as ChakraLink,
} from '@chakra-ui/react';
import {
- FaWeixin,
- FaGem,
- FaCheck,
- FaQrcode,
- FaClock,
- FaRedo,
- FaCrown,
- FaStar,
- FaTimes,
- FaChevronDown,
- FaChevronUp,
- FaExternalLinkAlt,
-} from 'react-icons/fa';
-import { AlipayCircleOutlined } from '@ant-design/icons';
+ Crown,
+ Star,
+ Check,
+ QrCode,
+ Clock,
+ RefreshCw,
+ X,
+ ChevronDown,
+ ChevronUp,
+ ExternalLink,
+ Gem,
+} from 'lucide-react';
+import { AlipayCircleOutlined, WechatOutlined } from '@ant-design/icons';
import { logger } from '../../utils/logger';
import { useAuth } from '../../contexts/AuthContext';
@@ -825,11 +824,11 @@ export default function SubscriptionContentNew() {
const getIconComponent = (iconName: string) => {
const icons: any = {
- star: FaStar,
- gem: FaGem,
- crown: FaCrown,
+ star: Star,
+ gem: Gem,
+ crown: Crown,
};
- return icons[iconName] || FaStar;
+ return icons[iconName] || Star;
};
// 获取按钮文字
@@ -967,7 +966,7 @@ export default function SubscriptionContentNew() {
@@ -1003,7 +1002,7 @@ export default function SubscriptionContentNew() {
-
+
到期时间
@@ -1065,7 +1064,7 @@ export default function SubscriptionContentNew() {
if (currentOption && currentOption.discountPercent > 0) {
return (
-
+
当前选择可节省 {currentOption.discountPercent}% 的费用
@@ -1285,7 +1284,7 @@ export default function SubscriptionContentNew() {
}
>
@@ -1360,7 +1359,7 @@ export default function SubscriptionContentNew() {
{faq.question}
@@ -1423,7 +1422,7 @@ export default function SubscriptionContentNew() {
transition="all 0.2s"
>
-
+
微信支付
@@ -1460,7 +1459,7 @@ export default function SubscriptionContentNew() {
border="1px solid rgba(76, 175, 80, 0.3)"
>
-
+
{priceInfo.final_amount === 0
? `恭喜!您的当前订阅剩余价值足够直接升级到${selectedPlan.displayName},无需支付额外费用!`
@@ -1477,7 +1476,7 @@ export default function SubscriptionContentNew() {
border="1px solid rgba(255, 165, 0, 0.3)"
>
-
+
当前{priceInfo.current_plan?.toUpperCase()}订阅到期后自动切换到{selectedPlan.displayName}
@@ -1492,7 +1491,7 @@ export default function SubscriptionContentNew() {
border="1px solid rgba(33, 150, 243, 0.3)"
>
-
+
续费{selectedPlan.displayName},在当前到期日基础上延长时长
@@ -1536,7 +1535,7 @@ export default function SubscriptionContentNew() {
{promoCodeApplied && priceInfo.discount_amount > 0 && (
-
+
优惠码折扣
@@ -1606,12 +1605,12 @@ export default function SubscriptionContentNew() {
borderRadius="md"
border="1px solid rgba(72, 187, 120, 0.3)"
>
-
+
优惠码已应用!节省 ¥{priceInfo.discount_amount.toFixed(2)}
- : }
+ : }
_hover={{
bgGradient: paymentMethod === 'alipay'
? 'linear-gradient(135deg, #4096ff, #1677FF)'
@@ -1770,7 +1769,7 @@ export default function SubscriptionContentNew() {
w="full"
>
-
+
订单有效时间: {formatTime(paymentCountdown)}
@@ -1810,7 +1809,7 @@ export default function SubscriptionContentNew() {
borderColor="rgba(255, 255, 255, 0.2)"
borderRadius="lg"
>
-
+
)}
@@ -1845,7 +1844,7 @@ export default function SubscriptionContentNew() {
bgGradient="linear-gradient(135deg, #1677FF, #0958d9)"
color="white"
fontWeight="bold"
- leftIcon={}
+ leftIcon={}
onClick={handleReopenAlipay}
_hover={{
bgGradient: 'linear-gradient(135deg, #4096ff, #1677FF)',
@@ -1864,7 +1863,7 @@ export default function SubscriptionContentNew() {
bgGradient="linear-gradient(135deg, #D4AF37, #B8941F)"
color="#000"
fontWeight="bold"
- leftIcon={}
+ leftIcon={}
onClick={handleForceUpdate}
isLoading={forceUpdating}
_hover={{
diff --git a/src/components/Subscription/SubscriptionModal.js b/src/components/Subscription/SubscriptionModal.js
index 3b1f96eb..5fdec1c1 100644
--- a/src/components/Subscription/SubscriptionModal.js
+++ b/src/components/Subscription/SubscriptionModal.js
@@ -12,7 +12,7 @@ import {
Text,
useColorModeValue,
} from '@chakra-ui/react';
-import { FiStar } from 'react-icons/fi';
+import { Star } from 'lucide-react';
import PropTypes from 'prop-types';
import SubscriptionContent from './SubscriptionContent';
@@ -23,7 +23,7 @@ export default function SubscriptionModal({ isOpen, onClose }) {
-
+
订阅管理
diff --git a/src/components/SubscriptionBadge.js b/src/components/SubscriptionBadge.js
index 34ed24c1..85ef6f80 100644
--- a/src/components/SubscriptionBadge.js
+++ b/src/components/SubscriptionBadge.js
@@ -9,7 +9,7 @@ import {
Text,
useColorModeValue,
} from '@chakra-ui/react';
-import { FaStar, FaCrown } from 'react-icons/fa';
+import { Star, Crown } from 'lucide-react';
import { logger } from '../utils/logger';
/**
@@ -23,13 +23,13 @@ const SubscriptionBadge = ({ tier = 'pro', size = 'sm' }) => {
const config = {
pro: {
label: 'PRO专享',
- icon: FaStar,
+ icon: Star,
bgGradient: 'linear(to-r, blue.400, purple.500)',
color: 'white',
},
max: {
label: 'MAX专享',
- icon: FaCrown,
+ icon: Crown,
bgGradient: 'linear(to-r, pink.400, red.500)',
color: 'white',
},
diff --git a/src/components/SubscriptionUpgradeModal.js b/src/components/SubscriptionUpgradeModal.js
index df52a79d..78c08d7f 100644
--- a/src/components/SubscriptionUpgradeModal.js
+++ b/src/components/SubscriptionUpgradeModal.js
@@ -17,7 +17,7 @@ import {
Icon,
Divider
} from '@chakra-ui/react';
-import { FaCrown, FaLock, FaStar, FaRocket } from 'react-icons/fa';
+import { Crown, Lock, Star, Rocket } from 'lucide-react';
const SubscriptionUpgradeModal = ({
isOpen,
@@ -34,19 +34,19 @@ const SubscriptionUpgradeModal = ({
const subscriptionLevels = {
free: {
name: '免费版',
- icon: FaLock,
+ icon: Lock,
color: 'gray',
features: ['基础事件浏览', '有限历史事件查看']
},
pro: {
name: 'Pro版',
- icon: FaStar,
+ icon: Star,
color: 'blue',
features: ['相关标的分析', '相关概念分析', '完整历史事件']
},
max: {
name: 'Max版',
- icon: FaCrown,
+ icon: Crown,
color: 'purple',
features: ['传导链分析', '高级分析工具', '实时数据推送', '所有Pro版功能']
}
@@ -66,7 +66,7 @@ const SubscriptionUpgradeModal = ({
-
+
需要{requiredLevelInfo.name}订阅
@@ -138,13 +138,13 @@ const SubscriptionUpgradeModal = ({
{/* 升级提示 */}
-
-
+
升级到{requiredLevelInfo.name}即可解锁此功能
@@ -158,9 +158,9 @@ const SubscriptionUpgradeModal = ({
稍后再说
- }
+ leftIcon={}
onClick={handleUpgrade}
>
立即升级
diff --git a/src/components/TabContainer/types.ts b/src/components/TabContainer/types.ts
index 6845e48f..61fcb264 100644
--- a/src/components/TabContainer/types.ts
+++ b/src/components/TabContainer/types.ts
@@ -3,7 +3,7 @@
*/
import type { ComponentType, ReactNode } from 'react';
-import type { IconType } from 'react-icons';
+import type { LucideIcon } from 'lucide-react';
/**
* Tab 配置项
@@ -14,7 +14,7 @@ export interface TabConfig {
/** Tab 显示名称 */
name: string;
/** Tab 图标(可选) */
- icon?: IconType | ComponentType;
+ icon?: LucideIcon | ComponentType;
/** Tab 内容组件(可选,如果不传则使用 children 渲染) */
component?: ComponentType;
}
diff --git a/src/components/Tables/BasicTable.js b/src/components/Tables/BasicTable.js
index 8b116d8b..ea92b582 100755
--- a/src/components/Tables/BasicTable.js
+++ b/src/components/Tables/BasicTable.js
@@ -35,12 +35,7 @@ import {
Tr,
} from "@chakra-ui/react";
import React, { useMemo } from "react";
-import { GrFormNext, GrFormPrevious } from "react-icons/gr";
-import {
- TiArrowSortedDown,
- TiArrowSortedUp,
- TiArrowUnsorted,
-} from "react-icons/ti";
+import { ChevronRight, ChevronLeft, ChevronDown, ChevronUp, ChevronsUpDown } from "lucide-react";
import { usePagination, useSortBy, useTable } from "react-table";
function BasicTable(props) {
@@ -142,9 +137,9 @@ function BasicTable(props) {
as={
column.isSorted
? column.isSortedDesc
- ? TiArrowSortedDown
- : TiArrowSortedUp
- : TiArrowUnsorted
+ ? ChevronDown
+ : ChevronUp
+ : ChevronsUpDown
}
/>
@@ -211,7 +206,7 @@ function BasicTable(props) {
borderColor: "gray.500",
}}
>
-
+
{pageSize === 5 ? (
-
+
diff --git a/src/components/Tables/BillingRow.js b/src/components/Tables/BillingRow.js
index 52201f9e..6ba3b4ba 100755
--- a/src/components/Tables/BillingRow.js
+++ b/src/components/Tables/BillingRow.js
@@ -24,7 +24,7 @@ import {
useColorModeValue,
} from "@chakra-ui/react";
import React from "react";
-import { FaPencilAlt, FaTrashAlt } from "react-icons/fa";
+import { Pencil, Trash2 } from "lucide-react";
function BillingRow(props) {
const textColor = useColorModeValue("gray.700", "white");
@@ -70,7 +70,7 @@ function BillingRow(props) {
me={{ md: "12px" }}
>
-
+
DELETE
@@ -78,7 +78,7 @@ function BillingRow(props) {
-
+
EDIT
diff --git a/src/components/Tables/SearchTable1.js b/src/components/Tables/SearchTable1.js
index 6b00e892..46e6dbd9 100755
--- a/src/components/Tables/SearchTable1.js
+++ b/src/components/Tables/SearchTable1.js
@@ -36,12 +36,7 @@ import {
Tr,
} from "@chakra-ui/react";
import React, { useMemo } from "react";
-import { GrFormNext, GrFormPrevious } from "react-icons/gr";
-import {
- TiArrowSortedDown,
- TiArrowSortedUp,
- TiArrowUnsorted,
-} from "react-icons/ti";
+import { ChevronRight, ChevronLeft, ChevronDown, ChevronUp, ChevronsUpDown } from "lucide-react";
import {
useGlobalFilter,
usePagination,
@@ -165,9 +160,9 @@ function SearchTable1(props) {
as={
column.isSorted
? column.isSortedDesc
- ? TiArrowSortedDown
- : TiArrowSortedUp
- : TiArrowUnsorted
+ ? ChevronDown
+ : ChevronUp
+ : ChevronsUpDown
}
/>
@@ -235,7 +230,7 @@ function SearchTable1(props) {
borderColor: "gray.500",
}}
>
-
+
{pageSize === 5 ? (
-
+
diff --git a/src/components/Tables/SearchTable2.js b/src/components/Tables/SearchTable2.js
index 0f9c1eae..2211c3ca 100755
--- a/src/components/Tables/SearchTable2.js
+++ b/src/components/Tables/SearchTable2.js
@@ -40,15 +40,7 @@ import {
} from "@chakra-ui/react";
import React, { useMemo } from "react";
import { SearchBar } from "components/Navbars/SearchBar/SearchBar";
-import { MdReplay, MdCheck } from "react-icons/md";
-import { IoMdClose } from "react-icons/io";
-import { FaCheckCircle, FaTimesCircle, FaUndoAlt } from "react-icons/fa";
-import { GrFormNext, GrFormPrevious } from "react-icons/gr";
-import {
- TiArrowSortedDown,
- TiArrowSortedUp,
- TiArrowUnsorted,
-} from "react-icons/ti";
+import { RotateCcw, Check, X, CheckCircle, XCircle, Undo2, ChevronRight, ChevronLeft, ChevronDown, ChevronUp, ChevronsUpDown } from "lucide-react";
import {
useGlobalFilter,
usePagination,
@@ -145,9 +137,9 @@ function SearchTable2(props) {
as={
column.isSorted
? column.isSortedDesc
- ? TiArrowSortedDown
- : TiArrowSortedUp
- : TiArrowUnsorted
+ ? ChevronDown
+ : ChevronUp
+ : ChevronsUpDown
}
/>
@@ -185,10 +177,10 @@ function SearchTable2(props) {
-
+
{pageSize === 5 ? (
-
+
diff --git a/src/components/Tables/TablesProjectRow.js b/src/components/Tables/TablesProjectRow.js
index 14d9ecaa..4c272282 100755
--- a/src/components/Tables/TablesProjectRow.js
+++ b/src/components/Tables/TablesProjectRow.js
@@ -26,7 +26,7 @@ import {
useColorModeValue,
} from "@chakra-ui/react";
import React from "react";
-import { FaEllipsisV } from "react-icons/fa";
+import { MoreVertical } from "lucide-react";
function DashboardTableRow(props) {
const { logo, name, status, budget, progression } = props;
@@ -74,7 +74,7 @@ function DashboardTableRow(props) {
-
+
|
diff --git a/src/components/Tables/TablesReportsRow.js b/src/components/Tables/TablesReportsRow.js
index 7410d51e..0dc61cc2 100755
--- a/src/components/Tables/TablesReportsRow.js
+++ b/src/components/Tables/TablesReportsRow.js
@@ -25,7 +25,7 @@ import {
useColorModeValue,
} from "@chakra-ui/react";
import React from "react";
-import { BsCircleFill } from "react-icons/bs";
+import { Circle } from "lucide-react";
function TablesReportsRow(props) {
const {
@@ -99,9 +99,10 @@ function TablesReportsRow(props) {
>
= ({
<>
{/* 标签 */}
- {showIcon && }
+ {showIcon && }
{label}:
@@ -157,7 +156,7 @@ const TradeDatePicker: React.FC = ({
_hover={{ opacity: 1 }}
transition="opacity 0.2s"
>
-
+
数据更新至 {latestTradeDate.toLocaleDateString('zh-CN')}