@qpjoy/electron-launcher-app-h2o 2.0.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.
package/src/styles.css ADDED
@@ -0,0 +1,696 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --h2o-line: rgba(94, 142, 236, 0.18);
4
+ --h2o-primary: #2bf6d2;
5
+ --h2o-bg: #141417;
6
+ --h2o-bg-2: #1a1b23;
7
+ --h2o-bg-3: #21232d;
8
+ --h2o-bg-4: #292c37;
9
+ --h2o-text: #e2e2e2;
10
+ --h2o-muted: rgba(226, 226, 226, 0.55);
11
+ --h2o-soft: rgba(226, 226, 226, 0.72);
12
+ }
13
+
14
+ html,
15
+ body,
16
+ .h2o-root {
17
+ min-height: 100%;
18
+ margin: 0;
19
+ }
20
+
21
+ body {
22
+ overflow: hidden;
23
+ }
24
+
25
+ button {
26
+ -webkit-app-region: no-drag;
27
+ }
28
+
29
+ * {
30
+ scrollbar-color: rgba(43, 246, 210, 0.58) rgba(17, 19, 25, 0.28);
31
+ scrollbar-width: thin;
32
+ }
33
+
34
+ ::-webkit-scrollbar {
35
+ width: 10px;
36
+ height: 10px;
37
+ }
38
+
39
+ ::-webkit-scrollbar-track {
40
+ background: rgba(17, 19, 25, 0.28);
41
+ }
42
+
43
+ ::-webkit-scrollbar-thumb {
44
+ border: 2px solid rgba(17, 19, 25, 0.8);
45
+ border-radius: 999px;
46
+ background: rgba(43, 246, 210, 0.58);
47
+ }
48
+
49
+ .h2o-shell {
50
+ display: grid;
51
+ grid-template-rows: auto minmax(0, 1fr);
52
+ grid-template-columns: 252px minmax(0, 1fr) minmax(300px, 360px);
53
+ min-height: 100vh;
54
+ background:
55
+ linear-gradient(90deg, rgba(94, 142, 236, 0.035) 1px, transparent 1px) 0 0 / 56px 56px,
56
+ var(--h2o-bg-2);
57
+ color: var(--h2o-text);
58
+ font-family: Poppins, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
59
+ }
60
+
61
+ .app-shell-bar {
62
+ grid-column: 1 / -1;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: space-between;
66
+ gap: 16px;
67
+ min-height: 48px;
68
+ border-bottom: 1px solid var(--h2o-line);
69
+ padding: 6px 10px 6px 14px;
70
+ background: rgba(20, 20, 23, 0.94);
71
+ -webkit-app-region: drag;
72
+ }
73
+
74
+ .app-shell-identity {
75
+ display: grid;
76
+ grid-template-columns: auto minmax(0, 1fr);
77
+ gap: 10px;
78
+ align-items: center;
79
+ min-width: 0;
80
+ }
81
+
82
+ .app-shell-mark {
83
+ display: grid;
84
+ width: 30px;
85
+ height: 30px;
86
+ place-items: center;
87
+ border-radius: 7px;
88
+ background: var(--h2o-primary);
89
+ color: #071311;
90
+ font-size: 11px;
91
+ font-weight: 900;
92
+ }
93
+
94
+ .app-shell-identity strong,
95
+ .app-shell-identity span {
96
+ display: block;
97
+ overflow: hidden;
98
+ text-overflow: ellipsis;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .app-shell-identity span {
103
+ color: var(--h2o-muted);
104
+ font-size: 11px;
105
+ }
106
+
107
+ .app-shell-actions {
108
+ position: relative;
109
+ display: flex;
110
+ align-items: center;
111
+ gap: 6px;
112
+ -webkit-app-region: no-drag;
113
+ }
114
+
115
+ .app-window-button {
116
+ display: grid;
117
+ min-width: 34px;
118
+ height: 34px;
119
+ place-items: center;
120
+ border: 1px solid var(--h2o-line);
121
+ border-radius: 7px;
122
+ background: rgba(41, 44, 55, 0.9);
123
+ color: var(--h2o-text);
124
+ font-weight: 900;
125
+ line-height: 1;
126
+ }
127
+
128
+ .app-window-button:hover {
129
+ border-color: rgba(43, 246, 210, 0.5);
130
+ color: var(--h2o-primary);
131
+ }
132
+
133
+ .app-shell-menu {
134
+ position: relative;
135
+ }
136
+
137
+ .app-shell-popover {
138
+ position: absolute;
139
+ top: calc(100% + 8px);
140
+ right: 0;
141
+ z-index: 30;
142
+ display: grid;
143
+ width: 210px;
144
+ overflow: hidden;
145
+ border: 1px solid var(--h2o-line);
146
+ border-radius: 8px;
147
+ background: rgba(33, 35, 45, 0.98);
148
+ box-shadow: 0 18px 34px rgba(0, 0, 0, 0.28);
149
+ }
150
+
151
+ .app-shell-popover button {
152
+ display: grid;
153
+ gap: 2px;
154
+ border: 0;
155
+ border-bottom: 1px solid rgba(94, 142, 236, 0.12);
156
+ border-radius: 0;
157
+ padding: 11px 13px;
158
+ background: transparent;
159
+ color: var(--h2o-text);
160
+ text-align: left;
161
+ }
162
+
163
+ .app-shell-popover button:last-child {
164
+ border-bottom: 0;
165
+ }
166
+
167
+ .app-shell-popover button:hover {
168
+ background: rgba(43, 246, 210, 0.08);
169
+ color: var(--h2o-primary);
170
+ }
171
+
172
+ .app-shell-popover small {
173
+ color: var(--h2o-muted);
174
+ font-size: 11px;
175
+ }
176
+
177
+ .h2o-sidebar,
178
+ .h2o-inspector {
179
+ display: grid;
180
+ align-content: start;
181
+ gap: 18px;
182
+ min-width: 0;
183
+ background: rgba(17, 19, 25, 0.82);
184
+ }
185
+
186
+ .h2o-sidebar {
187
+ grid-template-rows: auto 1fr auto;
188
+ border-right: 1px solid var(--h2o-line);
189
+ padding: 22px;
190
+ }
191
+
192
+ .h2o-inspector {
193
+ border-left: 1px solid var(--h2o-line);
194
+ padding: 22px;
195
+ background: rgba(33, 35, 45, 0.82);
196
+ }
197
+
198
+ .h2o-brand {
199
+ display: grid;
200
+ grid-template-columns: auto minmax(0, 1fr);
201
+ gap: 12px;
202
+ align-items: center;
203
+ }
204
+
205
+ .h2o-mark {
206
+ display: grid;
207
+ width: 46px;
208
+ height: 46px;
209
+ place-items: center;
210
+ border-radius: 8px;
211
+ background: var(--h2o-primary);
212
+ color: #071311;
213
+ font-weight: 800;
214
+ }
215
+
216
+ .h2o-brand h1,
217
+ .h2o-brand p,
218
+ .h2o-toolbar h2,
219
+ .h2o-toolbar p,
220
+ .h2o-inspector h3 {
221
+ margin: 0;
222
+ }
223
+
224
+ .h2o-brand p,
225
+ .h2o-version,
226
+ .h2o-toolbar p,
227
+ .panel-head p {
228
+ color: var(--h2o-muted);
229
+ }
230
+
231
+ .h2o-brand p {
232
+ overflow: hidden;
233
+ text-overflow: ellipsis;
234
+ white-space: nowrap;
235
+ }
236
+
237
+ .h2o-nav {
238
+ display: grid;
239
+ align-content: start;
240
+ gap: 8px;
241
+ margin-top: 24px;
242
+ }
243
+
244
+ .h2o-nav button,
245
+ .mode-segments button {
246
+ min-height: 38px;
247
+ border: 1px solid transparent;
248
+ border-radius: 6px;
249
+ padding: 0 12px;
250
+ background: transparent;
251
+ color: var(--h2o-soft);
252
+ text-align: left;
253
+ }
254
+
255
+ .h2o-nav button.is-active,
256
+ .mode-segments button.is-active {
257
+ border-color: var(--h2o-primary);
258
+ background: rgba(43, 246, 210, 0.08);
259
+ color: var(--h2o-primary);
260
+ }
261
+
262
+ .h2o-version {
263
+ display: grid;
264
+ gap: 4px;
265
+ font-size: 11px;
266
+ }
267
+
268
+ .text-button {
269
+ width: max-content;
270
+ border: 0;
271
+ padding: 0;
272
+ background: transparent;
273
+ color: var(--h2o-primary);
274
+ font-weight: 800;
275
+ }
276
+
277
+ .h2o-main {
278
+ min-width: 0;
279
+ padding: 24px;
280
+ overflow: auto;
281
+ }
282
+
283
+ .h2o-toolbar,
284
+ .panel-head {
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: space-between;
288
+ gap: 16px;
289
+ }
290
+
291
+ .kicker {
292
+ color: var(--h2o-primary);
293
+ font-size: 12px;
294
+ font-weight: 800;
295
+ letter-spacing: 0;
296
+ }
297
+
298
+ .primary-button,
299
+ .secondary-button {
300
+ min-height: 40px;
301
+ border-radius: 6px;
302
+ padding: 0 16px;
303
+ font-weight: 800;
304
+ }
305
+
306
+ .primary-button {
307
+ border: 1px solid transparent;
308
+ background: var(--h2o-primary);
309
+ color: #071311;
310
+ }
311
+
312
+ .secondary-button {
313
+ border: 1px solid var(--h2o-line);
314
+ background: var(--h2o-bg-4);
315
+ color: var(--h2o-text);
316
+ }
317
+
318
+ .primary-button:disabled,
319
+ .secondary-button:disabled {
320
+ cursor: not-allowed;
321
+ opacity: 0.45;
322
+ }
323
+
324
+ .toolbar-actions {
325
+ display: flex;
326
+ flex-wrap: wrap;
327
+ gap: 10px;
328
+ }
329
+
330
+ .h2o-status-strip {
331
+ display: flex;
332
+ gap: 12px;
333
+ align-items: center;
334
+ margin: 22px 0;
335
+ border: 1px solid rgba(72, 188, 119, 0.58);
336
+ border-radius: 8px;
337
+ padding: 12px 14px;
338
+ background: rgba(72, 188, 119, 0.09);
339
+ }
340
+
341
+ .h2o-status-strip[data-state="standalone-required"],
342
+ .h2o-status-strip[data-state="blocked"],
343
+ .h2o-status-strip[data-state="capability-denied"] {
344
+ border-color: rgba(248, 208, 108, 0.58);
345
+ background: rgba(248, 208, 108, 0.08);
346
+ }
347
+
348
+ .h2o-status-strip strong {
349
+ color: var(--h2o-primary);
350
+ white-space: nowrap;
351
+ }
352
+
353
+ .h2o-grid {
354
+ display: grid;
355
+ grid-template-columns: repeat(4, minmax(0, 1fr));
356
+ gap: 12px;
357
+ margin-bottom: 18px;
358
+ }
359
+
360
+ .h2o-grid.is-compact {
361
+ margin-bottom: 0;
362
+ }
363
+
364
+ .metric-card,
365
+ .h2o-panel {
366
+ border: 1px solid var(--h2o-line);
367
+ border-radius: 8px;
368
+ background: rgba(33, 35, 45, 0.78);
369
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
370
+ }
371
+
372
+ .metric-card {
373
+ display: grid;
374
+ gap: 8px;
375
+ min-width: 0;
376
+ min-height: 94px;
377
+ padding: 14px;
378
+ }
379
+
380
+ .metric-card span,
381
+ .detail-list span {
382
+ color: var(--h2o-muted);
383
+ font-size: 12px;
384
+ }
385
+
386
+ .metric-card strong,
387
+ .detail-list strong {
388
+ overflow: hidden;
389
+ color: var(--h2o-text);
390
+ font-size: 18px;
391
+ text-overflow: ellipsis;
392
+ white-space: nowrap;
393
+ }
394
+
395
+ .h2o-panel {
396
+ display: grid;
397
+ gap: 16px;
398
+ margin-bottom: 18px;
399
+ padding: 18px;
400
+ }
401
+
402
+ .mode-segments {
403
+ display: grid;
404
+ grid-template-columns: repeat(4, minmax(0, 1fr));
405
+ gap: 8px;
406
+ }
407
+
408
+ .mode-segments button {
409
+ text-align: center;
410
+ }
411
+
412
+ .h2o-warning {
413
+ margin: 0;
414
+ border: 1px solid rgba(248, 208, 108, 0.48);
415
+ border-radius: 7px;
416
+ padding: 10px 12px;
417
+ background: rgba(248, 208, 108, 0.08);
418
+ color: #f2d36e;
419
+ }
420
+
421
+ .h2o-managed-card {
422
+ background: linear-gradient(135deg, rgba(43, 246, 210, 0.07), rgba(94, 142, 236, 0.04)), rgba(33, 35, 45, 0.78);
423
+ }
424
+
425
+ .port-editor {
426
+ display: grid;
427
+ grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
428
+ gap: 10px;
429
+ align-items: end;
430
+ }
431
+
432
+ .port-editor label {
433
+ display: grid;
434
+ gap: 6px;
435
+ color: var(--h2o-muted);
436
+ font-size: 12px;
437
+ font-weight: 800;
438
+ }
439
+
440
+ .port-editor input {
441
+ min-width: 0;
442
+ height: 38px;
443
+ border: 1px solid var(--h2o-line);
444
+ border-radius: 7px;
445
+ padding: 0 10px;
446
+ background: rgba(20, 20, 23, 0.54);
447
+ color: var(--h2o-text);
448
+ font: inherit;
449
+ font-weight: 800;
450
+ }
451
+
452
+ .subscription-list {
453
+ display: grid;
454
+ gap: 10px;
455
+ }
456
+
457
+ .subscription-list article {
458
+ display: grid;
459
+ grid-template-columns: minmax(0, 1fr) auto auto;
460
+ gap: 14px;
461
+ align-items: center;
462
+ border: 1px solid var(--h2o-line);
463
+ border-radius: 8px;
464
+ padding: 14px;
465
+ background: rgba(20, 20, 23, 0.34);
466
+ }
467
+
468
+ .subscription-list article.is-active {
469
+ border-color: rgba(43, 246, 210, 0.72);
470
+ background: rgba(43, 246, 210, 0.07);
471
+ }
472
+
473
+ .subscription-list strong,
474
+ .subscription-list span {
475
+ display: block;
476
+ overflow: hidden;
477
+ text-overflow: ellipsis;
478
+ white-space: nowrap;
479
+ }
480
+
481
+ .subscription-list span,
482
+ .subscription-meta {
483
+ color: var(--h2o-muted);
484
+ }
485
+
486
+ .subscription-meta {
487
+ display: grid;
488
+ gap: 3px;
489
+ min-width: 110px;
490
+ font-size: 12px;
491
+ text-align: right;
492
+ }
493
+
494
+ .rule-table {
495
+ display: grid;
496
+ gap: 8px;
497
+ }
498
+
499
+ .rule-table div {
500
+ display: grid;
501
+ grid-template-columns: minmax(180px, 1fr) minmax(160px, 0.8fr) auto auto;
502
+ gap: 12px;
503
+ align-items: center;
504
+ min-height: 42px;
505
+ border: 1px solid rgba(94, 142, 236, 0.14);
506
+ border-radius: 6px;
507
+ padding: 0 12px;
508
+ background: rgba(20, 20, 23, 0.3);
509
+ }
510
+
511
+ .rule-table div.is-disabled {
512
+ opacity: 0.54;
513
+ }
514
+
515
+ .rule-table .secondary-button {
516
+ min-height: 30px;
517
+ padding: 0 10px;
518
+ }
519
+
520
+ .rule-table span,
521
+ .rule-table em {
522
+ overflow: hidden;
523
+ color: var(--h2o-muted);
524
+ text-overflow: ellipsis;
525
+ white-space: nowrap;
526
+ }
527
+
528
+ .rule-table em {
529
+ color: var(--h2o-primary);
530
+ font-style: normal;
531
+ }
532
+
533
+ .detail-list {
534
+ display: grid;
535
+ gap: 8px;
536
+ }
537
+
538
+ .detail-list div {
539
+ display: grid;
540
+ grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);
541
+ gap: 10px;
542
+ border-bottom: 1px solid var(--h2o-line);
543
+ padding: 8px 0;
544
+ }
545
+
546
+ .permission-list {
547
+ display: flex;
548
+ flex-wrap: wrap;
549
+ gap: 8px;
550
+ }
551
+
552
+ .permission-list span {
553
+ border: 1px solid rgba(94, 142, 236, 0.3);
554
+ border-radius: 999px;
555
+ padding: 3px 8px;
556
+ background: rgba(94, 142, 236, 0.08);
557
+ color: var(--h2o-soft);
558
+ font-size: 11px;
559
+ }
560
+
561
+ .permission-list.is-large span {
562
+ min-height: 28px;
563
+ padding: 5px 10px;
564
+ }
565
+
566
+ .h2o-user-panel {
567
+ background: rgba(31, 33, 43, 0.82);
568
+ }
569
+
570
+ .h2o-debug-panel {
571
+ background: rgba(33, 35, 45, 0.92);
572
+ }
573
+
574
+ .h2o-health-card {
575
+ display: grid;
576
+ gap: 6px;
577
+ border: 1px solid rgba(72, 188, 119, 0.58);
578
+ border-radius: 8px;
579
+ padding: 14px;
580
+ background: rgba(72, 188, 119, 0.09);
581
+ }
582
+
583
+ .h2o-health-card[data-state="warning"] {
584
+ border-color: rgba(248, 208, 108, 0.58);
585
+ background: rgba(248, 208, 108, 0.08);
586
+ }
587
+
588
+ .h2o-health-card strong {
589
+ color: var(--h2o-primary);
590
+ font-size: 20px;
591
+ }
592
+
593
+ .h2o-health-card span {
594
+ color: var(--h2o-soft);
595
+ }
596
+
597
+ .h2o-tip-list {
598
+ display: grid;
599
+ gap: 10px;
600
+ }
601
+
602
+ .h2o-tip-list div {
603
+ display: grid;
604
+ gap: 4px;
605
+ border: 1px solid var(--h2o-line);
606
+ border-radius: 8px;
607
+ padding: 12px;
608
+ background: rgba(17, 19, 25, 0.34);
609
+ }
610
+
611
+ .h2o-tip-list span {
612
+ color: var(--h2o-muted);
613
+ }
614
+
615
+ .activity-list {
616
+ display: grid;
617
+ gap: 8px;
618
+ }
619
+
620
+ .activity-list div {
621
+ display: grid;
622
+ grid-template-columns: minmax(130px, 0.5fr) minmax(0, 1fr) auto;
623
+ gap: 10px;
624
+ border-bottom: 1px solid var(--h2o-line);
625
+ padding: 8px 0;
626
+ }
627
+
628
+ .activity-list span,
629
+ .activity-list small,
630
+ .empty {
631
+ color: var(--h2o-muted);
632
+ }
633
+
634
+ @media (max-width: 1120px) {
635
+ body {
636
+ overflow: auto;
637
+ }
638
+
639
+ .h2o-shell {
640
+ grid-template-columns: 1fr;
641
+ }
642
+
643
+ .h2o-sidebar,
644
+ .h2o-inspector {
645
+ border: 0;
646
+ }
647
+
648
+ .h2o-grid {
649
+ grid-template-columns: repeat(2, minmax(0, 1fr));
650
+ }
651
+
652
+ .port-editor,
653
+ .subscription-list article {
654
+ grid-template-columns: 1fr 1fr;
655
+ }
656
+
657
+ .port-editor .secondary-button,
658
+ .subscription-list .toolbar-actions {
659
+ grid-column: 1 / -1;
660
+ }
661
+ }
662
+
663
+ @media (max-width: 720px) {
664
+ .h2o-main {
665
+ padding: 14px;
666
+ }
667
+
668
+ .app-shell-bar {
669
+ align-items: stretch;
670
+ flex-direction: column;
671
+ }
672
+
673
+ .app-shell-actions {
674
+ justify-content: flex-start;
675
+ }
676
+
677
+ .h2o-toolbar,
678
+ .panel-head,
679
+ .h2o-status-strip {
680
+ align-items: stretch;
681
+ flex-direction: column;
682
+ }
683
+
684
+ .h2o-grid,
685
+ .mode-segments,
686
+ .port-editor,
687
+ .subscription-list article,
688
+ .rule-table div,
689
+ .activity-list div {
690
+ grid-template-columns: 1fr;
691
+ }
692
+
693
+ .subscription-meta {
694
+ text-align: left;
695
+ }
696
+ }