@tangle-network/sandbox-ui 0.5.0 → 0.5.2

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.
@@ -158,7 +158,7 @@ function Sidebar({ children, className }) {
158
158
  {
159
159
  "data-sidebar": "true",
160
160
  className: cn(
161
- "fixed inset-y-0 left-0 z-40 flex bg-sidebar border-r border-sidebar-border transition-[transform,width] duration-200 ease-in-out",
161
+ "fixed inset-y-0 left-0 z-40 flex bg-[var(--depth-1)] border-r border-[var(--border-subtle)] transition-[transform,width] duration-200 ease-in-out",
162
162
  hidden && "-translate-x-full",
163
163
  className
164
164
  ),
@@ -168,10 +168,10 @@ function Sidebar({ children, className }) {
168
168
  );
169
169
  }
170
170
  function SidebarRail({ children, className }) {
171
- return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col h-full w-16 shrink-0", className), children });
171
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col h-full w-16 shrink-0 bg-[var(--depth-2)]", className), children });
172
172
  }
173
173
  function SidebarRailHeader({ children, className }) {
174
- return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center justify-center border-b border-sidebar-border", className), children });
174
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center justify-center border-b border-[var(--border-subtle)]", className), children });
175
175
  }
176
176
  function SidebarRailNav({ children, className }) {
177
177
  return /* @__PURE__ */ jsx2("nav", { className: cn("flex flex-col items-center gap-1 py-3 flex-1", className), children });
@@ -180,7 +180,7 @@ function SidebarRailFooter({ children, className }) {
180
180
  return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col items-center gap-1 pb-3", className), children });
181
181
  }
182
182
  function RailSeparator({ className }) {
183
- return /* @__PURE__ */ jsx2("div", { className: cn("my-2 h-px w-10 bg-sidebar-border", className) });
183
+ return /* @__PURE__ */ jsx2("div", { className: cn("my-2 h-px w-10 bg-[var(--border-subtle)]", className) });
184
184
  }
185
185
  function RailButton({ icon: Icon2, label, isActive, badge, onClick, className }) {
186
186
  return /* @__PURE__ */ jsxs(
@@ -190,17 +190,21 @@ function RailButton({ icon: Icon2, label, isActive, badge, onClick, className })
190
190
  onClick,
191
191
  title: label,
192
192
  className: cn(
193
- "relative flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-150",
194
- "hover:bg-sidebar-accent/80 hover:text-sidebar-accent-foreground",
193
+ "group relative flex flex-col items-center justify-center gap-0.5 w-12 h-12 rounded-lg transition-all duration-150",
194
+ "hover:bg-[var(--accent-surface-soft)] hover:text-[var(--accent-text)]",
195
195
  "active:scale-95",
196
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
197
- isActive && "bg-sidebar-accent text-sidebar-accent-foreground",
198
- !isActive && "text-sidebar-foreground/70",
196
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]",
197
+ isActive && "bg-[var(--accent-surface-strong)] text-[var(--accent-text)] shadow-[0_0_12px_-2px_rgba(130,99,255,0.3)]",
198
+ !isActive && "text-[var(--text-muted)]",
199
199
  className
200
200
  ),
201
201
  children: [
202
- /* @__PURE__ */ jsx2(Icon2, { className: "h-5 w-5" }),
203
- badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx2("span", { className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-sidebar-primary text-[10px] font-medium text-white px-1", children: badge > 99 ? "99+" : badge })
202
+ /* @__PURE__ */ jsx2(Icon2, { className: "h-[18px] w-[18px]" }),
203
+ /* @__PURE__ */ jsx2("span", { className: cn(
204
+ "text-[9px] leading-none font-medium tracking-tight truncate max-w-[44px]",
205
+ isActive ? "text-[var(--accent-text)]" : "text-[var(--text-dim)] group-hover:text-[var(--accent-text)]"
206
+ ), children: label }),
207
+ badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx2("span", { className: "absolute -top-0.5 -right-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-[var(--brand-primary)] text-[8px] font-medium text-white px-0.5", children: badge > 99 ? "99+" : badge })
204
208
  ]
205
209
  }
206
210
  );
@@ -225,7 +229,7 @@ function SidebarPanel({ children, className }) {
225
229
  "div",
226
230
  {
227
231
  className: cn(
228
- "transition-[opacity] duration-150 h-full overflow-hidden border-l border-sidebar-border",
232
+ "transition-[opacity] duration-150 h-full overflow-hidden border-l border-[var(--border-subtle)] bg-[var(--depth-1)]",
229
233
  panelOpen ? "w-[260px] opacity-100" : "w-0 opacity-0 pointer-events-none",
230
234
  className
231
235
  ),
@@ -234,7 +238,7 @@ function SidebarPanel({ children, className }) {
234
238
  );
235
239
  }
236
240
  function SidebarPanelHeader({ children, title, className }) {
237
- return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center px-4 border-b border-sidebar-border shrink-0", className), children: children ?? /* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold text-sidebar-foreground", children: title }) });
241
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center px-4 border-b border-[var(--border-subtle)] shrink-0", className), children: children ?? /* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold text-[var(--text-primary)]", children: title }) });
238
242
  }
239
243
  function SidebarPanelContent({ children, className }) {
240
244
  return /* @__PURE__ */ jsx2("div", { className: cn("flex-1 overflow-y-auto px-2 py-2", className), children });
@@ -267,8 +271,8 @@ function ProfileAvatar({
267
271
  {
268
272
  type: "button",
269
273
  className: cn(
270
- "flex items-center justify-center w-10 h-10 rounded-lg transition-colors hover:bg-sidebar-accent",
271
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
274
+ "flex items-center justify-center w-12 h-12 rounded-lg transition-colors hover:bg-[var(--accent-surface-soft)]",
275
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]",
272
276
  className
273
277
  ),
274
278
  "aria-label": "User menu",
@@ -722,7 +726,7 @@ function ResourceMeter({ label, value, max = 100, unit, icon, className }) {
722
726
  }
723
727
 
724
728
  // src/dashboard/sandbox-card.tsx
725
- import { Cpu, Database, Plus as Plus2, Terminal, Power, ExternalLink, RefreshCw } from "lucide-react";
729
+ import { Cpu, Database, Plus as Plus2, Terminal, Power, ExternalLink, RefreshCw, Trash2 } from "lucide-react";
726
730
  import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
727
731
  var statusConfig = {
728
732
  running: { color: "text-[var(--surface-success-text)]", bg: "bg-[var(--surface-success-bg)]", border: "border-[var(--surface-success-border)]", dotClass: "bg-[var(--surface-success-text)] animate-pulse", label: "Running" },
@@ -732,7 +736,7 @@ var statusConfig = {
732
736
  failed: { color: "text-[var(--surface-danger-text)]", bg: "bg-[var(--surface-danger-bg)]", border: "border-[var(--surface-danger-border)]", dotClass: "bg-[var(--surface-danger-text)]", label: "Failed" },
733
737
  archived: { color: "text-[var(--text-muted)]", bg: "bg-[var(--depth-3)]", border: "border-[var(--border-subtle)]", dotClass: "bg-[var(--border-default)]", label: "Archived" }
734
738
  };
735
- function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, className }) {
739
+ function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, onDelete, className }) {
736
740
  const status = statusConfig[sandbox.status] ?? statusConfig.stopped;
737
741
  const isActive = sandbox.status === "running";
738
742
  const isHibernating = sandbox.status === "hibernating";
@@ -844,6 +848,16 @@ function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, cl
844
848
  className: "w-full py-2 bg-[var(--depth-3)] hover:bg-[var(--depth-4)] text-[var(--text-muted)] hover:text-[var(--text-primary)] rounded-lg transition-all text-xs font-semibold border border-[var(--border-subtle)]",
845
849
  children: "Restore Sandbox"
846
850
  }
851
+ ),
852
+ onDelete && !isProvisioning && /* @__PURE__ */ jsx9(
853
+ "button",
854
+ {
855
+ type: "button",
856
+ onClick: () => onDelete(sandbox.id),
857
+ className: "absolute bottom-4 right-4 p-1.5 rounded-md text-[var(--text-muted)] hover:text-[var(--surface-danger-text)] hover:bg-[var(--surface-danger-bg)] transition-all opacity-0 group-hover:opacity-100",
858
+ title: "Delete sandbox",
859
+ children: /* @__PURE__ */ jsx9(Trash2, { className: "h-3.5 w-3.5" })
860
+ }
847
861
  )
848
862
  ]
849
863
  }
@@ -869,7 +883,7 @@ function NewSandboxCard({ onClick, className }) {
869
883
  }
870
884
 
871
885
  // src/dashboard/sandbox-table.tsx
872
- import { Terminal as Terminal2, Code2, Key, MoreVertical, RefreshCw as RefreshCw2, ChevronLeft, ChevronRight } from "lucide-react";
886
+ import { Terminal as Terminal2, Code2, Key, Trash2 as Trash22, RefreshCw as RefreshCw2, ChevronLeft, ChevronRight } from "lucide-react";
873
887
  import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
874
888
  var statusColors = {
875
889
  running: { dot: "bg-[var(--code-success)] animate-pulse", text: "text-[var(--code-success)]", bar: "bg-[var(--code-success)]" },
@@ -902,6 +916,7 @@ function SandboxTable({
902
916
  onSSH,
903
917
  onWake,
904
918
  onMore,
919
+ onDelete,
905
920
  className
906
921
  }) {
907
922
  const totalCount = total ?? sandboxes.length;
@@ -950,7 +965,8 @@ function SandboxTable({
950
965
  /* @__PURE__ */ jsx10("button", { type: "button", onClick: () => onSSH?.(sb.id), className: "p-2 rounded-lg hover:bg-[var(--depth-4)] text-[var(--text-muted)] hover:text-[var(--text-primary)] transition-all active:scale-90", title: "SSH", children: /* @__PURE__ */ jsx10(Key, { className: "h-4 w-4" }) })
951
966
  ] }),
952
967
  isHibernating && /* @__PURE__ */ jsx10("button", { type: "button", onClick: () => onWake?.(sb.id), className: "px-3 py-1.5 rounded-lg border border-[var(--border-accent)] text-[var(--brand-cool)] text-[10px] font-bold uppercase tracking-wider hover:bg-[var(--accent-surface-soft)] active:scale-95 transition-all", children: "Wake Up" }),
953
- /* @__PURE__ */ jsx10("button", { type: "button", onClick: () => onMore?.(sb.id), className: "p-2 rounded-lg hover:bg-[var(--depth-4)] text-[var(--text-muted)] hover:text-[var(--text-primary)] transition-all active:scale-90", children: /* @__PURE__ */ jsx10(MoreVertical, { className: "h-4 w-4" }) })
968
+ onMore && /* @__PURE__ */ jsx10("button", { type: "button", onClick: () => onMore(sb.id), className: "p-2 rounded-lg hover:bg-[var(--depth-4)] text-[var(--text-muted)] hover:text-[var(--text-primary)] transition-all active:scale-90", children: /* @__PURE__ */ jsx10(Code2, { className: "h-4 w-4" }) }),
969
+ onDelete && /* @__PURE__ */ jsx10("button", { type: "button", onClick: () => onDelete(sb.id), className: "p-2 rounded-lg hover:bg-[var(--surface-danger-bg)] text-[var(--text-muted)] hover:text-[var(--surface-danger-text)] transition-all active:scale-90", title: "Delete", children: /* @__PURE__ */ jsx10(Trash22, { className: "h-4 w-4" }) })
954
970
  ] }) })
955
971
  ] }, sb.id);
956
972
  }) })
@@ -1,4 +1,4 @@
1
- export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, ag as DashboardProfile, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, m as PlanCardData, n as PlanCards, o as PlanCardsProps, ah as PlanFeature, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_PANEL_WIDTH, G as SIDEBAR_RAIL_WIDTH, H as SIDEBAR_TOTAL_WIDTH, J as SandboxCard, K as SandboxCardData, L as SandboxCardProps, M as SandboxStatus, O as SandboxTable, Q as SandboxTableProps, T as Sidebar, U as SidebarContent, V as SidebarContentProps, W as SidebarPanel, X as SidebarPanelContent, Y as SidebarPanelContentProps, Z as SidebarPanelHeader, _ as SidebarPanelHeaderProps, $ as SidebarPanelProps, a0 as SidebarProps, a1 as SidebarProvider, a2 as SidebarProviderProps, a3 as SidebarRail, a4 as SidebarRailFooter, a5 as SidebarRailFooterProps, a6 as SidebarRailHeader, a7 as SidebarRailHeaderProps, a8 as SidebarRailNav, a9 as SidebarRailNavProps, aa as SidebarRailProps, ab as SidebarUser, ai as Variant, ad as VariantList, ae as VariantListProps, aj as VariantOutcome, ak as VariantStatus, af as useSidebar } from './index-CDt0GE4A.js';
1
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, ag as DashboardProfile, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, m as PlanCardData, n as PlanCards, o as PlanCardsProps, ah as PlanFeature, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_PANEL_WIDTH, G as SIDEBAR_RAIL_WIDTH, H as SIDEBAR_TOTAL_WIDTH, J as SandboxCard, K as SandboxCardData, L as SandboxCardProps, M as SandboxStatus, O as SandboxTable, Q as SandboxTableProps, T as Sidebar, U as SidebarContent, V as SidebarContentProps, W as SidebarPanel, X as SidebarPanelContent, Y as SidebarPanelContentProps, Z as SidebarPanelHeader, _ as SidebarPanelHeaderProps, $ as SidebarPanelProps, a0 as SidebarProps, a1 as SidebarProvider, a2 as SidebarProviderProps, a3 as SidebarRail, a4 as SidebarRailFooter, a5 as SidebarRailFooterProps, a6 as SidebarRailHeader, a7 as SidebarRailHeaderProps, a8 as SidebarRailNav, a9 as SidebarRailNavProps, aa as SidebarRailProps, ab as SidebarUser, ai as Variant, ad as VariantList, ae as VariantListProps, aj as VariantOutcome, ak as VariantStatus, af as useSidebar } from './index-BT_-ecpc.js';
2
2
  export { a as BillingBalance, c as BillingDashboard, d as BillingDashboardProps, B as BillingSubscription, b as BillingUsage, e as PricingPage, f as PricingPageProps, P as PricingTier, g as UsageChart, h as UsageChartProps, U as UsageDataPoint } from './usage-chart-XCoB_7Xu.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/dist/dashboard.js CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  SidebarRailNav,
31
31
  VariantList,
32
32
  useSidebar
33
- } from "./chunk-ZOZX2U6I.js";
33
+ } from "./chunk-STHB4N22.js";
34
34
  import {
35
35
  BillingDashboard,
36
36
  PricingPage,
@@ -266,9 +266,10 @@ interface SandboxCardProps {
266
266
  onOpenTerminal?: (id: string) => void;
267
267
  onWake?: (id: string) => void;
268
268
  onRestore?: (id: string) => void;
269
+ onDelete?: (id: string) => void;
269
270
  className?: string;
270
271
  }
271
- declare function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, className }: SandboxCardProps): react_jsx_runtime.JSX.Element;
272
+ declare function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, onDelete, className }: SandboxCardProps): react_jsx_runtime.JSX.Element;
272
273
  interface NewSandboxCardProps {
273
274
  onClick?: () => void;
274
275
  className?: string;
@@ -286,9 +287,10 @@ interface SandboxTableProps {
286
287
  onSSH?: (id: string) => void;
287
288
  onWake?: (id: string) => void;
288
289
  onMore?: (id: string) => void;
290
+ onDelete?: (id: string) => void;
289
291
  className?: string;
290
292
  }
291
- declare function SandboxTable({ sandboxes, page, pageSize, total, onPageChange, onOpenIDE, onOpenTerminal, onSSH, onWake, onMore, className, }: SandboxTableProps): react_jsx_runtime.JSX.Element;
293
+ declare function SandboxTable({ sandboxes, page, pageSize, total, onPageChange, onOpenIDE, onOpenTerminal, onSSH, onWake, onMore, onDelete, className, }: SandboxTableProps): react_jsx_runtime.JSX.Element;
292
294
 
293
295
  interface Backend {
294
296
  type: string;
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ import { b as ToolPart } from './parts-CyGkM6Fp.js';
15
15
  export { R as ReasoningPart, S as SessionMessage, a as SessionPart, T as TextPart, c as ToolState, d as ToolStatus, e as ToolTime } from './parts-CyGkM6Fp.js';
16
16
  export { F as FileNode, a as FileTabData, b as FileTabs, c as FileTabsProps, d as FileTree, e as FileTreeProps, f as FileTreeVisibilityOptions, g as filterFileTree } from './file-tabs-BLfxfmAH.js';
17
17
  export { FileArtifactPane, FileArtifactPaneProps, FilePreview, FilePreviewProps } from './files.js';
18
- export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, P as PanelConfig, m as PlanCardData, n as PlanCards, o as PlanCardsProps, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_PANEL_WIDTH, G as SIDEBAR_RAIL_WIDTH, H as SIDEBAR_TOTAL_WIDTH, J as SandboxCard, K as SandboxCardData, L as SandboxCardProps, M as SandboxStatus, O as SandboxTable, Q as SandboxTableProps, T as Sidebar, U as SidebarContent, V as SidebarContentProps, W as SidebarPanel, X as SidebarPanelContent, Y as SidebarPanelContentProps, Z as SidebarPanelHeader, _ as SidebarPanelHeaderProps, $ as SidebarPanelProps, a0 as SidebarProps, a1 as SidebarProvider, a2 as SidebarProviderProps, a3 as SidebarRail, a4 as SidebarRailFooter, a5 as SidebarRailFooterProps, a6 as SidebarRailHeader, a7 as SidebarRailHeaderProps, a8 as SidebarRailNav, a9 as SidebarRailNavProps, aa as SidebarRailProps, ab as SidebarUser, ac as TopNavLink, ad as VariantList, ae as VariantListProps, af as useSidebar } from './index-CDt0GE4A.js';
18
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, I as Invoice, i as InvoiceTable, j as InvoiceTableProps, N as NavItem, k as NewSandboxCard, l as NewSandboxCardProps, P as PanelConfig, m as PlanCardData, n as PlanCards, o as PlanCardsProps, p as ProductVariant, q as ProfileAvatar, r as ProfileAvatarProps, s as ProfileComparison, t as ProfileComparisonProps, u as ProfileSelector, v as ProfileSelectorProps, R as RailButton, w as RailButtonProps, x as RailModeButton, y as RailModeButtonProps, z as RailSeparator, A as RailSeparatorProps, E as ResourceMeter, F as ResourceMeterProps, S as SIDEBAR_PANEL_WIDTH, G as SIDEBAR_RAIL_WIDTH, H as SIDEBAR_TOTAL_WIDTH, J as SandboxCard, K as SandboxCardData, L as SandboxCardProps, M as SandboxStatus, O as SandboxTable, Q as SandboxTableProps, T as Sidebar, U as SidebarContent, V as SidebarContentProps, W as SidebarPanel, X as SidebarPanelContent, Y as SidebarPanelContentProps, Z as SidebarPanelHeader, _ as SidebarPanelHeaderProps, $ as SidebarPanelProps, a0 as SidebarProps, a1 as SidebarProvider, a2 as SidebarProviderProps, a3 as SidebarRail, a4 as SidebarRailFooter, a5 as SidebarRailFooterProps, a6 as SidebarRailHeader, a7 as SidebarRailHeaderProps, a8 as SidebarRailNav, a9 as SidebarRailNavProps, aa as SidebarRailProps, ab as SidebarUser, ac as TopNavLink, ad as VariantList, ae as VariantListProps, af as useSidebar } from './index-BT_-ecpc.js';
19
19
  export { c as BillingDashboard, d as BillingDashboardProps, e as PricingCards, f as PricingPageProps, g as UsageChart, h as UsageChartProps, U as UsageDataPoint } from './usage-chart-XCoB_7Xu.js';
20
20
  export { AuthHeader, GitHubLoginButton, LoginLayout, LoginLayoutProps, UserMenu } from './auth.js';
21
21
  export { CodeBlock, CodeBlock as CodeBlockDisplay, CopyButton, Markdown, MarkdownProps } from './markdown.js';
package/dist/index.js CHANGED
@@ -210,7 +210,7 @@ import {
210
210
  SidebarRailNav,
211
211
  VariantList,
212
212
  useSidebar
213
- } from "./chunk-ZOZX2U6I.js";
213
+ } from "./chunk-STHB4N22.js";
214
214
  import {
215
215
  BillingDashboard,
216
216
  PricingPage,
package/dist/tokens.css CHANGED
@@ -84,6 +84,16 @@
84
84
  --error: var(--hsl-destructive);
85
85
  --info: var(--hsl-info);
86
86
 
87
+ /* Sidebar tokens */
88
+ --sidebar-background: 248 52% 5%;
89
+ --sidebar-foreground: 244 20% 94%;
90
+ --sidebar-primary: 247 100% 61%;
91
+ --sidebar-primary-foreground: 0 0% 100%;
92
+ --sidebar-accent: 245 28% 21%;
93
+ --sidebar-accent-foreground: 240 16% 92%;
94
+ --sidebar-border: 236 16% 18%;
95
+ --sidebar-ring: 247 100% 61%;
96
+
87
97
  /* Depth scale — Tangle deep indigo surfaces */
88
98
  --depth-1: #08071A;
89
99
  --depth-2: #131228;
@@ -323,6 +333,16 @@
323
333
  --surface-neutral-border: var(--border-subtle);
324
334
  --surface-neutral-text: var(--text-muted);
325
335
 
336
+ /* Sidebar — light */
337
+ --sidebar-background: 210 17% 97%;
338
+ --sidebar-foreground: 210 20% 10%;
339
+ --sidebar-primary: 248 100% 35%;
340
+ --sidebar-primary-foreground: 0 0% 100%;
341
+ --sidebar-accent: 210 20% 92%;
342
+ --sidebar-accent-foreground: 210 20% 10%;
343
+ --sidebar-border: 214 18% 88%;
344
+ --sidebar-ring: 248 100% 35%;
345
+
326
346
  --mesh-teal: rgba(44, 140, 134, 0.04);
327
347
  --mesh-violet: rgba(74, 58, 255, 0.03);
328
348
  --mesh-blue: rgba(29, 111, 164, 0.03);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
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",
@@ -88,6 +88,7 @@
88
88
  },
89
89
  "./styles": "./dist/styles.css",
90
90
  "./globals.css": "./dist/globals.css",
91
+ "./tokens.css": "./dist/tokens.css",
91
92
  "./tailwind": "./tailwind.config.cjs"
92
93
  },
93
94
  "files": [
@@ -88,6 +88,17 @@ module.exports = {
88
88
  // MD3 inverse tokens
89
89
  "inverse-surface": "var(--md3-inverse-surface)",
90
90
  "inverse-primary": "var(--md3-inverse-primary)",
91
+ // Sidebar
92
+ sidebar: {
93
+ DEFAULT: "hsl(var(--sidebar-background))",
94
+ foreground: "hsl(var(--sidebar-foreground))",
95
+ primary: "hsl(var(--sidebar-primary))",
96
+ "primary-foreground": "hsl(var(--sidebar-primary-foreground))",
97
+ accent: "hsl(var(--sidebar-accent))",
98
+ "accent-foreground": "hsl(var(--sidebar-accent-foreground))",
99
+ border: "hsl(var(--sidebar-border))",
100
+ ring: "hsl(var(--sidebar-ring))",
101
+ },
91
102
  },
92
103
  borderRadius: {
93
104
  lg: "var(--radius)",