samirerty commited on
Commit
50ce04c
·
verified ·
1 Parent(s): 0e2782d

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +558 -954
index.html CHANGED
@@ -3,1118 +3,722 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>پنل ادمین - چت روم</title>
7
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
  <style>
9
- @import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100;200;300;400;500;600;700;800;900&display=swap');
10
-
11
- :root {
12
- --primary: #6366f1;
13
- --primary-dark: #4f46e5;
14
- --primary-light: #818cf8;
15
- --secondary: #ec4899;
16
- --success: #10b981;
17
- --warning: #f59e0b;
18
- --danger: #ef4444;
19
- --info: #06b6d4;
20
- --dark: #0f172a;
21
- --darker: #020617;
22
- --light: #f8fafc;
23
- --gray: #64748b;
24
- --gray-light: #94a3b8;
25
- --surface: #1e293b;
26
- --surface-light: #334155;
27
- --gradient-1: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #ec4899 100%);
28
- --gradient-2: linear-gradient(135deg, #06b6d4 0%, #6366f1 100%);
29
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
30
- --shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
31
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
32
- --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
33
- --radius-sm: 0.375rem;
34
- --radius: 0.5rem;
35
- --radius-lg: 0.75rem;
36
- --radius-xl: 1rem;
37
- --radius-2xl: 1.5rem;
38
- }
39
-
40
  * {
41
  margin: 0;
42
  padding: 0;
43
  box-sizing: border-box;
44
  }
45
-
46
- html {
47
- scroll-behavior: smooth;
48
- }
49
-
 
 
 
 
 
 
 
 
 
 
50
  body {
51
- font-family: 'Vazirmatn', system-ui, -apple-system, sans-serif;
52
- background: var(--darker);
53
- color: var(--light);
 
54
  min-height: 100vh;
55
- line-height: 1.6;
 
56
  }
57
-
58
- /* Dashboard Container */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  .dashboard-container {
60
- display: grid;
61
- grid-template-columns: 280px 1fr;
62
  min-height: 100vh;
 
63
  }
64
-
65
- @media (max-width: 1024px) {
66
- .dashboard-container {
67
- grid-template-columns: 1fr;
68
- }
69
- }
70
-
71
- /* Sidebar */
72
  .sidebar {
73
- background: var(--surface);
74
- border-left: 1px solid var(--surface-light);
75
- padding: 1.5rem;
76
- position: sticky;
 
 
 
 
77
  top: 0;
78
  height: 100vh;
79
  overflow-y: auto;
80
- display: flex;
81
- flex-direction: column;
82
- gap: 1.5rem;
83
- }
84
-
85
- @media (max-width: 1024px) {
86
- .sidebar {
87
- position: fixed;
88
- right: -100%;
89
- width: 280px;
90
- z-index: 1000;
91
- transition: right 0.3s ease;
92
- }
93
-
94
- .sidebar.open {
95
- right: 0;
96
- }
97
- }
98
-
99
- .sidebar-overlay {
100
- display: none;
101
- position: fixed;
102
- inset: 0;
103
- background: rgba(0,0,0,0.5);
104
- z-index: 999;
105
- }
106
-
107
- .sidebar-overlay.active {
108
- display: block;
109
  }
110
-
111
- /* User Info */
112
  .user-info {
113
  text-align: center;
114
- padding: 1.5rem;
115
- background: var(--gradient-1);
116
- border-radius: var(--radius-xl);
117
- position: relative;
118
- overflow: hidden;
119
- }
120
-
121
- .user-info::before {
122
- content: '';
123
- position: absolute;
124
- inset: 0;
125
- background: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.1' fill-rule='evenodd'/%3E%3C/svg%3E");
126
- opacity: 0.3;
127
  }
128
-
129
- .avatar {
130
- width: 80px;
131
- height: 80px;
 
 
132
  border-radius: 50%;
133
- background: rgba(255,255,255,0.2);
134
- backdrop-filter: blur(10px);
135
  display: flex;
136
  align-items: center;
137
  justify-content: center;
138
- margin: 0 auto 1rem;
139
- font-size: 2rem;
140
- border: 3px solid rgba(255,255,255,0.3);
141
  }
142
-
 
 
 
 
 
 
 
 
 
 
 
143
  .user-info h3 {
144
  font-size: 1.25rem;
145
- font-weight: 700;
146
  margin-bottom: 0.25rem;
147
  }
148
-
149
- .user-info p {
150
- font-size: 0.875rem;
151
- opacity: 0.9;
152
  margin-bottom: 0.75rem;
153
  }
154
-
155
  .status {
156
  display: inline-flex;
157
  align-items: center;
158
  gap: 0.5rem;
159
  padding: 0.5rem 1rem;
160
- background: rgba(255,255,255,0.2);
161
- backdrop-filter: blur(10px);
162
- border-radius: var(--radius-lg);
163
- font-size: 0.875rem;
164
  font-weight: 500;
165
- }
166
-
167
- /* Sidebar Navigation */
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  .sidebar-nav ul {
169
  list-style: none;
170
- display: flex;
171
- flex-direction: column;
172
- gap: 0.5rem;
173
  }
174
-
 
 
 
 
175
  .sidebar-nav a {
176
  display: flex;
177
  align-items: center;
178
  gap: 0.75rem;
179
  padding: 0.875rem 1rem;
180
- color: var(--gray-light);
181
  text-decoration: none;
182
- border-radius: var(--radius-lg);
183
- transition: all 0.2s ease;
184
- font-weight: 500;
185
  }
186
-
187
- .sidebar-nav a:hover,
188
- .sidebar-nav li.active a {
189
- background: var(--primary);
190
- color: white;
191
  }
192
-
193
  .sidebar-nav li.active a {
194
- box-shadow: 0 4px 14px 0 rgba(99, 102, 241, 0.4);
195
- }
196
-
197
- /* Mobile Menu Toggle */
198
- .menu-toggle {
199
- display: none;
200
- position: fixed;
201
- top: 1rem;
202
- right: 1rem;
203
- z-index: 1001;
204
- width: 48px;
205
- height: 48px;
206
- border-radius: var(--radius-lg);
207
- background: var(--surface);
208
- border: 1px solid var(--surface-light);
209
- color: var(--light);
210
- cursor: pointer;
211
- align-items: center;
212
- justify-content: center;
213
- font-size: 1.25rem;
214
- }
215
-
216
- @media (max-width: 1024px) {
217
- .menu-toggle {
218
- display: flex;
219
- }
220
  }
221
-
222
- /* Main Content */
223
  .main-content {
224
- padding: 1.5rem;
225
- overflow-x: hidden;
 
226
  }
227
-
228
- @media (max-width: 1024px) {
229
- .main-content {
230
- padding-top: 5rem;
231
- }
232
- }
233
-
234
- /* Header */
235
  .header {
236
  margin-bottom: 2rem;
237
  }
238
-
239
  .header h1 {
240
  font-size: 1.75rem;
241
- font-weight: 800;
242
- margin-bottom: 1.5rem;
243
  display: flex;
244
  align-items: center;
245
  gap: 0.75rem;
246
  }
247
-
248
  .header h1 i {
249
- background: var(--gradient-1);
250
  -webkit-background-clip: text;
251
  -webkit-text-fill-color: transparent;
 
252
  }
253
-
254
- /* Header Stats */
255
- .header-stats {
256
- display: grid;
257
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
258
- gap: 1rem;
259
  }
260
-
261
- .stat-card {
262
- background: var(--surface);
263
- border: 1px solid var(--surface-light);
264
- border-radius: var(--radius-xl);
265
- padding: 1.25rem;
266
  display: flex;
267
- align-items: center;
268
- gap: 1rem;
269
- transition: all 0.3s ease;
270
  }
271
-
272
- .stat-card:hover {
273
- transform: translateY(-4px);
274
- box-shadow: var(--shadow-lg);
275
- border-color: var(--primary-light);
 
 
 
 
 
 
276
  }
277
-
278
- .stat-card > i {
279
- width: 56px;
280
- height: 56px;
281
- border-radius: var(--radius-lg);
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  display: flex;
283
  align-items: center;
284
  justify-content: center;
285
- font-size: 1.5rem;
286
- }
287
-
288
- .stat-card:nth-child(1) > i {
289
- background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
290
- }
291
-
292
- .stat-card:nth-child(2) > i {
293
- background: linear-gradient(135deg, #ef4444 0%, #f97316 100%);
294
- }
295
-
296
- .stat-card:nth-child(3) > i {
297
- background: linear-gradient(135deg, #06b6d4 0%, #6366f1 100%);
298
- }
299
-
300
- .stat-card:nth-child(4) > i {
301
- background: linear-gradient(135deg, #10b981 0%, #06b6d4 100%);
302
- }
303
-
304
- .stat-info h3 {
305
- font-size: 1.75rem;
306
- font-weight: 800;
307
- line-height: 1;
308
- }
309
-
310
- .stat-info p {
311
- color: var(--gray-light);
312
- font-size: 0.875rem;
313
- margin-top: 0.25rem;
314
  }
315
-
316
- /* Tab Content */
317
- .tab-content {
318
- display: none;
319
- animation: fadeIn 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  }
321
-
322
- .tab-content.active {
323
- display: block;
 
 
 
324
  }
325
-
326
- @keyframes fadeIn {
327
- from { opacity: 0; transform: translateY(10px); }
328
- to { opacity: 1; transform: translateY(0); }
 
329
  }
330
-
331
- .tab-content h2 {
332
- font-size: 1.5rem;
333
- font-weight: 700;
334
- margin-bottom: 1.5rem;
335
  display: flex;
336
  align-items: center;
337
  gap: 0.75rem;
338
- }
339
-
340
- .tab-content h2 i {
341
- color: var(--primary-light);
342
- }
343
-
344
- /* Table Container */
345
- .table-container {
346
- background: var(--surface);
347
- border: 1px solid var(--surface-light);
348
- border-radius: var(--radius-xl);
349
- overflow: hidden;
350
- }
351
-
352
- .data-table {
353
- width: 100%;
354
- border-collapse: collapse;
355
- font-size: 0.875rem;
356
- }
357
-
358
- .data-table thead {
359
- background: var(--surface-light);
360
- }
361
-
362
- .data-table th {
363
- padding: 1rem;
364
- text-align: right;
365
- font-weight: 600;
366
- color: var(--gray-light);
367
- text-transform: uppercase;
368
- font-size: 0.75rem;
369
- letter-spacing: 0.05em;
370
- }
371
-
372
- .data-table td {
373
- padding: 1rem;
374
- border-top: 1px solid var(--surface-light);
375
- }
376
-
377
- .data-table tbody tr {
378
- transition: background 0.2s ease;
379
- }
380
-
381
- .data-table tbody tr:hover {
382
- background: rgba(99, 102, 241, 0.05);
383
- }
384
-
385
- @media (max-width: 768px) {
386
- .data-table {
387
- display: block;
388
- overflow-x: auto;
389
  }
390
  }
391
-
392
- /* Badges */
393
- .badge {
394
- display: inline-flex;
395
- align-items: center;
396
- padding: 0.375rem 0.875rem;
397
- border-radius: var(--radius-lg);
398
- font-size: 0.75rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  font-weight: 600;
 
 
 
 
400
  }
401
-
402
- .badge-admin {
403
- background: var(--gradient-1);
404
- color: white;
405
- }
406
-
407
- .badge-user {
408
- background: var(--surface-light);
409
- color: var(--gray-light);
410
- }
411
-
412
- .badge-success {
413
- background: rgba(16, 185, 129, 0.15);
414
- color: var(--success);
415
- }
416
-
417
- .badge-warning {
418
- background: rgba(245, 158, 11, 0.15);
419
- color: var(--warning);
420
- }
421
-
422
- .badge-danger {
423
- background: rgba(239, 68, 68, 0.15);
424
- color: var(--danger);
425
  }
426
-
427
- .badge-secondary {
428
- background: var(--surface-light);
429
- color: var(--gray-light);
430
  }
431
-
432
- /* Actions */
433
- .actions {
434
  display: flex;
 
435
  gap: 0.5rem;
 
 
 
 
436
  }
437
-
438
- .btn-icon {
439
- width: 36px;
440
- height: 36px;
441
- border-radius: var(--radius);
442
- border: none;
443
- background: var(--surface-light);
444
- color: var(--light);
445
- cursor: pointer;
446
- display: flex;
447
- align-items: center;
448
- justify-content: center;
449
- transition: all 0.2s ease;
450
  }
451
-
452
- .btn-icon:hover {
453
- transform: scale(1.05);
 
 
 
 
 
 
 
 
454
  }
455
-
456
- .btn-icon.btn-success {
457
- background: rgba(16, 185, 129, 0.15);
458
- color: var(--success);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  }
460
-
461
- .btn-icon.btn-warning {
462
- background: rgba(245, 158, 11, 0.15);
463
- color: var(--warning);
 
 
464
  }
465
-
466
- .btn-icon.btn-danger {
467
- background: rgba(239, 68, 68, 0.15);
468
- color: var(--danger);
 
 
469
  }
470
-
471
- /* Buttons */
472
  .btn {
473
  display: inline-flex;
474
  align-items: center;
475
  gap: 0.5rem;
476
- padding: 0.625rem 1.25rem;
477
- border-radius: var(--radius-lg);
478
- border: none;
479
- font-size: 0.875rem;
480
  font-weight: 500;
 
481
  cursor: pointer;
482
- transition: all 0.2s ease;
 
 
483
  }
484
-
485
  .btn-primary {
486
- background: var(--gradient-1);
487
  color: white;
 
488
  }
489
-
490
  .btn-primary:hover {
491
  transform: translateY(-2px);
492
- box-shadow: 0 4px 14px 0 rgba(99, 102, 241, 0.4);
493
  }
494
-
495
- .btn-secondary {
496
- background: var(--surface-light);
497
- color: var(--light);
498
- }
499
-
500
- .btn-success {
501
- background: rgba(16, 185, 129, 0.15);
502
- color: var(--success);
503
- }
504
-
505
- .btn-warning {
506
- background: rgba(245, 158, 11, 0.15);
507
- color: var(--warning);
508
- }
509
-
510
- .btn-danger {
511
- background: rgba(239, 68, 68, 0.15);
512
- color: var(--danger);
513
  }
514
-
515
- /* Rooms List */
516
- .rooms-list {
517
- display: flex;
518
- flex-direction: column;
519
- gap: 1rem;
520
- }
521
-
522
- .room-card-admin {
523
- background: var(--surface);
524
- border: 1px solid var(--surface-light);
525
- border-radius: var(--radius-xl);
526
- padding: 1.25rem;
527
- display: flex;
528
- justify-content: space-between;
529
- align-items: center;
530
- gap: 1rem;
531
- flex-wrap: wrap;
532
- }
533
-
534
- .room-info h4 {
535
- font-size: 1.125rem;
 
536
  font-weight: 600;
537
- margin-bottom: 0.5rem;
538
- }
539
-
540
- .room-info p {
541
- color: var(--gray-light);
542
- font-size: 0.875rem;
543
- margin-bottom: 0.75rem;
544
- }
545
-
546
- .room-meta {
547
- display: flex;
548
- gap: 1rem;
549
- flex-wrap: wrap;
550
- font-size: 0.75rem;
551
- color: var(--gray);
552
- }
553
-
554
- .room-meta span {
555
  display: flex;
556
  align-items: center;
557
- gap: 0.375rem;
558
- }
559
-
560
- .room-actions {
561
- display: flex;
562
  gap: 0.5rem;
563
- flex-wrap: wrap;
564
- }
565
-
566
- /* Announcements */
567
- .announcements-admin {
568
- display: grid;
569
- gap: 2rem;
570
- }
571
-
572
- .form-section {
573
- background: var(--surface);
574
- border: 1px solid var(--surface-light);
575
- border-radius: var(--radius-xl);
576
- padding: 1.5rem;
577
- }
578
-
579
- .form-section h3 {
580
- font-size: 1.125rem;
581
- font-weight: 600;
582
  margin-bottom: 1.25rem;
583
  }
584
-
585
- .form-group {
586
- margin-bottom: 1.25rem;
587
- }
588
-
589
- .form-group label {
590
- display: block;
591
- margin-bottom: 0.5rem;
592
- font-size: 0.875rem;
593
- font-weight: 500;
594
- color: var(--gray-light);
595
- }
596
-
597
- .form-group input,
598
- .form-group textarea,
599
- .form-group select {
600
- width: 100%;
601
- padding: 0.875rem 1rem;
602
- background: var(--darker);
603
- border: 1px solid var(--surface-light);
604
- border-radius: var(--radius-lg);
605
- color: var(--light);
606
- font-size: 0.875rem;
607
- transition: all 0.2s ease;
608
- }
609
-
610
- .form-group input:focus,
611
- .form-group textarea:focus,
612
- .form-group select:focus {
613
- outline: none;
614
- border-color: var(--primary);
615
- }
616
-
617
- .form-group input[type="checkbox"] {
618
- width: auto;
619
- margin-left: 0.5rem;
620
- }
621
-
622
- .announcements-list {
623
- display: flex;
624
- flex-direction: column;
625
  gap: 1rem;
626
  }
627
-
628
- .announcements-list h3 {
629
- font-size: 1.125rem;
630
- font-weight: 600;
631
- margin-bottom: 0.5rem;
632
- }
633
-
634
- .announcement-card-admin {
635
- background: var(--surface);
636
- border: 1px solid var(--surface-light);
637
- border-radius: var(--radius-xl);
638
- padding: 1.25rem;
639
- }
640
-
641
- .announcement-header {
642
  display: flex;
643
- justify-content: space-between;
644
  align-items: center;
645
- margin-bottom: 0.75rem;
646
- flex-wrap: wrap;
647
- gap: 0.5rem;
648
- }
649
-
650
- .announcement-header h4 {
651
- font-size: 1rem;
652
- font-weight: 600;
653
- }
654
-
655
- .announcement-date {
656
- font-size: 0.75rem;
657
- color: var(--gray);
658
  }
659
-
660
- .announcement-content {
661
- color: var(--gray-light);
662
- font-size: 0.875rem;
663
- margin-bottom: 1rem;
664
- line-height: 1.7;
665
  }
666
-
667
- .announcement-actions {
 
 
668
  display: flex;
669
- gap: 0.5rem;
670
- flex-wrap: wrap;
671
- }
672
-
673
- /* Modal */
674
- .modal {
675
- display: none;
676
- position: fixed;
677
- inset: 0;
678
- z-index: 2000;
679
  align-items: center;
680
  justify-content: center;
681
- padding: 1rem;
682
- }
683
-
684
- .modal.active {
685
- display: flex;
686
- }
687
-
688
- .modal-overlay {
689
- position: absolute;
690
- inset: 0;
691
- background: rgba(0,0,0,0.8);
692
- backdrop-filter: blur(4px);
693
- }
694
-
695
- .modal-content {
696
- position: relative;
697
- background: var(--surface);
698
- border: 1px solid var(--surface-light);
699
- border-radius: var(--radius-2xl);
700
- width: 100%;
701
- max-width: 480px;
702
- max-height: 90vh;
703
- overflow: hidden;
704
- animation: modalSlide 0.3s ease;
705
- }
706
-
707
- @keyframes modalSlide {
708
- from { opacity: 0; transform: scale(0.95) translateY(20px); }
709
- to { opacity: 1; transform: scale(1) translateY(0); }
710
  }
711
-
712
- .modal-header {
713
- display: flex;
714
- justify-content: space-between;
715
- align-items: center;
716
- padding: 1.25rem 1.5rem;
717
- border-bottom: 1px solid var(--surface-light);
718
  }
719
-
720
- .modal-header h2 {
721
- font-size: 1.125rem;
722
  font-weight: 600;
723
- display: flex;
724
- align-items: center;
725
- gap: 0.5rem;
726
- }
727
-
728
- .close-btn {
729
- width: 32px;
730
- height: 32px;
731
- border-radius: var(--radius);
732
- border: none;
733
- background: var(--surface-light);
734
- color: var(--gray-light);
735
- cursor: pointer;
736
- display: flex;
737
- align-items: center;
738
- justify-content: center;
739
- transition: all 0.2s ease;
740
  }
741
-
742
- .close-btn:hover {
743
- background: var(--danger);
744
- color: white;
745
- }
746
-
747
- .modal-body {
748
- padding: 1.5rem;
749
- overflow-y: auto;
750
- max-height: 60vh;
751
- }
752
-
753
- .form-actions {
754
- display: flex;
755
- gap: 0.75rem;
756
- justify-content: flex-end;
757
- margin-top: 1.5rem;
758
- }
759
-
760
- /* Empty State */
761
- .empty {
762
- text-align: center;
763
- padding: 3rem;
764
- color: var(--gray);
765
- }
766
-
767
- /* Message Preview */
768
- .message-preview {
769
- max-width: 300px;
770
- color: var(--gray-light);
771
- }
772
-
773
- /* Built with anycoder */
774
- .anycoder-badge {
775
- position: fixed;
776
- bottom: 1rem;
777
- left: 1rem;
778
- z-index: 100;
779
- padding: 0.5rem 1rem;
780
- background: var(--surface);
781
- border: 1px solid var(--surface-light);
782
- border-radius: var(--radius-lg);
783
- font-size: 0.75rem;
784
- color: var(--gray-light);
785
- text-decoration: none;
786
- transition: all 0.2s ease;
787
- }
788
-
789
- .anycoder-badge:hover {
790
- border-color: var(--primary);
791
- color: var(--primary-light);
792
- }
793
-
794
- /* Toast Notification */
795
- .toast {
796
- position: fixed;
797
- top: 1.5rem;
798
- left: 50%;
799
- transform: translateX(-50%) translateY(-100px);
800
- background: var(--surface);
801
- border: 1px solid var(--surface-light);
802
- border-radius: var(--radius-xl);
803
- padding: 1rem 1.5rem;
804
- display: flex;
805
- align-items: center;
806
- gap: 0.75rem;
807
- z-index: 3000;
808
- opacity: 0;
809
- transition: all 0.3s ease;
810
- }
811
-
812
- .toast.show {
813
- transform: translateX(-50%) translateY(0);
814
- opacity: 1;
815
- }
816
-
817
- .toast.success {
818
- border-color: var(--success);
819
- }
820
-
821
- .toast.success i {
822
- color: var(--success);
823
- }
824
-
825
- .toast.error {
826
- border-color: var(--danger);
827
- }
828
-
829
- .toast.error i {
830
- color: var(--danger);
831
- }
832
-
833
- /* Scrollbar */
834
- ::-webkit-scrollbar {
835
- width: 8px;
836
- height: 8px;
837
- }
838
-
839
- ::-webkit-scrollbar-track {
840
- background: var(--darker);
841
  }
842
-
843
- ::-webkit-scrollbar-thumb {
844
- background: var(--surface-light);
845
- border-radius: 4px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  }
847
-
848
- ::-webkit-scrollbar-thumb:hover {
849
- background: var(--gray);
 
 
 
 
 
 
 
850
  }
851
  </style>
852
  </head>
853
  <body>
854
- <button class="menu-toggle" onclick="toggleSidebar()">
855
- <i class="fas fa-bars"></i>
856
- </button>
857
-
858
- <div class="sidebar-overlay" onclick="toggleSidebar()"></div>
859
-
860
  <div class="dashboard-container">
861
- <aside class="sidebar" id="sidebar">
862
  <div class="user-info">
863
  <div class="avatar">
864
- <i class="fas fa-crown"></i>
865
  </div>
866
- <h3>مدیر سیستم</h3>
867
- <p>@admin</p>
868
- <span class="status"><i class="fas fa-shield-alt"></i> ادمین</span>
 
 
 
869
  </div>
870
 
871
  <nav class="sidebar-nav">
872
  <ul>
873
- <li class="active"><a href="#" onclick="showTab('tab-users')"><i class="fas fa-users"></i> مدیریت کاربران</a></li>
874
- <li><a href="#" onclick="showTab('tab-messages')"><i class="fas fa-comments"></i> مدیریت پیام‌ها</a></li>
875
- <li><a href="#" onclick="showTab('tab-rooms')"><i class="fas fa-door-open"></i> مدیریت اتاق‌ها</a></li>
876
- <li><a href="#" onclick="showTab('tab-announcements')"><i class="fas fa-bullhorn"></i> مدیریت اعلان‌ها</a></li>
877
- <li><a href="#" onclick="logout()"><i class="fas fa-sign-out-alt"></i> خروج</a></li>
878
  </ul>
879
  </nav>
880
  </aside>
881
 
882
  <main class="main-content">
883
  <header class="header">
884
- <h1><i class="fas fa-shield-alt"></i> پنل مدیریت ادمین</h1>
885
- <div class="header-stats">
886
- <div class="stat-card">
887
- <i class="fas fa-users"></i>
888
- <div class="stat-info">
889
- <h3 id="stat-users">0</h3>
890
- <p>کاربران</p>
891
- </div>
892
- </div>
893
- <div class="stat-card">
894
- <i class="fas fa-lock"></i>
895
- <div class="stat-info">
896
- <h3 id="stat-locked">0</h3>
897
- <p>کاربران قفل شده</p>
898
- </div>
899
- </div>
900
- <div class="stat-card">
901
- <i class="fas fa-door-open"></i>
902
- <div class="stat-info">
903
- <h3 id="stat-rooms">0</h3>
904
- <p>اتاق‌ها</p>
905
- </div>
906
- </div>
907
- <div class="stat-card">
908
- <i class="fas fa-comment"></i>
909
- <div class="stat-info">
910
- <h3 id="stat-messages">0</h3>
911
- <p>پیام‌های امروز</p>
912
- </div>
913
- </div>
914
- </div>
915
  </header>
916
 
917
  <div class="content">
918
- <!-- تب مدیریت کاربران -->
919
- <div id="tab-users" class="tab-content active">
920
- <h2><i class="fas fa-users"></i> مدیریت کاربران</h2>
921
- <div class="table-container">
922
- <table class="data-table">
923
- <thead>
924
- <tr>
925
- <th>ID</th>
926
- <th>نام کاربری</th>
927
- <th>نام کامل</th>
928
- <th>ایمیل</th>
929
- <th>نقش</th>
930
- <th>وضعیت</th>
931
- <th>تاریخ ثبت‌نام</th>
932
- <th>عملیات</th>
933
- </tr>
934
- </thead>
935
- <tbody id="users-table-body">
936
- </tbody>
937
- </table>
938
  </div>
939
- </div>
940
-
941
- <!-- تب مدیریت پیام‌ها -->
942
- <div id="tab-messages" class="tab-content">
943
- <h2><i class="fas fa-comments"></i> مدیریت پیام‌ها</h2>
944
- <div class="table-container">
945
- <table class="data-table">
946
- <thead>
947
- <tr>
948
- <th>ID</th>
949
- <th>کاربر</th>
950
- <th>اتاق</th>
951
- <th>پیام</th>
952
- <th>زمان</th>
953
- <th>عملیات</th>
954
- </tr>
955
- </thead>
956
- <tbody id="messages-table-body">
957
- </tbody>
958
- </table>
959
  </div>
960
- </div>
961
-
962
- <!-- تب مدیریت اتاق‌ها -->
963
- <div id="tab-rooms" class="tab-content">
964
- <h2><i class="fas fa-door-open"></i> مدیریت اتاق‌ها</h2>
965
- <div class="rooms-list" id="rooms-list">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
966
  </div>
967
- </div>
968
-
969
- <!-- تب مدیریت اعلان‌ها -->
970
- <div id="tab-announcements" class="tab-content">
971
- <h2><i class="fas fa-bullhorn"></i> مدیریت اعلان‌ها</h2>
972
- <div class="announcements-admin">
973
- <div class="form-section">
974
- <h3>ایجاد اعلان جدید</h3>
975
- <form id="create-announcement-form">
976
- <div class="form-group">
977
- <label for="announcement-title">عنوان اعلان</label>
978
- <input type="text" id="announcement-title" required placeholder="عنوان اعلان را وارد کنید">
979
  </div>
980
- <div class="form-group">
981
- <label for="announcement-content">متن اعلان</label>
982
- <textarea id="announcement-content" rows="4" required placeholder="متن اعلان را وارد کنید"></textarea>
 
 
 
983
  </div>
984
- <button type="submit" class="btn btn-primary"><i class="fas fa-plus"></i> ایجاد اعلان</button>
985
- </form>
986
- </div>
987
-
988
- <div class="announcements-list">
989
- <h3>اعلان‌های موجود</h3>
990
- <div id="announcements-list"></div>
 
991
  </div>
992
  </div>
993
  </div>
994
  </div>
995
  </main>
996
  </div>
997
-
998
- <!-- مودال ویرایش کاربر -->
999
- <div id="editUserModal" class="modal">
1000
- <div class="modal-overlay" onclick="closeEditUserModal()"></div>
1001
- <div class="modal-content">
1002
- <div class="modal-header">
1003
- <h2><i class="fas fa-user-edit"></i> ویرایش کاربر</h2>
1004
- <button class="close-btn" onclick="closeEditUserModal()"><i class="fas fa-times"></i></button>
1005
- </div>
1006
- <div class="modal-body">
1007
- <form id="editUserForm">
1008
- <input type="hidden" id="edit_user_id">
1009
-
1010
- <div class="form-group">
1011
- <label for="edit_username">نام کاربری</label>
1012
- <input type="text" id="edit_username" required>
1013
- </div>
1014
-
1015
- <div class="form-group">
1016
- <label for="edit_full_name">نام کامل</label>
1017
- <input type="text" id="edit_full_name">
1018
- </div>
1019
-
1020
- <div class="form-group">
1021
- <label for="edit_email">ایمیل</label>
1022
- <input type="email" id="edit_email" required>
1023
- </div>
1024
-
1025
- <div class="form-group">
1026
- <label for="edit_role">نقش</label>
1027
- <select id="edit_role">
1028
- <option value="user">کاربر</option>
1029
- <option value="admin">ادمین</option>
1030
- </select>
1031
- </div>
1032
-
1033
- <div class="form-group">
1034
- <label>
1035
- <input type="checkbox" id="edit_is_active">
1036
- حساب فعال است
1037
- </label>
1038
- </div>
1039
-
1040
- <div class="form-actions">
1041
- <button type="button" class="btn btn-secondary" onclick="closeEditUserModal()">انصراف</button>
1042
- <button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
1043
- </div>
1044
- </form>
1045
- </div>
1046
- </div>
1047
- </div>
1048
-
1049
- <!-- Toast Notification -->
1050
- <div id="toast" class="toast">
1051
- <i class="fas fa-check-circle"></i>
1052
- <span id="toast-message"></span>
1053
- </div>
1054
-
1055
- <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-badge">Built with anycoder</a>
1056
-
1057
- <script>
1058
- // Mock Data
1059
- let users = [
1060
- { id: 1, username: 'admin', full_name: 'مدیر سیستم', email: 'admin@example.com', role: 'admin', is_locked: false, is_active: true, created_at: '2024-01-15' },
1061
- { id: 2, username: 'ali_reza', full_name: 'علی رضایی', email: 'ali@example.com', role: 'user', is_locked: false, is_active: true, created_at: '2024-01-20' },
1062
- { id: 3, username: 'maryam_j', full_name: 'مریم جعفری', email: 'maryam@example.com', role: 'user', is_locked: true, is_active: false, created_at: '2024-02-05' },
1063
- { id: 4, username: 'hossein_k', full_name: 'حسن کریمی', email: 'hossein@example.com', role: 'user', is_locked: false, is_active: true, created_at: '2024-02-10' },
1064
- { id: 5, username: 'sara_m', full_name: 'سارا محمدی', email: 'sara@example.com', role: 'user', is_locked: false, is_active: true, created_at: '2024-02-15' },
1065
- { id: 6, username: 'reza_n', full_name: 'رضا نوری', email: 'reza@example.com', role: 'user', is_locked: true, is_active: false, created_at: '2024-02-20' },
1066
- { id: 7, username: 'neda_a', full_name: 'ندا احمدی', email: 'neda@example.com', role: 'user', is_locked: false, is_active: true, created_at: '2024-03-01' },
1067
- { id: 8, username: 'amir_h', full_name: 'امیر حسینی', email: 'amir@example.com', role: 'user', is_locked: false, is_active: true, created_at: '2024-03-05' }
1068
- ];
1069
-
1070
- let messages = [
1071
- { id: 1, username: 'ali_reza', room_name: 'گفتگوی عمومی', message: 'سلام به همه! امیدوارم روز خوبی داشته باشید.', created_at: '2024-03-15 09:30' },
1072
- { id: 2, username: 'maryam_j', room_name: 'برنامه‌نویسی', message: 'کسی می‌دونه چطور میشه با React کار کرد؟', created_at: '2024-03-15 10:15' },
1073
- { id: 3, username: 'hossein_k', room_name: 'گفتگوی عمومی', message: 'فردا جلسه داریم ساعت ۳', created_at: '2024-03-15 11:00' },
1074
- { id: 4, username: 'sara_m', room_name: 'طراحی UI', message: 'این پالت رنگی خیلی قشنگه، نظرتون چیه؟', created_at: '2024-03-15 12:30' },
1075
- { id: 5, username: 'reza_n', room_name: 'گفتگوی عمومی', message: 'ممنون از راهنماییتون', created_at: '2024-03-15 14:00' },
1076
- { id: 6, username: 'neda_a', room_name: 'برنامه‌نویسی', message: 'آموزش جدید React رو دیدم، عالی بود!', created_at: '2024-03-15 15:45' },
1077
- { id: 7, username: 'amir_h', room_name: 'طراحی UI', message: 'Figma رو پیشنهاد می‌کنم برای طراحی', created_at: '2024-03-15 16:20' }
1078
- ];
1079
-
1080
- let rooms = [
1081
- { id: 1, name: 'گفتگوی عمومی', description: 'اتاق گفتگوی آزاد همه کاربران', is_locked: false, created_at: '2024-01-10', creator: 'admin' },
1082
- { id: 2, name: 'برنامه‌نویسی', description: 'بحث و تبادل نظر درباره برنامه‌نویسی', is_locked: false, created_at: '2024-01-15', creator: 'ali_reza' },
1083
- { id: 3, name: 'طراحی UI', description: 'طراحی رابط کاربری و تجربه کاربری', is_locked: true, created_at: '2024-02-01', creator: 'sara_m' },
1084
- { id: 4, name: 'بازی و سرگرمی', description: 'گفتگو درباره بازی‌های ویدیویی', is_locked: false, created_at: '2024-02-10', creator: 'hossein_k' }
1085
- ];
1086
-
1087
- let announcements = [
1088
- { id: 1, title: 'به‌روزرسانی سیستم', content: 'سیستم چت روم در تاریخ ۲۰ مارس به‌روزرسانی خواهد شد. لطفاً از ذخیره اطلاعات مهم خود اطمینان حاصل کنید.', is_active: true, created_at: '2024-03-10' },
1089
- { id: 2, title: 'قوانین جدید', content: 'لطفاً قوانین جدید انجمن را مطالعه کنید. رعایت قوانین برای همه کاربران الزامی است.', is_active: true, created_at: '2024-03-12' },
1090
- { id: 3, title: 'مسابقه برنامه‌نویسی', content: 'مسابقه برنامه‌نویسی هفتگی از فردا آغاز می‌شود. جوایز نقدی برای برندگان در نظر گرفته شده است.', is_active: false, created_at: '2024-03-08' }
1091
- ];
1092
-
1093
- // Initialize
1094
- document.addEventListener('DOMContentLoaded', function() {
1095
- updateStats();
1096
- renderUsers();
1097
- renderMessages();
1098
- renderRooms();
1099
- renderAnnouncements();
1100
- });
1101
-
1102
- // Update Statistics
1103
- function updateStats() {
1104
- document.getElementById('stat-users').textContent = users.length;
1105
- document.getElementById('stat-locked').textContent = users.filter(u => u.is_locked).length;
1106
- document.getElementById('stat-rooms').textContent = rooms.length;
1107
- document.getElementById('stat-messages').textContent = messages.length;
1108
- }
1109
-
1110
- // Toggle Sidebar (Mobile)
1111
- function toggleSidebar() {
1112
- document.getElementById('sidebar').classList.toggle('open');
1113
- document.querySelector('.sidebar-overlay').classList.toggle('active');
1114
- }
1115
-
1116
- // Show Tab
1117
- function showTab(tabId) {
1118
- // Update sidebar active state
1119
- document.querySelectorAll('.sidebar-nav li').forEach(li => li.classList.remove('active'));
1120
- event.target.closest('li').classList.add('active');
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>تنظیمات پروفایل - چت روم</title>
7
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
  <style>
9
+ @import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700&display=swap');
10
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  * {
12
  margin: 0;
13
  padding: 0;
14
  box-sizing: border-box;
15
  }
16
+
17
+ :root {
18
+ --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
19
+ --secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
20
+ --success-gradient: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
21
+ --error-gradient: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
22
+ --glass-bg: rgba(255, 255, 255, 0.08);
23
+ --glass-border: rgba(255, 255, 255, 0.15);
24
+ --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
25
+ --text-primary: #ffffff;
26
+ --text-secondary: rgba(255, 255, 255, 0.7);
27
+ --text-muted: rgba(255, 255, 255, 0.5);
28
+ --focus-glow: 0 0 20px rgba(102, 126, 234, 0.5);
29
+ }
30
+
31
  body {
32
+ font-family: 'Vazirmatn', -apple-system, BlinkMacSystemFont, sans-serif;
33
+ background: linear-gradient(-45deg, #1a1a2e, #16213e, #1a1a2e, #0f3460);
34
+ background-size: 400% 400%;
35
+ animation: gradientShift 15s ease infinite;
36
  min-height: 100vh;
37
+ color: var(--text-primary);
38
+ overflow-x: hidden;
39
  }
40
+
41
+ @keyframes gradientShift {
42
+ 0% { background-position: 0% 50%; }
43
+ 50% { background-position: 100% 50%; }
44
+ 100% { background-position: 0% 50%; }
45
+ }
46
+
47
+ body::before {
48
+ content: '';
49
+ position: fixed;
50
+ top: -50%;
51
+ right: -10%;
52
+ width: 600px;
53
+ height: 600px;
54
+ background: radial-gradient(circle, rgba(102, 126, 234, 0.4) 0%, transparent 70%);
55
+ filter: blur(80px);
56
+ animation: float 20s ease-in-out infinite;
57
+ pointer-events: none;
58
+ }
59
+
60
+ body::after {
61
+ content: '';
62
+ position: fixed;
63
+ bottom: -30%;
64
+ left: -10%;
65
+ width: 500px;
66
+ height: 500px;
67
+ background: radial-gradient(circle, rgba(245, 87, 108, 0.3) 0%, transparent 70%);
68
+ filter: blur(80px);
69
+ animation: float 25s ease-in-out infinite reverse;
70
+ pointer-events: none;
71
+ }
72
+
73
+ @keyframes float {
74
+ 0%, 100% { transform: translate(0, 0) scale(1); }
75
+ 33% { transform: translate(30px, -30px) scale(1.1); }
76
+ 66% { transform: translate(-20px, 20px) scale(0.9); }
77
+ }
78
+
79
  .dashboard-container {
80
+ display: flex;
 
81
  min-height: 100vh;
82
+ position: relative;
83
  }
84
+
 
 
 
 
 
 
 
85
  .sidebar {
86
+ width: 280px;
87
+ background: var(--glass-bg);
88
+ backdrop-filter: blur(20px);
89
+ -webkit-backdrop-filter: blur(20px);
90
+ border-left: 1px solid var(--glass-border);
91
+ padding: 2rem 1.5rem;
92
+ position: fixed;
93
+ right: 0;
94
  top: 0;
95
  height: 100vh;
96
  overflow-y: auto;
97
+ z-index: 100;
98
+ box-shadow: var(--glass-shadow);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
100
+
 
101
  .user-info {
102
  text-align: center;
103
+ padding-bottom: 2rem;
104
+ border-bottom: 1px solid var(--glass-border);
105
+ margin-bottom: 1.5rem;
 
 
 
 
 
 
 
 
 
 
106
  }
107
+
108
+ .user-info .avatar {
109
+ width: 90px;
110
+ height: 90px;
111
+ margin: 0 auto 1rem;
112
+ background: var(--primary-gradient);
113
  border-radius: 50%;
 
 
114
  display: flex;
115
  align-items: center;
116
  justify-content: center;
117
+ font-size: 2.5rem;
118
+ box-shadow: 0 10px 40px rgba(102, 126, 234, 0.4);
119
+ position: relative;
120
  }
121
+
122
+ .user-info .avatar::before {
123
+ content: '';
124
+ position: absolute;
125
+ inset: -3px;
126
+ border-radius: 50%;
127
+ background: var(--primary-gradient);
128
+ z-index: -1;
129
+ filter: blur(15px);
130
+ opacity: 0.6;
131
+ }
132
+
133
  .user-info h3 {
134
  font-size: 1.25rem;
135
+ font-weight: 600;
136
  margin-bottom: 0.25rem;
137
  }
138
+
139
+ .user-info > p {
140
+ color: var(--text-secondary);
141
+ font-size: 0.9rem;
142
  margin-bottom: 0.75rem;
143
  }
144
+
145
  .status {
146
  display: inline-flex;
147
  align-items: center;
148
  gap: 0.5rem;
149
  padding: 0.5rem 1rem;
150
+ border-radius: 50px;
151
+ font-size: 0.8rem;
 
 
152
  font-weight: 500;
153
+ background: var(--glass-bg);
154
+ border: 1px solid var(--glass-border);
155
+ }
156
+
157
+ .status.online {
158
+ background: linear-gradient(135deg, rgba(79, 172, 254, 0.2), rgba(0, 242, 254, 0.2));
159
+ border-color: rgba(79, 172, 254, 0.3);
160
+ color: #4facfe;
161
+ }
162
+
163
+ .status.admin {
164
+ background: linear-gradient(135deg, rgba(250, 112, 154, 0.2), rgba(254, 225, 64, 0.2));
165
+ border-color: rgba(250, 112, 154, 0.3);
166
+ color: #fa709a;
167
+ }
168
+
169
  .sidebar-nav ul {
170
  list-style: none;
 
 
 
171
  }
172
+
173
+ .sidebar-nav li {
174
+ margin-bottom: 0.5rem;
175
+ }
176
+
177
  .sidebar-nav a {
178
  display: flex;
179
  align-items: center;
180
  gap: 0.75rem;
181
  padding: 0.875rem 1rem;
182
+ color: var(--text-secondary);
183
  text-decoration: none;
184
+ border-radius: 12px;
185
+ transition: all 0.3s ease;
186
+ font-size: 0.95rem;
187
  }
188
+
189
+ .sidebar-nav a:hover {
190
+ background: var(--glass-bg);
191
+ color: var(--text-primary);
192
+ transform: translateX(-5px);
193
  }
194
+
195
  .sidebar-nav li.active a {
196
+ background: var(--primary-gradient);
197
+ color: white;
198
+ box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  }
200
+
 
201
  .main-content {
202
+ flex: 1;
203
+ margin-right: 280px;
204
+ padding: 2rem;
205
  }
206
+
 
 
 
 
 
 
 
207
  .header {
208
  margin-bottom: 2rem;
209
  }
210
+
211
  .header h1 {
212
  font-size: 1.75rem;
213
+ font-weight: 700;
 
214
  display: flex;
215
  align-items: center;
216
  gap: 0.75rem;
217
  }
218
+
219
  .header h1 i {
220
+ background: var(--primary-gradient);
221
  -webkit-background-clip: text;
222
  -webkit-text-fill-color: transparent;
223
+ background-clip: text;
224
  }
225
+
226
+ .content {
227
+ max-width: 900px;
 
 
 
228
  }
229
+
230
+ .profile-container {
 
 
 
 
231
  display: flex;
232
+ flex-direction: column;
233
+ gap: 1.5rem;
 
234
  }
235
+
236
+ .profile-header {
237
+ background: var(--glass-bg);
238
+ backdrop-filter: blur(20px);
239
+ -webkit-backdrop-filter: blur(20px);
240
+ border: 1px solid var(--glass-border);
241
+ border-radius: 24px;
242
+ padding: 2.5rem;
243
+ text-align: center;
244
+ position: relative;
245
+ overflow: hidden;
246
  }
247
+
248
+ .profile-header::before {
249
+ content: '';
250
+ position: absolute;
251
+ top: 0;
252
+ left: 0;
253
+ right: 0;
254
+ height: 120px;
255
+ background: var(--primary-gradient);
256
+ opacity: 0.15;
257
+ }
258
+
259
+ .profile-avatar {
260
+ width: 110px;
261
+ height: 110px;
262
+ margin: 0 auto 1.25rem;
263
+ background: var(--primary-gradient);
264
+ border-radius: 50%;
265
  display: flex;
266
  align-items: center;
267
  justify-content: center;
268
+ font-size: 3rem;
269
+ box-shadow: 0 15px 50px rgba(102, 126, 234, 0.5);
270
+ position: relative;
271
+ z-index: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  }
273
+
274
+ .profile-avatar::after {
275
+ content: '';
276
+ position: absolute;
277
+ inset: -4px;
278
+ border-radius: 50%;
279
+ background: var(--primary-gradient);
280
+ z-index: -1;
281
+ filter: blur(20px);
282
+ opacity: 0.6;
283
+ animation: pulse 3s ease-in-out infinite;
284
+ }
285
+
286
+ @keyframes pulse {
287
+ 0%, 100% { opacity: 0.6; transform: scale(1); }
288
+ 50% { opacity: 0.3; transform: scale(1.05); }
289
+ }
290
+
291
+ .profile-header h2 {
292
+ font-size: 1.5rem;
293
+ font-weight: 700;
294
+ margin-bottom: 0.25rem;
295
+ position: relative;
296
+ z-index: 1;
297
  }
298
+
299
+ .profile-header > p {
300
+ color: var(--text-secondary);
301
+ font-size: 0.95rem;
302
+ position: relative;
303
+ z-index: 1;
304
  }
305
+
306
+ .user-email {
307
+ margin-top: 0.5rem;
308
+ color: var(--text-muted) !important;
309
+ font-size: 0.875rem !important;
310
  }
311
+
312
+ .alert {
313
+ padding: 1rem 1.5rem;
314
+ border-radius: 16px;
315
+ font-size: 0.95rem;
316
  display: flex;
317
  align-items: center;
318
  gap: 0.75rem;
319
+ backdrop-filter: blur(10px);
320
+ -webkit-backdrop-filter: blur(10px);
321
+ border: 1px solid;
322
+ animation: slideIn 0.4s ease;
323
+ }
324
+
325
+ @keyframes slideIn {
326
+ from {
327
+ opacity: 0;
328
+ transform: translateY(-10px);
329
+ }
330
+ to {
331
+ opacity: 1;
332
+ transform: translateY(0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  }
334
  }
335
+
336
+ .alert.error {
337
+ background: linear-gradient(135deg, rgba(250, 112, 154, 0.15), rgba(254, 225, 64, 0.1));
338
+ border-color: rgba(250, 112, 154, 0.3);
339
+ color: #ff6b9d;
340
+ box-shadow: 0 8px 32px rgba(250, 112, 154, 0.2);
341
+ }
342
+
343
+ .alert.success {
344
+ background: linear-gradient(135deg, rgba(79, 172, 254, 0.15), rgba(0, 242, 254, 0.1));
345
+ border-color: rgba(79, 172, 254, 0.3);
346
+ color: #4facfe;
347
+ box-shadow: 0 8px 32px rgba(79, 172, 254, 0.2);
348
+ }
349
+
350
+ .profile-form {
351
+ background: var(--glass-bg);
352
+ backdrop-filter: blur(20px);
353
+ -webkit-backdrop-filter: blur(20px);
354
+ border: 1px solid var(--glass-border);
355
+ border-radius: 24px;
356
+ padding: 2rem;
357
+ }
358
+
359
+ .profile-form h3 {
360
+ font-size: 1.1rem;
361
  font-weight: 600;
362
+ display: flex;
363
+ align-items: center;
364
+ gap: 0.5rem;
365
+ margin-bottom: 0.75rem;
366
  }
367
+
368
+ .form-info {
369
+ color: var(--text-muted);
370
+ font-size: 0.875rem;
371
+ margin-bottom: 1.5rem;
372
+ line-height: 1.7;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  }
374
+
375
+ .form-group {
376
+ margin-bottom: 1.5rem;
 
377
  }
378
+
379
+ .form-group label {
 
380
  display: flex;
381
+ align-items: center;
382
  gap: 0.5rem;
383
+ margin-bottom: 0.625rem;
384
+ font-size: 0.9rem;
385
+ font-weight: 500;
386
+ color: var(--text-secondary);
387
  }
388
+
389
+ .form-group label i {
390
+ color: #667eea;
391
+ font-size: 0.875rem;
 
 
 
 
 
 
 
 
 
392
  }
393
+
394
+ .form-group input {
395
+ width: 100%;
396
+ padding: 0.875rem 1rem;
397
+ background: rgba(0, 0, 0, 0.2);
398
+ border: 1px solid var(--glass-border);
399
+ border-radius: 14px;
400
+ color: var(--text-primary);
401
+ font-size: 0.95rem;
402
+ font-family: inherit;
403
+ transition: all 0.3s ease;
404
  }
405
+
406
+ .form-group input:focus {
407
+ outline: none;
408
+ border-color: #667eea;
409
+ box-shadow: var(--focus-glow);
410
+ background: rgba(0, 0, 0, 0.3);
411
+ }
412
+
413
+ .form-group input:disabled {
414
+ background: rgba(255, 255, 255, 0.05);
415
+ color: var(--text-muted);
416
+ cursor: not-allowed;
417
+ }
418
+
419
+ .form-text {
420
+ display: block;
421
+ margin-top: 0.5rem;
422
+ font-size: 0.8rem;
423
+ color: var(--text-muted);
424
  }
425
+
426
+ hr {
427
+ border: none;
428
+ height: 1px;
429
+ background: var(--glass-border);
430
+ margin: 2rem 0;
431
  }
432
+
433
+ .form-actions {
434
+ display: flex;
435
+ gap: 1rem;
436
+ margin-top: 2rem;
437
+ flex-wrap: wrap;
438
  }
439
+
 
440
  .btn {
441
  display: inline-flex;
442
  align-items: center;
443
  gap: 0.5rem;
444
+ padding: 0.875rem 1.75rem;
445
+ border-radius: 14px;
446
+ font-size: 0.95rem;
 
447
  font-weight: 500;
448
+ font-family: inherit;
449
  cursor: pointer;
450
+ transition: all 0.3s ease;
451
+ text-decoration: none;
452
+ border: none;
453
  }
454
+
455
  .btn-primary {
456
+ background: var(--primary-gradient);
457
  color: white;
458
+ box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
459
  }
460
+
461
  .btn-primary:hover {
462
  transform: translateY(-2px);
463
+ box-shadow: 0 12px 35px rgba(102, 126, 234, 0.5);
464
  }
465
+
466
+ .btn-primary:active {
467
+ transform: translateY(0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  }
469
+
470
+ .btn-secondary {
471
+ background: var(--glass-bg);
472
+ color: var(--text-secondary);
473
+ border: 1px solid var(--glass-border);
474
+ }
475
+
476
+ .btn-secondary:hover {
477
+ background: rgba(255, 255, 255, 0.1);
478
+ color: var(--text-primary);
479
+ }
480
+
481
+ .profile-stats {
482
+ background: var(--glass-bg);
483
+ backdrop-filter: blur(20px);
484
+ -webkit-backdrop-filter: blur(20px);
485
+ border: 1px solid var(--glass-border);
486
+ border-radius: 24px;
487
+ padding: 1.75rem;
488
+ }
489
+
490
+ .profile-stats h3 {
491
+ font-size: 1.1rem;
492
  font-weight: 600;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  display: flex;
494
  align-items: center;
 
 
 
 
 
495
  gap: 0.5rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
  margin-bottom: 1.25rem;
497
  }
498
+
499
+ .stats-grid {
500
+ display: grid;
501
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
502
  gap: 1rem;
503
  }
504
+
505
+ .stat-item {
 
 
 
 
 
 
 
 
 
 
 
 
 
506
  display: flex;
 
507
  align-items: center;
508
+ gap: 1rem;
509
+ padding: 1.25rem;
510
+ background: rgba(0, 0, 0, 0.15);
511
+ border-radius: 16px;
512
+ border: 1px solid var(--glass-border);
513
+ transition: all 0.3s ease;
 
 
 
 
 
 
 
514
  }
515
+
516
+ .stat-item:hover {
517
+ transform: translateY(-3px);
518
+ background: rgba(0, 0, 0, 0.25);
 
 
519
  }
520
+
521
+ .stat-item > i {
522
+ width: 48px;
523
+ height: 48px;
524
  display: flex;
 
 
 
 
 
 
 
 
 
 
525
  align-items: center;
526
  justify-content: center;
527
+ background: var(--primary-gradient);
528
+ border-radius: 14px;
529
+ font-size: 1.25rem;
530
+ flex-shrink: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  }
532
+
533
+ .stat-info h4 {
534
+ font-size: 0.8rem;
535
+ font-weight: 500;
536
+ color: var(--text-muted);
537
+ margin-bottom: 0.25rem;
 
538
  }
539
+
540
+ .stat-info p {
541
+ font-size: 0.95rem;
542
  font-weight: 600;
543
+ color: var(--text-primary);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
544
  }
545
+
546
+ @media (max-width: 1024px) {
547
+ .sidebar {
548
+ width: 240px;
549
+ }
550
+ .main-content {
551
+ margin-right: 240px;
552
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  }
554
+
555
+ @media (max-width: 768px) {
556
+ .sidebar {
557
+ width: 100%;
558
+ position: relative;
559
+ height: auto;
560
+ border-left: none;
561
+ border-bottom: 1px solid var(--glass-border);
562
+ }
563
+ .main-content {
564
+ margin-right: 0;
565
+ }
566
+ .dashboard-container {
567
+ flex-direction: column;
568
+ }
569
+ .stats-grid {
570
+ grid-template-columns: 1fr;
571
+ }
572
+ .form-actions {
573
+ flex-direction: column;
574
+ }
575
+ .btn {
576
+ justify-content: center;
577
+ }
578
  }
579
+
580
+ @media (max-width: 480px) {
581
+ .main-content {
582
+ padding: 1rem;
583
+ }
584
+ .profile-header,
585
+ .profile-form,
586
+ .profile-stats {
587
+ padding: 1.5rem;
588
+ }
589
  }
590
  </style>
591
  </head>
592
  <body>
 
 
 
 
 
 
593
  <div class="dashboard-container">
594
+ <aside class="sidebar">
595
  <div class="user-info">
596
  <div class="avatar">
597
+ <i class="fas fa-user-circle"></i>
598
  </div>
599
+ <h3>محمد رضایی</h3>
600
+ <p>@mohammad</p>
601
+ <span class="status online">
602
+ <i class="fas fa-circle"></i>
603
+ آنلاین
604
+ </span>
605
  </div>
606
 
607
  <nav class="sidebar-nav">
608
  <ul>
609
+ <li><a href="dashboard.php"><i class="fas fa-home"></i> صفحه اصلی</a></li>
610
+ <li><a href="chat.php?room=1"><i class="fas fa-comments"></i> چت عمومی</a></li>
611
+ <li class="active"><a href="profile.php"><i class="fas fa-user-cog"></i> تنظیمات پروفایل</a></li>
612
+ <li><a href="admin.php"><i class="fas fa-shield-alt"></i> پنل ادمین</a></li>
613
+ <li><a href="logout.php"><i class="fas fa-sign-out-alt"></i> خروج</a></li>
614
  </ul>
615
  </nav>
616
  </aside>
617
 
618
  <main class="main-content">
619
  <header class="header">
620
+ <h1><i class="fas fa-user-cog"></i> تنظیمات پروفایل</h1>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621
  </header>
622
 
623
  <div class="content">
624
+ <div class="profile-container">
625
+ <div class="profile-header">
626
+ <div class="profile-avatar">
627
+ <i class="fas fa-user-circle"></i>
628
+ </div>
629
+ <h2>محمد رضایی</h2>
630
+ <p>@mohammad</p>
631
+ <p class="user-email">mohammad@example.com</p>
 
 
 
 
 
 
 
 
 
 
 
 
632
  </div>
633
+
634
+ <div class="alert error">
635
+ <i class="fas fa-exclamation-circle"></i>
636
+ این ایمیل قبلاً ثبت شده است
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
637
  </div>
638
+
639
+ <div class="profile-form">
640
+ <form method="POST" action="">
641
+ <div class="form-group">
642
+ <label for="full_name"><i class="fas fa-id-card"></i> نام کامل</label>
643
+ <input type="text" id="full_name" name="full_name" value="محمد رضایی" required>
644
+ </div>
645
+
646
+ <div class="form-group">
647
+ <label for="email"><i class="fas fa-envelope"></i> ایمیل</label>
648
+ <input type="email" id="email" name="email" value="mohammad@example.com" required>
649
+ </div>
650
+
651
+ <div class="form-group">
652
+ <label for="username"><i class="fas fa-user"></i> نام کاربری</label>
653
+ <input type="text" id="username" value="mohammad" disabled>
654
+ <small class="form-text">نام کاربری قابل تغییر نیست</small>
655
+ </div>
656
+
657
+ <div class="form-group">
658
+ <label for="role"><i class="fas fa-user-tag"></i> نقش</label>
659
+ <input type="text" id="role" value="کاربر" disabled>
660
+ </div>
661
+
662
+ <hr>
663
+
664
+ <h3><i class="fas fa-lock"></i> تغییر رمز عبور</h3>
665
+ <p class="form-info">رمز عبور خود را تنها در صورتی تغییر دهید که می‌خواهید آن را به‌روز کنید. در غیر این صورت، فیلدهای زیر را خالی بگذارید.</p>
666
+
667
+ <div class="form-group">
668
+ <label for="current_password"><i class="fas fa-key"></i> رمز عبور فعلی</label>
669
+ <input type="password" id="current_password" name="current_password">
670
+ </div>
671
+
672
+ <div class="form-group">
673
+ <label for="new_password"><i class="fas fa-key"></i> رمز عبور جدید</label>
674
+ <input type="password" id="new_password" name="new_password">
675
+ </div>
676
+
677
+ <div class="form-group">
678
+ <label for="confirm_password"><i class="fas fa-key"></i> تکرار رمز عبور جدید</label>
679
+ <input type="password" id="confirm_password" name="confirm_password">
680
+ </div>
681
+
682
+ <div class="form-actions">
683
+ <a href="dashboard.php" class="btn btn-secondary">
684
+ <i class="fas fa-arrow-right"></i> بازگشت
685
+ </a>
686
+ <button type="submit" name="update_profile" class="btn btn-primary">
687
+ <i class="fas fa-save"></i> ذخیره تغییرات
688
+ </button>
689
+ </div>
690
+ </form>
691
  </div>
692
+
693
+ <div class="profile-stats">
694
+ <h3><i class="fas fa-chart-bar"></i> آمار فعالیت</h3>
695
+ <div class="stats-grid">
696
+ <div class="stat-item">
697
+ <i class="fas fa-calendar"></i>
698
+ <div class="stat-info">
699
+ <h4>تاریخ عضویت</h4>
700
+ <p>1403/01/15</p>
 
 
 
701
  </div>
702
+ </div>
703
+ <div class="stat-item">
704
+ <i class="fas fa-clock"></i>
705
+ <div class="stat-info">
706
+ <h4>آخرین بازدید</h4>
707
+ <p>14:30 1403/06/20</p>
708
  </div>
709
+ </div>
710
+ <div class="stat-item">
711
+ <i class="fas fa-comments"></i>
712
+ <div class="stat-info">
713
+ <h4>تعداد پیام‌ها</h4>
714
+ <p>247</p>
715
+ </div>
716
+ </div>
717
  </div>
718
  </div>
719
  </div>
720
  </div>
721
  </main>
722
  </div>
723
+ </body>
724
+ </html>