refactor(StockOverview): 迁移毛玻璃效果到统一配置 - 批次4
- index.js: 使用 GLASS_BLUR.lg 替代 blur(20px) - glassTheme.js: 从全局 glassConfig 导入配置 - FlexScreen/index.tsx: 使用 GLASS_BLUR.lg - QuoteTile.tsx: 使用 GLASS_BLUR.sm - AlertDetailDrawer.js: 使用 GLASS_BLUR.xs/lg 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,7 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
import MiniTimelineChart from './MiniTimelineChart';
|
import MiniTimelineChart from './MiniTimelineChart';
|
||||||
import OrderBookPanel from './OrderBookPanel';
|
import OrderBookPanel from './OrderBookPanel';
|
||||||
import type { QuoteTileProps, QuoteData } from '../types';
|
import type { QuoteTileProps, QuoteData } from '../types';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 格式化价格显示
|
* 格式化价格显示
|
||||||
@@ -141,7 +142,7 @@ const QuoteTile: React.FC<QuoteTileProps> = ({
|
|||||||
borderRadius="lg"
|
borderRadius="lg"
|
||||||
overflow="hidden"
|
overflow="hidden"
|
||||||
transition="all 0.2s"
|
transition="all 0.2s"
|
||||||
backdropFilter="blur(10px)"
|
backdropFilter={GLASS_BLUR.sm}
|
||||||
_hover={{
|
_hover={{
|
||||||
borderColor: hoverBorderColor,
|
borderColor: hoverBorderColor,
|
||||||
boxShadow: '0 4px 20px rgba(139, 92, 246, 0.2)',
|
boxShadow: '0 4px 20px rgba(139, 92, 246, 0.2)',
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import QuoteTile from './components/QuoteTile';
|
|||||||
import { logger } from '@utils/logger';
|
import { logger } from '@utils/logger';
|
||||||
import { getApiBase } from '@utils/apiConfig';
|
import { getApiBase } from '@utils/apiConfig';
|
||||||
import type { WatchlistItem, ConnectionStatus } from './types';
|
import type { WatchlistItem, ConnectionStatus } from './types';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// 本地存储 key
|
// 本地存储 key
|
||||||
const STORAGE_KEY = 'flexscreen_watchlist';
|
const STORAGE_KEY = 'flexscreen_watchlist';
|
||||||
@@ -278,7 +279,7 @@ const FlexScreen: React.FC = () => {
|
|||||||
bg={cardBg}
|
bg={cardBg}
|
||||||
borderWidth="1px"
|
borderWidth="1px"
|
||||||
borderColor={borderColor}
|
borderColor={borderColor}
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
borderRadius="16px"
|
borderRadius="16px"
|
||||||
>
|
>
|
||||||
<CardBody>
|
<CardBody>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
Portal,
|
Portal,
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { keyframes, css } from '@emotion/react';
|
import { keyframes, css } from '@emotion/react';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
import {
|
import {
|
||||||
Clock,
|
Clock,
|
||||||
Zap,
|
Zap,
|
||||||
@@ -451,10 +452,10 @@ const AlertDetailDrawer = ({ isOpen, onClose, alertData }) => {
|
|||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
size="md"
|
size="md"
|
||||||
>
|
>
|
||||||
<DrawerOverlay bg="rgba(0, 0, 0, 0.6)" backdropFilter="blur(4px)" />
|
<DrawerOverlay bg="rgba(0, 0, 0, 0.6)" backdropFilter={GLASS_BLUR.xs} />
|
||||||
<DrawerContent
|
<DrawerContent
|
||||||
bg="rgba(10, 10, 15, 0.95)"
|
bg="rgba(10, 10, 15, 0.95)"
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
borderLeft="1px solid rgba(255, 255, 255, 0.1)"
|
borderLeft="1px solid rgba(255, 255, 255, 0.1)"
|
||||||
>
|
>
|
||||||
<DrawerCloseButton
|
<DrawerCloseButton
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ import { echarts } from '@lib/echarts';
|
|||||||
import { logger } from '../../utils/logger';
|
import { logger } from '../../utils/logger';
|
||||||
import tradingDays from '../../data/tradingDays.json';
|
import tradingDays from '../../data/tradingDays.json';
|
||||||
import { useStockOverviewEvents } from './hooks/useStockOverviewEvents';
|
import { useStockOverviewEvents } from './hooks/useStockOverviewEvents';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// 交易日 Set,用于快速查找
|
// 交易日 Set,用于快速查找
|
||||||
const tradingDaysSet = new Set(tradingDays);
|
const tradingDaysSet = new Set(tradingDays);
|
||||||
@@ -894,7 +895,7 @@ const StockOverview = () => {
|
|||||||
) : (
|
) : (
|
||||||
<Card
|
<Card
|
||||||
bg={cardBg}
|
bg={cardBg}
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
borderWidth="1px"
|
borderWidth="1px"
|
||||||
borderColor={borderColor}
|
borderColor={borderColor}
|
||||||
borderRadius="24px"
|
borderRadius="24px"
|
||||||
|
|||||||
@@ -3,8 +3,12 @@
|
|||||||
*
|
*
|
||||||
* 设计理念:打造漂浮在深空中的半透明玻璃态数据终端
|
* 设计理念:打造漂浮在深空中的半透明玻璃态数据终端
|
||||||
* 强调光影深度、弥散背景光和极致圆角
|
* 强调光影深度、弥散背景光和极致圆角
|
||||||
|
*
|
||||||
|
* 注意: 毛玻璃效果配置已迁移至全局 @/constants/glassConfig.ts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { GLASS_BLUR, GLASS_BG, GLASS_BORDER, GLASS_SHADOW } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// 极光背景渐变配置
|
// 极光背景渐变配置
|
||||||
export const auroraGradients = {
|
export const auroraGradients = {
|
||||||
// 主背景 - 深空极光
|
// 主背景 - 深空极光
|
||||||
@@ -27,42 +31,42 @@ export const auroraGradients = {
|
|||||||
`,
|
`,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 毛玻璃效果配置
|
// 毛玻璃效果配置 - 使用全局统一配置
|
||||||
export const glassEffect = {
|
export const glassEffect = {
|
||||||
// 标准玻璃卡片
|
// 标准玻璃卡片
|
||||||
card: {
|
card: {
|
||||||
bg: 'rgba(255, 255, 255, 0.03)',
|
bg: GLASS_BG.medium,
|
||||||
backdropFilter: 'blur(20px) saturate(180%)',
|
backdropFilter: `${GLASS_BLUR.lg} saturate(180%)`,
|
||||||
border: '1px solid rgba(255, 255, 255, 0.08)',
|
border: GLASS_BORDER.light,
|
||||||
borderRadius: '24px',
|
borderRadius: '24px',
|
||||||
boxShadow: `
|
boxShadow: `
|
||||||
0 8px 32px rgba(0, 0, 0, 0.3),
|
${GLASS_SHADOW.md},
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.05)
|
${GLASS_SHADOW.inset}
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
// 轻量玻璃 - 用于内部元素
|
// 轻量玻璃 - 用于内部元素
|
||||||
light: {
|
light: {
|
||||||
bg: 'rgba(255, 255, 255, 0.02)',
|
bg: GLASS_BG.light,
|
||||||
backdropFilter: 'blur(12px)',
|
backdropFilter: GLASS_BLUR.md,
|
||||||
border: '1px solid rgba(255, 255, 255, 0.05)',
|
border: GLASS_BORDER.subtle,
|
||||||
borderRadius: '16px',
|
borderRadius: '16px',
|
||||||
},
|
},
|
||||||
// 强调玻璃 - 用于重要元素
|
// 强调玻璃 - 用于重要元素
|
||||||
accent: {
|
accent: {
|
||||||
bg: 'rgba(139, 92, 246, 0.1)',
|
bg: 'rgba(139, 92, 246, 0.1)',
|
||||||
backdropFilter: 'blur(16px) saturate(200%)',
|
backdropFilter: `${GLASS_BLUR.md} saturate(200%)`,
|
||||||
border: '1px solid rgba(139, 92, 246, 0.2)',
|
border: '1px solid rgba(139, 92, 246, 0.2)',
|
||||||
borderRadius: '20px',
|
borderRadius: '20px',
|
||||||
boxShadow: '0 4px 24px rgba(139, 92, 246, 0.15)',
|
boxShadow: '0 4px 24px rgba(139, 92, 246, 0.15)',
|
||||||
},
|
},
|
||||||
// 悬浮玻璃 - 用于弹出层
|
// 悬浮玻璃 - 用于弹出层
|
||||||
floating: {
|
floating: {
|
||||||
bg: 'rgba(20, 20, 30, 0.9)',
|
bg: GLASS_BG.overlay,
|
||||||
backdropFilter: 'blur(24px) saturate(200%)',
|
backdropFilter: `${GLASS_BLUR.lg} saturate(200%)`,
|
||||||
border: '1px solid rgba(255, 255, 255, 0.1)',
|
border: GLASS_BORDER.light,
|
||||||
borderRadius: '20px',
|
borderRadius: '20px',
|
||||||
boxShadow: `
|
boxShadow: `
|
||||||
0 25px 50px -12px rgba(0, 0, 0, 0.5),
|
${GLASS_SHADOW.lg},
|
||||||
0 0 0 1px rgba(255, 255, 255, 0.05)
|
0 0 0 1px rgba(255, 255, 255, 0.05)
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
@@ -259,8 +263,8 @@ export const presets = {
|
|||||||
export const tooltipStyles = {
|
export const tooltipStyles = {
|
||||||
container: {
|
container: {
|
||||||
bg: 'rgba(15, 15, 25, 0.95)',
|
bg: 'rgba(15, 15, 25, 0.95)',
|
||||||
backdropFilter: 'blur(16px)',
|
backdropFilter: GLASS_BLUR.md,
|
||||||
border: '1px solid rgba(255, 255, 255, 0.1)',
|
border: GLASS_BORDER.light,
|
||||||
borderRadius: '12px',
|
borderRadius: '12px',
|
||||||
boxShadow: '0 20px 40px rgba(0, 0, 0, 0.5)',
|
boxShadow: '0 20px 40px rgba(0, 0, 0, 0.5)',
|
||||||
p: 3,
|
p: 3,
|
||||||
|
|||||||
Reference in New Issue
Block a user