"""
مكون الهيدر لنظام واهبي لتحليل العقود والمناقصات
Header component for WAHBI Tender Analysis System
"""
import streamlit as st
import os
import base64
def render_header(subtitle=None):
"""
عرض شريط العنوان في التطبيق مع الشعار
"""
# الحصول على مسار ملف الشعار
logo_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "assets", "logo.svg")
# إذا كان ملف الشعار موجود، قم بعرضه
if os.path.exists(logo_path):
with open(logo_path, "r", encoding="utf-8") as f:
svg_content = f.read()
# استخدام HTML مباشرة لعرض الشعار SVG بشكل صحيح
st.markdown(f"""
{svg_content}
نظام واهبي للذكاء الاصطناعي
{subtitle if subtitle else "لتحليل العقود والمناقصات"}
""", unsafe_allow_html=True)
else:
# إذا لم يكن ملف الشعار موجود، عرض نسخة نصية بدون الشعار
st.markdown(f"""
نظام واهبي للذكاء الاصطناعي
{subtitle if subtitle else "لتحليل العقود والمناقصات"}
""", unsafe_allow_html=True)
print(f"تحذير: لم يتم العثور على ملف الشعار في المسار: {logo_path}")
def render_app_header():
"""
عرض هيدر التطبيق الرئيسي مع الشعار والعنوان
"""
render_header("النظام المتكامل لتحليل العقود والمناقصات باستخدام الذكاء الاصطناعي")
def render_section_header(title, description=None, icon=None):
"""
عرض عنوان قسم مع وصف اختياري وأيقونة
"""
icon_html = f'' if icon else ''
st.markdown(f"""
{icon_html}{title}
{f'
{description}
' if description else ''}
""", unsafe_allow_html=True)
def render_page_title(title, description=None, icon=None):
"""
عرض عنوان صفحة مع وصف اختياري وأيقونة
"""
st.markdown(f"""
{f'' if icon else ''}{title}
{f'{description}
' if description else ''}
""", unsafe_allow_html=True)
def render_breadcrumbs(items):
"""
عرض مسار التنقل في الصفحة
المعلمات:
items (list): قائمة بالعناصر، كل عنصر هو قاموس يحتوي على مفتاحين: "label" و"url" (اختياري)
"""
breadcrumbs_html = ""
for i, item in enumerate(items):
if i > 0:
breadcrumbs_html += f''
if "url" in item and item["url"]:
breadcrumbs_html += f'{item["label"]}'
else:
breadcrumbs_html += f'{item["label"]}'
st.markdown(f"""
{breadcrumbs_html}
""", unsafe_allow_html=True)
def render_notice(message, type="info"):
"""
عرض إشعار للمستخدم
المعلمات:
message (str): نص الإشعار
type (str): نوع الإشعار "info", "success", "warning", "error"
"""
icon_map = {
"info": "info-circle",
"success": "check-circle",
"warning": "exclamation-triangle",
"error": "times-circle"
}
color_map = {
"info": "#1E88E5",
"success": "#4CAF50",
"warning": "#FFC107",
"error": "#F44336"
}
bg_color_map = {
"info": "#E3F2FD",
"success": "#E8F5E9",
"warning": "#FFF8E1",
"error": "#FFEBEE"
}
st.markdown(f"""
""", unsafe_allow_html=True)