refactor(glass): 批次1 - 迁移全局组件使用统一毛玻璃配置
迁移以下 10 个组件使用 glassConfig.ts 统一配置: - GlassCard: GLASS_BLUR/GLASS_SHADOW 替换硬编码 blur/glow - SubTabContainer: GLASS_BLUR.lg 替换 blur(20px) - HomeNavbar: GLASS_BLUR.sm 替换 blur(10px) - AuthModalManager: GLASS_BLUR.sm 替换 blur(10px) - WechatRegister: GLASS_BLUR.xs 替换 blur(4px) - SubscriptionModal: GLASS_BLUR.xs 替换 blur(4px) - SubscriptionContentNew: GLASS_BLUR.sm/lg/xl 替换多处硬编码 - ImageLightbox: GLASS_BLUR.sm 替换 blur(10px) - ImagePreviewModal: GLASS_BLUR.sm 替换 blur(10px) - FuiContainer: GLASS_BLUR.md 替换 blur(16px) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { useAuthModal } from '../../hooks/useAuthModal';
|
|||||||
import AuthFormContent from './AuthFormContent';
|
import AuthFormContent from './AuthFormContent';
|
||||||
import { trackEventAsync } from '@lib/posthog';
|
import { trackEventAsync } from '@lib/posthog';
|
||||||
import { ACTIVATION_EVENTS } from '@lib/constants';
|
import { ACTIVATION_EVENTS } from '@lib/constants';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全局认证弹窗管理器
|
* 全局认证弹窗管理器
|
||||||
@@ -69,7 +70,7 @@ export default function AuthModalManager() {
|
|||||||
overflowY: 'auto'
|
overflowY: 'auto'
|
||||||
},
|
},
|
||||||
mask: {
|
mask: {
|
||||||
backdropFilter: 'blur(10px)',
|
backdropFilter: GLASS_BLUR.sm,
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.7)'
|
backgroundColor: 'rgba(0, 0, 0, 0.7)'
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { useAuthModal } from "../../hooks/useAuthModal";
|
|||||||
import { useAuth } from "../../contexts/AuthContext";
|
import { useAuth } from "../../contexts/AuthContext";
|
||||||
import { logger } from "../../utils/logger";
|
import { logger } from "../../utils/logger";
|
||||||
import { useAuthEvents } from "../../hooks/useAuthEvents";
|
import { useAuthEvents } from "../../hooks/useAuthEvents";
|
||||||
|
import { GLASS_BLUR } from "@/constants/glassConfig";
|
||||||
|
|
||||||
// 配置常量
|
// 配置常量
|
||||||
const POLL_INTERVAL = 2000; // 轮询间隔:2秒
|
const POLL_INTERVAL = 2000; // 轮询间隔:2秒
|
||||||
@@ -531,7 +532,7 @@ export default function WechatRegister() {
|
|||||||
display="flex"
|
display="flex"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
justifyContent="center"
|
justifyContent="center"
|
||||||
backdropFilter="blur(4px)"
|
backdropFilter={GLASS_BLUR.xs}
|
||||||
>
|
>
|
||||||
<VStack spacing={2}>
|
<VStack spacing={2}>
|
||||||
<Icon as={AlertCircle} w={8} h={8} color="white" />
|
<Icon as={AlertCircle} w={8} h={8} color="white" />
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import React, { memo, ReactNode } from 'react';
|
import React, { memo, ReactNode } from 'react';
|
||||||
import { Box, BoxProps } from '@chakra-ui/react';
|
import { Box, BoxProps } from '@chakra-ui/react';
|
||||||
import FuiCorners, { FuiCornersProps } from './FuiCorners';
|
import FuiCorners, { FuiCornersProps } from './FuiCorners';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
export interface FuiContainerProps extends Omit<BoxProps, 'children'> {
|
export interface FuiContainerProps extends Omit<BoxProps, 'children'> {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
@@ -73,7 +74,7 @@ const FuiContainer = memo<FuiContainerProps>(({
|
|||||||
border="1px solid"
|
border="1px solid"
|
||||||
borderColor={theme.borderColor}
|
borderColor={theme.borderColor}
|
||||||
overflow="hidden"
|
overflow="hidden"
|
||||||
backdropFilter="blur(16px)"
|
backdropFilter={GLASS_BLUR.md}
|
||||||
boxShadow={theme.boxShadow}
|
boxShadow={theme.boxShadow}
|
||||||
{...boxProps}
|
{...boxProps}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -7,8 +7,9 @@
|
|||||||
|
|
||||||
import React, { memo, forwardRef } from 'react';
|
import React, { memo, forwardRef } from 'react';
|
||||||
import { Box } from '@chakra-ui/react';
|
import { Box } from '@chakra-ui/react';
|
||||||
|
import { GLASS_BLUR, GLASS_BG, GLASS_BORDER, GLASS_SHADOW } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// 主题配置
|
// 主题配置 - 使用统一毛玻璃配置
|
||||||
const GLASS_THEME = {
|
const GLASS_THEME = {
|
||||||
colors: {
|
colors: {
|
||||||
gold: {
|
gold: {
|
||||||
@@ -28,13 +29,13 @@ const GLASS_THEME = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
blur: {
|
blur: {
|
||||||
sm: 'blur(8px)',
|
sm: GLASS_BLUR.sm,
|
||||||
md: 'blur(16px)',
|
md: GLASS_BLUR.md,
|
||||||
lg: 'blur(24px)',
|
lg: GLASS_BLUR.lg,
|
||||||
},
|
},
|
||||||
glow: {
|
glow: {
|
||||||
sm: '0 0 8px rgba(212, 175, 55, 0.3)',
|
sm: GLASS_SHADOW.goldSm,
|
||||||
md: '0 0 16px rgba(212, 175, 55, 0.4)',
|
md: GLASS_SHADOW.goldMd,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {
|
|||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { ChevronLeft, ChevronRight, X, ZoomIn } from 'lucide-react';
|
import { ChevronLeft, ChevronRight, X, ZoomIn } from 'lucide-react';
|
||||||
import { motion, AnimatePresence } from 'framer-motion';
|
import { motion, AnimatePresence } from 'framer-motion';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
const MotionBox = motion(Box);
|
const MotionBox = motion(Box);
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ export const ImageLightbox = ({ src, alt, ...props }) => {
|
|||||||
|
|
||||||
{/* 灯箱模态框 */}
|
{/* 灯箱模态框 */}
|
||||||
<Modal isOpen={isOpen} onClose={onClose} size="full" isCentered>
|
<Modal isOpen={isOpen} onClose={onClose} size="full" isCentered>
|
||||||
<ModalOverlay bg="blackAlpha.900" backdropFilter="blur(10px)" />
|
<ModalOverlay bg="blackAlpha.900" backdropFilter={GLASS_BLUR.sm} />
|
||||||
<ModalContent bg="transparent" boxShadow="none">
|
<ModalContent bg="transparent" boxShadow="none">
|
||||||
<ModalCloseButton
|
<ModalCloseButton
|
||||||
position="fixed"
|
position="fixed"
|
||||||
@@ -199,7 +200,7 @@ export const ImageGalleryLightbox = ({ images, initialIndex = 0, ...props }) =>
|
|||||||
isCentered
|
isCentered
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
>
|
>
|
||||||
<ModalOverlay bg="blackAlpha.900" backdropFilter="blur(10px)" />
|
<ModalOverlay bg="blackAlpha.900" backdropFilter={GLASS_BLUR.sm} />
|
||||||
<ModalContent bg="transparent" boxShadow="none">
|
<ModalContent bg="transparent" boxShadow="none">
|
||||||
{/* 关闭按钮 */}
|
{/* 关闭按钮 */}
|
||||||
<IconButton
|
<IconButton
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {
|
|||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { ChevronLeft, ChevronRight, Download, ZoomIn, ZoomOut } from 'lucide-react';
|
import { ChevronLeft, ChevronRight, Download, ZoomIn, ZoomOut } from 'lucide-react';
|
||||||
import { motion, AnimatePresence } from 'framer-motion';
|
import { motion, AnimatePresence } from 'framer-motion';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
const MotionBox = motion(Box);
|
const MotionBox = motion(Box);
|
||||||
|
|
||||||
@@ -195,7 +196,7 @@ const ImagePreviewModal = ({ isOpen, onClose, images = [], initialIndex = 0 }) =
|
|||||||
borderRadius="full"
|
borderRadius="full"
|
||||||
px="6"
|
px="6"
|
||||||
py="3"
|
py="3"
|
||||||
backdropFilter="blur(10px)"
|
backdropFilter={GLASS_BLUR.sm}
|
||||||
zIndex="2"
|
zIndex="2"
|
||||||
>
|
>
|
||||||
<HStack spacing="4">
|
<HStack spacing="4">
|
||||||
@@ -255,7 +256,7 @@ const ImagePreviewModal = ({ isOpen, onClose, images = [], initialIndex = 0 }) =
|
|||||||
borderRadius="md"
|
borderRadius="md"
|
||||||
px="4"
|
px="4"
|
||||||
py="2"
|
py="2"
|
||||||
backdropFilter="blur(10px)"
|
backdropFilter={GLASS_BLUR.sm}
|
||||||
>
|
>
|
||||||
<Text color="whiteAlpha.800" fontSize="xs">
|
<Text color="whiteAlpha.800" fontSize="xs">
|
||||||
快捷键: ← → 切换 | + - 缩放 | ESC 关闭
|
快捷键: ← → 切换 | + - 缩放 | ESC 关闭
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import NavbarActions from './components/NavbarActions';
|
|||||||
|
|
||||||
// 布局配置
|
// 布局配置
|
||||||
import { LAYOUT_PADDING, Z_INDEX } from '../../layouts/config/layoutConfig';
|
import { LAYOUT_PADDING, Z_INDEX } from '../../layouts/config/layoutConfig';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// Phase 4: MoreNavMenu 和 NavItems 组件已提取到 Navigation 目录
|
// Phase 4: MoreNavMenu 和 NavItems 组件已提取到 Navigation 目录
|
||||||
|
|
||||||
@@ -138,7 +139,7 @@ export default function HomeNavbar() {
|
|||||||
right={0}
|
right={0}
|
||||||
zIndex={Z_INDEX.NAVBAR}
|
zIndex={Z_INDEX.NAVBAR}
|
||||||
bg={navbarBg}
|
bg={navbarBg}
|
||||||
backdropFilter="blur(10px)"
|
backdropFilter={GLASS_BLUR.sm}
|
||||||
borderBottom="1px"
|
borderBottom="1px"
|
||||||
borderColor={navbarBorder}
|
borderColor={navbarBorder}
|
||||||
py={{ base: 2, md: 3 }}
|
py={{ base: 2, md: 3 }}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import {
|
|||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import type { ComponentType } from 'react';
|
import type { ComponentType } from 'react';
|
||||||
import type { LucideIcon } from 'lucide-react';
|
import type { LucideIcon } from 'lucide-react';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tab 配置项
|
* Tab 配置项
|
||||||
@@ -239,7 +240,7 @@ const SubTabContainer: React.FC<SubTabContainerProps> = memo(({
|
|||||||
{/* 导航栏容器:左侧 Tab 可滚动,右侧元素固定 */}
|
{/* 导航栏容器:左侧 Tab 可滚动,右侧元素固定 */}
|
||||||
<Flex
|
<Flex
|
||||||
bg={theme.bg}
|
bg={theme.bg}
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
borderBottom="1px solid"
|
borderBottom="1px solid"
|
||||||
borderColor={theme.borderColor}
|
borderColor={theme.borderColor}
|
||||||
borderRadius={compact ? 0 : DEEP_SPACE.radiusLG}
|
borderRadius={compact ? 0 : DEEP_SPACE.radiusLG}
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import { useAuth } from '../../contexts/AuthContext';
|
|||||||
import { useSubscriptionEvents } from '../../hooks/useSubscriptionEvents';
|
import { useSubscriptionEvents } from '../../hooks/useSubscriptionEvents';
|
||||||
import { subscriptionConfig, themeColors } from '../../views/Pages/Account/subscription-content';
|
import { subscriptionConfig, themeColors } from '../../views/Pages/Account/subscription-content';
|
||||||
import { getApiBase } from '../../utils/apiConfig';
|
import { getApiBase } from '../../utils/apiConfig';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
// 会员协议 URL 配置
|
// 会员协议 URL 配置
|
||||||
const AGREEMENT_URLS = {
|
const AGREEMENT_URLS = {
|
||||||
@@ -76,7 +77,7 @@ function CycleSelector({ options, selectedCycle, onSelectCycle }: CycleSelectorP
|
|||||||
borderRadius="xl"
|
borderRadius="xl"
|
||||||
border="1px solid"
|
border="1px solid"
|
||||||
borderColor="rgba(255, 255, 255, 0.1)"
|
borderColor="rgba(255, 255, 255, 0.1)"
|
||||||
backdropFilter="blur(10px)"
|
backdropFilter={GLASS_BLUR.sm}
|
||||||
justify="center"
|
justify="center"
|
||||||
align="center"
|
align="center"
|
||||||
w={{ base: 'full', md: 'auto' }}
|
w={{ base: 'full', md: 'auto' }}
|
||||||
@@ -947,7 +948,7 @@ export default function SubscriptionContentNew() {
|
|||||||
bg="rgba(212, 175, 55, 0.05)"
|
bg="rgba(212, 175, 55, 0.05)"
|
||||||
border="2px solid"
|
border="2px solid"
|
||||||
borderColor="rgba(212, 175, 55, 0.3)"
|
borderColor="rgba(212, 175, 55, 0.3)"
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
maxW="600px"
|
maxW="600px"
|
||||||
mx="auto"
|
mx="auto"
|
||||||
position="relative"
|
position="relative"
|
||||||
@@ -1171,7 +1172,7 @@ export default function SubscriptionContentNew() {
|
|||||||
mt={-1}
|
mt={-1}
|
||||||
p={3.5}
|
p={3.5}
|
||||||
pb={8}
|
pb={8}
|
||||||
backdropFilter={isPremium ? 'blur(32px)' : 'blur(20px)'}
|
backdropFilter={isPremium ? GLASS_BLUR.xl : GLASS_BLUR.lg}
|
||||||
bg={isPremium ? 'rgba(255, 255, 255, 0.07)' : 'rgba(255, 255, 255, 0.01)'}
|
bg={isPremium ? 'rgba(255, 255, 255, 0.07)' : 'rgba(255, 255, 255, 0.01)'}
|
||||||
borderRadius="20px"
|
borderRadius="20px"
|
||||||
_after={{
|
_after={{
|
||||||
@@ -1191,7 +1192,7 @@ export default function SubscriptionContentNew() {
|
|||||||
p={6}
|
p={6}
|
||||||
borderRadius="16px"
|
borderRadius="16px"
|
||||||
bg={isPremium ? 'rgba(212, 175, 55, 0.1)' : 'rgba(255, 255, 255, 0.03)'}
|
bg={isPremium ? 'rgba(212, 175, 55, 0.1)' : 'rgba(255, 255, 255, 0.03)'}
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
boxShadow="0 8px 32px rgba(0, 0, 0, 0.4)"
|
boxShadow="0 8px 32px rgba(0, 0, 0, 0.4)"
|
||||||
_after={{
|
_after={{
|
||||||
content: '""',
|
content: '""',
|
||||||
@@ -1323,7 +1324,7 @@ export default function SubscriptionContentNew() {
|
|||||||
p={8}
|
p={8}
|
||||||
borderRadius="2xl"
|
borderRadius="2xl"
|
||||||
bg="rgba(30, 30, 30, 0.5)"
|
bg="rgba(30, 30, 30, 0.5)"
|
||||||
backdropFilter="blur(20px)"
|
backdropFilter={GLASS_BLUR.lg}
|
||||||
border="1px solid"
|
border="1px solid"
|
||||||
borderColor="rgba(255, 255, 255, 0.1)"
|
borderColor="rgba(255, 255, 255, 0.1)"
|
||||||
maxW="900px"
|
maxW="900px"
|
||||||
|
|||||||
@@ -15,11 +15,12 @@ import {
|
|||||||
import { Star } from 'lucide-react';
|
import { Star } from 'lucide-react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import SubscriptionContent from './SubscriptionContent';
|
import SubscriptionContent from './SubscriptionContent';
|
||||||
|
import { GLASS_BLUR } from '@/constants/glassConfig';
|
||||||
|
|
||||||
export default function SubscriptionModal({ isOpen, onClose }) {
|
export default function SubscriptionModal({ isOpen, onClose }) {
|
||||||
return (
|
return (
|
||||||
<Modal isOpen={isOpen} onClose={onClose} size="4xl" isCentered scrollBehavior="inside">
|
<Modal isOpen={isOpen} onClose={onClose} size="4xl" isCentered scrollBehavior="inside">
|
||||||
<ModalOverlay backdropFilter="blur(4px)" />
|
<ModalOverlay backdropFilter={GLASS_BLUR.xs} />
|
||||||
<ModalContent maxH="90vh">
|
<ModalContent maxH="90vh">
|
||||||
<ModalHeader borderBottomWidth="1px" borderColor={useColorModeValue('gray.200', 'gray.600')}>
|
<ModalHeader borderBottomWidth="1px" borderColor={useColorModeValue('gray.200', 'gray.600')}>
|
||||||
<HStack>
|
<HStack>
|
||||||
|
|||||||
Reference in New Issue
Block a user