@pipelex/mthds-ui 0.5.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,525 @@
1
+ /* ─── Detail Panel — sliding side panel for node inspection ─────────────── */
2
+
3
+ .detail-panel {
4
+ position: absolute;
5
+ top: 0;
6
+ right: 0;
7
+ width: 380px;
8
+ height: 100%;
9
+ background: #111118;
10
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
11
+ z-index: 10;
12
+ display: flex;
13
+ flex-direction: column;
14
+ font-family: "Inter", -apple-system, sans-serif;
15
+ color: #e2e8f0;
16
+ overflow: hidden;
17
+ transition: transform 0.2s ease;
18
+ }
19
+
20
+ .detail-panel--closed {
21
+ transform: translateX(100%);
22
+ pointer-events: none;
23
+ }
24
+
25
+ /* ─── Resize handle — left edge drag target ────────────────────────────── */
26
+
27
+ .detail-panel-resize-handle {
28
+ position: absolute;
29
+ top: 0;
30
+ left: -6px;
31
+ width: 12px;
32
+ height: 100%;
33
+ cursor: col-resize;
34
+ z-index: 2;
35
+ background: transparent;
36
+ }
37
+
38
+ /* Visible bar — narrower than the hit area */
39
+ .detail-panel-resize-handle::before {
40
+ content: "";
41
+ position: absolute;
42
+ top: 0;
43
+ left: 5px;
44
+ width: 2px;
45
+ height: 100%;
46
+ background: transparent;
47
+ transition: background 0.15s;
48
+ }
49
+
50
+ .detail-panel-resize-handle:hover::before,
51
+ .detail-panel--dragging .detail-panel-resize-handle::before {
52
+ background: rgba(59, 130, 246, 0.5);
53
+ }
54
+
55
+ /* Grip indicator — visible on hover */
56
+ .detail-panel-resize-handle::after {
57
+ content: "";
58
+ position: absolute;
59
+ top: 50%;
60
+ left: 50%;
61
+ transform: translate(-50%, -50%);
62
+ width: 2px;
63
+ height: 24px;
64
+ border-radius: 1px;
65
+ background: transparent;
66
+ transition: background 0.15s;
67
+ }
68
+
69
+ .detail-panel-resize-handle:hover::after,
70
+ .detail-panel--dragging .detail-panel-resize-handle::after {
71
+ background: rgba(59, 130, 246, 0.8);
72
+ }
73
+
74
+ /* Disable transition during drag for smooth resizing */
75
+ .detail-panel--dragging {
76
+ transition: none;
77
+ }
78
+
79
+ .detail-panel--dragging .detail-panel-content {
80
+ pointer-events: none;
81
+ }
82
+
83
+ .detail-panel-close {
84
+ all: unset;
85
+ cursor: pointer;
86
+ position: absolute;
87
+ top: 12px;
88
+ right: 12px;
89
+ width: 24px;
90
+ height: 24px;
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ border-radius: 4px;
95
+ color: #64748b;
96
+ font-size: 18px;
97
+ line-height: 1;
98
+ z-index: 3;
99
+ }
100
+
101
+ .detail-panel-close:hover {
102
+ color: #94a3b8;
103
+ background: rgba(255, 255, 255, 0.06);
104
+ }
105
+
106
+ .detail-panel-content {
107
+ flex: 1;
108
+ overflow-y: auto;
109
+ padding: 20px 16px;
110
+ display: flex;
111
+ flex-direction: column;
112
+ gap: 16px;
113
+ }
114
+
115
+ /* ─── Sticky header (pipe info + IO stays pinned at top) ───────────────── */
116
+
117
+ .detail-sticky-header {
118
+ position: sticky;
119
+ top: -20px;
120
+ z-index: 1;
121
+ background: #111118;
122
+ padding-top: 20px;
123
+ margin-top: -20px;
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: 16px;
127
+ }
128
+
129
+ /* ─── Shared detail components ──────────────────────────────────────────── */
130
+
131
+ .detail-section-label {
132
+ font-size: 9px;
133
+ font-weight: 700;
134
+ text-transform: uppercase;
135
+ letter-spacing: 0.06em;
136
+ color: #64748b;
137
+ margin-bottom: 6px;
138
+ }
139
+
140
+ .detail-header {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 8px;
144
+ }
145
+
146
+ .detail-badge {
147
+ font-size: 10px;
148
+ font-weight: 700;
149
+ text-transform: uppercase;
150
+ letter-spacing: 0.04em;
151
+ padding: 2px 7px;
152
+ border-radius: 4px;
153
+ white-space: nowrap;
154
+ }
155
+
156
+ .detail-badge--operator {
157
+ background: #ff6b6b;
158
+ color: #0e0e0e;
159
+ }
160
+
161
+ .detail-badge--controller {
162
+ background: #bd93f9;
163
+ color: #0e0e0e;
164
+ }
165
+
166
+ .detail-pipe-code {
167
+ font-family: "JetBrains Mono", "Monaco", monospace;
168
+ font-size: 14px;
169
+ font-weight: 600;
170
+ color: #ff6b6b;
171
+ }
172
+
173
+ .detail-pipe-code--controller {
174
+ color: #bd93f9;
175
+ }
176
+
177
+ .detail-status {
178
+ display: flex;
179
+ align-items: center;
180
+ gap: 8px;
181
+ }
182
+
183
+ .detail-status-dot {
184
+ width: 8px;
185
+ height: 8px;
186
+ border-radius: 50%;
187
+ display: inline-block;
188
+ }
189
+
190
+ .detail-status-label {
191
+ font-size: 12px;
192
+ font-weight: 600;
193
+ text-transform: capitalize;
194
+ }
195
+
196
+ .detail-duration {
197
+ font-size: 11px;
198
+ color: #64748b;
199
+ font-family: "JetBrains Mono", "Monaco", monospace;
200
+ }
201
+
202
+ .detail-description {
203
+ font-size: 12px;
204
+ color: #94a3b8;
205
+ line-height: 1.5;
206
+ }
207
+
208
+ /* ─── IO Pills ──────────────────────────────────────────────────────────── */
209
+
210
+ .detail-io-pill {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 6px;
214
+ font-size: 11px;
215
+ padding: 3px 8px;
216
+ border-radius: 4px;
217
+ background: rgba(255, 255, 255, 0.04);
218
+ border: 1px solid rgba(255, 255, 255, 0.06);
219
+ }
220
+
221
+ .detail-io-name {
222
+ font-family: "JetBrains Mono", "Monaco", monospace;
223
+ color: #e2e8f0;
224
+ }
225
+
226
+ .detail-io-concept {
227
+ color: #64748b;
228
+ font-size: 10px;
229
+ }
230
+
231
+ .detail-io-list {
232
+ display: flex;
233
+ flex-direction: column;
234
+ gap: 4px;
235
+ }
236
+
237
+ /* ─── Blueprint-specific sections ───────────────────────────────────────── */
238
+
239
+ .detail-prompt-block {
240
+ font-family: "JetBrains Mono", "Monaco", monospace;
241
+ font-size: 11px;
242
+ color: #94a3b8;
243
+ background: rgba(255, 255, 255, 0.03);
244
+ border: 1px solid rgba(255, 255, 255, 0.06);
245
+ border-radius: 6px;
246
+ padding: 10px 12px;
247
+ white-space: pre-wrap;
248
+ word-break: break-word;
249
+ overflow-y: auto;
250
+ line-height: 1.5;
251
+ }
252
+
253
+ .detail-prompt-block--collapsed {
254
+ max-height: 300px;
255
+ }
256
+
257
+ .detail-prompt-block--expanded {
258
+ max-height: none;
259
+ overflow-y: visible;
260
+ }
261
+
262
+ .detail-prompt-expand-btn {
263
+ all: unset;
264
+ cursor: pointer;
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 4px;
268
+ font-size: 9px;
269
+ color: #64748b;
270
+ padding: 2px 6px;
271
+ border-radius: 3px;
272
+ background: rgba(255, 255, 255, 0.04);
273
+ border: 1px solid rgba(255, 255, 255, 0.06);
274
+ transition: color 0.15s;
275
+ }
276
+
277
+ .detail-prompt-expand-btn:hover {
278
+ color: #94a3b8;
279
+ }
280
+
281
+ .detail-kv-row {
282
+ display: flex;
283
+ justify-content: space-between;
284
+ align-items: flex-start; /* top-align so the label stays next to the first line of a wrapped value */
285
+ gap: 12px;
286
+ font-size: 11px;
287
+ padding: 3px 0;
288
+ }
289
+
290
+ .detail-kv-key {
291
+ color: #64748b;
292
+ flex-shrink: 0; /* label stays at its natural width */
293
+ }
294
+
295
+ .detail-kv-value {
296
+ font-family: "JetBrains Mono", "Monaco", monospace;
297
+ color: #e2e8f0;
298
+ flex: 1 1 0;
299
+ min-width: 0;
300
+ text-align: right;
301
+ word-break: break-word;
302
+ overflow-wrap: anywhere;
303
+ }
304
+
305
+ /* ─── Field block: labeled multi-line text (for long resolved values) ─── */
306
+
307
+ .detail-field-block {
308
+ display: flex;
309
+ flex-direction: column;
310
+ gap: 4px;
311
+ }
312
+
313
+ .detail-field-block-label {
314
+ font-family: "JetBrains Mono", "Monaco", monospace;
315
+ font-size: 10px;
316
+ color: #64748b;
317
+ }
318
+
319
+ .detail-field-block-value {
320
+ font-family: "JetBrains Mono", "Monaco", monospace;
321
+ font-size: 11px;
322
+ color: #e2e8f0;
323
+ background: rgba(255, 255, 255, 0.03);
324
+ border: 1px solid rgba(255, 255, 255, 0.06);
325
+ border-radius: 6px;
326
+ padding: 8px 10px;
327
+ white-space: pre-wrap;
328
+ word-break: break-word;
329
+ overflow-wrap: anywhere;
330
+ line-height: 1.5;
331
+ max-height: 240px;
332
+ overflow-y: auto;
333
+ }
334
+
335
+ /* ─── Nested construct sub-section header ───────────────────────────────── */
336
+ /* Rendered before each nested sub-construct's recursive contents. The left
337
+ * border + indent provides a visual "branch" cue so the tree structure is
338
+ * obvious without needing collapse state. */
339
+
340
+ .detail-nested-header {
341
+ display: flex;
342
+ align-items: baseline;
343
+ justify-content: space-between;
344
+ gap: 8px;
345
+ margin-top: 6px;
346
+ margin-bottom: 4px;
347
+ padding: 4px 0 4px 8px;
348
+ border-left: 2px solid rgba(80, 250, 123, 0.35);
349
+ }
350
+
351
+ .detail-nested-header-name {
352
+ font-family: "JetBrains Mono", "Monaco", monospace;
353
+ font-size: 11px;
354
+ font-weight: 600;
355
+ color: #e2e8f0;
356
+ }
357
+
358
+ .detail-nested-header-meta {
359
+ font-family: "JetBrains Mono", "Monaco", monospace;
360
+ font-size: 9px;
361
+ color: #64748b;
362
+ text-transform: uppercase;
363
+ letter-spacing: 0.04em;
364
+ }
365
+
366
+ /* ─── Concept schema table ──────────────────────────────────────────────── */
367
+
368
+ .detail-schema-table {
369
+ width: 100%;
370
+ font-size: 11px;
371
+ border-collapse: collapse;
372
+ }
373
+
374
+ .detail-schema-table th {
375
+ text-align: left;
376
+ font-weight: 700;
377
+ color: #64748b;
378
+ font-size: 9px;
379
+ text-transform: uppercase;
380
+ letter-spacing: 0.06em;
381
+ padding: 4px 6px;
382
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
383
+ }
384
+
385
+ .detail-schema-table td {
386
+ padding: 4px 6px;
387
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
388
+ color: #94a3b8;
389
+ }
390
+
391
+ .detail-schema-field {
392
+ font-family: "JetBrains Mono", "Monaco", monospace;
393
+ color: #e2e8f0;
394
+ }
395
+
396
+ .detail-schema-type {
397
+ color: #8be9fd;
398
+ }
399
+
400
+ .detail-schema-required {
401
+ color: #ff6b6b;
402
+ font-size: 9px;
403
+ }
404
+
405
+ /* ─── Error section ─────────────────────────────────────────────────────── */
406
+
407
+ .detail-error {
408
+ background: rgba(255, 85, 85, 0.08);
409
+ border: 1px solid rgba(255, 85, 85, 0.2);
410
+ border-radius: 6px;
411
+ padding: 10px 12px;
412
+ }
413
+
414
+ .detail-error-type {
415
+ font-size: 12px;
416
+ font-weight: 600;
417
+ color: #ff5555;
418
+ margin-bottom: 4px;
419
+ }
420
+
421
+ .detail-error-message {
422
+ font-size: 11px;
423
+ color: #94a3b8;
424
+ line-height: 1.5;
425
+ }
426
+
427
+ .detail-error-stack {
428
+ font-family: "JetBrains Mono", "Monaco", monospace;
429
+ font-size: 10px;
430
+ color: #64748b;
431
+ margin-top: 8px;
432
+ max-height: 150px;
433
+ overflow-y: auto;
434
+ white-space: pre-wrap;
435
+ word-break: break-word;
436
+ }
437
+
438
+ /* ─── Steps list (PipeSequence, PipeCondition outcomes) ─────────────────── */
439
+
440
+ .detail-steps-list {
441
+ display: flex;
442
+ flex-direction: column;
443
+ gap: 4px;
444
+ }
445
+
446
+ .detail-step-item {
447
+ display: flex;
448
+ align-items: center;
449
+ gap: 8px;
450
+ font-size: 11px;
451
+ padding: 4px 8px;
452
+ border-radius: 4px;
453
+ background: rgba(255, 255, 255, 0.03);
454
+ border: 1px solid rgba(255, 255, 255, 0.06);
455
+ }
456
+
457
+ .detail-step-index {
458
+ color: #64748b;
459
+ font-size: 10px;
460
+ font-weight: 700;
461
+ min-width: 16px;
462
+ }
463
+
464
+ .detail-step-code {
465
+ font-family: "JetBrains Mono", "Monaco", monospace;
466
+ color: #e2e8f0;
467
+ }
468
+
469
+ /* ─── Tags/Metrics ──────────────────────────────────────────────────────── */
470
+
471
+ .detail-tags {
472
+ display: flex;
473
+ flex-wrap: wrap;
474
+ gap: 4px;
475
+ }
476
+
477
+ .detail-tag {
478
+ font-size: 10px;
479
+ padding: 2px 6px;
480
+ border-radius: 3px;
481
+ background: rgba(255, 255, 255, 0.04);
482
+ border: 1px solid rgba(255, 255, 255, 0.06);
483
+ }
484
+
485
+ .detail-tag-key {
486
+ color: #64748b;
487
+ }
488
+
489
+ .detail-tag-value {
490
+ color: #e2e8f0;
491
+ font-family: "JetBrains Mono", "Monaco", monospace;
492
+ }
493
+
494
+ /* ─── Concept panel header ──────────────────────────────────────────────── */
495
+
496
+ .detail-concept-code {
497
+ font-family: "JetBrains Mono", "Monaco", monospace;
498
+ font-size: 14px;
499
+ font-weight: 600;
500
+ color: #50fa7b;
501
+ }
502
+
503
+ .detail-concept-domain {
504
+ font-size: 11px;
505
+ color: #64748b;
506
+ }
507
+
508
+ .detail-refines {
509
+ font-size: 11px;
510
+ color: #94a3b8;
511
+ }
512
+
513
+ .detail-refines-code {
514
+ font-family: "JetBrains Mono", "Monaco", monospace;
515
+ color: #8be9fd;
516
+ }
517
+
518
+ /* ─── Not available fallback ────────────────────────────────────────────── */
519
+
520
+ .detail-not-available {
521
+ font-size: 12px;
522
+ color: #64748b;
523
+ font-style: italic;
524
+ padding: 8px 0;
525
+ }