@tangle-network/sandbox-ui 0.65.0 → 0.67.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.
@@ -597,11 +597,16 @@ function RailExpandable({
597
597
  active ? "h-7 bg-[var(--accent-surface-strong)] font-medium text-[var(--accent-text)]" : item.emphasis ? "py-2 font-medium text-[var(--accent-text)] hover:underline" : "h-7 text-muted-foreground hover:bg-[var(--accent-surface-soft)] hover:text-foreground"
598
598
  ),
599
599
  children: [
600
+ item.unread && !item.isLoading && !active && /* @__PURE__ */ jsx3("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-primary", "aria-hidden": true }),
600
601
  FIcon ? /* @__PURE__ */ jsx3(FIcon, { className: "h-4 w-4 shrink-0" }) : null,
601
602
  /* @__PURE__ */ jsx3(
602
603
  "span",
603
604
  {
604
- className: cn("min-w-0 flex-1 truncate", item.isLoading && "shimmer-text"),
605
+ className: cn(
606
+ "min-w-0 flex-1 truncate",
607
+ item.isLoading && "shimmer-text",
608
+ item.unread && !active && "font-medium text-foreground"
609
+ ),
605
610
  ...item.isLoading ? { role: "status", "aria-label": "Agent responding" } : {},
606
611
  children: item.label
607
612
  }
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-3J6FG3FJ.js";
4
4
  import {
5
5
  PortsList
6
- } from "./chunk-QSCCNGXZ.js";
6
+ } from "./chunk-H237JF3H.js";
7
7
  import {
8
8
  TerminalView
9
9
  } from "./chunk-VIREDUBF.js";
@@ -199,6 +199,9 @@ interface RailExpandableSubItem {
199
199
  /** Render the row emphasized (bold + accent) so it stands out — e.g. a
200
200
  * trailing "view all" action below a capped list. */
201
201
  emphasis?: boolean;
202
+ /** Mark the row as unread — bold label + a leading dot. Suppressed while
203
+ * `isLoading` so a responding row shows only the working indicator. */
204
+ unread?: boolean;
202
205
  /** Hover-revealed kebab actions (e.g. rename/delete). Rendered on the
203
206
  * labeled rail only; ignored in the collapsed-rail flyout. */
204
207
  actions?: RailSubItemAction[];
package/dist/dashboard.js CHANGED
@@ -54,7 +54,7 @@ import {
54
54
  canAdminSandbox,
55
55
  parseInsufficientBalance,
56
56
  useSidebar
57
- } from "./chunk-QSCCNGXZ.js";
57
+ } from "./chunk-H237JF3H.js";
58
58
  import {
59
59
  BillingDashboard,
60
60
  InfoPanel,
package/dist/globals.css CHANGED
@@ -1903,12 +1903,6 @@
1903
1903
  .border-\[var\(--surface-danger-border\)\] {
1904
1904
  border-color: var(--surface-danger-border);
1905
1905
  }
1906
- .border-\[var\(--surface-danger-border\)\]\/60 {
1907
- border-color: var(--surface-danger-border);
1908
- @supports (color: color-mix(in lab, red, red)) {
1909
- border-color: color-mix(in oklab, var(--surface-danger-border) 60%, transparent);
1910
- }
1911
- }
1912
1906
  .border-\[var\(--surface-info-border\)\] {
1913
1907
  border-color: var(--surface-info-border);
1914
1908
  }
@@ -5425,15 +5419,15 @@
5425
5419
  [data-sandbox-ui],
5426
5420
  [data-theme="dark"],
5427
5421
  .dark {
5428
- --md3-surface: #0a0a14;
5429
- --md3-surface-dim: #07070d;
5430
- --md3-surface-bright: #1b1a2c;
5431
- --md3-surface-container-lowest: #000001;
5432
- --md3-surface-container-low: #0d0c18;
5433
- --md3-surface-container: #11101e;
5434
- --md3-surface-container-high: #171624;
5435
- --md3-surface-container-highest: #1f1e30;
5436
- --md3-surface-variant: #1f1e30;
5422
+ --md3-surface: #16161f;
5423
+ --md3-surface-dim: #111119;
5424
+ --md3-surface-bright: #2a2940;
5425
+ --md3-surface-container-lowest: #101017;
5426
+ --md3-surface-container-low: #16161f;
5427
+ --md3-surface-container: #1c1b27;
5428
+ --md3-surface-container-high: #232231;
5429
+ --md3-surface-container-highest: #2c2b3d;
5430
+ --md3-surface-variant: #2c2b3d;
5437
5431
  --md3-on-surface: #fdfdfd;
5438
5432
  --md3-on-surface-variant: #aaa8b8;
5439
5433
  --md3-primary: #818CF8;
@@ -5449,8 +5443,8 @@
5449
5443
  --md3-on-secondary: #E8E5FF;
5450
5444
  --md3-on-secondary-container: #E8E5FF;
5451
5445
  --md3-tertiary: #10B981;
5452
- --md3-outline: #434260;
5453
- --md3-outline-variant: #2A293D;
5446
+ --md3-outline: #4a4965;
5447
+ --md3-outline-variant: #34324a;
5454
5448
  --md3-error: #ff5277;
5455
5449
  --md3-error-dim: #eb2855;
5456
5450
  --md3-error-container: #82042b;
@@ -5460,24 +5454,24 @@
5460
5454
  --md3-inverse-primary: #4F46E5;
5461
5455
  --md3-inverse-on-surface: #000000;
5462
5456
  --md3-surface-tint: #818CF8;
5463
- --hsl-background: 240 8% 5%;
5457
+ --hsl-background: 240 7% 9%;
5464
5458
  --hsl-foreground: 240 6% 93%;
5465
- --hsl-card: 240 5% 8%;
5459
+ --hsl-card: 240 5% 13%;
5466
5460
  --hsl-card-foreground: 240 6% 93%;
5467
- --hsl-popover: 240 4% 13%;
5461
+ --hsl-popover: 240 5% 17%;
5468
5462
  --hsl-popover-foreground: 240 6% 93%;
5469
5463
  --hsl-primary: 239 84% 67%;
5470
5464
  --hsl-primary-foreground: 0 0% 100%;
5471
- --hsl-secondary: 240 5% 11%;
5465
+ --hsl-secondary: 240 5% 15%;
5472
5466
  --hsl-secondary-foreground: 240 6% 93%;
5473
- --hsl-muted: 240 5% 11%;
5474
- --hsl-muted-foreground: 240 4% 62%;
5475
- --hsl-accent: 240 5% 11%;
5467
+ --hsl-muted: 240 5% 15%;
5468
+ --hsl-muted-foreground: 240 4% 64%;
5469
+ --hsl-accent: 240 5% 15%;
5476
5470
  --hsl-accent-foreground: 240 6% 93%;
5477
5471
  --hsl-destructive: 348 90% 60%;
5478
5472
  --hsl-destructive-foreground: 0 0% 100%;
5479
- --hsl-border: 240 3% 13%;
5480
- --hsl-input: 240 5% 11%;
5473
+ --hsl-border: 240 5% 16%;
5474
+ --hsl-input: 240 5% 15%;
5481
5475
  --hsl-ring: 239 84% 67%;
5482
5476
  --hsl-success: 160 84% 39%;
5483
5477
  --hsl-warning: 40 94% 56%;
@@ -5505,18 +5499,18 @@
5505
5499
  --warning: var(--hsl-warning);
5506
5500
  --error: var(--hsl-destructive);
5507
5501
  --info: var(--hsl-info);
5508
- --sidebar-background: 240 5% 8%;
5502
+ --sidebar-background: 240 6% 11%;
5509
5503
  --sidebar-foreground: 240 6% 93%;
5510
5504
  --sidebar-primary: 239 84% 67%;
5511
5505
  --sidebar-primary-foreground: 0 0% 100%;
5512
- --sidebar-accent: 240 5% 11%;
5506
+ --sidebar-accent: 240 5% 15%;
5513
5507
  --sidebar-accent-foreground: 240 6% 93%;
5514
- --sidebar-border: 240 3% 13%;
5508
+ --sidebar-border: 240 5% 16%;
5515
5509
  --sidebar-ring: 239 84% 67%;
5516
- --depth-1: #0b0b0d;
5517
- --depth-2: #141416;
5518
- --depth-3: #1a1a1d;
5519
- --depth-4: #202023;
5510
+ --depth-1: #15151a;
5511
+ --depth-2: #1f1f23;
5512
+ --depth-3: #26262b;
5513
+ --depth-4: #2e2e34;
5520
5514
  --status-running: #10B981;
5521
5515
  --status-creating: #9B93F0;
5522
5516
  --status-stopped: #FFB800;
@@ -5562,7 +5556,7 @@
5562
5556
  --accent-surface-soft: rgba(255, 255, 255, 0.04);
5563
5557
  --accent-surface-strong: rgba(129, 140, 248, 0.14);
5564
5558
  --accent-text: #b9bffb;
5565
- --bg-root: #0b0b0d;
5559
+ --bg-root: #15151a;
5566
5560
  --bg-dark: var(--depth-1);
5567
5561
  --bg-card: var(--depth-2);
5568
5562
  --bg-elevated: var(--depth-4);
package/dist/index.js CHANGED
@@ -147,7 +147,7 @@ import {
147
147
  buildUnifiedPatch,
148
148
  computeDiffStats,
149
149
  resolveLanguage
150
- } from "./chunk-G4YJYSFA.js";
150
+ } from "./chunk-HCOZO53G.js";
151
151
  import {
152
152
  FileArtifactPane,
153
153
  FilePreview,
@@ -212,7 +212,7 @@ import {
212
212
  canAdminSandbox,
213
213
  parseInsufficientBalance,
214
214
  useSidebar
215
- } from "./chunk-QSCCNGXZ.js";
215
+ } from "./chunk-H237JF3H.js";
216
216
  import "./chunk-VIREDUBF.js";
217
217
  import {
218
218
  usePtySession
package/dist/styles.css CHANGED
@@ -1903,12 +1903,6 @@
1903
1903
  .border-\[var\(--surface-danger-border\)\] {
1904
1904
  border-color: var(--surface-danger-border);
1905
1905
  }
1906
- .border-\[var\(--surface-danger-border\)\]\/60 {
1907
- border-color: var(--surface-danger-border);
1908
- @supports (color: color-mix(in lab, red, red)) {
1909
- border-color: color-mix(in oklab, var(--surface-danger-border) 60%, transparent);
1910
- }
1911
- }
1912
1906
  .border-\[var\(--surface-info-border\)\] {
1913
1907
  border-color: var(--surface-info-border);
1914
1908
  }
@@ -5425,15 +5419,15 @@
5425
5419
  [data-sandbox-ui],
5426
5420
  [data-theme="dark"],
5427
5421
  .dark {
5428
- --md3-surface: #0a0a14;
5429
- --md3-surface-dim: #07070d;
5430
- --md3-surface-bright: #1b1a2c;
5431
- --md3-surface-container-lowest: #000001;
5432
- --md3-surface-container-low: #0d0c18;
5433
- --md3-surface-container: #11101e;
5434
- --md3-surface-container-high: #171624;
5435
- --md3-surface-container-highest: #1f1e30;
5436
- --md3-surface-variant: #1f1e30;
5422
+ --md3-surface: #16161f;
5423
+ --md3-surface-dim: #111119;
5424
+ --md3-surface-bright: #2a2940;
5425
+ --md3-surface-container-lowest: #101017;
5426
+ --md3-surface-container-low: #16161f;
5427
+ --md3-surface-container: #1c1b27;
5428
+ --md3-surface-container-high: #232231;
5429
+ --md3-surface-container-highest: #2c2b3d;
5430
+ --md3-surface-variant: #2c2b3d;
5437
5431
  --md3-on-surface: #fdfdfd;
5438
5432
  --md3-on-surface-variant: #aaa8b8;
5439
5433
  --md3-primary: #818CF8;
@@ -5449,8 +5443,8 @@
5449
5443
  --md3-on-secondary: #E8E5FF;
5450
5444
  --md3-on-secondary-container: #E8E5FF;
5451
5445
  --md3-tertiary: #10B981;
5452
- --md3-outline: #434260;
5453
- --md3-outline-variant: #2A293D;
5446
+ --md3-outline: #4a4965;
5447
+ --md3-outline-variant: #34324a;
5454
5448
  --md3-error: #ff5277;
5455
5449
  --md3-error-dim: #eb2855;
5456
5450
  --md3-error-container: #82042b;
@@ -5460,24 +5454,24 @@
5460
5454
  --md3-inverse-primary: #4F46E5;
5461
5455
  --md3-inverse-on-surface: #000000;
5462
5456
  --md3-surface-tint: #818CF8;
5463
- --hsl-background: 240 8% 5%;
5457
+ --hsl-background: 240 7% 9%;
5464
5458
  --hsl-foreground: 240 6% 93%;
5465
- --hsl-card: 240 5% 8%;
5459
+ --hsl-card: 240 5% 13%;
5466
5460
  --hsl-card-foreground: 240 6% 93%;
5467
- --hsl-popover: 240 4% 13%;
5461
+ --hsl-popover: 240 5% 17%;
5468
5462
  --hsl-popover-foreground: 240 6% 93%;
5469
5463
  --hsl-primary: 239 84% 67%;
5470
5464
  --hsl-primary-foreground: 0 0% 100%;
5471
- --hsl-secondary: 240 5% 11%;
5465
+ --hsl-secondary: 240 5% 15%;
5472
5466
  --hsl-secondary-foreground: 240 6% 93%;
5473
- --hsl-muted: 240 5% 11%;
5474
- --hsl-muted-foreground: 240 4% 62%;
5475
- --hsl-accent: 240 5% 11%;
5467
+ --hsl-muted: 240 5% 15%;
5468
+ --hsl-muted-foreground: 240 4% 64%;
5469
+ --hsl-accent: 240 5% 15%;
5476
5470
  --hsl-accent-foreground: 240 6% 93%;
5477
5471
  --hsl-destructive: 348 90% 60%;
5478
5472
  --hsl-destructive-foreground: 0 0% 100%;
5479
- --hsl-border: 240 3% 13%;
5480
- --hsl-input: 240 5% 11%;
5473
+ --hsl-border: 240 5% 16%;
5474
+ --hsl-input: 240 5% 15%;
5481
5475
  --hsl-ring: 239 84% 67%;
5482
5476
  --hsl-success: 160 84% 39%;
5483
5477
  --hsl-warning: 40 94% 56%;
@@ -5505,18 +5499,18 @@
5505
5499
  --warning: var(--hsl-warning);
5506
5500
  --error: var(--hsl-destructive);
5507
5501
  --info: var(--hsl-info);
5508
- --sidebar-background: 240 5% 8%;
5502
+ --sidebar-background: 240 6% 11%;
5509
5503
  --sidebar-foreground: 240 6% 93%;
5510
5504
  --sidebar-primary: 239 84% 67%;
5511
5505
  --sidebar-primary-foreground: 0 0% 100%;
5512
- --sidebar-accent: 240 5% 11%;
5506
+ --sidebar-accent: 240 5% 15%;
5513
5507
  --sidebar-accent-foreground: 240 6% 93%;
5514
- --sidebar-border: 240 3% 13%;
5508
+ --sidebar-border: 240 5% 16%;
5515
5509
  --sidebar-ring: 239 84% 67%;
5516
- --depth-1: #0b0b0d;
5517
- --depth-2: #141416;
5518
- --depth-3: #1a1a1d;
5519
- --depth-4: #202023;
5510
+ --depth-1: #15151a;
5511
+ --depth-2: #1f1f23;
5512
+ --depth-3: #26262b;
5513
+ --depth-4: #2e2e34;
5520
5514
  --status-running: #10B981;
5521
5515
  --status-creating: #9B93F0;
5522
5516
  --status-stopped: #FFB800;
@@ -5562,7 +5556,7 @@
5562
5556
  --accent-surface-soft: rgba(255, 255, 255, 0.04);
5563
5557
  --accent-surface-strong: rgba(129, 140, 248, 0.14);
5564
5558
  --accent-text: #b9bffb;
5565
- --bg-root: #0b0b0d;
5559
+ --bg-root: #15151a;
5566
5560
  --bg-dark: var(--depth-1);
5567
5561
  --bg-card: var(--depth-2);
5568
5562
  --bg-elevated: var(--depth-4);
package/dist/tokens.css CHANGED
@@ -9,15 +9,15 @@
9
9
  [data-sandbox-ui],
10
10
  [data-theme="dark"],
11
11
  .dark {
12
- --md3-surface: #0a0a14;
13
- --md3-surface-dim: #07070d;
14
- --md3-surface-bright: #1b1a2c;
15
- --md3-surface-container-lowest: #000001;
16
- --md3-surface-container-low: #0d0c18;
17
- --md3-surface-container: #11101e;
18
- --md3-surface-container-high: #171624;
19
- --md3-surface-container-highest: #1f1e30;
20
- --md3-surface-variant: #1f1e30;
12
+ --md3-surface: #16161f;
13
+ --md3-surface-dim: #111119;
14
+ --md3-surface-bright: #2a2940;
15
+ --md3-surface-container-lowest: #101017;
16
+ --md3-surface-container-low: #16161f;
17
+ --md3-surface-container: #1c1b27;
18
+ --md3-surface-container-high: #232231;
19
+ --md3-surface-container-highest: #2c2b3d;
20
+ --md3-surface-variant: #2c2b3d;
21
21
  --md3-on-surface: #fdfdfd;
22
22
  --md3-on-surface-variant: #aaa8b8;
23
23
 
@@ -36,8 +36,8 @@
36
36
  --md3-on-secondary-container: #E8E5FF;
37
37
 
38
38
  --md3-tertiary: #10B981;
39
- --md3-outline: #434260;
40
- --md3-outline-variant: #2A293D;
39
+ --md3-outline: #4a4965;
40
+ --md3-outline-variant: #34324a;
41
41
 
42
42
  --md3-error: #ff5277;
43
43
  --md3-error-dim: #eb2855;
@@ -51,24 +51,24 @@
51
51
  --md3-surface-tint: #818CF8;
52
52
 
53
53
  /* Semantic HSL bridge — flat neutral spine (Tangle Quiet) */
54
- --hsl-background: 240 8% 5%; /* #0b0b0d */
54
+ --hsl-background: 240 7% 9%; /* #15151a canvas — lifted off pure black */
55
55
  --hsl-foreground: 240 6% 93%; /* #ececee */
56
- --hsl-card: 240 5% 8%; /* #141416 surface */
56
+ --hsl-card: 240 5% 13%; /* #1f1f23 surface, clearly above canvas */
57
57
  --hsl-card-foreground: 240 6% 93%;
58
- --hsl-popover: 240 4% 13%; /* #202023 elevated */
58
+ --hsl-popover: 240 5% 17%; /* #28282d elevated */
59
59
  --hsl-popover-foreground: 240 6% 93%;
60
60
  --hsl-primary: 239 84% 67%;
61
61
  --hsl-primary-foreground: 0 0% 100%;
62
- --hsl-secondary: 240 5% 11%; /* #1a1a1d surface-2 */
62
+ --hsl-secondary: 240 5% 15%; /* #242428 surface-2 */
63
63
  --hsl-secondary-foreground: 240 6% 93%;
64
- --hsl-muted: 240 5% 11%; /* #1a1a1d — neutral hover well */
65
- --hsl-muted-foreground: 240 4% 62%; /* #9a9aa2 text-muted */
66
- --hsl-accent: 240 5% 11%; /* neutral hover (indigo lives in accent-surface-strong) */
64
+ --hsl-muted: 240 5% 15%; /* #242428 — neutral hover well */
65
+ --hsl-muted-foreground: 240 4% 64%; /* #9c9ca6 text-muted */
66
+ --hsl-accent: 240 5% 15%; /* neutral hover (indigo lives in accent-surface-strong) */
67
67
  --hsl-accent-foreground: 240 6% 93%;
68
68
  --hsl-destructive: 348 90% 60%;
69
69
  --hsl-destructive-foreground: 0 0% 100%;
70
- --hsl-border: 240 3% 13%; /* hairline ≈ rgba(255,255,255,0.07) */
71
- --hsl-input: 240 5% 11%;
70
+ --hsl-border: 240 5% 16%; /* soft edge — fill carries separation, not the line */
71
+ --hsl-input: 240 5% 15%;
72
72
  --hsl-ring: 239 84% 67%;
73
73
  --hsl-success: 160 84% 39%;
74
74
  --hsl-warning: 40 94% 56%;
@@ -100,20 +100,20 @@
100
100
  --info: var(--hsl-info);
101
101
 
102
102
  /* Sidebar tokens — flat surface + hairline */
103
- --sidebar-background: 240 5% 8%; /* #141416 surface */
103
+ --sidebar-background: 240 6% 11%; /* #1a1a1f surface */
104
104
  --sidebar-foreground: 240 6% 93%;
105
105
  --sidebar-primary: 239 84% 67%;
106
106
  --sidebar-primary-foreground: 0 0% 100%;
107
- --sidebar-accent: 240 5% 11%; /* neutral hover */
107
+ --sidebar-accent: 240 5% 15%; /* neutral hover */
108
108
  --sidebar-accent-foreground: 240 6% 93%;
109
- --sidebar-border: 240 3% 13%; /* hairline */
109
+ --sidebar-border: 240 5% 16%; /* soft edge */
110
110
  --sidebar-ring: 239 84% 67%;
111
111
 
112
112
  /* Depth scale — flat neutral spine (Tangle Quiet) */
113
- --depth-1: #0b0b0d;
114
- --depth-2: #141416;
115
- --depth-3: #1a1a1d;
116
- --depth-4: #202023;
113
+ --depth-1: #15151a;
114
+ --depth-2: #1f1f23;
115
+ --depth-3: #26262b;
116
+ --depth-4: #2e2e34;
117
117
 
118
118
  /* Status colors */
119
119
  --status-running: #10B981;
@@ -172,7 +172,7 @@
172
172
  --accent-text: #b9bffb;
173
173
 
174
174
  /* Surfaces — flat single-neutral (no radial mesh) */
175
- --bg-root: #0b0b0d;
175
+ --bg-root: #15151a;
176
176
  --bg-dark: var(--depth-1);
177
177
  --bg-card: var(--depth-2);
178
178
  --bg-elevated: var(--depth-4);
package/dist/workbench.js CHANGED
@@ -12,9 +12,9 @@ import {
12
12
  buildUnifiedPatch,
13
13
  computeDiffStats,
14
14
  resolveLanguage
15
- } from "./chunk-G4YJYSFA.js";
15
+ } from "./chunk-HCOZO53G.js";
16
16
  import "./chunk-3J6FG3FJ.js";
17
- import "./chunk-QSCCNGXZ.js";
17
+ import "./chunk-H237JF3H.js";
18
18
  import "./chunk-VIREDUBF.js";
19
19
  import "./chunk-77WVVJA4.js";
20
20
  import "./chunk-OMUIPJQZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.65.0",
3
+ "version": "0.67.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",
@@ -123,8 +123,8 @@
123
123
  },
124
124
  "peerDependencies": {
125
125
  "@tangle-network/agent-interface": ">=0.17.0 <1.0.0",
126
- "@tangle-network/brand": "^0.6.0",
127
- "@tangle-network/ui": "^5.1.0",
126
+ "@tangle-network/brand": "^0.6.0 || ^0.7.0",
127
+ "@tangle-network/ui": "^5.1.0 || ^6.0.0",
128
128
  "@xyflow/react": "^12.0.0",
129
129
  "react": "^18 || ^19",
130
130
  "react-dom": "^18 || ^19"
@@ -178,8 +178,8 @@
178
178
  "@tailwindcss/postcss": "^4.2.2",
179
179
  "@tailwindcss/vite": "^4.2.2",
180
180
  "@tangle-network/agent-interface": ">=0.17.0 <1.0.0",
181
- "@tangle-network/brand": "^0.6.0",
182
- "@tangle-network/ui": "^5.1.0",
181
+ "@tangle-network/brand": "^0.7.0",
182
+ "@tangle-network/ui": "^6.0.0",
183
183
  "@tanstack/react-query": "^5.91.0",
184
184
  "@testing-library/dom": "^10.4.1",
185
185
  "@testing-library/jest-dom": "^6.9.1",