@tangle-network/sandbox-ui 0.127.1 → 0.127.3

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.
@@ -427,10 +427,20 @@ function RailSeparator({ className }) {
427
427
  }
428
428
  function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel, asChild, children, variant = "normal", style }) {
429
429
  const classes = cn$1("relative flex shrink-0 items-center justify-center rounded-md transition-colors", MOTION_CONTROL, showLabel ? "w-full justify-start px-2.5 h-9 gap-2.5" : "w-9 h-9 justify-center", focusRing, variant === "primary" || isActive ? "bg-[var(--accent-surface-strong)] text-[var(--accent-text)] font-medium ring-1 ring-inset ring-[var(--border-accent)]" : "text-muted-foreground hover:bg-[var(--accent-surface-soft)] hover:text-foreground", className);
430
+ const hasBadge = badge !== void 0 && badge > 0;
431
+ const badgeDot = hasBadge && !showLabel && badge > 9;
432
+ const badgeDescription = hasBadge ? `${badge} new` : void 0;
433
+ const tooltipLabel = hasBadge ? `${label} · ${badgeDescription}` : label;
430
434
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("span", {
431
435
  className: "relative flex shrink-0 items-center justify-center",
432
- children: [/* @__PURE__ */ jsx(Icon, { className: "h-[17px] w-[17px] shrink-0" }), badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx("span", {
433
- className: "absolute -top-1.5 -right-1.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-[var(--md3-on-primary)] px-1",
436
+ children: [/* @__PURE__ */ jsx(Icon, { className: "h-[17px] w-[17px] shrink-0" }), badgeDot ? /* @__PURE__ */ jsx("span", {
437
+ "aria-hidden": "true",
438
+ "data-badge": "dot",
439
+ className: "absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary"
440
+ }) : hasBadge && /* @__PURE__ */ jsx("span", {
441
+ "aria-hidden": "true",
442
+ "data-badge": "count",
443
+ className: "absolute -top-1.5 -right-1.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary text-xs leading-none font-bold text-[var(--md3-on-primary)] px-1",
434
444
  children: badge > 99 ? "99+" : badge
435
445
  })]
436
446
  }), showLabel && /* @__PURE__ */ jsx("span", {
@@ -442,26 +452,28 @@ function RailButton({ icon: Icon, label, isActive, badge, onClick, className, sh
442
452
  const merged = React$1.cloneElement(child, {
443
453
  className: cn$1(classes, child.props.className),
444
454
  "aria-label": child.props["aria-label"] ?? label,
455
+ "aria-description": child.props["aria-description"] ?? badgeDescription,
445
456
  style: {
446
457
  ...child.props.style,
447
458
  ...style
448
459
  }
449
460
  }, content);
450
461
  return /* @__PURE__ */ jsx(RailTooltip, {
451
- label,
462
+ label: tooltipLabel,
452
463
  disabled: showLabel,
453
464
  className: showLabel ? "w-full" : void 0,
454
465
  children: merged
455
466
  });
456
467
  }
457
468
  return /* @__PURE__ */ jsx(RailTooltip, {
458
- label,
469
+ label: tooltipLabel,
459
470
  disabled: showLabel,
460
471
  className: showLabel ? "w-full" : void 0,
461
472
  children: /* @__PURE__ */ jsx("button", {
462
473
  type: "button",
463
474
  onClick,
464
475
  "aria-label": label,
476
+ "aria-description": badgeDescription,
465
477
  className: classes,
466
478
  style,
467
479
  children: content
@@ -525,7 +537,7 @@ function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, c
525
537
  },
526
538
  className: cn$1("absolute left-full top-0 z-50 ml-2 min-w-[12rem] p-1.5", "agent-pop-in", "rounded-md border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]"),
527
539
  children: [/* @__PURE__ */ jsx("p", {
528
- className: "px-2 pb-1 pt-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
540
+ className: "px-2 pb-1 pt-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
529
541
  children: title ?? label
530
542
  }), children]
531
543
  })]
@@ -743,7 +755,7 @@ function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems
743
755
  },
744
756
  className: cn$1("agent-pop-in z-[70] flex w-60 flex-col overflow-hidden p-1.5", "rounded-md border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]"),
745
757
  children: [/* @__PURE__ */ jsx("p", {
746
- className: "shrink-0 px-2 pb-1 pt-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
758
+ className: "shrink-0 px-2 pb-1 pt-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
747
759
  children: label
748
760
  }), /* @__PURE__ */ jsx("div", {
749
761
  className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",
@@ -945,7 +957,7 @@ function ProfileAvatar({ user, isLoading = false, onLogout, onSettingsClick, set
945
957
  src: user.avatarUrl,
946
958
  alt: ""
947
959
  }), /* @__PURE__ */ jsx(AvatarFallback, {
948
- className: "text-[10px] bg-[var(--accent-surface-strong)] text-[var(--accent-text)]",
960
+ className: "text-xs font-medium bg-[var(--accent-surface-strong)] text-[var(--accent-text)]",
949
961
  children: getInitials(user?.name, user?.email)
950
962
  })]
951
963
  }), showDetails && /* @__PURE__ */ jsx("div", {
package/dist/dashboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-Bms7lRpU.js";
1
+ import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-B8bJBxlG.js";
2
2
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
3
3
  import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
4
4
  export { ActivityFeed, BackendSelector, BillingDashboard, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, MetricAreaChart, ModelBrandStack, NewSandboxCard, OutOfCreditsModal, PortsList, PricingPage, ProcessList, ProfileAvatar, PromoBanner, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, ResourceMeter, ResourceSnapshot, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
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-CF7uaTsc.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-0qwG8yZF.js";
2
2
  import { $ as PageShell, A as DropdownMenuContent, At as TabsList, B as DropdownMenuSubContent, Bt as ToastContainer, C as DialogOverlay, Ct as TableCell, D as DropZone, Dt as TableRow, E as DialogTrigger, Et as TableHeader, F as DropdownMenuRadioGroup, G as Heading, Gt as buttonVariants, H as DropdownMenuTrigger, Ht as Toolbar, I as DropdownMenuRadioItem, J as Input, Jt as useTheme, K as IconTile, Kt as initialsOf, L as DropdownMenuSeparator, Lt as TextShimmer, M as DropdownMenuItem, Mt as Tag, N as DropdownMenuLabel, O as DropdownMenu, Ot as Tabs, P as DropdownMenuPortal, Pt as TerminalDisplay, Q as PageHeader, Qt as TangleKnot, R as DropdownMenuShortcut, Rt as Textarea, S as DialogHeader, St as TableCaption, T as DialogTitle, Tt as TableHead, U as EmptyState, Ut as UploadProgress, V as DropdownMenuSubTrigger, Vt as ToastProvider, W as FilterField, Wt as badgeVariants, X as Metric, Xt as SectionTitle, Y as Label, Yt as useToast, Z as MetricStrip, Zt as Logo, _ as Dialog, _t as StatusPill, a as Badge, at as SelectItem, b as DialogDescription, bt as Table, c as Card, ct as SelectScrollUpButton, d as CardFooter, dt as SelectValue, et as Progress, f as CardHeader, ft as SidebarDropZone, g as CopyButton, gt as StatCard, h as CodeBlock, ht as SkeletonTable, i as AvatarImage, it as SelectGroup, j as DropdownMenuGroup, jt as TabsTrigger, k as DropdownMenuCheckboxItem, kt as TabsContent, l as CardContent, lt as SelectSeparator, m as Chip, mt as SkeletonCard, n as Avatar, nt as Select, o as Button, ot as SelectLabel, p as CardTitle, pt as Skeleton, q as InlineCode, qt as toneFor, r as AvatarFallback, rt as SelectContent, s as CATEGORY_TONES, st as SelectScrollDownButton, tt as SegmentedControl, u as CardDescription, ut as SelectTrigger, v as DialogClose, vt as Switch, w as DialogPortal, wt as TableFooter, x as DialogFooter, xt as TableBody, y as DialogContent, yt as TONE_CLASSES, z as DropdownMenuSub, zt as ThemeToggle } from "./primitives-WP3v1yf0.js";
3
3
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
4
4
  import { _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, y as DirectoryPane } from "./workspace-C68fk9qa.js";
5
- import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-Bms7lRpU.js";
5
+ import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-B8bJBxlG.js";
6
6
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
7
7
  import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
8
8
  import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
- import { a as PortsList } from "./dashboard-Bms7lRpU.js";
2
+ import { a as PortsList } from "./dashboard-B8bJBxlG.js";
3
3
  import { n as TerminalView } from "./terminal-DmSUfGha.js";
4
4
  import { RichFileTree } from "./files.js";
5
5
  import { n as PreviewView } from "./embedded-app-view-CMRPEvon.js";
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-CF7uaTsc.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-0qwG8yZF.js";
2
2
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
3
3
  export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.127.1",
3
+ "version": "0.127.3",
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",