fix(Navbar): 优化用户头像悬停交互和订阅信息显示
- 将 Tooltip 改为 Popover 组件,支持鼠标悬停到弹出内容上 - 用户现在可以正常悬停到"点击头像管理订阅"提示 - 订阅信息新增到期日期显示,用户无需自己计算到期时间 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,23 @@ import PropTypes from 'prop-types';
|
||||
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;
|
||||
const { type, days_left, is_active, end_date } = subscriptionInfo;
|
||||
|
||||
// 格式化到期日期
|
||||
const formatEndDate = (dateStr) => {
|
||||
if (!dateStr) return null;
|
||||
try {
|
||||
const date = new Date(dateStr);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
return `${year}-${month}-${day}`;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
const formattedEndDate = formatEndDate(end_date);
|
||||
|
||||
// 基础版用户
|
||||
if (type === 'free') {
|
||||
@@ -72,7 +88,12 @@ export const TooltipContent = ({ subscriptionInfo }) => {
|
||||
还有 <Text as="span" fontWeight="600" color={isUrgent ? 'red.500' : isWarning ? 'orange.500' : tooltipText}>{days_left}</Text> 天到期
|
||||
</Text>
|
||||
</HStack>
|
||||
<Text fontSize="xs" color={tooltipText} opacity={0.7} pl={6}>
|
||||
{formattedEndDate && (
|
||||
<Text fontSize="xs" color={tooltipText} opacity={0.8} pl={6}>
|
||||
到期日:<Text as="span" fontWeight="500">{formattedEndDate}</Text>
|
||||
</Text>
|
||||
)}
|
||||
<Text fontSize="xs" color={tooltipText} opacity={0.6} pl={6}>
|
||||
享受全部高级功能
|
||||
</Text>
|
||||
</VStack>
|
||||
@@ -133,5 +154,6 @@ TooltipContent.propTypes = {
|
||||
type: PropTypes.oneOf(['free', 'pro', 'max']).isRequired,
|
||||
days_left: PropTypes.number,
|
||||
is_active: PropTypes.bool,
|
||||
end_date: PropTypes.string,
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user