@tangle-network/sandbox-ui 0.22.1 → 0.23.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.
@@ -57,8 +57,17 @@ interface RailButtonProps {
57
57
  className?: string;
58
58
  /** Show label text next to icon (for mobile drawer) */
59
59
  showLabel?: boolean;
60
+ /**
61
+ * Render the rail-button styling onto a single child element (e.g. a router
62
+ * `<Link>`) instead of an inner `<button>`. The child receives the button
63
+ * classes, `title`, and the icon/label/badge as its content — so navigation
64
+ * items stay real anchors (keyboard, cmd-click, prefetch) without copying the
65
+ * class recipe or nesting `<a><button>`.
66
+ */
67
+ asChild?: boolean;
68
+ children?: React.ReactNode;
60
69
  }
61
- declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel }: RailButtonProps): react_jsx_runtime.JSX.Element;
70
+ declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel, asChild, children }: RailButtonProps): react_jsx_runtime.JSX.Element;
62
71
  interface RailModeButtonProps {
63
72
  mode: string;
64
73
  icon: React.ComponentType<{
@@ -101,9 +110,11 @@ interface ProfileAvatarProps {
101
110
  /** Extra dropdown items rendered before settings/logout */
102
111
  children?: React.ReactNode;
103
112
  className?: string;
113
+ /** Show name/email beside the avatar (for a labeled rail) instead of an icon-only avatar button. */
114
+ showDetails?: boolean;
104
115
  LinkComponent?: React.ComponentType<any>;
105
116
  }
106
- declare function ProfileAvatar({ user, isLoading, onLogout, onSettingsClick, settingsHref, children, className, LinkComponent, }: ProfileAvatarProps): react_jsx_runtime.JSX.Element;
117
+ declare function ProfileAvatar({ user, isLoading, onLogout, onSettingsClick, settingsHref, children, className, showDetails, LinkComponent, }: ProfileAvatarProps): react_jsx_runtime.JSX.Element;
107
118
 
108
119
  /** Width constants (px) matching blueprint-agent layout */
109
120
  declare const SIDEBAR_RAIL_WIDTH = 64;
@@ -132,14 +143,28 @@ interface SidebarContextValue {
132
143
  contentMargin: number;
133
144
  /** Whether there are panels at all */
134
145
  hasPanels: boolean;
146
+ /** Rail width in px — 64 for the icon-only rail, wider when labels show */
147
+ railWidth: number;
135
148
  }
136
149
  interface SidebarProviderProps {
137
150
  defaultPanelOpen?: boolean;
138
151
  defaultMode?: string;
139
152
  hasPanels?: boolean;
153
+ /** Rail width in px. Defaults to the 64px icon-only rail. */
154
+ railWidth?: number;
155
+ /**
156
+ * Controlled panel-open state. When provided, the provider treats panel
157
+ * visibility as controlled: it never reads or writes localStorage and
158
+ * reports changes through {@link onPanelOpenChange} instead. Use this in
159
+ * server-rendered apps — seed it from a value the server also has (e.g. a
160
+ * cookie) so the SSR markup matches the first client render. The localStorage
161
+ * read in the uncontrolled path is what diverges from SSR and breaks hydration.
162
+ */
163
+ panelOpen?: boolean;
164
+ onPanelOpenChange?: (open: boolean) => void;
140
165
  children: React.ReactNode;
141
166
  }
142
- declare function SidebarProvider({ defaultPanelOpen, defaultMode, hasPanels, children, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
167
+ declare function SidebarProvider({ defaultPanelOpen, defaultMode, hasPanels, railWidth, panelOpen: controlledPanelOpen, onPanelOpenChange, children, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
143
168
  declare function useSidebar(): SidebarContextValue;
144
169
 
145
170
  interface CreditBalanceProps {
@@ -479,6 +504,72 @@ interface DashboardLayoutProps {
479
504
  }
480
505
  declare function DashboardLayout({ defaultPanelOpen, defaultMode, ...props }: DashboardLayoutProps): react_jsx_runtime.JSX.Element;
481
506
 
507
+ interface SidebarLayoutNavItem {
508
+ id: string;
509
+ label: string;
510
+ icon: React.ComponentType<{
511
+ className?: string;
512
+ }>;
513
+ /** Destination for link items. Omit when `togglesPanel` is set. */
514
+ href?: string;
515
+ /** Render this item as the panel toggle instead of a link. */
516
+ togglesPanel?: boolean;
517
+ badge?: number;
518
+ }
519
+ interface SidebarLayoutProps {
520
+ children: React.ReactNode;
521
+ /** Rail navigation, in display order. Each item is a link or the panel toggle. */
522
+ navItems: SidebarLayoutNavItem[];
523
+ /** Id of the active link item (drives the highlighted state). */
524
+ activeId?: string;
525
+ /** Content rendered inside the slide-out panel (e.g. a SessionSidebar). */
526
+ panel?: React.ReactNode;
527
+ /** Logo element rendered in the rail header. */
528
+ logo?: React.ReactNode;
529
+ /** Destination for the logo link. */
530
+ logoHref?: string;
531
+ user?: SidebarUser | null;
532
+ isLoading?: boolean;
533
+ onLogout?: () => void;
534
+ onSettingsClick?: () => void;
535
+ settingsHref?: string;
536
+ /** Extra items rendered before settings/logout in the profile menu. */
537
+ profileMenuItems?: React.ReactNode;
538
+ /** Extra content in the rail footer, above the profile avatar. */
539
+ railFooter?: React.ReactNode;
540
+ LinkComponent?: React.ComponentType<any>;
541
+ /**
542
+ * Controlled panel-open state. Provide it (seeded from a server-readable
543
+ * source such as a cookie) in SSR apps so the panel survives reload without a
544
+ * hydration mismatch. Omit to let the panel persist to localStorage.
545
+ */
546
+ panelOpen?: boolean;
547
+ onPanelOpenChange?: (open: boolean) => void;
548
+ defaultPanelOpen?: boolean;
549
+ /** Hide the whole sidebar below this breakpoint (content spans full width). */
550
+ hideBelow?: "md" | "lg";
551
+ /** Show text labels beside the rail icons on a wider rail (vs. icon-only with hover tooltips). */
552
+ railLabels?: boolean;
553
+ /**
554
+ * Close the panel when a link nav item is clicked. Useful when the panel is
555
+ * contextual to one section (e.g. a chat thread list) rather than a global
556
+ * dock. Selecting items inside the panel itself does not trigger this.
557
+ */
558
+ closePanelOnNavigate?: boolean;
559
+ className?: string;
560
+ sidebarClassName?: string;
561
+ /** Class for the `<main>` content region (e.g. `flex h-screen ... overflow-hidden`). */
562
+ contentClassName?: string;
563
+ }
564
+ /**
565
+ * App shell built on the sidebar rail + slide-out panel, without a top nav bar.
566
+ * Apps supply nav items, an optional panel, and profile/branding props; the
567
+ * standard look, panel docking, content-margin coordination, and responsive
568
+ * hide all live here. Pair `panelOpen`/`onPanelOpenChange` with a cookie for
569
+ * SSR-safe persistence.
570
+ */
571
+ declare function SidebarLayout({ panelOpen, onPanelOpenChange, defaultPanelOpen, ...props }: SidebarLayoutProps): react_jsx_runtime.JSX.Element;
572
+
482
573
  interface Profile {
483
574
  id: string;
484
575
  name: string;
@@ -722,4 +813,4 @@ interface InfoPanelProps {
722
813
  }
723
814
  declare function InfoPanel({ label, title, description, className }: InfoPanelProps): react_jsx_runtime.JSX.Element;
724
815
 
725
- export { ActivityFeed, type ActivityFeedProps, type ActivityItem, BackendConfig, type BackendConfigProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarPanel, SidebarPanelContent, type SidebarPanelContentProps, SidebarPanelHeader, type SidebarPanelHeaderProps, type SidebarPanelProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarRailFooter, type SidebarRailFooterProps, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar };
816
+ export { ActivityFeed, type ActivityFeedProps, type ActivityItem, BackendConfig, type BackendConfigProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutNavItem, type SidebarLayoutProps, SidebarPanel, SidebarPanelContent, type SidebarPanelContentProps, SidebarPanelHeader, type SidebarPanelHeaderProps, type SidebarPanelProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarRailFooter, type SidebarRailFooterProps, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar };
package/dist/dashboard.js CHANGED
@@ -31,6 +31,7 @@ import {
31
31
  SandboxTable,
32
32
  Sidebar,
33
33
  SidebarContent,
34
+ SidebarLayout,
34
35
  SidebarPanel,
35
36
  SidebarPanelContent,
36
37
  SidebarPanelHeader,
@@ -46,7 +47,7 @@ import {
46
47
  canAdminSandbox,
47
48
  parseInsufficientBalance,
48
49
  useSidebar
49
- } from "./chunk-7X2DHDQ6.js";
50
+ } from "./chunk-CB3KBKYN.js";
50
51
  import {
51
52
  BillingDashboard,
52
53
  InfoPanel,
@@ -108,6 +109,7 @@ export {
108
109
  SandboxTable,
109
110
  Sidebar,
110
111
  SidebarContent,
112
+ SidebarLayout,
111
113
  SidebarPanel,
112
114
  SidebarPanelContent,
113
115
  SidebarPanelHeader,
package/dist/globals.css CHANGED
@@ -3577,6 +3577,16 @@
3577
3577
  translate: var(--tw-translate-x) var(--tw-translate-y);
3578
3578
  }
3579
3579
  }
3580
+ .max-lg\:hidden {
3581
+ @media (width < 64rem) {
3582
+ display: none;
3583
+ }
3584
+ }
3585
+ .max-md\:hidden {
3586
+ @media (width < 48rem) {
3587
+ display: none;
3588
+ }
3589
+ }
3580
3590
  .sm\:mx-3 {
3581
3591
  @media (width >= 40rem) {
3582
3592
  margin-inline: calc(var(--spacing) * 3);
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { AgentSessionControls, AgentSessionControlsProps, AgentSessionHarnessCon
8
8
  export { ExpandedToolDetail, ExpandedToolDetailProps, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps } from '@tangle-network/ui/run';
9
9
  export { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from '@tangle-network/ui/tool-previews';
10
10
  export { FileArtifactPane, FileArtifactPaneProps, FileNode, FilePreview, FilePreviewProps, FileTabData, FileTabs, FileTabsProps, FileTree, FileTreeProps, FileTreeVisibilityOptions, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, filterFileTree } from '@tangle-network/ui/files';
11
- export { ActivityFeed, ActivityFeedProps, ActivityItem, BackendConfig, BackendConfigProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, MetricAreaChart, MetricAreaChartProps, MetricChartPoint, MetricChartTone, NavItem, NetworkConfig, NetworkConfigData, NetworkConfigProps, NewSandboxCard, NewSandboxCardProps, OutOfCreditsModal, OutOfCreditsModalProps, PlanCardData, PlanCards, PlanCardsProps, PlanFeature, PortsList, PortsListProps, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarPanel, SidebarPanelContent, SidebarPanelContentProps, SidebarPanelHeader, SidebarPanelHeaderProps, SidebarPanelProps, SidebarProps, SidebarProvider, SidebarProviderProps, SidebarRail, SidebarRailFooter, SidebarRailFooterProps, SidebarRailHeader, SidebarRailHeaderProps, SidebarRailNav, SidebarRailNavProps, SidebarRailProps, SidebarUser, SnapshotList, SnapshotListProps, SystemLogsViewer, SystemLogsViewerProps, TeamRole, UsageSummary, UsageSummaryData, UsageSummaryProps, Variant, VariantList, VariantListProps, VariantOutcome, VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar } from './dashboard.js';
11
+ export { ActivityFeed, ActivityFeedProps, ActivityItem, BackendConfig, BackendConfigProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, MetricAreaChart, MetricAreaChartProps, MetricChartPoint, MetricChartTone, NavItem, NetworkConfig, NetworkConfigData, NetworkConfigProps, NewSandboxCard, NewSandboxCardProps, OutOfCreditsModal, OutOfCreditsModalProps, PlanCardData, PlanCards, PlanCardsProps, PlanFeature, PortsList, PortsListProps, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, SidebarLayoutNavItem, SidebarLayoutProps, SidebarPanel, SidebarPanelContent, SidebarPanelContentProps, SidebarPanelHeader, SidebarPanelHeaderProps, SidebarPanelProps, SidebarProps, SidebarProvider, SidebarProviderProps, SidebarRail, SidebarRailFooter, SidebarRailFooterProps, SidebarRailHeader, SidebarRailHeaderProps, SidebarRailNav, SidebarRailNavProps, SidebarRailProps, SidebarUser, SnapshotList, SnapshotListProps, SystemLogsViewer, SystemLogsViewerProps, TeamRole, UsageSummary, UsageSummaryData, UsageSummaryProps, Variant, VariantList, VariantListProps, VariantOutcome, VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
12
  export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps, e as HarnessType } from './harness-picker-C1W3rTeb.js';
13
13
  export { M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, f as formatContext, e as formatPricing } from './model-picker-DUfMTQo5.js';
14
14
  export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, P as PricingPage, e as PricingPageProps, f as PricingTier, T as TemplateCard, g as TemplateCardData, h as TemplateCardProps, U as UsageChart, i as UsageChartProps, j as UsageDataPoint, k as formatPrice } from './template-card-UhV3pmRC.js';
package/dist/index.js CHANGED
@@ -173,6 +173,7 @@ import {
173
173
  SandboxTable,
174
174
  Sidebar,
175
175
  SidebarContent,
176
+ SidebarLayout,
176
177
  SidebarPanel,
177
178
  SidebarPanelContent,
178
179
  SidebarPanelHeader,
@@ -188,7 +189,7 @@ import {
188
189
  canAdminSandbox,
189
190
  parseInsufficientBalance,
190
191
  useSidebar
191
- } from "./chunk-7X2DHDQ6.js";
192
+ } from "./chunk-CB3KBKYN.js";
192
193
  import {
193
194
  BillingDashboard,
194
195
  InfoPanel,
@@ -453,6 +454,7 @@ export {
453
454
  Sidebar,
454
455
  SidebarContent,
455
456
  SidebarDropZone,
457
+ SidebarLayout,
456
458
  SidebarPanel,
457
459
  SidebarPanelContent,
458
460
  SidebarPanelHeader,
package/dist/styles.css CHANGED
@@ -3577,6 +3577,16 @@
3577
3577
  translate: var(--tw-translate-x) var(--tw-translate-y);
3578
3578
  }
3579
3579
  }
3580
+ .max-lg\:hidden {
3581
+ @media (width < 64rem) {
3582
+ display: none;
3583
+ }
3584
+ }
3585
+ .max-md\:hidden {
3586
+ @media (width < 48rem) {
3587
+ display: none;
3588
+ }
3589
+ }
3580
3590
  .sm\:mx-3 {
3581
3591
  @media (width >= 40rem) {
3582
3592
  margin-inline: calc(var(--spacing) * 3);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.22.1",
3
+ "version": "0.23.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",