meriks1 commited on
Commit
97b86dd
·
verified ·
1 Parent(s): b2d9e17

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. assets/css/styles.css +593 -0
  2. assets/js/app.js +1 -0
  3. index.html +156 -19
assets/css/styles.css ADDED
@@ -0,0 +1,593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --primary-color: #0088cc;
3
+ --primary-hover: #006ba6;
4
+ --secondary-color: #f0f2f5;
5
+ --success-color: #28a745;
6
+ --warning-color: #ffc107;
7
+ --danger-color: #dc3545;
8
+ --text-primary: #1a1a1a;
9
+ --text-secondary: #65676b;
10
+ --border-color: #dddfe2;
11
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.12);
12
+ --shadow-md: 0 4px 6px rgba(0,0,0,0.1);
13
+ --shadow-lg: 0 10px 25px rgba(0,0,0,0.15);
14
+ --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
15
+ }
16
+
17
+ * {
18
+ margin: 0;
19
+ padding: 0;
20
+ box-sizing: border-box;
21
+ }
22
+
23
+ body {
24
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
25
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
26
+ min-height: 100vh;
27
+ color: var(--text-primary);
28
+ line-height: 1.6;
29
+ }
30
+
31
+ .container {
32
+ max-width: 1200px;
33
+ margin: 0 auto;
34
+ padding: 0 20px;
35
+ }
36
+
37
+ /* Header */
38
+ .header {
39
+ background: rgba(255, 255, 255, 0.95);
40
+ backdrop-filter: blur(10px);
41
+ box-shadow: var(--shadow-md);
42
+ position: sticky;
43
+ top: 0;
44
+ z-index: 100;
45
+ }
46
+
47
+ .header-content {
48
+ display: flex;
49
+ justify-content: space-between;
50
+ align-items: center;
51
+ padding: 1rem 0;
52
+ }
53
+
54
+ .logo {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 0.75rem;
58
+ }
59
+
60
+ .logo-icon {
61
+ width: 32px;
62
+ height: 32px;
63
+ color: var(--primary-color);
64
+ }
65
+
66
+ .logo h1 {
67
+ font-size: 1.5rem;
68
+ font-weight: 600;
69
+ color: var(--text-primary);
70
+ }
71
+
72
+ .anycoder-link {
73
+ color: var(--primary-color);
74
+ text-decoration: none;
75
+ font-weight: 500;
76
+ transition: var(--transition);
77
+ }
78
+
79
+ .anycoder-link:hover {
80
+ color: var(--primary-hover);
81
+ }
82
+
83
+ /* Main */
84
+ .main {
85
+ padding: 2rem 0 4rem;
86
+ }
87
+
88
+ .scheduler-container {
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: 2rem;
92
+ }
93
+
94
+ /* Auth Section */
95
+ .auth-section {
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+ min-height: 60vh;
100
+ }
101
+
102
+ .auth-card {
103
+ background: white;
104
+ border-radius: 16px;
105
+ padding: 2.5rem;
106
+ box-shadow: var(--shadow-lg);
107
+ width: 100%;
108
+ max-width: 400px;
109
+ }
110
+
111
+ .auth-card h2 {
112
+ margin-bottom: 0.5rem;
113
+ color: var(--text-primary);
114
+ }
115
+
116
+ .auth-description {
117
+ color: var(--text-secondary);
118
+ margin-bottom: 2rem;
119
+ }
120
+
121
+ /* Scheduler Section */
122
+ .scheduler-section {
123
+ display: grid;
124
+ grid-template-columns: 1fr;
125
+ gap: 2rem;
126
+ }
127
+
128
+ .status-bar {
129
+ background: white;
130
+ border-radius: 12px;
131
+ padding: 1rem 1.5rem;
132
+ display: flex;
133
+ justify-content: space-between;
134
+ align-items: center;
135
+ box-shadow: var(--shadow-md);
136
+ }
137
+
138
+ .status-indicator {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 0.5rem;
142
+ }
143
+
144
+ .status-dot {
145
+ width: 10px;
146
+ height: 10px;
147
+ border-radius: 50%;
148
+ background: var(--danger-color);
149
+ animation: pulse 2s infinite;
150
+ }
151
+
152
+ .status-dot.connected {
153
+ background: var(--success-color);
154
+ }
155
+
156
+ @keyframes pulse {
157
+ 0%, 100% { opacity: 1; }
158
+ 50% { opacity: 0.5; }
159
+ }
160
+
161
+ .status-text {
162
+ font-weight: 500;
163
+ }
164
+
165
+ .scheduler-card,
166
+ .scheduled-messages-card {
167
+ background: white;
168
+ border-radius: 16px;
169
+ padding: 2rem;
170
+ box-shadow: var(--shadow-lg);
171
+ }
172
+
173
+ .scheduler-card h2 {
174
+ margin-bottom: 1.5rem;
175
+ color: var(--text-primary);
176
+ }
177
+
178
+ /* Forms */
179
+ .form-group {
180
+ margin-bottom: 1.5rem;
181
+ }
182
+
183
+ label {
184
+ display: block;
185
+ margin-bottom: 0.5rem;
186
+ font-weight: 500;
187
+ color: var(--text-primary);
188
+ }
189
+
190
+ input[type="text"],
191
+ input[type="number"],
192
+ input[type="password"],
193
+ input[type="datetime-local"],
194
+ textarea {
195
+ width: 100%;
196
+ padding: 0.75rem 1rem;
197
+ border: 2px solid var(--border-color);
198
+ border-radius: 8px;
199
+ font-size: 1rem;
200
+ transition: var(--transition);
201
+ background: white;
202
+ }
203
+
204
+ input:focus,
205
+ textarea:focus {
206
+ outline: none;
207
+ border-color: var(--primary-color);
208
+ box-shadow: 0 0 0 3px rgba(0, 136, 204, 0.1);
209
+ }
210
+
211
+ textarea {
212
+ resize: vertical;
213
+ min-height: 120px;
214
+ }
215
+
216
+ .char-count {
217
+ text-align: right;
218
+ font-size: 0.875rem;
219
+ color: var(--text-secondary);
220
+ margin-top: 0.25rem;
221
+ }
222
+
223
+ .radio-group {
224
+ display: flex;
225
+ gap: 2rem;
226
+ margin-top: 0.5rem;
227
+ }
228
+
229
+ .radio-label {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 0.5rem;
233
+ cursor: pointer;
234
+ font-weight: 400;
235
+ }
236
+
237
+ input[type="radio"] {
238
+ position: absolute;
239
+ opacity: 0;
240
+ }
241
+
242
+ .radio-custom {
243
+ width: 20px;
244
+ height: 20px;
245
+ border: 2px solid var(--border-color);
246
+ border-radius: 50%;
247
+ position: relative;
248
+ transition: var(--transition);
249
+ }
250
+
251
+ input[type="radio"]:checked + .radio-custom {
252
+ border-color: var(--primary-color);
253
+ }
254
+
255
+ input[type="radio"]:checked + .radio-custom::after {
256
+ content: '';
257
+ position: absolute;
258
+ top: 50%;
259
+ left: 50%;
260
+ transform: translate(-50%, -50%);
261
+ width: 10px;
262
+ height: 10px;
263
+ border-radius: 50%;
264
+ background: var(--primary-color);
265
+ }
266
+
267
+ /* Buttons */
268
+ .btn {
269
+ padding: 0.75rem 1.5rem;
270
+ border: none;
271
+ border-radius: 8px;
272
+ font-size: 1rem;
273
+ font-weight: 500;
274
+ cursor: pointer;
275
+ transition: var(--transition);
276
+ display: inline-flex;
277
+ align-items: center;
278
+ justify-content: center;
279
+ gap: 0.5rem;
280
+ }
281
+
282
+ .btn-primary {
283
+ background: var(--primary-color);
284
+ color: white;
285
+ }
286
+
287
+ .btn-primary:hover {
288
+ background: var(--primary-hover);
289
+ transform: translateY(-1px);
290
+ box-shadow: var(--shadow-md);
291
+ }
292
+
293
+ .btn-secondary {
294
+ background: var(--secondary-color);
295
+ color: var(--text-primary);
296
+ }
297
+
298
+ .btn-secondary:hover {
299
+ background: #e4e6eb;
300
+ }
301
+
302
+ .btn-icon {
303
+ padding: 0.5rem;
304
+ background: transparent;
305
+ border: 1px solid var(--border-color);
306
+ color: var(--text-secondary);
307
+ }
308
+
309
+ .btn-icon:hover {
310
+ background: var(--secondary-color);
311
+ color: var(--primary-color);
312
+ }
313
+
314
+ .btn-icon svg {
315
+ width: 20px;
316
+ height: 20px;
317
+ }
318
+
319
+ .form-actions {
320
+ display: flex;
321
+ gap: 1rem;
322
+ margin-top: 2rem;
323
+ }
324
+
325
+ /* Message Status */
326
+ .message-status {
327
+ margin-top: 1.5rem;
328
+ padding: 1rem;
329
+ border-radius: 8px;
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 0.75rem;
333
+ opacity: 0;
334
+ transform: translateY(-10px);
335
+ transition: var(--transition);
336
+ }
337
+
338
+ .message-status.show {
339
+ opacity: 1;
340
+ transform: translateY(0);
341
+ }
342
+
343
+ .message-status.success {
344
+ background: rgba(40, 167, 69, 0.1);
345
+ color: var(--success-color);
346
+ }
347
+
348
+ .message-status.error {
349
+ background: rgba(220, 53, 69, 0.1);
350
+ color: var(--danger-color);
351
+ }
352
+
353
+ .message-status.warning {
354
+ background: rgba(255, 193, 7, 0.1);
355
+ color: var(--warning-color);
356
+ }
357
+
358
+ .status-icon {
359
+ width: 20px;
360
+ height: 20px;
361
+ }
362
+
363
+ /* Scheduled Messages */
364
+ .card-header {
365
+ display: flex;
366
+ justify-content: space-between;
367
+ align-items: center;
368
+ margin-bottom: 1.5rem;
369
+ }
370
+
371
+ .card-header h3 {
372
+ color: var(--text-primary);
373
+ }
374
+
375
+ .messages-list {
376
+ display: flex;
377
+ flex-direction: column;
378
+ gap: 1rem;
379
+ }
380
+
381
+ .message-item {
382
+ padding: 1rem;
383
+ background: var(--secondary-color);
384
+ border-radius: 8px;
385
+ border-left: 4px solid var(--primary-color);
386
+ transition: var(--transition);
387
+ }
388
+
389
+ .message-item:hover {
390
+ transform: translateX(4px);
391
+ box-shadow: var(--shadow-sm);
392
+ }
393
+
394
+ .message-header {
395
+ display: flex;
396
+ justify-content: space-between;
397
+ align-items: center;
398
+ margin-bottom: 0.5rem;
399
+ }
400
+
401
+ .message-recipient {
402
+ font-weight: 600;
403
+ color: var(--primary-color);
404
+ }
405
+
406
+ .message-time {
407
+ font-size: 0.875rem;
408
+ color: var(--text-secondary);
409
+ }
410
+
411
+ .message-content {
412
+ color: var(--text-primary);
413
+ margin-bottom: 0.5rem;
414
+ white-space: pre-wrap;
415
+ }
416
+
417
+ .message-status {
418
+ font-size: 0.875rem;
419
+ color: var(--text-secondary);
420
+ }
421
+
422
+ .empty-state {
423
+ text-align: center;
424
+ padding: 3rem 1rem;
425
+ color: var(--text-secondary);
426
+ }
427
+
428
+ .empty-state svg {
429
+ width: 48px;
430
+ height: 48px;
431
+ margin-bottom: 1rem;
432
+ opacity: 0.5;
433
+ }
434
+
435
+ /* Modal */
436
+ .modal {
437
+ position: fixed;
438
+ top: 0;
439
+ left: 0;
440
+ right: 0;
441
+ bottom: 0;
442
+ background: rgba(0, 0, 0, 0.5);
443
+ display: flex;
444
+ justify-content: center;
445
+ align-items: center;
446
+ z-index: 1000;
447
+ opacity: 0;
448
+ pointer-events: none;
449
+ transition: opacity 0.3s;
450
+ }
451
+
452
+ .modal.show {
453
+ opacity: 1;
454
+ pointer-events: all;
455
+ }
456
+
457
+ .modal-content {
458
+ background: white;
459
+ border-radius: 16px;
460
+ padding: 2rem;
461
+ max-width: 400px;
462
+ width: 90%;
463
+ transform: scale(0.9);
464
+ transition: transform 0.3s;
465
+ }
466
+
467
+ .modal.show .modal-content {
468
+ transform: scale(1);
469
+ }
470
+
471
+ .modal h3 {
472
+ margin-bottom: 1rem;
473
+ }
474
+
475
+ .modal p {
476
+ color: var(--text-secondary);
477
+ margin-bottom: 1.5rem;
478
+ }
479
+
480
+ .modal-actions {
481
+ display: flex;
482
+ gap: 1rem;
483
+ justify-content: flex-end;
484
+ }
485
+
486
+ /* Footer */
487
+ .footer {
488
+ background: rgba(255, 255, 255, 0.95);
489
+ padding: 1.5rem 0;
490
+ text-align: center;
491
+ color: var(--text-secondary);
492
+ margin-top: auto;
493
+ }
494
+
495
+ /* Utility Classes */
496
+ .hidden {
497
+ display: none !important;
498
+ }
499
+
500
+ .text-center {
501
+ text-align: center;
502
+ }
503
+
504
+ /* Responsive Design */
505
+ @media (min-width: 768px) {
506
+ .scheduler-section {
507
+ grid-template-columns: 2fr 1fr;
508
+ }
509
+ }
510
+
511
+ @media (max-width: 640px) {
512
+ .header-content {
513
+ flex-direction: column;
514
+ gap: 1rem;
515
+ }
516
+
517
+ .form-actions {
518
+ flex-direction: column;
519
+ }
520
+
521
+ .radio-group {
522
+ flex-direction: column;
523
+ gap: 1rem;
524
+ }
525
+
526
+ .scheduler-card,
527
+ .scheduled-messages-card {
528
+ padding: 1.5rem;
529
+ }
530
+ }
531
+
532
+ /* Animations */
533
+ @keyframes fadeIn {
534
+ from {
535
+ opacity: 0;
536
+ transform: translateY(20px);
537
+ }
538
+ to {
539
+ opacity: 1;
540
+ transform: translateY(0);
541
+ }
542
+ }
543
+
544
+ .fade-in {
545
+ animation: fadeIn 0.5s ease-out;
546
+ }
547
+
548
+ /* Loading Spinner */
549
+ .spinner {
550
+ width: 20px;
551
+ height: 20px;
552
+ border: 3px solid var(--border-color);
553
+ border-top-color: var(--primary-color);
554
+ border-radius: 50%;
555
+ animation: spin 1s linear infinite;
556
+ }
557
+
558
+ @keyframes spin {
559
+ to { transform: rotate(360deg); }
560
+ }
561
+
562
+ /* Success/Error Messages */
563
+ .toast {
564
+ position: fixed;
565
+ bottom: 2rem;
566
+ right: 2rem;
567
+ padding: 1rem 1.5rem;
568
+ background: white;
569
+ border-radius: 8px;
570
+ box-shadow: var(--shadow-lg);
571
+ display: flex;
572
+ align-items: center;
573
+ gap: 0.75rem;
574
+ transform: translateX(400px);
575
+ transition: transform 0.3s;
576
+ z-index: 1001;
577
+ }
578
+
579
+ .toast.show {
580
+ transform: translateX(0);
581
+ }
582
+
583
+ .toast.success {
584
+ border-left: 4px solid var(--success-color);
585
+ }
586
+
587
+ .toast.error {
588
+ border-left: 4px solid var(--danger-color);
589
+ }
590
+
591
+ .toast.warning {
592
+ border-left: 4px solid var(--warning-color);
593
+ }
assets/js/app.js ADDED
@@ -0,0 +1 @@
 
 
1
+ // generated stub
index.html CHANGED
@@ -1,19 +1,156 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="description" content="Telegram Message Scheduler - Schedule your messages to be sent at specific times">
7
+ <meta name="keywords" content="telegram, scheduler, messages, automation">
8
+ <title>Telegram Message Scheduler</title>
9
+ <link rel="stylesheet" href="assets/css/styles.css">
10
+ <link rel="preconnect" href="https://fonts.googleapis.com">
11
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13
+ </head>
14
+ <body>
15
+ <header class="header">
16
+ <div class="container">
17
+ <div class="header-content">
18
+ <div class="logo">
19
+ <svg class="logo-icon" viewBox="0 0 24 24" fill="currentColor">
20
+ <path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm5.894 8.221l-1.97 9.28c-.145.658-.537.818-1.084.508l-3-2.21-1.446 1.394c-.14.18-.357.295-.6.295-.002 0-.003 0-.005 0l.213-3.054 5.56-5.022c.24-.213-.054-.334-.373-.121l-6.869 4.326-2.96-.924c-.64-.203-.658-.64.135-.954l11.566-4.458c.538-.196 1.006.128.832.941z"/>
21
+ </svg>
22
+ <h1>Telegram Scheduler</h1>
23
+ </div>
24
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">Built with anycoder</a>
25
+ </div>
26
+ </div>
27
+ </header>
28
+
29
+ <main class="main">
30
+ <div class="container">
31
+ <div class="scheduler-container">
32
+ <div class="auth-section" id="authSection">
33
+ <div class="auth-card">
34
+ <h2>Connect to Telegram</h2>
35
+ <p class="auth-description">Enter your API credentials to connect your Telegram account</p>
36
+ <form id="authForm">
37
+ <div class="form-group">
38
+ <label for="apiId">API ID</label>
39
+ <input type="number" id="apiId" required placeholder="Enter your API ID">
40
+ </div>
41
+ <div class="form-group">
42
+ <label for="apiHash">API Hash</label>
43
+ <input type="password" id="apiHash" required placeholder="Enter your API Hash">
44
+ </div>
45
+ <div class="form-group">
46
+ <label for="sessionName">Session Name</label>
47
+ <input type="text" id="sessionName" value="user_session" placeholder="Session name (optional)">
48
+ </div>
49
+ <button type="submit" class="btn btn-primary">Connect</button>
50
+ </form>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="scheduler-section hidden" id="schedulerSection">
55
+ <div class="status-bar">
56
+ <div class="status-indicator" id="statusIndicator">
57
+ <span class="status-dot"></span>
58
+ <span class="status-text" id="statusText">Not connected</span>
59
+ </div>
60
+ <button class="btn btn-secondary" id="disconnectBtn">Disconnect</button>
61
+ </div>
62
+
63
+ <div class="scheduler-card">
64
+ <h2>Schedule Message</h2>
65
+ <form id="scheduleForm">
66
+ <div class="form-group">
67
+ <label for="recipient">Recipient (@username or ID)</label>
68
+ <input type="text" id="recipient" required placeholder="@username or user_id">
69
+ </div>
70
+ <div class="form-group">
71
+ <label for="message">Message</label>
72
+ <textarea id="message" required placeholder="Type your message here..." rows="6"></textarea>
73
+ <div class="char-count">
74
+ <span id="charCount">0</span> / 4096 characters
75
+ </div>
76
+ </div>
77
+ <div class="schedule-options">
78
+ <div class="form-group">
79
+ <label for="sendNow">Send Options</label>
80
+ <div class="radio-group">
81
+ <label class="radio-label">
82
+ <input type="radio" name="sendOption" value="now" id="sendNow" checked>
83
+ <span class="radio-custom"></span>
84
+ Send Now
85
+ </label>
86
+ <label class="radio-label">
87
+ <input type="radio" name="sendOption" value="schedule" id="scheduleLater">
88
+ <span class="radio-custom"></span>
89
+ Schedule for Later
90
+ </label>
91
+ </div>
92
+ </div>
93
+ <div class="form-group schedule-time hidden" id="scheduleTimeGroup">
94
+ <label for="scheduleDateTime">Schedule Date & Time</label>
95
+ <input type="datetime-local" id="scheduleDateTime">
96
+ </div>
97
+ <div class="form-group schedule-time hidden" id="delayGroup">
98
+ <label for="delayMinutes">Delay (minutes)</label>
99
+ <input type="number" id="delayMinutes" min="1" placeholder="Enter minutes">
100
+ </div>
101
+ </div>
102
+ <div class="form-actions">
103
+ <button type="submit" class="btn btn-primary" id="sendBtn">Send Message</button>
104
+ <button type="button" class="btn btn-secondary" id="clearBtn">Clear</button>
105
+ </div>
106
+ </form>
107
+ <div class="message-status" id="messageStatus">
108
+ <span class="status-icon"></span>
109
+ <span class="status-message"></span>
110
+ </div>
111
+ </div>
112
+
113
+ <div class="scheduled-messages-card">
114
+ <div class="card-header">
115
+ <h3>Scheduled Messages</h3>
116
+ <button class="btn btn-icon" id="refreshBtn" title="Refresh">
117
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
118
+ <path d="M23 4v6h-6M1 20v-6h6M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15"/>
119
+ </svg>
120
+ </button>
121
+ </div>
122
+ <div class="messages-list" id="messagesList">
123
+ <div class="empty-state">
124
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
125
+ <path d="M12 2L2 7l10 5 10-5-10-5z"/>
126
+ <path d="M2 17l10 5 10-5M2 12l10 5 10-5"/>
127
+ </svg>
128
+ <p>No scheduled messages</p>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ </main>
136
+
137
+ <footer class="footer">
138
+ <div class="container">
139
+ <p>&copy; 2024 Telegram Scheduler. Secure message scheduling powered by MTProto.</p>
140
+ </div>
141
+ </footer>
142
+
143
+ <div class="modal hidden" id="confirmModal">
144
+ <div class="modal-content">
145
+ <h3>Confirm Action</h3>
146
+ <p id="modalMessage">Are you sure you want to proceed?</p>
147
+ <div class="modal-actions">
148
+ <button class="btn btn-secondary" id="modalCancel">Cancel</button>
149
+ <button class="btn btn-primary" id="modalConfirm">Confirm</button>
150
+ </div>
151
+ </div>
152
+ </div>
153
+
154
+ <script src="assets/js/app.js"></script>
155
+ </body>
156
+ </html>