@pipelex/mthds-ui 0.13.0 → 0.14.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.
@@ -749,16 +749,22 @@ svg.react-flow__connectionline {
749
749
  var(--shadow-lg) !important;
750
750
  z-index: 1000 !important;
751
751
  }
752
- /* Pipe cards handle their own selection styling — suppress the wrapper outline */
752
+ /* Pipe cards handle their own selection styling — suppress the wrapper outline.
753
+ The outline reset excludes .node-validation-flash: the flash animates the
754
+ wrapper outline, and an !important reset would override the animation. */
753
755
  .react-flow__node-pipeCard {
754
756
  background: transparent !important;
755
757
  border: none !important;
756
758
  box-shadow: none !important;
757
- outline: none !important;
758
759
  padding: 0 !important;
759
760
  }
761
+ .react-flow__node-pipeCard:not(.node-validation-flash) {
762
+ outline: none !important;
763
+ }
760
764
  .react-flow__node-pipeCard.selected {
761
765
  box-shadow: none !important;
766
+ }
767
+ .react-flow__node-pipeCard.selected:not(.node-validation-flash) {
762
768
  outline: none !important;
763
769
  }
764
770
  .react-flow__node-pipeCard.selected .pipe-card {
@@ -1210,6 +1216,69 @@ svg.react-flow__connectionline {
1210
1216
  max-width: 100px;
1211
1217
  }
1212
1218
 
1219
+ /* ─── Validation decorations (severity ring + count badge) ─────────────────
1220
+ Stamped by GraphViewer from targeted ValidationIssues. The ring is an
1221
+ outline so node geometry (and therefore layout) never changes; the badge
1222
+ lives in the header flow, which is size-locked by the ELK dimensions. */
1223
+
1224
+ .node-validation-ring--error {
1225
+ outline: 2px solid var(--color-error);
1226
+ outline-offset: 1px;
1227
+ }
1228
+ .node-validation-ring--warning {
1229
+ outline: 1.5px solid var(--color-warning);
1230
+ outline-offset: 1px;
1231
+ }
1232
+
1233
+ .node-validation-badge {
1234
+ flex-shrink: 0;
1235
+ min-width: 16px;
1236
+ height: 16px;
1237
+ padding: 0 4px;
1238
+ border: none;
1239
+ border-radius: 999px;
1240
+ font-family: var(--font-sans);
1241
+ font-size: 10px;
1242
+ font-weight: 700;
1243
+ line-height: 16px;
1244
+ text-align: center;
1245
+ box-sizing: border-box;
1246
+ }
1247
+ .node-validation-badge--error {
1248
+ background: var(--color-error);
1249
+ color: #fff;
1250
+ }
1251
+ .node-validation-badge--warning {
1252
+ background: var(--color-warning);
1253
+ color: rgba(0, 0, 0, 0.85);
1254
+ }
1255
+ button.node-validation-badge {
1256
+ cursor: pointer;
1257
+ }
1258
+ /* The controller header disables pointer events (it overlays children); the
1259
+ badge re-enables them for its tooltip and click-through to the panel. */
1260
+ .controller-group-header .node-validation-badge {
1261
+ pointer-events: auto;
1262
+ }
1263
+
1264
+ /* Transient highlight when a validation-panel row navigates to its node.
1265
+ Applied to the ReactFlow node wrapper; the animation fades the halo out and
1266
+ the class is cleared (or dropped by the next rebuild) once it has played. */
1267
+ .react-flow__node.node-validation-flash {
1268
+ animation: node-validation-flash 1.6s ease-out;
1269
+ }
1270
+ @keyframes node-validation-flash {
1271
+ 0%,
1272
+ 50% {
1273
+ outline: 3px solid var(--color-accent-strong);
1274
+ outline-offset: 5px;
1275
+ }
1276
+ 100% {
1277
+ outline: 3px solid transparent;
1278
+ outline-offset: 5px;
1279
+ }
1280
+ }
1281
+
1213
1282
  /* ─── StuffViewer component styles ────────────────────────────────────────── */
1214
1283
  /* StuffViewer is also exported standalone (used outside GraphViewer — e.g.
1215
1284
  * docs pages, embedded previews). The theme tokens are normally applied to