// Screens 5: 신고·차단·안전센터, 인증·수상 내역 관리, 기관 관리자 대시보드, 운영자 콘솔 const A5 = window.MajorAtoms; const D5 = window.MajorLinkData; const D5b = window.MajorLinkData2; const Lc5 = window.lucideReact || {}; const { useState: useS5 } = React; const BORDER5 = '#E4E4E7'; const MUTE5 = '#475569'; const FAINT5 = '#94A3B8'; function TextInput5(props) { return ; } function SummaryCard5({ n, l }) { return (
{n}
{l}
); } function BarRow5({ name, count, max }) { return (
{name}
{count}
); } // ============================== ScreenSafety ============================== const REPORT_REASONS = ['스팸 · 광고성 내용', '사기 · 허위 정보', '무단 노쇼 (연락 없이 불참)', '부적절한 언어 · 행동', '기타']; function ScreenSafety({ device, animKey }) { const isM = device === 'mobile'; const [reports, setReports] = useS5(() => D5b.REPORTS.map(r => ({ ...r }))); const [blocked, setBlocked] = useS5(() => [...D5b.BLOCKED_USERS]); const [targetId, setTargetId] = useS5(D5.APPLICANTS[7].id); const [reason, setReason] = useS5(''); const [detail, setDetail] = useS5(''); const submit = () => { if (!reason) return; const id = 'rp' + Date.now(); setReports(rs => [{ id, applicantId: targetId, reason, detail, status: 'reviewing', createdAt: '방금' }, ...rs]); setReason(''); setDetail(''); setTimeout(() => setReports(rs => rs.map(r => r.id === id ? { ...r, status: 'resolved' } : r)), 3000); }; return (
{REPORT_REASONS.map(r => ( ))}