> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# مركز الدعم

> تصفّح وابحث في قاعدة معرفة ClickHouse

export const kbIndex = {
  categories: ["Cloud", "الإعدادات والتهيئة", "استيراد البيانات وتصديرها", "إدارة البيانات", "عام والأسئلة الشائعة", "التكاملات ومكتبات العملاء", "المشاهدات المادية والإسقاطات", "المراقبة وتصحيح الأخطاء", "الأداء والتحسين", "الاستعلامات وSQL", "الأمان والتحكم في الوصول", "الإعداد والتثبيت", "الجداول والمخطط", "استكشاف الأخطاء وإصلاحها"],
  tags: ["أفضل الممارسات", "المجتمع", "المفاهيم", "مفاهيم البيانات الأساسية", "تصدير البيانات", "تنسيقات البيانات", "استيعاب البيانات", "نمذجة البيانات", "مصادر البيانات", "النشر والتوسع", "الأخطاء والاستثناءات", "الدوال", "عملاء اللغات", "إدارة Cloud", "إدارة البيانات", "العملاء والواجهات الأصلية", "الأداء والتحسينات", "الأمان والمصادقة", "إدارة الخادم", "الإعدادات", "جداول النظام", "الأدوات والمرافق", "استكشاف الأخطاء وإصلاحها", "حالات الاستخدام"],
  articles: [{
    id: "integrations/python-clickhouse-connect-example",
    title: "مثال عملي باستخدام عميل Python للاتصال بـ ClickHouse Cloud Service",
    description: "تعرّف على كيفية الاتصال بـ ClickHouse Cloud Service باستخدام Python من خلال مثال تفصيلي خطوة بخطوة يستخدم مشغّل clickhouse-connect.",
    href: "/ar/resources/support-center/knowledge-base/integrations/python-clickhouse-connect-example",
    category: "Integrations & client libraries",
    tags: ["Language Clients"]
  }, {
    id: "configuration-settings/about-quotas-and-query-complexity",
    title: "حول الحصص وتعقيد الاستعلامات",
    description: "تُعدّ الحصص وتعقيد الاستعلامات من الأساليب الفعّالة لتقييد ما يمكن للمستخدمين القيام به في ClickHouse. تعرض هذه المقالة أمثلة على كيفية تطبيق هذين النهجين المختلفين.",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/about-quotas-and-query-complexity",
    category: "Configuration & settings",
    tags: ["Managing Cloud"]
  }, {
    id: "data-import-export/achieving-atomic-inserts",
    title: "تحقيق عمليات الإدراج الذري واتساق الجداول المتعددة في ClickHouse Cloud",
    description: "كيفية تحميل البيانات بصورة ذرية والحفاظ على اتساق جداول متعددة في ClickHouse Cloud دون الحاجة إلى معاملات متعددة العبارات، باستخدام جداول التدريج وعمليات مستوى القسم.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/achieving-atomic-inserts",
    category: "Data import & export",
    tags: ["Data Ingestion", "Best Practices"]
  }, {
    id: "tables-schema/add-column",
    title: "إضافة عمود إلى جدول",
    description: "في هذا الدليل، سنتعلم كيفية إضافة عمود إلى جدول موجود.",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/add-column",
    category: "Tables & schema",
    tags: ["Data Modelling"]
  }, {
    id: "configuration-settings/alter-user-settings-exception",
    title: "استثناء تعديل إعدادات المستخدم",
    description: "التعامل مع الاستثناء الذي يُطرح عند تعديل إعدادات المستخدم",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/alter-user-settings-exception",
    category: "Configuration & settings",
    tags: ["Settings", "Errors and Exceptions"]
  }, {
    id: "materialized-views/are-materialized-views-inserted-asynchronously",
    title: "هل تُدرج المشاهدات المادية بشكل متزامن؟",
    description: "تستكشف هذه المقالة ما إذا كانت المشاهدات المادية تُدرج بشكل متزامن",
    href: "/ar/resources/support-center/knowledge-base/materialized-views/are-materialized-views-inserted-asynchronously",
    category: "Materialized views & projections",
    tags: ["Data Modelling"]
  }, {
    id: "tables-schema/schema-migration-tools",
    title: "أدوات ترحيل المخطط التلقائي لـ ClickHouse",
    description: "تعرّف على أدوات ترحيل المخطط التلقائي لـ ClickHouse وكيفية إدارة تغييرات مخططات قواعد البيانات بمرور الوقت.",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/schema-migration-tools",
    category: "Tables & schema",
    tags: ["Tools and Utilities"]
  }, {
    id: "cloud-services/aws-privatelink-setup-for-msk-clickpipes",
    title: "إعداد AWS PrivateLink لكشف MSK لـ ClickPipes",
    description: "خطوات الإعداد لكشف MSK خاص عبر اتصال MSK متعدد الـ VPC إلى ClickPipes.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-msk-clickpipes",
    category: "Cloud",
    tags: ["Security and Authentication", "Managing Cloud"]
  }, {
    id: "cloud-services/aws-privatelink-setup-for-clickpipes",
    title: "إعداد AWS PrivateLink لكشف RDS الخاص لـ ClickPipes",
    description: "خطوات الإعداد لكشف RDS خاص عبر AWS PrivateLink إلى ClickPipes.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-clickpipes",
    category: "Cloud",
    tags: ["Security and Authentication", "Managing Cloud"]
  }, {
    id: "data-management/backing-up-a-specific-partition",
    title: "نسخ قسم محدد احتياطياً",
    description: "كيف يمكنني نسخ قسم محدد احتياطياً في ClickHouse؟",
    href: "/ar/resources/support-center/knowledge-base/data-management/backing-up-a-specific-partition",
    category: "Data management",
    tags: ["Managing Data"]
  }, {
    id: "general-faqs/key-value",
    title: "هل يمكنني استخدام ClickHouse كتخزين مفتاح-قيمة؟",
    description: "يجيب على السؤال الشائع حول ما إذا كان يمكن استخدام ClickHouse كتخزين مفتاح-قيمة.",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/key-value",
    category: "General & FAQs",
    tags: []
  }, {
    id: "general-faqs/time-series",
    title: "هل يمكنني استخدام ClickHouse كقاعدة بيانات سلاسل زمنية؟",
    description: "صفحة تصف كيفية استخدام ClickHouse كقاعدة بيانات سلاسل زمنية",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/time-series",
    category: "General & FAQs",
    tags: []
  }, {
    id: "queries-sql/pivot",
    title: "هل يمكن استخدام PIVOT في ClickHouse؟",
    description: "لا يحتوي ClickHouse على عبارة PIVOT، لكن يمكننا محاكاة هذه الوظيفة باستخدام مجمّعات دوال التجميع. لنرَ كيفية القيام بذلك باستخدام مجموعة بيانات أسعار المساكن في المملكة المتحدة.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/pivot",
    category: "Queries & SQL",
    tags: ["Data Modelling", "Core Data Concepts"]
  }, {
    id: "general-faqs/vector-search",
    title: "هل يمكن استخدام ClickHouse للبحث المتجهي؟",
    description: "تعرّف على كيفية استخدام ClickHouse للبحث المتجهي، بما في ذلك تخزين التضمينات والبحث باستخدام دوال المسافة مثل تشابه جيب التمام.",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/vector-search",
    category: "General & FAQs",
    tags: ["Use Cases", "Concepts"]
  }, {
    id: "monitoring-debugging/send-logs-level",
    title: "التقاط سجلات الخادم للاستعلامات على مستوى العميل",
    description: "تعرّف على كيفية التقاط سجلات الخادم على مستوى العميل، حتى مع إعدادات سجل مختلفة، باستخدام إعداد العميل `send_logs_level`.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/send-logs-level",
    category: "Monitoring & debugging",
    tags: ["Server Admin"]
  }, {
    id: "configuration-settings/change-the-prompt-in-clickhouse-client",
    title: "تغيير موجّه الأوامر في clickhouse-client",
    description: "تشرح هذه المقالة كيفية تغيير موجّه الأوامر في عميل ClickHouse ونافذة طرفية clickhouse-local من :) إلى بادئة متبوعة بـ :)",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/change-the-prompt-in-clickhouse-client",
    category: "Configuration & settings",
    tags: ["Settings", "Native Clients and Interfaces"]
  }, {
    id: "security/common-rbac-queries",
    title: "استعلامات RBAC الشائعة",
    description: "استعلامات تساعد في منح أذونات محددة للمستخدمين.",
    href: "/ar/resources/support-center/knowledge-base/security/common-rbac-queries",
    category: "Security & access control",
    tags: ["Security and Authentication", "Managing Cloud"]
  }, {
    id: "queries-sql/comparing-metrics-between-queries",
    title: "مقارنة المقاييس بين الاستعلامات بالديسيبل",
    description: "استعلام لمقارنة المقاييس بين استعلامين في ClickHouse.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/comparing-metrics-between-queries",
    category: "الاستعلامات وSQL",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "configuration-settings/configure-cap-ipc-lock-and-cap-sys-nice-in-docker",
    title: "تهيئة صلاحيتَي CAP_IPC_LOCK وCAP_SYS_NICE في Docker",
    description: "تعرّف على كيفية حل تحذيرات صلاحيات Docker الخاصة بـ `CAP_IPC_LOCK` و`CAP_SYS_NICE` عند تشغيل ClickHouse داخل حاوية.",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/configure-cap-ipc-lock-and-cap-sys-nice-in-docker",
    category: "التهيئة والإعدادات",
    tags: ["الأخطاء والاستثناءات"]
  }, {
    id: "troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker",
    title: "تهيئة صلاحيتَي CAP_IPC_LOCK وCAP_SYS_NICE في Docker",
    description: "تعرّف على كيفية حل تحذيرات صلاحيات Docker الخاصة بـ `CAP_IPC_LOCK` و`CAP_SYS_NICE` عند تشغيل ClickHouse داخل حاوية.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker",
    category: "استكشاف الأخطاء وإصلاحها",
    tags: ["الأخطاء والاستثناءات"]
  }, {
    id: "cloud-services/custom-dns-alias-for-instance",
    title: "إنشاء اسم مستعار DNS مخصص عبر إعداد وكيل عكسي",
    description: "تعرّف على كيفية إعداد اسم مستعار DNS مخصص لمثيلك باستخدام وكيل عكسي",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/custom-dns-alias-for-instance",
    category: "Cloud",
    tags: ["إدارة الخادم", "الأمان والمصادقة"]
  }, {
    id: "troubleshooting/part-intersects-previous-part",
    title: "DB::Exception: Part XXXXX intersects previous part YYYYY. It is a bug or a result of manual intervention in the ZooKeeper data.",
    description: "تشرح هذه المقالة كيفية حل خطأ DB::Exception المتعلق بتقاطع الأجزاء في ClickHouse، والذي يحدث في الغالب بسبب حالة تسابق أو تدخل يدوي في بيانات ZooKeeper.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/part-intersects-previous-part",
    category: "استكشاف الأخطاء وإصلاحها",
    tags: ["الأخطاء والاستثناءات", "جداول النظام"]
  }, {
    id: "setup-installation/difference-between-official-builds-and-3rd-party",
    title: "الفروق بين إصدارات ClickHouse الرسمية وإصدارات الجهات الخارجية",
    description: "تعرّف على الفروق الجوهرية بين إصدارات ClickHouse الرسمية وإصدارات الجهات الخارجية، بما في ذلك التحديثات والتوافق واعتبارات الأمان.",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/difference-between-official-builds-and-3rd-party",
    category: "الإعداد والتثبيت",
    tags: ["المفاهيم"]
  }, {
    id: "general-faqs/cost-based",
    title: "هل يمتلك ClickHouse محسِّنًا قائمًا على التكلفة؟",
    description: "يمتلك ClickHouse آليات معينة للتحسين القائم على التكلفة",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/cost-based",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "general-faqs/datalake",
    title: "هل يدعم ClickHouse بحيرات البيانات؟",
    description: "يدعم ClickHouse بحيرات البيانات، بما في ذلك Iceberg وDelta Lake وApache Hudi وApache Paimon وHive",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/datalake",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "general-faqs/distributed-join",
    title: "هل يدعم ClickHouse عمليات JOIN الموزعة؟",
    description: "يدعم ClickHouse عمليات JOIN الموزعة",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/distributed-join",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "general-faqs/federated",
    title: "هل يدعم ClickHouse الاستعلامات الموحدة؟",
    description: "يدعم ClickHouse طيفًا واسعًا من الاستعلامات الموحدة والهجينة",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/federated",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "general-faqs/concurrency",
    title: "هل يدعم ClickHouse الاستعلامات المتكررة والمتزامنة؟",
    description: "يدعم ClickHouse معدلات QPS مرتفعة والتزامن العالي",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/concurrency",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "cloud-services/multi-region-replication",
    title: "هل يدعم ClickHouse النسخ المتماثل متعدد المناطق؟",
    description: "تجيب هذه الصفحة عن سؤال دعم ClickHouse للنسخ المتماثل متعدد المناطق",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/multi-region-replication",
    category: "Cloud",
    tags: []
  }, {
    id: "general-faqs/updates",
    title: "هل يدعم ClickHouse التحديثات الفورية؟",
    description: "يدعم ClickHouse التحديثات الفورية الخفيفة",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/updates",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "security/row-column-policy",
    title: "هل يدعم ClickHouse الأمان على مستوى الصف والعمود؟",
    description: "تعرّف على قيود الوصول على مستوى الصف والعمود في ClickHouse وClickHouse Cloud، وكيفية تطبيق التحكم في الوصول القائم على الأدوار (RBAC) باستخدام السياسات.",
    href: "/ar/resources/support-center/knowledge-base/security/row-column-policy",
    category: "الأمان والتحكم في الوصول",
    tags: ["الأمان والمصادقة"]
  }, {
    id: "cloud-services/execute-system-queries-in-cloud",
    title: "تنفيذ عبارات SYSTEM على جميع العقد في ClickHouse Cloud",
    description: "تعرّف على كيفية استخدام `ON CLUSTER` و`clusterAllReplicas` لتنفيذ عبارات SYSTEM والاستعلامات عبر جميع العقد في خدمة ClickHouse Cloud.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/execute-system-queries-in-cloud",
    category: "Cloud",
    tags: ["النشر والتوسع"]
  }, {
    id: "troubleshooting/count-parts-by-type",
    title: "البحث عن أعداد وأحجام الأجزاء الواسعة أو المضغوطة",
    description: "توضح هذه المقالة في قاعدة المعرفة كيفية البحث عن أعداد الأجزاء حسب نوعها - واسعة أو مضغوطة.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/count-parts-by-type",
    category: "استكشاف الأخطاء وإصلاحها",
    tags: ["استكشاف الأخطاء وإصلاحها"]
  }, {
    id: "troubleshooting/fix-developer-verification-error-in-macos",
    title: "إصلاح خطأ التحقق من المطوّر في MacOS",
    description: "تعرّف على كيفية حل خطأ التحقق من المطوّر في MacOS عند تشغيل أوامر ClickHouse، سواء عبر إعدادات النظام أو الطرفية.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/fix-developer-verification-error-in-macos",
    category: "استكشاف الأخطاء وإصلاحها",
    tags: ["الأخطاء والاستثناءات"]
  }, {
    id: "data-import-export/s3-export-data-year-month-folders",
    title: "كيف يمكنني إجراء كتابات مقسّمة حسب السنة والشهر على S3؟",
    description: "تعرّف على كيفية كتابة البيانات المقسّمة حسب السنة والشهر إلى حاوية S3 في ClickHouse، باستخدام بنية مسار مخصصة لتنظيم البيانات.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/s3-export-data-year-month-folders",
    category: "استيراد البيانات وتصديرها",
    tags: ["تصدير البيانات", "العملاء والواجهات الأصلية"]
  }, {
    id: "data-import-export/kafka-clickhouse-json",
    title: "كيف يمكنني استخدام نوع بيانات JSON الجديد مع Kafka؟",
    description: "تعرّف على كيفية تحميل رسائل JSON من Apache Kafka مباشرةً إلى عمود JSON واحد في ClickHouse باستخدام محرك جدول Kafka ونوع بيانات JSON.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/kafka-clickhouse-json",
    category: "استيراد البيانات وتصديرها",
    tags: ["تنسيقات البيانات", "استيعاب البيانات"]
  }, {
    id: "cloud-services/change-billing-email",
    title: "كيف أغيّر جهة اتصال الفوترة في ClickHouse Cloud؟",
    description: "تعرّف على كيفية تغيير عنوان الفوترة في ClickHouse Cloud.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/change-billing-email",
    category: "Cloud",
    tags: ["إدارة Cloud"]
  }, {
    id: "general-faqs/how-do-i-contribute-code-to-clickhouse",
    title: "كيف أساهم بكود في ClickHouse؟",
    description: "ClickHouse مشروع مفتوح المصدر يُطوَّر على GitHub. وفق المعتاد، تُنشر تعليمات المساهمة في ملف CONTRIBUTING الموجود في جذر مستودع الكود المصدري.",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/how-do-i-contribute-code-to-clickhouse",
    category: "عام والأسئلة الشائعة",
    tags: ["المجتمع"]
  }, {
    id: "data-import-export/parquet-to-csv-json",
    title: "كيف أحوّل الملفات من Parquet إلى CSV أو JSON؟",
    description: "تعرّف على كيفية استخدام أداة `clickhouse-local` في ClickHouse لتحويل ملفات Parquet إلى صيغتَي CSV أو JSON بسهولة.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/parquet-to-csv-json",
    category: "استيراد البيانات وتصديرها",
    tags: ["مصادر البيانات", "صيغ البيانات"]
  }, {
    id: "data-import-export/mysql-to-parquet-csv-json",
    title: "كيف أصدّر بيانات MySQL إلى Parquet أو CSV أو JSON باستخدام ClickHouse؟",
    description: "تعرّف على كيفية استخدام أداة `clickhouse-local` لتصدير بيانات MySQL إلى صيغ مثل Parquet أو CSV أو JSON بسرعة وكفاءة.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/mysql-to-parquet-csv-json",
    category: "استيراد البيانات وتصديرها",
    tags: ["صيغ البيانات", "تصدير البيانات"]
  }, {
    id: "data-import-export/postgresql-to-parquet-csv-json",
    title: "كيف أصدّر بيانات PostgreSQL إلى Parquet أو CSV أو JSON؟",
    description: "تعرّف على كيفية تصدير بيانات PostgreSQL إلى صيغ Parquet أو CSV أو JSON باستخدام `clickhouse-local` مع أمثلة متنوعة.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/postgresql-to-parquet-csv-json",
    category: "استيراد البيانات وتصديرها",
    tags: ["تصدير البيانات", "صيغ البيانات"]
  }, {
    id: "setup-installation/install-clickhouse-windows10",
    title: "كيف أثبّت ClickHouse على Windows 10؟",
    description: "تعرّف على كيفية تثبيت ClickHouse واختباره على Windows 10 باستخدام WSL 2. يشمل الإعداد واستكشاف الأخطاء وتشغيل بيئة اختبار.",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/install-clickhouse-windows10",
    category: "الإعداد والتثبيت",
    tags: ["الأدوات والمرافق"]
  }, {
    id: "security/remove-default-user",
    title: "كيف أحذف المستخدم الافتراضي؟",
    description: "تعرّف على كيفية حذف المستخدم الافتراضي عند تشغيل ClickHouse Server.",
    href: "/ar/resources/support-center/knowledge-base/security/remove-default-user",
    category: "الأمان والتحكم في الوصول",
    tags: ["إدارة الخادم"]
  }, {
    id: "cloud-services/ingest-failures-23-9-release",
    title: "كيف أحلّ أخطاء الاستيعاب بعد إصدار ClickHouse 23.9؟",
    description: "تعرّف على كيفية حلّ أخطاء الاستيعاب الناجمة عن التحقق الأكثر صرامة من الصلاحيات الذي أُدخل في ClickHouse 23.9 للجداول التي تستخدم `async_inserts`. حدّث الصلاحيات لإصلاح الأخطاء.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/ingest-failures-23-9-release",
    category: "Cloud",
    tags: ["الأخطاء والاستثناءات"]
  }, {
    id: "performance-optimization/insert-select-settings-tuning",
    title: "كيف أحلّ خطأ TOO MANY PARTS أثناء تنفيذ INSERT...SELECT؟",
    description: "حلّ خطأ TOO_MANY_PARTS في ClickHouse أثناء تنفيذ `INSERT...SELECT` عبر ضبط إعدادات متقدمة لكتل أكبر وزيادة حدود الأقسام.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/insert-select-settings-tuning",
    category: "الأداء والتحسين",
    tags: ["الإعدادات", "الأخطاء والاستثناءات"]
  }, {
    id: "integrations/node-js-example",
    title: "كيف أستخدم NodeJS مع @clickhouse/client؟",
    description: "تعرّف على كيفية استخدام @clickhouse/client في تطبيق Node.js للتفاعل مع ClickHouse وتنفيذ الاستعلامات.",
    href: "/ar/resources/support-center/knowledge-base/integrations/node-js-example",
    category: "التكاملات ومكتبات العملاء",
    tags: ["عملاء اللغات"]
  }, {
    id: "monitoring-debugging/view-number-of-active-mutations",
    title: "كيف أعرض عدد التحولات النشطة أو المنتظرة في قائمة الانتظار؟",
    description: "راقب عدد التحولات النشطة أو المنتظرة في ClickHouse، لا سيما عند تنفيذ عمليات `ALTER` أو `UPDATE`. استخدم جدول `system.mutations` لتتبع التحولات.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/view-number-of-active-mutations",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["جداول النظام"]
  }, {
    id: "data-management/read-consistency",
    title: "كيف أضمن اتساق قراءة البيانات في ClickHouse؟",
    description: "تعرّف على كيفية ضمان اتساق البيانات عند القراءة من ClickHouse، سواء كنت متصلاً بالعقدة ذاتها أو بعقدة عشوائية.",
    href: "/ar/resources/support-center/knowledge-base/data-management/read-consistency",
    category: "إدارة البيانات",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "setup-installation/llvm-clang-up-to-date",
    title: "كيف أبني LLVM وclang على Linux؟",
    description: "أوامر لبناء LLVM وclang على Linux.",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/llvm-clang-up-to-date",
    category: "الإعداد والتثبيت",
    tags: ["المجتمع", "الأدوات والمرافق"]
  }, {
    id: "data-management/calculate-ratio-of-zero-sparse-serialization",
    title: "كيف أحسب نسبة القيم الفارغة/الصفرية في كل عمود في جدول؟",
    description: "تعرّف على كيفية حساب نسبة القيم الفارغة أو الصفرية في كل عمود من أعمدة جدول ClickHouse لتحسين تسلسل الأعمدة المتفرقة.",
    href: "/ar/resources/support-center/knowledge-base/data-management/calculate-ratio-of-zero-sparse-serialization",
    category: "إدارة البيانات",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "security/check-users-roles",
    title: "كيف أتحقق من المستخدمين المعيّنين للأدوار والعكس بالعكس؟",
    description: "تعرّف على كيفية الاستعلام عن `system.role_grants` في ClickHouse للعثور على المستخدمين المعيّنين للأدوار والأدوار المعيّنة لمستخدمين محددين.",
    href: "/ar/resources/support-center/knowledge-base/security/check-users-roles",
    category: "الأمان والتحكم في الوصول",
    tags: ["إدارة الخادم", "جداول النظام", "إدارة Cloud"]
  }, {
    id: "monitoring-debugging/which-processes-are-currently-running",
    title: "كيف أتحقق من الكود الذي يعمل حالياً على الخادم؟",
    description: "يوفر ClickHouse أدوات استبطان مثل `system.stack_trace` لفحص الكود الذي يعمل حالياً على كل خيط من خيوط الخادم، مما يساعد في تصحيح الأخطاء ومراقبة الأداء.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/which-processes-are-currently-running",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["إدارة الخادم"]
  }, {
    id: "cloud-services/how-to-check-my-clickhouse-cloud-sevice-state",
    title: "كيف أتحقق من حالة خدمة ClickHouse Cloud الخاصة بي؟",
    description: "تعرّف على كيفية استخدام واجهة برمجة تطبيقات ClickHouse Cloud للتحقق مما إذا كانت خدمتك متوقفة أو خاملة أو تعمل دون تنشيطها.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/how-to-check-my-clickhouse-cloud-sevice-state",
    category: "Cloud",
    tags: ["إدارة Cloud"]
  }, {
    id: "configuration-settings/configure-a-user-setting",
    title: "كيف أضبط الإعدادات لمستخدم في ClickHouse؟",
    description: "تعرّف على كيفية تعريف الإعدادات في ClickHouse للاستعلامات الفردية أو جلسات العميل أو مستخدمين محددين باستخدام أوامر `SET` و`ALTER USER`.",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/configure-a-user-setting",
    category: "التهيئة والإعدادات",
    tags: ["الإعدادات"]
  }, {
    id: "materialized-views/projection-example",
    title: "كيف أتأكد من استخدام الإسقاط في الاستعلام؟",
    description: "تعرّف على كيفية التحقق من استخدام الإسقاط في استعلامات ClickHouse عبر الاختبار ببيانات نموذجية واستخدام EXPLAIN للتحقق من توظيف الإسقاط.",
    href: "/ar/resources/support-center/knowledge-base/materialized-views/projection-example",
    category: "طرق العرض المادية والإسقاطات",
    tags: ["نمذجة البيانات"]
  }, {
    id: "cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys",
    title: "كيف أتصل بـ ClickHouse باستخدام مفاتيح SSH؟",
    description: "كيفية الاتصال بـ ClickHouse وClickHouse Cloud باستخدام مفاتيح SSH",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys",
    category: "Cloud",
    tags: ["إدارة Cloud", "الأمان والمصادقة"]
  }, {
    id: "data-management/dictionary-using-strings",
    title: "كيفية إنشاء قاموس ClickHouse بمفاتيح وقيم نصية",
    description: "تعرّف على كيفية إنشاء قاموس ClickHouse باستخدام مفاتيح وقيم نصية من جدول MergeTree كمصدر للبيانات، مع أمثلة على الإعداد والاستخدام.",
    href: "/ar/resources/support-center/knowledge-base/data-management/dictionary-using-strings",
    category: "إدارة البيانات",
    tags: ["نمذجة البيانات"]
  }, {
    id: "tables-schema/how-to-create-table-to-query-multiple-remote-clusters",
    title: "كيفية إنشاء جدول يستطيع الاستعلام من مجموعات عناقيد بعيدة متعددة",
    description: "كيفية إنشاء جدول يستطيع الاستعلام من مجموعات عناقيد بعيدة متعددة",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/how-to-create-table-to-query-multiple-remote-clusters",
    category: "الجداول والمخطط",
    tags: ["النشر والتوسع"]
  }, {
    id: "setup-installation/enabling-ssl-with-lets-encrypt",
    title: "كيفية تفعيل SSL باستخدام Let's Encrypt على خادم ClickHouse مستقل",
    description: "تعرّف على كيفية إعداد SSL لخادم ClickHouse مستقل باستخدام Let's Encrypt، بما في ذلك إصدار الشهادات والتهيئة والتحقق منها.",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/enabling-ssl-with-lets-encrypt",
    category: "الإعداد والتثبيت",
    tags: ["الأمان والمصادقة"]
  }, {
    id: "data-import-export/file-export",
    title: "كيفية تصدير البيانات من ClickHouse إلى ملف",
    description: "تعرّف على الطرق المختلفة لتصدير البيانات من ClickHouse، بما في ذلك `INTO OUTFILE` ومحرك جدول File وإعادة توجيه سطر الأوامر.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/file-export",
    category: "استيراد البيانات وتصديرها",
    tags: ["تصدير البيانات"]
  }, {
    id: "queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column",
    title: "كيفية تصفية جدول ClickHouse باستخدام عمود من نوع Array؟",
    description: "مقالة في قاعدة المعرفة حول كيفية تصفية جدول ClickHouse باستخدام عمود من نوع Array.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/how-to-filter-a-clickhouse-table-by-an-array-column",
    category: "الاستعلامات وSQL",
    tags: ["نمذجة البيانات", "الدوال"]
  }, {
    id: "monitoring-debugging/generate-har-file",
    title: "كيفية إنشاء ملف HAR لفريق الدعم التقني",
    description: "يرصد ملف HAR (HTTP Archive) نشاط الشبكة في متصفحك، ويمكّن فريق الدعم من تشخيص بطء تحميل الصفحات والطلبات الفاشلة وغيرها من مشكلات الشبكة.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/generate-har-file",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["الأدوات والمرافق"]
  }, {
    id: "materialized-views/how-to-display-queries-using-mv",
    title: "كيفية تحديد الاستعلامات التي تستخدم المشاهدات المادية في ClickHouse",
    description: "تعرّف على كيفية الاستعلام من سجلات ClickHouse لتحديد جميع الاستعلامات التي تتضمن مشاهدات مادية ضمن نطاق زمني محدد.",
    href: "/ar/resources/support-center/knowledge-base/materialized-views/how-to-display-queries-using-mv",
    category: "المشاهدات المادية والإسقاطات",
    tags: ["جداول النظام"]
  }, {
    id: "performance-optimization/find-expensive-queries",
    title: "كيفية تحديد أكثر الاستعلامات استهلاكاً للموارد في ClickHouse",
    description: "تعرّف على كيفية استخدام جدول `query_log` في ClickHouse لتحديد الاستعلامات الأكثر استهلاكاً للذاكرة ووحدة المعالجة المركزية عبر العقد الموزعة.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/find-expensive-queries",
    category: "الأداء والتحسين",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "configuration-settings/ignoring-incorrect-settings",
    title: "كيفية تجاهل الإعدادات غير الصحيحة في ClickHouse",
    description: "تعرّف على كيفية استخدام خيار `skip_check_for_incorrect_settings` للسماح لـ ClickHouse بالتشغيل حتى عند تحديد إعدادات مستوى المستخدم بشكل غير صحيح.",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/ignoring-incorrect-settings",
    category: "التهيئة والإعدادات",
    tags: ["الإعدادات"]
  }, {
    id: "data-import-export/json-import",
    title: "كيفية استيراد JSON إلى ClickHouse؟",
    description: "توضح هذه الصفحة كيفية استيراد JSON إلى ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/json-import",
    category: "Data import & export",
    tags: []
  }, {
    id: "setup-installation/how-to-increase-thread-pool-size",
    title: "كيفية زيادة عدد الخيوط في ClickHouse",
    description: "تعرّف على كيفية تهيئة مجموعة الخيوط العامة في ClickHouse عبر ضبط إعدادات مثل `max_thread_pool_size` و`thread_pool_queue_size` و`max_thread_pool_free_size`.",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/how-to-increase-thread-pool-size",
    category: "الإعداد والتثبيت",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "data-import-export/kafka-to-clickhouse-setup",
    title: "كيفية استيعاب البيانات من Kafka إلى ClickHouse",
    description: "تعرّف على كيفية استيعاب البيانات من موضوع Kafka إلى ClickHouse باستخدام محرك جدول Kafka والمشاهدات المادية وجداول MergeTree.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/kafka-to-clickhouse-setup",
    category: "استيراد البيانات وتصديرها",
    tags: ["استيعاب البيانات"]
  }, {
    id: "data-import-export/ingest-parquet-files-in-s3",
    title: "كيفية استيعاب ملفات Parquet من حاوية S3",
    description: "تعرّف على أساسيات استخدام محرك جدول S3 في ClickHouse لاستيعاب ملفات Parquet والاستعلام عنها من حاوية S3، بما في ذلك الإعداد وأذونات الوصول وأمثلة على استيراد البيانات.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/ingest-parquet-files-in-s3",
    category: "استيراد البيانات وتصديرها",
    tags: ["استيعاب البيانات"]
  }, {
    id: "queries-sql/how-to-insert-all-rows-from-another-table",
    title: "كيفية إدراج جميع الصفوف من جدول إلى آخر؟",
    description: "مقالة في قاعدة المعرفة حول كيفية إدراج جميع الصفوف من جدول إلى آخر.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/how-to-insert-all-rows-from-another-table",
    category: "الاستعلامات وSQL",
    tags: ["استيعاب البيانات"]
  }, {
    id: "performance-optimization/check-query-processing-time-only",
    title: "كيفية قياس وقت معالجة الاستعلام دون إرجاع صفوف",
    description: "تعرّف على كيفية استخدام خيار `FORMAT Null` في ClickHouse لقياس وقت معالجة الاستعلام دون إرجاع أي صفوف إلى العميل.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/check-query-processing-time-only",
    category: "الأداء والتحسين",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "monitoring-debugging/outputSendLogsLevelTracesToFile",
    title: "كيفية إخراج تتبعات مستوى إرسال السجلات إلى ملف باستخدام clickhouse-client",
    description: "كيفية إخراج تتبعات مستوى إرسال السجلات إلى ملف باستخدام clickhouse-client",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/outputSendLogsLevelTracesToFile",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["تصدير البيانات"]
  }, {
    id: "tables-schema/recreate-table-across-terminals",
    title: "كيفية إعادة إنشاء جدول صغير بسرعة عبر محطات طرفية مختلفة",
    description: "تعرّف على كيفية إعادة إنشاء جدول صغير وبياناته بسرعة عبر محطات طرفية مختلفة باستخدام النسخ واللصق في بيئات التطوير.",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/recreate-table-across-terminals",
    category: "الجداول والمخطط",
    tags: ["الأدوات والمرافق"]
  }, {
    id: "integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql",
    title: "كيفية إعداد ClickHouse على Docker باستخدام ODBC للاتصال بقاعدة بيانات Microsoft SQL Server (MSSQL)",
    description: "كيفية إعداد ClickHouse على Docker باستخدام ODBC للاتصال بقاعدة بيانات Microsoft SQL Server (MSSQL)",
    href: "/ar/resources/support-center/knowledge-base/integrations/how-to-set-up-ch-on-docker-odbc-connect-mssql",
    category: "التكاملات ومكتبات العملاء",
    tags: ["العملاء والواجهات الأصلية"]
  }, {
    id: "queries-sql/using-array-join-to-extract-and-query-attributes",
    title: "كيفية استخدام array join لاستخراج الخصائص المتغيرة والاستعلام عنها باستخدام مفاتيح وقيم Map",
    description: "مثال بسيط يوضح كيفية استخدام array join لاستخراج السمات المتغيرة والاستعلام عنها باستخدام مفاتيح وقيم الـ map",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/using-array-join-to-extract-and-query-attributes",
    category: "الاستعلامات وSQL",
    tags: ["الدالة"]
  }, {
    id: "materialized-views/how-to-use-parametrised-views",
    title: "كيفية استخدام العروض ذات المعاملات في ClickHouse",
    description: "تعرّف على كيفية إنشاء العروض ذات المعاملات والاستعلام عنها في ClickHouse لتقسيم البيانات ديناميكيًا بناءً على معاملات وقت الاستعلام.",
    href: "/ar/resources/support-center/knowledge-base/materialized-views/how-to-use-parametrised-views",
    category: "المشاهدات المادية والإسقاطات",
    tags: ["حالات الاستخدام"]
  }, {
    id: "tables-schema/exchangeStatementToSwitchTables",
    title: "كيفية استخدام أمر exchange للتبديل بين الجداول",
    description: "كيفية استخدام أمر exchange للتبديل بين الجداول",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/exchangeStatementToSwitchTables",
    category: "الجداول والمخطط",
    tags: ["إدارة البيانات"]
  }, {
    id: "queries-sql/compare-resultsets",
    title: "كيفية التحقق من أن استعلامين يُعيدان مجموعتَي نتائج متطابقتين",
    description: "تعرّف على كيفية التحقق من أن استعلامَي ClickHouse ينتجان مجموعتَي نتائج متطابقتين باستخدام دوال التجزئة وأساليب المقارنة.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/compare-resultsets",
    category: "الاستعلامات وSQL",
    tags: ["الدالة"]
  }, {
    id: "monitoring-debugging/check-query-cache-in-use",
    title: "كيفية التحقق من استخدام ذاكرة التخزين المؤقت للاستعلامات في ClickHouse",
    description: "تعرّف على كيفية التحقق مما إذا كانت ذاكرة التخزين المؤقت للاستعلامات مُستخدَمة في ClickHouse باستخدام سجلات التتبع في `clickhouse-client` أو أوامر SQL.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/check-query-cache-in-use",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "cloud-services/unable-to-access-cloud-service",
    title: "تعذّر عليّ الوصول إلى خدمة ClickHouse Cloud",
    description: "استكشاف مشكلات الوصول إلى خدمات ClickHouse Cloud وإصلاحها، بما في ذلك ضبط قائمة الوصول بعناوين IP",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/unable-to-access-cloud-service",
    category: "Cloud",
    tags: ["الأخطاء والاستثناءات", "إدارة Cloud"]
  }, {
    id: "performance-optimization/finding-expensive-queries-by-memory-usage",
    title: "تحديد الاستعلامات المُكلفة حسب استخدام الذاكرة في ClickHouse",
    description: "تعرّف على كيفية استخدام جدول `system.query_log` للعثور على الاستعلامات الأكثر استهلاكًا للذاكرة في ClickHouse، مع أمثلة لإعدادات الـ cluster والإعدادات المستقلة.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/finding-expensive-queries-by-memory-usage",
    category: "الأداء والتحسين",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "data-import-export/importing-and-working-with-json-array-objects",
    title: "استيراد كائنات مصفوفة JSON والاستعلام عنها في ClickHouse",
    description: "تعرّف على كيفية استيراد كائنات مصفوفة JSON إلى ClickHouse وتنفيذ استعلامات متقدمة باستخدام دوال JSON وعمليات المصفوفات.",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/importing-and-working-with-json-array-objects",
    category: "استيراد البيانات وتصديرها",
    tags: ["تنسيقات البيانات"]
  }, {
    id: "data-import-export/importing-geojason-with-nested-object-array",
    title: "استيراد GeoJSON مع مصفوفة كائنات متداخلة بعمق",
    description: "\"استيراد GeoJSON مع مصفوفة كائنات متداخلة بعمق\"",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/importing-geojason-with-nested-object-array",
    category: "استيراد البيانات وتصديرها",
    tags: ["تنسيقات البيانات"]
  }, {
    id: "performance-optimization/improve-map-performance",
    title: "تحسين أداء البحث في Map بـ ClickHouse",
    description: "تعرّف على كيفية تحسين عمليات البحث في أعمدة Map بـ ClickHouse لتحقيق أداء استعلام أفضل عبر تحويل مفاتيح محددة إلى أعمدة مستقلة.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/improve-map-performance",
    category: "الأداء والتحسين",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "tables-schema/delete-old-data",
    title: "هل يمكن حذف السجلات القديمة من جدول ClickHouse؟",
    description: "تجيب هذه الصفحة على سؤال ما إذا كان بالإمكان حذف السجلات القديمة من جدول ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/delete-old-data",
    category: "الجداول والمخطط",
    tags: []
  }, {
    id: "general-faqs/separate-storage",
    title: "هل يمكن نشر ClickHouse مع فصل التخزين عن الحوسبة؟",
    description: "تقدم هذه الصفحة إجابة عن إمكانية نشر ClickHouse مع فصل التخزين عن الحوسبة",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/separate-storage",
    category: "عام وأسئلة شائعة",
    tags: []
  }, {
    id: "data-import-export/json-extract-example",
    title: "مثال على استخراج JSON",
    description: "مثال موجز على كيفية استخراج الأنواع الأساسية من JSON",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/json-extract-example",
    category: "استيراد البيانات وتصديرها",
    tags: ["تنسيقات البيانات"]
  }, {
    id: "queries-sql/calculate-pi-using-sql",
    title: "لنحسب قيمة باي باستخدام SQL",
    description: "إنه يوم باي! لنحسب قيمة باي باستخدام ClickHouse SQL",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/calculate-pi-using-sql",
    category: "الاستعلامات وSQL",
    tags: ["حالات الاستخدام"]
  }, {
    id: "cloud-services/clickhouse-cloud-api-usage",
    title: "إدارة خدمة ClickHouse Cloud باستخدام API وcURL",
    description: "تعرّف على كيفية تشغيل خدمة ClickHouse Cloud وإيقافها واستئنافها باستخدام نقاط نهاية API وأوامر cURL.",
    href: "/ar/resources/support-center/knowledge-base/cloud-services/clickhouse-cloud-api-usage",
    category: "Cloud",
    tags: ["إدارة Cloud", "الأدوات والمرافق"]
  }, {
    id: "monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics",
    title: "ربط المقاييس المستخدمة في system.dashboards بمقاييس Prometheus في `system.custom_metrics`",
    description: "ربط المقاييس المستخدمة في system.dashboards بمقاييس Prometheus في system.custom_metrics",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/mapping-of-system-metrics-to-prometheus-metrics",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["جداول النظام"]
  }, {
    id: "security/windows-active-directory-to-ch-roles",
    title: "ربط مجموعات أمان Windows Active Directory بأدوار ClickHouse",
    description: "مثال على ربط مجموعات أمان Windows Active Directory بأدوار ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/security/windows-active-directory-to-ch-roles",
    category: "الأمان والتحكم في الوصول",
    tags: ["الأدوات والمرافق"]
  }, {
    id: "performance-optimization/memory-limit-exceeded-for-query",
    title: "تجاوز حد الذاكرة للاستعلام",
    description: "استكشاف أخطاء تجاوز حد الذاكرة للاستعلام وإصلاحها",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/memory-limit-exceeded-for-query",
    category: "الأداء والتحسين",
    tags: ["الأخطاء والاستثناءات"]
  }, {
    id: "integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector",
    title: "خطأ فشل مصادقة ODBC عند استخدام موصّل Power BI لـ ClickHouse",
    description: "خطأ فشل مصادقة ODBC عند استخدام موصّل Power BI لـ ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/integrations/ODBC-authentication-failed-error-using-PowerBI-CH-connector",
    category: "التكاملات ومكتبات العملاء",
    tags: ["العملاء والواجهات الأصلية", "الأخطاء والاستثناءات"]
  }, {
    id: "monitoring-debugging/profiling-clickhouse-with-llvm-xray",
    title: "تحليل أداء ClickHouse باستخدام XRay من LLVM",
    description: "تعرّف على كيفية تحليل أداء ClickHouse باستخدام أداة التوصيف XRay من LLVM، وتصوير آثار التنفيذ، وتحليل الأداء.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/profiling-clickhouse-with-llvm-xray",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["الأداء والتحسينات", "الأدوات والمرافق"]
  }, {
    id: "integrations/python-http-requests",
    title: "Python quick example using HTTP requests module",
    description: "An example using Python and requests module to write and read to ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/integrations/python-http-requests",
    category: "Integrations & client libraries",
    tags: ["Native Clients and Interfaces"]
  }, {
    id: "configuration-settings/maximum-number-of-tables-and-databases",
    title: "Recommended Maximum Databases, Tables, Partitions, and Parts in ClickHouse",
    description: "Learn the recommended maximum limits for databases, tables, partitions, and parts in a ClickHouse cluster to ensure optimal performance.",
    href: "/ar/resources/support-center/knowledge-base/configuration-settings/maximum-number-of-tables-and-databases",
    category: "Configuration & settings",
    tags: ["Performance and Optimizations", "Deployments and Scaling"]
  }, {
    id: "data-import-export/cannot-append-data-to-parquet-format",
    title: 'Resolving "Cannot Append Data in Parquet Format" Error in ClickHouse',
    description: 'Are you getting the error "Cannot append data in format Parquet to file" error in ClickHouse? Let\'s take a look at how to resolve it.',
    href: "/ar/resources/support-center/knowledge-base/data-import-export/cannot-append-data-to-parquet-format",
    category: "Data import & export",
    tags: ["Errors and Exceptions", "Data Formats"]
  }, {
    id: "troubleshooting/exception-too-many-parts",
    title: 'Resolving "Too Many Parts" Error in ClickHouse',
    description: 'Learn how to address the "Too many parts" error in ClickHouse by optimizing insert rates, configuring MergeTree settings, and managing partitions effectively.',
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/exception-too-many-parts",
    category: "Troubleshooting & errors",
    tags: ["Errors and Exceptions"]
  }, {
    id: "troubleshooting/certificate-verify-failed-error",
    title: "Resolving SSL Certificate Verify Error in ClickHouse",
    description: "Learn how to resolve the SSL Exception CERTIFICATE_VERIFY_FAILED error.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/certificate-verify-failed-error",
    category: "Troubleshooting & errors",
    tags: ["Security and Authentication", "Errors and Exceptions"]
  }, {
    id: "troubleshooting/connection-timeout-remote-remoteSecure",
    title: "Resolving Timeout Errors with `remote` and `remoteSecure` Table Functions",
    description: "Learn how to fix timeout errors when using `remote` or `remoteSecure` table functions in ClickHouse by adjusting the connection timeout settings.",
    href: "/ar/resources/support-center/knowledge-base/troubleshooting/connection-timeout-remote-remoteSecure",
    category: "Troubleshooting & errors",
    tags: ["Errors and Exceptions"]
  }, {
    id: "tables-schema/search-across-node-for-tables-with-a-wildcard",
    title: "Searching across nodes for tables with a wildcard",
    description: "Learn how to search across nodes for tables with a wildcard.",
    href: "/ar/resources/support-center/knowledge-base/tables-schema/search-across-node-for-tables-with-a-wildcard",
    category: "Tables & schema",
    tags: ["Deployments and Scaling"]
  }, {
    id: "performance-optimization/query-max-execution-time",
    title: "Setting a limit on query execution time",
    description: "How to enforce limit on max query execution time",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/query-max-execution-time",
    category: "Performance & optimization",
    tags: ["Managing Cloud", "Settings"]
  }, {
    id: "data-import-export/json-simple-example",
    title: "Simple example flow for extracting JSON data using a landing table with a Materialized View",
    description: "Simple example flow for extracting JSON data using a landing table with a Materialized View",
    href: "/ar/resources/support-center/knowledge-base/data-import-export/json-simple-example",
    category: "Data import & export",
    tags: ["Data Formats"]
  }, {
    id: "performance-optimization/async-vs-optimize-read-in-order",
    title: "Synchronous data reading",
    description: "The new setting `allow_asynchronous_read_from_io_pool_for_merge_tree` allows the number of reading threads (streams) to be higher than the number of threads in the rest of the query execution pipeline.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/async-vs-optimize-read-in-order",
    category: "Performance & optimization",
    tags: ["Settings", "Performance and Optimizations"]
  }, {
    id: "integrations/terraform-example",
    title: "Terraform example on how to use Cloud API",
    description: "This covers an example of how you can use terraform to create/delete clusters using the API",
    href: "/ar/resources/support-center/knowledge-base/integrations/terraform-example",
    category: "Integrations & client libraries",
    tags: ["Native Clients and Interfaces"]
  }, {
    id: "performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse",
    title: "Tips and tricks on optimizing basic data types in ClickHouse",
    description: "Tips and tricks on optimizing basic data types in ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/tips-tricks-optimizing-basic-data-types-in-clickhouse",
    category: "Performance & optimization",
    tags: ["Performance and Optimizations"]
  }, {
    id: "queries-sql/useful-queries-for-troubleshooting",
    title: "Useful queries for troubleshooting",
    description: "A collection of handy queries for troubleshooting ClickHouse, including monitoring table sizes, long-running queries, and errors.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/useful-queries-for-troubleshooting",
    category: "Queries & SQL",
    tags: ["Settings"]
  }, {
    id: "general-faqs/use-clickhouse-for-log-analytics",
    title: "Using ClickHouse for Log Analytics",
    description: "ClickHouse is popular for logs and metrics analysis because of the real-time analytics capabilities provided. Ready to find out more?",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/use-clickhouse-for-log-analytics",
    category: "General & FAQs",
    tags: ["Use Cases"]
  }, {
    id: "queries-sql/filtered-aggregates",
    title: "Using Filtered Aggregates in ClickHouse",
    description: "Learn how to use filtered aggregates in ClickHouse with `-If` and `-Distinct` aggregate combinators to simplify query syntax and enhance analytics.",
    href: "/ar/resources/support-center/knowledge-base/queries-sql/filtered-aggregates",
    category: "Queries & SQL",
    tags: ["Functions"]
  }, {
    id: "general-faqs/dependencies",
    title: "What are the 3rd-party dependencies for running ClickHouse?",
    description: "ClickHouse is self-contained and has no runtime dependencies",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/dependencies",
    category: "General & FAQs",
    tags: []
  }, {
    id: "general-faqs/dbms-naming",
    title: 'ماذا يعني "ClickHouse"؟',
    description: 'Learn about ماذا يعني "ClickHouse"؟',
    href: "/ar/resources/support-center/knowledge-base/general-faqs/dbms-naming",
    category: "General & FAQs",
    tags: []
  }, {
    id: "general-faqs/ne-tormozit",
    title: "What does “не тормозит” mean?",
    description: 'This page explains what "Не тормозит" means',
    href: "/ar/resources/support-center/knowledge-base/general-faqs/ne-tormozit",
    category: "General & FAQs",
    tags: []
  }, {
    id: "integrations/oracle-odbc",
    title: "What if I have a problem with encodings when using Oracle via ODBC?",
    description: "This page provides guidance on what to do if you have a problem with encodings when using Oracle via ODBC",
    href: "/ar/resources/support-center/knowledge-base/integrations/oracle-odbc",
    category: "Integrations & client libraries",
    tags: []
  }, {
    id: "general-faqs/columnar-database",
    title: "What is a columnar database?",
    description: "This page describes what a columnar database is",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/columnar-database",
    category: "General & FAQs",
    tags: []
  }, {
    id: "general-faqs/olap",
    title: "ما هو OLAP؟",
    description: "شرح لماهية المعالجة التحليلية عبر الإنترنت",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/olap",
    category: "عام والأسئلة الشائعة",
    tags: []
  }, {
    id: "performance-optimization/optimize-final-vs-final",
    title: "ما الفرق بين OPTIMIZE FINAL وFINAL؟",
    description: "يناقش الفروق بين OPTIMIZE FINAL وFINAL، ومتى ينبغي استخدام كلٍّ منهما أو تجنّبه.",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/optimize-final-vs-final",
    category: "الأداء والتحسين",
    tags: ["مفاهيم البيانات الأساسية"]
  }, {
    id: "general-faqs/sql",
    title: "ما بناء جملة SQL الذي يدعمه ClickHouse؟",
    description: "يدعم ClickHouse بناء جملة SQL بالكامل",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/sql",
    category: "عام والأسئلة الشائعة",
    tags: []
  }, {
    id: "data-management/when-is-ttl-applied",
    title: "متى تُطبَّق قواعد TTL، وهل يمكننا التحكّم في ذلك؟",
    description: "تُطبَّق قواعد TTL في ClickHouse في وقت لاحق، ويمكنك التحكّم في وقت تنفيذها باستخدام الإعداد `merge_with_ttl_timeout`. تعرّف على كيفية فرض تطبيق قواعد TTL وإدارة الخيوط الخلفية المخصّصة لتنفيذها.",
    href: "/ar/resources/support-center/knowledge-base/data-management/when-is-ttl-applied",
    category: "إدارة البيانات",
    tags: ["مفاهيم البيانات الأساسية"]
  }, {
    id: "setup-installation/production",
    title: "أي إصدار من ClickHouse ينبغي استخدامه في بيئة الإنتاج؟",
    description: "تقدّم هذه الصفحة إرشادات حول إصدار ClickHouse الذي ينبغي استخدامه في بيئة الإنتاج",
    href: "/ar/resources/support-center/knowledge-base/setup-installation/production",
    category: "الإعداد والتثبيت",
    tags: []
  }, {
    id: "general-faqs/who-is-using-clickhouse",
    title: "من يستخدم ClickHouse؟",
    description: "توضّح هذه الصفحة من يستخدم ClickHouse",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/who-is-using-clickhouse",
    category: "عام والأسئلة الشائعة",
    tags: []
  }, {
    id: "data-management/dictionaries-consistent-state",
    title: "لماذا لا يمكنني رؤية بياناتي في قاموس في ClickHouse Cloud؟",
    description: "توجد مشكلة قد تؤدي إلى عدم ظهور البيانات في القواميس مباشرةً بعد إنشائها.",
    href: "/ar/resources/support-center/knowledge-base/data-management/dictionaries-consistent-state",
    category: "إدارة البيانات",
    tags: ["إدارة Cloud", "نمذجة البيانات"]
  }, {
    id: "general-faqs/why-recommend-clickhouse-keeper-over-zookeeper",
    title: "لماذا يُوصى باستخدام ClickHouse Keeper بدلًا من ZooKeeper؟",
    description: "يتفوّق ClickHouse Keeper على ZooKeeper بميزات مثل تقليل استخدام مساحة القرص، وتسريع التعافي، وخفض استهلاك الذاكرة، مما يوفّر أداءً أفضل لعناقيد ClickHouse.",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/why-recommend-clickhouse-keeper-over-zookeeper",
    category: "عام والأسئلة الشائعة",
    tags: ["مفاهيم البيانات الأساسية"]
  }, {
    id: "monitoring-debugging/why-default-logging-verbose",
    title: "لماذا يكون تسجيل ClickHouse مفصّلًا جدًا افتراضيًا؟",
    description: "تعرّف على سبب اختيار مطوّري ClickHouse تعيين مستوى تسجيل مفصّل افتراضيًا.",
    href: "/ar/resources/support-center/knowledge-base/monitoring-debugging/why-default-logging-verbose",
    category: "المراقبة وتصحيح الأخطاء",
    tags: ["الإعدادات"]
  }, {
    id: "performance-optimization/why-is-my-primary-key-not-used",
    title: "لماذا لا يُستخدَم المفتاح الأساسي؟ وكيف يمكنني التحقّق؟",
    description: "يتناول سببًا شائعًا لعدم استخدام المفتاح الأساسي في الترتيب، وكيفية التحقّق من ذلك",
    href: "/ar/resources/support-center/knowledge-base/performance-optimization/why-is-my-primary-key-not-used",
    category: "الأداء والتحسين",
    tags: ["الأداء والتحسينات"]
  }, {
    id: "general-faqs/mapreduce",
    title: "لماذا لا نستخدم شيئًا مثل MapReduce؟",
    description: "تشرح هذه الصفحة سبب تفضيل ClickHouse على MapReduce",
    href: "/ar/resources/support-center/knowledge-base/general-faqs/mapreduce",
    category: "عام والأسئلة الشائعة",
    tags: []
  }]
};

export const KBExplorer = ({index, featured = []}) => {
  const featuredIds = featured.map(f => f.id);
  const assetBase = typeof window !== "undefined" && window.location.pathname.startsWith("/docs") ? "/docs" : "";
  const withBase = p => p && p.startsWith("/") ? assetBase + p : p;
  const data = index || ({
    categories: [],
    tags: [],
    articles: []
  });
  const readStoredList = (key, fallback) => {
    if (typeof window === "undefined") return fallback;
    try {
      const raw = localStorage.getItem(key);
      if (!raw) return fallback;
      const parsed = JSON.parse(raw);
      return Array.isArray(parsed) ? parsed : fallback;
    } catch {
      return fallback;
    }
  };
  const [searchTerm, setSearchTerm] = useState(() => {
    if (typeof window !== "undefined") {
      return localStorage.getItem("kb-search") || "";
    }
    return "";
  });
  const [selectedCategories, setSelectedCategories] = useState(() => readStoredList("kb-categories", ["All"]));
  const [currentPage, setCurrentPage] = useState(1);
  const itemsPerPage = 6;
  const [categoriesDropdownOpen, setCategoriesDropdownOpen] = useState(true);
  const [showFilters, setShowFilters] = useState(() => {
    if (typeof window !== "undefined") {
      return localStorage.getItem("kb-show-filters") !== "false";
    }
    return true;
  });
  const [isDesktop, setIsDesktop] = useState(true);
  useEffect(() => {
    if (typeof window === "undefined" || !window.matchMedia) return;
    const mq = window.matchMedia("(min-width: 1024px)");
    const update = () => setIsDesktop(mq.matches);
    update();
    mq.addEventListener("change", update);
    return () => mq.removeEventListener("change", update);
  }, []);
  useEffect(() => {
    if (typeof window !== "undefined") localStorage.setItem("kb-search", searchTerm);
  }, [searchTerm]);
  useEffect(() => {
    if (typeof window !== "undefined") localStorage.setItem("kb-categories", JSON.stringify(selectedCategories));
  }, [selectedCategories]);
  useEffect(() => {
    if (typeof window !== "undefined") localStorage.setItem("kb-show-filters", String(showFilters));
  }, [showFilters]);
  useEffect(() => {
    setCurrentPage(1);
  }, [searchTerm, selectedCategories]);
  const makeToggle = setter => value => {
    setter(prev => {
      if (value === "All") return ["All"];
      const withoutAll = prev.filter(v => v !== "All");
      const result = withoutAll.includes(value) ? withoutAll.filter(v => v !== value) : [...withoutAll, value];
      return result.length === 0 ? ["All"] : result;
    });
  };
  const toggleCategory = makeToggle(setSelectedCategories);
  const categoryOptions = ["All", ...data.categories];
  const resetFilters = () => {
    setSearchTerm("");
    setSelectedCategories(["All"]);
  };
  const hasActiveFilters = searchTerm !== "" || !selectedCategories.includes("All");
  const filteredArticles = useMemo(() => {
    const term = searchTerm.toLowerCase();
    return data.articles.filter(article => {
      if (featuredIds.includes(article.id)) return false;
      const matchesSearch = term === "" || article.title.toLowerCase().includes(term) || (article.description || "").toLowerCase().includes(term) || (article.tags || []).some(t => t.toLowerCase().includes(term));
      const matchesCategory = selectedCategories.includes("All") || selectedCategories.includes(article.category);
      return matchesSearch && matchesCategory;
    });
  }, [data.articles, searchTerm, selectedCategories, featuredIds]);
  const handleCardClick = (e, href) => {
    if (e.defaultPrevented) return;
    if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0) return;
    e.preventDefault();
    window.location.assign(withBase(href));
  };
  const featuredArticles = featured.map(f => {
    const article = data.articles.find(a => a.id === f.id);
    return {
      id: f.id,
      image: f.image,
      href: article && article.href || `/ar/resources/support-center/knowledge-base/${f.id}`,
      title: article && article.title || ""
    };
  }).filter(f => f.image);
  const Expandable = ({label, options, selectedOptions, onToggle, isOpen, setIsOpen}) => {
    const activeCount = selectedOptions.filter(o => o !== "All").length;
    const displayLabel = activeCount > 0 ? `${label} (${activeCount})` : label;
    return <div style={{
      minWidth: "160px"
    }}>
        <button onClick={() => setIsOpen(!isOpen)} className="text-sm font-medium transition-all cursor-pointer flex items-center justify-between w-full text-black dark:text-white" style={{
      padding: "4px 0",
      gap: "8px"
    }}>
          <span className="font-semibold">{displayLabel}</span>
          <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" className={`transition-transform duration-200 ${isOpen ? "rotate-180" : "rotate-0"}`}>
            <path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
          </svg>
        </button>
        {isOpen && <div className="mt-1">
            {options.map(option => <label key={option} className="flex items-center gap-2 py-1.5 cursor-pointer transition-colors" onClick={e => {
      e.preventDefault();
      onToggle(option);
    }}>
                <span className="flex items-center justify-center w-4 h-4 rounded border flex-shrink-0" style={{
      borderColor: selectedOptions.includes(option) ? "#FAFF69" : "rgba(156, 163, 175, 0.6)",
      backgroundColor: selectedOptions.includes(option) ? "#FAFF69" : "transparent"
    }}>
                  {selectedOptions.includes(option) && <svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <path d="M2 5L4 7L8 3" stroke="black" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
                    </svg>}
                </span>
                <span className="text-sm text-black dark:text-white">{option}</span>
              </label>)}
          </div>}
      </div>;
  };
  return <>
      <div style={{
    maxWidth: "1312px",
    marginLeft: "max(0px, calc((100vw - 1312px) / 2 - 19rem))",
    marginRight: "auto",
    paddingLeft: "1.75rem",
    paddingRight: "1.75rem"
  }}>
        <div className="my-8">
          {}
          {featuredArticles.length > 0 && <div className="mb-12">
              <h2 className="text-2xl font-semibold text-gray-900 dark:text-zinc-50 mb-6">المقالات المميزة</h2>
              <div className="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6">
                {featuredArticles.map(article => <a key={article.id} href={article.href} onClick={e => handleCardClick(e, article.href)} className="group block rounded-xl overflow-hidden border border-gray-200 dark:border-white/10 transition-all hover:border-black dark:hover:border-[#FAFF69] hover:shadow-md">
                    {}
                    <div role="img" aria-label={article.title} className="w-full aspect-[3/1] lg:aspect-[16/9] bg-cover bg-center transition-transform duration-200 group-hover:scale-[1.02]" style={{
    backgroundImage: `url(${withBase(article.image)})`
  }} />
                  </a>)}
              </div>
            </div>}

          {}
          <div className="flex flex-col lg:flex-row gap-8">
            {}
            <div className={isDesktop ? "flex-shrink-0 transition-[width] duration-300 ease-in-out" : "w-full"} style={isDesktop ? {
    width: showFilters ? "16rem" : "0px"
  } : undefined}>
              <div className="lg:sticky relative" style={isDesktop ? {
    top: "8.5rem"
  } : undefined}>
                {}
                <div aria-hidden="true" className="absolute bg-gray-200 dark:bg-white/10" style={isDesktop ? {
    left: "100%",
    top: 0,
    bottom: 0,
    width: "1px"
  } : {
    top: "100%",
    left: 0,
    right: 0,
    height: "1px"
  }} />
                {}
                <button onClick={() => setShowFilters(prev => !prev)} aria-label={showFilters ? "إخفاء عوامل التصفية" : "إظهار عوامل التصفية"} title={showFilters ? "إخفاء عوامل التصفية" : "إظهار عوامل التصفية"} className="flex items-center justify-center absolute z-20 cursor-pointer rounded-full border transition-colors border-gray-300 dark:border-white/20 hover:border-black dark:hover:border-[#FAFF69] bg-white dark:bg-[#1B1B18] text-gray-500 dark:text-gray-400 hover:text-black dark:hover:text-[#FAFF69] shadow-sm" style={isDesktop ? {
    left: "100%",
    top: "50%",
    width: "28px",
    height: "28px",
    transform: "translate(-50%, -50%)"
  } : {
    top: "100%",
    left: "50%",
    width: "28px",
    height: "28px",
    transform: "translate(-50%, -50%)"
  }}>
                  <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg" className="transition-transform duration-300" style={{
    transform: `rotate(${isDesktop ? showFilters ? 0 : 180 : showFilters ? 90 : -90}deg)`
  }}>
                    <path d="M7.5 2.5L4 6L7.5 9.5" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
                  </svg>
                </button>

                {}
                <div className="overflow-hidden transition-all duration-300" style={isDesktop ? {
    width: "16rem",
    paddingRight: "1.5rem",
    opacity: showFilters ? 1 : 0,
    pointerEvents: showFilters ? "auto" : "none"
  } : {
    width: "100%",
    maxHeight: showFilters ? "1500px" : "0px",
    paddingBottom: showFilters ? "1.5rem" : "0px",
    opacity: showFilters ? 1 : 0,
    pointerEvents: showFilters ? "auto" : "none"
  }}>
                  <div className="space-y-6">
                    {}
                    <div>
                      <label className="block text-sm font-semibold text-gray-900 dark:text-zinc-50 mb-3">بحث</label>
                      <div className="relative w-full">
                        <svg className="absolute pointer-events-none z-10" style={{
    left: "12px",
    top: "50%",
    transform: "translateY(-50%)",
    width: "16px",
    height: "16px",
    color: "#666"
  }} fill="none" stroke="currentColor" viewBox="0 0 24 24">
                          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
                        </svg>
                        <input type="text" placeholder="ابحث في المقالات..." value={searchTerm} onChange={e => setSearchTerm(e.target.value)} className="w-full text-sm border rounded-xl focus:outline-none bg-white dark:bg-[#1B1B18] text-black dark:text-white border-gray-300 dark:border-gray-600 focus:border-black dark:focus:border-[#FAFF69]" style={{
    height: "42px",
    padding: "0.5rem 0.75rem 0.5rem 2.75rem",
    lineHeight: "1.4",
    boxSizing: "border-box"
  }} />
                      </div>
                    </div>

                    {}
                    <div>
                      <div className="space-y-3">
                        <Expandable label="الفئة" options={categoryOptions} selectedOptions={selectedCategories} onToggle={toggleCategory} isOpen={categoriesDropdownOpen} setIsOpen={setCategoriesDropdownOpen} />
                      </div>
                    </div>

                    {}
                    {hasActiveFilters && <button onClick={resetFilters} className="w-full text-sm font-medium px-4 py-2 rounded-lg transition-all cursor-pointer border border-gray-300 dark:border-white/20 hover:border-black dark:hover:border-[#FAFF69] bg-white dark:bg-[#1B1B18] text-black dark:text-white">
                        إعادة ضبط عوامل التصفية
                      </button>}
                  </div>
                </div>
              </div>
            </div>

            {}
            <div className="flex-1 min-w-0">
              <h2 className="text-2xl font-semibold text-gray-900 dark:text-zinc-50 mb-6">استعراض المقالات</h2>

              {filteredArticles.length > 0 ? <>
                  <div className="flex flex-col gap-2">
                    {filteredArticles.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage).map(article => <a key={article.id} href={article.href} onClick={e => handleCardClick(e, article.href)} className="group block rounded-lg border px-4 py-3 transition-all border-gray-200 dark:border-white/10 hover:border-black dark:hover:border-[#FAFF69] bg-white dark:bg-[#1B1B18]">
                        <div className="text-sm font-semibold text-gray-900 dark:text-zinc-50">{article.title}</div>
                        <div className="text-sm text-gray-600 dark:text-gray-400 mt-0.5 line-clamp-2">{article.description}</div>
                      </a>)}
                  </div>
                  {}
                  {(() => {
    const totalPages = Math.ceil(filteredArticles.length / itemsPerPage);
    if (totalPages <= 1) return null;
    const hasPrev = currentPage > 1;
    const hasNext = currentPage < totalPages;
    return <div className="flex items-center justify-center gap-3 mt-8">
                        <button onClick={() => hasPrev && setCurrentPage(prev => prev - 1)} disabled={!hasPrev} className={`p-2 rounded-lg border transition-all ${hasPrev ? "border-gray-300 dark:border-white/20 bg-white dark:bg-[#1B1B18] text-black dark:text-white hover:border-[#FAFF69] cursor-pointer" : "border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-[#1B1B18]/50 text-gray-300 dark:text-white/20 cursor-not-allowed"}`} aria-label="الصفحة السابقة">
                          <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                            <path d="M10 12L6 8L10 4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
                          </svg>
                        </button>
                        <span className="text-sm text-gray-600 dark:text-gray-400">
                          الصفحة {currentPage} / {totalPages}
                        </span>
                        <button onClick={() => hasNext && setCurrentPage(prev => prev + 1)} disabled={!hasNext} className={`p-2 rounded-lg border transition-all ${hasNext ? "border-gray-300 dark:border-white/20 bg-white dark:bg-[#1B1B18] text-black dark:text-white hover:border-[#FAFF69] cursor-pointer" : "border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-[#1B1B18]/50 text-gray-300 dark:text-white/20 cursor-not-allowed"}`} aria-label="الصفحة التالية">
                          <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                            <path d="M6 4L10 8L6 12" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
                          </svg>
                        </button>
                      </div>;
  })()}
                </> : <div className="text-center py-12 flex flex-col items-center">
                  <p className="text-gray-600 dark:text-gray-400 text-lg block">لا توجد مقالات تطابق معايير البحث.</p>
                  <p className="text-gray-500 dark:text-gray-500 text-sm mt-2 block">جرّب تعديل عوامل التصفية أو مصطلح البحث.</p>
                </div>}
            </div>
          </div>
        </div>
      </div>
    </>;
};

export const featuredArticles = [{
  id: 'cloud-services/aws-privatelink-setup-for-clickpipes'
}, {
  id: 'tables-schema/schema-migration-tools'
}, {
  id: 'data-management/read-consistency'
}];

<div className="relative overflow-hidden">
  <div className="absolute top-0 left-0 right-0 opacity-80">
    <img src="https://mintcdn.com/private-7c7dfe99-detect-table-modification/pgldaX9p0_FSNkx0/images/background-light.svg?fit=max&auto=format&n=pgldaX9p0_FSNkx0&q=85&s=88e4361caf950c0f1ee7a2c42f1c477f" className="block dark:hidden pointer-events-none w-full h-auto" alt="صورة خلفية للزينة." width="1152" height="388" data-path="images/background-light.svg" />

    <img src="https://mintcdn.com/private-7c7dfe99-detect-table-modification/pgldaX9p0_FSNkx0/images/background-dark.svg?fit=max&auto=format&n=pgldaX9p0_FSNkx0&q=85&s=69e3c5c719ccf03c7b853356de2726c4" className="hidden dark:block pointer-events-none w-full h-auto" alt="صورة خلفية للزينة." width="1152" height="388" data-path="images/background-dark.svg" />
  </div>

  <KBExplorer index={kbIndex} featured={featuredArticles} />
</div>
