// 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,
};