| <!DOCTYPE html> |
| <html lang="az"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>CodeCraft AI Assistant Pro</title> |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| <script src="https://unpkg.com/feather-icons"></script> |
| <script> |
| tailwind.config = { |
| theme: { |
| extend: { |
| colors: { |
| primary: { |
| 50: '#f0f9ff', |
| 100: '#e0f2fe', |
| 200: '#bae6fd', |
| 300: '#7dd3fc', |
| 400: '#38bdf8', |
| 500: '#0ea5e9', |
| 600: '#0284c7', |
| 700: '#0369a1', |
| 800: '#075985', |
| 900: '#0c4a6e', |
| }, |
| secondary: { |
| 50: '#fdf4ff', |
| 100: '#fae8ff', |
| 200: '#f5d0fe', |
| 300: '#f0abfc', |
| 400: '#e879f9', |
| 500: '#d946ef', |
| 600: '#c026d3', |
| 700: '#a21caf', |
| 800: '#86198f', |
| 900: '#701a75', |
| } |
| } |
| } |
| } |
| } |
| </script> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); |
| |
| body { |
| font-family: 'Inter', sans-serif; |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| min-height: 100vh; |
| } |
| |
| .glass-effect { |
| background: rgba(255, 255, 255, 0.25); |
| backdrop-filter: blur(10px); |
| border: 1px solid rgba(255, 255, 255, 0.18); |
| } |
| |
| .neon-glow { |
| box-shadow: 0 0 20px rgba(14, 165, 233, 0.3); |
| } |
| |
| .code-block pre { |
| background: #1e293b; |
| color: #e2e8f0; |
| border-radius: 8px; |
| padding: 16px; |
| margin: 8px 0; |
| overflow-x: auto; |
| font-family: 'Fira Code', monospace; |
| position: relative; |
| } |
| |
| .typing-indicator { |
| display: inline-flex; |
| align-items: center; |
| gap: 4px; |
| } |
| |
| .typing-dot { |
| width: 8px; |
| height: 8px; |
| background: #0ea5e9; |
| border-radius: 50%; |
| animation: typing 1.4s infinite ease-in-out; |
| } |
| |
| .typing-dot:nth-child(1) { animation-delay: -0.32s; } |
| .typing-dot:nth-child(2) { animation-delay: -0.16s; } |
| |
| @keyframes typing { |
| 0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; } |
| 40% { transform: scale(1); opacity: 1; } |
| } |
| |
| .message-bubble { |
| max-width: 85%; |
| padding: 12px 16px; |
| border-radius: 18px; |
| margin: 8px 0; |
| word-wrap: break-word; |
| } |
| |
| .user-message { |
| background: linear-gradient(135deg, #0ea5e9, #38bdf8); |
| color: white; |
| margin-left: auto; |
| border-bottom-right-radius: 4px; |
| } |
| |
| .ai-message { |
| background: rgba(255, 255, 255, 0.9); |
| color: #1f2937; |
| margin-right: auto; |
| border-bottom-left-radius: 4px; |
| } |
| |
| .floating-animation { |
| animation: float 6s ease-in-out infinite; |
| } |
| |
| @keyframes float { |
| 0%, 100% { transform: translateY(0px); } |
| 50% { transform: translateY(-20px); } |
| } |
| |
| .pulse-ring { |
| animation: pulse-ring 2s ease-out infinite; |
| } |
| |
| @keyframes pulse-ring { |
| 0% { transform: scale(0.8); opacity: 1; } |
| 100% { transform: scale(2.2); opacity: 0; } |
| } |
| </style> |
| </head> |
| <body class="min-h-screen flex items-center justify-center p-4"> |
| <div class="w-full max-w-4xl"> |
| |
| <div class="text-center mb-8"> |
| <div class="inline-block relative"> |
| <div class="w-24 h-24 bg-gradient-to-br from-primary-400 to-secondary-500 rounded-2xl flex items-center justify-center text-white text-4xl mb-4 mx-auto floating-animation neon-glow"> |
| 🤖 |
| </div> |
| <div class="absolute inset-0 rounded-2xl pulse-ring border-2 border-primary-400"></div> |
| </div> |
| <h1 class="text-4xl font-bold text-white mb-2">CodeCraft AI Assistant Pro</h1> |
| <p class="text-primary-100 text-lg">Azərbaycan dilində proqramlaşdırma köməkçisi</p> |
| </div> |
|
|
| |
| <div class="glass-effect rounded-3xl shadow-2xl overflow-hidden"> |
| |
| <div class="flex bg-white/20 border-b border-white/20"> |
| <button data-tab="asistant" class="flex-1 py-4 text-white font-medium transition-all duration-300 relative tab-btn active"> |
| <div class="flex items-center justify-center gap-2"> |
| <i data-feather="message-circle"></i> |
| <span>Köməkçi</span> |
| </div> |
| <div class="absolute bottom-0 left-1/2 transform -translate-x-1/2 w-16 h-1 bg-primary-400 rounded-t-full transition-all duration-300"></div> |
| </button> |
| <button data-tab="projects" class="flex-1 py-4 text-white/70 font-medium transition-all duration-300 relative tab-btn"> |
| <div class="flex items-center justify-center gap-2"> |
| <i data-feather="play"></i> |
| <span>Nümayiş</span> |
| </div> |
| </button> |
| <button data-tab="code" class="flex-1 py-4 text-white/70 font-medium transition-all duration-300 relative tab-btn"> |
| <div class="flex items-center justify-center gap-2"> |
| <i data-feather="code"></i> |
| <span>Kodlar</span> |
| </div> |
| </button> |
| </div> |
|
|
| |
| <div class="min-h-[500px]"> |
| |
| <div id="tab-content-asistant" class="tab-content active p-6"> |
| <div class="max-w-2xl mx-auto"> |
| |
| <div class="flex items-center gap-4 mb-6"> |
| <div class="w-12 h-12 bg-gradient-to-br from-primary-400 to-secondary-500 rounded-xl flex items-center justify-center text-white text-2xl"> |
| <i data-feather="cpu"></i> |
| </div> |
| <div> |
| <h3 class="text-white font-semibold text-lg">AI Köməkçi</h3> |
| <p class="text-primary-100 text-sm">HTML, CSS, JavaScript kodları yaradın</p> |
| </div> |
| </div> |
|
|
| |
| <div id="chat-log" class="bg-white/10 rounded-2xl p-4 mb-4 min-h-[300px] max-h-[400px] overflow-y-auto"> |
| <div class="ai-message message-bubble"> |
| Salam! Mən sizin proqramlaşdırma köməkçinizəm. 📝<br> |
| HTML, CSS və JavaScript kodları yarada bilərəm. Nə etmək istəyirsiniz? |
| </div> |
| </div> |
|
|
| |
| <form id="chat-form" class="flex gap-2"> |
| <button type="button" id="reset-all" class="px-4 py-3 bg-red-500/20 text-red-100 rounded-xl hover:bg-red-500/30 transition-colors border border-red-400/30"> |
| <i data-feather="refresh-cw" class="w-4 h-4"></i> |
| </button> |
| <div class="flex-1 relative"> |
| <input type="text" id="chat-input" placeholder="AI-ya yazın..." |
| class="w-full px-4 py-3 bg-white/20 text-white placeholder-white/60 rounded-xl border border-white/20 focus:border-primary-400 focus:outline-none transition-colors"> |
| </div> |
| <button type="button" id="prompt-optimize" class="px-4 py-3 bg-secondary-500 text-white rounded-xl hover:bg-secondary-600 transition-colors"> |
| <i data-feather="edit-3" class="w-4 h-4"></i> |
| </button> |
| <button type="submit" class="px-4 py-3 bg-primary-500 text-white rounded-xl hover:bg-primary-600 transition-colors"> |
| <i data-feather="send" class="w-4 h-4"></i> |
| </button> |
| </form> |
| </div> |
| </div> |
|
|
| |
| <div id="tab-content-projects" class="tab-content hidden"> |
| <div id="output-game" class="output-full min-h-[500px] flex items-center justify-center bg-gray-900"> |
| <div class="text-center text-white"> |
| <i data-feather="play-circle" class="w-16 h-16 mx-auto mb-4 text-primary-400"></i> |
| <h3 class="text-xl font-semibold mb-2">Kod Nümayişi</h3> |
| <p class="text-gray-300">Kodlar bölməsində yazılan kodlar burada nümayiş olunacaq</p> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="tab-content-code" class="tab-content hidden p-6"> |
| <div class="grid md:grid-cols-3 gap-6"> |
| <div class="code-block"> |
| <div class="flex items-center justify-between mb-3"> |
| <label class="text-white font-semibold flex items-center gap-2"> |
| <i data-feather="file-text" class="w-4 h-4"></i> |
| HTML |
| </label> |
| <button class="copy-btn px-3 py-1 bg-primary-500 text-white rounded-lg hover:bg-primary-600 transition-colors text-sm" data-target="html-code"> |
| Köçür |
| </button> |
| </div> |
| <textarea id="html-code" placeholder="HTML kodu burada görünəcək" |
| class="w-full h-64 bg-gray-800 text-gray-100 rounded-lg p-4 font-mono text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary-500"></textarea> |
| </div> |
| |
| <div class="code-block"> |
| <div class="flex items-center justify-between mb-3"> |
| <label class="text-white font-semibold flex items-center gap-2"> |
| <i data-feather="pen-tool" class="w-4 h-4"></i> |
| CSS |
| </label> |
| <button class="copy-btn px-3 py-1 bg-primary-500 text-white rounded-lg hover:bg-primary-600 transition-colors text-sm" data-target="css-code"> |
| Köçür |
| </button> |
| </div> |
| <textarea id="css-code" placeholder="CSS kodu burada görünəcək" |
| class="w-full h-64 bg-gray-800 text-gray-100 rounded-lg p-4 font-mono text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary-500"></textarea> |
| </div> |
| |
| <div class="code-block"> |
| <div class="flex items-center justify-between mb-3"> |
| <label class="text-white font-semibold flex items-center gap-2"> |
| <i data-feather="code" class="w-4 h-4"></i> |
| JavaScript |
| </label> |
| <button class="copy-btn px-3 py-1 bg-primary-500 text-white rounded-lg hover:bg-primary-600 transition-colors text-sm" data-target="js-code"> |
| Köçür |
| </button> |
| </div> |
| <textarea id="js-code" placeholder="JavaScript kodu burada görünəcək" |
| class="w-full h-64 bg-gray-800 text-gray-100 rounded-lg p-4 font-mono text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary-500"></textarea> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="copy-toast" class="fixed bottom-4 left-1/2 transform -translate-x-1/2 bg-primary-500 text-white px-6 py-3 rounded-lg shadow-lg hidden z-50"> |
| Kod köçürüldü! ✅ |
| </div> |
| </div> |
|
|
| <script> |
| |
| feather.replace(); |
| |
| |
| document.querySelectorAll('.tab-btn').forEach(btn => { |
| btn.addEventListener('click', () => { |
| |
| document.querySelectorAll('.tab-btn').forEach(b => { |
| b.classList.remove('active'); |
| b.querySelector('div:last-child').classList.add('hidden'); |
| }); |
| |
| |
| btn.classList.add('active'); |
| btn.querySelector('div:last-child').classList.remove('hidden'); |
| |
| |
| document.querySelectorAll('.tab-content').forEach(tab => { |
| tab.classList.add('hidden'); |
| tab.classList.remove('active'); |
| }); |
| |
| |
| const tabId = btn.getAttribute('data-tab'); |
| document.getElementById(`tab-content-${tabId}`).classList.remove('hidden'); |
| document.getElementById(`tab-content-${tabId}`).classList.add('active'); |
| |
| |
| if (tabId === 'projects') { |
| updateGameOutput(); |
| } |
| }); |
| }); |
| |
| |
| document.querySelectorAll('.copy-btn').forEach(btn => { |
| btn.addEventListener('click', function() { |
| const target = this.getAttribute('data-target'); |
| const code = document.getElementById(target).value; |
| navigator.clipboard.writeText(code).then(() => { |
| showCopyToast(); |
| }); |
| }); |
| }); |
| |
| |
| function showCopyToast() { |
| const toast = document.getElementById('copy-toast'); |
| toast.classList.remove('hidden'); |
| setTimeout(() => { |
| toast.classList.add('hidden'); |
| }, 2000); |
| } |
| |
| |
| function updateGameOutput() { |
| const html = document.getElementById('html-code').value; |
| const css = document.getElementById('css-code').value; |
| const js = document.getElementById('js-code').value; |
| |
| const outputEl = document.getElementById('output-game'); |
| if (html || css || js) { |
| const code = ` |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <style>${css}</style> |
| </head> |
| <body>${html} |
| <script> |
| try { |
| ${js} |
| } catch(e) { |
| console.error('JavaScript error:', e); |
| } |
| <\/script> |
| </body> |
| </html>`; |
| |
| outputEl.innerHTML = ''; |
| const iframe = document.createElement('iframe'); |
| iframe.style.width = '100%'; |
| iframe.style.height = '100%'; |
| iframe.style.border = 'none'; |
| iframe.srcdoc = code; |
| outputEl.appendChild(iframe); |
| } |
| } |
| |
| |
| ['html-code', 'css-code', 'js-code'].forEach(id => { |
| document.getElementById(id).addEventListener('input', () => { |
| if (document.querySelector('.tab-btn.active').getAttribute('data-tab') === 'projects') { |
| updateGameOutput(); |
| } |
| }); |
| }); |
| |
| |
| document.getElementById('chat-form').addEventListener('submit', function(e) { |
| e.preventDefault(); |
| const input = document.getElementById('chat-input'); |
| const message = input.value.trim(); |
| |
| if (message) { |
| |
| addMessage(message, 'user'); |
| input.value = ''; |
| |
| |
| simulateAIResponse(message); |
| } |
| }); |
| |
| |
| document.getElementById('reset-all').addEventListener('click', function() { |
| document.getElementById('chat-log').innerHTML = ` |
| <div class="ai-message message-bubble"> |
| Salam! Mən sizin proqramlaşdırma köməkçinizəm. 📝<br> |
| HTML, CSS və JavaScript kodları yarada bilərəm. Nə etmək istəyirsiniz? |
| </div> |
| `; |
| |
| ['html-code', 'css-code', 'js-code'].forEach(id => { |
| document.getElementById(id).value = ''; |
| }); |
| |
| updateGameOutput(); |
| }); |
| |
| |
| document.getElementById('prompt-optimize').addEventListener('click', function() { |
| const input = document.getElementById('chat-input'); |
| const message = input.value.trim(); |
| |
| if (message) { |
| addMessage(message + ' (Detallı göndərildi)', 'user'); |
| input.value = ''; |
| |
| |
| simulateOptimizedAIResponse(message); |
| } |
| }); |
| |
| |
| function addMessage(text, sender) { |
| const chatLog = document.getElementById('chat-log'); |
| const messageDiv = document.createElement('div'); |
| messageDiv.className = `${sender}-message message-bubble`; |
| messageDiv.innerHTML = `<b>${sender === 'user' ? 'Siz' : 'AI'}:</b> ${escapeHTML(text)}`; |
| chatLog.appendChild(messageDiv); |
| chatLog.scrollTop = chatLog.scrollHeight; |
| } |
| |
| function escapeHTML(str) { |
| return str.replace(/[&<>"']/g, function(m) { |
| return ({ |
| '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' |
| })[m]; |
| }); |
| } |
| |
| function simulateAIResponse(userMessage) { |
| const chatLog = document.getElementById('chat-log'); |
| const typingDiv = document.createElement('div'); |
| typingDiv.className = 'ai-message message-bubble'; |
| typingDiv.innerHTML = '<div class="typing-indicator"><span>AI cavab hazırlayır</span><div class="typing-dot"></div><div class="typing-dot"></div><div class="typing-dot"></div></div>'; |
| chatLog.appendChild(typingDiv); |
| chatLog.scrollTop = chatLog.scrollHeight; |
| |
| setTimeout(() => { |
| chatLog.removeChild(typingDiv); |
| |
| |
| let response = ''; |
| if (userMessage.toLowerCase().includes('html') || userMessage.toLowerCase().includes('css') || userMessage.toLowerCase().includes('javascript')) { |
| response = `Sizin sorğunuza uyğun olaraq, aşağıdakı kodları təqdim edirəm:\n\n` + |
| `**HTML kodu:**\n\`\`\`html\n<!DOCTYPE html>\n<html>\n<head>\n <title>Salam Dünya</title>\n</head>\n<body>\n <h1>Salam, Dünya!</h1>\n</body>\n</html>\n\`\`\`\n\n` + |
| `**CSS kodu:**\n\`\`\`css\nbody {\n font-family: Arial, sans-serif;\n background: linear-gradient(135deg, #667eea, #764ba2);\n margin: 0;\n padding: 20px;\n}\n\nh1 {\n color: white;\n text-align: center;\n}\n\`\`\`\n\n` + |
| `**JavaScript kodu:**\n\`\`\`javascript\ndocument.addEventListener('DOMContentLoaded', function() {\n console.log('Salam Dünya proqramı işə düşdü!');\n \n const h1 = document.querySelector('h1');\n h1.addEventListener('click', function() {\n alert('Salam, Dünya!');\n });\n});\n\`\`\``; |
| } else { |
| response = `Sizin sorğunuzu başa düşdüm! Daha dəqiq kömək üçün aşağıdakı kimi sorğu verə bilərsiniz:\n\n` + |
| `"Mənə bir navbar yaradın, HTML, CSS və JavaScript kodlarını ayrıca verin."\n\n` + |
| `Və ya:\n\n` + |
| `"Responsive kart dizaynı üçün kod yazın. HTML, CSS və JavaScript kodlarını tam verin."`; |
| } |
| |
| addMessage(response, 'ai'); |
| |
| |
| if (response.includes('html')) { |
| const htmlMatch = response.match(/html\n([\s\S]*?)(?=\n```|$)/); |
| if (htmlMatch) document.getElementById('html-code').value = htmlMatch[1].trim(); |
| |
| const cssMatch = response.match(/css\n([\s\S]*?)(?=\n```|$)/); |
| if (cssMatch) document.getElementById('css-code').value = cssMatch[1].trim(); |
| |
| const jsMatch = response.match(/javascript\n([\s\S]*?)(?=\n```|$)/); |
| if (jsMatch) document.getElementById('js-code').value = jsMatch[1].trim(); |
| |
| updateGameOutput(); |
| } |
| }, 2000); |
| } |
| |
| function simulateOptimizedAIResponse(userMessage) { |
| const chatLog = document.getElementById('chat-log'); |
| const typingDiv = document.createElement('div'); |
| typingDiv.className = 'ai-message message-bubble'; |
| typingDiv.innerHTML = '<div class="typing-indicator"><span>AI sorğunu optimallaşdırır</span><div class="typing-dot"></div><div class="typing-dot"></div><div class="typing-dot"></div></div>'; |
| chatLog.appendChild(typingDiv); |
| chatLog.scrollTop = chatLog.scrollHeight; |
| |
| setTimeout(() => { |
| chatLog.removeChild(typingDiv); |
| |
| const optimizedPrompt = `Optimallaşdırılmış sorğu: "${userMessage}"\n\n` + |
| `Daha dəqiq cavab üçün sorğunu aşağıdakı kimi təkmilləşdirə bilərsiniz:\n\n` + |
| `"${userMessage}. HTML, CSS və JavaScript kodlarını tam, ayrıca və başlıqlı kod bloklarında göndərin."\n\n` + |
| `Bu formatda sorğu verdikdə, daha dəqiq və tam kodlar alacaqsınız.`; |
| |
| addMessage(optimizedPrompt, 'ai'); |
| }, 1500); |
| } |
| |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| const sampleHTML = `<!DOCTYPE html> |
| <html lang="az"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Salam Dünya</title> |
| </head> |
| <body> |
| <h1>Salam, Dünya! 👋</h1> |
| <p>Bu, AI tərəfindən yaradılmış nümunə səhifədir.</p> |
| </body> |
| </html>`; |
| |
| const sampleCSS = `body { |
| font-family: 'Inter', sans-serif; |
| background: linear-gradient(135deg, #667eea, #764ba2); |
| margin: 0; |
| padding: 40px; |
| min-height: 100vh; |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| color: white; |
| text-align: center; |
| } |
| |
| h1 { |
| font-size: 3rem; |
| margin-bottom: 1rem; |
| text-shadow: 2px 2px 4px rgba(0,0,0,0.3); |
| } |
| |
| p { |
| font-size: 1.2rem; |
| opacity: 0.9; |
| }`; |
| |
| const sampleJS = `document.addEventListener('DOMContentLoaded', function() { |
| console.log('Salam Dünya səhifəsi uğurla yükləndi!'); |
| |
| const h1 = document.querySelector('h1'); |
| h1.addEventListener('click', function() { |
| this.style.transform = 'scale(1.1)'; |
| this.style.transition = 'transform 0.3s ease'; |
| |
| setTimeout(() => { |
| this.style.transform = 'scale(1)'; |
| }, 300); |
| }); |
| |
| // Rəng dəyişmə effekti |
| let colorIndex = 0; |
| const colors = ['#ff6b6b', '# |