@tangle-network/sandbox-ui 0.10.4 → 0.10.6

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.
@@ -0,0 +1,301 @@
1
+ import * as React$1 from 'react';
2
+ import { ReactNode } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
8
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
9
+ import * as SelectPrimitive from '@radix-ui/react-select';
10
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
11
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
12
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
13
+ import * as LabelPrimitive from '@radix-ui/react-label';
14
+
15
+ declare const Card: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
16
+ variant?: "default" | "glass" | "sandbox" | "elevated";
17
+ hover?: boolean;
18
+ } & React$1.RefAttributes<HTMLDivElement>>;
19
+ declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
20
+ declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
21
+ declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
22
+ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
23
+ declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
24
+
25
+ declare const Dialog: React$1.FC<DialogPrimitive.DialogProps>;
26
+ declare const DialogTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
27
+ declare const DialogPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
28
+ declare const DialogClose: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
29
+ declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
30
+ declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
31
+ variant?: "default" | "sandbox";
32
+ } & React$1.RefAttributes<HTMLDivElement>>;
33
+ declare const DialogHeader: {
34
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
35
+ displayName: string;
36
+ };
37
+ declare const DialogFooter: {
38
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
39
+ displayName: string;
40
+ };
41
+ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
42
+ declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
43
+
44
+ declare const inputVariants: (props?: ({
45
+ variant?: "default" | "sandbox" | "error" | null | undefined;
46
+ size?: "default" | "sm" | "lg" | null | undefined;
47
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
48
+ interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
49
+ label?: string;
50
+ error?: string;
51
+ hint?: string;
52
+ }
53
+ declare const Input: React$1.ForwardRefExoticComponent<InputProps & React$1.RefAttributes<HTMLInputElement>>;
54
+ interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement> {
55
+ variant?: "default" | "sandbox";
56
+ label?: string;
57
+ error?: string;
58
+ hint?: string;
59
+ }
60
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
61
+
62
+ declare const badgeVariants: (props?: ({
63
+ variant?: "default" | "destructive" | "outline" | "secondary" | "sandbox" | "error" | "success" | "warning" | "info" | "running" | "creating" | "stopped" | "warm" | "cold" | "deleted" | null | undefined;
64
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
65
+ type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "error" | "info" | "sandbox" | "running" | "creating" | "stopped" | "warm" | "cold" | "deleted" | null;
66
+ interface BadgeProps extends VariantProps<typeof badgeVariants> {
67
+ variant?: BadgeVariant;
68
+ className?: string;
69
+ children?: React$1.ReactNode;
70
+ dot?: boolean;
71
+ onClick?: React$1.MouseEventHandler<HTMLDivElement>;
72
+ style?: React$1.CSSProperties;
73
+ id?: string;
74
+ role?: React$1.AriaRole;
75
+ title?: string;
76
+ [key: string]: unknown;
77
+ }
78
+ declare function Badge({ className, variant, dot, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
79
+
80
+ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
81
+ declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
82
+ declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
83
+
84
+ declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>;
85
+ declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
86
+ declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
87
+ declare const DropdownMenuPortal: React$1.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
88
+ declare const DropdownMenuSub: React$1.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
89
+ declare const DropdownMenuRadioGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
90
+ declare const DropdownMenuSubTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
91
+ inset?: boolean;
92
+ } & React$1.RefAttributes<HTMLDivElement>>;
93
+ declare const DropdownMenuSubContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
94
+ declare const DropdownMenuContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
95
+ declare const DropdownMenuItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
96
+ inset?: boolean;
97
+ } & React$1.RefAttributes<HTMLDivElement>>;
98
+ declare const DropdownMenuCheckboxItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
99
+ declare const DropdownMenuRadioItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
100
+ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
101
+ inset?: boolean;
102
+ } & React$1.RefAttributes<HTMLDivElement>>;
103
+ declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
104
+ declare const DropdownMenuShortcut: {
105
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
106
+ displayName: string;
107
+ };
108
+
109
+ declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
110
+ declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
111
+ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
112
+ declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
113
+ declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
114
+ declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
115
+ declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
116
+ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
117
+ declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
118
+ declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
119
+
120
+ declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
121
+ declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
122
+ declare const TableBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
123
+ declare const TableFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
124
+ declare const TableRow: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableRowElement> & React$1.RefAttributes<HTMLTableRowElement>>;
125
+ declare const TableHead: React$1.ForwardRefExoticComponent<React$1.ThHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
126
+ declare const TableCell: React$1.ForwardRefExoticComponent<React$1.TdHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
127
+ declare const TableCaption: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableCaptionElement> & React$1.RefAttributes<HTMLTableCaptionElement>>;
128
+
129
+ declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
130
+ declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
131
+ variant?: "default" | "pills" | "underline";
132
+ } & React$1.RefAttributes<HTMLDivElement>>;
133
+ declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
134
+ variant?: "default" | "pills" | "underline";
135
+ } & React$1.RefAttributes<HTMLButtonElement>>;
136
+ declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
137
+
138
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
139
+ variant?: "default" | "sandbox";
140
+ showValue?: boolean;
141
+ } & React$1.RefAttributes<HTMLDivElement>>;
142
+
143
+ declare const Switch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
144
+
145
+ declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
146
+ declare function SkeletonCard({ className }: {
147
+ className?: string;
148
+ }): react_jsx_runtime.JSX.Element;
149
+ declare function SkeletonTable({ rows }: {
150
+ rows?: number;
151
+ }): react_jsx_runtime.JSX.Element;
152
+
153
+ interface Toast {
154
+ id: string;
155
+ title: string;
156
+ description?: string;
157
+ variant?: "default" | "success" | "error" | "warning" | "info";
158
+ duration?: number;
159
+ }
160
+ interface ToastContainerProps {
161
+ toasts: Toast[];
162
+ onDismiss: (id: string) => void;
163
+ }
164
+ declare function ToastContainer({ toasts, onDismiss }: ToastContainerProps): react_jsx_runtime.JSX.Element;
165
+ type ToastInput = Omit<Toast, "id">;
166
+ interface ToastContextValue {
167
+ toasts: Toast[];
168
+ toast: (input: ToastInput) => void;
169
+ success: (title: string, description?: string) => void;
170
+ error: (title: string, description?: string) => void;
171
+ warning: (title: string, description?: string) => void;
172
+ info: (title: string, description?: string) => void;
173
+ dismiss: (id: string) => void;
174
+ }
175
+ declare function ToastProvider({ children }: {
176
+ children: React$1.ReactNode;
177
+ }): react_jsx_runtime.JSX.Element;
178
+ declare function useToast(): ToastContextValue;
179
+
180
+ declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & React$1.RefAttributes<HTMLLabelElement>>;
181
+
182
+ interface EmptyStateProps extends React$1.HTMLAttributes<HTMLDivElement> {
183
+ icon?: React$1.ReactNode;
184
+ title: string;
185
+ description?: string;
186
+ action?: React$1.ReactNode;
187
+ }
188
+ declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & React$1.RefAttributes<HTMLDivElement>>;
189
+
190
+ interface StatCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
191
+ variant?: "default" | "sandbox";
192
+ title: string;
193
+ value: string | number;
194
+ subtitle?: string;
195
+ icon?: React$1.ReactNode;
196
+ trend?: {
197
+ value: number;
198
+ label?: string;
199
+ };
200
+ }
201
+ declare const StatCard: React$1.ForwardRefExoticComponent<StatCardProps & React$1.RefAttributes<HTMLDivElement>>;
202
+
203
+ interface LogoProps {
204
+ variant?: "sandbox";
205
+ size?: "sm" | "md" | "lg" | "xl";
206
+ className?: string;
207
+ iconOnly?: boolean;
208
+ }
209
+ declare function TangleKnot({ size, className }: {
210
+ size: number;
211
+ className?: string;
212
+ }): react_jsx_runtime.JSX.Element;
213
+ declare function Logo({ variant, size, className, iconOnly }: LogoProps): react_jsx_runtime.JSX.Element;
214
+ declare namespace Logo {
215
+ var displayName: string;
216
+ }
217
+
218
+ interface TerminalDisplayProps extends React$1.HTMLAttributes<HTMLDivElement> {
219
+ variant?: "default" | "sandbox";
220
+ title?: string;
221
+ showHeader?: boolean;
222
+ autoScroll?: boolean;
223
+ maxHeight?: string;
224
+ }
225
+ declare const TerminalDisplay: React$1.ForwardRefExoticComponent<TerminalDisplayProps & React$1.RefAttributes<HTMLDivElement>>;
226
+ interface TerminalLineProps extends React$1.HTMLAttributes<HTMLDivElement> {
227
+ type?: "input" | "output" | "error" | "success" | "info" | "thinking" | "command" | "warning";
228
+ prompt?: string;
229
+ timestamp?: string;
230
+ }
231
+ declare const TerminalLine: React$1.ForwardRefExoticComponent<TerminalLineProps & React$1.RefAttributes<HTMLDivElement>>;
232
+ declare const TerminalCursor: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLSpanElement> & React$1.RefAttributes<HTMLSpanElement>>;
233
+ interface TerminalInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "onSubmit"> {
234
+ onSubmit?: (value: string) => void;
235
+ variant?: "default" | "sandbox";
236
+ }
237
+ declare const TerminalInput: React$1.ForwardRefExoticComponent<TerminalInputProps & React$1.RefAttributes<HTMLInputElement>>;
238
+
239
+ interface DropZoneProps {
240
+ /** Called with dropped files */
241
+ onDrop: (files: File[]) => void;
242
+ /** Accepted file types (e.g. ".pdf,.csv,.xlsx") */
243
+ accept?: string;
244
+ /** Whether drop zone is active */
245
+ disabled?: boolean;
246
+ /** Custom overlay content (replaces default) */
247
+ overlay?: ReactNode;
248
+ /** Overlay title */
249
+ title?: string;
250
+ /** Overlay description */
251
+ description?: string;
252
+ /** Overlay icon (Material Symbols name or ReactNode) */
253
+ icon?: string | ReactNode;
254
+ /** Children wrapped by the drop zone */
255
+ children: ReactNode;
256
+ className?: string;
257
+ }
258
+ declare function DropZone({ onDrop, accept, disabled, overlay, title, description, icon, children, className, }: DropZoneProps): react_jsx_runtime.JSX.Element;
259
+
260
+ /**
261
+ * UploadProgress — file upload status indicators.
262
+ *
263
+ * Shows a list of files being uploaded with progress bars,
264
+ * completion checkmarks, and error states.
265
+ */
266
+ interface UploadFile {
267
+ id: string;
268
+ name: string;
269
+ size: number;
270
+ status: "pending" | "uploading" | "complete" | "error";
271
+ progress?: number;
272
+ error?: string;
273
+ }
274
+ interface UploadProgressProps {
275
+ files: UploadFile[];
276
+ onRemove?: (id: string) => void;
277
+ onRetry?: (id: string) => void;
278
+ className?: string;
279
+ }
280
+ declare function UploadProgress({ files, onRemove, onRetry, className }: UploadProgressProps): react_jsx_runtime.JSX.Element | null;
281
+
282
+ interface SidebarDropZoneProps {
283
+ /** Called with dropped files */
284
+ onDrop: (files: File[]) => void;
285
+ /** Accepted file types (e.g. ".pdf,.csv") */
286
+ accept?: string;
287
+ /** Whether drop zone is active */
288
+ disabled?: boolean;
289
+ /** Title shown in the drop zone */
290
+ title?: string;
291
+ /** Description shown below the title */
292
+ description?: string;
293
+ /** Custom icon (replaces default upload icon) */
294
+ icon?: ReactNode;
295
+ /** Always visible (not just on drag). Useful as a persistent upload area. */
296
+ persistent?: boolean;
297
+ className?: string;
298
+ }
299
+ declare function SidebarDropZone({ onDrop, accept, disabled, title, description, icon, persistent, className, }: SidebarDropZoneProps): react_jsx_runtime.JSX.Element;
300
+
301
+ export { SelectSeparator as $, Avatar as A, Badge as B, Card as C, Dialog as D, DropdownMenuRadioGroup as E, DropdownMenuRadioItem as F, DropdownMenuSeparator as G, DropdownMenuShortcut as H, DropdownMenuSub as I, DropdownMenuSubContent as J, DropdownMenuSubTrigger as K, DropdownMenuTrigger as L, EmptyState as M, type EmptyStateProps as N, Input as O, type InputProps as P, Label as Q, Logo as R, type LogoProps as S, Progress as T, Select as U, SelectContent as V, SelectGroup as W, SelectItem as X, SelectLabel as Y, SelectScrollDownButton as Z, SelectScrollUpButton as _, AvatarFallback as a, SelectTrigger as a0, SelectValue as a1, SidebarDropZone as a2, type SidebarDropZoneProps as a3, Skeleton as a4, SkeletonCard as a5, SkeletonTable as a6, StatCard as a7, type StatCardProps as a8, Switch as a9, useToast as aA, Table as aa, TableBody as ab, TableCaption as ac, TableCell as ad, TableFooter as ae, TableHead as af, TableHeader as ag, TableRow as ah, Tabs as ai, TabsContent as aj, TabsList as ak, TabsTrigger as al, TangleKnot as am, TerminalCursor as an, TerminalDisplay as ao, TerminalInput as ap, TerminalLine as aq, Textarea as ar, type TextareaProps as as, type Toast as at, ToastContainer as au, ToastProvider as av, type UploadFile as aw, UploadProgress as ax, type UploadProgressProps as ay, badgeVariants as az, AvatarImage as b, type BadgeProps as c, CardContent as d, CardDescription as e, CardFooter as f, CardHeader as g, CardTitle as h, DialogClose as i, DialogContent as j, DialogDescription as k, DialogFooter as l, DialogHeader as m, DialogOverlay as n, DialogPortal as o, DialogTitle as p, DialogTrigger as q, DropZone as r, type DropZoneProps as s, DropdownMenu as t, DropdownMenuCheckboxItem as u, DropdownMenuContent as v, DropdownMenuGroup as w, DropdownMenuItem as x, DropdownMenuLabel as y, DropdownMenuPortal as z };
package/dist/styles.css CHANGED
@@ -1,4 +1,5 @@
1
1
  /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @import url("https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&family=Outfit:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&display=swap");
2
3
  @layer properties;
3
4
  :root, [data-sandbox-ui] {
4
5
  --md3-surface: #0a0a14;
@@ -403,7 +404,6 @@
403
404
  --radius-pill: 999px;
404
405
  --radius-full: 999px;
405
406
  }
406
- @import url("https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&family=Outfit:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&display=swap");
407
407
  @layer theme, base, components, utilities;
408
408
  @layer theme {
409
409
  :root, :host {
@@ -906,6 +906,9 @@
906
906
  .mr-3 {
907
907
  margin-right: calc(var(--spacing) * 3);
908
908
  }
909
+ .-mb-px {
910
+ margin-bottom: -1px;
911
+ }
909
912
  .mb-0\.5 {
910
913
  margin-bottom: calc(var(--spacing) * 0.5);
911
914
  }
@@ -1607,6 +1610,9 @@
1607
1610
  .flex-row-reverse {
1608
1611
  flex-direction: row-reverse;
1609
1612
  }
1613
+ .flex-nowrap {
1614
+ flex-wrap: nowrap;
1615
+ }
1610
1616
  .flex-wrap {
1611
1617
  flex-wrap: wrap;
1612
1618
  }
@@ -1972,6 +1978,9 @@
1972
1978
  --tw-border-style: none;
1973
1979
  border-style: none;
1974
1980
  }
1981
+ .border-\[var\(--accent-text\)\] {
1982
+ border-color: var(--accent-text);
1983
+ }
1975
1984
  .border-\[var\(--border-accent\)\] {
1976
1985
  border-color: var(--border-accent);
1977
1986
  }
@@ -2140,9 +2149,18 @@
2140
2149
  background-color: color-mix(in srgb,var(--bg-card) 94%,transparent);
2141
2150
  }
2142
2151
  }
2152
+ .bg-\[var\(--accent-surface\)\] {
2153
+ background-color: var(--accent-surface);
2154
+ }
2143
2155
  .bg-\[var\(--accent-surface-soft\)\] {
2144
2156
  background-color: var(--accent-surface-soft);
2145
2157
  }
2158
+ .bg-\[var\(--accent-surface-soft\)\]\/40 {
2159
+ background-color: var(--accent-surface-soft);
2160
+ @supports (color: color-mix(in lab, red, red)) {
2161
+ background-color: color-mix(in oklab, var(--accent-surface-soft) 40%, transparent);
2162
+ }
2163
+ }
2146
2164
  .bg-\[var\(--accent-surface-strong\)\] {
2147
2165
  background-color: var(--accent-surface-strong);
2148
2166
  }
@@ -2898,6 +2916,12 @@
2898
2916
  .text-\[var\(--accent-text\)\] {
2899
2917
  color: var(--accent-text);
2900
2918
  }
2919
+ .text-\[var\(--accent-text\)\]\/80 {
2920
+ color: var(--accent-text);
2921
+ @supports (color: color-mix(in lab, red, red)) {
2922
+ color: color-mix(in oklab, var(--accent-text) 80%, transparent);
2923
+ }
2924
+ }
2901
2925
  .text-\[var\(--brand-cool\)\] {
2902
2926
  color: var(--brand-cool);
2903
2927
  }
@@ -3057,6 +3081,9 @@
3057
3081
  .capitalize {
3058
3082
  text-transform: capitalize;
3059
3083
  }
3084
+ .normal-case {
3085
+ text-transform: none;
3086
+ }
3060
3087
  .uppercase {
3061
3088
  text-transform: uppercase;
3062
3089
  }
@@ -49,6 +49,13 @@ interface PricingPageProps {
49
49
  className?: string;
50
50
  cardClassName?: string;
51
51
  }
52
+ /**
53
+ * Formats an integer cent amount as a human-readable USD price.
54
+ * Whole-dollar amounts omit decimals ($10), fractional amounts show two ($10.99).
55
+ * Returns "$0" for non-finite or negative inputs.
56
+ * @param cents - Amount in whole US cents (e.g. 1099 for $10.99).
57
+ */
58
+ declare function formatPrice(cents: number): string;
52
59
  declare function PricingPage({ tiers, currentTierId, billingPeriod, onBillingPeriodChange, onSelectTier, loading, className, }: PricingPageProps): react_jsx_runtime.JSX.Element;
53
60
 
54
61
  interface UsageDataPoint {
@@ -63,4 +70,4 @@ interface UsageChartProps {
63
70
  }
64
71
  declare function UsageChart({ data, title, unit, className }: UsageChartProps): react_jsx_runtime.JSX.Element;
65
72
 
66
- export { type BillingSubscription as B, type PricingTier as P, type UsageDataPoint as U, type BillingBalance as a, type BillingUsage as b, BillingDashboard as c, type BillingDashboardProps as d, PricingPage as e, type PricingPageProps as f, UsageChart as g, type UsageChartProps as h };
73
+ export { type BillingSubscription as B, type PricingTier as P, type UsageDataPoint as U, type BillingBalance as a, type BillingUsage as b, BillingDashboard as c, type BillingDashboardProps as d, PricingPage as e, type PricingPageProps as f, UsageChart as g, type UsageChartProps as h, formatPrice as i };
@@ -278,6 +278,7 @@ interface ResourceMeterProps {
278
278
  declare function ResourceMeter({ label, value, max, unit, icon, className }: ResourceMeterProps): react_jsx_runtime.JSX.Element;
279
279
 
280
280
  type SandboxStatus = "running" | "hibernating" | "provisioning" | "stopped" | "failed" | "archived" | "creating";
281
+ type TeamRole = "owner" | "admin" | "member" | "viewer";
281
282
  interface SandboxCardData {
282
283
  id: string;
283
284
  name: string;
@@ -291,6 +292,17 @@ interface SandboxCardData {
291
292
  provisioningMessage?: string;
292
293
  provisioningPercent?: number;
293
294
  archivedAt?: string;
295
+ /**
296
+ * Populated when the sandbox is shared with a team. Drives a small
297
+ * "shared with X" badge in the card header so a user can see at a
298
+ * glance which of their sandboxes are personal vs. collaborative.
299
+ */
300
+ team?: {
301
+ id: string;
302
+ name?: string;
303
+ /** Caller's role in the team — the card uses this to gate the Delete action. */
304
+ role: TeamRole;
305
+ };
294
306
  }
295
307
  interface SandboxCardProps {
296
308
  sandbox: SandboxCardData;
@@ -307,6 +319,7 @@ interface SandboxCardProps {
307
319
  onHealth?: (id: string) => void;
308
320
  className?: string;
309
321
  }
322
+ declare function canAdminSandbox(sandbox: SandboxCardData): boolean;
310
323
  declare function SandboxCard({ sandbox, onOpenIDE, onOpenTerminal, onWake, onRestore, onDelete, onStop, onResume, onFork, onKeepAlive, onUsage, onHealth, className }: SandboxCardProps): react_jsx_runtime.JSX.Element;
311
324
  interface NewSandboxCardProps {
312
325
  onClick?: () => void;
@@ -405,4 +418,4 @@ interface VariantListProps {
405
418
  }
406
419
  declare function VariantList({ variants, selectedId, onSelect, onAccept, onReject, isActioning, className, }: VariantListProps): react_jsx_runtime.JSX.Element;
407
420
 
408
- export { type SidebarPanelHeaderProps as $, type RailSeparatorProps as A, type Backend as B, ClusterStatusBar as C, DashboardLayout as D, ResourceMeter as E, type ResourceMeterProps as F, SIDEBAR_PANEL_WIDTH as G, SIDEBAR_RAIL_WIDTH as H, type Invoice as I, SIDEBAR_TOTAL_WIDTH as J, SandboxCard as K, type SandboxCardData as L, type SandboxCardProps as M, type NavItem as N, type SandboxStatus as O, type PanelConfig as P, SandboxTable as Q, RailButton as R, SIDEBAR_MOBILE_WIDTH as S, type SandboxTableProps as T, Sidebar as U, SidebarContent as V, type SidebarContentProps as W, SidebarPanel as X, SidebarPanelContent as Y, type SidebarPanelContentProps as Z, SidebarPanelHeader as _, BackendSelector as a, type SidebarPanelProps as a0, type SidebarProps as a1, SidebarProvider as a2, type SidebarProviderProps as a3, SidebarRail as a4, SidebarRailFooter as a5, type SidebarRailFooterProps as a6, SidebarRailHeader as a7, type SidebarRailHeaderProps as a8, SidebarRailNav as a9, type SidebarRailNavProps as aa, type SidebarRailProps as ab, type SidebarUser as ac, type TopNavLink as ad, VariantList as ae, type VariantListProps as af, useSidebar as ag, type Profile as ah, type PlanFeature as ai, type Variant as aj, type VariantOutcome as ak, type VariantStatus as al, type BackendSelectorProps as b, type ClusterStatusBarProps as c, type ClusterStatusItem as d, CreditBalance as e, type CreditBalanceProps as f, type DashboardLayoutProps as g, type DashboardUser as h, InvoiceTable as i, type InvoiceTableProps as j, NewSandboxCard as k, type NewSandboxCardProps as l, type PlanCardData as m, PlanCards as n, type PlanCardsProps as o, type ProductVariant as p, ProfileAvatar as q, type ProfileAvatarProps as r, ProfileComparison as s, type ProfileComparisonProps as t, ProfileSelector as u, type ProfileSelectorProps as v, type RailButtonProps as w, RailModeButton as x, type RailModeButtonProps as y, RailSeparator as z };
421
+ export { type SidebarPanelHeaderProps as $, type RailSeparatorProps as A, type Backend as B, ClusterStatusBar as C, DashboardLayout as D, ResourceMeter as E, type ResourceMeterProps as F, SIDEBAR_PANEL_WIDTH as G, SIDEBAR_RAIL_WIDTH as H, type Invoice as I, SIDEBAR_TOTAL_WIDTH as J, SandboxCard as K, type SandboxCardData as L, type SandboxCardProps as M, type NavItem as N, type SandboxStatus as O, type PanelConfig as P, SandboxTable as Q, RailButton as R, SIDEBAR_MOBILE_WIDTH as S, type SandboxTableProps as T, Sidebar as U, SidebarContent as V, type SidebarContentProps as W, SidebarPanel as X, SidebarPanelContent as Y, type SidebarPanelContentProps as Z, SidebarPanelHeader as _, BackendSelector as a, type SidebarPanelProps as a0, type SidebarProps as a1, SidebarProvider as a2, type SidebarProviderProps as a3, SidebarRail as a4, SidebarRailFooter as a5, type SidebarRailFooterProps as a6, SidebarRailHeader as a7, type SidebarRailHeaderProps as a8, SidebarRailNav as a9, type SidebarRailNavProps as aa, type SidebarRailProps as ab, type SidebarUser as ac, type TopNavLink as ad, VariantList as ae, type VariantListProps as af, useSidebar as ag, type Profile as ah, type PlanFeature as ai, type TeamRole as aj, type Variant as ak, type VariantOutcome as al, type VariantStatus as am, canAdminSandbox as an, type BackendSelectorProps as b, type ClusterStatusBarProps as c, type ClusterStatusItem as d, CreditBalance as e, type CreditBalanceProps as f, type DashboardLayoutProps as g, type DashboardUser as h, InvoiceTable as i, type InvoiceTableProps as j, NewSandboxCard as k, type NewSandboxCardProps as l, type PlanCardData as m, PlanCards as n, type PlanCardsProps as o, type ProductVariant as p, ProfileAvatar as q, type ProfileAvatarProps as r, ProfileComparison as s, type ProfileComparisonProps as t, ProfileSelector as u, type ProfileSelectorProps as v, type RailButtonProps as w, RailModeButton as x, type RailModeButtonProps as y, RailSeparator as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.10.4",
3
+ "version": "0.10.6",
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",