// SearchView.jsx — محرك البحث القانوني (Frontend-only, ready for backend)
/* =========================================================
STATIC CATALOGS
========================================================= */
const SEARCH_TIERS = [
{ v: 1, label: 'الأنظمة الأساسية', desc: 'الأقوى قانونياً', color: '#2d7a4f' },
{ v: 2, label: 'مراسيم/قرارات وزارية', desc: 'تنفيذية عليا', color: '#a84f32' },
{ v: 3, label: 'قرارات هيئات تنظيمية', desc: 'متخصصة', color: '#1e5d9c' },
{ v: 4, label: 'وثائق مرجعية', desc: 'إرشادية', color: '#5e5d59' },
{ v: 5, label: 'اتفاقيات', desc: 'دولية وثنائية', color: '#87867f' },
];
const SEARCH_AREAS = [
['تجاري', 1033], ['عمل', 421], ['مدني', 856], ['جنائي', 234], ['أحوال شخصية', 312],
['عقاري', 567], ['ضرائب', 189], ['بنوك ومالية', 245], ['تأمين', 134],
['ملكية فكرية', 98], ['تحكيم', 76], ['إداري', 412], ['دستوري', 145],
['طبي', 89], ['بيئي', 67], ['طاقة', 123], ['اتصالات', 156], ['نقل', 98],
['زراعة', 76], ['تعليم', 145], ['ثقافي', 67], ['رياضي', 45], ['بلدي', 234],
['تأشيرات', 178], ['حماية مستهلك', 134], ['أمن سيبراني', 89],
['بيانات', 123], ['أوقاف', 67], ['زكاة', 45], ['تخطيط مدن', 78],
['اقتصاد رقمي', 156], ['استثمار', 234], ['شركات', 412],
];
const SEARCH_INSTRUMENTS = [
['نظام', 1245], ['مرسوم ملكي', 567], ['قرار وزاري', 1834], ['لائحة تنفيذية', 892],
['تعميم', 423], ['أمر سامي', 234], ['اتفاقية', 167], ['وثيقة مرجعية', 312],
];
const SEARCH_ISSUERS = [
'وزارة العدل', 'وزارة الموارد البشرية', 'هيئة السوق المالية', 'البنك المركزي',
'الهيئة العامة للزكاة والضريبة', 'وزارة التجارة', 'وزارة الصحة', 'وزارة الاستثمار',
'وزارة الداخلية', 'وزارة الخارجية', 'هيئة الاتصالات', 'هيئة المحامين',
];
const SEARCH_SUGGESTIONS = ['نظام العمل', 'الفصل التعسفي', 'الشركات', 'الأحوال الشخصية', 'التنفيذ', 'حماية البيانات', 'العمل المرن', 'التأشيرات'];
const SEARCH_TOP = ['نظام العمل 2026', 'الفصل التعسفي', 'مكافأة نهاية الخدمة', 'نقل الكفالة', 'الإيجار التجاري', 'الإفلاس'];
const SEARCH_DOCS = [
{
doc_id: 'labor-law-1426',
title_ar: 'نظام العمل',
full_text: `## الباب الأول: التعاريف والأحكام العامة
### الفصل الأول: التعاريف
#### المادة الأولى
يسمى هذا النظام "نظام العمل".
#### المادة الثانية
يقصد بالألفاظ والعبارات الآتية - أينما وردت في هذا النظام - المعاني المبينة أمامها.
**الوزارة:** وزارة الموارد البشرية والتنمية الاجتماعية.
**صاحب العمل:** كل شخص طبيعي أو اعتباري يستخدم عاملاً أو أكثر مقابل أجر.
**العامل:** كل شخص طبيعي يعمل لمصلحة صاحب عمل وتحت إدارته أو إشرافه مقابل أجر.
## الباب الثاني: تنظيم عمليات التوظيف
#### المادة الرابعة والسبعون
ينتهي عقد العمل في الحالات الآتية: إذا اتفق الطرفان على إنهائه على أن تكون موافقة العامل كتابة. إذا انتهت المدة المحددة في العقد ما لم يكن العقد قد جُدِّد صراحة.
#### المادة الثمانون
لا يستحق العامل مكافأة نهاية الخدمة في الحالات التالية: إذا ترك العمل باختياره قبل إتمام سنتين في خدمة صاحب العمل.`,
toc: [
{ level: 2, title: 'الباب الأول: التعاريف والأحكام العامة', id: 'bab-1' },
{ level: 4, title: 'المادة الأولى', id: 'mada-1' },
{ level: 4, title: 'المادة الثانية', id: 'mada-2' },
{ level: 2, title: 'الباب الثاني: تنظيم التوظيف', id: 'bab-2' },
{ level: 4, title: 'المادة الرابعة والسبعون', id: 'mada-74' },
{ level: 4, title: 'المادة الثمانون', id: 'mada-80' },
],
tier: 1, role: 'موضوعي', legal_area: 'عمل', instrument: 'نظام', instrument_number: 'م/51',
hijri_year: 1426, issuer_ar: 'وزارة الموارد البشرية', is_repealed: false, text_source: 'full',
pdf_original_url: '#', uqn_url: '#',
relations: { versions: 3, amends: 0, amended_by: 12, implements: 0, implemented_by: 4, related: 18, cited_by: 247, cites: 6 },
summary: 'ينظم علاقات العمل بين أصحاب العمل والعمال، ويحدد حقوق الطرفين والتزاماتهم، ويغطي شروط العقد والأجور والإجازات وإنهاء الخدمة وحماية العاملين.',
},
{
doc_id: 'companies-law-1437',
title_ar: 'نظام الشركات',
full_text: `## الباب الأول: أحكام عامة\n\n#### المادة الأولى\nيسمى هذا النظام "نظام الشركات".\n\n#### المادة الثانية\nالشركة عقد يلتزم بمقتضاه شخصان أو أكثر بأن يساهم كل منهم في مشروع يستهدف الربح.\n\n## الباب الثاني: أنواع الشركات\n\n#### المادة الثالثة\nأنواع الشركات: شركة تضامن، شركة توصية بسيطة، شركة محاصة، شركة مساهمة، شركة توصية بالأسهم، شركة ذات مسؤولية محدودة.`,
toc: [
{ level: 2, title: 'الباب الأول: أحكام عامة', id: 'bab-1' },
{ level: 4, title: 'المادة الأولى', id: 'mada-1' },
{ level: 2, title: 'الباب الثاني: أنواع الشركات', id: 'bab-2' },
],
tier: 1, role: 'موضوعي', legal_area: 'تجاري', instrument: 'نظام', instrument_number: 'م/3',
hijri_year: 1437, issuer_ar: 'وزارة التجارة', is_repealed: false, text_source: 'full',
pdf_original_url: '#', uqn_url: '#',
relations: { versions: 2, amends: 0, amended_by: 8, implements: 0, implemented_by: 6, related: 24, cited_by: 412, cites: 4 },
summary: 'يحدد القواعد القانونية لتأسيس وإدارة وتصفية الشركات في المملكة، ويغطي 6 أنواع رئيسية من الشركات بكل خصائصها وأحكامها.',
},
{
doc_id: 'data-protection-1443',
title_ar: 'نظام حماية البيانات الشخصية',
full_text: `## الباب الأول: أحكام عامة\n\n#### المادة الأولى\nيهدف هذا النظام إلى حماية البيانات الشخصية وضمان معالجتها بأسلوب آمن ومسؤول.\n\n#### المادة الثانية\nيطبق هذا النظام على كل جهة تعالج بيانات شخصية لأشخاص مقيمين في المملكة العربية السعودية.`,
toc: [{ level: 2, title: 'أحكام عامة', id: 'bab-1' }, { level: 4, title: 'المادة الأولى', id: 'mada-1' }],
tier: 1, role: 'موضوعي', legal_area: 'بيانات', instrument: 'نظام', instrument_number: 'م/19',
hijri_year: 1443, issuer_ar: 'هيئة البيانات والذكاء الاصطناعي', is_repealed: false, text_source: 'full',
pdf_original_url: '#',
relations: { versions: 1, amends: 0, amended_by: 2, implements: 0, implemented_by: 3, related: 14, cited_by: 89, cites: 8 },
summary: 'ينظم جمع ومعالجة البيانات الشخصية، ويحدد حقوق أصحاب البيانات والتزامات المتحكمين والمعالجين، مع عقوبات للمخالفات.',
},
{
doc_id: 'arbitration-1433',
title_ar: 'نظام التحكيم',
full_text: `## الباب الأول: أحكام عامة\n\n#### المادة الأولى\nيطبق هذا النظام على كل تحكيم، أياً كانت طبيعة العلاقة القانونية التي يدور حولها النزاع.`,
toc: [{ level: 4, title: 'المادة الأولى', id: 'mada-1' }],
tier: 1, role: 'إجرائي', legal_area: 'تحكيم', instrument: 'نظام', instrument_number: 'م/34',
hijri_year: 1433, issuer_ar: 'وزارة العدل', is_repealed: false, text_source: 'full',
relations: { versions: 1, amends: 0, amended_by: 3, implements: 0, implemented_by: 2, related: 12, cited_by: 156, cites: 4 },
summary: 'ينظم التحكيم التجاري والمدني داخل المملكة، ويحدد إجراءات التحكيم وسلطات المحكمين وتنفيذ أحكام التحكيم.',
},
{
doc_id: 'rent-decree-1442',
title_ar: 'نظام الإيجار التجاري',
full_text: `## أحكام عامة\n\n#### المادة الأولى\nينظم هذا النظام العلاقة بين المؤجر والمستأجر للعقارات التجارية في المملكة.`,
toc: [{ level: 4, title: 'المادة الأولى', id: 'mada-1' }],
tier: 2, role: 'موضوعي', legal_area: 'عقاري', instrument: 'مرسوم ملكي', instrument_number: 'م/76',
hijri_year: 1442, issuer_ar: 'مجلس الوزراء', is_repealed: false, text_source: 'full',
relations: { versions: 1, amends: 0, amended_by: 1, implements: 0, implemented_by: 1, related: 8, cited_by: 67, cites: 3 },
summary: 'ينظم العلاقة الإيجارية للعقارات التجارية، ويحدد حقوق المؤجر والمستأجر وطرق إنهاء العقد ومعالجة النزاعات.',
},
{
doc_id: 'consumer-protection-1442',
title_ar: 'نظام حماية المستهلك',
full_text: `## أحكام عامة\n\n#### المادة الأولى\nيهدف هذا النظام إلى حماية حقوق المستهلك وضمان جودة المنتجات والخدمات.`,
toc: [{ level: 4, title: 'المادة الأولى', id: 'mada-1' }],
tier: 2, role: 'موضوعي', legal_area: 'حماية مستهلك', instrument: 'مرسوم ملكي', instrument_number: 'م/93',
hijri_year: 1442, issuer_ar: 'وزارة التجارة', is_repealed: false, text_source: 'full',
relations: { versions: 1, amends: 0, amended_by: 4, implements: 0, implemented_by: 2, related: 10, cited_by: 78, cites: 5 },
summary: 'يحمي حقوق المستهلكين في المعاملات التجارية، ويلزم التجار بمعايير الإفصاح والجودة، ويحدد طرق التعويض عند المخالفة.',
},
];
/* =========================================================
HELPERS
========================================================= */
function searchTierBadgeStyle(tier) {
const map = {
1: { bg: 'rgba(45,122,79,0.12)', color: '#2d7a4f' },
2: { bg: '#f2e5df', color: '#a84f32' },
3: { bg: 'rgba(30,93,156,0.12)', color: '#1e5d9c' },
4: { bg: '#e8e6dc', color: '#5e5d59' },
5: { bg: '#e8e6dc', color: '#87867f' },
};
return map[tier] || map[4];
}
function searchStatusInfo(d) {
if (d.is_repealed) return { label: 'ملغى', bg: '#f7e5e5', color: '#b53333' };
if ((d.relations?.amended_by || 0) > 0) return { label: 'مُعدَّل', bg: '#fef3e2', color: '#a05e1a' };
return { label: 'ساري', bg: '#e0f2ea', color: '#2d7a4f' };
}
function highlightText(text, q) {
if (!q || !text) return text;
const re = new RegExp(`(${q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
return text.replace(re, '$1');
}
function renderMarkdownToHtml(md) {
if (!md) return '';
let html = md;
html = html.replace(/^#### (.+)$/gm, '
$1
');
html = html.replace(/^### (.+)$/gm, '
$1
');
html = html.replace(/^## (.+)$/gm, '
$1
');
html = html.replace(/\*\*(.+?)\*\*/g, '$1');
html = html.split('\n\n').map(p => {
const t = p.trim();
if (!t) return '';
if (t.startsWith('<')) return t;
return `