@tangle-network/sandbox-ui 0.115.3 → 0.115.5

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/README.md CHANGED
@@ -72,7 +72,7 @@ Pass `allowedOrigins` from product policy or the enforcing service, independent
72
72
  The host must authorize access before it returns the URL.
73
73
  The component shows starting and unavailable states without mounting a frame.
74
74
  Its ready view uses the same URL validation and iframe isolation as `PreviewView`.
75
- The compact header provides Reload and Open in new tab.
75
+ The compact header uses the shared 56px workspace pane row and provides Reload and Open in new tab.
76
76
  Place product actions in `toolbarActions` to share that header without a second toolbar.
77
77
  Pass service-observed `readiness` and enforced `access` to show their status inside the pane.
78
78
  Show process and port state beside the pane if your runtime exposes those separately.
@@ -302,6 +302,9 @@ The shared visual contract lives in [src/styles/tokens.css](./src/styles/tokens.
302
302
  - borders: `--border-subtle`, `--border-default`, `--border-accent`
303
303
  - radii/shadows: `--radius-*`, `--shadow-card`, `--shadow-dropdown`, `--shadow-accent`
304
304
 
305
+ Markdown prose uses `--foreground` and `--muted-foreground` as HSL channel values.
306
+ Set them on the nearest product wrapper when its colors differ from the brand theme.
307
+
305
308
  App-level overrides can be scoped to a wrapper:
306
309
 
307
310
  ```css
@@ -1,4 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
+ import { t as WorkspacePaneHeader } from "./workspace-pane-header-C5e7sPaS.js";
2
3
  import { Button } from "@tangle-network/ui/primitives";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import * as React$1 from "react";
@@ -168,11 +169,11 @@ function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness,
168
169
  })
169
170
  })
170
171
  ]
171
- }) : /* @__PURE__ */ jsxs("div", {
172
- className: "flex min-w-0 flex-wrap items-center gap-2 border-b border-border bg-surface-container-low px-3 py-2",
172
+ }) : /* @__PURE__ */ jsxs(WorkspacePaneHeader, {
173
+ className: "min-w-0 gap-2 overflow-x-auto",
173
174
  children: [
174
175
  /* @__PURE__ */ jsx("h2", {
175
- className: cn$1("min-w-0 truncate text-sm font-medium text-foreground", toolbarActions ? "basis-full sm:basis-auto sm:flex-1" : "flex-1"),
176
+ className: "min-w-16 flex-1 truncate text-sm font-medium text-foreground",
176
177
  children: title
177
178
  }),
178
179
  toolbarActions && /* @__PURE__ */ jsx("div", {
@@ -186,7 +187,7 @@ function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness,
186
187
  onClick: reload,
187
188
  disabled: !activeUrl,
188
189
  "aria-label": `Reload ${title}`,
189
- className: toolbarActions ? "ml-auto sm:ml-0" : void 0,
190
+ className: "shrink-0",
190
191
  children: /* @__PURE__ */ jsx(RotateCw, {
191
192
  "aria-hidden": "true",
192
193
  className: "size-4"
@@ -197,6 +198,7 @@ function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness,
197
198
  type: "button",
198
199
  variant: "ghost",
199
200
  size: "sm",
201
+ className: "shrink-0",
200
202
  children: /* @__PURE__ */ jsx("a", {
201
203
  href: activeUrl,
202
204
  target: "_blank",
package/dist/globals.css CHANGED
@@ -1472,6 +1472,9 @@
1472
1472
  .min-w-10 {
1473
1473
  min-width: calc(var(--spacing) * 10);
1474
1474
  }
1475
+ .min-w-16 {
1476
+ min-width: calc(var(--spacing) * 16);
1477
+ }
1475
1478
  .min-w-40 {
1476
1479
  min-width: calc(var(--spacing) * 40);
1477
1480
  }
@@ -1538,9 +1541,6 @@
1538
1541
  .basis-1\/3 {
1539
1542
  flex-basis: calc(1 / 3 * 100%);
1540
1543
  }
1541
- .basis-full {
1542
- flex-basis: 100%;
1543
- }
1544
1544
  .caption-bottom {
1545
1545
  caption-side: bottom;
1546
1546
  }
@@ -4816,9 +4816,6 @@
4816
4816
  .sm\:row-start-1 {
4817
4817
  grid-row-start: 1;
4818
4818
  }
4819
- .sm\:ml-0 {
4820
- margin-left: 0px;
4821
- }
4822
4819
  .sm\:grid {
4823
4820
  display: grid;
4824
4821
  }
@@ -4834,12 +4831,6 @@
4834
4831
  .sm\:w-auto {
4835
4832
  width: auto;
4836
4833
  }
4837
- .sm\:flex-1 {
4838
- flex: 1;
4839
- }
4840
- .sm\:basis-auto {
4841
- flex-basis: auto;
4842
- }
4843
4834
  .sm\:grid-cols-2 {
4844
4835
  grid-template-columns: repeat(2, minmax(0, 1fr));
4845
4836
  }
@@ -5997,6 +5988,10 @@
5997
5988
  --border-default: rgba(120, 108, 158, 0.18);
5998
5989
  --border-hover: rgba(120, 108, 158, 0.28);
5999
5990
  }
5991
+ :is(.dark, .light, [data-theme], [data-sandbox-theme="vault"]) {
5992
+ --foreground: var(--hsl-foreground);
5993
+ --muted-foreground: var(--hsl-muted-foreground);
5994
+ }
6000
5995
  :root {
6001
5996
  --duration-instant: 90ms;
6002
5997
  --duration-fast: 150ms;
@@ -6523,7 +6518,7 @@
6523
6518
  box-shadow: none;
6524
6519
  }
6525
6520
  .tangle-prose {
6526
- color: var(--text-primary);
6521
+ color: hsl(var(--foreground));
6527
6522
  line-height: 1.7;
6528
6523
  }
6529
6524
  .tangle-prose :where(p, ul, ol) {
@@ -6537,7 +6532,7 @@
6537
6532
  line-height: 1.3;
6538
6533
  margin-top: 1.4em;
6539
6534
  margin-bottom: 0.5em;
6540
- color: var(--text-primary);
6535
+ color: inherit;
6541
6536
  }
6542
6537
  .tangle-prose h1 {
6543
6538
  font-size: 1.4em;
@@ -6565,7 +6560,7 @@
6565
6560
  .tangle-prose blockquote {
6566
6561
  border-left: 2px solid var(--border-default);
6567
6562
  padding-left: 0.9em;
6568
- color: var(--text-muted);
6563
+ color: hsl(var(--muted-foreground));
6569
6564
  }
6570
6565
  .tangle-prose hr {
6571
6566
  border: 0;
@@ -6588,6 +6583,7 @@
6588
6583
  font-size: 0.95em;
6589
6584
  display: block;
6590
6585
  overflow-x: auto;
6586
+ color: inherit;
6591
6587
  }
6592
6588
  .tangle-prose thead {
6593
6589
  border-bottom: 1px solid var(--border-default);
@@ -6596,7 +6592,7 @@
6596
6592
  text-align: left;
6597
6593
  font-weight: 600;
6598
6594
  padding: 0.5em 0.85em;
6599
- color: var(--text-primary);
6595
+ color: inherit;
6600
6596
  white-space: nowrap;
6601
6597
  }
6602
6598
  .tangle-prose td {
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
- import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BijiFIC4.js";
1
+ import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BJrUDVzc.js";
2
2
  import { $ as SelectItem, A as DropdownMenuItem, At as Textarea, B as DropdownMenuTrigger, C as DialogTitle, Ct as TabsList, D as DropdownMenuCheckboxItem, E as DropdownMenu, Et as TerminalDisplay, F as DropdownMenuSeparator, Ft as UploadProgress, G as Label, Gt as TangleKnot, H as FilterField, I as DropdownMenuShortcut, It as badgeVariants, J as Progress, K as Metric, L as DropdownMenuSub, Lt as buttonVariants, M as DropdownMenuPortal, Mt as ToastContainer, N as DropdownMenuRadioGroup, Nt as ToastProvider, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as Toolbar, Q as SelectGroup, R as DropdownMenuSubContent, Rt as useTheme, S as DialogPortal, St as TabsContent, T as DropZone, U as InlineCode, V as EmptyState, W as Input, Wt as Logo, X as Select, Y as SegmentedControl, Z as SelectContent, _ as DialogContent, _t as TableFooter, a as Badge, at as SelectValue, b as DialogHeader, bt as TableRow, c as CardContent, ct as SkeletonCard, d as CardHeader, dt as StatusPill, et as SelectLabel, f as CardTitle, ft as Switch, g as DialogClose, gt as TableCell, h as Dialog, ht as TableCaption, i as AvatarImage, it as SelectTrigger, j as DropdownMenuLabel, jt as ThemeToggle, k as DropdownMenuGroup, kt as TextShimmer, l as CardDescription, lt as SkeletonTable, m as CopyButton, mt as TableBody, n as Avatar, nt as SelectScrollUpButton, o as Button, ot as SidebarDropZone, p as CodeBlock, pt as Table, q as MetricStrip, r as AvatarFallback, rt as SelectSeparator, s as Card, st as Skeleton, tt as SelectScrollDownButton, u as CardFooter, ut as StatCard, v as DialogDescription, vt as TableHead, w as DialogTrigger, wt as TabsTrigger, x as DialogOverlay, xt as Tabs, y as DialogFooter, yt as TableHeader, z as DropdownMenuSubTrigger, zt as useToast } from "./primitives-Dh1vG6J3.js";
3
- import { S as WorkspacePaneHeader, _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-B6AtI6ld.js";
3
+ import { t as WorkspacePaneHeader } from "./workspace-pane-header-C5e7sPaS.js";
4
+ import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-DoEZpkfF.js";
4
5
  import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-CZ3VgNPR.js";
5
6
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
6
7
  import { a as formatPrice, i as PricingPage, n as TemplateCard, o as BillingDashboard, r as UsageChart, t as InfoPanel } from "./info-panel-C9cqDzOL.js";
7
8
  import { t as usePtySession } from "./use-pty-session-C8cE0adT.js";
8
9
  import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FilePreview, FileTabs, FileTree, RichFileTree, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
9
- import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-BhYPICbH.js";
10
+ import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CKcmKyum.js";
10
11
  import { OpenUIArtifactRenderer } from "./openui.js";
11
12
  import { a as ThinkingIndicator, c as createFetchTransport, d as AgentProfilePicker, f as DEFAULT_REASONING_LEVEL_OPTIONS, i as MessageList, l as modelProvider, m as ReasoningLevelPicker, n as ChatContainer, o as UserMessage, p as HARNESS_REASONING_OPTIONS, r as ChatMessage, s as ArtifactAgentDock, t as AgentTimeline, u as snapHarnessToModel } from "./chat-BOvFAe6p.js";
12
13
  import { ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LiveDuration, RunGroup, RunRowShell, RunRowStatusDot, ToolCallFeed, parseToolEvent } from "./run.js";
package/dist/styles.css CHANGED
@@ -1472,6 +1472,9 @@
1472
1472
  .min-w-10 {
1473
1473
  min-width: calc(var(--spacing) * 10);
1474
1474
  }
1475
+ .min-w-16 {
1476
+ min-width: calc(var(--spacing) * 16);
1477
+ }
1475
1478
  .min-w-40 {
1476
1479
  min-width: calc(var(--spacing) * 40);
1477
1480
  }
@@ -1538,9 +1541,6 @@
1538
1541
  .basis-1\/3 {
1539
1542
  flex-basis: calc(1 / 3 * 100%);
1540
1543
  }
1541
- .basis-full {
1542
- flex-basis: 100%;
1543
- }
1544
1544
  .caption-bottom {
1545
1545
  caption-side: bottom;
1546
1546
  }
@@ -4816,9 +4816,6 @@
4816
4816
  .sm\:row-start-1 {
4817
4817
  grid-row-start: 1;
4818
4818
  }
4819
- .sm\:ml-0 {
4820
- margin-left: 0px;
4821
- }
4822
4819
  .sm\:grid {
4823
4820
  display: grid;
4824
4821
  }
@@ -4834,12 +4831,6 @@
4834
4831
  .sm\:w-auto {
4835
4832
  width: auto;
4836
4833
  }
4837
- .sm\:flex-1 {
4838
- flex: 1;
4839
- }
4840
- .sm\:basis-auto {
4841
- flex-basis: auto;
4842
- }
4843
4834
  .sm\:grid-cols-2 {
4844
4835
  grid-template-columns: repeat(2, minmax(0, 1fr));
4845
4836
  }
@@ -5997,6 +5988,10 @@
5997
5988
  --border-default: rgba(120, 108, 158, 0.18);
5998
5989
  --border-hover: rgba(120, 108, 158, 0.28);
5999
5990
  }
5991
+ :is(.dark, .light, [data-theme], [data-sandbox-theme="vault"]) {
5992
+ --foreground: var(--hsl-foreground);
5993
+ --muted-foreground: var(--hsl-muted-foreground);
5994
+ }
6000
5995
  :root {
6001
5996
  --duration-instant: 90ms;
6002
5997
  --duration-fast: 150ms;
@@ -6523,7 +6518,7 @@
6523
6518
  box-shadow: none;
6524
6519
  }
6525
6520
  .tangle-prose {
6526
- color: var(--text-primary);
6521
+ color: hsl(var(--foreground));
6527
6522
  line-height: 1.7;
6528
6523
  }
6529
6524
  .tangle-prose :where(p, ul, ol) {
@@ -6537,7 +6532,7 @@
6537
6532
  line-height: 1.3;
6538
6533
  margin-top: 1.4em;
6539
6534
  margin-bottom: 0.5em;
6540
- color: var(--text-primary);
6535
+ color: inherit;
6541
6536
  }
6542
6537
  .tangle-prose h1 {
6543
6538
  font-size: 1.4em;
@@ -6565,7 +6560,7 @@
6565
6560
  .tangle-prose blockquote {
6566
6561
  border-left: 2px solid var(--border-default);
6567
6562
  padding-left: 0.9em;
6568
- color: var(--text-muted);
6563
+ color: hsl(var(--muted-foreground));
6569
6564
  }
6570
6565
  .tangle-prose hr {
6571
6566
  border: 0;
@@ -6588,6 +6583,7 @@
6588
6583
  font-size: 0.95em;
6589
6584
  display: block;
6590
6585
  overflow-x: auto;
6586
+ color: inherit;
6591
6587
  }
6592
6588
  .tangle-prose thead {
6593
6589
  border-bottom: 1px solid var(--border-default);
@@ -6596,7 +6592,7 @@
6596
6592
  text-align: left;
6597
6593
  font-weight: 600;
6598
6594
  padding: 0.5em 0.85em;
6599
- color: var(--text-primary);
6595
+ color: inherit;
6600
6596
  white-space: nowrap;
6601
6597
  }
6602
6598
  .tangle-prose td {
@@ -1,2 +1,2 @@
1
- import { t as EmbeddedAppView } from "../embedded-app-view-BhYPICbH.js";
1
+ import { t as EmbeddedAppView } from "../embedded-app-view-CKcmKyum.js";
2
2
  export { EmbeddedAppView };
@@ -2,7 +2,7 @@ import { t as cn$1 } from "./utils-DzWbktWG.js";
2
2
  import { o as PortsList } from "./dashboard-CZ3VgNPR.js";
3
3
  import { n as TerminalView } from "./terminal-CN9ZgHRt.js";
4
4
  import { RichFileTree } from "./files.js";
5
- import { n as PreviewView } from "./embedded-app-view-BhYPICbH.js";
5
+ import { n as PreviewView } from "./embedded-app-view-CKcmKyum.js";
6
6
  import { Button, Skeleton, Textarea } from "@tangle-network/ui/primitives";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import * as React$1 from "react";
package/dist/workbench.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BijiFIC4.js";
2
- import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-BhYPICbH.js";
1
+ import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BJrUDVzc.js";
2
+ import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CKcmKyum.js";
3
3
  export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
@@ -1,4 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
+ import { t as WorkspacePaneHeader } from "./workspace-pane-header-C5e7sPaS.js";
2
3
  import { t as MOTION_CONTROL } from "./motion-DkyBRJb9.js";
3
4
  import { ArtifactPane, ArtifactPane as ArtifactPane$1, Badge, EmptyState, Input } from "@tangle-network/ui/primitives";
4
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -10,18 +11,6 @@ import { FileArtifactPane, FileTree, filterFileTree } from "@tangle-network/ui/f
10
11
  import { useActiveSessions, useNavbarSessions, useProjectActivity, useTotalRunningSessions } from "@tangle-network/ui/stores";
11
12
  import { ChatContainer } from "@tangle-network/ui/chat";
12
13
  import { OpenUIArtifactRenderer } from "@tangle-network/ui/openui";
13
- //#region src/workspace/workspace-pane-header.tsx
14
- /**
15
- * The shared 56px header row for top-level workspace panes and drawers.
16
- * Bottom runtime panels intentionally use their own compact header.
17
- */
18
- function WorkspacePaneHeader({ className, ...props }) {
19
- return /* @__PURE__ */ jsx("div", {
20
- className: cn$1("flex h-14 shrink-0 items-center border-b border-[var(--md3-outline-variant)] bg-surface-container-high px-3", className),
21
- ...props
22
- });
23
- }
24
- //#endregion
25
14
  //#region src/workspace/workspace-layout.tsx
26
15
  /**
27
16
  * WorkspaceLayout — reusable sandbox shell with desktop resizable panels and
@@ -2507,4 +2496,4 @@ function ApprovalQueue({ items, className, onApprove, onReject, renderItemDetail
2507
2496
  });
2508
2497
  }
2509
2498
  //#endregion
2510
- export { WorkspacePaneHeader as S, TerminalPanel as _, AuditResults as a, DirectoryPane as b, SessionActivityMonitor as c, SessionSidebar as d, SESSION_CREATED_EVENT as f, RuntimePane as g, formatRelativeAge as h, TaskBoard as i, createShellShouldRevalidate as l, useOptimisticSessionItems as m, ApprovalQueue as n, AgentWorkbench as o, dispatchSessionCreated as p, CalendarView as r, SandboxWorkbench as s, ArtifactPane$1 as t, shellShouldRevalidate as u, StatusBar as v, WorkspaceLayout as x, StatusBanner as y };
2499
+ export { TerminalPanel as _, AuditResults as a, DirectoryPane as b, SessionActivityMonitor as c, SessionSidebar as d, SESSION_CREATED_EVENT as f, RuntimePane as g, formatRelativeAge as h, TaskBoard as i, createShellShouldRevalidate as l, useOptimisticSessionItems as m, ApprovalQueue as n, AgentWorkbench as o, dispatchSessionCreated as p, CalendarView as r, SandboxWorkbench as s, ArtifactPane$1 as t, shellShouldRevalidate as u, StatusBar as v, WorkspaceLayout as x, StatusBanner as y };
@@ -0,0 +1,15 @@
1
+ import { t as cn } from "./utils-DzWbktWG.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/workspace/workspace-pane-header.tsx
4
+ /**
5
+ * The shared 56px header row for top-level workspace panes and drawers.
6
+ * Bottom runtime panels intentionally use their own compact header.
7
+ */
8
+ function WorkspacePaneHeader({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx("div", {
10
+ className: cn("flex h-14 shrink-0 items-center border-b border-[var(--md3-outline-variant)] bg-surface-container-high px-3", className),
11
+ ...props
12
+ });
13
+ }
14
+ //#endregion
15
+ export { WorkspacePaneHeader as t };
package/dist/workspace.js CHANGED
@@ -1,2 +1,3 @@
1
- import { S as WorkspacePaneHeader, _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-B6AtI6ld.js";
1
+ import { t as WorkspacePaneHeader } from "./workspace-pane-header-C5e7sPaS.js";
2
+ import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-DoEZpkfF.js";
2
3
  export { AgentWorkbench, ApprovalQueue, ArtifactPane, AuditResults, CalendarView, DirectoryPane, RuntimePane, SESSION_CREATED_EVENT, SandboxWorkbench, SessionActivityMonitor, SessionSidebar, StatusBanner, StatusBar, TaskBoard, TerminalPanel, WorkspaceLayout, WorkspacePaneHeader, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.115.3",
3
+ "version": "0.115.5",
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",