@zintrust/workers 0.4.43 → 0.4.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1350 +0,0 @@
1
- :root {
2
- --bg: #0b1220;
3
- --card: #0f172a;
4
- --border: #1e293b;
5
- --text: #e2e8f0;
6
- --muted: #94a3b8;
7
- --accent: #38bdf8;
8
- --accent-hover: #0ea5e9;
9
-
10
- /* Modern Utilities */
11
- --surface-hover: #1e293b;
12
- --surface-active: #334155;
13
- --input-bg: #0f172a;
14
-
15
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
16
- --shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
17
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
18
-
19
- /* Brand Colors */
20
- --primary: #0ea5e9;
21
- --success: #22c55e;
22
- --warning: #f59e0b;
23
- --danger: #ef4444;
24
- --info: #3b82f6;
25
- }
26
-
27
- html[data-theme='light'] {
28
- --bg: #f1f5f9;
29
- --card: #ffffff;
30
- --border: #e2e8f0;
31
- --text: #334155;
32
- --muted: #64748b;
33
-
34
- --surface-hover: #f8fafc;
35
- --surface-active: #e2e8f0;
36
- --input-bg: #ffffff;
37
-
38
- --shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
39
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.05), 0 4px 6px -4px rgb(0 0 0 / 0.02);
40
- }
41
-
42
- * {
43
- margin: 0;
44
- padding: 0;
45
- box-sizing: border-box;
46
- }
47
-
48
- body {
49
- font-family:
50
- 'Inter',
51
- system-ui,
52
- -apple-system,
53
- sans-serif;
54
- background: var(--bg);
55
- color: var(--text);
56
- line-height: 1.5;
57
- transition:
58
- background-color 0.3s ease,
59
- color 0.3s ease;
60
- -webkit-font-smoothing: antialiased;
61
- }
62
-
63
- .container {
64
- max-width: 1400px;
65
- margin: 0 auto;
66
- padding: 40px 24px;
67
- }
68
-
69
- /* Transitions */
70
- .card,
71
- .header,
72
- .table-container,
73
- .btn,
74
- .action-btn,
75
- input,
76
- select {
77
- transition: all 0.2s ease-in-out;
78
- }
79
-
80
- /* Header Styles */
81
- .header {
82
- background: var(--card);
83
- padding: 24px 32px;
84
- border: 1px solid var(--border);
85
- border-radius: 16px;
86
- margin-bottom: 32px;
87
- box-shadow: var(--shadow);
88
- }
89
-
90
- .header-top {
91
- display: flex;
92
- justify-content: space-between;
93
- align-items: center;
94
- margin-bottom: 24px;
95
- }
96
-
97
- .header h1 {
98
- font-size: 24px;
99
- font-weight: 700;
100
- letter-spacing: -0.025em;
101
- color: var(--text);
102
- }
103
-
104
- .header-actions {
105
- display: flex;
106
- gap: 12px;
107
- align-items: center;
108
- }
109
-
110
- /* Navigation Bar */
111
- .nav-bar {
112
- padding-bottom: 24px;
113
- border-bottom: 1px solid var(--border);
114
- margin-bottom: 24px;
115
- }
116
-
117
- .nav-links {
118
- display: flex;
119
- gap: 32px;
120
- align-items: center;
121
- }
122
-
123
- .nav-link {
124
- color: var(--muted);
125
- text-decoration: none;
126
- font-size: 14px;
127
- font-weight: 500;
128
- padding: 8px 12px;
129
- border-radius: 8px;
130
- transition: all 0.2s ease;
131
- position: relative;
132
- }
133
-
134
- .nav-link:hover {
135
- color: var(--text);
136
- background: var(--surface-hover);
137
- }
138
-
139
- .nav-link.active {
140
- color: var(--primary);
141
- background: rgba(14, 165, 233, 0.1);
142
- }
143
-
144
- .nav-link.active::after {
145
- content: '';
146
- position: absolute;
147
- bottom: -25px;
148
- left: 50%;
149
- transform: translateX(-50%);
150
- width: 40px;
151
- height: 3px;
152
- background: var(--primary);
153
- border-radius: 2px;
154
- }
155
-
156
- /* Buttons & Inputs */
157
- .btn {
158
- display: inline-flex;
159
- align-items: center;
160
- gap: 8px;
161
- padding: 10px 16px;
162
- border-radius: 8px;
163
- font-size: 14px;
164
- font-weight: 500;
165
- cursor: pointer;
166
- border: 1px solid var(--border);
167
- background: var(--card);
168
- color: var(--text);
169
- box-shadow: var(--shadow-sm);
170
- height: 40px;
171
- }
172
-
173
- .btn:hover {
174
- background: var(--surface-hover);
175
- transform: translateY(-1px);
176
- border-color: var(--muted);
177
- }
178
-
179
- .btn-primary {
180
- background: var(--primary);
181
- color: white;
182
- border: 1px solid var(--primary);
183
- }
184
-
185
- .btn-primary:hover {
186
- background: #0284c7; /* Darker blue */
187
- transform: translateY(-1px);
188
- box-shadow: 0 4px 12px rgba(14, 165, 233, 0.25);
189
- color: white;
190
- }
191
-
192
- .theme-toggle {
193
- background: transparent;
194
- color: var(--text);
195
- border: 1px solid var(--border);
196
- padding: 8px 12px;
197
- border-radius: 8px;
198
- font-size: 13px;
199
- font-weight: 500;
200
- cursor: pointer;
201
- display: flex;
202
- align-items: center;
203
- gap: 8px;
204
- height: 40px;
205
- }
206
-
207
- .theme-toggle:hover {
208
- background: var(--surface-hover);
209
- }
210
-
211
- /* Filters */
212
- .filters-bar {
213
- display: flex;
214
- gap: 16px;
215
- align-items: center;
216
- flex-wrap: wrap;
217
- padding-top: 24px;
218
- border-top: 1px solid var(--border);
219
- }
220
-
221
- .filter-group {
222
- display: flex;
223
- align-items: center;
224
- gap: 10px;
225
- }
226
-
227
- .filter-group label {
228
- font-size: 13px;
229
- font-weight: 600;
230
- color: var(--muted);
231
- text-transform: uppercase;
232
- letter-spacing: 0.05em;
233
- }
234
-
235
- .filter-group select,
236
- .filter-group input {
237
- padding: 8px 12px;
238
- border: 1px solid var(--border);
239
- border-radius: 8px;
240
- font-size: 14px;
241
- background: var(--input-bg);
242
- color: var(--text);
243
- min-width: 140px;
244
- height: 38px;
245
- }
246
-
247
- .filter-group select:focus,
248
- .filter-group input:focus {
249
- outline: none;
250
- border-color: var(--primary);
251
- box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.1);
252
- }
253
-
254
- .search-box {
255
- position: relative;
256
- display: flex;
257
- align-items: center;
258
- width: 280px;
259
- }
260
-
261
- .search-box .search-icon {
262
- position: absolute;
263
- left: 12px;
264
- width: 16px;
265
- height: 16px;
266
- color: var(--muted);
267
- stroke: currentColor;
268
- stroke-width: 2;
269
- fill: none;
270
- pointer-events: none;
271
- }
272
-
273
- .search-box input {
274
- width: 100%;
275
- height: 40px;
276
- padding: 8px 12px 8px 36px;
277
- background: var(--input-bg);
278
- border: 1px solid var(--border);
279
- border-radius: 8px;
280
- color: var(--text);
281
- font-size: 14px;
282
- transition: all 0.2s ease;
283
- }
284
-
285
- .search-box input:focus {
286
- outline: none;
287
- border-color: var(--primary);
288
- box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.1);
289
- }
290
-
291
- /* Summary Bar */
292
- .summary-bar {
293
- margin: 16px 0 0;
294
- padding: 16px 20px;
295
- background: var(--card);
296
- border: 1px solid var(--border);
297
- border-radius: 12px;
298
- display: flex;
299
- flex-wrap: wrap;
300
- gap: 16px 24px;
301
- align-items: center;
302
- box-shadow: var(--shadow-sm);
303
- }
304
-
305
- .summary-item {
306
- display: flex;
307
- flex-direction: column;
308
- gap: 4px;
309
- min-width: 120px;
310
- }
311
-
312
- .summary-label {
313
- font-size: 12px;
314
- text-transform: uppercase;
315
- letter-spacing: 0.05em;
316
- color: var(--muted);
317
- font-weight: 600;
318
- }
319
-
320
- .summary-value {
321
- font-size: 16px;
322
- font-weight: 700;
323
- color: var(--text);
324
- }
325
-
326
- .drivers-list {
327
- display: flex;
328
- gap: 8px;
329
- flex-wrap: wrap;
330
- align-items: center;
331
- }
332
-
333
- .driver-chip {
334
- font-size: 12px;
335
- font-weight: 600;
336
- color: var(--text);
337
- background: var(--surface-hover);
338
- border: 1px solid var(--border);
339
- padding: 4px 10px;
340
- border-radius: 9999px;
341
- }
342
-
343
- /* Table Container */
344
- .table-container {
345
- background: var(--card);
346
- border: 1px solid var(--border);
347
- border-radius: 16px;
348
- overflow: hidden;
349
- box-shadow: var(--shadow-lg);
350
- }
351
-
352
- table {
353
- width: 100%;
354
- border-collapse: separate;
355
- border-spacing: 0;
356
- }
357
-
358
- th {
359
- background: var(--surface-hover);
360
- padding: 16px 24px;
361
- text-align: left;
362
- font-weight: 600;
363
- font-size: 12px;
364
- color: var(--muted);
365
- text-transform: uppercase;
366
- letter-spacing: 0.05em;
367
- border-bottom: 1px solid var(--border);
368
- white-space: nowrap;
369
- }
370
-
371
- td {
372
- padding: 20px 24px;
373
- border-bottom: 1px solid var(--border);
374
- font-size: 14px;
375
- vertical-align: middle;
376
- }
377
-
378
- tbody tr {
379
- transition: background-color 0.15s ease;
380
- }
381
-
382
- tbody tr:hover {
383
- background: var(--surface-hover);
384
- }
385
-
386
- tbody tr:last-child td {
387
- border-bottom: none;
388
- }
389
-
390
- /* Worker Identity */
391
- .worker-name {
392
- font-weight: 600;
393
- color: var(--text);
394
- font-size: 15px;
395
- margin-bottom: 4px;
396
- }
397
-
398
- .worker-queue {
399
- font-size: 12px;
400
- color: var(--muted);
401
- font-family: monospace;
402
- background: var(--surface-active);
403
- padding: 2px 6px;
404
- border-radius: 4px;
405
- display: inline-block;
406
- }
407
-
408
- /* Typography & Badges */
409
- .status-badge {
410
- display: inline-flex;
411
- align-items: center;
412
- gap: 8px;
413
- padding: 6px 10px;
414
- border-radius: 9999px; /* Pill shape */
415
- font-size: 12px;
416
- font-weight: 600;
417
- width: fit-content;
418
- }
419
-
420
- .status-running {
421
- background: rgba(34, 197, 94, 0.1);
422
- color: var(--success);
423
- border: 1px solid rgba(34, 197, 94, 0.2);
424
- }
425
-
426
- .status-stopped {
427
- background: rgba(239, 68, 68, 0.1);
428
- color: var(--danger);
429
- border: 1px solid rgba(239, 68, 68, 0.2);
430
- }
431
-
432
- .status-error {
433
- background: rgba(245, 158, 11, 0.1);
434
- color: var(--warning);
435
- border: 1px solid rgba(245, 158, 11, 0.2);
436
- }
437
-
438
- .status-dot {
439
- width: 8px;
440
- height: 8px;
441
- border-radius: 50%;
442
- box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1);
443
- }
444
-
445
- .status-running .status-dot {
446
- background: var(--success);
447
- }
448
- .status-stopped .status-dot {
449
- background: var(--danger);
450
- }
451
- .status-error .status-dot {
452
- background: var(--warning);
453
- }
454
-
455
- .health-indicator {
456
- display: flex;
457
- align-items: center;
458
- }
459
-
460
- .health-dot {
461
- display: inline-block;
462
- width: 8px;
463
- height: 8px;
464
- border-radius: 50%;
465
- margin-right: 6px;
466
- }
467
- .health-healthy {
468
- background: var(--success);
469
- }
470
- .health-unhealthy {
471
- background: var(--danger);
472
- }
473
- .health-degraded {
474
- background: var(--warning);
475
- }
476
- .health-warning {
477
- background: var(--warning);
478
- }
479
- .health-unknown {
480
- background: var(--muted);
481
- }
482
-
483
- /* Driver & Version */
484
- .driver-badge {
485
- background: var(--surface-hover);
486
- color: var(--text);
487
- padding: 4px 8px;
488
- border-radius: 6px;
489
- font-size: 12px;
490
- font-weight: 600;
491
- border: 1px solid var(--border);
492
- }
493
-
494
- .version-badge {
495
- font-family: monospace;
496
- color: var(--muted);
497
- font-size: 12px;
498
- }
499
-
500
- /* Performance Icons */
501
- .performance-icons {
502
- display: flex;
503
- gap: 16px;
504
- }
505
-
506
- .perf-icon {
507
- display: flex;
508
- align-items: center;
509
- gap: 6px;
510
- font-size: 13px;
511
- font-weight: 500;
512
- }
513
-
514
- .perf-icon svg {
515
- width: 16px;
516
- height: 16px;
517
- stroke-width: 2.5;
518
- }
519
-
520
- .perf-icon.processed {
521
- color: var(--success);
522
- }
523
- .perf-icon.time {
524
- color: var(--primary);
525
- }
526
- .perf-icon.memory {
527
- color: #8b5cf6;
528
- }
529
-
530
- /* Action Buttons with SVGs */
531
- .actions-cell {
532
- display: flex;
533
- gap: 8px;
534
- }
535
-
536
- .action-btn {
537
- width: 34px;
538
- height: 34px;
539
- padding: 0;
540
- display: flex;
541
- align-items: center;
542
- justify-content: center;
543
- border: 1px solid var(--border);
544
- border-radius: 8px;
545
- background: var(--card);
546
- color: var(--muted);
547
- transition: all 0.2s;
548
- }
549
-
550
- .action-btn:hover {
551
- background: var(--surface-hover);
552
- color: var(--text);
553
- border-color: var(--muted);
554
- transform: translateY(-1px);
555
- box-shadow: var(--shadow-sm);
556
- }
557
-
558
- .action-btn svg {
559
- width: 16px;
560
- height: 16px;
561
- stroke: currentColor;
562
- stroke-width: 2;
563
- fill: none;
564
- stroke-linecap: round;
565
- stroke-linejoin: round;
566
- }
567
-
568
- /* Specific Action Colors On Hover */
569
- .action-btn.start:hover {
570
- color: var(--success);
571
- border-color: var(--success);
572
- background: rgba(34, 197, 94, 0.1);
573
- }
574
- .action-btn.stop:hover {
575
- color: var(--danger);
576
- border-color: var(--danger);
577
- background: rgba(239, 68, 68, 0.1);
578
- }
579
- .action-btn.restart:hover {
580
- color: var(--warning);
581
- border-color: var(--warning);
582
- background: rgba(245, 158, 11, 0.1);
583
- }
584
- .action-btn.debug:hover {
585
- color: var(--info);
586
- border-color: var(--info);
587
- background: rgba(59, 130, 246, 0.1);
588
- }
589
- .action-btn.delete:hover {
590
- color: var(--danger);
591
- border-color: var(--danger);
592
- background: rgba(239, 68, 68, 0.1);
593
- }
594
-
595
- /* Expandable Rows */
596
- .expandable-row {
597
- display: none;
598
- }
599
-
600
- .expandable-row.open {
601
- display: table-row;
602
- }
603
-
604
- .expander {
605
- cursor: pointer;
606
- }
607
-
608
- .details-content {
609
- padding: 32px;
610
- background: var(--surface-hover);
611
- border-top: 1px solid var(--border);
612
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02);
613
- }
614
-
615
- .details-grid {
616
- display: grid;
617
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
618
- gap: 24px;
619
- }
620
-
621
- .detail-section {
622
- background: var(--card);
623
- padding: 20px;
624
- border-radius: 12px;
625
- border: 1px solid var(--border);
626
- box-shadow: var(--shadow-sm);
627
- }
628
-
629
- .detail-section h4 {
630
- font-size: 13px;
631
- text-transform: uppercase;
632
- letter-spacing: 0.05em;
633
- color: var(--muted);
634
- margin-bottom: 16px;
635
- font-weight: 700;
636
- display: flex;
637
- align-items: center;
638
- gap: 8px;
639
- }
640
-
641
- .detail-item {
642
- display: flex;
643
- justify-content: space-between;
644
- align-items: center;
645
- padding: 8px 0;
646
- font-size: 13px;
647
- border-bottom: 1px solid var(--border);
648
- }
649
-
650
- .detail-item:last-child {
651
- border-bottom: none;
652
- }
653
-
654
- .detail-item span:first-child {
655
- color: var(--muted);
656
- font-weight: 500;
657
- }
658
-
659
- .detail-item span:last-child {
660
- color: var(--text);
661
- font-weight: 600;
662
- }
663
-
664
- /* Logo */
665
- .logo-frame {
666
- width: 40px;
667
- height: 40px;
668
- border-radius: 10px;
669
- background: linear-gradient(135deg, rgba(14, 165, 233, 0.1) 0%, rgba(56, 189, 248, 0.2) 100%);
670
- border: 1px solid rgba(14, 165, 233, 0.3);
671
- display: flex;
672
- align-items: center;
673
- justify-content: center;
674
- }
675
-
676
- .logo-img {
677
- width: 26px;
678
- height: 26px;
679
- display: block;
680
- }
681
-
682
- .logo {
683
- width: 34px;
684
- height: 34px;
685
- border-radius: 9px;
686
- border: 1px solid rgba(14, 165, 233, 0.35);
687
- background: linear-gradient(180deg, rgba(14, 165, 233, 0.25), rgba(2, 132, 199, 0.12));
688
- }
689
-
690
- /* Icons Generic */
691
- .icon {
692
- width: 18px;
693
- height: 18px;
694
- fill: none;
695
- stroke: currentColor;
696
- stroke-width: 2;
697
- stroke-linecap: round;
698
- stroke-linejoin: round;
699
- }
700
-
701
- /* Pagination */
702
- .pagination {
703
- margin-top: 20px;
704
- display: flex;
705
- justify-content: space-between;
706
- align-items: center;
707
- padding: 16px 24px;
708
- background: var(--card);
709
- border: 1px solid var(--border);
710
- border-radius: 12px;
711
- box-shadow: var(--shadow);
712
- }
713
-
714
- .page-btn {
715
- width: 38px;
716
- height: 38px;
717
- display: inline-flex;
718
- align-items: center;
719
- justify-content: center;
720
- padding: 0;
721
- border: 1px solid var(--border);
722
- border-radius: 10px;
723
- background: var(--card);
724
- color: var(--muted);
725
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
726
- font-size: 14px;
727
- font-weight: 500;
728
- cursor: pointer;
729
- }
730
-
731
- .page-btn:hover:not(:disabled) {
732
- background: var(--surface-hover);
733
- color: var(--text);
734
- border-color: var(--border);
735
- transform: translateY(-1px);
736
- box-shadow: var(--shadow-sm);
737
- }
738
-
739
- .page-btn.active {
740
- background: var(--primary);
741
- color: white;
742
- border-color: var(--primary);
743
- box-shadow: 0 4px 6px -1px rgba(14, 165, 233, 0.3);
744
- }
745
-
746
- .page-btn:disabled {
747
- opacity: 0.4;
748
- cursor: not-allowed;
749
- background: var(--bg);
750
- }
751
-
752
- .page-btn svg {
753
- width: 18px;
754
- height: 18px;
755
- stroke-width: 2px;
756
- }
757
-
758
- /* Page Size Selector */
759
- .pagination-controls {
760
- display: flex;
761
- align-items: center;
762
- gap: 8px;
763
- flex-wrap: wrap;
764
- }
765
-
766
- .page-size-selector {
767
- display: flex;
768
- align-items: center;
769
- gap: 8px;
770
- margin-left: 16px;
771
- padding-left: 16px;
772
- border-left: 1px solid var(--border);
773
- }
774
-
775
- .page-size-selector label {
776
- font-size: 13px;
777
- color: var(--muted);
778
- font-weight: 500;
779
- }
780
-
781
- .page-size-selector select {
782
- padding: 0 32px 0 12px;
783
- height: 38px;
784
- border: 1px solid var(--border);
785
- border-radius: 10px;
786
- background-color: var(--card);
787
- color: var(--text);
788
- font-size: 13px;
789
- font-weight: 500;
790
- cursor: pointer;
791
- appearance: none;
792
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
793
- background-repeat: no-repeat;
794
- background-position: right 8px center;
795
- background-size: 16px;
796
- transition: all 0.2s;
797
- }
798
-
799
- .page-size-selector select:hover {
800
- background-color: var(--surface-hover);
801
- border-color: var(--muted);
802
- }
803
-
804
- .page-size-selector select:focus {
805
- outline: none;
806
- border-color: var(--primary);
807
- box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
808
- }
809
-
810
- /* Toggle Switch */
811
- .auto-start-toggle,
812
- .auto-switch-toggle {
813
- position: relative;
814
- display: inline-block;
815
- width: 44px;
816
- height: 24px;
817
- cursor: pointer;
818
- }
819
-
820
- .auto-start-toggle input,
821
- .auto-switch-toggle input {
822
- opacity: 0;
823
- width: 0;
824
- height: 0;
825
- }
826
-
827
- .toggle-slider {
828
- position: absolute;
829
- cursor: pointer;
830
- top: 0;
831
- left: 0;
832
- right: 0;
833
- bottom: 0;
834
- background-color: var(--surface-active);
835
- border: 1px solid var(--border);
836
- transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
837
- border-radius: 34px;
838
- }
839
-
840
- .toggle-slider:before {
841
- position: absolute;
842
- content: '';
843
- height: 18px;
844
- width: 18px;
845
- left: 2px;
846
- bottom: 2px;
847
- background-color: var(--muted);
848
- transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
849
- border-radius: 50%;
850
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
851
- }
852
-
853
- input:checked + .toggle-slider {
854
- background-color: rgba(14, 165, 233, 0.15); /* Primary transparent */
855
- border-color: var(--primary);
856
- }
857
-
858
- input:checked + .toggle-slider:before {
859
- transform: translateX(20px);
860
- background-color: var(--primary);
861
- }
862
-
863
- /* Hover generic for toggles */
864
- .auto-start-toggle:hover .toggle-slider,
865
- .auto-switch-toggle:hover .toggle-slider {
866
- border-color: var(--muted);
867
- }
868
-
869
- /* Responsive Design - Tablet */
870
- @media (max-width: 1024px) {
871
- .container {
872
- padding: 30px 20px;
873
- }
874
-
875
- .header {
876
- padding: 20px 24px;
877
- margin-bottom: 24px;
878
- }
879
-
880
- .header-top {
881
- flex-direction: column;
882
- align-items: flex-start;
883
- gap: 16px;
884
- }
885
-
886
- .header-actions {
887
- width: 100%;
888
- justify-content: flex-start;
889
- flex-wrap: wrap;
890
- }
891
-
892
- .filters-bar {
893
- gap: 12px;
894
- flex-wrap: wrap;
895
- }
896
-
897
- .search-box {
898
- width: 240px;
899
- }
900
-
901
- .summary-bar {
902
- flex-wrap: wrap;
903
- gap: 12px 16px;
904
- }
905
-
906
- .summary-item {
907
- min-width: 100px;
908
- }
909
-
910
- .table-container {
911
- border-radius: 12px;
912
- overflow-x: auto;
913
- -webkit-overflow-scrolling: touch;
914
- }
915
-
916
- table {
917
- min-width: 900px;
918
- }
919
-
920
- .details-grid {
921
- grid-template-columns: 1fr;
922
- gap: 20px;
923
- }
924
- }
925
-
926
- /* Responsive Design - Mobile */
927
- @media (max-width: 768px) {
928
- .container {
929
- padding: 16px 12px;
930
- }
931
-
932
- .header {
933
- padding: 16px;
934
- margin-bottom: 20px;
935
- border-radius: 12px;
936
- }
937
-
938
- .header h1 {
939
- font-size: 20px;
940
- }
941
-
942
- .header-top > div:first-child {
943
- gap: 12px;
944
- }
945
-
946
- .logo-img {
947
- width: 32px;
948
- height: 32px;
949
- }
950
-
951
- .header-actions {
952
- gap: 8px;
953
- }
954
-
955
- .theme-toggle {
956
- padding: 6px 10px;
957
- font-size: 12px;
958
- height: 32px;
959
- }
960
-
961
- .nav-bar {
962
- padding-bottom: 16px;
963
- margin-bottom: 16px;
964
- }
965
-
966
- .nav-links {
967
- gap: 16px;
968
- flex-wrap: wrap;
969
- }
970
-
971
- .nav-link {
972
- padding: 6px 10px;
973
- font-size: 13px;
974
- }
975
-
976
- .filters-bar {
977
- flex-direction: column;
978
- align-items: stretch;
979
- gap: 16px;
980
- }
981
-
982
- .filter-group {
983
- flex-direction: column;
984
- align-items: flex-start;
985
- width: 100%;
986
- gap: 6px;
987
- }
988
-
989
- .filter-group label {
990
- font-size: 12px;
991
- }
992
-
993
- .filter-group select,
994
- .filter-group input {
995
- width: 100%;
996
- height: 40px;
997
- }
998
-
999
- .search-box {
1000
- width: 100%;
1001
- }
1002
-
1003
- .search-box input {
1004
- height: 40px;
1005
- }
1006
-
1007
- .summary-bar {
1008
- padding: 12px 16px;
1009
- gap: 12px;
1010
- }
1011
-
1012
- .summary-item {
1013
- min-width: 80px;
1014
- }
1015
-
1016
- .summary-label {
1017
- font-size: 11px;
1018
- }
1019
-
1020
- .summary-value {
1021
- font-size: 14px;
1022
- }
1023
-
1024
- .table-container {
1025
- border-radius: 8px;
1026
- margin: 0 -12px;
1027
- padding: 0 12px;
1028
- }
1029
-
1030
- table {
1031
- min-width: 700px;
1032
- font-size: 13px;
1033
- }
1034
-
1035
- th {
1036
- padding: 12px 16px;
1037
- font-size: 11px;
1038
- }
1039
-
1040
- td {
1041
- padding: 16px;
1042
- font-size: 13px;
1043
- }
1044
-
1045
- .worker-name {
1046
- font-size: 14px;
1047
- }
1048
-
1049
- .worker-queue {
1050
- font-size: 11px;
1051
- }
1052
-
1053
- .status-badge {
1054
- padding: 4px 8px;
1055
- font-size: 11px;
1056
- }
1057
-
1058
- .action-btn {
1059
- width: 32px;
1060
- height: 32px;
1061
- padding: 0;
1062
- }
1063
-
1064
- .action-btn svg {
1065
- width: 14px;
1066
- height: 14px;
1067
- }
1068
-
1069
- .performance-icons {
1070
- gap: 8px;
1071
- }
1072
-
1073
- .perf-icon {
1074
- flex-direction: column;
1075
- gap: 4px;
1076
- min-width: 0;
1077
- }
1078
-
1079
- .perf-icon span {
1080
- font-size: 10px;
1081
- }
1082
-
1083
- .pagination {
1084
- flex-direction: column;
1085
- gap: 12px;
1086
- padding: 16px;
1087
- }
1088
-
1089
- .pagination-controls {
1090
- justify-content: center;
1091
- flex-wrap: wrap;
1092
- gap: 8px;
1093
- }
1094
-
1095
- .pagination-btn {
1096
- min-width: 36px;
1097
- height: 36px;
1098
- font-size: 13px;
1099
- }
1100
-
1101
- .page-size-selector {
1102
- margin-left: 0;
1103
- padding-left: 0;
1104
- border-left: none;
1105
- width: 100%;
1106
- justify-content: center;
1107
- margin-top: 12px;
1108
- padding-top: 12px;
1109
- border-top: 1px solid var(--border);
1110
- }
1111
-
1112
- .details-content {
1113
- padding: 16px;
1114
- }
1115
-
1116
- .details-grid {
1117
- grid-template-columns: 1fr;
1118
- gap: 16px;
1119
- }
1120
-
1121
- .detail-section {
1122
- padding: 16px;
1123
- }
1124
-
1125
- .detail-section h4 {
1126
- font-size: 14px;
1127
- margin-bottom: 12px;
1128
- }
1129
-
1130
- .detail-item {
1131
- flex-direction: column;
1132
- align-items: flex-start;
1133
- gap: 4px;
1134
- padding: 8px 0;
1135
- }
1136
-
1137
- .detail-item span:first-child {
1138
- font-size: 11px;
1139
- min-width: auto;
1140
- }
1141
-
1142
- .detail-item span:last-child {
1143
- font-size: 13px;
1144
- }
1145
-
1146
- .health-checks {
1147
- gap: 8px;
1148
- }
1149
-
1150
- .health-check {
1151
- flex-direction: column;
1152
- align-items: flex-start;
1153
- gap: 4px;
1154
- padding: 8px;
1155
- }
1156
-
1157
- .recent-logs-container {
1158
- max-height: 150px;
1159
- font-size: 10px;
1160
- }
1161
-
1162
- .log-entry {
1163
- flex-direction: column;
1164
- align-items: flex-start;
1165
- gap: 2px;
1166
- padding: 4px 0;
1167
- }
1168
- }
1169
-
1170
- /* Responsive Design - Small Mobile */
1171
- @media (max-width: 480px) {
1172
- .container {
1173
- padding: 12px 8px;
1174
- }
1175
-
1176
- .header {
1177
- padding: 12px;
1178
- }
1179
-
1180
- .header h1 {
1181
- font-size: 18px;
1182
- }
1183
-
1184
- .logo-img {
1185
- width: 28px;
1186
- height: 28px;
1187
- }
1188
-
1189
- .theme-toggle {
1190
- padding: 4px 8px;
1191
- font-size: 11px;
1192
- height: 28px;
1193
- }
1194
-
1195
- .nav-link {
1196
- padding: 4px 8px;
1197
- font-size: 12px;
1198
- }
1199
-
1200
- .summary-bar {
1201
- padding: 8px 12px;
1202
- }
1203
-
1204
- .table-container {
1205
- margin: 0 -8px;
1206
- padding: 0 8px;
1207
- }
1208
-
1209
- table {
1210
- min-width: 600px;
1211
- font-size: 12px;
1212
- }
1213
-
1214
- th {
1215
- padding: 8px 12px;
1216
- }
1217
-
1218
- td {
1219
- padding: 12px;
1220
- font-size: 12px;
1221
- }
1222
-
1223
- .action-btn {
1224
- width: 28px;
1225
- height: 28px;
1226
- }
1227
-
1228
- .action-btn svg {
1229
- width: 12px;
1230
- height: 12px;
1231
- }
1232
-
1233
- .perf-icon span {
1234
- font-size: 9px;
1235
- }
1236
-
1237
- .details-content {
1238
- padding: 12px;
1239
- }
1240
-
1241
- .detail-section {
1242
- padding: 12px;
1243
- }
1244
-
1245
- .detail-section h4 {
1246
- font-size: 13px;
1247
- }
1248
- }
1249
-
1250
- /* Hide/Show columns for mobile */
1251
- @media (max-width: 768px) {
1252
- .hide-mobile {
1253
- display: none;
1254
- }
1255
- }
1256
-
1257
- @media (max-width: 576px) {
1258
- .hide-small {
1259
- display: none;
1260
- }
1261
- }
1262
-
1263
- /* Mobile table scroll hint */
1264
- @media (max-width: 992px) {
1265
- .table-wrapper {
1266
- position: relative;
1267
- }
1268
-
1269
- .table-wrapper::after {
1270
- content: '';
1271
- position: absolute;
1272
- bottom: 0;
1273
- right: 0;
1274
- width: 30px;
1275
- height: 30px;
1276
- background: linear-gradient(135deg, transparent 0%, var(--card) 50%);
1277
- pointer-events: none;
1278
- border-radius: 0 0 8px 0;
1279
- }
1280
- }
1281
-
1282
- /* Touch-friendly interactions */
1283
- @media (hover: none) and (pointer: coarse) {
1284
- .action-btn:hover {
1285
- transform: none;
1286
- }
1287
-
1288
- .btn:hover {
1289
- transform: none;
1290
- }
1291
-
1292
- .nav-link:hover {
1293
- transform: none;
1294
- }
1295
-
1296
- .action-btn:active {
1297
- transform: scale(0.95);
1298
- }
1299
-
1300
- .btn:active {
1301
- transform: scale(0.98);
1302
- }
1303
- }
1304
-
1305
- /* Landscape mobile adjustments */
1306
- @media (max-width: 768px) and (orientation: landscape) {
1307
- .header {
1308
- margin-bottom: 16px;
1309
- }
1310
-
1311
- .filters-bar {
1312
- flex-direction: row;
1313
- flex-wrap: wrap;
1314
- gap: 8px;
1315
- }
1316
-
1317
- .filter-group {
1318
- flex-direction: row;
1319
- align-items: center;
1320
- width: auto;
1321
- flex: 1;
1322
- min-width: 0;
1323
- }
1324
-
1325
- .filter-group select,
1326
- .filter-group input {
1327
- width: 100%;
1328
- min-width: 0;
1329
- }
1330
-
1331
- .search-box {
1332
- width: 200px;
1333
- flex: 1;
1334
- }
1335
- }
1336
- .table-wrapper::after {
1337
- content: '';
1338
- position: absolute;
1339
- top: 0;
1340
- right: 0;
1341
- width: 20px;
1342
- height: 100%;
1343
- background: linear-gradient(to right, transparent, var(--card));
1344
- pointer-events: none;
1345
- opacity: 0;
1346
- transition: opacity 0.3s;
1347
- }
1348
- .table-wrapper:hover::after {
1349
- opacity: 1;
1350
- }