يُعد اللباس الحميري جزءًا لا يتجزأ من الهوية الثقافية لليمن، ولهذا يحظى باهتمام كبير سواء في اليمن أو على الصعيد العالمي...
اللباس اليمني الحميري: تراث وتاريخ
اللباس اليمني الحميري: تراث وتاريخ اليمن، بموقعها الجغرافي وتاريخها العريق، تتمتع بثقافة غنية ومتنوعة تنعكس في عاداتها وتقاليدها، بما في ذلك اللباس التقليدي. من بين أبرز هذه الألبسة هو اللباس الحميري، الذي يعود إلى مملكة حمير، إحدى أقدم الممالك اليمنية التي ازدهرت بين القرنين الأول والرابع الميلاديين. يُعد اللباس الحميري جزءًا لا يتجزأ من الهوية الثقافية لليمن، ولهذا يحظى باهتمام كبير سواء في اليمن أو على الصعيد العالمي. اللباس الحميري يُنسب إلى سكان مملكة حمير، التي كانت إحدى الممالك القديمة في اليمن وازدهرت بين القرنين الأول والرابع الميلاديين. ولكن من الصعب تحديد شخص بعينه أو مجموعة محددة من الأشخاص الذين يمكن اعتبارهم "أول" من ارتدى هذا اللباس، نظرًا لأن تطور الأزياء التقليدية يكون عادة نتيجة تراكم طويل من التقاليد الثقافية والتطورات الاجتماعية عبر الزمن. مملكة حمير نفسها تأسست على أسس ثقافية وحضارية عميقة، مما يعني أن اللباس الحميري تطور تدريجيًا كجزء من الثقافة الحميرية الأوسع. لذلك، يمكن القول بأن اللباس الحميري هو نتاج تطور ثقافي طويل بدأ مع الأجيال المبكرة من سكان حمير…
عن المؤلف
مرحبًا، أنا مدوّن تقني شغوف بصناعة المحتوى الرقمي، أشارككم شروحات ومراجعات في مجالات البرمجة والتكنولوجيا.
إرسال تعليق
// script.js
document.addEventListener('DOMContentLoaded', function() {
// عناصر DOM
const chatMessages = document.getElementById('chat-messages');
const messageInput = document.getElementById('message-input');
const sendBtn = document.getElementById('send-btn');
const clearChatBtn = document.getElementById('clear-chat');
const settingsBtn = document.getElementById('settings-btn');
const settingsModal = document.getElementById('settings-modal');
const saveSettingsBtn = document.getElementById('save-settings');
const cancelSettingsBtn = document.getElementById('cancel-settings');
const formattingButtons = document.querySelectorAll('.text-formatting button');
const chatStatus = document.getElementById('chat-status');
// إعدادات الروبوت
let botSettings = {
model: 'gpt-3.5',
temperature: 0.7,
saveChats: true
};
// تحميل الإعدادات والمحادثات المحفوظة
function loadSettings() {
const savedSettings = localStorage.getItem('chatbotSettings');
if (savedSettings) {
botSettings = JSON.parse(savedSettings);
document.getElementById('api-select').value = botSettings.model;
document.getElementById('temperature').value = botSettings.temperature;
document.getElementById('temp-value').textContent = botSettings.temperature;
document.getElementById('save-chats').checked = botSettings.saveChats;
}
if (botSettings.saveChats) {
const savedChat = localStorage.getItem('chatHistory');
if (savedChat) {
chatMessages.innerHTML = savedChat;
scrollToBottom();
}
}
}
// حفظ الإعدادات
function saveSettings() {
botSettings.model = document.getElementById('api-select').value;
botSettings.temperature = parseFloat(document.getElementById('temperature').value);
botSettings.saveChats = document.getElementById('save-chats').checked;
localStorage.setItem('chatbotSettings', JSON.stringify(botSettings));
settingsModal.style.display = 'none';
}
// إضافة رسالة إلى الدردشة
function addMessage(content, isUser) {
const messageDiv = document.createElement('div');
messageDiv.classList.add('message', isUser ? 'user-message' : 'bot-message');
messageDiv.innerHTML = content;
chatMessages.appendChild(messageDiv);
if (botSettings.saveChats) {
localStorage.setItem('chatHistory', chatMessages.innerHTML);
}
scrollToBottom();
}
// التمرير إلى الأسفل
function scrollToBottom() {
chatMessages.scrollTop = chatMessages.scrollHeight;
}
// معالجة إرسال الرسالة
async function sendMessage() {
const message = messageInput.value.trim();
if (!message) return;
// إضافة رسالة المستخدم
addMessage(message, true);
messageInput.value = '';
// عرض حالة "يكتب..."
chatStatus.textContent = 'الروبوت يكتب...';
try {
// استدعاء API الذكاء الاصطناعي
const response = await fetchAIResponse(message, botSettings);
// إضافة رد الروبوت
addMessage(response, false);
chatStatus.textContent = 'جاهز للرد...';
} catch (error) {
console.error('Error:', error);
addMessage('عذرًا، حدث خطأ أثناء معالجة طلبك. يرجى المحاولة مرة أخرى.', false);
chatStatus.textContent = 'حدث خطأ';
setTimeout(() => {
chatStatus.textContent = 'جاهز للرد...';
}, 3000);
}
}
// تكبير حقل الإدخال تلقائيًا
messageInput.addEventListener('input', function() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
// إرسال الرسالة عند الضغط على Enter
messageInput.addEventListener('keydown', function(e) {
if (e.key === 'Enter' !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
// أحداث الأزرار
sendBtn.addEventListener('click', sendMessage);
clearChatBtn.addEventListener('click', function() {
chatMessages.innerHTML = '';
if (botSettings.saveChats) {
localStorage.removeItem('chatHistory');
}
});
settingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'flex';
});
saveSettingsBtn.addEventListener('click', saveSettings);
cancelSettingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'none';
});
// إغلاق نافذة الإعدادات عند النقر خارجها
window.addEventListener('click', function(e) {
if (e.target === settingsModal) {
settingsModal.style.display = 'none';
}
});
// أزرار تنسيق النص
formattingButtons.forEach(button => {
button.addEventListener('click', function() {
const format = this.getAttribute('data-format');
formatText(format);
});
});
// وظيفة تنسيق النص
function formatText(format) {
const start = messageInput.selectionStart;
const end = messageInput.selectionEnd;
const selectedText = messageInput.value.substring(start, end);
let formattedText = '';
switch(format) {
case 'bold':
formattedText = `**${selectedText}**`;
break;
case 'italic':
formattedText = `*${selectedText}*`;
break;
case 'list':
formattedText = `\n- ${selectedText.replace(/\n/g, '\n- ')}`;
break;
}
messageInput.setRangeText(formattedText, start, end, 'end');
messageInput.focus();
}
// تحديث قيمة درجة الإبداع
document.getElementById('temperature').addEventListener('input', function() {
document.getElementById('temp-value').textContent = this.value;
});
// تحميل الإعدادات عند البدء
loadSettings();
});