sinaliza 0.2.0 → 0.3.0

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,25 +1,163 @@
1
+ /* ============================================
2
+ Sinaliza Monitor — Dark Terminal Aesthetic
3
+ ============================================ */
4
+
5
+ :root {
6
+ --sz-bg: #0d1117;
7
+ --sz-surface: #161b22;
8
+ --sz-surface-raised: #1c2129;
9
+ --sz-border: #30363d;
10
+ --sz-border-subtle: #21262d;
11
+ --sz-text: #e6edf3;
12
+ --sz-text-secondary: #7d8590;
13
+ --sz-text-muted: #484f58;
14
+ --sz-accent: #58a6ff;
15
+ --sz-accent-hover: #79c0ff;
16
+ --sz-green: #3fb950;
17
+ --sz-green-bg: rgba(63, 185, 80, 0.15);
18
+ --sz-red: #f85149;
19
+ --sz-red-bg: rgba(248, 81, 73, 0.15);
20
+ --sz-amber: #d29922;
21
+ --sz-amber-bg: rgba(210, 153, 34, 0.15);
22
+ --sz-cyan: #39d2c0;
23
+ --sz-cyan-bg: rgba(57, 210, 192, 0.1);
24
+ --sz-purple: #bc8cff;
25
+ --sz-radius: 6px;
26
+ --sz-radius-sm: 4px;
27
+ --sz-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;
28
+ --sz-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
29
+ --sz-transition: 150ms ease;
30
+ }
31
+
32
+ /* Reset for engine isolation */
33
+ .sinaliza-root {
34
+ background: var(--sz-bg);
35
+ color: var(--sz-text);
36
+ font-family: var(--sz-font);
37
+ font-size: 14px;
38
+ line-height: 1.5;
39
+ min-height: 100vh;
40
+ -webkit-font-smoothing: antialiased;
41
+ -moz-osx-font-smoothing: grayscale;
42
+ }
43
+
44
+ /* ---- Navigation ---- */
45
+
46
+ .sinaliza-nav {
47
+ background: var(--sz-surface);
48
+ border-bottom: 1px solid var(--sz-border);
49
+ position: sticky;
50
+ top: 0;
51
+ z-index: 100;
52
+ }
53
+
54
+ .sinaliza-nav__container {
55
+ max-width: 1280px;
56
+ margin: 0 auto;
57
+ padding: 0 24px;
58
+ display: flex;
59
+ align-items: center;
60
+ height: 52px;
61
+ gap: 32px;
62
+ }
63
+
64
+ .sinaliza-nav__brand {
65
+ font-family: var(--sz-mono);
66
+ font-weight: 600;
67
+ font-size: 15px;
68
+ color: var(--sz-text);
69
+ letter-spacing: -0.02em;
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 8px;
73
+ }
74
+
75
+ .sinaliza-nav__brand::before {
76
+ content: "";
77
+ display: inline-block;
78
+ width: 8px;
79
+ height: 8px;
80
+ background: var(--sz-green);
81
+ border-radius: 50%;
82
+ box-shadow: 0 0 8px var(--sz-green);
83
+ animation: sz-pulse 2s ease-in-out infinite;
84
+ }
85
+
86
+ @keyframes sz-pulse {
87
+ 0%, 100% { opacity: 1; box-shadow: 0 0 8px var(--sz-green); }
88
+ 50% { opacity: 0.6; box-shadow: 0 0 4px var(--sz-green); }
89
+ }
90
+
91
+ .sinaliza-nav__links {
92
+ display: flex;
93
+ gap: 4px;
94
+ }
95
+
96
+ .sinaliza-nav__link {
97
+ color: var(--sz-text-secondary);
98
+ text-decoration: none;
99
+ font-size: 13px;
100
+ font-weight: 500;
101
+ padding: 6px 12px;
102
+ border-radius: var(--sz-radius-sm);
103
+ transition: color var(--sz-transition), background var(--sz-transition);
104
+ }
105
+
106
+ .sinaliza-nav__link:hover {
107
+ color: var(--sz-text);
108
+ background: var(--sz-surface-raised);
109
+ }
110
+
111
+ .sinaliza-nav__link--active {
112
+ color: var(--sz-text);
113
+ background: var(--sz-surface-raised);
114
+ }
115
+
116
+ /* ---- Dashboard Container ---- */
117
+
1
118
  .sinaliza-dashboard {
2
- max-width: 1200px;
119
+ max-width: 1280px;
3
120
  margin: 0 auto;
4
- padding: 20px;
5
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
6
- font-size: 14px;
7
- color: #1a1a1a;
121
+ padding: 28px 24px 48px;
8
122
  }
9
123
 
10
124
  .sinaliza-dashboard h1 {
11
- font-size: 24px;
125
+ font-size: 20px;
12
126
  font-weight: 600;
13
- margin-bottom: 20px;
127
+ color: var(--sz-text);
128
+ margin: 0 0 24px;
129
+ letter-spacing: -0.02em;
130
+ }
131
+
132
+ .sinaliza-dashboard h2 {
133
+ font-size: 16px;
134
+ font-weight: 600;
135
+ color: var(--sz-text);
136
+ margin: 32px 0 16px;
137
+ letter-spacing: -0.01em;
14
138
  }
15
139
 
16
- /* Filters */
140
+ /* ---- Header with action ---- */
141
+
142
+ .sinaliza-header {
143
+ display: flex;
144
+ justify-content: space-between;
145
+ align-items: center;
146
+ margin-bottom: 24px;
147
+ }
148
+
149
+ .sinaliza-header h1 {
150
+ margin-bottom: 0;
151
+ }
152
+
153
+ /* ---- Filters ---- */
154
+
17
155
  .sinaliza-filters {
18
- background: #f8f9fa;
19
- border: 1px solid #dee2e6;
20
- border-radius: 6px;
21
- padding: 16px;
22
- margin-bottom: 20px;
156
+ background: var(--sz-surface);
157
+ border: 1px solid var(--sz-border);
158
+ border-radius: var(--sz-radius);
159
+ padding: 16px 20px;
160
+ margin-bottom: 24px;
23
161
  }
24
162
 
25
163
  .sinaliza-filters__row {
@@ -36,17 +174,34 @@
36
174
  }
37
175
 
38
176
  .sinaliza-filters__field label {
39
- font-size: 12px;
177
+ font-size: 11px;
40
178
  font-weight: 600;
41
- color: #495057;
179
+ color: var(--sz-text-secondary);
180
+ text-transform: uppercase;
181
+ letter-spacing: 0.05em;
42
182
  }
43
183
 
44
184
  .sinaliza-filters__field input,
45
185
  .sinaliza-filters__field select {
46
186
  padding: 6px 10px;
47
- border: 1px solid #ced4da;
48
- border-radius: 4px;
187
+ background: var(--sz-bg);
188
+ border: 1px solid var(--sz-border);
189
+ border-radius: var(--sz-radius-sm);
190
+ color: var(--sz-text);
49
191
  font-size: 13px;
192
+ font-family: var(--sz-font);
193
+ transition: border-color var(--sz-transition);
194
+ }
195
+
196
+ .sinaliza-filters__field input:focus,
197
+ .sinaliza-filters__field select:focus {
198
+ outline: none;
199
+ border-color: var(--sz-accent);
200
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.15);
201
+ }
202
+
203
+ .sinaliza-filters__field input::placeholder {
204
+ color: var(--sz-text-muted);
50
205
  }
51
206
 
52
207
  .sinaliza-filters__actions {
@@ -57,117 +212,484 @@
57
212
 
58
213
  .sinaliza-filters__actions button {
59
214
  padding: 6px 16px;
60
- background: #0d6efd;
61
- color: white;
62
- border: none;
63
- border-radius: 4px;
215
+ background: var(--sz-surface-raised);
216
+ color: var(--sz-text);
217
+ border: 1px solid var(--sz-border);
218
+ border-radius: var(--sz-radius-sm);
64
219
  font-size: 13px;
220
+ font-family: var(--sz-font);
221
+ font-weight: 500;
65
222
  cursor: pointer;
223
+ transition: background var(--sz-transition), border-color var(--sz-transition);
66
224
  }
67
225
 
68
226
  .sinaliza-filters__actions button:hover {
69
- background: #0b5ed7;
227
+ background: var(--sz-border-subtle);
228
+ border-color: var(--sz-text-muted);
70
229
  }
71
230
 
72
- /* Table */
231
+ /* ---- Table ---- */
232
+
73
233
  .sinaliza-table {
74
234
  width: 100%;
75
235
  border-collapse: collapse;
76
- background: white;
236
+ background: var(--sz-surface);
237
+ border: 1px solid var(--sz-border);
238
+ border-radius: var(--sz-radius);
239
+ overflow: hidden;
77
240
  }
78
241
 
79
242
  .sinaliza-table th,
80
243
  .sinaliza-table td {
81
- padding: 10px 12px;
244
+ padding: 10px 16px;
82
245
  text-align: left;
83
- border-bottom: 1px solid #dee2e6;
246
+ border-bottom: 1px solid var(--sz-border-subtle);
84
247
  }
85
248
 
86
249
  .sinaliza-table th {
250
+ font-size: 11px;
87
251
  font-weight: 600;
88
- font-size: 12px;
89
- color: #495057;
252
+ color: var(--sz-text-secondary);
90
253
  text-transform: uppercase;
91
- letter-spacing: 0.5px;
92
- background: #f8f9fa;
254
+ letter-spacing: 0.05em;
255
+ background: var(--sz-surface);
256
+ border-bottom-color: var(--sz-border);
257
+ }
258
+
259
+ .sinaliza-table tbody tr {
260
+ transition: background var(--sz-transition);
93
261
  }
94
262
 
95
263
  .sinaliza-table tbody tr:hover {
96
- background: #f8f9fa;
264
+ background: var(--sz-surface-raised);
265
+ }
266
+
267
+ .sinaliza-table tbody tr:last-child td {
268
+ border-bottom: none;
97
269
  }
98
270
 
99
271
  .sinaliza-time {
272
+ font-family: var(--sz-mono);
273
+ font-size: 12px;
274
+ color: var(--sz-text-muted);
100
275
  white-space: nowrap;
101
- color: #6c757d;
102
- font-size: 13px;
103
276
  }
104
277
 
105
- /* Detail table */
278
+ /* ---- Detail Table ---- */
279
+
106
280
  .sinaliza-detail {
107
281
  width: 100%;
108
282
  border-collapse: collapse;
283
+ background: var(--sz-surface);
284
+ border: 1px solid var(--sz-border);
285
+ border-radius: var(--sz-radius);
286
+ overflow: hidden;
109
287
  }
110
288
 
111
289
  .sinaliza-detail th,
112
290
  .sinaliza-detail td {
113
- padding: 10px 12px;
114
- border-bottom: 1px solid #dee2e6;
291
+ padding: 12px 16px;
292
+ border-bottom: 1px solid var(--sz-border-subtle);
115
293
  vertical-align: top;
116
294
  }
117
295
 
296
+ .sinaliza-detail tr:last-child th,
297
+ .sinaliza-detail tr:last-child td {
298
+ border-bottom: none;
299
+ }
300
+
118
301
  .sinaliza-detail th {
119
302
  width: 140px;
303
+ font-size: 12px;
120
304
  font-weight: 600;
121
- color: #495057;
305
+ color: var(--sz-text-secondary);
122
306
  text-align: right;
123
- background: #f8f9fa;
307
+ background: var(--sz-surface);
124
308
  }
125
309
 
126
- /* Badges */
310
+ .sinaliza-detail td {
311
+ color: var(--sz-text);
312
+ font-size: 13px;
313
+ }
314
+
315
+ /* ---- Badges ---- */
316
+
127
317
  .sinaliza-badge {
128
318
  display: inline-block;
129
319
  padding: 2px 8px;
130
- border-radius: 4px;
320
+ border-radius: var(--sz-radius-sm);
321
+ font-family: var(--sz-mono);
131
322
  font-size: 12px;
132
323
  font-weight: 500;
133
- background: #e9ecef;
134
- color: #495057;
324
+ background: var(--sz-cyan-bg);
325
+ color: var(--sz-cyan);
326
+ border: 1px solid rgba(57, 210, 192, 0.2);
135
327
  }
136
328
 
137
329
  .sinaliza-badge--source {
138
- background: #d1ecf1;
139
- color: #0c5460;
330
+ background: var(--sz-amber-bg);
331
+ color: var(--sz-amber);
332
+ border-color: rgba(210, 153, 34, 0.2);
140
333
  }
141
334
 
142
- /* Links */
335
+ /* ---- Links ---- */
336
+
143
337
  .sinaliza-link {
144
- color: #0d6efd;
338
+ color: var(--sz-accent);
145
339
  text-decoration: none;
340
+ font-size: 13px;
341
+ transition: color var(--sz-transition);
146
342
  }
147
343
 
148
344
  .sinaliza-link:hover {
345
+ color: var(--sz-accent-hover);
149
346
  text-decoration: underline;
150
347
  }
151
348
 
152
- /* JSON */
153
- .sinaliza-json {
154
- background: #f8f9fa;
155
- padding: 10px;
156
- border-radius: 4px;
349
+ .sinaliza-link--back {
350
+ display: inline-flex;
351
+ align-items: center;
352
+ gap: 4px;
157
353
  font-size: 13px;
354
+ color: var(--sz-text-secondary);
355
+ margin-bottom: 20px;
356
+ }
357
+
358
+ .sinaliza-link--back::before {
359
+ content: "\2190";
360
+ }
361
+
362
+ .sinaliza-link--back:hover {
363
+ color: var(--sz-text);
364
+ text-decoration: none;
365
+ }
366
+
367
+ .sinaliza-link--danger {
368
+ color: var(--sz-text-muted);
369
+ }
370
+
371
+ .sinaliza-link--danger:hover {
372
+ color: var(--sz-red);
373
+ }
374
+
375
+ /* ---- JSON / Code ---- */
376
+
377
+ .sinaliza-json {
378
+ background: var(--sz-bg);
379
+ border: 1px solid var(--sz-border);
380
+ padding: 12px 16px;
381
+ border-radius: var(--sz-radius-sm);
382
+ font-family: var(--sz-mono);
383
+ font-size: 12px;
384
+ color: var(--sz-text-secondary);
158
385
  overflow-x: auto;
159
386
  margin: 0;
387
+ line-height: 1.6;
160
388
  }
161
389
 
162
- /* Empty state */
390
+ /* ---- Empty State ---- */
391
+
163
392
  .sinaliza-empty {
164
393
  text-align: center;
165
- color: #6c757d;
166
- padding: 40px;
394
+ color: var(--sz-text-muted);
395
+ padding: 48px 20px;
396
+ font-size: 14px;
397
+ border: 1px dashed var(--sz-border);
398
+ border-radius: var(--sz-radius);
399
+ margin-top: 16px;
167
400
  }
168
401
 
169
- /* Pagination */
402
+ /* ---- Pagination ---- */
403
+
170
404
  .sinaliza-pagination {
171
- padding: 16px 0;
405
+ padding: 20px 0;
172
406
  text-align: center;
173
407
  }
408
+
409
+ .sinaliza-pagination .sinaliza-link {
410
+ padding: 8px 20px;
411
+ background: var(--sz-surface);
412
+ border: 1px solid var(--sz-border);
413
+ border-radius: var(--sz-radius-sm);
414
+ font-size: 13px;
415
+ transition: background var(--sz-transition), border-color var(--sz-transition);
416
+ }
417
+
418
+ .sinaliza-pagination .sinaliza-link:hover {
419
+ background: var(--sz-surface-raised);
420
+ border-color: var(--sz-text-muted);
421
+ text-decoration: none;
422
+ }
423
+
424
+ /* ---- Button ---- */
425
+
426
+ .sinaliza-btn {
427
+ display: inline-flex;
428
+ align-items: center;
429
+ gap: 6px;
430
+ padding: 7px 16px;
431
+ background: var(--sz-accent);
432
+ color: #fff;
433
+ border: none;
434
+ border-radius: var(--sz-radius-sm);
435
+ font-family: var(--sz-font);
436
+ font-size: 13px;
437
+ font-weight: 500;
438
+ cursor: pointer;
439
+ text-decoration: none;
440
+ transition: background var(--sz-transition);
441
+ }
442
+
443
+ .sinaliza-btn:hover {
444
+ background: var(--sz-accent-hover);
445
+ }
446
+
447
+ .sinaliza-btn--secondary {
448
+ background: var(--sz-surface-raised);
449
+ color: var(--sz-text);
450
+ border: 1px solid var(--sz-border);
451
+ }
452
+
453
+ .sinaliza-btn--secondary:hover {
454
+ background: var(--sz-border-subtle);
455
+ border-color: var(--sz-text-muted);
456
+ }
457
+
458
+ /* ---- Status ---- */
459
+
460
+ .sinaliza-status {
461
+ display: inline-flex;
462
+ align-items: center;
463
+ gap: 6px;
464
+ padding: 3px 10px;
465
+ border-radius: 20px;
466
+ font-size: 12px;
467
+ font-weight: 500;
468
+ }
469
+
470
+ .sinaliza-status::before {
471
+ content: "";
472
+ width: 6px;
473
+ height: 6px;
474
+ border-radius: 50%;
475
+ }
476
+
477
+ .sinaliza-status--active {
478
+ background: var(--sz-green-bg);
479
+ color: var(--sz-green);
480
+ }
481
+
482
+ .sinaliza-status--active::before {
483
+ background: var(--sz-green);
484
+ box-shadow: 0 0 6px var(--sz-green);
485
+ }
486
+
487
+ .sinaliza-status--inactive {
488
+ background: var(--sz-red-bg);
489
+ color: var(--sz-red);
490
+ }
491
+
492
+ .sinaliza-status--inactive::before {
493
+ background: var(--sz-red);
494
+ }
495
+
496
+ /* ---- Toggle Switch ---- */
497
+
498
+ .sinaliza-switch-form {
499
+ display: inline;
500
+ background: none;
501
+ border: none;
502
+ padding: 0;
503
+ margin: 0;
504
+ }
505
+
506
+ .sinaliza-switch-form button[type="submit"] {
507
+ background: none;
508
+ border: none;
509
+ padding: 0;
510
+ cursor: pointer;
511
+ }
512
+
513
+ .sinaliza-switch {
514
+ display: inline-flex;
515
+ align-items: center;
516
+ cursor: pointer;
517
+ }
518
+
519
+ .sinaliza-switch__track {
520
+ position: relative;
521
+ width: 36px;
522
+ height: 20px;
523
+ background: var(--sz-border);
524
+ border-radius: 10px;
525
+ transition: background var(--sz-transition);
526
+ }
527
+
528
+ .sinaliza-switch__knob {
529
+ position: absolute;
530
+ top: 2px;
531
+ left: 2px;
532
+ width: 16px;
533
+ height: 16px;
534
+ background: var(--sz-text-muted);
535
+ border-radius: 50%;
536
+ transition: transform var(--sz-transition), background var(--sz-transition);
537
+ }
538
+
539
+ .sinaliza-switch--on .sinaliza-switch__track {
540
+ background: var(--sz-green-bg);
541
+ border: 1px solid rgba(63, 185, 80, 0.3);
542
+ }
543
+
544
+ .sinaliza-switch--on .sinaliza-switch__knob {
545
+ transform: translateX(16px);
546
+ background: var(--sz-green);
547
+ box-shadow: 0 0 6px var(--sz-green);
548
+ }
549
+
550
+ /* ---- Actions cell ---- */
551
+
552
+ .sinaliza-actions {
553
+ display: flex;
554
+ gap: 12px;
555
+ white-space: nowrap;
556
+ }
557
+
558
+ /* ---- Capture tags ---- */
559
+
560
+ .sinaliza-capture-tag {
561
+ display: inline-block;
562
+ padding: 1px 6px;
563
+ border-radius: 3px;
564
+ font-family: var(--sz-mono);
565
+ font-size: 11px;
566
+ background: var(--sz-surface-raised);
567
+ color: var(--sz-text-secondary);
568
+ border: 1px solid var(--sz-border);
569
+ }
570
+
571
+ /* ---- Form ---- */
572
+
573
+ .sinaliza-form {
574
+ max-width: 520px;
575
+ background: var(--sz-surface);
576
+ border: 1px solid var(--sz-border);
577
+ border-radius: var(--sz-radius);
578
+ padding: 24px;
579
+ }
580
+
581
+ .sinaliza-form__field {
582
+ margin-bottom: 20px;
583
+ }
584
+
585
+ .sinaliza-form__field label {
586
+ display: block;
587
+ font-size: 12px;
588
+ font-weight: 600;
589
+ color: var(--sz-text-secondary);
590
+ margin-bottom: 6px;
591
+ text-transform: uppercase;
592
+ letter-spacing: 0.04em;
593
+ }
594
+
595
+ .sinaliza-form__field input,
596
+ .sinaliza-form__field select {
597
+ width: 100%;
598
+ padding: 8px 12px;
599
+ background: var(--sz-bg);
600
+ border: 1px solid var(--sz-border);
601
+ border-radius: var(--sz-radius-sm);
602
+ color: var(--sz-text);
603
+ font-family: var(--sz-mono);
604
+ font-size: 13px;
605
+ box-sizing: border-box;
606
+ transition: border-color var(--sz-transition);
607
+ }
608
+
609
+ .sinaliza-form__field input:focus,
610
+ .sinaliza-form__field select:focus {
611
+ outline: none;
612
+ border-color: var(--sz-accent);
613
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.15);
614
+ }
615
+
616
+ .sinaliza-form__field input::placeholder {
617
+ color: var(--sz-text-muted);
618
+ font-family: var(--sz-mono);
619
+ }
620
+
621
+ .sinaliza-form__checkboxes {
622
+ margin-bottom: 24px;
623
+ padding: 16px;
624
+ background: var(--sz-bg);
625
+ border: 1px solid var(--sz-border);
626
+ border-radius: var(--sz-radius-sm);
627
+ display: flex;
628
+ flex-direction: column;
629
+ gap: 10px;
630
+ }
631
+
632
+ .sinaliza-form__checkboxes label {
633
+ font-size: 13px;
634
+ color: var(--sz-text-secondary);
635
+ cursor: pointer;
636
+ display: flex;
637
+ align-items: center;
638
+ gap: 8px;
639
+ transition: color var(--sz-transition);
640
+ }
641
+
642
+ .sinaliza-form__checkboxes label:hover {
643
+ color: var(--sz-text);
644
+ }
645
+
646
+ .sinaliza-form__actions {
647
+ display: flex;
648
+ gap: 12px;
649
+ align-items: center;
650
+ padding-top: 4px;
651
+ }
652
+
653
+ /* ---- Errors ---- */
654
+
655
+ .sinaliza-errors {
656
+ background: var(--sz-red-bg);
657
+ border: 1px solid rgba(248, 81, 73, 0.3);
658
+ border-radius: var(--sz-radius-sm);
659
+ padding: 12px 16px;
660
+ margin-bottom: 20px;
661
+ color: var(--sz-red);
662
+ font-size: 13px;
663
+ }
664
+
665
+ .sinaliza-errors ul {
666
+ margin: 0;
667
+ padding-left: 20px;
668
+ }
669
+
670
+ /* ---- Children count ---- */
671
+
672
+ .sinaliza-children-count {
673
+ font-family: var(--sz-mono);
674
+ font-size: 12px;
675
+ color: var(--sz-text-muted);
676
+ }
677
+
678
+ .sinaliza-children-count--has {
679
+ color: var(--sz-purple);
680
+ }
681
+
682
+ /* ---- Null cell ---- */
683
+
684
+ .sinaliza-null {
685
+ color: var(--sz-text-muted);
686
+ font-size: 13px;
687
+ }
688
+
689
+ /* ---- Polymorphic ref ---- */
690
+
691
+ .sinaliza-ref {
692
+ font-family: var(--sz-mono);
693
+ font-size: 12px;
694
+ color: var(--sz-text-secondary);
695
+ }