nixaut-codelabs commited on
Commit
e948fb1
·
verified ·
1 Parent(s): fa929f9

textarea butonları fazla aşağıda. Yazı üstte butonlar aşağıda. Çok az fark gözüküyor gözle ama dikkatli bakınca çok açık, moral bozuyor :D çöz lütfen. Ayrıca modellere direkt "Deep Research" ekle. Herşey tamamen İngilizce olmalı sitede. Türkçe konuştuğuma bakma. Ayrıca Neural Assistant falan buraları Nixaut Copilot olarak düzenle, yazıları falan. Ayrıca tema siyah beyazdı unutma dropdown yeşil falan kullanmışın mesela.

Browse files
Files changed (4) hide show
  1. components/sidebar.js +13 -13
  2. index.html +35 -31
  3. script.js +15 -21
  4. style.css +4 -5
components/sidebar.js CHANGED
@@ -234,35 +234,35 @@ class CustomSidebar extends HTMLElement {
234
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.5">
235
  <path d="M12 5v14m-7-7h14"/>
236
  </svg>
237
- Yeni Sohbet
238
  </button>
239
 
240
  <div class="nav-section">
241
- <div class="nav-title">Son Sohbetler</div>
242
- <div class="chat-history" id="recentChats">
243
  <div class="history-item">
244
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
245
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
246
  </svg>
247
- Responsive tasarım nasıl oluşturulur?
248
  </div>
249
  <div class="history-item">
250
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
251
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
252
  </svg>
253
- JavaScript async paternleri
254
  </div>
255
  <div class="history-item">
256
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
257
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
258
  </svg>
259
- CSS Grid vs Flexbox karşılaştırması
260
  </div>
261
  <div class="history-item">
262
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
263
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
264
  </svg>
265
- React performans ipuçları
266
  </div>
267
  <div class="history-item">
268
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -270,7 +270,7 @@ class CustomSidebar extends HTMLElement {
270
  </svg>
271
  TypeScript best practices
272
  </div>
273
- </div>
274
  </div>
275
 
276
  <div class="divider"></div>
@@ -282,29 +282,29 @@ class CustomSidebar extends HTMLElement {
282
  <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/>
283
  <path d="M9 22V12h6v10"/>
284
  </svg>
285
- Ana Sayfa
286
  </a>
287
  <a href="/chat" class="nav-item active">
288
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
289
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
290
  </svg>
291
- Sohbet
292
  </a>
293
  <a href="/files" class="nav-item">
294
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
295
  <path d="M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9z"/>
296
  <path d="M13 2v7h7"/>
297
  </svg>
298
- Dosyalarım
299
  </a>
300
  <a href="/settings" class="nav-item">
301
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
302
  <circle cx="12" cy="12" r="3"/>
303
  <path d="M12 1v6m0 6v6m4.22-13.22l4.24 4.24M1.54 9.96l4.24 4.24m12.44 0l4.24 4.24M1.54 14.04l4.24-4.24"/>
304
  </svg>
305
- Ayarlar
306
  </a>
307
- </div>
308
 
309
  <div class="divider"></div>
310
 
 
234
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.5">
235
  <path d="M12 5v14m-7-7h14"/>
236
  </svg>
237
+ New Chat
238
  </button>
239
 
240
  <div class="nav-section">
241
+ <div class="nav-title">Recent Chats</div>
242
+ <div class="chat-history" id="recentChats">
243
  <div class="history-item">
244
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
245
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
246
  </svg>
247
+ How to create responsive design?
248
  </div>
249
  <div class="history-item">
250
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
251
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
252
  </svg>
253
+ JavaScript async patterns
254
  </div>
255
  <div class="history-item">
256
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
257
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
258
  </svg>
259
+ CSS Grid vs Flexbox comparison
260
  </div>
261
  <div class="history-item">
262
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
263
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
264
  </svg>
265
+ React performance tips
266
  </div>
267
  <div class="history-item">
268
  <svg class="history-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
 
270
  </svg>
271
  TypeScript best practices
272
  </div>
273
+ </div>
274
  </div>
275
 
276
  <div class="divider"></div>
 
282
  <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/>
283
  <path d="M9 22V12h6v10"/>
284
  </svg>
285
+ Home
286
  </a>
287
  <a href="/chat" class="nav-item active">
288
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
289
  <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
290
  </svg>
291
+ Chat
292
  </a>
293
  <a href="/files" class="nav-item">
294
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
295
  <path d="M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9z"/>
296
  <path d="M13 2v7h7"/>
297
  </svg>
298
+ My Files
299
  </a>
300
  <a href="/settings" class="nav-item">
301
  <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
302
  <circle cx="12" cy="12" r="3"/>
303
  <path d="M12 1v6m0 6v6m4.22-13.22l4.24 4.24M1.54 9.96l4.24 4.24m12.44 0l4.24 4.24M1.54 14.04l4.24-4.24"/>
304
  </svg>
305
+ Settings
306
  </a>
307
+ </div>
308
 
309
  <div class="divider"></div>
310
 
index.html CHANGED
@@ -76,10 +76,10 @@
76
  <i data-feather="cpu" class="w-5 h-5 text-zinc-900"></i>
77
  </div>
78
  <div>
79
- <h2 class="font-semibold text-white">Neural Assistant</h2>
80
  <p class="text-xs text-zinc-400">Online • Powered by AI</p>
81
  </div>
82
- </div>
83
  <button onclick="toggleChatMode()" class="p-2 hover:bg-zinc-800 rounded-lg transition-all duration-200 hover:scale-105">
84
  <i data-feather="maximize-2" class="w-5 h-5 text-zinc-400"></i>
85
  </button>
@@ -122,7 +122,7 @@
122
  <!-- Model Selector -->
123
  <div id="modelDropdown" class="relative">
124
  <button onclick="toggleModelDropdown()" class="flex items-center space-x-2 bg-zinc-800/60 hover:bg-zinc-800/80 border border-zinc-700/50 hover:border-zinc-600/50 rounded-lg px-3 py-2 text-sm text-white transition-all duration-200">
125
- <div id="modelIndicator" class="w-2 h-2 bg-green-400 rounded-full"></div>
126
  <span id="selectedModelText" class="font-medium">Max</span>
127
  <svg class="w-4 h-4 text-zinc-400 transition-transform" id="modelDropdownArrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
128
  <path d="M6 9l6 6 6-6"/>
@@ -130,30 +130,36 @@
130
  </button>
131
  <div id="modelDropdownMenu" class="hidden absolute bottom-full left-0 mb-2 bg-zinc-900 border border-zinc-700 rounded-lg shadow-2xl z-50 min-w-[200px]">
132
  <div onclick="selectModel('Max')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
133
- <div class="w-2 h-2 bg-green-400 rounded-full"></div>
134
  <div>
135
  <div class="font-medium text-sm">Max</div>
136
- <div class="text-xs text-zinc-400">En yetenekli</div>
137
  </div>
138
  </div>
139
  <div onclick="selectModel('Turbo')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
140
- <div class="w-2 h-2 bg-blue-400 rounded-full"></div>
141
  <div>
142
  <div class="font-medium text-sm">Turbo</div>
143
- <div class="text-xs text-zinc-400">Hızlı yanıt</div>
144
  </div>
145
  </div>
146
  <div onclick="selectModel('Lite')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
147
- <div class="w-2 h-2 bg-yellow-400 rounded-full"></div>
148
  <div>
149
  <div class="font-medium text-sm">Lite</div>
150
- <div class="text-xs text-zinc-400">Ekonomik</div>
 
 
 
 
 
 
 
151
  </div>
152
  </div>
153
  </div>
154
  </div>
155
-
156
- <!-- Web Search Toggle -->
157
  <button id="webSearchToggle" onclick="toggleWebSearch()" class="flex items-center space-x-1.5 bg-zinc-800/60 hover:bg-zinc-800/80 border border-zinc-700/50 hover:border-zinc-600/50 rounded-lg px-3 py-2 text-sm text-white transition-all duration-200">
158
  <i data-feather="search" class="w-3.5 h-3.5"></i>
159
  <span>Web</span>
@@ -175,22 +181,10 @@
175
  </div>
176
  </div>
177
  </div>
178
-
179
  <!-- Main Input Container -->
180
  <div class="relative bg-zinc-800/40 rounded-2xl border border-zinc-700/50 hover:border-zinc-600/50 transition-all duration-200 focus-within:border-white/50 focus-within:shadow-lg focus-within:shadow-white/5">
181
- <!-- Textarea -->
182
- <textarea
183
- id="messageInput"
184
- rows="1"
185
- placeholder="Mesajınızı buraya yazın... (@ ile belge ekle, / komutlar için)"
186
- class="w-full bg-transparent text-white placeholder-zinc-500 resize-none focus:outline-none px-4 py-3.5 pr-24 text-sm leading-relaxed"
187
- style="min-height: 52px; max-height: 120px;"
188
- onkeypress="handleKeyPress(event)"
189
- oninput="handleInput(this)"
190
- ></textarea>
191
-
192
  <!-- Action Buttons -->
193
- <div class="absolute right-2 bottom-2 flex items-center space-x-1.5">
194
  <button onclick="attachFile()" class="p-2 hover:bg-zinc-700/50 rounded-lg transition-all duration-200 group">
195
  <i data-feather="paperclip" class="w-4 h-4 text-zinc-400 group-hover:text-white"></i>
196
  </button>
@@ -208,31 +202,41 @@
208
  <i data-feather="send" class="w-4 h-4"></i>
209
  </button>
210
  </div>
 
 
 
 
 
 
 
 
 
 
 
211
  </div>
212
-
213
  <!-- Bottom Actions Bar -->
214
  <div class="mt-3 flex items-center justify-between">
215
  <div class="flex items-center space-x-3">
216
  <button onclick="clearChat()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
217
  <i data-feather="trash-2" class="w-3 h-3"></i>
218
- <span>Temizle</span>
219
  </button>
220
  <button onclick="exportChat()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
221
  <i data-feather="download" class="w-3 h-3"></i>
222
- <span>Dışa Aktar</span>
223
  </button>
224
  <button onclick="showSettings()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
225
  <i data-feather="settings" class="w-3 h-3"></i>
226
- <span>Ayarlar</span>
227
  </button>
228
  </div>
229
  <div class="flex items-center space-x-2 text-xs text-zinc-500">
230
- <span>Enter gönderir</span>
231
  <span>•</span>
232
- <span>Shift+Enter yeni satır</span>
233
  </div>
234
  </div>
235
- </div>
236
  </main>
237
  <script src="components/header.js"></script>
238
  <script src="components/sidebar.js"></script>
 
76
  <i data-feather="cpu" class="w-5 h-5 text-zinc-900"></i>
77
  </div>
78
  <div>
79
+ <h2 class="font-semibold text-white">Nixaut Copilot</h2>
80
  <p class="text-xs text-zinc-400">Online • Powered by AI</p>
81
  </div>
82
+ </div>
83
  <button onclick="toggleChatMode()" class="p-2 hover:bg-zinc-800 rounded-lg transition-all duration-200 hover:scale-105">
84
  <i data-feather="maximize-2" class="w-5 h-5 text-zinc-400"></i>
85
  </button>
 
122
  <!-- Model Selector -->
123
  <div id="modelDropdown" class="relative">
124
  <button onclick="toggleModelDropdown()" class="flex items-center space-x-2 bg-zinc-800/60 hover:bg-zinc-800/80 border border-zinc-700/50 hover:border-zinc-600/50 rounded-lg px-3 py-2 text-sm text-white transition-all duration-200">
125
+ <div id="modelIndicator" class="w-2 h-2 bg-white rounded-full"></div>
126
  <span id="selectedModelText" class="font-medium">Max</span>
127
  <svg class="w-4 h-4 text-zinc-400 transition-transform" id="modelDropdownArrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
128
  <path d="M6 9l6 6 6-6"/>
 
130
  </button>
131
  <div id="modelDropdownMenu" class="hidden absolute bottom-full left-0 mb-2 bg-zinc-900 border border-zinc-700 rounded-lg shadow-2xl z-50 min-w-[200px]">
132
  <div onclick="selectModel('Max')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
133
+ <div class="w-2 h-2 bg-white rounded-full"></div>
134
  <div>
135
  <div class="font-medium text-sm">Max</div>
136
+ <div class="text-xs text-zinc-400">Most capable</div>
137
  </div>
138
  </div>
139
  <div onclick="selectModel('Turbo')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
140
+ <div class="w-2 h-2 bg-zinc-400 rounded-full"></div>
141
  <div>
142
  <div class="font-medium text-sm">Turbo</div>
143
+ <div class="text-xs text-zinc-400">Fast response</div>
144
  </div>
145
  </div>
146
  <div onclick="selectModel('Lite')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
147
+ <div class="w-2 h-2 bg-zinc-500 rounded-full"></div>
148
  <div>
149
  <div class="font-medium text-sm">Lite</div>
150
+ <div class="text-xs text-zinc-400">Economical</div>
151
+ </div>
152
+ </div>
153
+ <div onclick="selectModel('Deep Research')" class="px-3 py-2 text-white hover:bg-zinc-800 cursor-pointer transition-colors duration-150 flex items-center space-x-2">
154
+ <div class="w-2 h-2 bg-zinc-300 rounded-full"></div>
155
+ <div>
156
+ <div class="font-medium text-sm">Deep Research</div>
157
+ <div class="text-xs text-zinc-400">In-depth analysis</div>
158
  </div>
159
  </div>
160
  </div>
161
  </div>
162
+ <!-- Web Search Toggle -->
 
163
  <button id="webSearchToggle" onclick="toggleWebSearch()" class="flex items-center space-x-1.5 bg-zinc-800/60 hover:bg-zinc-800/80 border border-zinc-700/50 hover:border-zinc-600/50 rounded-lg px-3 py-2 text-sm text-white transition-all duration-200">
164
  <i data-feather="search" class="w-3.5 h-3.5"></i>
165
  <span>Web</span>
 
181
  </div>
182
  </div>
183
  </div>
 
184
  <!-- Main Input Container -->
185
  <div class="relative bg-zinc-800/40 rounded-2xl border border-zinc-700/50 hover:border-zinc-600/50 transition-all duration-200 focus-within:border-white/50 focus-within:shadow-lg focus-within:shadow-white/5">
 
 
 
 
 
 
 
 
 
 
 
186
  <!-- Action Buttons -->
187
+ <div class="absolute right-2 top-2 flex items-center space-x-1.5">
188
  <button onclick="attachFile()" class="p-2 hover:bg-zinc-700/50 rounded-lg transition-all duration-200 group">
189
  <i data-feather="paperclip" class="w-4 h-4 text-zinc-400 group-hover:text-white"></i>
190
  </button>
 
202
  <i data-feather="send" class="w-4 h-4"></i>
203
  </button>
204
  </div>
205
+
206
+ <!-- Textarea -->
207
+ <textarea
208
+ id="messageInput"
209
+ rows="1"
210
+ placeholder="Type your message here... (@ to attach, / for commands)"
211
+ class="w-full bg-transparent text-white placeholder-zinc-500 resize-none focus:outline-none px-4 pt-3.5 pr-24 pb-6 text-sm leading-relaxed"
212
+ style="min-height: 52px; max-height: 120px;"
213
+ onkeypress="handleKeyPress(event)"
214
+ oninput="handleInput(this)"
215
+ ></textarea>
216
  </div>
 
217
  <!-- Bottom Actions Bar -->
218
  <div class="mt-3 flex items-center justify-between">
219
  <div class="flex items-center space-x-3">
220
  <button onclick="clearChat()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
221
  <i data-feather="trash-2" class="w-3 h-3"></i>
222
+ <span>Clear</span>
223
  </button>
224
  <button onclick="exportChat()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
225
  <i data-feather="download" class="w-3 h-3"></i>
226
+ <span>Export</span>
227
  </button>
228
  <button onclick="showSettings()" class="text-xs text-zinc-500 hover:text-white transition-colors duration-200 flex items-center space-x-1">
229
  <i data-feather="settings" class="w-3 h-3"></i>
230
+ <span>Settings</span>
231
  </button>
232
  </div>
233
  <div class="flex items-center space-x-2 text-xs text-zinc-500">
234
+ <span>Enter to send</span>
235
  <span>•</span>
236
+ <span>Shift+Enter for new line</span>
237
  </div>
238
  </div>
239
+ </div>
240
  </main>
241
  <script src="components/header.js"></script>
242
  <script src="components/sidebar.js"></script>
script.js CHANGED
@@ -193,17 +193,16 @@ function selectModel(model) {
193
  currentModel = model;
194
  const selectedText = document.getElementById('selectedModelText');
195
  const indicator = document.getElementById('modelIndicator');
196
-
197
- const modelConfig = {
198
- 'Max': { color: 'green' },
199
- 'Turbo': { color: 'blue' },
200
- 'Lite': { color: 'yellow' }
201
  };
202
 
203
  selectedText.textContent = model;
204
- indicator.className = `w-2 h-2 bg-${modelConfig[model].color}-400 rounded-full`;
205
-
206
- // Close dropdown
207
  document.getElementById('modelDropdownMenu').classList.add('hidden');
208
  document.getElementById('modelDropdownArrow').style.transform = 'rotate(0deg)';
209
 
@@ -215,14 +214,13 @@ function toggleWebSearch() {
215
  webSearchEnabled = !webSearchEnabled;
216
  const toggleCircle = document.getElementById('webSearchToggleCircle');
217
  const toggleButton = document.getElementById('webSearchToggle');
218
-
219
  if (webSearchEnabled) {
220
  toggleCircle.style.transform = 'translateX(16px)';
221
- toggleCircle.classList.add('bg-green-400');
222
  toggleCircle.classList.remove('bg-zinc-500');
223
  } else {
224
  toggleCircle.style.transform = 'translateX(0)';
225
- toggleCircle.classList.remove('bg-green-400');
226
  toggleCircle.classList.add('bg-zinc-500');
227
  }
228
  }
@@ -283,29 +281,25 @@ function attachFile() {
283
  };
284
  input.click();
285
  }
286
-
287
  function showVoiceInput() {
288
- alert('Sesli giriş yakında eklenecek!');
289
  }
290
-
291
  function stopGeneration() {
292
  isGenerating = false;
293
  hideTypingIndicator();
294
  handleInput(document.getElementById('messageInput'));
295
  }
296
-
297
  function showSettings() {
298
- alert('Ayarlar sayfası yakında eklenecek!');
299
  }
300
  function updateModelStatus(model) {
301
- const responseTimes = {
302
  'Max': '~1.2s',
303
  'Turbo': '~0.8s',
304
  'Lite': '~0.5s',
305
  'Deep Research': '~2.1s'
306
  };
307
-
308
- const responseElements = document.querySelectorAll('.text-green-400');
309
  responseElements.forEach(el => {
310
  if (el.textContent.includes('~')) {
311
  el.textContent = responseTimes[model];
@@ -364,9 +358,9 @@ function clearChat() {
364
  </div>
365
  <div class="max-w-xl">
366
  <div class="bg-zinc-900 rounded-2xl rounded-tl-sm p-4 glow hover:scale-[1.02] transition-all duration-200">
367
- <p class="text-white leading-relaxed">Welcome to Neural Nexus AI 🚀</p>
368
  <p class="text-zinc-400 text-sm mt-2">I'm your advanced AI assistant. How can I help you today?</p>
369
- </div>
370
  <p class="text-xs text-zinc-500 mt-1">Just now</p>
371
  </div>
372
  </div>
 
193
  currentModel = model;
194
  const selectedText = document.getElementById('selectedModelText');
195
  const indicator = document.getElementById('modelIndicator');
196
+ const modelConfig = {
197
+ 'Max': { color: 'white' },
198
+ 'Turbo': { color: 'zinc-400' },
199
+ 'Lite': { color: 'zinc-500' },
200
+ 'Deep Research': { color: 'zinc-300' }
201
  };
202
 
203
  selectedText.textContent = model;
204
+ indicator.className = `w-2 h-2 bg-${modelConfig[model].color} rounded-full`;
205
+ // Close dropdown
 
206
  document.getElementById('modelDropdownMenu').classList.add('hidden');
207
  document.getElementById('modelDropdownArrow').style.transform = 'rotate(0deg)';
208
 
 
214
  webSearchEnabled = !webSearchEnabled;
215
  const toggleCircle = document.getElementById('webSearchToggleCircle');
216
  const toggleButton = document.getElementById('webSearchToggle');
 
217
  if (webSearchEnabled) {
218
  toggleCircle.style.transform = 'translateX(16px)';
219
+ toggleCircle.classList.add('bg-white');
220
  toggleCircle.classList.remove('bg-zinc-500');
221
  } else {
222
  toggleCircle.style.transform = 'translateX(0)';
223
+ toggleCircle.classList.remove('bg-white');
224
  toggleCircle.classList.add('bg-zinc-500');
225
  }
226
  }
 
281
  };
282
  input.click();
283
  }
 
284
  function showVoiceInput() {
285
+ alert('Voice input coming soon!');
286
  }
 
287
  function stopGeneration() {
288
  isGenerating = false;
289
  hideTypingIndicator();
290
  handleInput(document.getElementById('messageInput'));
291
  }
 
292
  function showSettings() {
293
+ alert('Settings page coming soon!');
294
  }
295
  function updateModelStatus(model) {
296
+ const responseTimes = {
297
  'Max': '~1.2s',
298
  'Turbo': '~0.8s',
299
  'Lite': '~0.5s',
300
  'Deep Research': '~2.1s'
301
  };
302
+ const responseElements = document.querySelectorAll('.text-green-400');
 
303
  responseElements.forEach(el => {
304
  if (el.textContent.includes('~')) {
305
  el.textContent = responseTimes[model];
 
358
  </div>
359
  <div class="max-w-xl">
360
  <div class="bg-zinc-900 rounded-2xl rounded-tl-sm p-4 glow hover:scale-[1.02] transition-all duration-200">
361
+ <p class="text-white leading-relaxed">Welcome to Nixaut Copilot 🚀</p>
362
  <p class="text-zinc-400 text-sm mt-2">I'm your advanced AI assistant. How can I help you today?</p>
363
+ </div>
364
  <p class="text-xs text-zinc-500 mt-1">Just now</p>
365
  </div>
366
  </div>
style.css CHANGED
@@ -139,11 +139,10 @@ body {
139
  border-radius: 50%;
140
  display: inline-block;
141
  }
142
-
143
- .model-dot.green { background: #4ade80; }
144
- .model-dot.blue { background: #60a5fa; }
145
- .model-dot.yellow { background: #facc15; }
146
- .model-dot.purple { background: #c084fc; }
147
  /* Mobile Responsive */
148
  @media (max-width: 768px) {
149
  .sidebar-mobile {
 
139
  border-radius: 50%;
140
  display: inline-block;
141
  }
142
+ .model-dot.white { background: #ffffff; }
143
+ .model-dot.zinc-300 { background: #d4d4d8; }
144
+ .model-dot.zinc-400 { background: #a1a1aa; }
145
+ .model-dot.zinc-500 { background: #71717a; }
 
146
  /* Mobile Responsive */
147
  @media (max-width: 768px) {
148
  .sidebar-mobile {