@pipelex/mthds-ui 0.11.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). */
@@ -1388,6 +1422,18 @@ svg.react-flow__connectionline {
1388
1422
  margin: 0;
1389
1423
  }
1390
1424
 
1425
+ /* Native `Html` concept — rendered in a sandboxed iframe so the document's own
1426
+ <style>/layout is faithful and isolated from the host. White backdrop because
1427
+ these documents (invoices, quotes, reports) are authored for print/light. */
1428
+ .stuff-viewer-html-frame {
1429
+ width: 100%;
1430
+ height: 100%;
1431
+ min-height: 480px;
1432
+ border: none;
1433
+ border-radius: var(--sv-radius);
1434
+ background: #fff;
1435
+ }
1436
+
1391
1437
  /* PDF embed */
1392
1438
  .stuff-viewer-pdf {
1393
1439
  min-height: 400px;
@@ -2185,6 +2231,207 @@ button.stuff-viewer-local-file--button:focus-visible {
2185
2231
  margin: 0 2px;
2186
2232
  }
2187
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
+
2188
2435
  /* ─── Standalone GraphViewer chrome (toolbar, theme, layout) ─────────── */
2189
2436
 
2190
2437
  * {