@tangle-network/sandbox-ui 0.14.0 → 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/auth.d.ts +1 -74
  2. package/dist/auth.js +1 -4
  3. package/dist/chat.d.ts +1 -136
  4. package/dist/chat.js +2 -15
  5. package/dist/chunk-2BUPSB7O.js +0 -0
  6. package/dist/chunk-3J6FG3FJ.js +18 -0
  7. package/dist/chunk-76IQLPW2.js +206 -0
  8. package/dist/chunk-7ZA5SEK3.js +239 -0
  9. package/dist/chunk-AZ3AWMTM.js +8 -0
  10. package/dist/chunk-CMY7W45U.js +380 -0
  11. package/dist/chunk-EI44GEQ5.js +6 -0
  12. package/dist/chunk-ENMWGVDL.js +858 -0
  13. package/dist/{chunk-5OQ27N57.js → chunk-GPT7VKK6.js} +34 -38
  14. package/dist/chunk-HLZTKSGT.js +2652 -0
  15. package/dist/chunk-JBGKGLD7.js +16 -0
  16. package/dist/chunk-NJNME4J4.js +14 -0
  17. package/dist/chunk-QPAJR74X.js +20 -0
  18. package/dist/chunk-TK46XFLM.js +28 -0
  19. package/dist/chunk-WID73FPH.js +89 -0
  20. package/dist/chunk-YVXK4XRO.js +30 -0
  21. package/dist/dashboard.d.ts +450 -4
  22. package/dist/dashboard.js +20 -891
  23. package/dist/editor.d.ts +1 -120
  24. package/dist/editor.js +1 -5
  25. package/dist/files.d.ts +1 -129
  26. package/dist/files.js +2 -7
  27. package/dist/globals.css +2 -1265
  28. package/dist/hooks.d.ts +114 -11
  29. package/dist/hooks.js +17 -88
  30. package/dist/index.d.ts +24 -99
  31. package/dist/index.js +251 -256
  32. package/dist/markdown.d.ts +1 -29
  33. package/dist/markdown.js +2 -2
  34. package/dist/openui.d.ts +8 -115
  35. package/dist/openui.js +1 -6
  36. package/dist/pages.d.ts +13 -12
  37. package/dist/pages.js +91 -115
  38. package/dist/primitives.d.ts +14 -49
  39. package/dist/primitives.js +69 -77
  40. package/dist/run.d.ts +1 -14
  41. package/dist/run.js +2 -22
  42. package/dist/sdk-hooks.d.ts +3 -283
  43. package/dist/sdk-hooks.js +10 -14
  44. package/dist/stores.d.ts +2 -14
  45. package/dist/stores.js +11 -39
  46. package/dist/styles.css +2 -1265
  47. package/dist/template-card-DStb8boW.d.ts +183 -0
  48. package/dist/types.d.ts +11 -8
  49. package/dist/types.js +1 -0
  50. package/dist/utils.d.ts +1 -44
  51. package/dist/utils.js +6 -12
  52. package/dist/workspace.d.ts +5 -10
  53. package/dist/workspace.js +3 -19
  54. package/package.json +19 -54
  55. package/dist/active-sessions-store-CeOmXgv5.d.ts +0 -85
  56. package/dist/artifact-pane-Bh45Ssco.d.ts +0 -24
  57. package/dist/branding-DCi5VEik.d.ts +0 -13
  58. package/dist/button-CMQuQEW_.d.ts +0 -17
  59. package/dist/chat-container-f4yEs6KN.d.ts +0 -106
  60. package/dist/chunk-34A66VBG.js +0 -214
  61. package/dist/chunk-34I7UFSX.js +0 -92
  62. package/dist/chunk-36QY2W5G.js +0 -802
  63. package/dist/chunk-4CLN43XT.js +0 -45
  64. package/dist/chunk-54SQQMMM.js +0 -156
  65. package/dist/chunk-66EZOYZR.js +0 -102
  66. package/dist/chunk-BX6AQMUS.js +0 -183
  67. package/dist/chunk-DI3NZ5ZX.js +0 -192
  68. package/dist/chunk-DPGIXDAI.js +0 -220
  69. package/dist/chunk-DXMIEK4K.js +0 -1426
  70. package/dist/chunk-GSZA3TSY.js +0 -79
  71. package/dist/chunk-HB5Y37YU.js +0 -54
  72. package/dist/chunk-LQNEZDRM.js +0 -109
  73. package/dist/chunk-MA7YKRUP.js +0 -131
  74. package/dist/chunk-MKTSMWVD.js +0 -109
  75. package/dist/chunk-MQXABZTB.js +0 -1348
  76. package/dist/chunk-MT5FJ3ZT.js +0 -186
  77. package/dist/chunk-NKUPJC34.js +0 -2070
  78. package/dist/chunk-OEX7NZE3.js +0 -321
  79. package/dist/chunk-OKLQVY3Y.js +0 -139
  80. package/dist/chunk-Q56BYXQF.js +0 -61
  81. package/dist/chunk-QD4QE5P5.js +0 -40
  82. package/dist/chunk-QDH5GEGY.js +0 -630
  83. package/dist/chunk-QID2OOMG.js +0 -133
  84. package/dist/chunk-QMU2PWOU.js +0 -493
  85. package/dist/chunk-RQHJBTEU.js +0 -10
  86. package/dist/chunk-T7HMZEVO.js +0 -216
  87. package/dist/chunk-U6QTHMY6.js +0 -1290
  88. package/dist/chunk-US6JKJKH.js +0 -124
  89. package/dist/chunk-VX3XOUEB.js +0 -63
  90. package/dist/chunk-XLG757B6.js +0 -933
  91. package/dist/chunk-ZMNSRDMH.js +0 -127
  92. package/dist/chunk-ZNCEM5CD.js +0 -316
  93. package/dist/document-editor-pane-A70-EhdQ.d.ts +0 -124
  94. package/dist/document-editor-pane-TLPVRBBU.js +0 -11
  95. package/dist/expanded-tool-detail-Dh99mcbY.d.ts +0 -63
  96. package/dist/file-tabs-BLfxfmAH.d.ts +0 -51
  97. package/dist/parts-CyGkM6Fp.d.ts +0 -50
  98. package/dist/run-CtFZ6s-D.d.ts +0 -41
  99. package/dist/sidebar-drop-zone-tDBsuOH5.d.ts +0 -301
  100. package/dist/sidecar-CFU2W9j1.d.ts +0 -8
  101. package/dist/template-card-BAtvcAkU.d.ts +0 -18
  102. package/dist/tool-call-feed-Bs3MyQMT.d.ts +0 -68
  103. package/dist/tool-display-Ct9nFAzJ.d.ts +0 -32
  104. package/dist/usage-chart-CPTcNlGs.d.ts +0 -73
  105. package/dist/use-sandbox-metrics-DWc0k9Xm.d.ts +0 -153
  106. package/dist/variant-list-BrHYcBCk.d.ts +0 -540
@@ -1,106 +0,0 @@
1
- import * as React from 'react';
2
- import { ReactNode } from 'react';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { S as SessionMessage, a as SessionPart, b as ToolPart } from './parts-CyGkM6Fp.js';
5
- import { A as AgentBranding } from './branding-DCi5VEik.js';
6
- import { C as CustomToolRenderer } from './tool-display-Ct9nFAzJ.js';
7
- import { R as Run } from './run-CtFZ6s-D.js';
8
- import { OpenUIAction } from './openui.js';
9
-
10
- /**
11
- * ChatInput — message input bar with file attach, drag-and-drop, send/cancel.
12
- *
13
- * - Auto-resizing textarea (up to max height)
14
- * - Enter to send, Shift+Enter for newline
15
- * - Drag-and-drop files onto the input with styled overlay
16
- * - File attachment button (files) + folder attachment button
17
- * - Pending file/folder chips
18
- * - Cancel button when streaming
19
- * - Optional model selector pill
20
- */
21
- interface PendingFile {
22
- id: string;
23
- name: string;
24
- size: number;
25
- type: "file" | "folder";
26
- /** Number of files inside (for folders) */
27
- fileCount?: number;
28
- status: "pending" | "uploading" | "ready" | "error";
29
- }
30
- interface ChatInputProps {
31
- onSend: (message: string, files?: File[]) => void;
32
- onCancel?: () => void;
33
- isStreaming?: boolean;
34
- disabled?: boolean;
35
- placeholder?: string;
36
- /** Currently selected model label */
37
- modelLabel?: string;
38
- onModelClick?: () => void;
39
- /** Pending uploaded files */
40
- pendingFiles?: PendingFile[];
41
- onRemoveFile?: (id: string) => void;
42
- /** Called when files are attached (via button or drag-and-drop) */
43
- onAttach?: (files: FileList) => void;
44
- /** Called when a folder is selected via the folder button */
45
- onAttachFolder?: (files: FileList) => void;
46
- /** Accepted file types for the file input (e.g. ".pdf,.csv") */
47
- accept?: string;
48
- /** Drop zone overlay title */
49
- dropTitle?: string;
50
- /** Drop zone overlay description */
51
- dropDescription?: string;
52
- className?: string;
53
- /** Label above the input. Set to null to hide. Default: "Agent Command Deck" */
54
- inputLabel?: string | null;
55
- /** Status text shown when idle. Set to null to hide. Default: "Ready for next instruction" */
56
- idleStatus?: string | null;
57
- /** Status text shown when streaming. Set to null to hide. Default: "Streaming response" */
58
- streamingStatus?: string | null;
59
- /** Hide the Cmd+L focus shortcut hint */
60
- hideShortcutHint?: boolean;
61
- }
62
- declare function ChatInput({ onSend, onCancel, isStreaming, disabled, placeholder, modelLabel, onModelClick, pendingFiles, onRemoveFile, onAttach, onAttachFolder, accept, dropTitle, dropDescription, className, inputLabel, idleStatus, streamingStatus, hideShortcutHint, }: ChatInputProps): react_jsx_runtime.JSX.Element;
63
-
64
- interface ChatContainerProps {
65
- messages: SessionMessage[];
66
- partMap: Record<string, SessionPart[]>;
67
- isStreaming: boolean;
68
- onSend?: (text: string) => void;
69
- onCancel?: () => void;
70
- branding?: AgentBranding;
71
- placeholder?: string;
72
- className?: string;
73
- /** Hide the input area (useful for read-only views). */
74
- hideInput?: boolean;
75
- /** Custom renderer for tool details. Return ReactNode to override, null to use default. */
76
- renderToolDetail?: CustomToolRenderer;
77
- /** Presentation mode for the session view. */
78
- presentation?: "runs" | "timeline";
79
- modelLabel?: string;
80
- onModelClick?: () => void;
81
- pendingFiles?: PendingFile[];
82
- onRemoveFile?: (id: string) => void;
83
- onAttach?: (files: FileList) => void;
84
- disabled?: boolean;
85
- /** Callback when an OpenUI action button is pressed within inline OpenUI blocks. */
86
- onOpenUIAction?: (action: OpenUIAction) => void;
87
- /** Enable rendering OpenUI schemas inline in the chat timeline. Defaults to true. */
88
- enableOpenUI?: boolean;
89
- /** Optional actions rendered beside each grouped assistant run. */
90
- renderRunActions?: (run: Run) => ReactNode;
91
- /** Optional actions rendered below each user message bubble. */
92
- renderUserMessageActions?: (message: SessionMessage, parts: SessionPart[]) => ReactNode;
93
- /** Optional actions rendered beside individual tool items. */
94
- renderToolActions?: (part: ToolPart, options: {
95
- run: Run;
96
- messageId: string;
97
- partIndex: number;
98
- }) => ReactNode;
99
- }
100
- /**
101
- * Full chat container: message list + auto-scroll + input area.
102
- * Orchestrates useRunGroups, useRunCollapseState, and useAutoScroll.
103
- */
104
- declare const ChatContainer: React.MemoExoticComponent<({ messages, partMap, isStreaming, onSend, onCancel, branding, placeholder, className, hideInput, renderToolDetail, presentation, modelLabel, onModelClick, pendingFiles, onRemoveFile, onAttach, disabled, onOpenUIAction, enableOpenUI, renderRunActions, renderUserMessageActions, renderToolActions, }: ChatContainerProps) => react_jsx_runtime.JSX.Element>;
105
-
106
- export { ChatContainer as C, type PendingFile as P, type ChatContainerProps as a, ChatInput as b, type ChatInputProps as c };
@@ -1,214 +0,0 @@
1
- import {
2
- cn
3
- } from "./chunk-RQHJBTEU.js";
4
-
5
- // src/primitives/avatar.tsx
6
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
7
- import * as React from "react";
8
- import { jsx } from "react/jsx-runtime";
9
- var Avatar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
10
- AvatarPrimitive.Root,
11
- {
12
- ref,
13
- className: cn(
14
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
15
- className
16
- ),
17
- ...props
18
- }
19
- ));
20
- Avatar.displayName = AvatarPrimitive.Root.displayName;
21
- var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
22
- AvatarPrimitive.Image,
23
- {
24
- ref,
25
- className: cn("aspect-square h-full w-full", className),
26
- ...props
27
- }
28
- ));
29
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
30
- var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
31
- AvatarPrimitive.Fallback,
32
- {
33
- ref,
34
- className: cn(
35
- "flex h-full w-full items-center justify-center rounded-full bg-muted font-medium text-sm",
36
- className
37
- ),
38
- ...props
39
- }
40
- ));
41
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
42
-
43
- // src/primitives/dropdown-menu.tsx
44
- import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
45
- import { Check, ChevronRight, Circle } from "lucide-react";
46
- import * as React2 from "react";
47
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
48
- var DropdownMenu = DropdownMenuPrimitive.Root;
49
- var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
50
- var DropdownMenuGroup = DropdownMenuPrimitive.Group;
51
- var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
52
- var DropdownMenuSub = DropdownMenuPrimitive.Sub;
53
- var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
54
- var DropdownMenuSubTrigger = React2.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
55
- DropdownMenuPrimitive.SubTrigger,
56
- {
57
- ref,
58
- className: cn(
59
- "flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none",
60
- "focus:bg-accent data-[state=open]:bg-muted/50",
61
- inset && "pl-8",
62
- className
63
- ),
64
- ...props,
65
- children: [
66
- children,
67
- /* @__PURE__ */ jsx2(ChevronRight, { className: "ml-auto h-4 w-4" })
68
- ]
69
- }
70
- ));
71
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
72
- var DropdownMenuSubContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
73
- DropdownMenuPrimitive.SubContent,
74
- {
75
- ref,
76
- className: cn(
77
- "z-50 min-w-[8rem] overflow-hidden rounded-xl border border-border bg-card p-1 text-foreground shadow-[var(--shadow-card)]",
78
- "data-[state=closed]:animate-out data-[state=open]:animate-in",
79
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
80
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
81
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
82
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
83
- className
84
- ),
85
- ...props
86
- }
87
- ));
88
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
89
- var DropdownMenuContent = React2.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx2(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx2(
90
- DropdownMenuPrimitive.Content,
91
- {
92
- ref,
93
- sideOffset,
94
- className: cn(
95
- "z-50 min-w-[8rem] overflow-hidden rounded-xl border border-border bg-card p-1 text-foreground shadow-[var(--shadow-card)]",
96
- "data-[state=closed]:animate-out data-[state=open]:animate-in",
97
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
98
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
99
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
100
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
101
- className
102
- ),
103
- ...props
104
- }
105
- ) }));
106
- DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
107
- var DropdownMenuItem = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx2(
108
- DropdownMenuPrimitive.Item,
109
- {
110
- ref,
111
- className: cn(
112
- "relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none transition-colors",
113
- "focus:bg-muted/50 focus:text-foreground",
114
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
115
- inset && "pl-8",
116
- className
117
- ),
118
- ...props
119
- }
120
- ));
121
- DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
122
- var DropdownMenuCheckboxItem = React2.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
123
- DropdownMenuPrimitive.CheckboxItem,
124
- {
125
- ref,
126
- className: cn(
127
- "relative flex cursor-pointer select-none items-center rounded-md py-1.5 pr-2 pl-8 text-sm outline-none transition-colors",
128
- "focus:bg-muted/50 focus:text-foreground",
129
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
130
- className
131
- ),
132
- checked,
133
- ...props,
134
- children: [
135
- /* @__PURE__ */ jsx2("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx2(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx2(Check, { className: "h-4 w-4" }) }) }),
136
- children
137
- ]
138
- }
139
- ));
140
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
141
- var DropdownMenuRadioItem = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
142
- DropdownMenuPrimitive.RadioItem,
143
- {
144
- ref,
145
- className: cn(
146
- "relative flex cursor-pointer select-none items-center rounded-md py-1.5 pr-2 pl-8 text-sm outline-none transition-colors",
147
- "focus:bg-muted/50 focus:text-foreground",
148
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
149
- className
150
- ),
151
- ...props,
152
- children: [
153
- /* @__PURE__ */ jsx2("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx2(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx2(Circle, { className: "h-2 w-2 fill-current" }) }) }),
154
- children
155
- ]
156
- }
157
- ));
158
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
159
- var DropdownMenuLabel = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx2(
160
- DropdownMenuPrimitive.Label,
161
- {
162
- ref,
163
- className: cn(
164
- "px-2 py-1.5 font-semibold text-sm",
165
- inset && "pl-8",
166
- className
167
- ),
168
- ...props
169
- }
170
- ));
171
- DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
172
- var DropdownMenuSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
173
- DropdownMenuPrimitive.Separator,
174
- {
175
- ref,
176
- className: cn("-mx-1 my-1 h-px bg-border", className),
177
- ...props
178
- }
179
- ));
180
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
181
- var DropdownMenuShortcut = ({
182
- className,
183
- ...props
184
- }) => {
185
- return /* @__PURE__ */ jsx2(
186
- "span",
187
- {
188
- className: cn("ml-auto text-xs tracking-widest opacity-60", className),
189
- ...props
190
- }
191
- );
192
- };
193
- DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
194
-
195
- export {
196
- Avatar,
197
- AvatarImage,
198
- AvatarFallback,
199
- DropdownMenu,
200
- DropdownMenuTrigger,
201
- DropdownMenuGroup,
202
- DropdownMenuPortal,
203
- DropdownMenuSub,
204
- DropdownMenuRadioGroup,
205
- DropdownMenuSubTrigger,
206
- DropdownMenuSubContent,
207
- DropdownMenuContent,
208
- DropdownMenuItem,
209
- DropdownMenuCheckboxItem,
210
- DropdownMenuRadioItem,
211
- DropdownMenuLabel,
212
- DropdownMenuSeparator,
213
- DropdownMenuShortcut
214
- };
@@ -1,92 +0,0 @@
1
- import {
2
- cn
3
- } from "./chunk-RQHJBTEU.js";
4
-
5
- // src/primitives/table.tsx
6
- import * as React from "react";
7
- import { jsx } from "react/jsx-runtime";
8
- var Table = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
9
- "table",
10
- {
11
- ref,
12
- className: cn("w-full caption-bottom text-sm", className),
13
- ...props
14
- }
15
- ) }));
16
- Table.displayName = "Table";
17
- var TableHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
18
- TableHeader.displayName = "TableHeader";
19
- var TableBody = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
20
- "tbody",
21
- {
22
- ref,
23
- className: cn("[&_tr:last-child]:border-0", className),
24
- ...props
25
- }
26
- ));
27
- TableBody.displayName = "TableBody";
28
- var TableFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
29
- "tfoot",
30
- {
31
- ref,
32
- className: cn(
33
- "border-t bg-card font-medium [&>tr]:last:border-b-0",
34
- className
35
- ),
36
- ...props
37
- }
38
- ));
39
- TableFooter.displayName = "TableFooter";
40
- var TableRow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
41
- "tr",
42
- {
43
- ref,
44
- className: cn(
45
- "border-border border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted/50",
46
- className
47
- ),
48
- ...props
49
- }
50
- ));
51
- TableRow.displayName = "TableRow";
52
- var TableHead = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
53
- "th",
54
- {
55
- ref,
56
- className: cn(
57
- "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
58
- className
59
- ),
60
- ...props
61
- }
62
- ));
63
- TableHead.displayName = "TableHead";
64
- var TableCell = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
65
- "td",
66
- {
67
- ref,
68
- className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
69
- ...props
70
- }
71
- ));
72
- TableCell.displayName = "TableCell";
73
- var TableCaption = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
74
- "caption",
75
- {
76
- ref,
77
- className: cn("mt-4 text-muted-foreground text-sm", className),
78
- ...props
79
- }
80
- ));
81
- TableCaption.displayName = "TableCaption";
82
-
83
- export {
84
- Table,
85
- TableHeader,
86
- TableBody,
87
- TableFooter,
88
- TableRow,
89
- TableHead,
90
- TableCell,
91
- TableCaption
92
- };