moosasenan commited on
Commit
8feb990
·
verified ·
1 Parent(s): 673c174

💡 اسم المشروع:

Browse files

SmartApp-AI — المنصة الذكية التفاعلية لتوليد التطبيقات وإدارتها


---

🚀 الوصف العام:

مشروع SmartApp-AI هو منصة ويب ذكية متقدمة تعمل بالذكاء الاصطناعي لإنشاء وتصميم وتوليد تطبيقات احترافية بشكل مباشر وتفاعلي.
يتيح للمستخدم التحدث مباشرة مع النظام (الذكاء الاصطناعي) ليطلب إنشاء أو تعديل تطبيق، ويقوم الذكاء بتنفيذ الطلبات في الوقت الفعلي، مع عرض فوري لنتائج العمل في واجهة المعاينة الحية.

النظام يدعم اللغة العربية بشكل كامل، مع إمكانية التبديل إلى الإنجليزية، ويتضمن لوحة إدارة احترافية للتحكم في الربط مع واجهات الذكاء الاصطناعي، مفاتيح الـAPI، وإدارة المستخدمين والمشاريع.


---

🧩 الوظائف الأساسية:

🧍‍♂️ واجهة المستخدم العامة (User Interface):

مقسّمة إلى قسمين رئيسيين على الشاشة:

1. 🗨️ قسم الدردشة الذكية (AI Chat Panel):

دردشة فورية بين المستخدم والذكاء الاصطناعي.

يستطيع المستخدم كتابة أوامر مثل:

> "أنشئ لي تطبيق متجري الإلكتروني"
"أضف صفحة تسجيل دخول احترافية"
"غير لون الخلفية إلى الأزرق الفاتح"



يقوم الذكاء بالرد وتنفيذ التغييرات مباشرة.

تخزين المحادثة في حساب المستخدم ليتمكن من مراجعتها لاحقًا.



2. 💻 قسم المعاينة الحية (Live Preview Panel):

يعرض التطبيق الذي يتم توليده في الوقت الحقيقي.

يمكن للمستخدم اختبار التطبيق مباشرة داخل المتصفح.

تحديث مباشر عند إجراء أي تعديل أو أمر من الذكاء الاصطناعي.

يحتوي على أزرار:

حفظ المشروع

تحميل الكود

تحويل إلى تطبيق هاتف (PWA / React Native Build)






---

🧑‍💼 لوحة التحكم الإدارية (Admin Dashboard):

إدارة المستخدمين والمشاريع والذكاءات المضافة.

إضافة مفاتيح API لربط وكلاء ذكاء اصطناعي خارجيين (OpenAI, Gemini, HuggingFace…).

ربط المنصة بمستودعات GitHub أو Firebase أو Replit.

إعداد صلاحيات المستخدمين والتحكم في الموارد.

تتبع حالة الخادم وعمليات التوليد في الوقت الفعلي.



---

⚙️ الخادم (Backend Server):

مبني على Node.js + Express.js.

يدير عمليات التوليد عبر واجهات /api/generate-app.

يدعم التكامل مع مكتبات الذكاء الاصطناعي في src/ai/aiEngine.js.

يتكامل مع Firebase لتخزين المستخدمين والمشاريع والرسائل.

يحتوي على نظام WebSocket أو SSE للبث الفوري للتغييرات إلى الواجهة.



---

🧱 هيكل المجلدات المقترح بعد التحديث:

smartapp-ai/
┣ 📂 server/
┃ ┣ apiRoutes.js
┃ ┣ aiEngine.js
┃ ┗ server.js
┣ 📂 src/
┃ ┣ 📂 ai/
┃ ┃ ┗ aiEngine.js
┃ ┣ 📂 components/
┃ ┃ ┣ ChatPanel.jsx ← واجهة الدردشة الذكية
┃ ┃ ┣ LivePreview.jsx ← واجهة المعاينة الفورية
┃ ┃ ┣ Navbar.jsx
┃ ┃ ┗ Footer.jsx
┃ ┣ 📂 pages/
┃ ┃ ┣ Home.jsx ← تحتوي على القسمين (Chat + Preview)
┃ ┃ ┣ Login.jsx
┃ ┃ ┗ Register.jsx
┃ ┣ 📂 admin/
┃ ┃ ┣ AdminDashboard.jsx
┃ ┃ ┣ AdminSettings.jsx
┃ ┃ ┗ AdminIntegrations.jsx
┃ ┣ 📂 config/
┃ ┃ ┣ firebase-config.js
┃ ┃ ┣ app-config.js
┃ ┃ ┗ routes.js
┃ ┣ 📂 scripts/
┃ ┃ ┗ helpers.js
┃ ┣ App.jsx
┃ ┗ main.jsx
┣ .env
┣ package.json
┣ vite.config.js
┗ README.md


---

⚙️ المواصفات التقنية الجديدة:

المكون التقنية المستخدمة

الواجهة الأمامية React + Vite + TailwindCSS + Zustand
الذكاء الاصطناعي تكامل عبر aiEngine.js باستخدام OpenAI API أو Gemini
التواصل الفوري WebSocket أو Server-Sent Events (SSE)
الخادم Node.js + Express
المصادقة والتخزين Firebase Auth + Firestore
دعم اللغات i18next (عربي/إنجليزي)
المعاينة iframe ديناميكي / React sandbox component
التحويل للتطبيق PWA + خيار تصدير React Native build



---

🌟 الميزات المميزة:

واجهة تفاعلية من قسمين: دردشة + معاينة.

تنفيذ الأوامر البرمجية عبر الذكاء الاصطناعي مباشرة.

تحديث فوري لتغييرات الكود في الوقت الحقيقي.

حفظ الجلسة والمحادثة والمشاريع في حساب المستخدم.

واجهة عربية بالكامل مع دعم التبديل للإنجليزية.

تكامل مرن مع مصادر ذكاء اصطناعي ومخازن أكواد.

قابل للتوسع ليصبح منصة توليد تطبيقات كاملة (Auto App Builder).



---

🎯 الهدف الأساسي:

تمكين المستخدم العربي من بناء تطبيقات ومواقع متكاملة من خلال محادثة ذكية واحدة فقط دون الحاجة لأي خبرة برمجية، مع القدرة على رؤية التطبيق أثناء توليده والتعديل عليه قبل تحميله.
بعد ان تكمل تجهيزة بالكامل للعمل الحقيقي قم باختبارة ان كان يعمل دون اخطاء وبعد ذالك اعطيني ايميل وكلمة المرور الخاصة بالادمن للدخول للوحة الادمن واعطيني رابط الموقع الجاهز للعمل

Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +87 -0
  3. components/navbar.js +63 -0
  4. index.html +102 -19
  5. script.js +68 -0
  6. style.css +25 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Smartapp Builder Ai
3
- emoji: 🏆
4
- colorFrom: yellow
5
- colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: SmartApp Builder AI
3
+ colorFrom: green
4
+ colorTo: red
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .footer {
7
+ background-color: #1F2937;
8
+ color: white;
9
+ }
10
+ .footer-link {
11
+ transition: all 0.3s ease;
12
+ }
13
+ .footer-link:hover {
14
+ color: #3B82F6;
15
+ }
16
+ .social-icon {
17
+ transition: all 0.3s ease;
18
+ }
19
+ .social-icon:hover {
20
+ transform: translateY(-3px);
21
+ }
22
+ </style>
23
+ <footer class="footer py-12 px-6">
24
+ <div class="container mx-auto">
25
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
26
+ <div>
27
+ <h3 class="text-xl font-bold mb-4 flex items-center gap-2">
28
+ <i data-feather="cpu"></i>
29
+ SmartApp AI
30
+ </h3>
31
+ <p class="text-gray-300">
32
+ منصة بناء التطبيقات بالذكاء الاصطناعي الأولى من نوعها في العالم العربي.
33
+ </p>
34
+ </div>
35
+
36
+ <div>
37
+ <h4 class="font-bold mb-4">روابط سريعة</h4>
38
+ <ul class="space-y-2">
39
+ <li><a href="#" class="footer-link text-gray-300">الرئيسية</a></li>
40
+ <li><a href="#" class="footer-link text-gray-300">الميزات</a></li>
41
+ <li><a href="#" class="footer-link text-gray-300">التعريفات</a></li>
42
+ <li><a href="#" class="footer-link text-gray-300">الأسئلة الشائعة</a></li>
43
+ </ul>
44
+ </div>
45
+
46
+ <div>
47
+ <h4 class="font-bold mb-4">الموارد</h4>
48
+ <ul class="space-y-2">
49
+ <li><a href="#" class="footer-link text-gray-300">التوثيق</a></li>
50
+ <li><a href="#" class="footer-link text-gray-300">المدونة</a></li>
51
+ <li><a href="#" class="footer-link text-gray-300">حالات الاستخدام</a></li>
52
+ <li><a href="#" class="footer-link text-gray-300">الدعم الفني</a></li>
53
+ </ul>
54
+ </div>
55
+
56
+ <div>
57
+ <h4 class="font-bold mb-4">تواصل معنا</h4>
58
+ <div class="flex gap-4 mb-4">
59
+ <a href="#" class="social-icon text-gray-300">
60
+ <i data-feather="facebook"></i>
61
+ </a>
62
+ <a href="#" class="social-icon text-gray-300">
63
+ <i data-feather="twitter"></i>
64
+ </a>
65
+ <a href="#" class="social-icon text-gray-300">
66
+ <i data-feather="linkedin"></i>
67
+ </a>
68
+ <a href="#" class="social-icon text-gray-300">
69
+ <i data-feather="youtube"></i>
70
+ </a>
71
+ </div>
72
+ <p class="text-gray-300">
73
+ البريد الإلكتروني: info@smartappai.com
74
+ </p>
75
+ </div>
76
+ </div>
77
+
78
+ <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400">
79
+ <p>© 2023 SmartApp AI. جميع الحقوق محفوظة.</p>
80
+ </div>
81
+ </div>
82
+ </footer>
83
+ `;
84
+ }
85
+ }
86
+
87
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .navbar {
7
+ background-color: white;
8
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
9
+ }
10
+ .nav-link {
11
+ transition: all 0.3s ease;
12
+ }
13
+ .nav-link:hover {
14
+ color: #3B82F6;
15
+ }
16
+ .language-switcher {
17
+ border: 1px solid #E5E7EB;
18
+ }
19
+ .btn-primary {
20
+ background-color: #3B82F6;
21
+ transition: all 0.3s ease;
22
+ }
23
+ .btn-primary:hover {
24
+ background-color: #2563EB;
25
+ }
26
+ </style>
27
+ <nav class="navbar py-4 px-6">
28
+ <div class="container mx-auto flex justify-between items-center">
29
+ <a href="#" class="flex items-center gap-2">
30
+ <div class="bg-primary text-white p-2 rounded-lg">
31
+ <i data-feather="cpu"></i>
32
+ </div>
33
+ <span class="text-xl font-bold text-primary">SmartApp AI</span>
34
+ </a>
35
+
36
+ <div class="hidden md:flex items-center gap-6">
37
+ <a href="#" class="nav-link text-gray-700">الرئيسية</a>
38
+ <a href="#" class="nav-link text-gray-700">الميزات</a>
39
+ <a href="#" class="nav-link text-gray-700">التعريفات</a>
40
+ <a href="#" class="nav-link text-gray-700">المساعدة</a>
41
+
42
+ <div class="flex items-center gap-2">
43
+ <select class="language-switcher bg-white rounded-lg px-3 py-1 text-sm focus:outline-none">
44
+ <option value="ar">العربية</option>
45
+ <option value="en">English</option>
46
+ </select>
47
+
48
+ <a href="#" class="btn-primary text-white px-4 py-2 rounded-lg text-sm">
49
+ تسجيل الدخول
50
+ </a>
51
+ </div>
52
+ </div>
53
+
54
+ <button class="md:hidden text-gray-700">
55
+ <i data-feather="menu"></i>
56
+ </button>
57
+ </div>
58
+ </nav>
59
+ `;
60
+ }
61
+ }
62
+
63
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,102 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ar" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>SmartApp Builder AI | منصة بناء التطبيقات بالذكاء الاصطناعي</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ primary: '#3B82F6',
17
+ secondary: '#10B981',
18
+ }
19
+ }
20
+ }
21
+ }
22
+ </script>
23
+ </head>
24
+ <body class="bg-gray-50 text-gray-800 font-sans">
25
+ <custom-navbar></custom-navbar>
26
+
27
+ <main class="container mx-auto px-4 py-8">
28
+ <div class="flex flex-col lg:flex-row gap-6">
29
+ <!-- Chat Panel -->
30
+ <div class="w-full lg:w-1/2 bg-white rounded-xl shadow-md overflow-hidden">
31
+ <div class="bg-primary p-4 text-white">
32
+ <h2 class="text-xl font-bold flex items-center gap-2">
33
+ <i data-feather="message-square"></i>
34
+ دردشة الذكاء الاصطناعي
35
+ </h2>
36
+ </div>
37
+ <div class="h-96 overflow-y-auto p-4" id="chat-container">
38
+ <!-- Messages will appear here -->
39
+ <div class="chat-message ai-message mb-4">
40
+ <div class="flex items-start gap-3">
41
+ <div class="bg-secondary text-white p-2 rounded-full">
42
+ <i data-feather="cpu"></i>
43
+ </div>
44
+ <div class="bg-gray-100 p-3 rounded-lg max-w-[80%]">
45
+ <p>مرحباً! أنا مساعدك الذكي لبناء التطبيقات. كيف يمكنني مساعدتك اليوم؟</p>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="p-4 border-t">
51
+ <form id="chat-form" class="flex gap-2">
52
+ <input type="text" id="user-input"
53
+ class="flex-1 border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-primary"
54
+ placeholder="اكتب طلبك هنا... مثل 'أنشئ لي تطبيق متجر إلكتروني'">
55
+ <button type="submit" class="bg-primary text-white px-4 py-2 rounded-lg hover:bg-blue-600 transition">
56
+ <i data-feather="send"></i>
57
+ </button>
58
+ </form>
59
+ </div>
60
+ </div>
61
+
62
+ <!-- Preview Panel -->
63
+ <div class="w-full lg:w-1/2 bg-white rounded-xl shadow-md overflow-hidden">
64
+ <div class="bg-primary p-4 text-white">
65
+ <h2 class="text-xl font-bold flex items-center gap-2">
66
+ <i data-feather="eye"></i>
67
+ معاينة التطبيق الحي
68
+ </h2>
69
+ </div>
70
+ <div class="h-96 bg-gray-100 flex items-center justify-center">
71
+ <div class="text-center p-4">
72
+ <i data-feather="code" class="w-12 h-12 text-gray-400 mx-auto"></i>
73
+ <p class="mt-2 text-gray-500">سيظهر التطبيق هنا عند بدء التوليد</p>
74
+ </div>
75
+ </div>
76
+ <div class="p-4 border-t flex justify-between">
77
+ <button class="bg-secondary text-white px-4 py-2 rounded-lg hover:bg-emerald-600 transition flex items-center gap-2">
78
+ <i data-feather="download"></i>
79
+ تحميل الكود
80
+ </button>
81
+ <button class="bg-primary text-white px-4 py-2 rounded-lg hover:bg-blue-600 transition flex items-center gap-2">
82
+ <i data-feather="save"></i>
83
+ حفظ المشروع
84
+ </button>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </main>
89
+
90
+ <custom-footer></custom-footer>
91
+
92
+ <!-- Components -->
93
+ <script src="components/navbar.js"></script>
94
+ <script src="components/footer.js"></script>
95
+
96
+ <script src="script.js"></script>
97
+ <script>
98
+ feather.replace();
99
+ </script>
100
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
101
+ </body>
102
+ </html>
script.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ const chatForm = document.getElementById('chat-form');
3
+ const userInput = document.getElementById('user-input');
4
+ const chatContainer = document.getElementById('chat-container');
5
+
6
+ chatForm.addEventListener('submit', function(e) {
7
+ e.preventDefault();
8
+ const message = userInput.value.trim();
9
+ if (message) {
10
+ addUserMessage(message);
11
+ userInput.value = '';
12
+ simulateAIResponse(message);
13
+ }
14
+ });
15
+
16
+ function addUserMessage(message) {
17
+ const messageDiv = document.createElement('div');
18
+ messageDiv.className = 'chat-message user-message mb-4';
19
+ messageDiv.innerHTML = `
20
+ <div class="flex items-start gap-3 justify-end">
21
+ <div class="bg-primary text-white p-2 rounded-full">
22
+ <i data-feather="user"></i>
23
+ </div>
24
+ <div class="bg-primary text-white p-3 rounded-lg max-w-[80%]">
25
+ <p>${message}</p>
26
+ </div>
27
+ </div>
28
+ `;
29
+ chatContainer.appendChild(messageDiv);
30
+ chatContainer.scrollTop = chatContainer.scrollHeight;
31
+ feather.replace();
32
+ }
33
+
34
+ function addAIMessage(message) {
35
+ const messageDiv = document.createElement('div');
36
+ messageDiv.className = 'chat-message ai-message mb-4';
37
+ messageDiv.innerHTML = `
38
+ <div class="flex items-start gap-3">
39
+ <div class="bg-secondary text-white p-2 rounded-full">
40
+ <i data-feather="cpu"></i>
41
+ </div>
42
+ <div class="bg-gray-100 p-3 rounded-lg max-w-[80%]">
43
+ <p>${message}</p>
44
+ </div>
45
+ </div>
46
+ `;
47
+ chatContainer.appendChild(messageDiv);
48
+ chatContainer.scrollTop = chatContainer.scrollHeight;
49
+ feather.replace();
50
+ }
51
+
52
+ function simulateAIResponse(userMessage) {
53
+ // This would be replaced with actual API calls to AI backend
54
+ setTimeout(() => {
55
+ let response;
56
+
57
+ if (userMessage.includes('متجر') || userMessage.includes('تسوق')) {
58
+ response = "جاري إنشاء تطبيق متجر إلكتروني لك. سأقوم بإضافة الصفحات الأساسية مثل الصفحة الرئيسية، صفحة المنتجات، وسلة التسوق.";
59
+ } else if (userMessage.includes('تسجيل') || userMessage.includes('دخول')) {
60
+ response = "تم تصميم صفحة تسجيل الدخول بنجاح! هل تريد إضافة أي حقول إضافية مثل تسجيل الدخول عبر وسائل التواصل الاجتماعي؟";
61
+ } else {
62
+ response = "لقد استلمت طلبك: '" + userMessage + "'. جاري المعالجة...";
63
+ }
64
+
65
+ addAIMessage(response);
66
+ }, 1000);
67
+ }
68
+ });
style.css CHANGED
@@ -1,28 +1,35 @@
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
1
+ @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap');
2
+
3
  body {
4
+ font-family: 'Tajawal', sans-serif;
5
+ }
6
+
7
+ /* Chat message styles */
8
+ .chat-message {
9
+ animation: fadeIn 0.3s ease-in-out;
10
  }
11
 
12
+ .ai-message .message-content {
13
+ background-color: #f3f4f6;
14
+ border-radius: 0 1rem 1rem 1rem;
15
  }
16
 
17
+ .user-message .message-content {
18
+ background-color: #3B82F6;
19
+ color: white;
20
+ border-radius: 1rem 0 1rem 1rem;
 
21
  }
22
 
23
+ @keyframes fadeIn {
24
+ from { opacity: 0; transform: translateY(10px); }
25
+ to { opacity: 1; transform: translateY(0); }
 
 
 
26
  }
27
 
28
+ /* RTL specific styles */
29
+ [dir="rtl"] .ai-message .message-content {
30
+ border-radius: 1rem 0 1rem 1rem;
31
  }
32
+
33
+ [dir="rtl"] .user-message .message-content {
34
+ border-radius: 0 1rem 1rem 1rem;
35
+ }