@tangle-network/sandbox-ui 0.122.2 → 0.122.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.
package/README.md CHANGED
@@ -40,7 +40,9 @@ import "@tangle-network/sandbox-ui/styles";
40
40
 
41
41
  ### Dashboard page spacing
42
42
 
43
- For apps whose pages already provide their own gutters, pass `contentClassName="px-0 pb-0 lg:px-0"` to `DashboardLayout`. Set `notificationsEnabled={false}` when the app has no notification feed. Add `collapseEmptyTopBar` to reclaim the desktop header space when no top-bar controls remain; the mobile menu stays available. Existing defaults are unchanged.
43
+ For apps whose pages already provide their own gutters, pass `contentClassName="px-0 pb-0 lg:px-0"` to `DashboardLayout`. New Sandbox is at the top of the sidebar; notifications sit above the account menu. Set `notificationsEnabled={false}` when the app has no notification feed. The desktop has no top bar; the mobile menu opens a focus-managed drawer.
44
+
45
+ Use `sidebarLeading={({ collapsed }) => <WorkspaceSwitcher compact={collapsed} />}` for workspace controls; the mobile drawer supplies `collapsed: false`. A static node opens in a Workspace menu on the collapsed rail. `topBarLeading` remains a relocated legacy alias, and `topNavLinks` render as sidebar links. `collapseEmptyTopBar` is retained as a no-op. `DashboardPageHeader` keeps title, description and actions aligned without adding a card.
44
46
 
45
47
  ### Workspace integration access
46
48
 
@@ -1,9 +1,9 @@
1
- import { Wt as Logo, o as Button$1 } from "./primitives-C4qn9fZ8.js";
1
+ import { Wt as Logo, o as Button$1 } from "./primitives-Db_ASpuT.js";
2
2
  import { t as cn$1 } from "./utils-DzWbktWG.js";
3
3
  import { n as MOTION_SURFACE, r as MOTION_TRAVEL, t as MOTION_CONTROL } from "./motion-DkyBRJb9.js";
4
4
  import { i as moonshot_default } from "./model-brand-hMyDTUqB.js";
5
- import "./page-layout-Cf90DTWr.js";
6
- import { Avatar, AvatarFallback, AvatarImage, Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Skeleton, StatCard, useTheme } from "@tangle-network/ui/primitives";
5
+ import "./page-layout-DJV7cbxx.js";
6
+ import { Avatar, AvatarFallback, AvatarImage, Badge, Button, Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Skeleton, StatCard, useTheme } from "@tangle-network/ui/primitives";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import * as React$1 from "react";
9
9
  import { useEffect, useRef, useState } from "react";
@@ -2721,30 +2721,121 @@ function DefaultLink$1({ href, to, className, children, ...rest }) {
2721
2721
  children
2722
2722
  });
2723
2723
  }
2724
- function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeItems = [], panels = [], activeNavId, user, isLoading = false, onLogout, onSettingsClick, settingsHref = "/dashboard/settings", onNewSandbox, className, sidebarClassName, contentClassName, topNavLinks, activeTopNavHref, topBarLeading, LinkComponent = DefaultLink$1, logoHref = "/", labeledRail = false, footer, railFooter, profileMenuItems, appearance, notifications: notifData, notificationsEnabled = true, collapseEmptyTopBar = false }) {
2724
+ /** Notifications use the shared menu's collision handling, keyboard movement and focus return. */
2725
+ function SidebarNotifications({ data, showLabels, mobile }) {
2726
+ const unread = data?.unreadCount ?? 0;
2727
+ const NotificationIcon = ({ className }) => /* @__PURE__ */ jsxs("span", {
2728
+ className: "relative",
2729
+ children: [/* @__PURE__ */ jsx(Bell, {
2730
+ className,
2731
+ "aria-hidden": "true"
2732
+ }), unread > 0 && /* @__PURE__ */ jsx("span", {
2733
+ className: "absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-destructive ring-2 ring-surface-container-low",
2734
+ "aria-hidden": "true"
2735
+ })]
2736
+ });
2737
+ const content = (item) => /* @__PURE__ */ jsxs(Fragment, { children: [
2738
+ /* @__PURE__ */ jsx("p", {
2739
+ className: cn$1("text-sm", item.read ? "text-muted-foreground" : "font-semibold text-foreground"),
2740
+ children: item.title
2741
+ }),
2742
+ /* @__PURE__ */ jsx("p", {
2743
+ className: "mt-1 text-sm text-muted-foreground",
2744
+ children: item.message
2745
+ }),
2746
+ /* @__PURE__ */ jsx("time", {
2747
+ className: "mt-1 block text-xs text-muted-foreground",
2748
+ dateTime: item.createdAt,
2749
+ children: formatNotifDate(item.createdAt)
2750
+ })
2751
+ ] });
2752
+ return /* @__PURE__ */ jsxs(DropdownMenu, {
2753
+ modal: false,
2754
+ children: [/* @__PURE__ */ jsx(RailButton, {
2755
+ icon: NotificationIcon,
2756
+ label: "Notifications",
2757
+ showLabel: showLabels,
2758
+ asChild: true,
2759
+ children: /* @__PURE__ */ jsx(DropdownMenuTrigger, {
2760
+ "aria-label": "Notifications",
2761
+ "aria-description": unread > 0 ? `${unread} unread` : void 0
2762
+ })
2763
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
2764
+ "aria-label": "Notifications",
2765
+ side: mobile ? "top" : "right",
2766
+ align: mobile ? "start" : "end",
2767
+ sideOffset: 12,
2768
+ collisionPadding: 12,
2769
+ className: "w-80 max-w-[calc(100vw-24px)] max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto p-1.5",
2770
+ children: [
2771
+ /* @__PURE__ */ jsx(DropdownMenuLabel, {
2772
+ className: "px-2.5 py-2 text-sm",
2773
+ children: "Notifications"
2774
+ }),
2775
+ unread > 0 && data?.onMarkAllRead && /* @__PURE__ */ jsx(DropdownMenuItem, {
2776
+ onSelect: (event) => {
2777
+ event.preventDefault();
2778
+ data.onMarkAllRead?.();
2779
+ },
2780
+ children: "Mark all read"
2781
+ }),
2782
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
2783
+ !data?.items.length ? /* @__PURE__ */ jsx("p", {
2784
+ className: "px-2.5 py-5 text-sm text-muted-foreground",
2785
+ children: "No notifications yet"
2786
+ }) : data.items.map((item) => !item.read && data.onMarkRead ? /* @__PURE__ */ jsx(DropdownMenuItem, {
2787
+ className: "block whitespace-normal px-2.5 py-3",
2788
+ onSelect: (event) => {
2789
+ event.preventDefault();
2790
+ data.onMarkRead?.(item.id);
2791
+ },
2792
+ children: content(item)
2793
+ }, item.id) : /* @__PURE__ */ jsx("div", {
2794
+ className: "px-2.5 py-3",
2795
+ children: content(item)
2796
+ }, item.id))
2797
+ ]
2798
+ })]
2799
+ });
2800
+ }
2801
+ function SidebarLeading({ content, legacy, collapsed }) {
2802
+ if (typeof content === "function") return content({ collapsed });
2803
+ const node = content ?? legacy;
2804
+ if (!node) return null;
2805
+ if (!collapsed) return node;
2806
+ return /* @__PURE__ */ jsxs(DropdownMenu, {
2807
+ modal: false,
2808
+ children: [/* @__PURE__ */ jsx(RailButton, {
2809
+ icon: Users,
2810
+ label: "Workspace",
2811
+ asChild: true,
2812
+ children: /* @__PURE__ */ jsx(DropdownMenuTrigger, {})
2813
+ }), /* @__PURE__ */ jsx(DropdownMenuContent, {
2814
+ "aria-label": "Workspace",
2815
+ side: "right",
2816
+ align: "start",
2817
+ sideOffset: 12,
2818
+ collisionPadding: 12,
2819
+ className: "w-64 max-w-[calc(100vw-24px)] p-3",
2820
+ children: node
2821
+ })]
2822
+ });
2823
+ }
2824
+ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeItems = [], panels = [], activeNavId, user, isLoading = false, onLogout, onSettingsClick, settingsHref = "/dashboard/settings", onNewSandbox, className, sidebarClassName, contentClassName, topNavLinks, activeTopNavHref, topBarLeading, sidebarLeading, LinkComponent = DefaultLink$1, logoHref = "/", labeledRail = false, footer, railFooter, profileMenuItems, appearance, notifications: notifData, notificationsEnabled = true }) {
2725
2825
  useBrandThemeSync();
2726
2826
  const Link = LinkComponent;
2727
2827
  const [mobileMenuOpen, setMobileMenuOpen] = React$1.useState(false);
2728
- const [notificationsOpen, setNotificationsOpen] = React$1.useState(false);
2729
- const notifRef = React$1.useRef(null);
2730
2828
  React$1.useEffect(() => {
2731
- if (!notificationsOpen) return;
2732
- const handler = (e) => {
2733
- if (notifRef.current && !notifRef.current.contains(e.target)) setNotificationsOpen(false);
2734
- };
2735
- const keyHandler = (e) => {
2736
- if (e.key === "Escape") setNotificationsOpen(false);
2829
+ if (typeof window.matchMedia !== "function") return;
2830
+ const desktop = window.matchMedia("(min-width: 1024px)");
2831
+ const closeOnDesktop = () => {
2832
+ if (desktop.matches) setMobileMenuOpen(false);
2737
2833
  };
2738
- document.addEventListener("mousedown", handler);
2739
- document.addEventListener("keydown", keyHandler);
2740
- return () => {
2741
- document.removeEventListener("mousedown", handler);
2742
- document.removeEventListener("keydown", keyHandler);
2743
- };
2744
- }, [notificationsOpen]);
2745
- const { contentMargin, hidden, mode, hasPanels, panelOpen, toggleRail, railCollapsed } = useSidebar();
2834
+ desktop.addEventListener("change", closeOnDesktop);
2835
+ return () => desktop.removeEventListener("change", closeOnDesktop);
2836
+ }, []);
2837
+ const { mode, hasPanels, panelOpen, toggleRail, railCollapsed } = useSidebar();
2746
2838
  const modeSet = React$1.useMemo(() => new Set(modeItems), [modeItems]);
2747
- const collapseDesktopTopBar = collapseEmptyTopBar && React$1.Children.toArray(topBarLeading).length === 0 && (topNavLinks?.length ?? 0) === 0 && !onNewSandbox && !notificationsEnabled;
2748
2839
  const sidebarUser = React$1.useMemo(() => user ? {
2749
2840
  email: user.email,
2750
2841
  name: user.name,
@@ -2757,7 +2848,7 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2757
2848
  user?.avatarUrl
2758
2849
  ]);
2759
2850
  const activePanel = panels.find((p) => p.mode === mode);
2760
- const buildSidebarContent = React$1.useCallback((showLabels, allowCollapse) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(SidebarRail, {
2851
+ const buildSidebarContent = React$1.useCallback((showLabels, allowCollapse, mobile = false) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(SidebarRail, {
2761
2852
  wide: showLabels,
2762
2853
  children: [
2763
2854
  /* @__PURE__ */ jsx(RailHeader, {
@@ -2772,12 +2863,30 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2772
2863
  collapsible: allowCollapse,
2773
2864
  LinkComponent: Link
2774
2865
  }),
2775
- /* @__PURE__ */ jsx(SidebarRailNav, {
2866
+ (sidebarLeading != null || topBarLeading != null || onNewSandbox) && /* @__PURE__ */ jsxs("div", {
2867
+ className: cn$1("flex shrink-0 flex-col gap-2 pt-3", showLabels ? "px-2" : "items-center px-1"),
2868
+ children: [(sidebarLeading != null || topBarLeading != null) && /* @__PURE__ */ jsx(SidebarLeading, {
2869
+ content: sidebarLeading,
2870
+ legacy: topBarLeading,
2871
+ collapsed: !showLabels
2872
+ }), onNewSandbox && /* @__PURE__ */ jsx(RailButton, {
2873
+ icon: Plus,
2874
+ label: "New Sandbox",
2875
+ variant: "primary",
2876
+ showLabel: showLabels,
2877
+ className: "min-h-11",
2878
+ onClick: () => {
2879
+ if (mobile) setMobileMenuOpen(false);
2880
+ onNewSandbox();
2881
+ }
2882
+ })]
2883
+ }),
2884
+ /* @__PURE__ */ jsxs(SidebarRailNav, {
2776
2885
  className: cn$1(showLabels ? "px-2" : void 0, !showLabels && allowCollapse && "cursor-pointer"),
2777
2886
  onClick: !showLabels && allowCollapse ? (e) => {
2778
2887
  if (e.target === e.currentTarget) toggleRail();
2779
2888
  } : void 0,
2780
- children: navItems.map((item, i) => {
2889
+ children: [navItems.map((item, i) => {
2781
2890
  const isMode = modeSet.has(item.id);
2782
2891
  const prevIsMode = i > 0 && modeSet.has(navItems[i - 1].id);
2783
2892
  const showSep = i > 0 && isMode && !prevIsMode;
@@ -2804,19 +2913,39 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2804
2913
  to: item.href
2805
2914
  })
2806
2915
  })] }, item.id);
2807
- })
2916
+ }), topNavLinks?.map((link) => /* @__PURE__ */ jsx(RailButton, {
2917
+ icon: ExternalLink,
2918
+ label: link.label,
2919
+ isActive: activeTopNavHref === link.href,
2920
+ showLabel: showLabels,
2921
+ asChild: true,
2922
+ children: /* @__PURE__ */ jsx(Link, {
2923
+ href: link.href,
2924
+ to: link.href
2925
+ })
2926
+ }, link.href))]
2808
2927
  }),
2809
- /* @__PURE__ */ jsx(SidebarRailFooter, {
2928
+ /* @__PURE__ */ jsxs(SidebarRailFooter, {
2810
2929
  className: cn$1("border-t border-[var(--md3-outline-variant)] pt-2", showLabels && "items-stretch px-2"),
2811
- children: railFooter !== void 0 ? showLabels ? /* @__PURE__ */ jsxs("div", {
2930
+ children: [notificationsEnabled && /* @__PURE__ */ jsx(SidebarNotifications, {
2931
+ data: notifData,
2932
+ showLabels,
2933
+ mobile
2934
+ }), railFooter !== void 0 ? showLabels ? /* @__PURE__ */ jsxs("div", {
2812
2935
  className: "flex w-full items-center gap-1",
2813
2936
  children: [/* @__PURE__ */ jsx("div", {
2814
2937
  className: "min-w-0 flex-1",
2815
2938
  children: /* @__PURE__ */ jsx(ProfileAvatar, {
2816
2939
  user: sidebarUser,
2817
2940
  isLoading,
2818
- onLogout,
2819
- onSettingsClick,
2941
+ onLogout: onLogout ? () => {
2942
+ if (mobile) setMobileMenuOpen(false);
2943
+ onLogout();
2944
+ } : void 0,
2945
+ onSettingsClick: onSettingsClick ? () => {
2946
+ if (mobile) setMobileMenuOpen(false);
2947
+ onSettingsClick();
2948
+ } : void 0,
2820
2949
  settingsHref,
2821
2950
  showDetails: showLabels,
2822
2951
  appearance,
@@ -2832,8 +2961,14 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2832
2961
  children: [railFooter, /* @__PURE__ */ jsx(ProfileAvatar, {
2833
2962
  user: sidebarUser,
2834
2963
  isLoading,
2835
- onLogout,
2836
- onSettingsClick,
2964
+ onLogout: onLogout ? () => {
2965
+ if (mobile) setMobileMenuOpen(false);
2966
+ onLogout();
2967
+ } : void 0,
2968
+ onSettingsClick: onSettingsClick ? () => {
2969
+ if (mobile) setMobileMenuOpen(false);
2970
+ onSettingsClick();
2971
+ } : void 0,
2837
2972
  settingsHref,
2838
2973
  showDetails: showLabels,
2839
2974
  appearance,
@@ -2843,18 +2978,31 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2843
2978
  }) : /* @__PURE__ */ jsx(ProfileAvatar, {
2844
2979
  user: sidebarUser,
2845
2980
  isLoading,
2846
- onLogout,
2847
- onSettingsClick,
2981
+ onLogout: onLogout ? () => {
2982
+ if (mobile) setMobileMenuOpen(false);
2983
+ onLogout();
2984
+ } : void 0,
2985
+ onSettingsClick: onSettingsClick ? () => {
2986
+ if (mobile) setMobileMenuOpen(false);
2987
+ onSettingsClick();
2988
+ } : void 0,
2848
2989
  settingsHref,
2849
2990
  showDetails: showLabels,
2850
2991
  appearance,
2851
2992
  LinkComponent,
2852
2993
  children: profileMenuItems
2853
- })
2994
+ })]
2854
2995
  })
2855
2996
  ]
2856
2997
  }), panels.length > 0 && /* @__PURE__ */ jsxs(SidebarPanel, { children: [/* @__PURE__ */ jsx(SidebarPanelHeader, { title: activePanel?.title ?? mode }), /* @__PURE__ */ jsx(SidebarPanelContent, { children: activePanel?.content })] })] }), [
2857
2998
  Link,
2999
+ onNewSandbox,
3000
+ sidebarLeading,
3001
+ topBarLeading,
3002
+ topNavLinks,
3003
+ activeTopNavHref,
3004
+ notificationsEnabled,
3005
+ notifData,
2858
3006
  variant,
2859
3007
  logoHref,
2860
3008
  labeledRail,
@@ -2881,137 +3029,63 @@ function DashboardLayoutInner({ children, variant = "sandbox", navItems, modeIte
2881
3029
  labeledRail,
2882
3030
  railCollapsed
2883
3031
  ]);
2884
- const mobileSidebarContent = React$1.useMemo(() => buildSidebarContent(true, false), [buildSidebarContent]);
3032
+ const mobileSidebarContent = React$1.useMemo(() => buildSidebarContent(true, false, true), [buildSidebarContent]);
2885
3033
  return /* @__PURE__ */ jsxs("div", {
2886
3034
  className: cn$1("min-h-screen bg-surface text-foreground", className),
2887
3035
  children: [
2888
- /* @__PURE__ */ jsxs("nav", {
2889
- className: cn$1("fixed top-0 left-0 right-0 lg:left-[var(--sb-content-margin)] z-50 bg-surface-container-low border-b border-[var(--md3-outline-variant)] flex justify-between items-center px-8 h-14 font-sans text-[13px] tracking-tight transition-[left,width]", MOTION_TRAVEL, collapseDesktopTopBar && "lg:hidden"),
2890
- style: { "--sb-content-margin": `${hidden ? 0 : contentMargin}px` },
2891
- children: [
2892
- /* @__PURE__ */ jsxs("div", {
2893
- className: "flex items-center gap-8",
2894
- children: [
2895
- /* @__PURE__ */ jsx(Link, {
2896
- href: logoHref,
2897
- to: logoHref,
2898
- className: cn$1("lg:hidden flex items-center p-1 rounded-md hover:bg-surface-container-high transition-colors", MOTION_CONTROL),
2899
- children: /* @__PURE__ */ jsx(Logo, {
2900
- variant,
2901
- size: "sm",
2902
- iconOnly: true
2903
- })
2904
- }),
2905
- topBarLeading,
2906
- topNavLinks && topNavLinks.length > 0 && /* @__PURE__ */ jsx("div", {
2907
- className: "hidden md:flex gap-6",
2908
- children: topNavLinks.map((link) => /* @__PURE__ */ jsx(Link, {
2909
- href: link.href,
2910
- to: link.href,
2911
- className: cn$1("transition-all px-2 py-1 rounded", "duration-[var(--duration-fast)] ease-[var(--ease-standard)]", activeTopNavHref === link.href ? "text-foreground border-b-2 border-primary pb-1" : "text-muted-foreground hover:text-foreground hover:bg-surface-container-high"),
2912
- children: link.label
2913
- }, link.href))
2914
- })
2915
- ]
2916
- }),
2917
- /* @__PURE__ */ jsxs("div", {
2918
- className: "flex items-center gap-4",
2919
- children: [onNewSandbox && /* @__PURE__ */ jsxs("button", {
3036
+ /* @__PURE__ */ jsxs(Dialog, {
3037
+ open: mobileMenuOpen,
3038
+ onOpenChange: setMobileMenuOpen,
3039
+ children: [/* @__PURE__ */ jsxs("nav", {
3040
+ "aria-label": "Mobile navigation",
3041
+ className: "fixed inset-x-0 top-0 z-40 flex h-12 items-center justify-between border-b border-[var(--md3-outline-variant)] bg-surface-container-low px-4 lg:hidden",
3042
+ children: [/* @__PURE__ */ jsx(Link, {
3043
+ href: logoHref,
3044
+ to: logoHref,
3045
+ "aria-label": "Home",
3046
+ className: cn$1("rounded-md p-1", focusRing),
3047
+ children: /* @__PURE__ */ jsx(Logo, {
3048
+ variant,
3049
+ size: "sm",
3050
+ iconOnly: true
3051
+ })
3052
+ }), /* @__PURE__ */ jsx(DialogTrigger, {
3053
+ asChild: true,
3054
+ children: /* @__PURE__ */ jsx("button", {
2920
3055
  type: "button",
2921
- onClick: onNewSandbox,
2922
- className: cn$1("hidden md:flex items-center gap-2 bg-[var(--btn-primary-bg)] border border-[var(--border-accent)] text-[var(--btn-primary-text)] px-4 py-2 rounded-lg font-bold hover:bg-[var(--btn-primary-hover)] transition-all active:scale-95 text-xs", "duration-[var(--duration-fast)] ease-[var(--ease-standard)]"),
2923
- children: [/* @__PURE__ */ jsx(Plus, { className: "h-3.5 w-3.5" }), "New Sandbox"]
2924
- }), notificationsEnabled && /* @__PURE__ */ jsxs("div", {
2925
- className: "relative",
2926
- ref: notifRef,
2927
- children: [/* @__PURE__ */ jsxs("button", {
2928
- type: "button",
2929
- className: cn$1("relative text-muted-foreground hover:text-foreground transition-colors p-2 rounded-lg hover:bg-surface-container-high", "duration-[var(--duration-fast)] ease-[var(--ease-standard)]"),
2930
- onClick: () => setNotificationsOpen(!notificationsOpen),
2931
- "aria-label": "Notifications",
2932
- "aria-expanded": notificationsOpen,
2933
- children: [/* @__PURE__ */ jsx(Bell, { className: "h-4 w-4" }), (notifData?.unreadCount ?? 0) > 0 && /* @__PURE__ */ jsx("span", { className: "absolute top-1 right-1 h-2 w-2 rounded-full bg-destructive" })]
2934
- }), notificationsOpen && /* @__PURE__ */ jsxs("div", {
2935
- className: "absolute right-0 top-full mt-2 w-80 rounded-lg border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14] z-50",
2936
- children: [/* @__PURE__ */ jsxs("div", {
2937
- className: "flex items-center justify-between border-b border-[var(--md3-outline-variant)] px-4 py-3",
2938
- children: [/* @__PURE__ */ jsx("p", {
2939
- className: "font-bold text-foreground text-sm",
2940
- children: "Notifications"
2941
- }), (notifData?.unreadCount ?? 0) > 0 && notifData?.onMarkAllRead && /* @__PURE__ */ jsx("button", {
2942
- type: "button",
2943
- onClick: () => {
2944
- notifData.onMarkAllRead?.();
2945
- },
2946
- className: "text-primary text-xs font-medium hover:underline",
2947
- children: "Mark all read"
2948
- })]
2949
- }), !notifData?.items || notifData.items.length === 0 ? /* @__PURE__ */ jsxs("div", {
2950
- className: "flex flex-col items-center justify-center px-4 py-8 text-center",
2951
- children: [
2952
- /* @__PURE__ */ jsx(Bell, { className: "h-8 w-8 text-muted-foreground/40 mb-2" }),
2953
- /* @__PURE__ */ jsx("p", {
2954
- className: "text-muted-foreground text-sm",
2955
- children: "No notifications yet"
2956
- }),
2957
- /* @__PURE__ */ jsx("p", {
2958
- className: "text-muted-foreground/60 text-xs mt-1",
2959
- children: "We'll notify you about important updates"
2960
- })
2961
- ]
2962
- }) : /* @__PURE__ */ jsx("div", {
2963
- className: "max-h-80 overflow-y-auto",
2964
- children: notifData.items.map((n) => /* @__PURE__ */ jsxs("button", {
2965
- type: "button",
2966
- className: cn$1("w-full text-left px-4 py-3 border-b border-[var(--md3-outline-variant)] last:border-0 transition-colors", "duration-[var(--duration-fast)] ease-[var(--ease-standard)]", n.read ? "cursor-default" : "bg-primary/5 hover:bg-white/5"),
2967
- onClick: () => {
2968
- if (!n.read) notifData.onMarkRead?.(n.id);
2969
- },
2970
- children: [
2971
- /* @__PURE__ */ jsx("p", {
2972
- className: cn$1("text-sm", !n.read ? "font-semibold text-foreground" : "text-muted-foreground"),
2973
- children: n.title
2974
- }),
2975
- /* @__PURE__ */ jsx("p", {
2976
- className: "text-xs text-muted-foreground mt-0.5 line-clamp-2",
2977
- children: n.message
2978
- }),
2979
- /* @__PURE__ */ jsx("p", {
2980
- className: "text-[10px] text-muted-foreground/50 mt-1",
2981
- children: formatNotifDate(n.createdAt)
2982
- })
2983
- ]
2984
- }, n.id))
2985
- })]
2986
- })]
2987
- })]
2988
- }),
2989
- /* @__PURE__ */ jsx("button", {
2990
- type: "button",
2991
- onClick: () => setMobileMenuOpen(!mobileMenuOpen),
2992
- className: "rounded-md p-2 hover:bg-surface-container-high lg:hidden",
2993
- "aria-label": mobileMenuOpen ? "Close menu" : "Open menu",
2994
- "aria-expanded": mobileMenuOpen,
2995
- children: mobileMenuOpen ? /* @__PURE__ */ jsx(XIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ jsx(MenuIcon$1, { className: "h-6 w-6" })
2996
- })
2997
- ]
2998
- }),
2999
- mobileMenuOpen && /* @__PURE__ */ jsx("div", {
3000
- className: "fixed inset-0 z-30 bg-black/50 lg:hidden",
3001
- onClick: () => setMobileMenuOpen(false),
3002
- "aria-hidden": "true"
3003
- }),
3004
- /* @__PURE__ */ jsx("aside", {
3005
- className: cn$1("fixed top-14 bottom-0 left-0 z-30 flex bg-surface-container-low transition-transform lg:hidden", MOTION_TRAVEL, mobileMenuOpen ? "translate-x-0" : "-translate-x-full"),
3006
- style: { width: panelOpen && hasPanels ? 524 : 256 },
3007
- children: mobileSidebarContent
3056
+ "aria-label": "Open menu",
3057
+ className: cn$1("flex h-10 w-10 items-center justify-center rounded-md hover:bg-surface-container-high", focusRing),
3058
+ children: /* @__PURE__ */ jsx(MenuIcon$1, { className: "h-5 w-5" })
3059
+ })
3060
+ })]
3061
+ }), /* @__PURE__ */ jsxs(DialogContent, {
3062
+ "aria-describedby": void 0,
3063
+ hideCloseButton: true,
3064
+ className: "inset-y-0 left-0 flex h-dvh max-w-[calc(100vw-24px)] translate-x-0 translate-y-0 gap-0 rounded-none border-y-0 border-l-0 bg-surface-container-low p-0 lg:hidden",
3065
+ style: { width: panelOpen && hasPanels ? 524 : 256 },
3066
+ onClick: (event) => {
3067
+ if (event.target.closest("a[href]")) setMobileMenuOpen(false);
3068
+ },
3069
+ children: [
3070
+ /* @__PURE__ */ jsx(DialogTitle, {
3071
+ className: "sr-only",
3072
+ children: "Navigation"
3073
+ }),
3074
+ /* @__PURE__ */ jsx(DialogClose, {
3075
+ "aria-label": "Close menu",
3076
+ className: cn$1("absolute right-2 top-2 z-10 flex h-10 w-10 items-center justify-center rounded-md hover:bg-surface-container-high", focusRing),
3077
+ children: /* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5" })
3078
+ }),
3079
+ mobileSidebarContent
3080
+ ]
3081
+ })]
3008
3082
  }),
3009
3083
  /* @__PURE__ */ jsx(Sidebar, {
3010
3084
  className: cn$1("hidden lg:flex", sidebarClassName),
3011
3085
  children: sidebarContent
3012
3086
  }),
3013
3087
  /* @__PURE__ */ jsx(SidebarContent, {
3014
- className: cn$1("pt-16 px-6 pb-8 lg:px-8 bg-surface", collapseDesktopTopBar && "lg:pt-0", contentClassName),
3088
+ className: cn$1("pt-12 px-6 pb-8 lg:px-8 lg:pt-0 bg-surface", contentClassName),
3015
3089
  children
3016
3090
  }),
3017
3091
  footer
@@ -1,4 +1,4 @@
1
- import { $ as DashboardLayoutProps, $t as SIDEBAR_RAIL_WIDTH, A as UsageSummaryData, An as SidebarPanelContentProps, At as TeamRole, B as MetricAreaChartProps, Bn as SidebarRailNav, Bt as ClusterStatusBar, C as PortsList, Cn as RailSeparatorProps, Ct as SandboxTableProps, D as GitPanelProps, Dn as SidebarContentProps, Dt as SandboxCardData, E as GitPanel, En as SidebarContent, Et as SandboxCard, F as VariantList, Fn as SidebarRail, Ft as ResourceSnapshot, G as ProfileComparisonProps, Gt as OutOfCreditsModal, H as MetricChartTone, Hn as SidebarRailProps, Ht as ClusterStatusItem, I as VariantListProps, In as SidebarRailFooter, It as ResourceSnapshotItem, J as SidebarLayout, Jt as CreditBalance, K as ProfileSelector, Kt as OutOfCreditsModalProps, L as VariantOutcome, Ln as SidebarRailFooterProps, Lt as ResourceSnapshotProps, M as SystemLogsViewer, Mn as SidebarPanelHeaderProps, Mt as ActivityFeed, N as SystemLogsViewerProps, Nn as SidebarPanelProps, Nt as ActivityFeedProps, O as GitStatusData, On as SidebarPanel, Ot as SandboxCardProps, P as Variant, Pn as SidebarProps, Pt as ActivityItem, Q as DashboardLayout, Qt as SIDEBAR_RAIL_LABELED_WIDTH, R as VariantStatus, Rn as SidebarRailHeader, Rt as ResourceMeter, S as ExposedPort, Sn as RailSeparator, St as SandboxTable, T as GitCommitData, Tn as Sidebar, Tt as NewSandboxCardProps, U as Profile, Un as SidebarUser, Ut as INSUFFICIENT_BALANCE_CODE, V as MetricChartPoint, Vn as SidebarRailNavProps, Vt as ClusterStatusBarProps, W as ProfileComparison, Wn as ThemeMode, Wt as InsufficientBalance, X as SidebarLayoutNavItem, Xt as SIDEBAR_MOBILE_WIDTH, Y as SidebarLayoutFlyoutItem, Yt as CreditBalanceProps, Z as SidebarLayoutProps, Zt as SIDEBAR_PANEL_WIDTH, _ as NetworkConfigData, _n as RailFlyoutProps, _t as PlanCardsProps, a as InfoPanel, an as RailTooltipProps, at as HarnessLogo, b as ProcessList, bn as RailModeButton, bt as InvoiceTable, c as PromoBannerProps, cn as ProfileAvatarProps, ct as HarnessPicker, d as SnapshotListProps, dn as RailCollapseToggle, dt as chatCapableHarnesses, en as SIDEBAR_TOTAL_WIDTH, et as DashboardUser, f as BackendConfig, fn as RailCollapseToggleProps, ft as Backend, g as NetworkConfig, gn as RailFlyout, gt as PlanCards, h as McpServer, hn as RailExpandableSubItem, ht as PlanCardData, i as SandboxPageShellProps, in as RailTooltip, it as HarnessBrand, j as UsageSummaryProps, jn as SidebarPanelHeader, jt as canAdminSandbox, k as UsageSummary, kn as SidebarPanelContent, kt as SandboxStatus, l as SnapshotInfo, ln as RailButton, lt as HarnessPickerProps, m as BackendStatusData, mn as RailExpandableProps, mt as BackendSelectorProps, n as DashboardPageHeaderProps, nn as SidebarProviderProps, nt as ProductVariant, o as InfoPanelProps, on as AppearanceController, ot as HarnessLogoProps, p as BackendConfigProps, pn as RailExpandable, pt as BackendSelector, q as ProfileSelectorProps, qt as parseInsufficientBalance, r as SandboxPageShell, rn as useSidebar, rt as HARNESS_BRAND, s as PromoBanner, sn as ProfileAvatar, st as HARNESS_OPTIONS, t as DashboardPageHeader, tn as SidebarProvider, tt as NavItem, u as SnapshotList, un as RailButtonProps, ut as HarnessType, v as NetworkConfigProps, vn as RailHeader, vt as PlanFeature, w as PortsListProps, wn as RailThemeToggle, wt as NewSandboxCard, x as ProcessListProps, xn as RailModeButtonProps, xt as InvoiceTableProps, y as ProcessInfo, yn as RailHeaderProps, yt as Invoice, z as MetricAreaChart, zn as SidebarRailHeaderProps, zt as ResourceMeterProps } from "./index-CZ2ErGhV.js";
1
+ import { $ as DashboardLayoutProps, $t as SIDEBAR_RAIL_WIDTH, A as UsageSummaryData, An as SidebarPanelContentProps, At as TeamRole, B as MetricAreaChartProps, Bn as SidebarRailNav, Bt as ClusterStatusBar, C as PortsList, Cn as RailSeparatorProps, Ct as SandboxTableProps, D as GitPanelProps, Dn as SidebarContentProps, Dt as SandboxCardData, E as GitPanel, En as SidebarContent, Et as SandboxCard, F as VariantList, Fn as SidebarRail, Ft as ResourceSnapshot, G as ProfileComparisonProps, Gt as OutOfCreditsModal, H as MetricChartTone, Hn as SidebarRailProps, Ht as ClusterStatusItem, I as VariantListProps, In as SidebarRailFooter, It as ResourceSnapshotItem, J as SidebarLayout, Jt as CreditBalance, K as ProfileSelector, Kt as OutOfCreditsModalProps, L as VariantOutcome, Ln as SidebarRailFooterProps, Lt as ResourceSnapshotProps, M as SystemLogsViewer, Mn as SidebarPanelHeaderProps, Mt as ActivityFeed, N as SystemLogsViewerProps, Nn as SidebarPanelProps, Nt as ActivityFeedProps, O as GitStatusData, On as SidebarPanel, Ot as SandboxCardProps, P as Variant, Pn as SidebarProps, Pt as ActivityItem, Q as DashboardLayout, Qt as SIDEBAR_RAIL_LABELED_WIDTH, R as VariantStatus, Rn as SidebarRailHeader, Rt as ResourceMeter, S as ExposedPort, Sn as RailSeparator, St as SandboxTable, T as GitCommitData, Tn as Sidebar, Tt as NewSandboxCardProps, U as Profile, Un as SidebarUser, Ut as INSUFFICIENT_BALANCE_CODE, V as MetricChartPoint, Vn as SidebarRailNavProps, Vt as ClusterStatusBarProps, W as ProfileComparison, Wn as ThemeMode, Wt as InsufficientBalance, X as SidebarLayoutNavItem, Xt as SIDEBAR_MOBILE_WIDTH, Y as SidebarLayoutFlyoutItem, Yt as CreditBalanceProps, Z as SidebarLayoutProps, Zt as SIDEBAR_PANEL_WIDTH, _ as NetworkConfigData, _n as RailFlyoutProps, _t as PlanCardsProps, a as InfoPanel, an as RailTooltipProps, at as HarnessLogo, b as ProcessList, bn as RailModeButton, bt as InvoiceTable, c as PromoBannerProps, cn as ProfileAvatarProps, ct as HarnessPicker, d as SnapshotListProps, dn as RailCollapseToggle, dt as chatCapableHarnesses, en as SIDEBAR_TOTAL_WIDTH, et as DashboardUser, f as BackendConfig, fn as RailCollapseToggleProps, ft as Backend, g as NetworkConfig, gn as RailFlyout, gt as PlanCards, h as McpServer, hn as RailExpandableSubItem, ht as PlanCardData, i as SandboxPageShellProps, in as RailTooltip, it as HarnessBrand, j as UsageSummaryProps, jn as SidebarPanelHeader, jt as canAdminSandbox, k as UsageSummary, kn as SidebarPanelContent, kt as SandboxStatus, l as SnapshotInfo, ln as RailButton, lt as HarnessPickerProps, m as BackendStatusData, mn as RailExpandableProps, mt as BackendSelectorProps, n as DashboardPageHeaderProps, nn as SidebarProviderProps, nt as ProductVariant, o as InfoPanelProps, on as AppearanceController, ot as HarnessLogoProps, p as BackendConfigProps, pn as RailExpandable, pt as BackendSelector, q as ProfileSelectorProps, qt as parseInsufficientBalance, r as SandboxPageShell, rn as useSidebar, rt as HARNESS_BRAND, s as PromoBanner, sn as ProfileAvatar, st as HARNESS_OPTIONS, t as DashboardPageHeader, tn as SidebarProvider, tt as NavItem, u as SnapshotList, un as RailButtonProps, ut as HarnessType, v as NetworkConfigProps, vn as RailHeader, vt as PlanFeature, w as PortsListProps, wn as RailThemeToggle, wt as NewSandboxCard, x as ProcessListProps, xn as RailModeButtonProps, xt as InvoiceTableProps, y as ProcessInfo, yn as RailHeaderProps, yt as Invoice, z as MetricAreaChart, zn as SidebarRailHeaderProps, zt as ResourceMeterProps } from "./index-B_70pkX2.js";
2
2
  import { a as modelBrandFor, i as canonicalModelId, n as ModelBrandStack, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B9A4H9pJ.js";
3
3
  import { a as UsageChartProps, c as PricingPageProps, d as BillingBalance, f as BillingDashboard, h as BillingUsage, i as UsageChart, l as PricingTier, m as BillingSubscription, n as TemplateCardData, o as UsageDataPoint, p as BillingDashboardProps, r as TemplateCardProps, s as PricingPage, t as TemplateCard, u as formatPrice } from "./template-card-L-4gmjx2.js";
4
4
  export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AppearanceController, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, DashboardPageHeader, type DashboardPageHeaderProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, type HarnessType, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type ModelBrandIdentity, ModelBrandStack, type ModelInfo, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, PricingPage, type PricingPageProps, type PricingTier, 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, SandboxPageShell, type SandboxPageShellProps, 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, TemplateCard, type TemplateCardData, type TemplateCardProps, type ThemeMode, UsageChart, type UsageChartProps, type UsageDataPoint, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, useSidebar };
package/dist/dashboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SidebarRailHeader, A as ResourceSnapshot, B as RailExpandable, C as PlanCards, D as SandboxCard, E as NewSandboxCard, F as parseInsufficientBalance, G as RailThemeToggle, H as RailHeader, I as CreditBalance, J as SidebarPanel, K as Sidebar, L as ProfileAvatar, M as ClusterStatusBar, N as INSUFFICIENT_BALANCE_CODE, O as canAdminSandbox, P as OutOfCreditsModal, Q as SidebarRailFooter, R as RailButton, S as BackendSelector, T as SandboxTable, U as RailModeButton, V as RailFlyout, W as RailSeparator, X as SidebarPanelHeader, Y as SidebarPanelContent, Z as SidebarRail, _ as HARNESS_OPTIONS, a as NetworkConfig, at as SIDEBAR_RAIL_WIDTH, b as HARNESS_BRAND, c as GitPanel, ct as useSidebar, d as VariantList, et as SidebarRailNav, f as MetricAreaChart, g as DashboardLayout, h as SidebarLayout, i as BackendConfig, it as SIDEBAR_RAIL_LABELED_WIDTH, j as ResourceMeter, k as ActivityFeed, l as UsageSummary, m as ProfileSelector, n as PromoBanner, nt as SIDEBAR_MOBILE_WIDTH, o as ProcessList, ot as SIDEBAR_TOTAL_WIDTH, p as ProfileComparison, q as SidebarContent, r as SnapshotList, rt as SIDEBAR_PANEL_WIDTH, s as PortsList, st as SidebarProvider, t as InfoPanel, tt as RailTooltip, u as SystemLogsViewer, v as HarnessPicker, w as InvoiceTable, x as HarnessLogo, y as chatCapableHarnesses, z as RailCollapseToggle } from "./dashboard-BpEeXRo1.js";
1
+ import { $ as SidebarRailHeader, A as ResourceSnapshot, B as RailExpandable, C as PlanCards, D as SandboxCard, E as NewSandboxCard, F as parseInsufficientBalance, G as RailThemeToggle, H as RailHeader, I as CreditBalance, J as SidebarPanel, K as Sidebar, L as ProfileAvatar, M as ClusterStatusBar, N as INSUFFICIENT_BALANCE_CODE, O as canAdminSandbox, P as OutOfCreditsModal, Q as SidebarRailFooter, R as RailButton, S as BackendSelector, T as SandboxTable, U as RailModeButton, V as RailFlyout, W as RailSeparator, X as SidebarPanelHeader, Y as SidebarPanelContent, Z as SidebarRail, _ as HARNESS_OPTIONS, a as NetworkConfig, at as SIDEBAR_RAIL_WIDTH, b as HARNESS_BRAND, c as GitPanel, ct as useSidebar, d as VariantList, et as SidebarRailNav, f as MetricAreaChart, g as DashboardLayout, h as SidebarLayout, i as BackendConfig, it as SIDEBAR_RAIL_LABELED_WIDTH, j as ResourceMeter, k as ActivityFeed, l as UsageSummary, m as ProfileSelector, n as PromoBanner, nt as SIDEBAR_MOBILE_WIDTH, o as ProcessList, ot as SIDEBAR_TOTAL_WIDTH, p as ProfileComparison, q as SidebarContent, r as SnapshotList, rt as SIDEBAR_PANEL_WIDTH, s as PortsList, st as SidebarProvider, t as InfoPanel, tt as RailTooltip, u as SystemLogsViewer, v as HarnessPicker, w as InvoiceTable, x as HarnessLogo, y as chatCapableHarnesses, z as RailCollapseToggle } from "./dashboard-C2VXLIQC.js";
2
2
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
3
- import { a as PricingPage, i as UsageChart, n as SandboxPageShell, o as formatPrice, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-Cf90DTWr.js";
3
+ import { a as PricingPage, i as UsageChart, n as SandboxPageShell, o as formatPrice, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-DJV7cbxx.js";
4
4
  export { ActivityFeed, BackendConfig, BackendSelector, BillingDashboard, ClusterStatusBar, CreditBalance, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, InfoPanel, InvoiceTable, MetricAreaChart, ModelBrandStack, NetworkConfig, NewSandboxCard, OutOfCreditsModal, PlanCards, PortsList, PricingPage, ProcessList, ProfileAvatar, ProfileComparison, ProfileSelector, PromoBanner, RailButton, RailCollapseToggle, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailThemeToggle, RailTooltip, ResourceMeter, ResourceSnapshot, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailHeader, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, VariantList, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, useSidebar };
package/dist/globals.css CHANGED
@@ -300,6 +300,9 @@
300
300
  .inset-y-0 {
301
301
  inset-block: 0px;
302
302
  }
303
+ .-top-0\.5 {
304
+ top: calc(var(--spacing) * -0.5);
305
+ }
303
306
  .-top-1 {
304
307
  top: calc(var(--spacing) * -1);
305
308
  }
@@ -339,15 +342,9 @@
339
342
  .top-4 {
340
343
  top: calc(var(--spacing) * 4);
341
344
  }
342
- .top-14 {
343
- top: calc(var(--spacing) * 14);
344
- }
345
345
  .top-\[50\%\] {
346
346
  top: 50%;
347
347
  }
348
- .top-full {
349
- top: 100%;
350
- }
351
348
  .-right-0\.5 {
352
349
  right: calc(var(--spacing) * -0.5);
353
350
  }
@@ -441,9 +438,6 @@
441
438
  .z-20 {
442
439
  z-index: 20;
443
440
  }
444
- .z-30 {
445
- z-index: 30;
446
- }
447
441
  .z-40 {
448
442
  z-index: 40;
449
443
  }
@@ -930,6 +924,9 @@
930
924
  .h-auto {
931
925
  height: auto;
932
926
  }
927
+ .h-dvh {
928
+ height: 100dvh;
929
+ }
933
930
  .h-full {
934
931
  height: 100%;
935
932
  }
@@ -1464,6 +1461,9 @@
1464
1461
  .max-w-\[calc\(100vw-5rem\)\] {
1465
1462
  max-width: calc(100vw - 5rem);
1466
1463
  }
1464
+ .max-w-\[calc\(100vw-24px\)\] {
1465
+ max-width: calc(100vw - 24px);
1466
+ }
1467
1467
  .max-w-\[min\(640px\,calc\(100vw-2rem\)\)\] {
1468
1468
  max-width: min(640px, calc(100vw - 2rem));
1469
1469
  }
@@ -1629,6 +1629,10 @@
1629
1629
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1630
1630
  translate: var(--tw-translate-x) var(--tw-translate-y);
1631
1631
  }
1632
+ .translate-y-0 {
1633
+ --tw-translate-y: 0px;
1634
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1635
+ }
1632
1636
  .translate-y-\[-50\%\] {
1633
1637
  --tw-translate-y: -50%;
1634
1638
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1778,6 +1782,9 @@
1778
1782
  .justify-start {
1779
1783
  justify-content: flex-start;
1780
1784
  }
1785
+ .gap-0 {
1786
+ gap: 0px;
1787
+ }
1781
1788
  .gap-0\.5 {
1782
1789
  gap: calc(var(--spacing) * 0.5);
1783
1790
  }
@@ -2071,6 +2078,10 @@
2071
2078
  border-style: var(--tw-border-style);
2072
2079
  border-width: 2px;
2073
2080
  }
2081
+ .border-y-0 {
2082
+ border-block-style: var(--tw-border-style);
2083
+ border-block-width: 0px;
2084
+ }
2074
2085
  .border-t {
2075
2086
  border-top-style: var(--tw-border-style);
2076
2087
  border-top-width: 1px;
@@ -3018,9 +3029,6 @@
3018
3029
  .pt-12 {
3019
3030
  padding-top: calc(var(--spacing) * 12);
3020
3031
  }
3021
- .pt-16 {
3022
- padding-top: calc(var(--spacing) * 16);
3023
- }
3024
3032
  .pr-1 {
3025
3033
  padding-right: var(--spacing);
3026
3034
  }
@@ -3834,6 +3842,9 @@
3834
3842
  --tw-ring-color: color-mix(in oklab, hsl(var(--primary)) 25%, transparent);
3835
3843
  }
3836
3844
  }
3845
+ .ring-surface-container-low {
3846
+ --tw-ring-color: var(--md3-surface-container-low);
3847
+ }
3837
3848
  .outline-hidden {
3838
3849
  --tw-outline-style: none;
3839
3850
  outline-style: none;
@@ -3898,11 +3909,6 @@
3898
3909
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3899
3910
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3900
3911
  }
3901
- .transition-\[left\,width\] {
3902
- transition-property: left,width;
3903
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3904
- transition-duration: var(--tw-duration, var(--default-transition-duration));
3905
- }
3906
3912
  .transition-\[margin-left\] {
3907
3913
  transition-property: margin-left;
3908
3914
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -4113,10 +4119,6 @@
4113
4119
  content: var(--tw-content);
4114
4120
  background-color: hsl(var(--primary));
4115
4121
  }
4116
- .last\:border-0:last-child {
4117
- border-style: var(--tw-border-style);
4118
- border-width: 0px;
4119
- }
4120
4122
  .last\:border-b-0:last-child {
4121
4123
  border-bottom-style: var(--tw-border-style);
4122
4124
  border-bottom-width: 0px;
@@ -4432,14 +4434,6 @@
4432
4434
  .hover\:bg-surface-container-highest:hover {
4433
4435
  background-color: var(--md3-surface-container-highest);
4434
4436
  }
4435
- .hover\:bg-white\/5:hover {
4436
- background-color: color-mix(in srgb, #fff 5%, transparent);
4437
- }
4438
- @supports (color: color-mix(in lab, red, red)) {
4439
- .hover\:bg-white\/5:hover {
4440
- background-color: color-mix(in oklab, var(--color-white) 5%, transparent);
4441
- }
4442
- }
4443
4437
  .hover\:bg-yellow-600\/30:hover {
4444
4438
  background-color: color-mix(in srgb, oklch(68.1% 0.162 75.834) 30%, transparent);
4445
4439
  }
@@ -5078,9 +5072,6 @@
5078
5072
  }
5079
5073
  }
5080
5074
  @media (width >= 64rem) {
5081
- .lg\:left-\[var\(--sb-content-margin\)\] {
5082
- left: var(--sb-content-margin);
5083
- }
5084
5075
  .lg\:col-span-1 {
5085
5076
  grid-column: span 1 / span 1;
5086
5077
  }
@@ -1,4 +1,4 @@
1
- import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, BadgeProps, Button as Button$1, ButtonProps as ButtonProps$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CardTitleProps, CodeBlock, CodeBlockProps, CopyButton, Dialog as Dialog$1, DialogClose, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger, DropZone, DropZoneProps, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, EmptyStateProps, FilterField, FilterFieldProps, Heading, HeadingVariant, HeadingVariant as HeadingVariant$1, InlineCode, InlineCodeProps, Input as Input$1, InputProps, Label as Label$1, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader as PageHeader$1, PageHeaderProps, PageHeaderProps as PageHeaderProps$1, PageShell as PageShell$1, PageShellProps, Progress as Progress$1, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, SidebarDropZoneProps, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableProps, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea as Textarea$1, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
1
+ import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, BadgeProps, Button as Button$1, ButtonProps as ButtonProps$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CardTitleProps, CodeBlock, CodeBlockProps, CopyButton, Dialog as Dialog$1, DialogClose as DialogClose$1, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger as DialogTrigger$1, DropZone, DropZoneProps, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, EmptyStateProps, FilterField, FilterFieldProps, Heading, HeadingVariant, HeadingVariant as HeadingVariant$1, InlineCode, InlineCodeProps, Input as Input$1, InputProps, Label as Label$1, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader as PageHeader$1, PageHeaderProps, PageHeaderProps as PageHeaderProps$1, PageShell as PageShell$1, PageShellProps, Progress as Progress$1, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, SidebarDropZoneProps, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableProps, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea as Textarea$1, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
2
2
  import { TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
3
3
  import { ElementType, HTMLAttributes, ReactNode } from "react";
4
4
  //#region src/primitives/logo.d.ts
@@ -27,4 +27,4 @@ type SectionTitleProps = Pick<PageHeaderProps, "title" | "description" | "action
27
27
  /** Compatibility name for the canonical nested (h2) page header. */
28
28
  declare function SectionTitle(props: SectionTitleProps): import("react").JSX.Element;
29
29
  //#endregion
30
- export { InlineCode as $, TerminalLine as $t, DropZone as A, SkeletonTable as At, DropdownMenuRadioItem as B, TableCell as Bt, DialogDescription$1 as C, SelectSeparator as Ct, DialogPortal as D, SidebarDropZoneProps as Dt, DialogOverlay as E, SidebarDropZone as Et, DropdownMenuGroup as F, StatusTone as Ft, DropdownMenuSubTrigger$1 as G, TableRow as Gt, DropdownMenuShortcut as H, TableHead as Ht, DropdownMenuItem$1 as I, Switch as It, EmptyStateProps as J, TabsList$1 as Jt, DropdownMenuTrigger$1 as K, Tabs$1 as Kt, DropdownMenuLabel$1 as L, Table as Lt, DropdownMenu$1 as M, StatCardProps as Mt, DropdownMenuCheckboxItem as N, StatusPill as Nt, DialogTitle$1 as O, Skeleton$1 as Ot, DropdownMenuContent$1 as P, StatusPillProps as Pt, HeadingVariant$1 as Q, TerminalInput as Qt, DropdownMenuPortal as R, TableBody as Rt, DialogContent$1 as S, TangleKnot$1 as Sn, SelectScrollUpButton as St, DialogHeader$1 as T, SelectValue$1 as Tt, DropdownMenuSub$1 as U, TableHeader as Ut, DropdownMenuSeparator$1 as V, TableFooter as Vt, DropdownMenuSubContent$1 as W, TableProps as Wt, FilterFieldProps as X, TerminalCursor as Xt, FilterField as Y, TabsTrigger$1 as Yt, Heading as Z, TerminalDisplay as Zt, CodeBlock as _, HeadingProps as _n, SelectContent$1 as _t, AvatarImage$1 as a, Toast as an, MetricProps as at, Dialog$1 as b, Logo$1 as bn, SelectLabel as bt, Button$1 as c, Toolbar as cn, PageHeader$1 as ct, CardContent$1 as d, UploadProgress as dn, PageShellProps as dt, TextShimmer as en, InlineCodeProps as et, CardDescription$1 as f, UploadProgressProps as fn, Progress$1 as ft, CardTitleProps as g, useToast as gn, Select$1 as gt, CardTitle$1 as h, useTheme$1 as hn, SegmentedControlProps as ht, AvatarFallback$1 as i, ThemeToggle as in, Metric as it, DropZoneProps as j, StatCard$1 as jt, DialogTrigger as k, SkeletonCard$1 as kt, ButtonProps$1 as l, ToolbarProps as ln, PageHeaderProps$1 as lt, CardHeader$1 as m, buttonVariants as mn, SegmentedControlOption as mt, ArtifactPaneProps as n, Textarea$1 as nn, InputProps as nt, Badge$1 as o, ToastContainer as on, MetricStrip as ot, CardFooter as p, badgeVariants as pn, SegmentedControl as pt, EmptyState$1 as q, TabsContent$1 as qt, Avatar$1 as r, TextareaProps as rn, Label$1 as rt, BadgeProps as s, ToastProvider as sn, MetricStripProps as st, ArtifactPane$1 as t, TextShimmerProps as tn, Input$1 as tt, Card$1 as u, UploadFile as un, PageShell$1 as ut, CodeBlockProps as v, SectionTitle as vn, SelectGroup as vt, DialogFooter$1 as w, SelectTrigger$1 as wt, DialogClose as x, LogoProps as xn, SelectScrollDownButton as xt, CopyButton as y, SectionTitleProps as yn, SelectItem$1 as yt, DropdownMenuRadioGroup as z, TableCaption as zt };
30
+ export { InlineCode as $, TerminalLine as $t, DropZone as A, SkeletonTable as At, DropdownMenuRadioItem as B, TableCell as Bt, DialogDescription$1 as C, SelectSeparator as Ct, DialogPortal as D, SidebarDropZoneProps as Dt, DialogOverlay as E, SidebarDropZone as Et, DropdownMenuGroup as F, StatusTone as Ft, DropdownMenuSubTrigger$1 as G, TableRow as Gt, DropdownMenuShortcut as H, TableHead as Ht, DropdownMenuItem$1 as I, Switch as It, EmptyStateProps as J, TabsList$1 as Jt, DropdownMenuTrigger$1 as K, Tabs$1 as Kt, DropdownMenuLabel$1 as L, Table as Lt, DropdownMenu$1 as M, StatCardProps as Mt, DropdownMenuCheckboxItem as N, StatusPill as Nt, DialogTitle$1 as O, Skeleton$1 as Ot, DropdownMenuContent$1 as P, StatusPillProps as Pt, HeadingVariant$1 as Q, TerminalInput as Qt, DropdownMenuPortal as R, TableBody as Rt, DialogContent$1 as S, TangleKnot$1 as Sn, SelectScrollUpButton as St, DialogHeader$1 as T, SelectValue$1 as Tt, DropdownMenuSub$1 as U, TableHeader as Ut, DropdownMenuSeparator$1 as V, TableFooter as Vt, DropdownMenuSubContent$1 as W, TableProps as Wt, FilterFieldProps as X, TerminalCursor as Xt, FilterField as Y, TabsTrigger$1 as Yt, Heading as Z, TerminalDisplay as Zt, CodeBlock as _, HeadingProps as _n, SelectContent$1 as _t, AvatarImage$1 as a, Toast as an, MetricProps as at, Dialog$1 as b, Logo$1 as bn, SelectLabel as bt, Button$1 as c, Toolbar as cn, PageHeader$1 as ct, CardContent$1 as d, UploadProgress as dn, PageShellProps as dt, TextShimmer as en, InlineCodeProps as et, CardDescription$1 as f, UploadProgressProps as fn, Progress$1 as ft, CardTitleProps as g, useToast as gn, Select$1 as gt, CardTitle$1 as h, useTheme$1 as hn, SegmentedControlProps as ht, AvatarFallback$1 as i, ThemeToggle as in, Metric as it, DropZoneProps as j, StatCard$1 as jt, DialogTrigger$1 as k, SkeletonCard$1 as kt, ButtonProps$1 as l, ToolbarProps as ln, PageHeaderProps$1 as lt, CardHeader$1 as m, buttonVariants as mn, SegmentedControlOption as mt, ArtifactPaneProps as n, Textarea$1 as nn, InputProps as nt, Badge$1 as o, ToastContainer as on, MetricStrip as ot, CardFooter as p, badgeVariants as pn, SegmentedControl as pt, EmptyState$1 as q, TabsContent$1 as qt, Avatar$1 as r, TextareaProps as rn, Label$1 as rt, BadgeProps as s, ToastProvider as sn, MetricStripProps as st, ArtifactPane$1 as t, TextShimmerProps as tn, Input$1 as tt, Card$1 as u, UploadFile as un, PageShell$1 as ut, CodeBlockProps as v, SectionTitle as vn, SelectGroup as vt, DialogFooter$1 as w, SelectTrigger$1 as wt, DialogClose$1 as x, LogoProps as xn, SelectScrollDownButton as xt, CopyButton as y, SectionTitleProps as yn, SelectItem$1 as yt, DropdownMenuRadioGroup as z, TableCaption as zt };
@@ -868,8 +868,11 @@ interface DashboardLayoutProps {
868
868
  contentClassName?: string;
869
869
  topNavLinks?: TopNavLink[];
870
870
  activeTopNavHref?: string;
871
- /** Arbitrary content rendered at the leading (left) edge of the top bar —
872
- * e.g. a workspace/team switcher — so consumers don't need a second bar. */
871
+ /** Workspace controls below the sidebar brand. The mobile drawer is never collapsed. */
872
+ sidebarLeading?: React$1.ReactNode | ((state: {
873
+ collapsed: boolean;
874
+ }) => React$1.ReactNode);
875
+ /** @deprecated Use sidebarLeading. Relocated into the sidebar; collapsed rails open a Workspace menu. */
873
876
  topBarLeading?: React$1.ReactNode;
874
877
  LinkComponent?: React$1.ComponentType<any>;
875
878
  /**
@@ -914,7 +917,7 @@ interface DashboardLayoutProps {
914
917
  appearance?: AppearanceController;
915
918
  /** Keep notification access available even when data is still loading. Defaults to true. */
916
919
  notificationsEnabled?: boolean;
917
- /** Collapse the desktop bar when no host controls or notifications are enabled. */
920
+ /** @deprecated The desktop top bar is always removed; controls live in the sidebar. */
918
921
  collapseEmptyTopBar?: boolean;
919
922
  /** Notification data for the bell dropdown */
920
923
  notifications?: {
@@ -1,4 +1,4 @@
1
- import { S as ExposedPort } from "./index-CZ2ErGhV.js";
1
+ import { S as ExposedPort } from "./index-B_70pkX2.js";
2
2
  import { _ as RichFileTreeGitStatus, g as RichFileTreeGitEntry } from "./index-B6wKsKV6.js";
3
3
  import { a as PreviewReadiness, i as PreviewAccess } from "./embedded-app-view-B_vMTtJn.js";
4
4
  import * as React$1 from "react";
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { a as LoginLayout, c as UserMenu, d as TangleLoginButtonProps, i as GitHubLoginButtonProps, l as UserMenuProps, n as AuthHeaderProps, o as LoginLayoutProps, r as GitHubLoginButton, s as SessionUser, t as AuthHeader, u as TangleLoginButton } from "./index-DvmZLMT1.js";
2
2
  import { A as modelProvider, B as ReasoningLevelOption, C as ArtifactAgentDockProps, D as ArtifactKind, E as ArtifactDockStreamEvent, F as AgentProfilePicker, H as ReasoningLevelPickerProps, I as AgentProfilePickerProps, L as DEFAULT_REASONING_LEVEL_OPTIONS, M as AgentProfileCapability, N as AgentProfileDraft, O as ArtifactScope, P as AgentProfileOption, R as HARNESS_REASONING_OPTIONS, S as ArtifactAgentDock, T as ArtifactDockMessage, V as ReasoningLevelPicker, _ as MessageRole, a as AgentTimelineMessageItem, b as UserMessage, c as AgentTimelineTone, d as ChatContainer, f as ChatContainerProps, g as MessageListProps, h as MessageList, i as AgentTimelineItem, j as snapHarnessToModel, k as createFetchTransport, l as AgentTimelineToolGroupItem, m as ChatMessageProps, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatMessage, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as ThinkingIndicator, w as ArtifactAgentDockTransport, x as UserMessageProps, y as ThinkingIndicatorProps, z as ReasoningLevel } from "./index-DiyLLZuJ.js";
3
3
  import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as AgentMessagingConnection, r as AgentMessagingConnectionProps, t as AgentEnrollmentViewState } from "./index-ClRHbsoX.js";
4
- import { $ as DashboardLayoutProps, $t as SIDEBAR_RAIL_WIDTH, A as UsageSummaryData, An as SidebarPanelContentProps, At as TeamRole, B as MetricAreaChartProps, Bn as SidebarRailNav, Bt as ClusterStatusBar, C as PortsList, Cn as RailSeparatorProps, Ct as SandboxTableProps, D as GitPanelProps, Dn as SidebarContentProps, Dt as SandboxCardData, E as GitPanel, En as SidebarContent, Et as SandboxCard, F as VariantList, Fn as SidebarRail, Ft as ResourceSnapshot, G as ProfileComparisonProps, Gt as OutOfCreditsModal, H as MetricChartTone, Hn as SidebarRailProps, Ht as ClusterStatusItem, I as VariantListProps, In as SidebarRailFooter, It as ResourceSnapshotItem, J as SidebarLayout, Jt as CreditBalance, K as ProfileSelector, Kt as OutOfCreditsModalProps, L as VariantOutcome, Ln as SidebarRailFooterProps, Lt as ResourceSnapshotProps, M as SystemLogsViewer, Mn as SidebarPanelHeaderProps, Mt as ActivityFeed, N as SystemLogsViewerProps, Nn as SidebarPanelProps, Nt as ActivityFeedProps, O as GitStatusData, On as SidebarPanel, Ot as SandboxCardProps, P as Variant, Pn as SidebarProps, Pt as ActivityItem, Q as DashboardLayout, Qt as SIDEBAR_RAIL_LABELED_WIDTH, R as VariantStatus, Rn as SidebarRailHeader, Rt as ResourceMeter, S as ExposedPort, Sn as RailSeparator, St as SandboxTable, T as GitCommitData, Tn as Sidebar, Tt as NewSandboxCardProps, U as Profile, Un as SidebarUser, Ut as INSUFFICIENT_BALANCE_CODE, V as MetricChartPoint, Vn as SidebarRailNavProps, Vt as ClusterStatusBarProps, W as ProfileComparison, Wn as ThemeMode, Wt as InsufficientBalance, X as SidebarLayoutNavItem, Xt as SIDEBAR_MOBILE_WIDTH, Y as SidebarLayoutFlyoutItem, Yt as CreditBalanceProps, Z as SidebarLayoutProps, Zt as SIDEBAR_PANEL_WIDTH, _ as NetworkConfigData, _n as RailFlyoutProps, _t as PlanCardsProps, a as InfoPanel, an as RailTooltipProps, at as HarnessLogo, b as ProcessList, bn as RailModeButton, bt as InvoiceTable, c as PromoBannerProps, cn as ProfileAvatarProps, ct as HarnessPicker, d as SnapshotListProps, dn as RailCollapseToggle, dt as chatCapableHarnesses, en as SIDEBAR_TOTAL_WIDTH, et as DashboardUser, f as BackendConfig, fn as RailCollapseToggleProps, ft as Backend, g as NetworkConfig, gn as RailFlyout, gt as PlanCards, h as McpServer, hn as RailExpandableSubItem, ht as PlanCardData, i as SandboxPageShellProps, in as RailTooltip, it as HarnessBrand, j as UsageSummaryProps, jn as SidebarPanelHeader, jt as canAdminSandbox, k as UsageSummary, kn as SidebarPanelContent, kt as SandboxStatus, l as SnapshotInfo, ln as RailButton, lt as HarnessPickerProps, m as BackendStatusData, mn as RailExpandableProps, mt as BackendSelectorProps, n as DashboardPageHeaderProps, nn as SidebarProviderProps, nt as ProductVariant, o as InfoPanelProps, on as AppearanceController, ot as HarnessLogoProps, p as BackendConfigProps, pn as RailExpandable, pt as BackendSelector, q as ProfileSelectorProps, qt as parseInsufficientBalance, r as SandboxPageShell, rn as useSidebar, rt as HARNESS_BRAND, s as PromoBanner, sn as ProfileAvatar, st as HARNESS_OPTIONS, t as DashboardPageHeader, tn as SidebarProvider, tt as NavItem, u as SnapshotList, un as RailButtonProps, ut as HarnessType, v as NetworkConfigProps, vn as RailHeader, vt as PlanFeature, w as PortsListProps, wn as RailThemeToggle, wt as NewSandboxCard, x as ProcessListProps, xn as RailModeButtonProps, xt as InvoiceTableProps, y as ProcessInfo, yn as RailHeaderProps, yt as Invoice, z as MetricAreaChart, zn as SidebarRailHeaderProps, zt as ResourceMeterProps } from "./index-CZ2ErGhV.js";
4
+ import { $ as DashboardLayoutProps, $t as SIDEBAR_RAIL_WIDTH, A as UsageSummaryData, An as SidebarPanelContentProps, At as TeamRole, B as MetricAreaChartProps, Bn as SidebarRailNav, Bt as ClusterStatusBar, C as PortsList, Cn as RailSeparatorProps, Ct as SandboxTableProps, D as GitPanelProps, Dn as SidebarContentProps, Dt as SandboxCardData, E as GitPanel, En as SidebarContent, Et as SandboxCard, F as VariantList, Fn as SidebarRail, Ft as ResourceSnapshot, G as ProfileComparisonProps, Gt as OutOfCreditsModal, H as MetricChartTone, Hn as SidebarRailProps, Ht as ClusterStatusItem, I as VariantListProps, In as SidebarRailFooter, It as ResourceSnapshotItem, J as SidebarLayout, Jt as CreditBalance, K as ProfileSelector, Kt as OutOfCreditsModalProps, L as VariantOutcome, Ln as SidebarRailFooterProps, Lt as ResourceSnapshotProps, M as SystemLogsViewer, Mn as SidebarPanelHeaderProps, Mt as ActivityFeed, N as SystemLogsViewerProps, Nn as SidebarPanelProps, Nt as ActivityFeedProps, O as GitStatusData, On as SidebarPanel, Ot as SandboxCardProps, P as Variant, Pn as SidebarProps, Pt as ActivityItem, Q as DashboardLayout, Qt as SIDEBAR_RAIL_LABELED_WIDTH, R as VariantStatus, Rn as SidebarRailHeader, Rt as ResourceMeter, S as ExposedPort, Sn as RailSeparator, St as SandboxTable, T as GitCommitData, Tn as Sidebar, Tt as NewSandboxCardProps, U as Profile, Un as SidebarUser, Ut as INSUFFICIENT_BALANCE_CODE, V as MetricChartPoint, Vn as SidebarRailNavProps, Vt as ClusterStatusBarProps, W as ProfileComparison, Wn as ThemeMode, Wt as InsufficientBalance, X as SidebarLayoutNavItem, Xt as SIDEBAR_MOBILE_WIDTH, Y as SidebarLayoutFlyoutItem, Yt as CreditBalanceProps, Z as SidebarLayoutProps, Zt as SIDEBAR_PANEL_WIDTH, _ as NetworkConfigData, _n as RailFlyoutProps, _t as PlanCardsProps, a as InfoPanel, an as RailTooltipProps, at as HarnessLogo, b as ProcessList, bn as RailModeButton, bt as InvoiceTable, c as PromoBannerProps, cn as ProfileAvatarProps, ct as HarnessPicker, d as SnapshotListProps, dn as RailCollapseToggle, dt as chatCapableHarnesses, en as SIDEBAR_TOTAL_WIDTH, et as DashboardUser, f as BackendConfig, fn as RailCollapseToggleProps, ft as Backend, g as NetworkConfig, gn as RailFlyout, gt as PlanCards, h as McpServer, hn as RailExpandableSubItem, ht as PlanCardData, i as SandboxPageShellProps, in as RailTooltip, it as HarnessBrand, j as UsageSummaryProps, jn as SidebarPanelHeader, jt as canAdminSandbox, k as UsageSummary, kn as SidebarPanelContent, kt as SandboxStatus, l as SnapshotInfo, ln as RailButton, lt as HarnessPickerProps, m as BackendStatusData, mn as RailExpandableProps, mt as BackendSelectorProps, n as DashboardPageHeaderProps, nn as SidebarProviderProps, nt as ProductVariant, o as InfoPanelProps, on as AppearanceController, ot as HarnessLogoProps, p as BackendConfigProps, pn as RailExpandable, pt as BackendSelector, q as ProfileSelectorProps, qt as parseInsufficientBalance, r as SandboxPageShell, rn as useSidebar, rt as HARNESS_BRAND, s as PromoBanner, sn as ProfileAvatar, st as HARNESS_OPTIONS, t as DashboardPageHeader, tn as SidebarProvider, tt as NavItem, u as SnapshotList, un as RailButtonProps, ut as HarnessType, v as NetworkConfigProps, vn as RailHeader, vt as PlanFeature, w as PortsListProps, wn as RailThemeToggle, wt as NewSandboxCard, x as ProcessListProps, xn as RailModeButtonProps, xt as InvoiceTableProps, y as ProcessInfo, yn as RailHeaderProps, yt as Invoice, z as MetricAreaChart, zn as SidebarRailHeaderProps, zt as ResourceMeterProps } from "./index-B_70pkX2.js";
5
5
  import { a as modelBrandFor, i as canonicalModelId, n as ModelBrandStack, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B9A4H9pJ.js";
6
6
  import { a as UsageChartProps, c as PricingPageProps, d as BillingBalance, f as BillingDashboard, h as BillingUsage, i as UsageChart, l as PricingTier, m as BillingSubscription, n as TemplateCardData, o as UsageDataPoint, p as BillingDashboardProps, r as TemplateCardProps, s as PricingPage, t as TemplateCard, u as formatPrice } from "./template-card-L-4gmjx2.js";
7
7
  import { C as getCodeLanguage, D as resolveFilePreviewKind, E as parseCsv, S as filterFileTree, T as getSyntaxLanguage, _ as RichFileTreeGitStatus, a as FileNode, b as detectFileFormat, c as FilePreviewProps, d as FileTabsProps, f as FileTree, g as RichFileTreeGitEntry, h as RichFileTree, i as FileFormat, l as FileTabData, m as FileTreeVisibilityOptions, n as FileArtifactPane, o as FilePreview, p as FileTreeProps, r as FileArtifactPaneProps, s as FilePreviewKind, t as CSV_PREVIEW_ROW_LIMIT, u as FileTabs, v as RichFileTreeProps, w as getFormatLabel, x as fileExtension, y as RichFileTreeThemeVars } from "./index-B6wKsKV6.js";
@@ -9,9 +9,9 @@ import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions
9
9
  import { t as Session } from "./sidecar-DgH_vQ6m.js";
10
10
  import { d as useSessionStream, l as UseSessionStreamOptions, n as UseSidecarAuthOptions, o as SessionDegradation, r as useSidecarAuth, s as SessionInfo, t as SidecarAuth, u as UseSessionStreamResult } from "./use-sidecar-auth-CCTJcrq7.js";
11
11
  import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SandboxMetrics, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, SidecarMetricsPayload, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSandboxMetricsOptions, UseSandboxMetricsResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useLiveTime, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessions, useToolCallStream } from "./hooks.js";
12
- import { $ as InlineCode, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-wLVwzOsB.js";
12
+ import { $ as InlineCode, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-BUooECWO.js";
13
13
  import { $ as useOptimisticSessionItems, A as SandboxWorkbenchOpenUIArtifact, B as SessionSidebar, C as AgentWorkbench, D as SandboxWorkbenchFileArtifact, E as SandboxWorkbenchCustomArtifact, F as ShellShouldRevalidateArgs, G as SessionSidebarLink, H as SessionSidebarFilter, I as ShellShouldRevalidateOptions, J as SESSION_CREATED_EVENT, K as SessionSidebarProps, L as createShellShouldRevalidate, M as SandboxWorkbenchSessionProps, N as SessionActivityMonitor, O as SandboxWorkbenchLayoutOptions, P as SessionActivityMonitorProps, Q as dispatchSessionCreated, R as shellShouldRevalidate, S as FormAudit, T as SandboxWorkbenchArtifact, U as SessionSidebarGroupBy, V as SessionSidebarBadge, W as SessionSidebarItem, X as SessionOptimisticController, Y as SessionCreatedDetail, Z as UseOptimisticSessionItemsOptions, _ as TaskBoardItem, a as WorkspaceFilesPane, at as ContextBadge, b as AuditResults, c as ApprovalConfidenceStat, ct as BannerType, d as ApprovalQueueProps, dt as DirectoryPane, et as RuntimePane, f as CalendarEvent, ft as DirectoryPaneProps, g as TaskBoardColumn, gt as WorkspaceLayoutProps, h as TaskBoard, ht as WorkspaceLayout, i as WorkspaceArtifactViewProps, it as TerminalProps, j as SandboxWorkbenchProps, k as SandboxWorkbenchMarkdownArtifact, l as ApprovalItem, lt as StatusBanner, m as CalendarViewProps, mt as WorkspacePaneHeaderProps, n as ArtifactPaneProps, nt as TerminalLine, o as WorkspaceFilesPaneProps, ot as StatusBar, p as CalendarView, pt as WorkspacePaneHeader, q as SessionSidebarVariant, r as WorkspaceArtifactView, rt as TerminalPanel, s as WorkspaceFilesPreview, st as StatusBarProps, t as ArtifactPane, tt as RuntimePaneProps, u as ApprovalQueue, ut as StatusBannerProps, v as TaskBoardProps, w as SandboxWorkbench, x as AuditResultsProps, y as AuditCheck, z as formatRelativeAge } from "./index-B_Ae4rdp.js";
14
- import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-D1YmTvf3.js";
14
+ import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-v1lfd9oE.js";
15
15
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
16
16
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISchemaIssue, OpenUISchemaValidation, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
17
17
  import { ExpandedToolDetail, ExpandedToolDetailProps, FeedSegment, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps, RunRowShell, RunRowShellProps, RunRowStatus, RunRowStatusDot, ToolCallData, ToolCallFeed, ToolCallFeedProps, ToolCallStatus, ToolCallType, parseToolEvent } from "./run.js";
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
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-CggAsIMv.js";
2
- import { $ as Select, A as DropdownMenuItem, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-C4qn9fZ8.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-BAPaCOCB.js";
2
+ import { $ as Select, A as DropdownMenuItem, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-Db_ASpuT.js";
3
3
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
4
4
  import { C as WorkspaceLayout, S as DirectoryPane, _ as formatRelativeAge, a as TaskBoard, b as StatusBar, c as SandboxWorkbench, d as createShellShouldRevalidate, f as shellShouldRevalidate, g as useOptimisticSessionItems, h as dispatchSessionCreated, i as CalendarView, l as WorkspaceArtifactView, m as SESSION_CREATED_EVENT, n as WorkspaceFilesPane, o as AuditResults, p as SessionSidebar, r as ApprovalQueue, s as AgentWorkbench, t as ArtifactPane, u as SessionActivityMonitor, v as RuntimePane, x as StatusBanner, y as TerminalPanel } from "./workspace-CjeZTLPQ.js";
5
- import { $ as SidebarRailHeader, A as ResourceSnapshot, B as RailExpandable, C as PlanCards, D as SandboxCard, E as NewSandboxCard, F as parseInsufficientBalance, G as RailThemeToggle, H as RailHeader, I as CreditBalance, J as SidebarPanel, K as Sidebar, L as ProfileAvatar, M as ClusterStatusBar, N as INSUFFICIENT_BALANCE_CODE, O as canAdminSandbox, P as OutOfCreditsModal, Q as SidebarRailFooter, R as RailButton, S as BackendSelector, T as SandboxTable, U as RailModeButton, V as RailFlyout, W as RailSeparator, X as SidebarPanelHeader, Y as SidebarPanelContent, Z as SidebarRail, _ as HARNESS_OPTIONS, a as NetworkConfig, at as SIDEBAR_RAIL_WIDTH, b as HARNESS_BRAND, c as GitPanel, ct as useSidebar, d as VariantList, et as SidebarRailNav, f as MetricAreaChart, g as DashboardLayout, h as SidebarLayout, i as BackendConfig, it as SIDEBAR_RAIL_LABELED_WIDTH, j as ResourceMeter, k as ActivityFeed, l as UsageSummary, m as ProfileSelector, n as PromoBanner, nt as SIDEBAR_MOBILE_WIDTH, o as ProcessList, ot as SIDEBAR_TOTAL_WIDTH, p as ProfileComparison, q as SidebarContent, r as SnapshotList, rt as SIDEBAR_PANEL_WIDTH, s as PortsList, st as SidebarProvider, t as InfoPanel, tt as RailTooltip, u as SystemLogsViewer, v as HarnessPicker, w as InvoiceTable, x as HarnessLogo, y as chatCapableHarnesses, z as RailCollapseToggle } from "./dashboard-BpEeXRo1.js";
5
+ import { $ as SidebarRailHeader, A as ResourceSnapshot, B as RailExpandable, C as PlanCards, D as SandboxCard, E as NewSandboxCard, F as parseInsufficientBalance, G as RailThemeToggle, H as RailHeader, I as CreditBalance, J as SidebarPanel, K as Sidebar, L as ProfileAvatar, M as ClusterStatusBar, N as INSUFFICIENT_BALANCE_CODE, O as canAdminSandbox, P as OutOfCreditsModal, Q as SidebarRailFooter, R as RailButton, S as BackendSelector, T as SandboxTable, U as RailModeButton, V as RailFlyout, W as RailSeparator, X as SidebarPanelHeader, Y as SidebarPanelContent, Z as SidebarRail, _ as HARNESS_OPTIONS, a as NetworkConfig, at as SIDEBAR_RAIL_WIDTH, b as HARNESS_BRAND, c as GitPanel, ct as useSidebar, d as VariantList, et as SidebarRailNav, f as MetricAreaChart, g as DashboardLayout, h as SidebarLayout, i as BackendConfig, it as SIDEBAR_RAIL_LABELED_WIDTH, j as ResourceMeter, k as ActivityFeed, l as UsageSummary, m as ProfileSelector, n as PromoBanner, nt as SIDEBAR_MOBILE_WIDTH, o as ProcessList, ot as SIDEBAR_TOTAL_WIDTH, p as ProfileComparison, q as SidebarContent, r as SnapshotList, rt as SIDEBAR_PANEL_WIDTH, s as PortsList, st as SidebarProvider, t as InfoPanel, tt as RailTooltip, u as SystemLogsViewer, v as HarnessPicker, w as InvoiceTable, x as HarnessLogo, y as chatCapableHarnesses, z as RailCollapseToggle } from "./dashboard-C2VXLIQC.js";
6
6
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
7
- import { a as PricingPage, i as UsageChart, n as SandboxPageShell, o as formatPrice, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-Cf90DTWr.js";
7
+ import { a as PricingPage, i as UsageChart, n as SandboxPageShell, o as formatPrice, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-DJV7cbxx.js";
8
8
  import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
9
9
  import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FilePreview, FileTabs, FileTree, RichFileTree, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
10
10
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
@@ -580,7 +580,7 @@ function DashboardPageHeader({ title, description, actions, className }) {
580
580
  title,
581
581
  description,
582
582
  actions,
583
- className: cn("rounded-xl border border-border bg-surface-container px-5 py-5 sm:px-6 [&_h1]:text-2xl sm:[&_h1]:text-[28px] [&_h1]:font-semibold [&_p]:text-base [&_p]:leading-relaxed", className)
583
+ className: cn("gap-3 [&_h1]:text-2xl sm:[&_h1]:text-[28px] [&_h1]:font-semibold [&_p]:text-base [&_p]:leading-relaxed", className)
584
584
  });
585
585
  }
586
586
  //#endregion
package/dist/pages.js CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as Select$1, C as DialogTitle$1, G as Input$1, Nt as Textarea$1, _ as DialogContent$1, a as Badge$1, b as DialogHeader$1, ct as SelectValue$1, et as SelectContent$1, h as Dialog$1, ht as Switch, nt as SelectItem$1, o as Button$1, st as SelectTrigger$1, v as DialogDescription$1, y as DialogFooter$1 } from "./primitives-C4qn9fZ8.js";
1
+ import { $ as Select$1, C as DialogTitle$1, G as Input$1, Nt as Textarea$1, _ as DialogContent$1, a as Badge$1, b as DialogHeader$1, ct as SelectValue$1, et as SelectContent$1, h as Dialog$1, ht as Switch, nt as SelectItem$1, o as Button$1, st as SelectTrigger$1, v as DialogDescription$1, y as DialogFooter$1 } from "./primitives-Db_ASpuT.js";
2
2
  import { t as cn$1 } from "./utils-DzWbktWG.js";
3
- import { a as PricingPage, i as UsageChart, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-Cf90DTWr.js";
3
+ import { a as PricingPage, i as UsageChart, r as TemplateCard, s as BillingDashboard, t as DashboardPageHeader } from "./page-layout-DJV7cbxx.js";
4
4
  import { Badge, Button, Card, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, EmptyState, Input, Skeleton, SkeletonCard, Tabs, TabsContent, TabsList, TabsTrigger } from "@tangle-network/ui/primitives";
5
5
  import { Logo, TangleKnot } from "@tangle-network/brand";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -0,0 +1,25 @@
1
+ import { ArtifactPane as ArtifactPane$1, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, Button as Button$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CodeBlock, CopyButton, Dialog as Dialog$1, DialogClose as DialogClose$1, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger as DialogTrigger$1, DropZone, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, FilterField, Heading, InlineCode, Input as Input$1, Label as Label$1, Metric, MetricStrip, PageHeader, PageHeader as PageHeader$1, PageShell as PageShell$1, Progress as Progress$1, SegmentedControl, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatusPill, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea as Textarea$1, ThemeToggle, ToastContainer, ToastProvider, Toolbar, UploadProgress, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
2
+ import { Logo, TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/primitives/logo.tsx
5
+ /** Keep the Sandbox wordmark API while Brand owns the mark and layout. */
6
+ function Logo$1({ variant = "sandbox", size = "md", className, iconOnly = false }) {
7
+ return /* @__PURE__ */ jsx(Logo, {
8
+ size,
9
+ variant: iconOnly ? "icon" : "full",
10
+ suffix: variant === "sandbox" ? "Sandbox" : null,
11
+ className
12
+ });
13
+ }
14
+ Logo$1.displayName = "Logo";
15
+ //#endregion
16
+ //#region src/primitives/heading.tsx
17
+ /** Compatibility name for the canonical nested (h2) page header. */
18
+ function SectionTitle(props) {
19
+ return /* @__PURE__ */ jsx(PageHeader, {
20
+ ...props,
21
+ level: 2
22
+ });
23
+ }
24
+ //#endregion
25
+ export { Select$1 as $, DropdownMenuItem$1 as A, TerminalInput as At, DropdownMenuTrigger$1 as B, buttonVariants as Bt, DialogTitle$1 as C, TableRow as Ct, DropdownMenuCheckboxItem as D, TabsTrigger$1 as Dt, DropdownMenu$1 as E, TabsList$1 as Et, DropdownMenuSeparator$1 as F, ToastContainer as Ft, Input$1 as G, TangleKnot$1 as Gt, FilterField as H, useToast as Ht, DropdownMenuShortcut as I, ToastProvider as It, MetricStrip as J, Label$1 as K, DropdownMenuSub$1 as L, Toolbar as Lt, DropdownMenuPortal as M, TextShimmer as Mt, DropdownMenuRadioGroup as N, Textarea$1 as Nt, DropdownMenuContent$1 as O, TerminalCursor as Ot, DropdownMenuRadioItem as P, ThemeToggle as Pt, SegmentedControl as Q, DropdownMenuSubContent$1 as R, UploadProgress as Rt, DialogPortal as S, TableHeader as St, DropZone as T, TabsContent$1 as Tt, Heading as U, SectionTitle as Ut, EmptyState$1 as V, useTheme$1 as Vt, InlineCode as W, Logo$1 as Wt, PageShell$1 as X, PageHeader$1 as Y, Progress$1 as Z, DialogContent$1 as _, TableBody as _t, Badge$1 as a, SelectScrollUpButton as at, DialogHeader$1 as b, TableFooter as bt, CardContent$1 as c, SelectValue$1 as ct, CardHeader$1 as d, SkeletonCard$1 as dt, SelectContent$1 as et, CardTitle$1 as f, SkeletonTable as ft, DialogClose$1 as g, Table as gt, Dialog$1 as h, Switch as ht, AvatarImage$1 as i, SelectScrollDownButton as it, DropdownMenuLabel$1 as j, TerminalLine as jt, DropdownMenuGroup as k, TerminalDisplay as kt, CardDescription$1 as l, SidebarDropZone as lt, CopyButton as m, StatusPill as mt, Avatar$1 as n, SelectItem$1 as nt, Button$1 as o, SelectSeparator as ot, CodeBlock as p, StatCard$1 as pt, Metric as q, AvatarFallback$1 as r, SelectLabel as rt, Card$1 as s, SelectTrigger$1 as st, ArtifactPane$1 as t, SelectGroup as tt, CardFooter as u, Skeleton$1 as ut, DialogDescription$1 as v, TableCaption as vt, DialogTrigger$1 as w, Tabs$1 as wt, DialogOverlay as x, TableHead as xt, DialogFooter$1 as y, TableCell as yt, DropdownMenuSubTrigger$1 as z, badgeVariants as zt };
@@ -1,2 +1,2 @@
1
- import { $ as InlineCode, $t as TerminalLine, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, Qt as TerminalInput, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Xt as TerminalCursor, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, n as ArtifactPaneProps, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, t as ArtifactPane, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-wLVwzOsB.js";
1
+ import { $ as InlineCode, $t as TerminalLine, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, Qt as TerminalInput, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Xt as TerminalCursor, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, n as ArtifactPaneProps, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, t as ArtifactPane, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-BUooECWO.js";
2
2
  export { ArtifactPane, type ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, CodeBlock, type CodeBlockProps, CopyButton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FilterField, type FilterFieldProps, Heading, type HeadingProps, type HeadingVariant, InlineCode, type InlineCodeProps, Input, type InputProps, Label, Logo, type LogoProps, Metric, type MetricProps, MetricStrip, type MetricStripProps, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Progress, SectionTitle, type SectionTitleProps, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, type SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, type StatCardProps, StatusPill, type StatusPillProps, type StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, type Toast, ToastContainer, ToastProvider, Toolbar, type ToolbarProps, type UploadFile, UploadProgress, type UploadProgressProps, badgeVariants, buttonVariants, useTheme, useToast };
@@ -1,2 +1,2 @@
1
- import { $ as Select, A as DropdownMenuItem, At as TerminalInput, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, Ot as TerminalCursor, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, jt as TerminalLine, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, t as ArtifactPane, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-C4qn9fZ8.js";
1
+ import { $ as Select, A as DropdownMenuItem, At as TerminalInput, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, Ot as TerminalCursor, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, jt as TerminalLine, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, t as ArtifactPane, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-Db_ASpuT.js";
2
2
  export { ArtifactPane, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CodeBlock, CopyButton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FilterField, Heading, InlineCode, Input, Label, Logo, Metric, MetricStrip, PageHeader, PageShell, Progress, SectionTitle, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatusPill, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TangleKnot, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea, ThemeToggle, ToastContainer, ToastProvider, Toolbar, UploadProgress, badgeVariants, buttonVariants, useTheme, useToast };
package/dist/styles.css CHANGED
@@ -300,6 +300,9 @@
300
300
  .inset-y-0 {
301
301
  inset-block: 0px;
302
302
  }
303
+ .-top-0\.5 {
304
+ top: calc(var(--spacing) * -0.5);
305
+ }
303
306
  .-top-1 {
304
307
  top: calc(var(--spacing) * -1);
305
308
  }
@@ -339,15 +342,9 @@
339
342
  .top-4 {
340
343
  top: calc(var(--spacing) * 4);
341
344
  }
342
- .top-14 {
343
- top: calc(var(--spacing) * 14);
344
- }
345
345
  .top-\[50\%\] {
346
346
  top: 50%;
347
347
  }
348
- .top-full {
349
- top: 100%;
350
- }
351
348
  .-right-0\.5 {
352
349
  right: calc(var(--spacing) * -0.5);
353
350
  }
@@ -441,9 +438,6 @@
441
438
  .z-20 {
442
439
  z-index: 20;
443
440
  }
444
- .z-30 {
445
- z-index: 30;
446
- }
447
441
  .z-40 {
448
442
  z-index: 40;
449
443
  }
@@ -930,6 +924,9 @@
930
924
  .h-auto {
931
925
  height: auto;
932
926
  }
927
+ .h-dvh {
928
+ height: 100dvh;
929
+ }
933
930
  .h-full {
934
931
  height: 100%;
935
932
  }
@@ -1464,6 +1461,9 @@
1464
1461
  .max-w-\[calc\(100vw-5rem\)\] {
1465
1462
  max-width: calc(100vw - 5rem);
1466
1463
  }
1464
+ .max-w-\[calc\(100vw-24px\)\] {
1465
+ max-width: calc(100vw - 24px);
1466
+ }
1467
1467
  .max-w-\[min\(640px\,calc\(100vw-2rem\)\)\] {
1468
1468
  max-width: min(640px, calc(100vw - 2rem));
1469
1469
  }
@@ -1629,6 +1629,10 @@
1629
1629
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1630
1630
  translate: var(--tw-translate-x) var(--tw-translate-y);
1631
1631
  }
1632
+ .translate-y-0 {
1633
+ --tw-translate-y: 0px;
1634
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1635
+ }
1632
1636
  .translate-y-\[-50\%\] {
1633
1637
  --tw-translate-y: -50%;
1634
1638
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1778,6 +1782,9 @@
1778
1782
  .justify-start {
1779
1783
  justify-content: flex-start;
1780
1784
  }
1785
+ .gap-0 {
1786
+ gap: 0px;
1787
+ }
1781
1788
  .gap-0\.5 {
1782
1789
  gap: calc(var(--spacing) * 0.5);
1783
1790
  }
@@ -2071,6 +2078,10 @@
2071
2078
  border-style: var(--tw-border-style);
2072
2079
  border-width: 2px;
2073
2080
  }
2081
+ .border-y-0 {
2082
+ border-block-style: var(--tw-border-style);
2083
+ border-block-width: 0px;
2084
+ }
2074
2085
  .border-t {
2075
2086
  border-top-style: var(--tw-border-style);
2076
2087
  border-top-width: 1px;
@@ -3018,9 +3029,6 @@
3018
3029
  .pt-12 {
3019
3030
  padding-top: calc(var(--spacing) * 12);
3020
3031
  }
3021
- .pt-16 {
3022
- padding-top: calc(var(--spacing) * 16);
3023
- }
3024
3032
  .pr-1 {
3025
3033
  padding-right: var(--spacing);
3026
3034
  }
@@ -3834,6 +3842,9 @@
3834
3842
  --tw-ring-color: color-mix(in oklab, hsl(var(--primary)) 25%, transparent);
3835
3843
  }
3836
3844
  }
3845
+ .ring-surface-container-low {
3846
+ --tw-ring-color: var(--md3-surface-container-low);
3847
+ }
3837
3848
  .outline-hidden {
3838
3849
  --tw-outline-style: none;
3839
3850
  outline-style: none;
@@ -3898,11 +3909,6 @@
3898
3909
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3899
3910
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3900
3911
  }
3901
- .transition-\[left\,width\] {
3902
- transition-property: left,width;
3903
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3904
- transition-duration: var(--tw-duration, var(--default-transition-duration));
3905
- }
3906
3912
  .transition-\[margin-left\] {
3907
3913
  transition-property: margin-left;
3908
3914
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -4113,10 +4119,6 @@
4113
4119
  content: var(--tw-content);
4114
4120
  background-color: hsl(var(--primary));
4115
4121
  }
4116
- .last\:border-0:last-child {
4117
- border-style: var(--tw-border-style);
4118
- border-width: 0px;
4119
- }
4120
4122
  .last\:border-b-0:last-child {
4121
4123
  border-bottom-style: var(--tw-border-style);
4122
4124
  border-bottom-width: 0px;
@@ -4432,14 +4434,6 @@
4432
4434
  .hover\:bg-surface-container-highest:hover {
4433
4435
  background-color: var(--md3-surface-container-highest);
4434
4436
  }
4435
- .hover\:bg-white\/5:hover {
4436
- background-color: color-mix(in srgb, #fff 5%, transparent);
4437
- }
4438
- @supports (color: color-mix(in lab, red, red)) {
4439
- .hover\:bg-white\/5:hover {
4440
- background-color: color-mix(in oklab, var(--color-white) 5%, transparent);
4441
- }
4442
- }
4443
4437
  .hover\:bg-yellow-600\/30:hover {
4444
4438
  background-color: color-mix(in srgb, oklch(68.1% 0.162 75.834) 30%, transparent);
4445
4439
  }
@@ -5078,9 +5072,6 @@
5078
5072
  }
5079
5073
  }
5080
5074
  @media (width >= 64rem) {
5081
- .lg\:left-\[var\(--sb-content-margin\)\] {
5082
- left: var(--sb-content-margin);
5083
- }
5084
5075
  .lg\:col-span-1 {
5085
5076
  grid-column: span 1 / span 1;
5086
5077
  }
@@ -1,5 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
- import { s as PortsList } from "./dashboard-BpEeXRo1.js";
2
+ import { s as PortsList } from "./dashboard-C2VXLIQC.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";
@@ -1,3 +1,3 @@
1
- import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-D1YmTvf3.js";
1
+ import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-v1lfd9oE.js";
2
2
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
3
3
  export { type ArtifactView, BRAND_PRISM_THEME, type ChangedFile, ChangesPane, type ChangesPaneProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, FileBreadcrumb, type FileBreadcrumbProps, GitStatusBadge, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage };
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-CggAsIMv.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-BAPaCOCB.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.122.2",
3
+ "version": "0.122.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",
@@ -1,25 +0,0 @@
1
- import { ArtifactPane as ArtifactPane$1, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, Button as Button$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CodeBlock, CopyButton, Dialog as Dialog$1, DialogClose, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger, DropZone, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, FilterField, Heading, InlineCode, Input as Input$1, Label as Label$1, Metric, MetricStrip, PageHeader, PageHeader as PageHeader$1, PageShell as PageShell$1, Progress as Progress$1, SegmentedControl, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatusPill, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea as Textarea$1, ThemeToggle, ToastContainer, ToastProvider, Toolbar, UploadProgress, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
2
- import { Logo, TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
3
- import { jsx } from "react/jsx-runtime";
4
- //#region src/primitives/logo.tsx
5
- /** Keep the Sandbox wordmark API while Brand owns the mark and layout. */
6
- function Logo$1({ variant = "sandbox", size = "md", className, iconOnly = false }) {
7
- return /* @__PURE__ */ jsx(Logo, {
8
- size,
9
- variant: iconOnly ? "icon" : "full",
10
- suffix: variant === "sandbox" ? "Sandbox" : null,
11
- className
12
- });
13
- }
14
- Logo$1.displayName = "Logo";
15
- //#endregion
16
- //#region src/primitives/heading.tsx
17
- /** Compatibility name for the canonical nested (h2) page header. */
18
- function SectionTitle(props) {
19
- return /* @__PURE__ */ jsx(PageHeader, {
20
- ...props,
21
- level: 2
22
- });
23
- }
24
- //#endregion
25
- export { Select$1 as $, DropdownMenuItem$1 as A, TerminalInput as At, DropdownMenuTrigger$1 as B, buttonVariants as Bt, DialogTitle$1 as C, TableRow as Ct, DropdownMenuCheckboxItem as D, TabsTrigger$1 as Dt, DropdownMenu$1 as E, TabsList$1 as Et, DropdownMenuSeparator$1 as F, ToastContainer as Ft, Input$1 as G, TangleKnot$1 as Gt, FilterField as H, useToast as Ht, DropdownMenuShortcut as I, ToastProvider as It, MetricStrip as J, Label$1 as K, DropdownMenuSub$1 as L, Toolbar as Lt, DropdownMenuPortal as M, TextShimmer as Mt, DropdownMenuRadioGroup as N, Textarea$1 as Nt, DropdownMenuContent$1 as O, TerminalCursor as Ot, DropdownMenuRadioItem as P, ThemeToggle as Pt, SegmentedControl as Q, DropdownMenuSubContent$1 as R, UploadProgress as Rt, DialogPortal as S, TableHeader as St, DropZone as T, TabsContent$1 as Tt, Heading as U, SectionTitle as Ut, EmptyState$1 as V, useTheme$1 as Vt, InlineCode as W, Logo$1 as Wt, PageShell$1 as X, PageHeader$1 as Y, Progress$1 as Z, DialogContent$1 as _, TableBody as _t, Badge$1 as a, SelectScrollUpButton as at, DialogHeader$1 as b, TableFooter as bt, CardContent$1 as c, SelectValue$1 as ct, CardHeader$1 as d, SkeletonCard$1 as dt, SelectContent$1 as et, CardTitle$1 as f, SkeletonTable as ft, DialogClose as g, Table as gt, Dialog$1 as h, Switch as ht, AvatarImage$1 as i, SelectScrollDownButton as it, DropdownMenuLabel$1 as j, TerminalLine as jt, DropdownMenuGroup as k, TerminalDisplay as kt, CardDescription$1 as l, SidebarDropZone as lt, CopyButton as m, StatusPill as mt, Avatar$1 as n, SelectItem$1 as nt, Button$1 as o, SelectSeparator as ot, CodeBlock as p, StatCard$1 as pt, Metric as q, AvatarFallback$1 as r, SelectLabel as rt, Card$1 as s, SelectTrigger$1 as st, ArtifactPane$1 as t, SelectGroup as tt, CardFooter as u, Skeleton$1 as ut, DialogDescription$1 as v, TableCaption as vt, DialogTrigger as w, Tabs$1 as wt, DialogOverlay as x, TableHead as xt, DialogFooter$1 as y, TableCell as yt, DropdownMenuSubTrigger$1 as z, badgeVariants as zt };