@tangle-network/sandbox-ui 0.52.0 → 0.54.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.
@@ -13,6 +13,28 @@ interface SidebarUser {
13
13
  tier?: string;
14
14
  avatarUrl?: string;
15
15
  }
16
+ /** Theme modes offered by the account menu's Appearance section. */
17
+ type ThemeMode = "light" | "dark" | "system";
18
+ /**
19
+ * Host-supplied controller for the account-menu Appearance section. The rail is
20
+ * theme-engine-agnostic: each app wires this to its own theme hook (gtm-agent
21
+ * uses the shared `useTheme`; the sandbox app uses its `vault`-aware
22
+ * `useThemeMode`). Provide it to {@link ProfileAvatar} to render Light/Dark/System.
23
+ */
24
+ interface AppearanceController {
25
+ value: ThemeMode;
26
+ onChange: (mode: ThemeMode) => void;
27
+ /** Which modes to offer, in order. Defaults to all three. */
28
+ modes?: ThemeMode[];
29
+ }
30
+ /**
31
+ * Compact light/dark switch driven by the shared `useTheme` hook.
32
+ *
33
+ * @deprecated The redesigned rail no longer renders a standalone theme toggle —
34
+ * theme lives in the account menu as a Light/Dark/System control via the
35
+ * `appearance` controller on {@link ProfileAvatar} (and both layouts). Kept for
36
+ * backward compatibility; not used by `SidebarLayout`/`DashboardLayout`.
37
+ */
16
38
  declare function RailThemeToggle({ className }: {
17
39
  className?: string;
18
40
  }): react_jsx_runtime.JSX.Element;
@@ -25,6 +47,34 @@ interface RailCollapseToggleProps {
25
47
  className?: string;
26
48
  }
27
49
  declare function RailCollapseToggle({ collapsed, showLabel, onToggle, className }: RailCollapseToggleProps): react_jsx_runtime.JSX.Element;
50
+ interface RailHeaderProps {
51
+ /** Brand mark shown on the left, e.g. `<Logo iconOnly />`. */
52
+ brand?: React.ReactNode;
53
+ /** Destination for the brand link. When set with `LinkComponent`, the brand is a link. */
54
+ brandHref?: string;
55
+ /** Optional middle content (e.g. a project/workspace switcher). Hidden when collapsed. */
56
+ children?: React.ReactNode;
57
+ /** Whether the rail is collapsed (icon-only). */
58
+ collapsed: boolean;
59
+ /** Collapse/expand the rail. */
60
+ onToggle: () => void;
61
+ /**
62
+ * Whether the rail can collapse/expand. When `false`, no panel toggle is
63
+ * rendered and the collapsed header shows the brand without the hover-morph.
64
+ * Defaults to `true`.
65
+ */
66
+ collapsible?: boolean;
67
+ LinkComponent?: React.ComponentType<any>;
68
+ className?: string;
69
+ }
70
+ /**
71
+ * The redesigned rail header. Expanded: brand (left) · optional middle · panel
72
+ * toggle (right). Collapsed: only the brand mark, which morphs into the
73
+ * expand button on hover (brand fades out, panel glyph fades in over the same
74
+ * box) so the collapse affordance is discoverable without spending rail width.
75
+ * Renders its own `h-14` bordered bar — drop it in at the top of {@link SidebarRail}.
76
+ */
77
+ declare function RailHeader({ brand, brandHref, children, collapsed, onToggle, collapsible, LinkComponent, className }: RailHeaderProps): react_jsx_runtime.JSX.Element;
28
78
  interface SidebarProps {
29
79
  children: React.ReactNode;
30
80
  className?: string;
@@ -46,12 +96,23 @@ interface SidebarRailHeaderProps {
46
96
  children: React.ReactNode;
47
97
  className?: string;
48
98
  }
99
+ /**
100
+ * @deprecated Superseded by {@link RailHeader}, the three-slot header
101
+ * (brand · middle · panel toggle) used by both shells. Kept for backward
102
+ * compatibility; no longer rendered by `SidebarLayout`/`DashboardLayout`.
103
+ */
49
104
  declare function SidebarRailHeader({ children, className }: SidebarRailHeaderProps): react_jsx_runtime.JSX.Element;
50
105
  interface SidebarRailNavProps {
51
106
  children: React.ReactNode;
52
107
  className?: string;
108
+ /**
109
+ * Click handler on the `<nav>` itself. Layouts use it (with a
110
+ * `target === currentTarget` guard) so clicking the empty body of a collapsed
111
+ * rail expands it, without intercepting clicks on the nav items.
112
+ */
113
+ onClick?: React.MouseEventHandler<HTMLElement>;
53
114
  }
54
- declare function SidebarRailNav({ children, className }: SidebarRailNavProps): react_jsx_runtime.JSX.Element;
115
+ declare function SidebarRailNav({ children, className, onClick }: SidebarRailNavProps): react_jsx_runtime.JSX.Element;
55
116
  interface SidebarRailFooterProps {
56
117
  children: React.ReactNode;
57
118
  className?: string;
@@ -81,8 +142,14 @@ interface RailButtonProps {
81
142
  */
82
143
  asChild?: boolean;
83
144
  children?: React.ReactNode;
145
+ /**
146
+ * `"primary"` gives the item a distinct emphasized pill (accent fill + accent
147
+ * border) so it stands out from the rest of the nav, e.g. a "New" action.
148
+ * Defaults to `"normal"`.
149
+ */
150
+ variant?: "normal" | "primary";
84
151
  }
85
- declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel, asChild, children }: RailButtonProps): react_jsx_runtime.JSX.Element;
152
+ declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel, asChild, children, variant }: RailButtonProps): react_jsx_runtime.JSX.Element;
86
153
  interface RailFlyoutProps {
87
154
  icon: React.ComponentType<{
88
155
  className?: string;
@@ -106,6 +173,49 @@ interface RailFlyoutProps {
106
173
  * related destinations without permanently spending rail height on them.
107
174
  */
108
175
  declare function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, className, }: RailFlyoutProps): react_jsx_runtime.JSX.Element;
176
+ /** A sub-destination revealed by a {@link RailExpandable} item. */
177
+ interface RailExpandableSubItem {
178
+ id: string;
179
+ label: string;
180
+ icon?: React.ComponentType<{
181
+ className?: string;
182
+ }>;
183
+ href: string;
184
+ prefetch?: "none" | "intent" | "render" | "viewport";
185
+ }
186
+ interface RailExpandableProps {
187
+ icon: React.ComponentType<{
188
+ className?: string;
189
+ }>;
190
+ label: string;
191
+ /** Destination for the row itself. Clicking the label navigates here. */
192
+ href?: string;
193
+ /** Highlight the row (e.g. its own route or a child route is active). */
194
+ isActive?: boolean;
195
+ /** Labeled (expanded) rail vs. icon-only (collapsed) rail. */
196
+ showLabel?: boolean;
197
+ /** Fixed sub-items. Mutually exclusive with `loadSubItems`. */
198
+ subItems?: RailExpandableSubItem[];
199
+ /** Lazy sub-items — called once on first open; the result is cached. */
200
+ loadSubItems?: () => Promise<RailExpandableSubItem[]>;
201
+ /** Ids of sub-items whose route is active (drives sub-item highlight). */
202
+ activeSubIds?: string[];
203
+ /** Shown when the resolved sub-item list is empty. */
204
+ emptyLabel?: string;
205
+ /** Called when the row or a sub-item navigates (e.g. to close a mobile drawer). */
206
+ onNavigate?: () => void;
207
+ LinkComponent?: React.ComponentType<any>;
208
+ className?: string;
209
+ }
210
+ /**
211
+ * A nav item that reveals sub-items. On the labeled rail it expands inline as an
212
+ * accordion: the leading icon morphs into a chevron on hover, clicking the
213
+ * chevron toggles the list, and clicking the label navigates (`href`). On the
214
+ * icon-only rail it shows the sub-items in a right-anchored flyout on hover.
215
+ * Sub-items can be fixed (`subItems`) or lazy (`loadSubItems`, with a loading
216
+ * skeleton). Used for e.g. a "History" entry fronting recent sessions.
217
+ */
218
+ declare function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems, loadSubItems, activeSubIds, emptyLabel, onNavigate, LinkComponent, className, }: RailExpandableProps): react_jsx_runtime.JSX.Element;
109
219
  interface RailModeButtonProps {
110
220
  mode: string;
111
221
  icon: React.ComponentType<{
@@ -150,9 +260,14 @@ interface ProfileAvatarProps {
150
260
  className?: string;
151
261
  /** Show name/email beside the avatar (for a labeled rail) instead of an icon-only avatar button. */
152
262
  showDetails?: boolean;
263
+ /**
264
+ * When provided, the menu renders an Appearance section (Light/Dark/System)
265
+ * driven by this host-supplied controller. Omit to hide it.
266
+ */
267
+ appearance?: AppearanceController;
153
268
  LinkComponent?: React.ComponentType<any>;
154
269
  }
155
- declare function ProfileAvatar({ user, isLoading, onLogout, onSettingsClick, settingsHref, children, className, showDetails, LinkComponent, }: ProfileAvatarProps): react_jsx_runtime.JSX.Element;
270
+ declare function ProfileAvatar({ user, isLoading, onLogout, onSettingsClick, settingsHref, children, className, showDetails, appearance, LinkComponent, }: ProfileAvatarProps): react_jsx_runtime.JSX.Element;
156
271
 
157
272
  interface RailTooltipProps {
158
273
  /** Tooltip text shown to the right of the trigger. */
@@ -164,15 +279,14 @@ interface RailTooltipProps {
164
279
  className?: string;
165
280
  }
166
281
  /**
167
- * Quiet, instant-ish styled tooltip for the icon-only rail. CSS-only (no
168
- * portal, no extra deps): the trigger wraps in a `group` and the label is an
169
- * absolutely-positioned sibling to the RIGHT, revealed on `group-hover` /
170
- * `group-focus-within` after a short delay. Matches the `--popover` / border
171
- * tokens so it reads as Tangle Quiet chrome rather than a native `title`.
172
- *
173
- * Replaces reliance on the native `title` attribute for the collapsed rail
174
- * (no ~1.5s delay, themeable, keyboard-focus reachable). Hidden via
175
- * `aria-hidden` since the trigger already carries an accessible name.
282
+ * Quiet styled tooltip for the icon-only rail, rendered in a portal anchored to
283
+ * the RIGHT of the trigger. The portal is essential: the rail's nav is a
284
+ * vertical scroll container (`overflow-y-auto`), which the CSS spec forces to
285
+ * also clip horizontally — an in-flow tooltip would be cut off at the rail's
286
+ * edge. Positioned via `getBoundingClientRect` on hover/focus, shown after a
287
+ * short delay, and `pointer-events-none` so it never interferes with the
288
+ * trigger. Hidden from the a11y tree (`aria-hidden`) since the trigger already
289
+ * carries an accessible name.
176
290
  */
177
291
  declare function RailTooltip({ label, children, disabled, className }: RailTooltipProps): react_jsx_runtime.JSX.Element;
178
292
 
@@ -699,14 +813,13 @@ interface DashboardLayoutProps {
699
813
  */
700
814
  logoHref?: string;
701
815
  /**
702
- * If provided, the rail logo becomes a button calling this instead of
703
- * navigating — e.g. to toggle the sidebar. Takes precedence over logoHref.
816
+ * @deprecated No longer wired. The redesigned {@link RailHeader} renders the
817
+ * brand mark plus a dedicated panel-toggle button; the logo is no longer the
818
+ * collapse control. Kept for back-compat; has no effect.
704
819
  */
705
820
  onLogoClick?: () => void;
706
821
  /**
707
- * Accessible label for the logo button when onLogoClick is set. Defaults to
708
- * "Toggle navigation"; set it to match what onLogoClick actually does (e.g.
709
- * "Open command palette") so screen readers don't announce a stale action.
822
+ * @deprecated No longer wired (see {@link onLogoClick}). Has no effect.
710
823
  */
711
824
  logoAriaLabel?: string;
712
825
  /**
@@ -727,6 +840,12 @@ interface DashboardLayoutProps {
727
840
  railFooter?: React.ReactNode;
728
841
  /** Extra dropdown items in the profile menu */
729
842
  profileMenuItems?: React.ReactNode;
843
+ /**
844
+ * When provided, the profile menu shows an Appearance section
845
+ * (Light/Dark/System) driven by this host-supplied controller. Replaces the
846
+ * old standalone rail theme toggle.
847
+ */
848
+ appearance?: AppearanceController;
730
849
  /** Notification data for the bell dropdown */
731
850
  notifications?: {
732
851
  items: {
@@ -771,6 +890,26 @@ interface SidebarLayoutNavItem {
771
890
  flyoutItems?: SidebarLayoutFlyoutItem[];
772
891
  /** Ids of `flyoutItems` whose route is currently active (drives the door highlight). */
773
892
  flyoutActiveIds?: string[];
893
+ /**
894
+ * Give the item an emphasized "primary" pill so it stands out (e.g. a "New"
895
+ * action). Ignored for `togglesPanel`/`flyoutItems`/`expandable` items.
896
+ */
897
+ variant?: "normal" | "primary";
898
+ /**
899
+ * Render as an expandable item: an inline accordion on the labeled rail, a
900
+ * hover flyout on the icon-only rail. `href` (if set) navigates; the
901
+ * disclosure reveals `subItems` (fixed) or `loadSubItems()` (lazy). Takes
902
+ * precedence over `href`/`togglesPanel`/`flyoutItems`.
903
+ */
904
+ expandable?: boolean;
905
+ /** Fixed sub-items for an `expandable` item (icon optional). */
906
+ subItems?: RailExpandableSubItem[];
907
+ /** Lazy sub-items for an `expandable` item — loaded once on first open. */
908
+ loadSubItems?: () => Promise<RailExpandableSubItem[]>;
909
+ /** Ids of an `expandable` item's sub-items whose route is active. */
910
+ subActiveIds?: string[];
911
+ /** Empty-state text for an `expandable` item that resolves to no sub-items. */
912
+ emptyLabel?: string;
774
913
  badge?: number;
775
914
  /**
776
915
  * React Router prefetch behavior for this link, forwarded to the underlying
@@ -805,17 +944,26 @@ interface SidebarLayoutProps {
805
944
  settingsHref?: string;
806
945
  /** Extra items rendered before settings/logout in the profile menu. */
807
946
  profileMenuItems?: React.ReactNode;
808
- /** Render a light/dark theme switch in the profile menu (uses the shared `useTheme`). */
947
+ /**
948
+ * When provided, the profile menu shows an Appearance section
949
+ * (Light/Dark/System) driven by this host-supplied controller. The host wires
950
+ * it to its own theme engine. Replaces the old standalone rail theme toggle.
951
+ */
952
+ appearance?: AppearanceController;
953
+ /**
954
+ * @deprecated No-op. The standalone rail theme toggle was replaced by the
955
+ * account-menu `appearance` control. Accepted (and ignored) for backward
956
+ * compatibility; will be removed in a future major.
957
+ */
809
958
  showThemeToggle?: boolean;
810
- /** Extra content in the rail footer, above the profile avatar. */
811
- railFooter?: React.ReactNode;
812
959
  /**
813
- * Where the rail collapse/expand control sits. Defaults to `"footer"` (the
814
- * historical placement, above the profile avatar). Set `"header"` to move it
815
- * to the top of the rail instead, alongside the logo/`railHeaderContent`.
816
- * Only takes effect when `railLabels` is set (the rail is collapsible).
960
+ * @deprecated No-op. The collapse/expand control now always lives in the
961
+ * header (`RailHeader`). Accepted (and ignored) for backward compatibility;
962
+ * will be removed in a future major.
817
963
  */
818
964
  railCollapseToggle?: "header" | "footer";
965
+ /** Extra content in the rail footer, above the profile avatar. */
966
+ railFooter?: React.ReactNode;
819
967
  LinkComponent?: React.ComponentType<any>;
820
968
  /**
821
969
  * Controlled panel-open state. Provide it (seeded from a server-readable
@@ -1094,4 +1242,4 @@ interface InfoPanelProps {
1094
1242
  }
1095
1243
  declare function InfoPanel({ label, title, description, className }: InfoPanelProps): react_jsx_runtime.JSX.Element;
1096
1244
 
1097
- export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, 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, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailFlyout, type RailFlyoutProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, RailTooltip, type RailTooltipProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutFlyoutItem, 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, chatCapableHarnesses, parseInsufficientBalance, useSidebar };
1245
+ export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AppearanceController, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, 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, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, RailTooltip, type RailTooltipProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutFlyoutItem, 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, type ThemeMode, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, chatCapableHarnesses, parseInsufficientBalance, useSidebar };
package/dist/dashboard.js CHANGED
@@ -20,7 +20,9 @@ import {
20
20
  PromoBanner,
21
21
  RailButton,
22
22
  RailCollapseToggle,
23
+ RailExpandable,
23
24
  RailFlyout,
25
+ RailHeader,
24
26
  RailModeButton,
25
27
  RailSeparator,
26
28
  RailThemeToggle,
@@ -52,7 +54,7 @@ import {
52
54
  canAdminSandbox,
53
55
  parseInsufficientBalance,
54
56
  useSidebar
55
- } from "./chunk-RT4MLYYM.js";
57
+ } from "./chunk-SVNWL3ZR.js";
56
58
  import {
57
59
  BillingDashboard,
58
60
  InfoPanel,
@@ -113,7 +115,9 @@ export {
113
115
  PromoBanner,
114
116
  RailButton,
115
117
  RailCollapseToggle,
118
+ RailExpandable,
116
119
  RailFlyout,
120
+ RailHeader,
117
121
  RailModeButton,
118
122
  RailSeparator,
119
123
  RailThemeToggle,
package/dist/globals.css CHANGED
@@ -395,9 +395,6 @@
395
395
  .bottom-1 {
396
396
  bottom: calc(var(--spacing) * 1);
397
397
  }
398
- .bottom-1\.5 {
399
- bottom: calc(var(--spacing) * 1.5);
400
- }
401
398
  .bottom-2 {
402
399
  bottom: calc(var(--spacing) * 2);
403
400
  }
@@ -455,6 +452,9 @@
455
452
  .z-50 {
456
453
  z-index: 50;
457
454
  }
455
+ .z-\[70\] {
456
+ z-index: 70;
457
+ }
458
458
  .z-\[100\] {
459
459
  z-index: 100;
460
460
  }
@@ -741,6 +741,9 @@
741
741
  .h-\[17px\] {
742
742
  height: 17px;
743
743
  }
744
+ .h-\[18px\] {
745
+ height: 18px;
746
+ }
744
747
  .h-\[70vh\] {
745
748
  height: 70vh;
746
749
  }
@@ -1023,9 +1026,24 @@
1023
1026
  .w-\[17px\] {
1024
1027
  width: 17px;
1025
1028
  }
1029
+ .w-\[18px\] {
1030
+ width: 18px;
1031
+ }
1032
+ .w-\[64\%\] {
1033
+ width: 64%;
1034
+ }
1026
1035
  .w-\[72\%\] {
1027
1036
  width: 72%;
1028
1037
  }
1038
+ .w-\[76\%\] {
1039
+ width: 76%;
1040
+ }
1041
+ .w-\[82\%\] {
1042
+ width: 82%;
1043
+ }
1044
+ .w-\[88\%\] {
1045
+ width: 88%;
1046
+ }
1029
1047
  .w-\[240px\] {
1030
1048
  width: 240px;
1031
1049
  }
@@ -2725,6 +2743,9 @@
2725
2743
  .pr-2 {
2726
2744
  padding-right: calc(var(--spacing) * 2);
2727
2745
  }
2746
+ .pr-2\.5 {
2747
+ padding-right: calc(var(--spacing) * 2.5);
2748
+ }
2728
2749
  .pr-8 {
2729
2750
  padding-right: calc(var(--spacing) * 8);
2730
2751
  }
@@ -2857,6 +2878,9 @@
2857
2878
  .text-\[13px\] {
2858
2879
  font-size: 13px;
2859
2880
  }
2881
+ .text-\[14px\] {
2882
+ font-size: 14px;
2883
+ }
2860
2884
  .text-\[15px\] {
2861
2885
  font-size: 15px;
2862
2886
  }
@@ -3467,6 +3491,9 @@
3467
3491
  .ring-\[var\(--bg-root\)\] {
3468
3492
  --tw-ring-color: var(--bg-root);
3469
3493
  }
3494
+ .ring-\[var\(--border-accent\)\] {
3495
+ --tw-ring-color: var(--border-accent);
3496
+ }
3470
3497
  .ring-\[var\(--md3-outline-variant\)\] {
3471
3498
  --tw-ring-color: var(--md3-outline-variant);
3472
3499
  }
@@ -3558,11 +3585,6 @@
3558
3585
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3559
3586
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3560
3587
  }
3561
- .transition-\[opacity\,transform\] {
3562
- transition-property: opacity,transform;
3563
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3564
- transition-duration: var(--tw-duration, var(--default-transition-duration));
3565
- }
3566
3588
  .transition-\[opacity\] {
3567
3589
  transition-property: opacity;
3568
3590
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -3650,22 +3672,6 @@
3650
3672
  rotate: 180deg;
3651
3673
  }
3652
3674
  }
3653
- .group-focus-within\:opacity-100 {
3654
- &:is(:where(.group):focus-within *) {
3655
- opacity: 100%;
3656
- }
3657
- }
3658
- .group-focus-within\/tip\:translate-x-0 {
3659
- &:is(:where(.group\/tip):focus-within *) {
3660
- --tw-translate-x: calc(var(--spacing) * 0);
3661
- translate: var(--tw-translate-x) var(--tw-translate-y);
3662
- }
3663
- }
3664
- .group-focus-within\/tip\:opacity-100 {
3665
- &:is(:where(.group\/tip):focus-within *) {
3666
- opacity: 100%;
3667
- }
3668
- }
3669
3675
  .group-hover\:translate-x-0\.5 {
3670
3676
  &:is(:where(.group):hover *) {
3671
3677
  @media (hover: hover) {
@@ -3705,32 +3711,31 @@
3705
3711
  }
3706
3712
  }
3707
3713
  }
3708
- .group-hover\/logo\:opacity-100 {
3709
- &:is(:where(.group\/logo):hover *) {
3714
+ .group-hover\/brand\:opacity-0 {
3715
+ &:is(:where(.group\/brand):hover *) {
3710
3716
  @media (hover: hover) {
3711
- opacity: 100%;
3717
+ opacity: 0%;
3712
3718
  }
3713
3719
  }
3714
3720
  }
3715
- .group-hover\/tip\:translate-x-0 {
3716
- &:is(:where(.group\/tip):hover *) {
3721
+ .group-hover\/brand\:opacity-100 {
3722
+ &:is(:where(.group\/brand):hover *) {
3717
3723
  @media (hover: hover) {
3718
- --tw-translate-x: calc(var(--spacing) * 0);
3719
- translate: var(--tw-translate-x) var(--tw-translate-y);
3724
+ opacity: 100%;
3720
3725
  }
3721
3726
  }
3722
3727
  }
3723
- .group-hover\/tip\:opacity-100 {
3724
- &:is(:where(.group\/tip):hover *) {
3728
+ .group-hover\/exp\:opacity-0 {
3729
+ &:is(:where(.group\/exp):hover *) {
3725
3730
  @media (hover: hover) {
3726
- opacity: 100%;
3731
+ opacity: 0%;
3727
3732
  }
3728
3733
  }
3729
3734
  }
3730
- .group-hover\/tip\:delay-300 {
3731
- &:is(:where(.group\/tip):hover *) {
3735
+ .group-hover\/exp\:opacity-100 {
3736
+ &:is(:where(.group\/exp):hover *) {
3732
3737
  @media (hover: hover) {
3733
- transition-delay: 300ms;
3738
+ opacity: 100%;
3734
3739
  }
3735
3740
  }
3736
3741
  }
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { AgentSessionControls, AgentSessionControlsProps, AgentSessionHarnessCon
9
9
  export { ExpandedToolDetail, ExpandedToolDetailProps, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps } from '@tangle-network/ui/run';
10
10
  export { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from '@tangle-network/ui/tool-previews';
11
11
  export { FileArtifactPane, FileArtifactPaneProps, FileNode, FilePreview, FilePreviewProps, FileTabData, FileTabs, FileTabsProps, FileTree, FileTreeProps, FileTreeVisibilityOptions, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, filterFileTree } from '@tangle-network/ui/files';
12
- export { ActivityFeed, ActivityFeedProps, ActivityItem, Backend, BackendConfig, BackendConfigProps, BackendSelector, BackendSelectorProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, HarnessBrand, HarnessLogo, HarnessLogoProps, HarnessPicker, HarnessPickerProps, 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, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailCollapseToggle, RailCollapseToggleProps, RailFlyout, RailFlyoutProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, RailThemeToggle, RailTooltip, RailTooltipProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, SidebarLayoutFlyoutItem, 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, chatCapableHarnesses, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
+ export { ActivityFeed, ActivityFeedProps, ActivityItem, AppearanceController, Backend, BackendConfig, BackendConfigProps, BackendSelector, BackendSelectorProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, HarnessBrand, HarnessLogo, HarnessLogoProps, HarnessPicker, HarnessPickerProps, 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, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailCollapseToggle, RailCollapseToggleProps, RailExpandable, RailExpandableProps, RailExpandableSubItem, RailFlyout, RailFlyoutProps, RailHeader, RailHeaderProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, RailThemeToggle, RailTooltip, RailTooltipProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, SidebarLayoutFlyoutItem, 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, ThemeMode, UsageSummary, UsageSummaryData, UsageSummaryProps, Variant, VariantList, VariantListProps, VariantOutcome, VariantStatus, canAdminSandbox, chatCapableHarnesses, parseInsufficientBalance, useSidebar } from './dashboard.js';
13
13
  export { D as DEFAULT_FEATURED_MODEL_IDS, M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, e as dedupeModels, f as formatContext, g as formatPricing, m as modelDedupKey } from './model-picker-NOWFpRY4.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';
15
15
  export { E as ExposedPort, P as PortsList, a as PortsListProps } from './ports-list-DfG0VfPt.js';
package/dist/index.js CHANGED
@@ -148,7 +148,7 @@ import {
148
148
  buildUnifiedPatch,
149
149
  computeDiffStats,
150
150
  resolveLanguage
151
- } from "./chunk-MGIOO3RL.js";
151
+ } from "./chunk-DLKDWMFM.js";
152
152
  import {
153
153
  FileArtifactPane,
154
154
  FilePreview,
@@ -179,7 +179,9 @@ import {
179
179
  PromoBanner,
180
180
  RailButton,
181
181
  RailCollapseToggle,
182
+ RailExpandable,
182
183
  RailFlyout,
184
+ RailHeader,
183
185
  RailModeButton,
184
186
  RailSeparator,
185
187
  RailThemeToggle,
@@ -211,7 +213,7 @@ import {
211
213
  canAdminSandbox,
212
214
  parseInsufficientBalance,
213
215
  useSidebar
214
- } from "./chunk-RT4MLYYM.js";
216
+ } from "./chunk-SVNWL3ZR.js";
215
217
  import {
216
218
  BillingDashboard,
217
219
  InfoPanel,
@@ -468,7 +470,9 @@ export {
468
470
  QuestionPreview,
469
471
  RailButton,
470
472
  RailCollapseToggle,
473
+ RailExpandable,
471
474
  RailFlyout,
475
+ RailHeader,
472
476
  RailModeButton,
473
477
  RailSeparator,
474
478
  RailThemeToggle,