// src/components/Subscription/CrownTooltip.js import React from 'react'; import { Box, VStack, HStack, Text, Divider, useColorModeValue } from '@chakra-ui/react'; import PropTypes from 'prop-types'; /** * Tooltip 内容组件 - 显示详细的会员信息 * 导出此组件供头像也使用相同的 Tooltip 内容 */ export const TooltipContent = ({ subscriptionInfo }) => { const tooltipText = useColorModeValue('gray.700', 'gray.100'); const dividerColor = useColorModeValue('gray.200', 'gray.600'); const { type, days_left, is_active } = subscriptionInfo; // 基础版用户 if (type === 'free') { return ( ✨ 基础版用户 解锁更多高级功能 点击头像升级会员 ); } // 付费用户 const isExpired = !is_active; const isUrgent = days_left < 7; const isWarning = days_left < 30; return ( {type === 'pro' ? '💎 Pro 会员' : '👑 Max 会员'} {isExpired && 已过期} {/* 状态信息 */} {isExpired ? ( 会员已过期,续费恢复权益 ) : ( {isUrgent ? '⚠️' : isWarning ? '⏰' : '📅'} {isUrgent && 紧急! } 还有 {days_left} 天到期 享受全部高级功能 )} {/* 操作提示 */} {isExpired || isUrgent ? '点击头像立即续费' : '点击头像管理订阅'} ); }; /** * 皇冠图标组件 - 显示在头像左上角的会员标识(纯图标,无 Tooltip) * Tooltip 由外层统一包裹 * * @param {Object} subscriptionInfo - 订阅信息 * @param {string} subscriptionInfo.type - 订阅类型: 'free' | 'pro' | 'max' */ export function CrownIcon({ subscriptionInfo }) { // 基础版用户不显示皇冠 if (subscriptionInfo.type === 'free') { return null; } return ( {subscriptionInfo.type === 'max' ? '👑' : '💎'} ); } CrownIcon.propTypes = { subscriptionInfo: PropTypes.shape({ type: PropTypes.oneOf(['free', 'pro', 'max']).isRequired, }).isRequired, }; TooltipContent.propTypes = { subscriptionInfo: PropTypes.shape({ type: PropTypes.oneOf(['free', 'pro', 'max']).isRequired, days_left: PropTypes.number, is_active: PropTypes.bool, }).isRequired, };