@tangle-network/sandbox-ui 0.115.4 → 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.
@@ -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
  }
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
  }
@@ -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.4",
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",