@pipelex/mthds-ui 0.12.0 → 0.13.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.
@@ -1007,6 +1007,40 @@ svg.react-flow__connectionline {
1007
1007
  .pipe-card--controller {
1008
1008
  --pipe-card-accent: var(--text-muted);
1009
1009
  }
1010
+ .pipe-card--static {
1011
+ background: var(--surface-sunken);
1012
+ border-left-style: solid;
1013
+ }
1014
+ .pipe-card-annotations {
1015
+ display: flex;
1016
+ flex-wrap: wrap;
1017
+ gap: 4px;
1018
+ min-width: 0;
1019
+ }
1020
+ .pipe-card-annotation {
1021
+ display: inline-flex;
1022
+ align-items: center;
1023
+ max-width: 100%;
1024
+ overflow: hidden;
1025
+ text-overflow: ellipsis;
1026
+ white-space: nowrap;
1027
+ border-radius: 4px;
1028
+ border: 1px solid var(--border-subtle);
1029
+ background: var(--surface-pill);
1030
+ color: var(--text-muted);
1031
+ font-family: var(--font-mono);
1032
+ font-size: 10px;
1033
+ line-height: 1.4;
1034
+ padding: 1px 6px;
1035
+ }
1036
+ .pipe-card-annotation--outcome {
1037
+ color: var(--color-warning);
1038
+ border-color: var(--ctrl-condition-border);
1039
+ }
1040
+ .pipe-card-annotation--batch {
1041
+ color: var(--ctrl-batch-text);
1042
+ border-color: var(--ctrl-batch-border);
1043
+ }
1010
1044
 
1011
1045
  /* Signature (unimplemented stub) — dashed + muted so it reads as "declared,
1012
1046
  not built yet", distinct from operator (solid accent) and controller (tinted). */
@@ -2197,6 +2231,207 @@ button.stuff-viewer-local-file--button:focus-visible {
2197
2231
  margin: 0 2px;
2198
2232
  }
2199
2233
 
2234
+ /* ─── Validation widget ─────────────────────────────────────────────────── */
2235
+ /* Lives in GraphToolbar.css on purpose: the VS Code extension copies exactly
2236
+ this stylesheet into its webview, so a separate file would need host build
2237
+ changes for no benefit. */
2238
+
2239
+ .graph-toolbar-validation {
2240
+ position: relative;
2241
+ display: inline-flex;
2242
+ }
2243
+
2244
+ .graph-toolbar-validation-btn {
2245
+ position: relative;
2246
+ }
2247
+
2248
+ .graph-toolbar-validation-btn--valid,
2249
+ .graph-toolbar-validation-btn--valid:hover {
2250
+ color: var(--color-success);
2251
+ }
2252
+
2253
+ .graph-toolbar-validation-btn--invalid,
2254
+ .graph-toolbar-validation-btn--invalid:hover {
2255
+ color: var(--color-error);
2256
+ }
2257
+
2258
+ .graph-toolbar-validation-btn--error,
2259
+ .graph-toolbar-validation-btn--error:hover {
2260
+ color: var(--color-warning);
2261
+ }
2262
+
2263
+ .graph-toolbar-validation-spin {
2264
+ animation: graph-toolbar-validation-rotate 1s linear infinite;
2265
+ }
2266
+
2267
+ @keyframes graph-toolbar-validation-rotate {
2268
+ to {
2269
+ transform: rotate(360deg);
2270
+ }
2271
+ }
2272
+
2273
+ .graph-toolbar-validation-badge {
2274
+ position: absolute;
2275
+ top: -5px;
2276
+ right: -5px;
2277
+ min-width: 14px;
2278
+ height: 14px;
2279
+ padding: 0 3px;
2280
+ box-sizing: border-box;
2281
+ border-radius: 7px;
2282
+ background: var(--color-error);
2283
+ color: var(--text-on-accent);
2284
+ font-family: var(--font-sans);
2285
+ font-size: 9px;
2286
+ line-height: 14px;
2287
+ font-weight: 600;
2288
+ text-align: center;
2289
+ pointer-events: none;
2290
+ }
2291
+
2292
+ .graph-toolbar-validation-btn--valid .graph-toolbar-validation-badge,
2293
+ .graph-toolbar-validation-btn--error .graph-toolbar-validation-badge {
2294
+ background: var(--color-warning);
2295
+ }
2296
+
2297
+ /* ─── Validation dropdown panel ─────────────────────────────────────────── */
2298
+
2299
+ .graph-validation-panel {
2300
+ position: absolute;
2301
+ z-index: 12;
2302
+ /* Viewport clamp: narrow webviews (VS Code panels) can be under 260px wide. */
2303
+ min-width: min(260px, calc(100vw - 24px));
2304
+ max-width: min(360px, calc(100vw - 24px));
2305
+ max-height: 320px;
2306
+ overflow-y: auto;
2307
+ padding: 6px;
2308
+ border-radius: 8px;
2309
+ background: var(--surface-overlay);
2310
+ border: 1px solid var(--border-default);
2311
+ box-shadow: var(--shadow-md);
2312
+ backdrop-filter: blur(6px);
2313
+ pointer-events: auto;
2314
+ font-family: var(--font-sans);
2315
+ cursor: default;
2316
+ }
2317
+
2318
+ /* Placement relative to the widget button — always unfolds toward the graph. */
2319
+ .graph-validation-panel--down-start {
2320
+ top: calc(100% + 6px);
2321
+ left: 0;
2322
+ }
2323
+ .graph-validation-panel--down-end {
2324
+ top: calc(100% + 6px);
2325
+ right: 0;
2326
+ }
2327
+ .graph-validation-panel--up-start {
2328
+ bottom: calc(100% + 6px);
2329
+ left: 0;
2330
+ }
2331
+ .graph-validation-panel--up-end {
2332
+ bottom: calc(100% + 6px);
2333
+ right: 0;
2334
+ }
2335
+ .graph-validation-panel--side-end {
2336
+ left: calc(100% + 6px);
2337
+ top: 0;
2338
+ }
2339
+ .graph-validation-panel--side-start {
2340
+ right: calc(100% + 6px);
2341
+ top: 0;
2342
+ }
2343
+
2344
+ .graph-validation-panel-header {
2345
+ padding: 4px 6px 6px;
2346
+ font-size: 11px;
2347
+ font-weight: 600;
2348
+ color: var(--text-secondary);
2349
+ }
2350
+
2351
+ .graph-validation-empty {
2352
+ padding: 2px 6px 6px;
2353
+ font-size: 12px;
2354
+ color: var(--text-secondary);
2355
+ }
2356
+
2357
+ .graph-validation-issues {
2358
+ list-style: none;
2359
+ margin: 0;
2360
+ padding: 0;
2361
+ display: flex;
2362
+ flex-direction: column;
2363
+ gap: 4px;
2364
+ }
2365
+
2366
+ .graph-validation-issue {
2367
+ padding: 6px 8px;
2368
+ border-radius: 6px;
2369
+ border-left: 3px solid var(--color-error);
2370
+ background: var(--color-error-bg);
2371
+ font-size: 12px;
2372
+ color: var(--text-primary);
2373
+ }
2374
+
2375
+ /* The focusable/clickable element inside each <li> (keeps listitem semantics). */
2376
+ .graph-validation-issue-body {
2377
+ display: flex;
2378
+ flex-direction: column;
2379
+ gap: 2px;
2380
+ }
2381
+
2382
+ .graph-validation-issue--warning {
2383
+ border-left-color: var(--color-warning);
2384
+ background: var(--surface-sunken);
2385
+ }
2386
+
2387
+ .graph-validation-issue--clickable {
2388
+ cursor: pointer;
2389
+ }
2390
+
2391
+ .graph-validation-issue--clickable:hover {
2392
+ filter: brightness(1.1);
2393
+ }
2394
+
2395
+ .graph-validation-issue-body:focus-visible {
2396
+ outline: 2px solid var(--focus-ring);
2397
+ outline-offset: 1px;
2398
+ border-radius: 4px;
2399
+ }
2400
+
2401
+ .graph-validation-issue-meta {
2402
+ display: flex;
2403
+ align-items: baseline;
2404
+ gap: 6px;
2405
+ flex-wrap: wrap;
2406
+ }
2407
+
2408
+ .graph-validation-issue-context {
2409
+ font-family: var(--font-mono);
2410
+ font-size: 11px;
2411
+ font-weight: 600;
2412
+ color: var(--text-secondary);
2413
+ }
2414
+
2415
+ .graph-validation-issue-file {
2416
+ font-size: 10px;
2417
+ color: var(--text-dim);
2418
+ }
2419
+
2420
+ .graph-validation-issue-message {
2421
+ white-space: pre-wrap;
2422
+ overflow-wrap: anywhere;
2423
+ }
2424
+
2425
+ .graph-validation-issue-fix {
2426
+ font-size: 11px;
2427
+ color: var(--text-secondary);
2428
+ }
2429
+
2430
+ .graph-validation-issue-fix::before {
2431
+ content: "Fix: ";
2432
+ font-weight: 600;
2433
+ }
2434
+
2200
2435
  /* ─── Standalone GraphViewer chrome (toolbar, theme, layout) ─────────── */
2201
2436
 
2202
2437
  * {