smodusermc commited on
Commit
5252812
·
verified ·
1 Parent(s): cfd4ffb

Update static/index.html

Browse files
Files changed (1) hide show
  1. static/index.html +333 -140
static/index.html CHANGED
@@ -109,122 +109,173 @@
109
  </div>
110
 
111
  <div id="chat-screen" class="screen">
112
- <header class="chat-header">
113
- <div class="header-section header-left">
114
- <div class="header-avatar-wrap" id="header-avatar-placeholder">
115
- <i class="fas fa-user-circle"></i>
116
- </div>
117
- <img id="header-avatar" class="header-avatar-img hidden" alt="Avatar">
118
- <div class="header-info">
119
- <h2 class="header-name" id="header-display-name">InfinityChat</h2>
120
- <span class="header-status" id="header-status">
121
- <span class="status-dot online"></span> Online
122
- </span>
123
- </div>
124
- </div>
125
- <div class="header-section header-right">
126
- <button id="online-btn" class="btn-icon" aria-label="Online users">
127
- <i class="fas fa-users"></i>
128
- <span id="online-badge" class="badge">0</span>
129
- </button>
130
- <button id="settings-btn" class="btn-icon" aria-label="Settings">
131
- <i class="fas fa-cog"></i>
132
- </button>
133
- <button id="logout-btn" class="btn-icon" aria-label="Logout">
134
- <i class="fas fa-sign-out-alt"></i>
135
- </button>
136
- </div>
137
- </header>
138
 
139
- <div id="connection-status" class="connection-status">
140
- <i class="fas fa-wifi"></i>
141
- <span id="connection-text">Connecting...</span>
142
- </div>
143
-
144
- <div id="messages-container" class="messages-container">
145
- <div id="messages-scroll" class="messages-scroll">
146
- <div id="load-more" class="load-more">
147
- <button id="load-older-btn" class="btn btn-ghost hidden">
148
- <i class="fas fa-chevron-up"></i> Load older messages
149
  </button>
150
  </div>
151
- <div id="messages-list" class="messages-list">
152
- <div id="empty-state" class="empty-state">
153
- <div class="empty-icon"><i class="fas fa-comments"></i></div>
154
- <h3>No messages yet</h3>
155
- <p>Start the conversation below</p>
 
 
 
 
156
  </div>
 
 
 
157
  </div>
158
- </div>
159
- <button id="scroll-bottom-btn" class="scroll-bottom-btn hidden">
160
- <i class="fas fa-chevron-down"></i>
161
- </button>
162
- <div id="latest-message-bar" class="latest-message-bar hidden">
163
- <div class="lmb-avatar" id="lmb-avatar"></div>
164
- <span class="lmb-name" id="lmb-name"></span>
165
- <span class="lmb-text" id="lmb-text"></span>
166
- </div>
167
- </div>
168
 
169
- <div id="typing-indicator" class="typing-indicator hidden">
170
- <div class="typing-dots">
171
- <span class="typing-dot"></span>
172
- <span class="typing-dot"></span>
173
- <span class="typing-dot"></span>
174
- </div>
175
- <span id="typing-text" class="typing-text"></span>
176
- </div>
177
 
178
- <div id="reply-preview" class="reply-preview hidden">
179
- <div class="reply-bar">
180
- <i class="fas fa-reply reply-icon"></i>
181
- <div class="reply-content">
182
- <span class="reply-label">Replying to <strong id="reply-user"></strong></span>
183
- <span id="reply-text" class="reply-text"></span>
184
  </div>
185
- <button id="cancel-reply" class="btn-icon btn-icon-sm">
186
- <i class="fas fa-times"></i>
187
- </button>
188
- </div>
189
- </div>
190
 
191
- <div class="compose-area">
192
- <div id="upload-preview" class="upload-preview hidden">
193
- <div class="upload-info">
194
- <i class="fas fa-file-alt"></i>
195
- <span id="upload-filename"></span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  </div>
197
- <button id="cancel-upload" class="btn-icon btn-icon-sm">
198
- <i class="fas fa-times"></i>
199
- </button>
200
- </div>
201
- <form id="compose-form" class="compose-form">
202
- <div class="compose-tools">
203
- <button type="button" id="attach-btn" class="btn-icon" aria-label="Attach">
204
- <i class="fas fa-paperclip"></i>
205
- </button>
206
- <button type="button" id="emoji-btn" class="btn-icon" aria-label="Emoji">
207
- <i class="fas fa-smile"></i>
 
 
 
 
 
 
 
208
  </button>
 
 
 
 
 
209
  </div>
210
- <input type="file" id="file-input" multiple
211
- accept="image/*,video/*,audio/*,.pdf,.doc,.docx,.txt"
212
- style="display:none">
213
- <div class="input-area">
214
- <textarea id="message-input" class="message-input"
215
- placeholder="Type a message..." rows="1"
216
- maxlength="10000"></textarea>
 
217
  </div>
218
- <button type="submit" id="send-btn" class="btn btn-send" disabled>
219
- <i class="fas fa-paper-plane"></i>
220
- </button>
221
- </form>
222
- <div id="upload-progress" class="upload-progress hidden">
223
- <div class="progress-track">
224
- <div id="progress-fill" class="progress-fill" style="width:0%"></div>
 
 
 
 
 
225
  </div>
226
- <span id="progress-text" class="progress-text">0%</span>
227
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  </div>
229
  </div>
230
 
@@ -249,7 +300,7 @@
249
  <button id="avatar-upload-btn" class="btn btn-secondary btn-sm">
250
  <i class="fas fa-camera"></i> Change Photo
251
  </button>
252
- <input type="file" id="avatar-input" accept="image/*" style="display:none">
253
  </div>
254
  <div class="form-group">
255
  <label for="settings-display-name">Display Name</label>
@@ -267,6 +318,34 @@
267
  </div>
268
  </section>
269
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  <section class="settings-section">
271
  <h3>Appearance</h3>
272
  <div class="form-group">
@@ -329,46 +408,77 @@
329
  </div>
330
  </div>
331
  </div>
332
- </section>
333
- <section class="settings-section">
334
- <h3>Behaviour</h3>
335
- <div class="settings-toggle-row">
336
- <div>
337
- <label for="toggle-autoscroll">Auto-scroll to bottom</label>
338
- <div class="toggle-hint">Automatically scroll down when new messages arrive</div>
339
- </div>
340
- <label class="toggle-switch">
341
- <input type="checkbox" id="toggle-autoscroll">
342
- <span class="toggle-slider"></span>
343
- </label>
344
- </div>
345
- <div class="settings-toggle-row">
346
- <div>
347
- <label for="toggle-scroll-btn">Show scroll-to-bottom button</label>
348
- <div class="toggle-hint">Show arrow button when not at bottom</div>
349
- </div>
350
- <label class="toggle-switch">
351
- <input type="checkbox" id="toggle-scroll-btn" checked>
352
- <span class="toggle-slider"></span>
353
- </label>
354
- </div>
355
- <div class="settings-toggle-row">
356
- <div>
357
- <label for="toggle-latest-bar">Show latest message bar</label>
358
- <div class="toggle-hint">Show new message preview when scrolled up</div>
359
- </div>
360
- <label class="toggle-switch">
361
- <input type="checkbox" id="toggle-latest-bar" checked>
362
- <span class="toggle-slider"></span>
363
- </label>
364
- </div>
365
- </section>
366
- <section class="settings-section">
367
- <h3>About</h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
  <div class="about-info">
369
  <div class="about-row">
370
  <span>Version</span>
371
- <span class="text-secondary">1.0.0</span>
372
  </div>
373
  <div class="about-row">
374
  <span>Encryption</span>
@@ -376,6 +486,10 @@
376
  <i class="fas fa-shield-alt"></i> AES-256-GCM
377
  </span>
378
  </div>
 
 
 
 
379
  <div class="about-row">
380
  <span>Storage</span>
381
  <span class="text-secondary">HF Xet Buckets</span>
@@ -409,6 +523,85 @@
409
  </div>
410
  </div>
411
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
412
  <!-- Emoji Picker -->
413
  <div id="emoji-picker" class="emoji-picker hidden">
414
  <div class="emoji-header">
 
109
  </div>
110
 
111
  <div id="chat-screen" class="screen">
112
+ <div class="app-layout">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
+ <!-- ================= SIDEBAR / CONVERSATION LIST ================= -->
115
+ <div id="sidebar-backdrop" class="sidebar-backdrop hidden"></div>
116
+ <aside id="sidebar" class="sidebar">
117
+ <div class="sidebar-header">
118
+ <div class="sidebar-brand">
119
+ <div class="auth-logo sidebar-logo"><i class="fas fa-infinity"></i></div>
120
+ <span class="sidebar-brand-name">InfinityChat</span>
121
+ </div>
122
+ <button id="sidebar-close-btn" class="btn-icon sidebar-close" aria-label="Close menu">
123
+ <i class="fas fa-times"></i>
124
  </button>
125
  </div>
126
+
127
+ <div class="sidebar-me">
128
+ <div class="me-avatar-wrap">
129
+ <img id="sb-me-avatar" class="me-avatar hidden" alt="My avatar">
130
+ <div id="sb-me-avatar-ph" class="me-avatar-ph"><i class="fas fa-user"></i></div>
131
+ </div>
132
+ <div class="me-info">
133
+ <div id="sb-me-name" class="me-name">…</div>
134
+ <div class="me-status"><span class="status-dot online"></span><span>Online</span></div>
135
  </div>
136
+ <button id="me-settings-btn" class="btn-icon btn-icon-sm" aria-label="Settings" title="Settings">
137
+ <i class="fas fa-cog"></i>
138
+ </button>
139
  </div>
 
 
 
 
 
 
 
 
 
 
140
 
141
+ <nav id="conv-list" class="conv-list" aria-label="Conversations"></nav>
 
 
 
 
 
 
 
142
 
143
+ <div class="sidebar-footer">
144
+ <button id="sidebar-logout-btn" class="btn btn-ghost btn-block">
145
+ <i class="fas fa-sign-out-alt"></i> Log out
146
+ </button>
 
 
147
  </div>
148
+ </aside>
 
 
 
 
149
 
150
+ <!-- ================= MAIN CHAT COLUMN ================= -->
151
+ <main class="chat-main">
152
+ <header class="chat-header">
153
+ <div class="header-section header-left">
154
+ <button id="sidebar-open-btn" class="btn-icon sidebar-open" aria-label="Open conversations">
155
+ <i class="fas fa-bars"></i>
156
+ </button>
157
+ <div class="conv-avatar-wrap">
158
+ <img id="conv-avatar" class="conv-avatar-img hidden" alt="Conversation avatar">
159
+ <div id="conv-avatar-ph" class="conv-avatar-ph"><i class="fas fa-globe"></i></div>
160
+ <span id="conv-presence-dot" class="presence-dot hidden"></span>
161
+ </div>
162
+ <div class="header-info">
163
+ <h2 class="header-name" id="conv-title">Global Chat</h2>
164
+ <span class="header-status" id="conv-subtitle"><span class="status-dot online"></span> Online</span>
165
+ </div>
166
+ </div>
167
+ <div class="header-section header-right">
168
+ <button id="online-btn" class="btn-icon" aria-label="Online users" title="Online users">
169
+ <i class="fas fa-users"></i>
170
+ <span id="online-badge" class="badge hidden">0</span>
171
+ </button>
172
+ <button id="settings-btn" class="btn-icon" aria-label="Settings" title="Settings">
173
+ <i class="fas fa-cog"></i>
174
+ </button>
175
+ <button id="logout-btn" class="btn-icon" aria-label="Logout" title="Log out">
176
+ <i class="fas fa-sign-out-alt"></i>
177
+ </button>
178
+ </div>
179
+ </header>
180
+
181
+ <div id="connection-status" class="connection-status">
182
+ <i class="fas fa-wifi"></i>
183
+ <span id="connection-text">Connecting...</span>
184
  </div>
185
+
186
+ <div id="messages-container" class="messages-container">
187
+ <div id="messages-scroll" class="messages-scroll">
188
+ <div id="load-more" class="load-more">
189
+ <button id="load-older-btn" class="btn btn-ghost hidden">
190
+ <i class="fas fa-chevron-up"></i> Load older messages
191
+ </button>
192
+ </div>
193
+ <div id="messages-list" class="messages-list">
194
+ <div id="empty-state" class="empty-state">
195
+ <div id="empty-icon" class="empty-icon"><i class="fas fa-comments"></i></div>
196
+ <h3 id="empty-title">No messages yet</h3>
197
+ <p id="empty-sub">Start the conversation below</p>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ <button id="scroll-bottom-btn" class="scroll-bottom-btn hidden">
202
+ <i class="fas fa-chevron-down"></i>
203
  </button>
204
+ <div id="latest-message-bar" class="latest-message-bar hidden">
205
+ <div class="lmb-avatar" id="lmb-avatar"></div>
206
+ <span class="lmb-name" id="lmb-name"></span>
207
+ <span class="lmb-text" id="lmb-text"></span>
208
+ </div>
209
  </div>
210
+
211
+ <div id="typing-indicator" class="typing-indicator hidden">
212
+ <div class="typing-dots">
213
+ <span class="typing-dot"></span>
214
+ <span class="typing-dot"></span>
215
+ <span class="typing-dot"></span>
216
+ </div>
217
+ <span id="typing-text" class="typing-text"></span>
218
  </div>
219
+
220
+ <div id="reply-preview" class="reply-preview hidden">
221
+ <div class="reply-bar">
222
+ <i class="fas fa-reply reply-icon"></i>
223
+ <div class="reply-content">
224
+ <span class="reply-label">Replying to <strong id="reply-user"></strong></span>
225
+ <span id="reply-text" class="reply-text"></span>
226
+ </div>
227
+ <button id="cancel-reply" class="btn-icon btn-icon-sm">
228
+ <i class="fas fa-times"></i>
229
+ </button>
230
+ </div>
231
  </div>
232
+
233
+ <div class="compose-area">
234
+ <div id="upload-preview" class="upload-preview hidden">
235
+ <div class="upload-info">
236
+ <i id="upload-icon" class="fas fa-file-alt"></i>
237
+ <div class="upload-text">
238
+ <span id="upload-filename"></span>
239
+ <span id="upload-size" class="upload-size"></span>
240
+ </div>
241
+ </div>
242
+ <button id="cancel-upload" class="btn-icon btn-icon-sm">
243
+ <i class="fas fa-times"></i>
244
+ </button>
245
+ </div>
246
+ <form id="compose-form" class="compose-form">
247
+ <div class="compose-tools">
248
+ <button type="button" id="attach-btn" class="btn-icon" aria-label="Attach file" title="Attach file">
249
+ <i class="fas fa-paperclip"></i>
250
+ </button>
251
+ <button type="button" id="emoji-btn" class="btn-icon" aria-label="Emoji" title="Emoji">
252
+ <i class="fas fa-smile"></i>
253
+ </button>
254
+ </div>
255
+ <input type="file" id="file-input"
256
+ accept="image/*,video/*,audio/*,.pdf,.doc,.docx,.txt,.zip"
257
+ style="display:none">
258
+ <div class="input-area">
259
+ <textarea id="message-input" class="message-input"
260
+ placeholder="Type a message... (Paste or drop images too)" rows="1"
261
+ maxlength="10000"></textarea>
262
+ </div>
263
+ <button type="submit" id="send-btn" class="btn btn-send" disabled>
264
+ <i class="fas fa-paper-plane"></i>
265
+ </button>
266
+ </form>
267
+ <div id="upload-progress" class="upload-progress hidden">
268
+ <div class="progress-track">
269
+ <div id="progress-fill" class="progress-fill" style="width:0%"></div>
270
+ </div>
271
+ <span id="progress-text" class="progress-text">0%</span>
272
+ </div>
273
+ </div>
274
+ </main>
275
+ </div>
276
+ <div id="drop-overlay" class="drop-overlay hidden">
277
+ <i class="fas fa-cloud-upload-alt"></i>
278
+ <span>Drop files to attach</span>
279
  </div>
280
  </div>
281
 
 
300
  <button id="avatar-upload-btn" class="btn btn-secondary btn-sm">
301
  <i class="fas fa-camera"></i> Change Photo
302
  </button>
303
+ <input type="file" id="avatar-input" accept="image/png,image/jpeg,image/gif,image/webp" style="display:none">
304
  </div>
305
  <div class="form-group">
306
  <label for="settings-display-name">Display Name</label>
 
318
  </div>
319
  </section>
320
 
321
+ <section class="settings-section">
322
+ <h3>Account</h3>
323
+ <div class="form-group">
324
+ <label for="pw-current">Current password</label>
325
+ <div class="input-wrapper">
326
+ <input type="password" id="pw-current" class="form-input"
327
+ autocomplete="current-password" placeholder="••••••••">
328
+ <button type="button" class="input-toggle" data-toggle="pw-current">
329
+ <i class="fas fa-eye"></i>
330
+ </button>
331
+ </div>
332
+ </div>
333
+ <div class="form-group">
334
+ <label for="pw-new">New password</label>
335
+ <div class="input-wrapper">
336
+ <input type="password" id="pw-new" class="form-input" minlength="6"
337
+ autocomplete="new-password" placeholder="At least 6 characters">
338
+ <button type="button" class="input-toggle" data-toggle="pw-new">
339
+ <i class="fas fa-eye"></i>
340
+ </button>
341
+ </div>
342
+ </div>
343
+ <button id="pw-change-btn" class="btn btn-secondary btn-sm">
344
+ <i class="fas fa-key"></i> Change Password
345
+ </button>
346
+ <span id="pw-msg" class="form-hint"></span>
347
+ </section>
348
+
349
  <section class="settings-section">
350
  <h3>Appearance</h3>
351
  <div class="form-group">
 
408
  </div>
409
  </div>
410
  </div>
411
+ </section>
412
+
413
+ <section class="settings-section">
414
+ <h3>Behaviour</h3>
415
+ <div class="settings-toggle-row">
416
+ <div>
417
+ <label for="toggle-autoscroll">Auto-scroll to bottom</label>
418
+ <div class="toggle-hint">Automatically scroll down when new messages arrive</div>
419
+ </div>
420
+ <label class="toggle-switch">
421
+ <input type="checkbox" id="toggle-autoscroll">
422
+ <span class="toggle-slider"></span>
423
+ </label>
424
+ </div>
425
+ <div class="settings-toggle-row">
426
+ <div>
427
+ <label for="toggle-scroll-btn">Show scroll-to-bottom button</label>
428
+ <div class="toggle-hint">Show arrow button when not at bottom</div>
429
+ </div>
430
+ <label class="toggle-switch">
431
+ <input type="checkbox" id="toggle-scroll-btn" checked>
432
+ <span class="toggle-slider"></span>
433
+ </label>
434
+ </div>
435
+ <div class="settings-toggle-row">
436
+ <div>
437
+ <label for="toggle-latest-bar">Show latest message bar</label>
438
+ <div class="toggle-hint">Show new message preview when scrolled up</div>
439
+ </div>
440
+ <label class="toggle-switch">
441
+ <input type="checkbox" id="toggle-latest-bar" checked>
442
+ <span class="toggle-slider"></span>
443
+ </label>
444
+ </div>
445
+ <div class="settings-toggle-row">
446
+ <div>
447
+ <label for="toggle-sound">Notification sound</label>
448
+ <div class="toggle-hint">Play a soft sound for new messages</div>
449
+ </div>
450
+ <label class="toggle-switch">
451
+ <input type="checkbox" id="toggle-sound" checked>
452
+ <span class="toggle-slider"></span>
453
+ </label>
454
+ </div>
455
+ <div class="settings-toggle-row">
456
+ <div>
457
+ <label for="toggle-enter-send">Enter to send</label>
458
+ <div class="toggle-hint">Press Enter to send, Shift+Enter for a new line</div>
459
+ </div>
460
+ <label class="toggle-switch">
461
+ <input type="checkbox" id="toggle-enter-send" checked>
462
+ <span class="toggle-slider"></span>
463
+ </label>
464
+ </div>
465
+ <div class="settings-toggle-row">
466
+ <div>
467
+ <label>Desktop notifications</label>
468
+ <div class="toggle-hint">Browser pop-ups for new messages</div>
469
+ </div>
470
+ <button id="notify-perm-btn" class="btn btn-secondary btn-sm">
471
+ <i class="fas fa-bell"></i> Enable
472
+ </button>
473
+ </div>
474
+ </section>
475
+
476
+ <section class="settings-section">
477
+ <h3>About</h3>
478
  <div class="about-info">
479
  <div class="about-row">
480
  <span>Version</span>
481
+ <span class="text-secondary" id="about-version">2.0.0</span>
482
  </div>
483
  <div class="about-row">
484
  <span>Encryption</span>
 
486
  <i class="fas fa-shield-alt"></i> AES-256-GCM
487
  </span>
488
  </div>
489
+ <div class="about-row">
490
+ <span>Private chats</span>
491
+ <span class="text-secondary">Up to 3 per person</span>
492
+ </div>
493
  <div class="about-row">
494
  <span>Storage</span>
495
  <span class="text-secondary">HF Xet Buckets</span>
 
523
  </div>
524
  </div>
525
 
526
+ <!-- Start private chat modal -->
527
+ <div id="conv-modal" class="modal hidden">
528
+ <div class="modal-backdrop" data-close="conv-modal"></div>
529
+ <div class="modal-container modal-sm">
530
+ <div class="modal-header">
531
+ <h2><i class="fas fa-user-lock"></i> Private Chats</h2>
532
+ <button class="btn-icon" data-close="conv-modal">
533
+ <i class="fas fa-times"></i>
534
+ </button>
535
+ </div>
536
+ <div class="modal-body">
537
+ <p class="conv-modal-desc" id="conv-modal-desc">Chat privately with <strong>…</strong></p>
538
+ <div id="conv-modal-list" class="conv-modal-list"></div>
539
+ </div>
540
+ <div class="modal-footer">
541
+ <button class="btn btn-ghost" data-close="conv-modal">Cancel</button>
542
+ <button id="new-chat-btn" class="btn btn-primary">
543
+ <i class="fas fa-plus"></i> Start New Chat
544
+ </button>
545
+ </div>
546
+ </div>
547
+ </div>
548
+
549
+ <!-- Read receipts modal -->
550
+ <div id="receipts-modal" class="modal hidden">
551
+ <div class="modal-backdrop" data-close="receipts-modal"></div>
552
+ <div class="modal-container modal-sm">
553
+ <div class="modal-header">
554
+ <h2><i class="fas fa-check-double"></i> Read Receipts</h2>
555
+ <button class="btn-icon" data-close="receipts-modal">
556
+ <i class="fas fa-times"></i>
557
+ </button>
558
+ </div>
559
+ <div class="modal-body">
560
+ <p id="receipts-summary" class="receipts-summary"></p>
561
+ <div id="receipts-list" class="receipts-list"></div>
562
+ </div>
563
+ </div>
564
+ </div>
565
+
566
+ <!-- Confirmation dialog (replaces blocking confirm()) -->
567
+ <div id="confirm-modal" class="modal hidden">
568
+ <div class="modal-backdrop" data-close="confirm-modal"></div>
569
+ <div class="modal-container modal-sm">
570
+ <div class="modal-header">
571
+ <h2 id="confirm-title"><i class="fas fa-question-circle"></i> Confirm</h2>
572
+ <button class="btn-icon" data-close="confirm-modal">
573
+ <i class="fas fa-times"></i>
574
+ </button>
575
+ </div>
576
+ <div class="modal-body">
577
+ <p id="confirm-message" class="confirm-message"></p>
578
+ </div>
579
+ <div class="modal-footer">
580
+ <button class="btn btn-ghost" id="confirm-cancel-btn">Cancel</button>
581
+ <button class="btn btn-primary" id="confirm-ok-btn">OK</button>
582
+ </div>
583
+ </div>
584
+ </div>
585
+
586
+ <!-- Image lightbox -->
587
+ <div id="lightbox-modal" class="modal hidden">
588
+ <div class="modal-backdrop" data-close="lightbox-modal"></div>
589
+ <div class="lightbox-container">
590
+ <div class="lightbox-header">
591
+ <span id="lightbox-name" class="lightbox-name"></span>
592
+ <div>
593
+ <a id="lightbox-download" class="btn-icon lightbox-btn" target="_blank" rel="noopener" title="Open original">
594
+ <i class="fas fa-external-link-alt"></i>
595
+ </a>
596
+ <button class="btn-icon lightbox-btn" data-close="lightbox-modal" aria-label="Close">
597
+ <i class="fas fa-times"></i>
598
+ </button>
599
+ </div>
600
+ </div>
601
+ <img id="lightbox-img" class="lightbox-img" alt="Preview">
602
+ </div>
603
+ </div>
604
+
605
  <!-- Emoji Picker -->
606
  <div id="emoji-picker" class="emoji-picker hidden">
607
  <div class="emoji-header">