// ============================================================ // LegalTextModal — 协议/法律文本展示弹窗 // 从 src/assets/legal/ 加载 .txt 文件,主题适配渲染 // ============================================================ import { Modal, Typography } from 'antd'; import { FileTextOutlined } from '@ant-design/icons'; import { useTheme } from '@/components/ThemeProvider'; // Vite ?raw 导入:将 .txt 内容作为字符串直接内联 import serviceAgreement from '@/assets/legal/用户服务协议.txt?raw'; import pointsAgreement from '@/assets/legal/积分充值服务协议.txt?raw'; const { Paragraph } = Typography; /** 协议名称 → 文本内容映射 */ const legalTexts: Record = { service: { title: '用户服务协议', content: serviceAgreement }, points: { title: '积分充值服务协议', content: pointsAgreement }, }; interface LegalTextModalProps { open: boolean; /** 协议标识:'service' | 'points' */ type: 'service' | 'points'; onClose: () => void; } export function LegalTextModal({ open, type, onClose }: LegalTextModalProps) { const { isDark } = useTheme(); const legal = legalTexts[type]; if (!legal) return null; return ( {legal.title} } styles={{ body: { maxHeight: '60vh', overflowY: 'auto', padding: '20px 24px', background: isDark ? '#1A1730' : '#FFFFFF', color: isDark ? '#E8E6F0' : '#1E1B4B', fontSize: 14, lineHeight: 2, whiteSpace: 'pre-wrap', wordBreak: 'break-word', fontFamily: 'var(--font-family-base)', }, }} > {legal.content} ); }