@processengine/uikit 0.1.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.
@@ -0,0 +1,675 @@
1
+ /* tokens.css */
2
+ :root {
3
+ --page-bg: #f5f3ee;
4
+ --page-glow:
5
+ radial-gradient(circle at top left, rgba(79, 70, 229, 0.08), transparent 28rem),
6
+ radial-gradient(circle at top right, rgba(251, 191, 36, 0.08), transparent 24rem);
7
+
8
+ --surface-canvas: rgba(255, 255, 255, 0.52);
9
+ --surface-card: #ffffff;
10
+ --surface-subtle: #faf7f1;
11
+ --surface-muted: #f3efe7;
12
+ --surface-hover: #fffdf9;
13
+
14
+ --text-strong: #1a1a2e;
15
+ --text-strong-soft: #23233a;
16
+ --text-medium: #4b5563;
17
+ --text-dim: #6b7280;
18
+ --text-muted: #8b95a7;
19
+ --text-faint: #a2aaba;
20
+
21
+ --border-color: #e8e5df;
22
+ --border-strong: #d8d2c8;
23
+ --accent-color: #4f46e5;
24
+ --accent-soft: #eef2ff;
25
+ --accent-strong: #3730a3;
26
+
27
+ --status-success-bg: #f0fdf4;
28
+ --status-success-border: #bbf7d0;
29
+ --status-success-text: #166534;
30
+ --status-error-bg: #fff1f2;
31
+ --status-error-border: #fecdd3;
32
+ --status-error-text: #be123c;
33
+ --status-neutral-bg: #f1f5f9;
34
+ --status-neutral-border: #cbd5e1;
35
+ --status-neutral-text: #334155;
36
+
37
+ --stage-success-bg: #f0fdf4;
38
+ --stage-success-border: #bbf7d0;
39
+ --stage-success-accent: #16a34a;
40
+ --stage-active-bg: #fffbeb;
41
+ --stage-active-border: #fde68a;
42
+ --stage-active-accent: #d97706;
43
+ --stage-error-bg: #fff1f2;
44
+ --stage-error-border: #fecdd3;
45
+ --stage-error-accent: #e11d48;
46
+ --stage-pending-bg: #f8fafc;
47
+ --stage-pending-border: #e2e8f0;
48
+ --stage-pending-accent: #94a3b8;
49
+
50
+ --font-sans:
51
+ Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
52
+ --font-input: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
53
+ --font-mono:
54
+ 'JetBrains Mono', 'SFMono-Regular', 'SF Mono', Menlo, Consolas, 'Liberation Mono',
55
+ monospace;
56
+
57
+ --shadow-sm: 0 2px 8px rgba(26, 26, 46, 0.06);
58
+ --shadow-md: 0 4px 20px rgba(26, 26, 46, 0.09);
59
+ --shadow-lg: 0 8px 32px rgba(26, 26, 46, 0.12);
60
+
61
+ --shell-max-width: 88rem;
62
+ --page-inline-padding: clamp(1.25rem, 3vw, 2rem);
63
+ --page-block-start: clamp(1.25rem, 3vw, 2rem);
64
+ --page-block-end: clamp(2rem, 4vw, 3rem);
65
+
66
+ --space-1: 0.125rem;
67
+ --space-2: 0.25rem;
68
+ --space-3: 0.5rem;
69
+ --space-4: 0.75rem;
70
+ --space-5: 1rem;
71
+ --space-6: 1.25rem;
72
+ --space-7: 1.5rem;
73
+ --space-8: 2rem;
74
+ --space-9: 2.5rem;
75
+
76
+ --radius-sm: 0.625rem;
77
+ --radius-md: 0.875rem;
78
+ --radius-lg: 1.25rem;
79
+ --radius-xl: 1.75rem;
80
+ }
81
+
82
+ /* base.css */
83
+ html {
84
+ background: var(--page-bg);
85
+ }
86
+
87
+ body {
88
+ margin: 0;
89
+ min-width: 20rem;
90
+ min-height: 100svh;
91
+ background: var(--page-bg);
92
+ background-image: var(--page-glow);
93
+ color: var(--text-strong);
94
+ font-family: var(--font-sans);
95
+ font-size: 100%;
96
+ line-height: 1.5;
97
+ font-synthesis: none;
98
+ text-rendering: optimizeLegibility;
99
+ -webkit-font-smoothing: antialiased;
100
+ -moz-osx-font-smoothing: grayscale;
101
+ }
102
+
103
+ #root {
104
+ min-height: 100svh;
105
+ }
106
+
107
+ *,
108
+ *::before,
109
+ *::after {
110
+ box-sizing: border-box;
111
+ }
112
+
113
+ button,
114
+ input,
115
+ textarea,
116
+ select {
117
+ font: inherit;
118
+ }
119
+
120
+ p,
121
+ h1,
122
+ h2,
123
+ h3,
124
+ h4,
125
+ h5,
126
+ h6,
127
+ pre {
128
+ margin: 0;
129
+ }
130
+
131
+ a {
132
+ color: inherit;
133
+ }
134
+
135
+ /* components.css */
136
+ .app-page {
137
+ min-height: 100svh;
138
+ padding: var(--page-block-start) var(--page-inline-padding)
139
+ var(--page-block-end);
140
+ }
141
+
142
+ .app-shell-frame {
143
+ inline-size: min(100%, var(--shell-max-width));
144
+ margin: 0 auto;
145
+ padding: 0.875rem;
146
+ border: 0.0625rem solid rgba(255, 255, 255, 0.72);
147
+ border-radius: calc(var(--radius-xl) + 0.5rem);
148
+ background: var(--surface-canvas);
149
+ box-shadow: var(--shadow-lg);
150
+ backdrop-filter: blur(12px);
151
+ }
152
+
153
+ .app-toolbar {
154
+ display: flex;
155
+ align-items: center;
156
+ gap: 1rem;
157
+ padding: 0.625rem 0.875rem;
158
+ border: 0.0625rem solid var(--border-color);
159
+ border-radius: calc(var(--radius-lg) - 0.125rem);
160
+ background: var(--surface-card);
161
+ box-shadow: var(--shadow-sm);
162
+ }
163
+
164
+ .app-toolbar__brand {
165
+ display: inline-flex;
166
+ align-items: center;
167
+ gap: 0.75rem;
168
+ color: var(--text-strong);
169
+ text-decoration: none;
170
+ }
171
+
172
+ .app-toolbar__brand-mark {
173
+ inline-size: 2rem;
174
+ block-size: 2rem;
175
+ display: inline-flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ border-radius: 999px;
179
+ background: var(--text-strong);
180
+ color: #fff;
181
+ font-weight: 800;
182
+ font-size: 0.95rem;
183
+ letter-spacing: -0.02em;
184
+ }
185
+
186
+ .app-toolbar__brand-text {
187
+ font-size: 1rem;
188
+ font-weight: 700;
189
+ letter-spacing: -0.02em;
190
+ }
191
+
192
+ .app-toolbar__breadcrumbs {
193
+ display: inline-flex;
194
+ align-items: center;
195
+ gap: 0.45rem;
196
+ min-width: 0;
197
+ color: var(--text-dim);
198
+ font-size: 0.86rem;
199
+ }
200
+
201
+ .app-toolbar__crumb {
202
+ white-space: nowrap;
203
+ }
204
+
205
+ .app-toolbar__crumb--current {
206
+ color: var(--text-strong);
207
+ font-weight: 600;
208
+ }
209
+
210
+ .app-toolbar__crumb-separator {
211
+ color: var(--text-faint);
212
+ }
213
+
214
+ .app-toolbar__actions {
215
+ display: flex;
216
+ align-items: center;
217
+ gap: 0.625rem;
218
+ margin-left: auto;
219
+ min-width: 0;
220
+ }
221
+
222
+ .app-server-control__form {
223
+ min-width: min(28rem, 45vw);
224
+ }
225
+
226
+ .app-server-control {
227
+ display: flex;
228
+ flex-direction: column;
229
+ align-items: flex-end;
230
+ gap: 0.125rem;
231
+ min-width: 0;
232
+ max-width: min(28rem, 45vw);
233
+ padding: 0.3rem 0.55rem;
234
+ border: 0.0625rem solid transparent;
235
+ border-radius: var(--radius-md);
236
+ background: transparent;
237
+ color: var(--text-dim);
238
+ }
239
+
240
+ .app-server-control:not(label) {
241
+ cursor: pointer;
242
+ }
243
+
244
+ .app-server-control:not(label):hover,
245
+ .app-server-control:not(label):focus-visible {
246
+ border-color: var(--border-color);
247
+ background: var(--surface-subtle);
248
+ outline: none;
249
+ }
250
+
251
+ .app-server-control--editing {
252
+ align-items: stretch;
253
+ inline-size: 100%;
254
+ }
255
+
256
+ .app-server-control__label {
257
+ font-size: 0.62rem;
258
+ line-height: 1.2;
259
+ font-weight: 700;
260
+ letter-spacing: 0.06em;
261
+ text-transform: uppercase;
262
+ color: var(--text-faint);
263
+ }
264
+
265
+ .app-server-control__value {
266
+ max-width: 100%;
267
+ overflow: hidden;
268
+ color: var(--text-muted);
269
+ font-size: 0.78rem;
270
+ line-height: 1.35;
271
+ text-overflow: ellipsis;
272
+ white-space: nowrap;
273
+ }
274
+
275
+ .app-server-control__input {
276
+ inline-size: 100%;
277
+ min-block-size: 2.2rem;
278
+ padding: 0.45rem 0.6rem;
279
+ border: 0.0625rem solid var(--border-color);
280
+ border-radius: var(--radius-md);
281
+ background: var(--surface-card);
282
+ color: var(--text-strong);
283
+ font-family: var(--font-input);
284
+ font-size: 0.82rem;
285
+ line-height: 1.3;
286
+ box-shadow: var(--shadow-sm);
287
+ }
288
+
289
+ .app-server-control__input:focus {
290
+ outline: none;
291
+ border-color: var(--accent-color);
292
+ }
293
+
294
+ .app-server-control__input--error {
295
+ border-color: var(--status-error-border);
296
+ }
297
+
298
+ .app-toolbar__pill {
299
+ display: inline-flex;
300
+ align-items: center;
301
+ justify-content: center;
302
+ min-block-size: 2.375rem;
303
+ padding: 0.4rem 0.9rem;
304
+ border-radius: 999px;
305
+ background: var(--text-strong);
306
+ color: #fff;
307
+ font-size: 0.8rem;
308
+ font-weight: 700;
309
+ letter-spacing: 0.01em;
310
+ }
311
+
312
+ .app-toolbar__pill--soft {
313
+ background: var(--surface-subtle);
314
+ color: var(--text-medium);
315
+ border: 0.0625rem solid var(--border-color);
316
+ }
317
+
318
+ .app-shell {
319
+ padding: 1.5rem 1rem 1rem;
320
+ }
321
+
322
+ .app-back-link {
323
+ display: inline-flex;
324
+ align-items: center;
325
+ gap: 0.45rem;
326
+ margin-bottom: 1.125rem;
327
+ padding: 0.5rem 0.875rem;
328
+ border-radius: 999px;
329
+ background: var(--surface-card);
330
+ border: 0.0625rem solid var(--border-color);
331
+ box-shadow: var(--shadow-sm);
332
+ color: var(--text-dim);
333
+ font-size: 0.85rem;
334
+ font-weight: 600;
335
+ text-decoration: none;
336
+ }
337
+
338
+ .app-back-link__icon {
339
+ inline-size: 0.95rem;
340
+ block-size: 0.95rem;
341
+ flex: 0 0 auto;
342
+ opacity: 0.78;
343
+ }
344
+
345
+ .app-back-link:hover,
346
+ .app-back-link:focus-visible {
347
+ color: var(--text-strong);
348
+ background: var(--surface-hover);
349
+ }
350
+
351
+ .app-back-link:hover .app-back-link__icon,
352
+ .app-back-link:focus-visible .app-back-link__icon {
353
+ opacity: 1;
354
+ }
355
+
356
+ .app-page-header {
357
+ margin-bottom: 1.5rem;
358
+ }
359
+
360
+ .app-page-header__eyebrow {
361
+ margin-bottom: 0.35rem;
362
+ color: var(--text-faint);
363
+ font-size: 0.72rem;
364
+ font-weight: 800;
365
+ letter-spacing: 0.08em;
366
+ text-transform: uppercase;
367
+ }
368
+
369
+ .app-page-header__title {
370
+ /* max-inline-size: 32rem; */
371
+ margin-bottom: 0.5rem;
372
+ font-size: clamp(2rem, 4vw, 2.85rem);
373
+ line-height: 0.98;
374
+ font-weight: 800;
375
+ letter-spacing: -0.04em;
376
+ color: var(--text-strong);
377
+ }
378
+
379
+ .app-page-header__subtitle {
380
+ max-inline-size: 42rem;
381
+ font-size: 1rem;
382
+ line-height: 1.45;
383
+ color: var(--text-dim);
384
+ }
385
+
386
+ .app-page-header--detail .app-page-header__title {
387
+ max-inline-size: 38rem;
388
+ font-size: clamp(1.85rem, 3vw, 2.45rem);
389
+ }
390
+
391
+ .app-page-header--detail .app-page-header__subtitle {
392
+ font-size: 1.08rem;
393
+ }
394
+
395
+ .app-search {
396
+ margin-bottom: 1.25rem;
397
+ }
398
+
399
+ .app-search__field {
400
+ display: flex;
401
+ align-items: center;
402
+ gap: 0.75rem;
403
+ padding: 0.35rem 0.95rem;
404
+ border: 0.0625rem solid var(--border-color);
405
+ border-radius: var(--radius-lg);
406
+ background: var(--surface-card);
407
+ box-shadow: var(--shadow-sm);
408
+ }
409
+
410
+ .app-search__icon {
411
+ color: var(--text-faint);
412
+ font-size: 1rem;
413
+ flex: 0 0 auto;
414
+ }
415
+
416
+ .app-search__icon svg {
417
+ display: block;
418
+ inline-size: 1rem;
419
+ block-size: 1rem;
420
+ }
421
+
422
+ .app-search__input {
423
+ inline-size: 100%;
424
+ min-block-size: 3rem;
425
+ border: 0;
426
+ background: transparent;
427
+ color: var(--text-strong);
428
+ font-family: var(--font-input);
429
+ font-size: 0.96rem;
430
+ line-height: 1.4;
431
+ }
432
+
433
+ .app-search__input::placeholder {
434
+ color: var(--text-faint);
435
+ }
436
+
437
+ .app-search__input:focus {
438
+ outline: none;
439
+ }
440
+
441
+ .app-state-card {
442
+ padding: 1.5rem;
443
+ border: 0.0625rem solid var(--border-color);
444
+ border-radius: var(--radius-xl);
445
+ background: var(--surface-card);
446
+ box-shadow: var(--shadow-sm);
447
+ }
448
+
449
+ .app-state-card__title {
450
+ margin-bottom: 0.5rem;
451
+ font-size: 1.4rem;
452
+ line-height: 1.15;
453
+ font-weight: 700;
454
+ color: var(--text-strong);
455
+ letter-spacing: -0.03em;
456
+ }
457
+
458
+ .app-state-card__text {
459
+ max-inline-size: 36rem;
460
+ font-size: 0.97rem;
461
+ line-height: 1.55;
462
+ color: var(--text-dim);
463
+ }
464
+
465
+ .app-state-card__action {
466
+ margin-top: 1rem;
467
+ padding: 0.7rem 1rem;
468
+ border: 0.0625rem solid var(--border-color);
469
+ border-radius: 999px;
470
+ background: var(--surface-subtle);
471
+ color: var(--text-strong);
472
+ font-weight: 600;
473
+ cursor: pointer;
474
+ transition:
475
+ background-color 160ms ease,
476
+ border-color 160ms ease,
477
+ box-shadow 160ms ease;
478
+ }
479
+
480
+ .app-state-card__action:hover,
481
+ .app-state-card__action:focus-visible {
482
+ background: var(--surface-hover);
483
+ border-color: var(--border-strong);
484
+ box-shadow: var(--shadow-sm);
485
+ }
486
+
487
+ .app-tabs {
488
+ display: inline-flex;
489
+ flex-wrap: wrap;
490
+ align-items: center;
491
+ gap: 0.375rem;
492
+ padding: 0.35rem;
493
+ border: 0.0625rem solid var(--border-color);
494
+ border-radius: 999px;
495
+ background: var(--surface-subtle);
496
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
497
+ }
498
+
499
+ .app-tabs__tab {
500
+ padding: 0.6rem 0.95rem;
501
+ border: 0;
502
+ border-radius: 999px;
503
+ background: transparent;
504
+ color: var(--text-dim);
505
+ font-size: 0.82rem;
506
+ line-height: 1;
507
+ font-weight: 600;
508
+ cursor: pointer;
509
+ transition:
510
+ background-color 160ms ease,
511
+ color 160ms ease,
512
+ box-shadow 160ms ease;
513
+ }
514
+
515
+ .app-tabs__tab:hover,
516
+ .app-tabs__tab:focus-visible {
517
+ color: var(--text-strong);
518
+ }
519
+
520
+ .app-tabs__tab--active {
521
+ color: var(--surface-card);
522
+ background: var(--text-strong);
523
+ box-shadow: var(--shadow-sm);
524
+ }
525
+ .app-tabs__tab--active:hover {
526
+ color: var(--surface-card);
527
+ }
528
+
529
+ .app-empty-text {
530
+ font-size: 0.95rem;
531
+ line-height: 1.6;
532
+ color: var(--text-dim);
533
+ }
534
+
535
+ .app-error {
536
+ padding: 0.85rem 1rem;
537
+ border: 0.0625rem solid var(--status-error-border);
538
+ border-radius: var(--radius-md);
539
+ background: var(--status-error-bg);
540
+ color: var(--status-error-text);
541
+ font-weight: 650;
542
+ }
543
+
544
+ .app-json-panel {
545
+ max-block-size: 40rem;
546
+ overflow: auto;
547
+ padding: 1rem 1.1rem;
548
+ border: 0.0625rem solid var(--border-color);
549
+ border-radius: var(--radius-lg);
550
+ background: var(--surface-subtle);
551
+ color: var(--text-medium);
552
+ font-family: var(--font-mono);
553
+ font-size: 0.81rem;
554
+ line-height: 1.6;
555
+ white-space: pre-wrap;
556
+ word-break: break-word;
557
+ }
558
+
559
+ .app-copyable {
560
+ display: inline-flex;
561
+ align-items: center;
562
+ gap: 0.45rem;
563
+ min-width: 0;
564
+ }
565
+
566
+ .app-copyable__value {
567
+ min-width: 0;
568
+ order: 2;
569
+ overflow-wrap: anywhere;
570
+ }
571
+
572
+ .app-copyable__button {
573
+ flex: 0 0 auto;
574
+ order: 1;
575
+ display: inline-flex;
576
+ align-items: center;
577
+ justify-content: center;
578
+ inline-size: 1.45rem;
579
+ block-size: 1.45rem;
580
+ padding: 0;
581
+ border: 0.0625rem solid var(--border-color);
582
+ border-radius: 999px;
583
+ background: var(--surface-subtle);
584
+ color: var(--text-faint);
585
+ font-size: 0.78rem;
586
+ line-height: 1;
587
+ font-weight: 600;
588
+ cursor: pointer;
589
+ transition:
590
+ border-color 140ms ease,
591
+ color 140ms ease,
592
+ background-color 140ms ease;
593
+ }
594
+
595
+ .app-copyable__button--copied {
596
+ border-color: var(--status-success-border);
597
+ background: var(--status-success-bg);
598
+ }
599
+
600
+ .app-copyable__icon {
601
+ inline-size: 0.7rem;
602
+ block-size: 0.7rem;
603
+ opacity: 0.62;
604
+ }
605
+
606
+ .app-copyable__button:hover,
607
+ .app-copyable__button:focus-visible {
608
+ border-color: var(--border-strong);
609
+ color: var(--text-strong);
610
+ background: var(--surface-hover);
611
+ outline: none;
612
+ }
613
+
614
+ .app-copyable__button:hover .app-copyable__icon,
615
+ .app-copyable__button:focus-visible .app-copyable__icon,
616
+ .app-copyable__button--copied .app-copyable__icon {
617
+ opacity: 0.92;
618
+ }
619
+
620
+ .app-visually-hidden {
621
+ position: absolute;
622
+ width: 0.0625rem;
623
+ height: 0.0625rem;
624
+ padding: 0;
625
+ margin: -0.0625rem;
626
+ overflow: hidden;
627
+ clip: rect(0, 0, 0, 0);
628
+ white-space: nowrap;
629
+ border: 0;
630
+ }
631
+
632
+ @media (max-width: 52rem) {
633
+ .app-page {
634
+ padding: 1rem;
635
+ }
636
+
637
+ .app-shell-frame {
638
+ padding: 0.75rem;
639
+ }
640
+
641
+ .app-toolbar {
642
+ flex-wrap: wrap;
643
+ }
644
+
645
+ .app-toolbar__breadcrumbs {
646
+ order: 3;
647
+ inline-size: 100%;
648
+ }
649
+
650
+ .app-toolbar__actions {
651
+ width: 100%;
652
+ margin-left: 0;
653
+ justify-content: flex-end;
654
+ }
655
+
656
+ .app-shell {
657
+ padding: 1.25rem 0.5rem 0.5rem;
658
+ }
659
+
660
+ .app-tabs {
661
+ inline-size: 100%;
662
+ justify-content: flex-start;
663
+ border-radius: var(--radius-lg);
664
+ }
665
+
666
+ .app-tab-panel {
667
+ padding: 1rem;
668
+ }
669
+
670
+ .app-server-control__form,
671
+ .app-server-control {
672
+ max-width: min(100%, 28rem);
673
+ }
674
+ }
675
+