// DocumentsView.jsx — Document Analysis + Creation function useEntrance(delay = 0) { const [ready, setReady] = React.useState(false); React.useEffect(() => { const t = setTimeout(() => setReady(true), delay + 30); return () => clearTimeout(t); }, []); return { opacity: ready ? 1 : 0, transform: ready ? 'none' : 'translateY(18px)', transition: `opacity 0.45s ease, transform 0.45s ease` }; } const DOC_TYPES = [ { id: 'employment', label: 'عقد عمل', icon: '👤' }, { id: 'lease', label: 'عقد إيجار', icon: '🏢' }, { id: 'nda', label: 'اتفاقية سرية', icon: '🔒' }, { id: 'partnership', label: 'عقد شراكة', icon: '🤝' }, { id: 'poa', label: 'توكيل رسمي', icon: '📋' }, { id: 'service', label: 'عقد خدمات', icon: '⚙' }, ]; const ANALYSIS_FINDINGS = [ { level: 'error', art: 'المادة ٤٥', text: 'بند الإنهاء المبكر يفتقر لآلية تعويض واضحة' }, { level: 'error', art: 'المادة ١٢', text: 'غياب آلية فض النزاعات المحددة' }, { level: 'warning', art: 'المادة ٧', text: 'مدة الإيجار (٧ سنوات) تتجاوز الحد المعتاد' }, { level: 'warning', art: 'المادة ٢٣', text: 'بند التحكيم لا يحدد الجهة المختصة' }, { level: 'success', art: 'المادة ٣', text: 'شروط الضمان متوافقة مع اشتراطات النظام' }, { level: 'success', art: 'المادة ١٩', text: 'التوقيع الرقمي معترف به وفق نظام التقنية' }, { level: 'info', art: '', text: 'يُنصح بمراجعة بند الزيادة السنوية في الإيجار' }, ]; const LEVEL_META = { error: { dot: '#b53333', bg: '#f7e5e5', text: '#b53333', label: 'مخاطرة عالية' }, warning: { dot: '#a05e1a', bg: '#fef3e2', text: '#a05e1a', label: 'يحتاج مراجعة' }, success: { dot: '#2d7a4f', bg: '#e0f2ea', text: '#2d7a4f', label: 'متوافق' }, info: { dot: '#3898ec', bg: '#deeefb', text: '#3898ec', label: 'ملاحظة' }, }; function DocumentsView() { const [tab, setTab] = React.useState('analyze'); // 'analyze' | 'create' // Analysis state const [uploadState, setUploadState] = React.useState('idle'); // idle | analyzing | done const [progress, setProgress] = React.useState(0); // Creation state const [docType, setDocType] = React.useState(null); const [creating, setCreating] = React.useState(false); const [created, setCreated] = React.useState(false); const [form, setForm] = React.useState({ party1: '', party2: '', duration: '', notes: '' }); const entrance = useEntrance(); const startAnalysis = () => { setUploadState('analyzing'); setProgress(0); const iv = setInterval(() => { setProgress(p => { if (p >= 100) { clearInterval(iv); setUploadState('done'); return 100; } return p + 4; }); }, 90); }; const handleCreate = async () => { if (!docType) return; setCreating(true); await new Promise(r => setTimeout(r, 1800)); setCreating(false); setCreated(true); }; const counts = { error: ANALYSIS_FINDINGS.filter(f => f.level === 'error').length, warning: ANALYSIS_FINDINGS.filter(f => f.level === 'warning').length, success: ANALYSIS_FINDINGS.filter(f => f.level === 'success').length, }; return (
{/* Header */}
المستندات القانونية

تحليل وإنشاء المستندات

حلّل مستندك الحالي أو أنشئ مستنداً قانونياً جاهزاً

{/* Tabs */}
{[['analyze', '📂 تحليل مستند'], ['create', '✍ إنشاء مستند']].map(([val, label]) => ( ))}
{/* ── ANALYZE TAB ── */} {tab === 'analyze' && (
{uploadState === 'idle' && (
{ e.currentTarget.style.borderColor = sanadColors.brand; e.currentTarget.style.background = sanadColors.brandSubtle; }} onMouseLeave={e => { e.currentTarget.style.borderColor = 'rgba(20,20,19,0.16)'; e.currentTarget.style.background = sanadColors.bgElevated; }} >
اسحب الملف هنا أو اضغط للرفع
PDF, DOCX — حتى ٢٠ ميجابايت
اختر ملفاً
)} {uploadState === 'analyzing' && (
عقد_إيجار_تجاري_٢٠٢٥.pdf
يتم التحليل بالذكاء الاصطناعي…
{progress}٪
)} {uploadState === 'done' && (
{/* Summary cards */}
عقد إيجار تجاري — نتائج التحليل
يحتاج مراجعة
{[ { label: 'مخاطر عالية', count: counts.error, bg: '#f7e5e5', color: '#b53333' }, { label: 'بنود مثيرة للقلق', count: counts.warning, bg: '#fef3e2', color: '#a05e1a' }, { label: 'بنود سليمة', count: counts.success, bg: '#e0f2ea', color: '#2d7a4f' }, ].map((s, i) => (
{s.count}
{s.label}
))}
{/* Findings */}
النتائج التفصيلية
{ANALYSIS_FINDINGS.map((f, i) => { const m = LEVEL_META[f.level]; return (
{m.label}{f.art && ` · ${f.art}`} {f.text}
); })}
تحدث مع محامٍ حول هذا العقد تحميل التقرير { setUploadState('idle'); setProgress(0); }}>تحليل مستند آخر
)}
)} {/* ── CREATE TAB ── */} {tab === 'create' && (
{!created ? (
اختر نوع المستند
{DOC_TYPES.map(dt => ( ))}
{docType && (
تفاصيل المستند
{[ { key: 'party1', label: 'الطرف الأول (الاسم / الجهة)', placeholder: 'مثال: شركة النخبة للتجارة' }, { key: 'party2', label: 'الطرف الثاني', placeholder: 'مثال: محمد أحمد الزهراني' }, { key: 'duration', label: 'المدة / التاريخ', placeholder: 'مثال: سنة واحدة من ١ يناير ٢٠٢٦' }, ].map(f => (
{f.label}
setForm(prev => ({ ...prev, [f.key]: e.target.value }))} placeholder={f.placeholder} style={{ width: '100%', padding: '10px 14px', borderRadius: 8, border: 'none', background: sanadColors.bg, boxShadow: '0 0 0 1px rgba(20,20,19,0.14)', fontFamily: sanadFonts.arabic, fontSize: 14, color: sanadColors.textPrimary, outline: 'none', direction: 'rtl', }} />
))}
ملاحظات إضافية (اختياري)