@tangle-network/sandbox-ui 0.75.0 → 0.77.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.
package/dist/globals.css CHANGED
@@ -327,6 +327,9 @@
327
327
  .end {
328
328
  inset-inline-end: var(--spacing);
329
329
  }
330
+ .-top-1 {
331
+ top: calc(var(--spacing) * -1);
332
+ }
330
333
  .-top-1\.5 {
331
334
  top: calc(var(--spacing) * -1.5);
332
335
  }
@@ -372,6 +375,9 @@
372
375
  .top-full {
373
376
  top: 100%;
374
377
  }
378
+ .-right-1 {
379
+ right: calc(var(--spacing) * -1);
380
+ }
375
381
  .-right-1\.5 {
376
382
  right: calc(var(--spacing) * -1.5);
377
383
  }
@@ -707,9 +713,6 @@
707
713
  .\!h-2 {
708
714
  height: calc(var(--spacing) * 2) !important;
709
715
  }
710
- .h-0\.5 {
711
- height: calc(var(--spacing) * 0.5);
712
- }
713
716
  .h-1 {
714
717
  height: calc(var(--spacing) * 1);
715
718
  }
@@ -794,6 +797,9 @@
794
797
  .h-\[32rem\] {
795
798
  height: 32rem;
796
799
  }
800
+ .h-\[34rem\] {
801
+ height: 34rem;
802
+ }
797
803
  .h-\[70vh\] {
798
804
  height: 70vh;
799
805
  }
@@ -905,6 +911,9 @@
905
911
  .min-h-\[14rem\] {
906
912
  min-height: 14rem;
907
913
  }
914
+ .min-h-\[15px\] {
915
+ min-height: 15px;
916
+ }
908
917
  .min-h-\[16rem\] {
909
918
  min-height: 16rem;
910
919
  }
@@ -1708,6 +1717,9 @@
1708
1717
  .rounded-\[2px\] {
1709
1718
  border-radius: 2px;
1710
1719
  }
1720
+ .rounded-\[3px\] {
1721
+ border-radius: 3px;
1722
+ }
1711
1723
  .rounded-\[4px\] {
1712
1724
  border-radius: 4px;
1713
1725
  }
@@ -1935,12 +1947,6 @@
1935
1947
  .border-border {
1936
1948
  border-color: var(--color-border);
1937
1949
  }
1938
- .border-border\/60 {
1939
- border-color: color-mix(in srgb, hsl(var(--border)) 60%, transparent);
1940
- @supports (color: color-mix(in lab, red, red)) {
1941
- border-color: color-mix(in oklab, var(--color-border) 60%, transparent);
1942
- }
1943
- }
1944
1950
  .border-destructive\/20 {
1945
1951
  border-color: color-mix(in srgb, hsl(var(--destructive)) 20%, transparent);
1946
1952
  @supports (color: color-mix(in lab, red, red)) {
@@ -1980,9 +1986,6 @@
1980
1986
  .border-foreground {
1981
1987
  border-color: var(--color-foreground);
1982
1988
  }
1983
- .border-green-500 {
1984
- border-color: var(--color-green-500);
1985
- }
1986
1989
  .border-green-500\/30 {
1987
1990
  border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 30%, transparent);
1988
1991
  @supports (color: color-mix(in lab, red, red)) {
@@ -2028,9 +2031,6 @@
2028
2031
  border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);
2029
2032
  }
2030
2033
  }
2031
- .border-red-500 {
2032
- border-color: var(--color-red-500);
2033
- }
2034
2034
  .border-red-500\/20 {
2035
2035
  border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 20%, transparent);
2036
2036
  @supports (color: color-mix(in lab, red, red)) {
@@ -2340,12 +2340,6 @@
2340
2340
  .bg-green-500 {
2341
2341
  background-color: var(--color-green-500);
2342
2342
  }
2343
- .bg-green-600\/10 {
2344
- background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 10%, transparent);
2345
- @supports (color: color-mix(in lab, red, red)) {
2346
- background-color: color-mix(in oklab, var(--color-green-600) 10%, transparent);
2347
- }
2348
- }
2349
2343
  .bg-green-600\/20 {
2350
2344
  background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 20%, transparent);
2351
2345
  @supports (color: color-mix(in lab, red, red)) {
@@ -2475,6 +2469,12 @@
2475
2469
  .bg-surface-container-high {
2476
2470
  background-color: var(--color-surface-container-high);
2477
2471
  }
2472
+ .bg-surface-container-high\/60 {
2473
+ background-color: var(--color-surface-container-high);
2474
+ @supports (color: color-mix(in lab, red, red)) {
2475
+ background-color: color-mix(in oklab, var(--color-surface-container-high) 60%, transparent);
2476
+ }
2477
+ }
2478
2478
  .bg-surface-container-high\/95 {
2479
2479
  background-color: var(--color-surface-container-high);
2480
2480
  @supports (color: color-mix(in lab, red, red)) {
@@ -2706,6 +2706,9 @@
2706
2706
  .py-20 {
2707
2707
  padding-block: calc(var(--spacing) * 20);
2708
2708
  }
2709
+ .py-\[1px\] {
2710
+ padding-block: 1px;
2711
+ }
2709
2712
  .py-\[2px\] {
2710
2713
  padding-block: 2px;
2711
2714
  }
@@ -2733,6 +2736,9 @@
2733
2736
  .pt-2 {
2734
2737
  padding-top: calc(var(--spacing) * 2);
2735
2738
  }
2739
+ .pt-2\.5 {
2740
+ padding-top: calc(var(--spacing) * 2.5);
2741
+ }
2736
2742
  .pt-3 {
2737
2743
  padding-top: calc(var(--spacing) * 3);
2738
2744
  }
@@ -2880,6 +2886,9 @@
2880
2886
  .text-\[9px\] {
2881
2887
  font-size: 9px;
2882
2888
  }
2889
+ .text-\[10\.5px\] {
2890
+ font-size: 10.5px;
2891
+ }
2883
2892
  .text-\[10px\] {
2884
2893
  font-size: 10px;
2885
2894
  }
@@ -2960,6 +2969,10 @@
2960
2969
  --tw-leading: 1.55;
2961
2970
  line-height: 1.55;
2962
2971
  }
2972
+ .leading-\[15px\] {
2973
+ --tw-leading: 15px;
2974
+ line-height: 15px;
2975
+ }
2963
2976
  .leading-\[var\(--line-height-base\)\] {
2964
2977
  --tw-leading: var(--line-height-base);
2965
2978
  line-height: var(--line-height-base);
@@ -3032,6 +3045,10 @@
3032
3045
  --tw-tracking: 0.08em;
3033
3046
  letter-spacing: 0.08em;
3034
3047
  }
3048
+ .tracking-\[0\.09em\] {
3049
+ --tw-tracking: 0.09em;
3050
+ letter-spacing: 0.09em;
3051
+ }
3035
3052
  .tracking-\[0\.12em\] {
3036
3053
  --tw-tracking: 0.12em;
3037
3054
  letter-spacing: 0.12em;
@@ -3252,9 +3269,6 @@
3252
3269
  .text-green-400 {
3253
3270
  color: var(--color-green-400);
3254
3271
  }
3255
- .text-green-600 {
3256
- color: var(--color-green-600);
3257
- }
3258
3272
  .text-muted-foreground {
3259
3273
  color: var(--color-muted-foreground);
3260
3274
  }
@@ -3282,6 +3296,12 @@
3282
3296
  color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);
3283
3297
  }
3284
3298
  }
3299
+ .text-muted-foreground\/90 {
3300
+ color: color-mix(in srgb, hsl(var(--muted-foreground)) 90%, transparent);
3301
+ @supports (color: color-mix(in lab, red, red)) {
3302
+ color: color-mix(in oklab, var(--color-muted-foreground) 90%, transparent);
3303
+ }
3304
+ }
3285
3305
  .text-neutral-400 {
3286
3306
  color: var(--color-neutral-400);
3287
3307
  }
@@ -3309,12 +3329,6 @@
3309
3329
  .text-red-400 {
3310
3330
  color: var(--color-red-400);
3311
3331
  }
3312
- .text-red-400\/80 {
3313
- color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 80%, transparent);
3314
- @supports (color: color-mix(in lab, red, red)) {
3315
- color: color-mix(in oklab, var(--color-red-400) 80%, transparent);
3316
- }
3317
- }
3318
3332
  .text-secondary-foreground {
3319
3333
  color: var(--color-secondary-foreground);
3320
3334
  }
@@ -3498,12 +3512,6 @@
3498
3512
  --tw-ring-color: color-mix(in oklab, var(--color-primary) 25%, transparent);
3499
3513
  }
3500
3514
  }
3501
- .ring-primary\/40 {
3502
- --tw-ring-color: color-mix(in srgb, hsl(var(--primary)) 40%, transparent);
3503
- @supports (color: color-mix(in lab, red, red)) {
3504
- --tw-ring-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
3505
- }
3506
- }
3507
3515
  .ring-offset-background {
3508
3516
  --tw-ring-offset-color: var(--color-background);
3509
3517
  }
package/dist/styles.css CHANGED
@@ -327,6 +327,9 @@
327
327
  .end {
328
328
  inset-inline-end: var(--spacing);
329
329
  }
330
+ .-top-1 {
331
+ top: calc(var(--spacing) * -1);
332
+ }
330
333
  .-top-1\.5 {
331
334
  top: calc(var(--spacing) * -1.5);
332
335
  }
@@ -372,6 +375,9 @@
372
375
  .top-full {
373
376
  top: 100%;
374
377
  }
378
+ .-right-1 {
379
+ right: calc(var(--spacing) * -1);
380
+ }
375
381
  .-right-1\.5 {
376
382
  right: calc(var(--spacing) * -1.5);
377
383
  }
@@ -707,9 +713,6 @@
707
713
  .\!h-2 {
708
714
  height: calc(var(--spacing) * 2) !important;
709
715
  }
710
- .h-0\.5 {
711
- height: calc(var(--spacing) * 0.5);
712
- }
713
716
  .h-1 {
714
717
  height: calc(var(--spacing) * 1);
715
718
  }
@@ -794,6 +797,9 @@
794
797
  .h-\[32rem\] {
795
798
  height: 32rem;
796
799
  }
800
+ .h-\[34rem\] {
801
+ height: 34rem;
802
+ }
797
803
  .h-\[70vh\] {
798
804
  height: 70vh;
799
805
  }
@@ -905,6 +911,9 @@
905
911
  .min-h-\[14rem\] {
906
912
  min-height: 14rem;
907
913
  }
914
+ .min-h-\[15px\] {
915
+ min-height: 15px;
916
+ }
908
917
  .min-h-\[16rem\] {
909
918
  min-height: 16rem;
910
919
  }
@@ -1708,6 +1717,9 @@
1708
1717
  .rounded-\[2px\] {
1709
1718
  border-radius: 2px;
1710
1719
  }
1720
+ .rounded-\[3px\] {
1721
+ border-radius: 3px;
1722
+ }
1711
1723
  .rounded-\[4px\] {
1712
1724
  border-radius: 4px;
1713
1725
  }
@@ -1935,12 +1947,6 @@
1935
1947
  .border-border {
1936
1948
  border-color: var(--color-border);
1937
1949
  }
1938
- .border-border\/60 {
1939
- border-color: color-mix(in srgb, hsl(var(--border)) 60%, transparent);
1940
- @supports (color: color-mix(in lab, red, red)) {
1941
- border-color: color-mix(in oklab, var(--color-border) 60%, transparent);
1942
- }
1943
- }
1944
1950
  .border-destructive\/20 {
1945
1951
  border-color: color-mix(in srgb, hsl(var(--destructive)) 20%, transparent);
1946
1952
  @supports (color: color-mix(in lab, red, red)) {
@@ -1980,9 +1986,6 @@
1980
1986
  .border-foreground {
1981
1987
  border-color: var(--color-foreground);
1982
1988
  }
1983
- .border-green-500 {
1984
- border-color: var(--color-green-500);
1985
- }
1986
1989
  .border-green-500\/30 {
1987
1990
  border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 30%, transparent);
1988
1991
  @supports (color: color-mix(in lab, red, red)) {
@@ -2028,9 +2031,6 @@
2028
2031
  border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);
2029
2032
  }
2030
2033
  }
2031
- .border-red-500 {
2032
- border-color: var(--color-red-500);
2033
- }
2034
2034
  .border-red-500\/20 {
2035
2035
  border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 20%, transparent);
2036
2036
  @supports (color: color-mix(in lab, red, red)) {
@@ -2340,12 +2340,6 @@
2340
2340
  .bg-green-500 {
2341
2341
  background-color: var(--color-green-500);
2342
2342
  }
2343
- .bg-green-600\/10 {
2344
- background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 10%, transparent);
2345
- @supports (color: color-mix(in lab, red, red)) {
2346
- background-color: color-mix(in oklab, var(--color-green-600) 10%, transparent);
2347
- }
2348
- }
2349
2343
  .bg-green-600\/20 {
2350
2344
  background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 20%, transparent);
2351
2345
  @supports (color: color-mix(in lab, red, red)) {
@@ -2475,6 +2469,12 @@
2475
2469
  .bg-surface-container-high {
2476
2470
  background-color: var(--color-surface-container-high);
2477
2471
  }
2472
+ .bg-surface-container-high\/60 {
2473
+ background-color: var(--color-surface-container-high);
2474
+ @supports (color: color-mix(in lab, red, red)) {
2475
+ background-color: color-mix(in oklab, var(--color-surface-container-high) 60%, transparent);
2476
+ }
2477
+ }
2478
2478
  .bg-surface-container-high\/95 {
2479
2479
  background-color: var(--color-surface-container-high);
2480
2480
  @supports (color: color-mix(in lab, red, red)) {
@@ -2706,6 +2706,9 @@
2706
2706
  .py-20 {
2707
2707
  padding-block: calc(var(--spacing) * 20);
2708
2708
  }
2709
+ .py-\[1px\] {
2710
+ padding-block: 1px;
2711
+ }
2709
2712
  .py-\[2px\] {
2710
2713
  padding-block: 2px;
2711
2714
  }
@@ -2733,6 +2736,9 @@
2733
2736
  .pt-2 {
2734
2737
  padding-top: calc(var(--spacing) * 2);
2735
2738
  }
2739
+ .pt-2\.5 {
2740
+ padding-top: calc(var(--spacing) * 2.5);
2741
+ }
2736
2742
  .pt-3 {
2737
2743
  padding-top: calc(var(--spacing) * 3);
2738
2744
  }
@@ -2880,6 +2886,9 @@
2880
2886
  .text-\[9px\] {
2881
2887
  font-size: 9px;
2882
2888
  }
2889
+ .text-\[10\.5px\] {
2890
+ font-size: 10.5px;
2891
+ }
2883
2892
  .text-\[10px\] {
2884
2893
  font-size: 10px;
2885
2894
  }
@@ -2960,6 +2969,10 @@
2960
2969
  --tw-leading: 1.55;
2961
2970
  line-height: 1.55;
2962
2971
  }
2972
+ .leading-\[15px\] {
2973
+ --tw-leading: 15px;
2974
+ line-height: 15px;
2975
+ }
2963
2976
  .leading-\[var\(--line-height-base\)\] {
2964
2977
  --tw-leading: var(--line-height-base);
2965
2978
  line-height: var(--line-height-base);
@@ -3032,6 +3045,10 @@
3032
3045
  --tw-tracking: 0.08em;
3033
3046
  letter-spacing: 0.08em;
3034
3047
  }
3048
+ .tracking-\[0\.09em\] {
3049
+ --tw-tracking: 0.09em;
3050
+ letter-spacing: 0.09em;
3051
+ }
3035
3052
  .tracking-\[0\.12em\] {
3036
3053
  --tw-tracking: 0.12em;
3037
3054
  letter-spacing: 0.12em;
@@ -3252,9 +3269,6 @@
3252
3269
  .text-green-400 {
3253
3270
  color: var(--color-green-400);
3254
3271
  }
3255
- .text-green-600 {
3256
- color: var(--color-green-600);
3257
- }
3258
3272
  .text-muted-foreground {
3259
3273
  color: var(--color-muted-foreground);
3260
3274
  }
@@ -3282,6 +3296,12 @@
3282
3296
  color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);
3283
3297
  }
3284
3298
  }
3299
+ .text-muted-foreground\/90 {
3300
+ color: color-mix(in srgb, hsl(var(--muted-foreground)) 90%, transparent);
3301
+ @supports (color: color-mix(in lab, red, red)) {
3302
+ color: color-mix(in oklab, var(--color-muted-foreground) 90%, transparent);
3303
+ }
3304
+ }
3285
3305
  .text-neutral-400 {
3286
3306
  color: var(--color-neutral-400);
3287
3307
  }
@@ -3309,12 +3329,6 @@
3309
3329
  .text-red-400 {
3310
3330
  color: var(--color-red-400);
3311
3331
  }
3312
- .text-red-400\/80 {
3313
- color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 80%, transparent);
3314
- @supports (color: color-mix(in lab, red, red)) {
3315
- color: color-mix(in oklab, var(--color-red-400) 80%, transparent);
3316
- }
3317
- }
3318
3332
  .text-secondary-foreground {
3319
3333
  color: var(--color-secondary-foreground);
3320
3334
  }
@@ -3498,12 +3512,6 @@
3498
3512
  --tw-ring-color: color-mix(in oklab, var(--color-primary) 25%, transparent);
3499
3513
  }
3500
3514
  }
3501
- .ring-primary\/40 {
3502
- --tw-ring-color: color-mix(in srgb, hsl(var(--primary)) 40%, transparent);
3503
- @supports (color: color-mix(in lab, red, red)) {
3504
- --tw-ring-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
3505
- }
3506
- }
3507
3515
  .ring-offset-background {
3508
3516
  --tw-ring-offset-color: var(--color-background);
3509
3517
  }
@@ -12,7 +12,14 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
12
12
  * so the spine stays a single readable column.
13
13
  */
14
14
  type WfNodeTone = "trigger" | "structural" | "action";
15
- type WfNodeStatus = "queued" | "running" | "succeeded" | "failed";
15
+ /**
16
+ * A node's live run status. `waiting` is NOT a variant of `running`: the run has
17
+ * stopped at that node and makes no further progress until a human answers it (a
18
+ * `decision` step). Collapsing it into `running` tells the viewer the workflow is
19
+ * working when in fact it is blocked on THEM — so it gets its own colour, its own
20
+ * label, and a progress bar that does not move.
21
+ */
22
+ type WfNodeStatus = "queued" | "running" | "waiting" | "succeeded" | "failed";
16
23
  /**
17
24
  * Live RUN state for one node, supplied by the host (keyed by node id) and
18
25
  * merged onto {@link WfNodeData.state} at render time. Absent ⇒ the graph shows
@@ -44,32 +51,50 @@ interface WfNodeState {
44
51
  * rounds the agent has taken, surfaced on the node's progress strip. */
45
52
  rounds?: number;
46
53
  }
54
+ /**
55
+ * A node's card-facing content. Three tiers, so both densities can show the
56
+ * right amount without either re-deriving it:
57
+ *
58
+ * - {@link title} — WHO the step is ("GitHub", "AI Agent", a decision's own
59
+ * title). Never a machine identifier.
60
+ * - {@link subtitle} — WHAT it does, in one short phrase ("create: pulls.reviews",
61
+ * the model, "Weekdays at 09:00", "3 branches").
62
+ * - {@link description} — the free-text detail worth reading when there's room
63
+ * (an agent's prompt, a notify URL, the events a trigger listens for).
64
+ *
65
+ * The compact node shows title + subtitle; the expanded node adds the
66
+ * description, the run metrics, and the output. Any longer/raw values live in
67
+ * {@link config} for the full-detail view.
68
+ */
47
69
  interface WfNodeData extends Record<string, unknown> {
48
- /** Headline for the node, e.g. "Run agent". */
70
+ /** Human headline for the node, e.g. "GitHub", "AI Agent". */
49
71
  title: string;
50
72
  /** The action/trigger kind verbatim, e.g. "agent.run", "schedule". Set on every
51
- * node `buildWorkflowGraph` produces so a card can label what it is regardless
52
- * of which subtitle it shows; optional on the type so external consumers
53
- * constructing `WfNodeData` directly aren't forced to supply it (the render
54
- * guards its usage). */
73
+ * node `buildWorkflowGraph` produces so a consumer can dispatch on the node's
74
+ * type (icon, detail rendering) regardless of what its title says; optional on
75
+ * the type so external consumers constructing `WfNodeData` directly aren't
76
+ * forced to supply it (the render guards its usage). */
55
77
  kind?: string;
56
- /** Secondary detail, e.g. an integration path or a cron expression. */
78
+ /** The one-phrase qualifier under the title, e.g. "create: pulls.reviews". */
57
79
  subtitle?: string;
58
- /** Requested model (agent.run), shown as a chip even before a run. */
80
+ /** Free-text detail (agent prompt, notify URL, trigger events) — shown only by
81
+ * the expanded node, which has the room to clamp it to two lines. */
82
+ description?: string;
83
+ /** Requested model (agent.run). A live run's ACTUAL model (`state.model`)
84
+ * supersedes it on the card. */
59
85
  model?: string;
60
86
  /** `integration.invoke` provider.method path. */
61
87
  path?: string;
62
- /** Notable config fields for the expand drawer (kept small + stringified). */
63
- detail?: Record<string, string>;
64
88
  /** The raw, UNTRUNCATED config for this node — the action/trigger config from
65
- * the definition. The compact card reads {@link detail}; a full-detail view
66
- * (e.g. a node drawer) reads this to render every field — the complete prompt,
67
- * all profile/source/input keys — without the card-sized clamp. It is a
68
- * JSON-safe deep copy of the config (cycles and non-JSON values normalized),
69
- * so a consumer can serialize or render it freely. Omitted when the node has
70
- * no config. */
89
+ * the definition. The card shows the summary above; a full-detail view (e.g. a
90
+ * node drawer) reads this to render every field — the complete prompt, all
91
+ * profile/source/input keys — without the card-sized clamp. It is a JSON-safe
92
+ * deep copy of the config (cycles and non-JSON values normalized), so a
93
+ * consumer can serialize or render it freely. Omitted when the node has no
94
+ * config. */
71
95
  config?: Record<string, unknown>;
72
- /** Connector slug (e.g. `github`) for the provider chip, when one applies. */
96
+ /** Connector slug (e.g. `github`) — drives the node's brand logo, so a provider
97
+ * step is recognizable before any text is read. */
73
98
  provider?: string;
74
99
  /** Small corner tag, e.g. "×3" for a parallel fan-out. */
75
100
  badge?: string;
@@ -113,27 +138,23 @@ type WfDirection = "LR" | "TB";
113
138
  /** Options for {@link buildWorkflowGraph}. */
114
139
  interface BuildWorkflowGraphOptions {
115
140
  /**
116
- * Reserve space for the rows live run state adds to a node (the meta-chip row +
117
- * the output/error preview), so the RUN view never overlaps once a node starts
118
- * or terminates. The static/preview layout (no run overlay) leaves this off to
119
- * stay compact. Defaults to `false`.
141
+ * Reserve space for the rows live run state adds to a node (the metrics line,
142
+ * the output/error preview, the status footer), so the RUN view never overlaps
143
+ * once a node starts or terminates. The static/preview layout (no run overlay)
144
+ * leaves this off to stay compact. Defaults to `false`.
120
145
  */
121
146
  reserveRunState?: boolean;
122
147
  /** Flow direction. Defaults to "LR". */
123
148
  direction?: WfDirection;
124
- /** Override the node dimensions the layout spaces by (and the card renders at).
125
- * Defaults to a fixed width + {@link nodeHeight}. A caller with a different node
126
- * design supplies its own sizing so the layout stays collision-free. */
127
- measure?: (data: WfNodeData, withRunState: boolean) => {
128
- width: number;
129
- height: number;
130
- };
149
+ /** Collapse every node to the fixed icon-tile size, and pitch the layers for
150
+ * it. Defaults to `false` (the full, expanded card). */
151
+ compact?: boolean;
131
152
  }
132
153
  /** Build a positioned graph from a workflow YAML string. Never throws —
133
154
  * malformed YAML or an empty definition returns an `error` the UI can fall
134
155
  * back on (e.g. show the raw YAML while authoring). `reserveRunState` leaves
135
156
  * room for the rows live run state adds (see {@link nodeHeight}); `direction`
136
- * picks the flow axis (default "LR"). */
157
+ * picks the flow axis (default "LR"); `compact` collapses nodes to icon tiles. */
137
158
  declare function buildWorkflowGraph(yaml: string, options?: BuildWorkflowGraphOptions): WfGraph;
138
159
 
139
160
  interface WorkflowGraphProps {
@@ -144,9 +165,11 @@ interface WorkflowGraphProps {
144
165
  /** Flow direction: "LR" (default) reads left-to-right — best for the wide/short
145
166
  * run-detail panel; "TB" is a vertical column. */
146
167
  direction?: WfDirection;
147
- /** Start collapsed (compact icon tiles) rather than expanded. The full variant
148
- * exposes a toggle to switch densities; the preview variant is always compact.
149
- * Defaults to `false` (expanded). */
168
+ /** Start collapsed (compact icon tiles) rather than expanded. Defaults to
169
+ * `true`: a graph is read structure-first, and the tiles are what make the
170
+ * shape of the run legible at a glance — the per-node detail is one density
171
+ * toggle (or one node click) away. The full variant exposes the toggle; the
172
+ * preview variant is always compact. */
150
173
  defaultCompact?: boolean;
151
174
  /** Sizing for the wrapper; the caller controls height. */
152
175
  className?: string;
package/dist/workflows.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildWorkflowGraph
3
- } from "./chunk-FNE5QLU3.js";
3
+ } from "./chunk-UEMWLVVY.js";
4
4
  import "./chunk-U67V476Y.js";
5
5
 
6
6
  // src/workflows/WorkflowGraphLazy.tsx
@@ -26,7 +26,7 @@ function retryImport(factory, retries = 2, delayMs = 350) {
26
26
  function lazyWorkflowGraph() {
27
27
  return lazy(
28
28
  () => retryImport(
29
- () => import("./WorkflowGraph-RA7ZHN4I.js").then((m) => ({ default: m.WorkflowGraph }))
29
+ () => import("./WorkflowGraph-SJ2SG5TP.js").then((m) => ({ default: m.WorkflowGraph }))
30
30
  )
31
31
  );
32
32
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.75.0",
3
+ "version": "0.77.0",
4
4
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
5
5
  "repository": {
6
6
  "type": "git",