@shapesos/clay 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/artifacts.cjs +695 -246
  2. package/dist/artifacts.cjs.map +1 -1
  3. package/dist/artifacts.d.cts +133 -5
  4. package/dist/artifacts.d.ts +133 -5
  5. package/dist/artifacts.js +7 -2
  6. package/dist/blocks.cjs +705 -259
  7. package/dist/blocks.cjs.map +1 -1
  8. package/dist/blocks.css +1 -1
  9. package/dist/blocks.d.cts +8 -10
  10. package/dist/blocks.d.ts +8 -10
  11. package/dist/blocks.js +3 -2
  12. package/dist/capture.cjs +220 -0
  13. package/dist/capture.cjs.map +1 -0
  14. package/dist/capture.d.cts +113 -0
  15. package/dist/capture.d.ts +113 -0
  16. package/dist/capture.js +17 -0
  17. package/dist/chat.cjs +724 -287
  18. package/dist/chat.cjs.map +1 -1
  19. package/dist/chat.d.cts +2 -2
  20. package/dist/chat.d.ts +2 -2
  21. package/dist/chat.js +4 -3
  22. package/dist/{chunk-36CB624W.js → chunk-26XVDY6Z.js} +3 -3
  23. package/dist/chunk-26XVDY6Z.js.map +1 -0
  24. package/dist/{chunk-Z5JWF24N.js → chunk-DT44KNCV.js} +367 -82
  25. package/dist/chunk-DT44KNCV.js.map +1 -0
  26. package/dist/chunk-JAGNXEWK.js +116 -0
  27. package/dist/chunk-JAGNXEWK.js.map +1 -0
  28. package/dist/chunk-LXYCT4YO.js +7 -0
  29. package/dist/chunk-LXYCT4YO.js.map +1 -0
  30. package/dist/{chunk-FFX3CAOX.js → chunk-QH2WW2MW.js} +3 -3
  31. package/dist/chunk-RSRNSWJN.js +1 -0
  32. package/dist/chunk-RSRNSWJN.js.map +1 -0
  33. package/dist/dom-to-image-NATF3446.js +21 -0
  34. package/dist/dom-to-image-NATF3446.js.map +1 -0
  35. package/dist/index.cjs +763 -317
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +3 -3
  38. package/dist/index.d.ts +3 -3
  39. package/dist/index.js +9 -4
  40. package/dist/{types-C0BvwliI.d.cts → types-BzXPBy6s.d.cts} +39 -41
  41. package/dist/{types-uPfn67Dc.d.ts → types-CW45GBXl.d.cts} +25 -13
  42. package/dist/{types-DCutaXjZ.d.cts → types-D1b8v7EY.d.ts} +25 -13
  43. package/dist/{types-C5bFH4v3.d.ts → types-GCkXbyFm.d.ts} +39 -41
  44. package/package.json +12 -2
  45. package/dist/chunk-36CB624W.js.map +0 -1
  46. package/dist/chunk-AQEJRMRN.js +0 -1
  47. package/dist/chunk-Z5JWF24N.js.map +0 -1
  48. /package/dist/{chunk-AQEJRMRN.js.map → capture.js.map} +0 -0
  49. /package/dist/{chunk-FFX3CAOX.js.map → chunk-QH2WW2MW.js.map} +0 -0
package/dist/chat.cjs CHANGED
@@ -5,6 +5,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __esm = (fn, res) => function __init() {
9
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
+ };
8
11
  var __export = (target, all) => {
9
12
  for (var name in all)
10
13
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -27,6 +30,239 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
27
30
  ));
28
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
32
 
33
+ // src/capture/capture-exclude-attribute.ts
34
+ var CAPTURE_EXCLUDE_ATTRIBUTE;
35
+ var init_capture_exclude_attribute = __esm({
36
+ "src/capture/capture-exclude-attribute.ts"() {
37
+ "use strict";
38
+ CAPTURE_EXCLUDE_ATTRIBUTE = "data-clay-capture-exclude";
39
+ }
40
+ });
41
+
42
+ // src/tokens/colors.ts
43
+ var colors;
44
+ var init_colors = __esm({
45
+ "src/tokens/colors.ts"() {
46
+ "use strict";
47
+ colors = {
48
+ // White
49
+ white: "#FFFFFF",
50
+ "white-alpha-85": "rgba(255, 255, 255, 0.85)",
51
+ "white-alpha-40": "rgba(255, 255, 255, 0.40)",
52
+ // Brown
53
+ "brown-10": "#FAF9F8",
54
+ "brown-20": "#F5F3F0",
55
+ "brown-30": "#EEEBE5",
56
+ "brown-40": "#E6E2DA",
57
+ "brown-50": "#CFCBC4",
58
+ "brown-60": "#A19E99",
59
+ "brown-70": "#73716D",
60
+ "brown-80": "#5C5A57",
61
+ "brown-90": "#2E2D2C",
62
+ "brown-100": "#171716",
63
+ "brown-alpha-12": "rgba(23, 23, 22, 0.12)",
64
+ "brown-alpha-20": "rgba(23, 23, 22, 0.20)",
65
+ "brown-alpha-55": "rgba(23, 23, 22, 0.55)",
66
+ "brown-alpha-70": "rgba(23, 23, 22, 0.70)",
67
+ "brown-alpha-80": "rgba(23, 23, 22, 0.80)",
68
+ "brown-alpha-90": "rgba(23, 23, 22, 0.90)",
69
+ // Fuchsia
70
+ "fuchsia-50": "#FAF5FF",
71
+ "fuchsia-300": "#F0ABFC",
72
+ "fuchsia-500": "#D946EF",
73
+ "fuchsia-600": "#C026D3",
74
+ "fuchsia-800": "#86198F",
75
+ // Pink
76
+ "pink-50": "#FDF2F8",
77
+ "pink-400": "#F472B6",
78
+ "pink-600": "#DB2777",
79
+ "pink-800": "#9D174D",
80
+ // Violet
81
+ "violet-50": "#F5F3FF",
82
+ "violet-400": "#A78BFA",
83
+ "violet-600": "#7C3AED",
84
+ "violet-800": "#5B21B6",
85
+ // Indigo
86
+ "indigo-50": "#EEF2FF",
87
+ "indigo-400": "#818CF8",
88
+ "indigo-500": "#6366F1",
89
+ "indigo-600": "#4F46E5",
90
+ "indigo-800": "#3730A3",
91
+ // Cyan
92
+ "cyan-50": "#E7FEFF",
93
+ "cyan-300": "#67E8F9",
94
+ "cyan-600": "#0891B2",
95
+ "cyan-900": "#164E63",
96
+ // Teal
97
+ "teal-50": "#EBFDF9",
98
+ "teal-300": "#5EEAD4",
99
+ "teal-600": "#0D9488",
100
+ // Rose
101
+ "rose-400": "#FB7185",
102
+ // Purple
103
+ "purple-400": "#C084FC",
104
+ // Blue
105
+ "blue-50": "#EFF6FF",
106
+ "blue-100": "#DBEAFE",
107
+ "blue-300": "#93C5FD",
108
+ "blue-400": "#60A5FA",
109
+ "blue-600": "#2563EB",
110
+ "blue-800": "#1E40AF",
111
+ // Sky
112
+ "sky-300": "#7DD3FC",
113
+ // Green
114
+ "green-50": "#ECF9F0",
115
+ "green-100": "#D4F1D9",
116
+ "green-400": "#3DC269",
117
+ "green-700": "#277C43",
118
+ "green-800": "#1C5930",
119
+ // Orange
120
+ "orange-50": "#FFF7ED",
121
+ "orange-100": "#FFEDD5",
122
+ "orange-200": "#FED7AA",
123
+ "orange-500": "#F97316",
124
+ "orange-600": "#EA580C",
125
+ // Red
126
+ "red-50": "#FEF2F2",
127
+ "red-100": "#FEE2E2",
128
+ "red-200": "#FECACA",
129
+ "red-400": "#F7776C",
130
+ "red-500": "#EF4444",
131
+ "red-600": "#DC2626"
132
+ };
133
+ }
134
+ });
135
+
136
+ // src/capture/_font-data-urls.generated.ts
137
+ var GEIST_LATIN_WOFF2_DATA_URL, CRIMSON_PRO_LATIN_WOFF2_DATA_URL;
138
+ var init_font_data_urls_generated = __esm({
139
+ "src/capture/_font-data-urls.generated.ts"() {
140
+ "use strict";
141
+ GEIST_LATIN_WOFF2_DATA_URL = "data:font/woff2;base64,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";
142
+ CRIMSON_PRO_LATIN_WOFF2_DATA_URL = "data:font/woff2;base64,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";
143
+ }
144
+ });
145
+
146
+ // src/capture/font-embed.ts
147
+ var CLAY_FONTS_EMBED_CSS;
148
+ var init_font_embed = __esm({
149
+ "src/capture/font-embed.ts"() {
150
+ "use strict";
151
+ init_font_data_urls_generated();
152
+ CLAY_FONTS_EMBED_CSS = `
153
+ @font-face {
154
+ font-family: 'Geist';
155
+ font-style: normal;
156
+ font-weight: 100 900;
157
+ font-display: swap;
158
+ src: url(${GEIST_LATIN_WOFF2_DATA_URL}) format('woff2-variations');
159
+ }
160
+ @font-face {
161
+ font-family: 'Crimson Pro';
162
+ font-style: normal;
163
+ font-weight: 200 900;
164
+ font-display: swap;
165
+ src: url(${CRIMSON_PRO_LATIN_WOFF2_DATA_URL}) format('woff2-variations');
166
+ }
167
+ `.trim();
168
+ }
169
+ });
170
+
171
+ // src/capture/dom-to-image.ts
172
+ var dom_to_image_exports = {};
173
+ __export(dom_to_image_exports, {
174
+ CAPTURE_EXCLUDE_ATTRIBUTE: () => CAPTURE_EXCLUDE_ATTRIBUTE,
175
+ _resetFontEmbedCacheForTests: () => _resetFontEmbedCacheForTests,
176
+ copyNodeAsPng: () => copyNodeAsPng,
177
+ downloadNodeAsPng: () => downloadNodeAsPng,
178
+ nodeToPngBlob: () => nodeToPngBlob,
179
+ truncateErrorMessage: () => truncateErrorMessage
180
+ });
181
+ function defaultFilter(node) {
182
+ if (typeof node.getAttribute !== "function") return true;
183
+ return !node.hasAttribute(CAPTURE_EXCLUDE_ATTRIBUTE);
184
+ }
185
+ function composeFilter(caller) {
186
+ if (!caller) return defaultFilter;
187
+ return (node) => defaultFilter(node) && caller(node);
188
+ }
189
+ async function resolveFontEmbedCSS(node) {
190
+ if (cachedFontEmbedCSS !== null) return cachedFontEmbedCSS;
191
+ if (inflightFontEmbedCSS !== null) return inflightFontEmbedCSS;
192
+ inflightFontEmbedCSS = (0, import_html_to_image.getFontEmbedCSS)(node).catch(() => "").then((dynamicCss) => {
193
+ const combined = `${CLAY_FONTS_EMBED_CSS}
194
+ ${dynamicCss}`;
195
+ cachedFontEmbedCSS = combined;
196
+ return combined;
197
+ }).finally(() => {
198
+ inflightFontEmbedCSS = null;
199
+ });
200
+ return inflightFontEmbedCSS;
201
+ }
202
+ function _resetFontEmbedCacheForTests() {
203
+ cachedFontEmbedCSS = null;
204
+ inflightFontEmbedCSS = null;
205
+ }
206
+ async function nodeToPngBlob(node, options = {}) {
207
+ const fontEmbedCSS = options.fontEmbedCSS ?? await resolveFontEmbedCSS(node).catch(() => void 0);
208
+ const rect = node.getBoundingClientRect();
209
+ const width = options.width ?? rect.width;
210
+ const height = options.height ?? rect.height;
211
+ const blob = await (0, import_html_to_image.toBlob)(node, {
212
+ backgroundColor: options.backgroundColor ?? DEFAULT_BACKGROUND,
213
+ cacheBust: options.cacheBust ?? true,
214
+ filter: composeFilter(options.filter),
215
+ pixelRatio: options.pixelRatio,
216
+ width,
217
+ height,
218
+ fontEmbedCSS
219
+ });
220
+ if (!blob) throw new Error("Failed to rasterise node \u2014 toBlob returned null (possible cross-origin canvas taint).");
221
+ return blob;
222
+ }
223
+ async function copyNodeAsPng(node, options = {}) {
224
+ if (typeof ClipboardItem === "undefined") {
225
+ throw new Error("Clipboard image writes are not supported in this environment (ClipboardItem missing).");
226
+ }
227
+ if (!navigator.clipboard) {
228
+ throw new Error("Clipboard API unavailable \u2014 secure context (HTTPS) required.");
229
+ }
230
+ const blobPromise = nodeToPngBlob(node, options);
231
+ void blobPromise.catch(() => void 0);
232
+ const item = new ClipboardItem({ "image/png": blobPromise });
233
+ await Promise.all([navigator.clipboard.write([item]), blobPromise]);
234
+ }
235
+ async function downloadNodeAsPng(node, filename, options = {}) {
236
+ const blob = await nodeToPngBlob(node, options);
237
+ const url = URL.createObjectURL(blob);
238
+ const a = document.createElement("a");
239
+ a.href = url;
240
+ a.download = filename;
241
+ a.rel = "noopener noreferrer";
242
+ document.body.appendChild(a);
243
+ a.click();
244
+ a.remove();
245
+ setTimeout(() => URL.revokeObjectURL(url), OBJECT_URL_REVOKE_DELAY_MS);
246
+ }
247
+ function truncateErrorMessage(message, max = MAX_ERROR_MESSAGE_CHARS) {
248
+ return message.length <= max ? message : `${message.slice(0, max - 1)}\u2026`;
249
+ }
250
+ var import_html_to_image, DEFAULT_BACKGROUND, MAX_ERROR_MESSAGE_CHARS, cachedFontEmbedCSS, inflightFontEmbedCSS, OBJECT_URL_REVOKE_DELAY_MS;
251
+ var init_dom_to_image = __esm({
252
+ "src/capture/dom-to-image.ts"() {
253
+ "use strict";
254
+ import_html_to_image = require("html-to-image");
255
+ init_colors();
256
+ init_capture_exclude_attribute();
257
+ init_font_embed();
258
+ DEFAULT_BACKGROUND = colors.white;
259
+ MAX_ERROR_MESSAGE_CHARS = 120;
260
+ cachedFontEmbedCSS = null;
261
+ inflightFontEmbedCSS = null;
262
+ OBJECT_URL_REVOKE_DELAY_MS = 3e4;
263
+ }
264
+ });
265
+
30
266
  // src/components/chat/index.ts
31
267
  var chat_exports = {};
32
268
  __export(chat_exports, {
@@ -40,7 +276,7 @@ __export(chat_exports, {
40
276
  module.exports = __toCommonJS(chat_exports);
41
277
 
42
278
  // src/components/chat/chat-message/chat-message.tsx
43
- var import_react15 = require("react");
279
+ var import_react19 = require("react");
44
280
 
45
281
  // src/components/blocks/types.ts
46
282
  var blockTypes = {
@@ -56,7 +292,10 @@ var artifactTypes = {
56
292
 
57
293
  // src/components/artifacts/chart-artifact/types.ts
58
294
  var DEFAULT_CHART_ARTIFACT_LABELS = {
59
- download: "Download CSV",
295
+ download: "Download",
296
+ downloadCsv: "Download CSV",
297
+ downloadPng: "Download PNG",
298
+ copyAsImage: "Copy Image",
60
299
  unavailable: "Chart data is unavailable.",
61
300
  loadError: "Couldn't load chart data.",
62
301
  loading: "Loading chart\u2026",
@@ -74,7 +313,10 @@ var DEFAULT_TABLE_ARTIFACT_LABELS = {
74
313
  };
75
314
 
76
315
  // src/components/artifacts/chart-artifact/chart-artifact.tsx
77
- var import_react9 = require("react");
316
+ var import_react13 = require("react");
317
+
318
+ // src/components/ai-elements/artifact.tsx
319
+ var import_react = require("react");
78
320
 
79
321
  // src/lib/utils.ts
80
322
  var import_clsx = require("clsx");
@@ -85,20 +327,25 @@ function cn(...inputs) {
85
327
 
86
328
  // src/components/ai-elements/artifact.tsx
87
329
  var import_jsx_runtime = require("react/jsx-runtime");
88
- var Artifact = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
330
+ var Artifact = (0, import_react.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
89
331
  "div",
90
332
  {
333
+ ref,
91
334
  className: cn("flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm", className),
92
335
  ...props
93
336
  }
94
- );
337
+ ));
338
+ Artifact.displayName = "Artifact";
95
339
  var ArtifactHeader = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("flex items-center justify-between border-b bg-muted/50 px-4 py-3", className), ...props });
96
340
  var ArtifactTitle = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: cn("font-medium text-foreground text-sm", className), ...props });
97
341
  var ArtifactActions = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("flex items-center gap-1", className), ...props });
98
342
  var ArtifactContent = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("flex-1 overflow-auto p-4", className), ...props });
99
343
 
344
+ // src/components/artifacts/chart-artifact/chart-artifact.tsx
345
+ init_capture_exclude_attribute();
346
+
100
347
  // node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs
101
- var import_react = require("react");
348
+ var import_react2 = require("react");
102
349
 
103
350
  // node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs
104
351
  var defaultAttributes = {
@@ -125,8 +372,8 @@ var defaultAttributes = {
125
372
 
126
373
  // node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs
127
374
  var createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
128
- const Component = (0, import_react.forwardRef)(
129
- ({ color = "currentColor", size = 24, stroke = 2, title, className, children, ...rest }, ref) => (0, import_react.createElement)(
375
+ const Component = (0, import_react2.forwardRef)(
376
+ ({ color = "currentColor", size = 24, stroke = 2, title, className, children, ...rest }, ref) => (0, import_react2.createElement)(
130
377
  "svg",
131
378
  {
132
379
  ref,
@@ -143,8 +390,8 @@ var createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
143
390
  ...rest
144
391
  },
145
392
  [
146
- title && (0, import_react.createElement)("title", { key: "svg-title" }, title),
147
- ...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)),
393
+ title && (0, import_react2.createElement)("title", { key: "svg-title" }, title),
394
+ ...iconNode.map(([tag, attrs]) => (0, import_react2.createElement)(tag, attrs)),
148
395
  ...Array.isArray(children) ? children : [children]
149
396
  ]
150
397
  )
@@ -153,31 +400,50 @@ var createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
153
400
  return Component;
154
401
  };
155
402
 
403
+ // node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs
404
+ var __iconNode = [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 8v4", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]];
405
+ var IconAlertCircle = createReactComponent("outline", "alert-circle", "AlertCircle", __iconNode);
406
+
156
407
  // node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs
157
- var __iconNode = [["path", { "d": "M5 12l5 5l10 -10", "key": "svg-0" }]];
158
- var IconCheck = createReactComponent("outline", "check", "Check", __iconNode);
408
+ var __iconNode2 = [["path", { "d": "M5 12l5 5l10 -10", "key": "svg-0" }]];
409
+ var IconCheck = createReactComponent("outline", "check", "Check", __iconNode2);
159
410
 
160
411
  // node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.mjs
161
- var __iconNode2 = [["path", { "d": "M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666", "key": "svg-0" }], ["path", { "d": "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1", "key": "svg-1" }]];
162
- var IconCopy = createReactComponent("outline", "copy", "Copy", __iconNode2);
412
+ var __iconNode3 = [["path", { "d": "M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666", "key": "svg-0" }], ["path", { "d": "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1", "key": "svg-1" }]];
413
+ var IconCopy = createReactComponent("outline", "copy", "Copy", __iconNode3);
163
414
 
164
415
  // node_modules/@tabler/icons-react/dist/esm/icons/IconDownload.mjs
165
- var __iconNode3 = [["path", { "d": "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M7 11l5 5l5 -5", "key": "svg-1" }], ["path", { "d": "M12 4l0 12", "key": "svg-2" }]];
166
- var IconDownload = createReactComponent("outline", "download", "Download", __iconNode3);
416
+ var __iconNode4 = [["path", { "d": "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M7 11l5 5l5 -5", "key": "svg-1" }], ["path", { "d": "M12 4l0 12", "key": "svg-2" }]];
417
+ var IconDownload = createReactComponent("outline", "download", "Download", __iconNode4);
418
+
419
+ // node_modules/@tabler/icons-react/dist/esm/icons/IconFileSpreadsheet.mjs
420
+ var __iconNode5 = [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2", "key": "svg-1" }], ["path", { "d": "M8 11h8v7h-8l0 -7", "key": "svg-2" }], ["path", { "d": "M8 15h8", "key": "svg-3" }], ["path", { "d": "M11 11v7", "key": "svg-4" }]];
421
+ var IconFileSpreadsheet = createReactComponent("outline", "file-spreadsheet", "FileSpreadsheet", __iconNode5);
422
+
423
+ // node_modules/@tabler/icons-react/dist/esm/icons/IconLoader2.mjs
424
+ var __iconNode6 = [["path", { "d": "M12 3a9 9 0 1 0 9 9", "key": "svg-0" }]];
425
+ var IconLoader2 = createReactComponent("outline", "loader-2", "Loader2", __iconNode6);
426
+
427
+ // node_modules/@tabler/icons-react/dist/esm/icons/IconPhoto.mjs
428
+ var __iconNode7 = [["path", { "d": "M15 8h.01", "key": "svg-0" }], ["path", { "d": "M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12", "key": "svg-1" }], ["path", { "d": "M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5", "key": "svg-2" }], ["path", { "d": "M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3", "key": "svg-3" }]];
429
+ var IconPhoto = createReactComponent("outline", "photo", "Photo", __iconNode7);
167
430
 
168
431
  // node_modules/@tabler/icons-react/dist/esm/icons/IconThumbDown.mjs
169
- var __iconNode4 = [["path", { "d": "M7 13v-8a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h3a4 4 0 0 1 4 4v1a2 2 0 0 0 4 0v-5h3a2 2 0 0 0 2 -2l-1 -5a2 3 0 0 0 -2 -2h-7a3 3 0 0 0 -3 3", "key": "svg-0" }]];
170
- var IconThumbDown = createReactComponent("outline", "thumb-down", "ThumbDown", __iconNode4);
432
+ var __iconNode8 = [["path", { "d": "M7 13v-8a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h3a4 4 0 0 1 4 4v1a2 2 0 0 0 4 0v-5h3a2 2 0 0 0 2 -2l-1 -5a2 3 0 0 0 -2 -2h-7a3 3 0 0 0 -3 3", "key": "svg-0" }]];
433
+ var IconThumbDown = createReactComponent("outline", "thumb-down", "ThumbDown", __iconNode8);
171
434
 
172
435
  // node_modules/@tabler/icons-react/dist/esm/icons/IconThumbUp.mjs
173
- var __iconNode5 = [["path", { "d": "M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3", "key": "svg-0" }]];
174
- var IconThumbUp = createReactComponent("outline", "thumb-up", "ThumbUp", __iconNode5);
436
+ var __iconNode9 = [["path", { "d": "M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3", "key": "svg-0" }]];
437
+ var IconThumbUp = createReactComponent("outline", "thumb-up", "ThumbUp", __iconNode9);
438
+
439
+ // src/components/artifacts/artifact-copy-as-image-button/artifact-copy-as-image-button.tsx
440
+ var import_react6 = require("react");
175
441
 
176
442
  // src/components/icon-button/icon-button.tsx
177
- var import_react3 = require("react");
443
+ var import_react4 = require("react");
178
444
 
179
445
  // src/components/icon/icon.tsx
180
- var import_react2 = require("react");
446
+ var import_react3 = require("react");
181
447
 
182
448
  // src/components/icon/icon-styles.ts
183
449
  var import_styled_components = __toESM(require("styled-components"), 1);
@@ -204,7 +470,7 @@ var IconWrapper = import_styled_components.default.span`
204
470
  // src/components/icon/icon.tsx
205
471
  var import_jsx_runtime2 = require("react/jsx-runtime");
206
472
  var DEFAULT_SIZE = 16;
207
- var Icon = (0, import_react2.forwardRef)(function Icon2({ icon: IconComponent, size = DEFAULT_SIZE, color, className, "aria-label": ariaLabel }, ref) {
473
+ var Icon = (0, import_react3.forwardRef)(function Icon2({ icon: IconComponent, size = DEFAULT_SIZE, color, className, "aria-label": ariaLabel }, ref) {
208
474
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
209
475
  IconWrapper,
210
476
  {
@@ -220,96 +486,7 @@ var Icon = (0, import_react2.forwardRef)(function Icon2({ icon: IconComponent, s
220
486
 
221
487
  // src/components/icon-button/icon-button-styles.ts
222
488
  var import_styled_components2 = __toESM(require("styled-components"), 1);
223
-
224
- // src/tokens/colors.ts
225
- var colors = {
226
- // White
227
- white: "#FFFFFF",
228
- "white-alpha-85": "rgba(255, 255, 255, 0.85)",
229
- "white-alpha-40": "rgba(255, 255, 255, 0.40)",
230
- // Brown
231
- "brown-10": "#FAF9F8",
232
- "brown-20": "#F5F3F0",
233
- "brown-30": "#EEEBE5",
234
- "brown-40": "#E6E2DA",
235
- "brown-50": "#CFCBC4",
236
- "brown-60": "#A19E99",
237
- "brown-70": "#73716D",
238
- "brown-80": "#5C5A57",
239
- "brown-90": "#2E2D2C",
240
- "brown-100": "#171716",
241
- "brown-alpha-12": "rgba(23, 23, 22, 0.12)",
242
- "brown-alpha-20": "rgba(23, 23, 22, 0.20)",
243
- "brown-alpha-55": "rgba(23, 23, 22, 0.55)",
244
- "brown-alpha-70": "rgba(23, 23, 22, 0.70)",
245
- "brown-alpha-80": "rgba(23, 23, 22, 0.80)",
246
- "brown-alpha-90": "rgba(23, 23, 22, 0.90)",
247
- // Fuchsia
248
- "fuchsia-50": "#FAF5FF",
249
- "fuchsia-300": "#F0ABFC",
250
- "fuchsia-500": "#D946EF",
251
- "fuchsia-600": "#C026D3",
252
- "fuchsia-800": "#86198F",
253
- // Pink
254
- "pink-50": "#FDF2F8",
255
- "pink-400": "#F472B6",
256
- "pink-600": "#DB2777",
257
- "pink-800": "#9D174D",
258
- // Violet
259
- "violet-50": "#F5F3FF",
260
- "violet-400": "#A78BFA",
261
- "violet-600": "#7C3AED",
262
- "violet-800": "#5B21B6",
263
- // Indigo
264
- "indigo-50": "#EEF2FF",
265
- "indigo-400": "#818CF8",
266
- "indigo-500": "#6366F1",
267
- "indigo-600": "#4F46E5",
268
- "indigo-800": "#3730A3",
269
- // Cyan
270
- "cyan-50": "#E7FEFF",
271
- "cyan-300": "#67E8F9",
272
- "cyan-600": "#0891B2",
273
- "cyan-900": "#164E63",
274
- // Teal
275
- "teal-50": "#EBFDF9",
276
- "teal-300": "#5EEAD4",
277
- "teal-600": "#0D9488",
278
- // Rose
279
- "rose-400": "#FB7185",
280
- // Purple
281
- "purple-400": "#C084FC",
282
- // Blue
283
- "blue-50": "#EFF6FF",
284
- "blue-100": "#DBEAFE",
285
- "blue-300": "#93C5FD",
286
- "blue-400": "#60A5FA",
287
- "blue-600": "#2563EB",
288
- "blue-800": "#1E40AF",
289
- // Sky
290
- "sky-300": "#7DD3FC",
291
- // Green
292
- "green-50": "#ECF9F0",
293
- "green-100": "#D4F1D9",
294
- "green-400": "#3DC269",
295
- "green-700": "#277C43",
296
- "green-800": "#1C5930",
297
- // Orange
298
- "orange-50": "#FFF7ED",
299
- "orange-100": "#FFEDD5",
300
- "orange-200": "#FED7AA",
301
- "orange-500": "#F97316",
302
- "orange-600": "#EA580C",
303
- // Red
304
- "red-50": "#FEF2F2",
305
- "red-100": "#FEE2E2",
306
- "red-200": "#FECACA",
307
- "red-400": "#F7776C",
308
- "red-500": "#EF4444",
309
- "red-600": "#DC2626"
310
- };
311
-
312
- // src/components/icon-button/icon-button-styles.ts
489
+ init_colors();
313
490
  var PADDING = {
314
491
  short: {
315
492
  small: "4px",
@@ -357,7 +534,7 @@ var ICON_SIZE_BY_BUTTON_SIZE = {
357
534
  small: 16,
358
535
  medium: 20
359
536
  };
360
- var IconButton = (0, import_react3.forwardRef)(function IconButton2({
537
+ var IconButton = (0, import_react4.forwardRef)(function IconButton2({
361
538
  icon,
362
539
  size = "small",
363
540
  variant = "short",
@@ -412,17 +589,119 @@ var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props },
412
589
  ));
413
590
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
414
591
 
415
- // src/components/artifacts/artifact-download-button/artifact-download-button.tsx
592
+ // src/components/artifacts/artifact-copy-as-image-button/use-copy-as-image.ts
593
+ var import_react5 = require("react");
594
+ var DEFAULT_RESET_AFTER_MS = 1500;
595
+ function useCopyAsImage(targetRef, options = {}) {
596
+ const [status, setStatus] = (0, import_react5.useState)("idle");
597
+ const [error, setError] = (0, import_react5.useState)(null);
598
+ const resetTimerRef = (0, import_react5.useRef)(null);
599
+ (0, import_react5.useEffect)(() => {
600
+ return () => {
601
+ if (resetTimerRef.current !== null) clearTimeout(resetTimerRef.current);
602
+ };
603
+ }, []);
604
+ const copy = (0, import_react5.useCallback)(async () => {
605
+ if (resetTimerRef.current !== null) {
606
+ clearTimeout(resetTimerRef.current);
607
+ resetTimerRef.current = null;
608
+ }
609
+ const { resetAfterMs = DEFAULT_RESET_AFTER_MS, ...nodeOptions } = options;
610
+ const scheduleReset = () => {
611
+ if (resetAfterMs <= 0) return;
612
+ resetTimerRef.current = setTimeout(() => {
613
+ resetTimerRef.current = null;
614
+ setStatus("idle");
615
+ setError(null);
616
+ }, resetAfterMs);
617
+ };
618
+ const node = targetRef.current;
619
+ if (!node) {
620
+ const err = new Error("ArtifactCopyAsImageButton: target ref is not attached to a DOM node.");
621
+ setError(err);
622
+ setStatus("error");
623
+ scheduleReset();
624
+ throw err;
625
+ }
626
+ setError(null);
627
+ setStatus("working");
628
+ try {
629
+ const { copyNodeAsPng: copyNodeAsPng2 } = await Promise.resolve().then(() => (init_dom_to_image(), dom_to_image_exports));
630
+ await copyNodeAsPng2(node, nodeOptions);
631
+ setStatus("success");
632
+ scheduleReset();
633
+ } catch (err) {
634
+ const wrapped = err instanceof Error ? err : new Error(String(err));
635
+ setError(wrapped);
636
+ setStatus("error");
637
+ scheduleReset();
638
+ throw wrapped;
639
+ }
640
+ }, [targetRef, options]);
641
+ return { status, error, copy };
642
+ }
643
+
644
+ // src/components/artifacts/artifact-copy-as-image-button/artifact-copy-as-image-button.tsx
416
645
  var import_jsx_runtime5 = require("react/jsx-runtime");
417
- var DEFAULT_LABEL = "Download CSV";
418
- function ArtifactDownloadButton({
419
- href,
646
+ var MAX_ERROR_MESSAGE_CHARS2 = 120;
647
+ function truncateErrorMessage2(message, max = MAX_ERROR_MESSAGE_CHARS2) {
648
+ return message.length <= max ? message : `${message.slice(0, max - 1)}\u2026`;
649
+ }
650
+ var DEFAULT_LABEL = "Copy Image";
651
+ var ICON_BY_STATUS = {
652
+ // `IconCopy` reads as the clipboard-copy affordance (action-shaped), distinct from the
653
+ // download menu's format-shaped icons. The button only ever puts bytes on the clipboard, so
654
+ // the visual signal stays consistent across copy-aware artifact types.
655
+ idle: IconCopy,
656
+ working: IconLoader2,
657
+ success: IconCheck,
658
+ error: IconAlertCircle
659
+ };
660
+ var TRANSIENT_TOOLTIP_BY_STATUS = {
661
+ working: "Copying\u2026",
662
+ success: "Copied",
663
+ error: "Copy failed"
664
+ };
665
+ function ArtifactCopyAsImageButton({
666
+ targetRef,
420
667
  label = DEFAULT_LABEL,
668
+ disabled = false,
421
669
  onClick
422
670
  }) {
423
- if (!isSafeDownloadUrl(href)) return null;
671
+ const { status, error, copy } = useCopyAsImage(targetRef);
672
+ const handleClick = (0, import_react6.useCallback)(() => {
673
+ onClick?.();
674
+ copy().catch((err) => {
675
+ console.warn("[clay] ArtifactCopyAsImageButton: copy failed", err);
676
+ });
677
+ }, [copy, onClick]);
678
+ const statusLabel = status === "idle" ? label : status === "error" && error ? `Copy failed: ${truncateErrorMessage2(error.message)}` : TRANSIENT_TOOLTIP_BY_STATUS[status] ?? label;
424
679
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Tooltip, { children: [
425
680
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
681
+ IconButton,
682
+ {
683
+ icon: ICON_BY_STATUS[status],
684
+ size: "small",
685
+ onClick: handleClick,
686
+ disabled: disabled || status === "working",
687
+ "aria-label": statusLabel
688
+ }
689
+ ) }),
690
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent, { children: statusLabel })
691
+ ] }) });
692
+ }
693
+
694
+ // src/components/artifacts/artifact-download-button/artifact-download-button.tsx
695
+ var import_jsx_runtime6 = require("react/jsx-runtime");
696
+ var DEFAULT_LABEL2 = "Download CSV";
697
+ function ArtifactDownloadButton({
698
+ href,
699
+ label = DEFAULT_LABEL2,
700
+ onClick
701
+ }) {
702
+ if (!isSafeDownloadUrl(href)) return null;
703
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Tooltip, { children: [
704
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
426
705
  IconButton,
427
706
  {
428
707
  as: "a",
@@ -435,7 +714,7 @@ function ArtifactDownloadButton({
435
714
  "aria-label": label
436
715
  }
437
716
  ) }),
438
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent, { children: label })
717
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TooltipContent, { children: label })
439
718
  ] }) });
440
719
  }
441
720
  function isSafeDownloadUrl(url) {
@@ -447,10 +726,120 @@ function isSafeDownloadUrl(url) {
447
726
  }
448
727
  }
449
728
 
729
+ // src/components/artifacts/artifact-download-menu/artifact-download-menu.tsx
730
+ var import_react7 = require("react");
731
+
732
+ // src/components/ui/dropdown-menu.tsx
733
+ var React2 = __toESM(require("react"), 1);
734
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
735
+ var import_jsx_runtime7 = require("react/jsx-runtime");
736
+ var DropdownMenu = DropdownMenuPrimitive.Root;
737
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
738
+ var DropdownMenuContent = React2.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
739
+ DropdownMenuPrimitive.Content,
740
+ {
741
+ ref,
742
+ sideOffset,
743
+ className: cn(
744
+ // Stacking is consumer-configurable via the `--z-popover` CSS variable (default `99999`,
745
+ // declared in clay's generated `_theme-tokens.css` :root block). Consumers whose chat or
746
+ // modal layer sits even higher override on their own root once:
747
+ // :root { --z-popover: 9999999; }
748
+ // and every clay floating surface picks the new value up via cascade. The fallback in
749
+ // `var(...,99999)` only kicks in if the consumer also strips the clay stylesheet — which
750
+ // they shouldn't, but the safety net costs nothing.
751
+ "z-[var(--z-popover,99999)] min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
752
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
753
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
754
+ className
755
+ ),
756
+ ...props
757
+ }
758
+ ) }));
759
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
760
+ var DropdownMenuItem = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
761
+ DropdownMenuPrimitive.Item,
762
+ {
763
+ ref,
764
+ className: cn(
765
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors",
766
+ "focus:bg-accent focus:text-accent-foreground",
767
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
768
+ "[&_svg]:size-4 [&_svg]:shrink-0",
769
+ inset && "pl-8",
770
+ className
771
+ ),
772
+ ...props
773
+ }
774
+ ));
775
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
776
+ var DropdownMenuSeparator = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
777
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
778
+ var DropdownMenuLabel = React2.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
779
+ DropdownMenuPrimitive.Label,
780
+ {
781
+ ref,
782
+ className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
783
+ ...props
784
+ }
785
+ ));
786
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
787
+
788
+ // src/components/artifacts/artifact-download-menu/artifact-download-menu.tsx
789
+ var import_jsx_runtime8 = require("react/jsx-runtime");
790
+ var DEFAULT_TRIGGER_LABEL = "Download";
791
+ var DEFAULT_CSV_LABEL = "Download CSV";
792
+ var DEFAULT_PNG_LABEL = "Download PNG";
793
+ var DEFAULT_PNG_BASENAME = "artifact";
794
+ function ArtifactDownloadMenu({
795
+ actions,
796
+ triggerLabel = DEFAULT_TRIGGER_LABEL
797
+ }) {
798
+ const { csv, png } = actions;
799
+ const showCsv = csv !== void 0 && isSafeDownloadUrl(csv.href);
800
+ const showPng = png !== void 0;
801
+ const handlePngSelect = (0, import_react7.useCallback)(async () => {
802
+ if (!png) return;
803
+ png.onSelect?.();
804
+ const node = png.targetRef.current;
805
+ if (!node) return;
806
+ const filename = `${png.filename ?? DEFAULT_PNG_BASENAME}.png`;
807
+ try {
808
+ const { downloadNodeAsPng: downloadNodeAsPng2 } = await Promise.resolve().then(() => (init_dom_to_image(), dom_to_image_exports));
809
+ await downloadNodeAsPng2(node, filename);
810
+ } catch (err) {
811
+ console.warn("[clay] ArtifactDownloadMenu: PNG download failed", err);
812
+ }
813
+ }, [png]);
814
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenu, { children: [
815
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Tooltip, { children: [
816
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconButton, { icon: IconDownload, size: "small", "aria-label": triggerLabel }) }) }),
817
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TooltipContent, { children: triggerLabel })
818
+ ] }) }),
819
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuContent, { align: "end", children: [
820
+ showCsv ? (
821
+ // `asChild` lets Radix render the item as our anchor — the browser handles the
822
+ // download natively and respects `Content-Disposition`. The analytics callback rides
823
+ // on the anchor's own `onClick` (rather than Radix's `onSelect`) so the same handler
824
+ // fires whether the user mouse-clicks the item, hits Enter on it, or activates it via
825
+ // touch — `onSelect` is reliable only for keyboard activation when `asChild` is in use.
826
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("a", { href: csv.href, download: true, rel: "noopener noreferrer", onClick: csv.onSelect, children: [
827
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconFileSpreadsheet, {}),
828
+ csv.label ?? DEFAULT_CSV_LABEL
829
+ ] }) })
830
+ ) : null,
831
+ showPng ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuItem, { onSelect: handlePngSelect, disabled: png.disabled ?? false, children: [
832
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconPhoto, {}),
833
+ png.label ?? DEFAULT_PNG_LABEL
834
+ ] }) : null
835
+ ] })
836
+ ] });
837
+ }
838
+
450
839
  // src/components/artifacts/status-message.tsx
451
- var import_react4 = require("react");
840
+ var import_react8 = require("react");
452
841
  function StatusMessage({ $tone, children }) {
453
- return (0, import_react4.createElement)(
842
+ return (0, import_react8.createElement)(
454
843
  "div",
455
844
  {
456
845
  className: `py-6 px-2 text-center text-sm font-medium leading-5 ${$tone === "error" ? "text-red-600" : "text-brown-70"}`
@@ -460,12 +849,12 @@ function StatusMessage({ $tone, children }) {
460
849
  }
461
850
 
462
851
  // src/components/chart/bar-chart/bar-chart.tsx
463
- var import_react5 = require("react");
852
+ var import_react9 = require("react");
464
853
  var import_recharts2 = require("recharts");
465
854
 
466
855
  // src/components/chart/chart-container.tsx
467
856
  var import_recharts = require("recharts");
468
- var import_jsx_runtime6 = require("react/jsx-runtime");
857
+ var import_jsx_runtime9 = require("react/jsx-runtime");
469
858
  function ChartContainer({
470
859
  children,
471
860
  height = 320,
@@ -473,23 +862,23 @@ function ChartContainer({
473
862
  className,
474
863
  style
475
864
  }) {
476
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("text-xs text-foreground", className), style: { width, height, ...style }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height: "100%", children }) });
865
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("text-xs text-foreground", className), style: { width, height, ...style }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height: "100%", children }) });
477
866
  }
478
867
 
479
868
  // src/components/chart/chart-legend-content.tsx
480
- var import_jsx_runtime7 = require("react/jsx-runtime");
869
+ var import_jsx_runtime10 = require("react/jsx-runtime");
481
870
  function ChartLegendContent({ payload, className, iconType = "square" }) {
482
871
  if (!payload || payload.length === 0) return null;
483
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
872
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
484
873
  "ul",
485
874
  {
486
875
  className: cn("flex flex-wrap items-center justify-center gap-x-4 gap-y-2 text-xs text-brown-80", className),
487
876
  children: payload.map((entry, i) => {
488
877
  const swatchColor = typeof entry.color === "string" ? entry.color : "transparent";
489
878
  const label = entry.value !== void 0 ? String(entry.value) : "";
490
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("li", { className: "flex items-center gap-1.5", children: [
491
- iconType === "square" ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "inline-block h-2.5 w-2.5 shrink-0 rounded-sm", style: { background: swatchColor } }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "inline-block h-[3px] w-4 shrink-0 rounded-full", style: { background: swatchColor } }),
492
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: label })
879
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("li", { className: "flex items-center gap-1.5", children: [
880
+ iconType === "square" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "inline-block h-2.5 w-2.5 shrink-0 rounded-sm", style: { background: swatchColor } }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "inline-block h-[3px] w-4 shrink-0 rounded-full", style: { background: swatchColor } }),
881
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: label })
493
882
  ] }, `${label}-${i}`);
494
883
  })
495
884
  }
@@ -497,7 +886,7 @@ function ChartLegendContent({ payload, className, iconType = "square" }) {
497
886
  }
498
887
 
499
888
  // src/components/chart/chart-tooltip-content.tsx
500
- var import_jsx_runtime8 = require("react/jsx-runtime");
889
+ var import_jsx_runtime11 = require("react/jsx-runtime");
501
890
  function ChartTooltipContent({
502
891
  active,
503
892
  payload,
@@ -507,7 +896,7 @@ function ChartTooltipContent({
507
896
  formatValue
508
897
  }) {
509
898
  if (!active || !payload || payload.length === 0) return null;
510
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
899
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
511
900
  "div",
512
901
  {
513
902
  className: cn(
@@ -516,16 +905,16 @@ function ChartTooltipContent({
516
905
  className
517
906
  ),
518
907
  children: [
519
- showLabel && label !== void 0 && label !== null ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "mb-1.5 font-medium text-brown-90", children: String(label) }) : null,
520
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: "space-y-1", children: payload.map((entry, i) => {
908
+ showLabel && label !== void 0 && label !== null ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mb-1.5 font-medium text-brown-90", children: String(label) }) : null,
909
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("ul", { className: "space-y-1", children: payload.map((entry, i) => {
521
910
  const name = entry.name !== void 0 ? String(entry.name) : "";
522
911
  const rawValue = entry.value;
523
912
  const display = formatValue ? formatValue(rawValue, name) : rawValue === void 0 ? "" : String(rawValue);
524
913
  const swatch = typeof entry.color === "string" ? entry.color : "transparent";
525
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("li", { className: "flex items-center gap-2", children: [
526
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inline-block h-2.5 w-2.5 shrink-0 rounded-sm", style: { background: swatch } }),
527
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "text-brown-70", children: name }),
528
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ml-auto font-semibold tabular-nums text-brown-90", children: display })
914
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("li", { className: "flex items-center gap-2", children: [
915
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "inline-block h-2.5 w-2.5 shrink-0 rounded-sm", style: { background: swatch } }),
916
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-brown-70", children: name }),
917
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "ml-auto font-semibold tabular-nums text-brown-90", children: display })
529
918
  ] }, `${name}-${i}`);
530
919
  }) })
531
920
  ]
@@ -533,6 +922,9 @@ function ChartTooltipContent({
533
922
  );
534
923
  }
535
924
 
925
+ // src/tokens/index.ts
926
+ init_colors();
927
+
536
928
  // src/tokens/typography.ts
537
929
  var fontFamilies = {
538
930
  /** Geist — primary UI font for body text, labels, headings, and display. */
@@ -944,7 +1336,7 @@ function coerceNumericColumns(rows, numericKeys) {
944
1336
  }
945
1337
 
946
1338
  // src/components/chart/bar-chart/bar-chart.tsx
947
- var import_jsx_runtime9 = require("react/jsx-runtime");
1339
+ var import_jsx_runtime12 = require("react/jsx-runtime");
948
1340
  function BarChart({
949
1341
  data,
950
1342
  xKey,
@@ -964,23 +1356,23 @@ function BarChart({
964
1356
  xAxisAngle,
965
1357
  xAxisTickFormatter
966
1358
  }) {
967
- const seriesKeys = (0, import_react5.useMemo)(() => series.map((s) => s.key), [series]);
968
- const coercedData = (0, import_react5.useMemo)(
1359
+ const seriesKeys = (0, import_react9.useMemo)(() => series.map((s) => s.key), [series]);
1360
+ const coercedData = (0, import_react9.useMemo)(
969
1361
  () => coerceNumericColumns(data, seriesKeys),
970
1362
  [data, seriesKeys]
971
1363
  );
972
1364
  const resolvedShowLegend = showLegend ?? series.length > 1;
973
1365
  const resolvedShowValueLabels = showValueLabels ?? (!stacked && series.length === 1);
974
1366
  const resolvedAngle = xAxisAngle ?? (coercedData.length >= 8 ? -30 : 0);
975
- const resolvedTickFormatter = (0, import_react5.useMemo)(
1367
+ const resolvedTickFormatter = (0, import_react9.useMemo)(
976
1368
  () => xAxisTickFormatter ?? defaultBarTickFormatter(coercedData.length),
977
1369
  [xAxisTickFormatter, coercedData.length]
978
1370
  );
979
1371
  const angledLabelPad = resolvedAngle === 0 ? 0 : Math.min(Math.abs(resolvedAngle) * 0.7, 40);
980
1372
  const chartMargin = { ...CHART_MARGIN, bottom: CHART_MARGIN.bottom + angledLabelPad };
981
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_recharts2.BarChart, { data: coercedData, margin: chartMargin, barCategoryGap: "22%", children: [
982
- showGrid ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_recharts2.CartesianGrid, { ...CHART_GRID_PROPS }) : null,
983
- showXAxis ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1373
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_recharts2.BarChart, { data: coercedData, margin: chartMargin, barCategoryGap: "22%", children: [
1374
+ showGrid ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_recharts2.CartesianGrid, { ...CHART_GRID_PROPS }) : null,
1375
+ showXAxis ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
984
1376
  import_recharts2.XAxis,
985
1377
  {
986
1378
  dataKey: xKey,
@@ -993,19 +1385,19 @@ function BarChart({
993
1385
  tickFormatter: resolvedTickFormatter
994
1386
  }
995
1387
  ) : null,
996
- showYAxis ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_recharts2.YAxis, { ...CHART_AXIS_PROPS, width: 40 }) : null,
997
- showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_recharts2.Tooltip, { cursor: { fill: BAR_TOOLTIP_CURSOR_FILL }, content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartTooltipContent, {}) }) : null,
998
- resolvedShowLegend ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1388
+ showYAxis ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_recharts2.YAxis, { ...CHART_AXIS_PROPS, width: 40 }) : null,
1389
+ showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_recharts2.Tooltip, { cursor: { fill: BAR_TOOLTIP_CURSOR_FILL }, content: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChartTooltipContent, {}) }) : null,
1390
+ resolvedShowLegend ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
999
1391
  import_recharts2.Legend,
1000
1392
  {
1001
1393
  verticalAlign: "top",
1002
1394
  align: "center",
1003
1395
  wrapperStyle: { top: 0 },
1004
1396
  itemSorter: null,
1005
- content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartLegendContent, { iconType: "square" })
1397
+ content: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChartLegendContent, { iconType: "square" })
1006
1398
  }
1007
1399
  ) : null,
1008
- series.map((s, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1400
+ series.map((s, i) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1009
1401
  import_recharts2.Bar,
1010
1402
  {
1011
1403
  dataKey: s.key,
@@ -1013,7 +1405,7 @@ function BarChart({
1013
1405
  fill: colorForSeriesIndex(i, palette),
1014
1406
  stackId: stacked ? "default" : s.key,
1015
1407
  radius: barRadius(stacked, i, series.length),
1016
- children: resolvedShowValueLabels ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_recharts2.LabelList, { dataKey: s.key, position: "top", style: CHART_VALUE_LABEL_STYLE }) : null
1408
+ children: resolvedShowValueLabels ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_recharts2.LabelList, { dataKey: s.key, position: "top", style: CHART_VALUE_LABEL_STYLE }) : null
1017
1409
  },
1018
1410
  s.key
1019
1411
  ))
@@ -1029,9 +1421,9 @@ function barRadius(stacked, seriesIndex, seriesCount) {
1029
1421
  var VARIANT_CHART_HEIGHT = "100%";
1030
1422
 
1031
1423
  // src/components/artifacts/chart-artifact/chart-variant-services/bar-chart-variant-component.tsx
1032
- var import_jsx_runtime10 = require("react/jsx-runtime");
1424
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1033
1425
  function BarChartVariantComponent({ config, rows }) {
1034
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1426
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1035
1427
  BarChart,
1036
1428
  {
1037
1429
  data: rows,
@@ -1078,9 +1470,9 @@ var BarChartVariantService = {
1078
1470
  };
1079
1471
 
1080
1472
  // src/components/chart/line-chart/line-chart.tsx
1081
- var import_react6 = require("react");
1473
+ var import_react10 = require("react");
1082
1474
  var import_recharts3 = require("recharts");
1083
- var import_jsx_runtime11 = require("react/jsx-runtime");
1475
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1084
1476
  var TARGET_VISIBLE_LABELS = 5;
1085
1477
  function LineChart({
1086
1478
  data,
@@ -1103,23 +1495,23 @@ function LineChart({
1103
1495
  xAxisAngle = 0,
1104
1496
  xAxisTickFormatter
1105
1497
  }) {
1106
- const seriesKeys = (0, import_react6.useMemo)(() => series.map((s) => s.key), [series]);
1107
- const coercedData = (0, import_react6.useMemo)(
1498
+ const seriesKeys = (0, import_react10.useMemo)(() => series.map((s) => s.key), [series]);
1499
+ const coercedData = (0, import_react10.useMemo)(
1108
1500
  () => coerceNumericColumns(data, seriesKeys),
1109
1501
  [data, seriesKeys]
1110
1502
  );
1111
1503
  const lineType = smooth ? "monotone" : "linear";
1112
1504
  const resolvedShowLegend = showLegend ?? series.length > 1;
1113
- const resolvedTickFormatter = (0, import_react6.useMemo)(() => {
1505
+ const resolvedTickFormatter = (0, import_react10.useMemo)(() => {
1114
1506
  if (xAxisTickFormatter) return xAxisTickFormatter;
1115
1507
  const visible = evenlyDistributedVisibleIndices(coercedData.length, TARGET_VISIBLE_LABELS);
1116
1508
  return defaultLineChartTickFormatter(coercedData.length, visible);
1117
1509
  }, [xAxisTickFormatter, coercedData.length]);
1118
1510
  const angledLabelPad = xAxisAngle === 0 ? 0 : Math.min(Math.abs(xAxisAngle) * 0.7, 40);
1119
1511
  const chartMargin = { ...CHART_MARGIN, right: CHART_MARGIN.right + 16, bottom: CHART_MARGIN.bottom + angledLabelPad };
1120
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_recharts3.LineChart, { data: coercedData, margin: chartMargin, children: [
1121
- showGrid ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_recharts3.CartesianGrid, { ...CHART_GRID_PROPS }) : null,
1122
- showXAxis ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1512
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_recharts3.LineChart, { data: coercedData, margin: chartMargin, children: [
1513
+ showGrid ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_recharts3.CartesianGrid, { ...CHART_GRID_PROPS }) : null,
1514
+ showXAxis ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1123
1515
  import_recharts3.XAxis,
1124
1516
  {
1125
1517
  dataKey: xKey,
@@ -1132,21 +1524,21 @@ function LineChart({
1132
1524
  tickFormatter: resolvedTickFormatter
1133
1525
  }
1134
1526
  ) : null,
1135
- showYAxis ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_recharts3.YAxis, { ...CHART_AXIS_PROPS, width: 40 }) : null,
1136
- showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_recharts3.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartTooltipContent, {}) }) : null,
1137
- resolvedShowLegend ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1527
+ showYAxis ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_recharts3.YAxis, { ...CHART_AXIS_PROPS, width: 40 }) : null,
1528
+ showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_recharts3.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChartTooltipContent, {}) }) : null,
1529
+ resolvedShowLegend ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1138
1530
  import_recharts3.Legend,
1139
1531
  {
1140
1532
  verticalAlign: "top",
1141
1533
  align: "center",
1142
1534
  wrapperStyle: { top: 0 },
1143
1535
  itemSorter: null,
1144
- content: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartLegendContent, { iconType: "line" })
1536
+ content: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChartLegendContent, { iconType: "line" })
1145
1537
  }
1146
1538
  ) : null,
1147
1539
  series.map((s, i) => {
1148
1540
  const color = colorForSeriesIndex(i, palette);
1149
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1541
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1150
1542
  import_recharts3.Line,
1151
1543
  {
1152
1544
  type: lineType,
@@ -1156,7 +1548,7 @@ function LineChart({
1156
1548
  strokeWidth,
1157
1549
  dot: showDots ? { r: 3, fill: color, stroke: color, strokeWidth: 0 } : false,
1158
1550
  activeDot: { r: 5, fill: color, stroke: LINE_ACTIVE_DOT_STROKE, strokeWidth: 2 },
1159
- children: showValueLabels ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_recharts3.LabelList, { dataKey: s.key, position: "top", style: CHART_VALUE_LABEL_STYLE }) : null
1551
+ children: showValueLabels ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_recharts3.LabelList, { dataKey: s.key, position: "top", style: CHART_VALUE_LABEL_STYLE }) : null
1160
1552
  },
1161
1553
  s.key
1162
1554
  );
@@ -1165,9 +1557,9 @@ function LineChart({
1165
1557
  }
1166
1558
 
1167
1559
  // src/components/artifacts/chart-artifact/chart-variant-services/line-chart-variant-component.tsx
1168
- var import_jsx_runtime12 = require("react/jsx-runtime");
1560
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1169
1561
  function LineChartVariantComponent({ config, rows }) {
1170
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(LineChart, { data: rows, xKey: config.xKey, series: config.series, height: VARIANT_CHART_HEIGHT });
1562
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(LineChart, { data: rows, xKey: config.xKey, series: config.series, height: VARIANT_CHART_HEIGHT });
1171
1563
  }
1172
1564
 
1173
1565
  // src/components/artifacts/chart-artifact/chart-variant-services/line-chart-variant-service.tsx
@@ -1188,9 +1580,9 @@ var LineChartVariantService = {
1188
1580
  };
1189
1581
 
1190
1582
  // src/components/chart/pie-chart/pie-chart.tsx
1191
- var import_react7 = require("react");
1583
+ var import_react11 = require("react");
1192
1584
  var import_recharts4 = require("recharts");
1193
- var import_jsx_runtime13 = require("react/jsx-runtime");
1585
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1194
1586
  function PieChart({
1195
1587
  data,
1196
1588
  categoryKey,
@@ -1206,7 +1598,7 @@ function PieChart({
1206
1598
  outerRadius = "68%",
1207
1599
  othersCategoryLabels = DEFAULT_OTHERS_CATEGORY_LABELS
1208
1600
  }) {
1209
- const { orderedData, sliceColors } = (0, import_react7.useMemo)(() => {
1601
+ const { orderedData, sliceColors } = (0, import_react11.useMemo)(() => {
1210
1602
  const coerced = coerceNumericColumns(data, [valueKey]);
1211
1603
  const namedRows = [];
1212
1604
  const namedColors = [];
@@ -1226,19 +1618,19 @@ function PieChart({
1226
1618
  sliceColors: [...namedColors, ...othersColors]
1227
1619
  };
1228
1620
  }, [data, valueKey, categoryKey, othersCategoryLabels, palette]);
1229
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_recharts4.PieChart, { margin: PIE_CHART_MARGIN, children: [
1230
- showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_recharts4.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ChartTooltipContent, {}) }) : null,
1231
- showLegend ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1621
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChartContainer, { height, width, className, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_recharts4.PieChart, { margin: PIE_CHART_MARGIN, children: [
1622
+ showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_recharts4.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChartTooltipContent, {}) }) : null,
1623
+ showLegend ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1232
1624
  import_recharts4.Legend,
1233
1625
  {
1234
1626
  verticalAlign: "top",
1235
1627
  align: "center",
1236
1628
  wrapperStyle: { top: 0 },
1237
1629
  itemSorter: null,
1238
- content: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ChartLegendContent, { iconType: "square" })
1630
+ content: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChartLegendContent, { iconType: "square" })
1239
1631
  }
1240
1632
  ) : null,
1241
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1633
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1242
1634
  import_recharts4.Pie,
1243
1635
  {
1244
1636
  data: orderedData,
@@ -1253,7 +1645,7 @@ function PieChart({
1253
1645
  label: showLabels ? (entry) => {
1254
1646
  const v = entry.value;
1255
1647
  if (v === void 0 || v === null) return null;
1256
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1648
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1257
1649
  "text",
1258
1650
  {
1259
1651
  x: entry.x,
@@ -1270,20 +1662,20 @@ function PieChart({
1270
1662
  labelLine: false,
1271
1663
  stroke: "none",
1272
1664
  strokeWidth: 0,
1273
- children: orderedData.map((_row, i) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_recharts4.Cell, { fill: sliceColors[i] }, i))
1665
+ children: orderedData.map((_row, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_recharts4.Cell, { fill: sliceColors[i] }, i))
1274
1666
  }
1275
1667
  )
1276
1668
  ] }) });
1277
1669
  }
1278
1670
 
1279
1671
  // src/components/artifacts/chart-artifact/chart-variant-services/pie-chart-variant-component.tsx
1280
- var import_jsx_runtime14 = require("react/jsx-runtime");
1672
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1281
1673
  function PieChartVariantComponent({
1282
1674
  config,
1283
1675
  rows,
1284
1676
  labels
1285
1677
  }) {
1286
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1678
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1287
1679
  PieChart,
1288
1680
  {
1289
1681
  data: rows,
@@ -1320,14 +1712,14 @@ var ChartVariantServices = {
1320
1712
  };
1321
1713
 
1322
1714
  // src/components/artifacts/chart-artifact/chart-artifact-content.tsx
1323
- var import_jsx_runtime15 = require("react/jsx-runtime");
1715
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1324
1716
  function ChartArtifactContent({ config, rows, labels }) {
1325
1717
  const service = ChartVariantServices[config.variant];
1326
1718
  if (!service) {
1327
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1719
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1328
1720
  }
1329
1721
  const Component = service.Component;
1330
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Component, { config, rows, labels });
1722
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Component, { config, rows, labels });
1331
1723
  }
1332
1724
 
1333
1725
  // src/components/artifacts/parse-csv.ts
@@ -1352,7 +1744,7 @@ function parseCsv(text, columns) {
1352
1744
  }
1353
1745
 
1354
1746
  // src/components/artifacts/use-rows-artifact-data.ts
1355
- var import_react8 = require("react");
1747
+ var import_react12 = require("react");
1356
1748
  var LOADING = { status: "loading", rows: null, error: null };
1357
1749
  var UNAVAILABLE = { status: "unavailable", rows: null, error: null };
1358
1750
  var INITIAL_INTERNAL = { cacheKey: null, data: LOADING };
@@ -1364,11 +1756,11 @@ function scrubUrl(url) {
1364
1756
  return q === -1 ? url : `${url.slice(0, q)}?<redacted>`;
1365
1757
  }
1366
1758
  function useRowsArtifactData(presignedUrl, columns, parse) {
1367
- const colsKey = (0, import_react8.useMemo)(() => columnsFingerprint(columns), [columns]);
1759
+ const colsKey = (0, import_react12.useMemo)(() => columnsFingerprint(columns), [columns]);
1368
1760
  const safeUrl = presignedUrl && isSafeDownloadUrl(presignedUrl) ? presignedUrl : null;
1369
1761
  const cacheKey = safeUrl ? `${safeUrl}::${colsKey}` : null;
1370
- const [state, setState] = (0, import_react8.useState)(INITIAL_INTERNAL);
1371
- (0, import_react8.useEffect)(() => {
1762
+ const [state, setState] = (0, import_react12.useState)(INITIAL_INTERNAL);
1763
+ (0, import_react12.useEffect)(() => {
1372
1764
  if (!safeUrl) return;
1373
1765
  const controller = new AbortController();
1374
1766
  fetch(safeUrl, {
@@ -1425,32 +1817,71 @@ function isValidChartConfig(config) {
1425
1817
  }
1426
1818
 
1427
1819
  // src/components/artifacts/chart-artifact/chart-artifact.tsx
1428
- var import_jsx_runtime16 = require("react/jsx-runtime");
1820
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1429
1821
  var TITLE_CLASSES = "text-sm font-semibold text-foreground";
1430
1822
  var CHART_HEIGHT = 320;
1431
1823
  function ChartArtifact({ artifact, labels, callbacks }) {
1432
1824
  const validConfig = isValidChartConfig(artifact.config);
1433
- (0, import_react9.useEffect)(() => {
1825
+ const cardRef = (0, import_react13.useRef)(null);
1826
+ (0, import_react13.useEffect)(() => {
1434
1827
  if (validConfig) return;
1435
1828
  console.warn("[clay] ChartArtifact: malformed `config` \u2014 skipping render.");
1436
1829
  }, [validConfig]);
1437
1830
  const presignedUrl = artifact.protectedAsset?.presignedUrl ?? null;
1438
- const resolvedLabels = (0, import_react9.useMemo)(
1439
- () => ({ ...DEFAULT_CHART_ARTIFACT_LABELS, ...labels?.[artifactTypes.CHART] ?? {} }),
1831
+ const resolvedLabels = (0, import_react13.useMemo)(
1832
+ () => ({ ...DEFAULT_CHART_ARTIFACT_LABELS, ...labels ?? {} }),
1440
1833
  [labels]
1441
1834
  );
1442
1835
  const data = useChartArtifactData(
1443
1836
  validConfig ? presignedUrl : null,
1444
1837
  validConfig ? artifact.config : { variant: "LINE", series: [], xKey: "x" }
1445
1838
  );
1446
- const onDownload = callbacks?.[artifactTypes.CHART]?.onDownload;
1447
- const handleDownloadClick = onDownload ? () => onDownload(artifact) : void 0;
1448
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Artifact, { className: "shadow-none w-full rounded-2xl bg-background/70", children: [
1449
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
1450
- artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArtifactTitle, { className: TITLE_CLASSES, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", {}),
1451
- presignedUrl ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArtifactActions, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ArtifactDownloadButton, { href: presignedUrl, label: resolvedLabels.download, onClick: handleDownloadClick }) }) : null
1839
+ const { onDownload, onDownloadPng, onCopyAsImage } = callbacks ?? {};
1840
+ const handleDownloadCsvSelect = onDownload ? () => onDownload(artifact) : void 0;
1841
+ const handleDownloadPngSelect = onDownloadPng ? () => onDownloadPng(artifact) : void 0;
1842
+ const handleCopyAsImageClick = onCopyAsImage ? () => onCopyAsImage(artifact) : void 0;
1843
+ const canCopyAsImage = data.status === "ready" && data.rows.length > 0;
1844
+ const canDownloadPng = data.status === "ready" && data.rows.length > 0;
1845
+ const isCsvDownloadAvailable = presignedUrl !== null && isSafeDownloadUrl(presignedUrl);
1846
+ const showDownloadMenu = validConfig && canDownloadPng || isCsvDownloadAvailable;
1847
+ const showActions = validConfig || showDownloadMenu;
1848
+ const pngFilename = (artifact.title ?? "").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).join("-") || "chart";
1849
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Artifact, { ref: cardRef, className: "shadow-none w-full rounded-2xl bg-background/70", children: [
1850
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
1851
+ artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactTitle, { className: TITLE_CLASSES, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {}),
1852
+ showActions ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(ArtifactActions, { ...{ [CAPTURE_EXCLUDE_ATTRIBUTE]: "" }, children: [
1853
+ validConfig ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1854
+ ArtifactCopyAsImageButton,
1855
+ {
1856
+ targetRef: cardRef,
1857
+ label: resolvedLabels.copyAsImage,
1858
+ disabled: !canCopyAsImage,
1859
+ onClick: handleCopyAsImageClick
1860
+ }
1861
+ ) : null,
1862
+ showDownloadMenu ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1863
+ ArtifactDownloadMenu,
1864
+ {
1865
+ triggerLabel: resolvedLabels.download,
1866
+ actions: {
1867
+ csv: isCsvDownloadAvailable ? {
1868
+ href: presignedUrl ?? "",
1869
+ label: resolvedLabels.downloadCsv,
1870
+ onSelect: handleDownloadCsvSelect
1871
+ } : void 0,
1872
+ png: validConfig ? {
1873
+ targetRef: cardRef,
1874
+ filename: pngFilename,
1875
+ label: resolvedLabels.downloadPng,
1876
+ disabled: !canDownloadPng,
1877
+ onSelect: handleDownloadPngSelect
1878
+ } : void 0
1879
+ }
1880
+ }
1881
+ ) : null
1882
+ ] }) : null
1452
1883
  ] }),
1453
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1884
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1454
1885
  ArtifactContent,
1455
1886
  {
1456
1887
  className: "p-4 overflow-visible flex flex-none items-center justify-center",
@@ -1462,21 +1893,21 @@ function ChartArtifact({ artifact, labels, callbacks }) {
1462
1893
  }
1463
1894
  function renderBody(validConfig, artifact, data, labels) {
1464
1895
  if (!validConfig) {
1465
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1896
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1466
1897
  }
1467
1898
  if (data.status === "error") {
1468
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StatusMessage, { $tone: "error", children: labels.loadError });
1899
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "error", children: labels.loadError });
1469
1900
  }
1470
1901
  if (data.status === "unavailable") {
1471
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1902
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1472
1903
  }
1473
1904
  if (data.status === "loading") {
1474
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StatusMessage, { $tone: "info", children: labels.loading });
1905
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "info", children: labels.loading });
1475
1906
  }
1476
1907
  if (data.rows.length === 0) {
1477
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StatusMessage, { $tone: "info", children: labels.empty });
1908
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "info", children: labels.empty });
1478
1909
  }
1479
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChartArtifactContent, { config: artifact.config, rows: data.rows, labels });
1910
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ChartArtifactContent, { config: artifact.config, rows: data.rows, labels });
1480
1911
  }
1481
1912
 
1482
1913
  // src/components/artifacts/chart-artifact/to-clipboard-text.ts
@@ -1493,27 +1924,27 @@ var ChartArtifactService = {
1493
1924
  };
1494
1925
 
1495
1926
  // src/components/artifacts/table-artifact/table-artifact.tsx
1496
- var import_react11 = require("react");
1927
+ var import_react15 = require("react");
1497
1928
 
1498
1929
  // src/components/ui/table.tsx
1499
- var React2 = __toESM(require("react"), 1);
1500
- var import_jsx_runtime17 = require("react/jsx-runtime");
1501
- var Table = React2.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn("relative w-full overflow-auto", containerClassName), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) }));
1930
+ var React3 = __toESM(require("react"), 1);
1931
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1932
+ var Table = React3.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("relative w-full overflow-auto", containerClassName), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) }));
1502
1933
  Table.displayName = "Table";
1503
- var TableHeader = React2.forwardRef(
1504
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props })
1934
+ var TableHeader = React3.forwardRef(
1935
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props })
1505
1936
  );
1506
1937
  TableHeader.displayName = "TableHeader";
1507
- var TableBody = React2.forwardRef(
1508
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props })
1938
+ var TableBody = React3.forwardRef(
1939
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props })
1509
1940
  );
1510
1941
  TableBody.displayName = "TableBody";
1511
- var TableFooter = React2.forwardRef(
1512
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("tfoot", { ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })
1942
+ var TableFooter = React3.forwardRef(
1943
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("tfoot", { ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })
1513
1944
  );
1514
1945
  TableFooter.displayName = "TableFooter";
1515
- var TableRow = React2.forwardRef(
1516
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1946
+ var TableRow = React3.forwardRef(
1947
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1517
1948
  "tr",
1518
1949
  {
1519
1950
  ref,
@@ -1523,8 +1954,8 @@ var TableRow = React2.forwardRef(
1523
1954
  )
1524
1955
  );
1525
1956
  TableRow.displayName = "TableRow";
1526
- var TableHead = React2.forwardRef(
1527
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1957
+ var TableHead = React3.forwardRef(
1958
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1528
1959
  "th",
1529
1960
  {
1530
1961
  ref,
@@ -1537,21 +1968,21 @@ var TableHead = React2.forwardRef(
1537
1968
  )
1538
1969
  );
1539
1970
  TableHead.displayName = "TableHead";
1540
- var TableCell = React2.forwardRef(
1541
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("td", { ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className), ...props })
1971
+ var TableCell = React3.forwardRef(
1972
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("td", { ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className), ...props })
1542
1973
  );
1543
1974
  TableCell.displayName = "TableCell";
1544
- var TableCaption = React2.forwardRef(
1545
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })
1975
+ var TableCaption = React3.forwardRef(
1976
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })
1546
1977
  );
1547
1978
  TableCaption.displayName = "TableCaption";
1548
1979
 
1549
1980
  // src/components/table/use-scroll-shadow.ts
1550
- var import_react10 = require("react");
1981
+ var import_react14 = require("react");
1551
1982
  function useScrollShadow() {
1552
- const targetRef = (0, import_react10.useRef)(null);
1553
- const [isScrolled, setIsScrolled] = (0, import_react10.useState)(false);
1554
- (0, import_react10.useEffect)(() => {
1983
+ const targetRef = (0, import_react14.useRef)(null);
1984
+ const [isScrolled, setIsScrolled] = (0, import_react14.useState)(false);
1985
+ (0, import_react14.useEffect)(() => {
1555
1986
  const target = targetRef.current;
1556
1987
  if (!target) return;
1557
1988
  let scrollContainer = target;
@@ -1591,7 +2022,7 @@ var DATA_ROW_CLASSES = `${ROW_CLASSES} animate-in fade-in duration-300`;
1591
2022
  var SCROLL_SHADOW = "0 1px 2px rgb(0 0 0 / 0.01), 0 6px 12px -2px rgb(0 0 0 / 0.03)";
1592
2023
 
1593
2024
  // src/components/artifacts/table-artifact/table-artifact-content.tsx
1594
- var import_jsx_runtime18 = require("react/jsx-runtime");
2025
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1595
2026
  function TableArtifactContent({
1596
2027
  columns,
1597
2028
  data,
@@ -1601,43 +2032,43 @@ function TableArtifactContent({
1601
2032
  labels
1602
2033
  }) {
1603
2034
  if (data.status === TABLE_STATUS.ERROR) {
1604
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(StatusMessage, { $tone: "error", children: labels.loadError });
2035
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StatusMessage, { $tone: "error", children: labels.loadError });
1605
2036
  }
1606
2037
  if (data.status === TABLE_STATUS.UNAVAILABLE) {
1607
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
2038
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StatusMessage, { $tone: "info", children: labels.unavailable });
1608
2039
  }
1609
2040
  if (data.status === TABLE_STATUS.LOADING) {
1610
2041
  if (typeof knownRowCount === "number" && knownRowCount > 0) {
1611
2042
  const shimmerCount = Math.min(knownRowCount, maxShimmerRows);
1612
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ArtifactTable, { columns, maxBodyHeight, children: renderShimmerRows(columns, shimmerCount) });
2043
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ArtifactTable, { columns, maxBodyHeight, children: renderShimmerRows(columns, shimmerCount) });
1613
2044
  }
1614
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(StatusMessage, { $tone: "info", children: labels.loading });
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StatusMessage, { $tone: "info", children: labels.loading });
1615
2046
  }
1616
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ArtifactTable, { columns, maxBodyHeight, children: data.rows.length === 0 ? renderEmptyRow(columns.length, labels.empty) : renderDataRows(columns, data.rows) });
2047
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ArtifactTable, { columns, maxBodyHeight, children: data.rows.length === 0 ? renderEmptyRow(columns.length, labels.empty) : renderDataRows(columns, data.rows) });
1617
2048
  }
1618
2049
  function ArtifactTable({ columns, maxBodyHeight, children }) {
1619
2050
  const { targetRef, isScrolled } = useScrollShadow();
1620
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref: targetRef, className: "overscroll-none", style: { maxHeight: maxBodyHeight, overflowY: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Table, { containerClassName: "overflow-visible", children: [
1621
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2051
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref: targetRef, className: "overscroll-none", style: { maxHeight: maxBodyHeight, overflowY: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Table, { containerClassName: "overflow-visible", children: [
2052
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1622
2053
  TableHeader,
1623
2054
  {
1624
2055
  "data-scrolled": isScrolled ? "true" : void 0,
1625
2056
  className: "sticky top-0 z-10 bg-background/70 backdrop-blur-lg transition-shadow",
1626
2057
  style: isScrolled ? { boxShadow: SCROLL_SHADOW } : void 0,
1627
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableHead, { scope: "col", className: HEAD_CLASS, children: column.label }, column.key)) })
2058
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableHead, { scope: "col", className: HEAD_CLASS, children: column.label }, column.key)) })
1628
2059
  }
1629
2060
  ),
1630
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableBody, { children })
2061
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableBody, { children })
1631
2062
  ] }) });
1632
2063
  }
1633
2064
  function renderShimmerRows(columns, count) {
1634
- return Array.from({ length: count }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableRow, { className: ROW_CLASSES, "aria-hidden": "true", children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableCell, { className: CELL_CLASS, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "block h-3 w-3/4 animate-pulse rounded bg-muted-foreground/20" }) }, column.key)) }, `shimmer-${index}`));
2065
+ return Array.from({ length: count }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableRow, { className: ROW_CLASSES, "aria-hidden": "true", children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableCell, { className: CELL_CLASS, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "block h-3 w-3/4 animate-pulse rounded bg-muted-foreground/20" }) }, column.key)) }, `shimmer-${index}`));
1635
2066
  }
1636
2067
  function renderDataRows(columns, rows) {
1637
- return rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableRow, { className: DATA_ROW_CLASSES, children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableCell, { className: CELL_CLASS, children: formatCell(row, column) }, column.key)) }, index));
2068
+ return rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableRow, { className: DATA_ROW_CLASSES, children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableCell, { className: CELL_CLASS, children: formatCell(row, column) }, column.key)) }, index));
1638
2069
  }
1639
2070
  function renderEmptyRow(colSpan, emptyMessage) {
1640
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TableCell, { colSpan, className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }) });
2071
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableCell, { colSpan, className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }) });
1641
2072
  }
1642
2073
 
1643
2074
  // src/components/artifacts/table-artifact/use-table-artifact-data.ts
@@ -1662,19 +2093,19 @@ function isValidTableColumn(column) {
1662
2093
  }
1663
2094
 
1664
2095
  // src/components/artifacts/table-artifact/table-artifact.tsx
1665
- var import_jsx_runtime19 = require("react/jsx-runtime");
2096
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1666
2097
  var TITLE_CLASSES2 = "text-sm font-semibold text-foreground";
1667
2098
  var TABLE_MAX_BODY_HEIGHT = 480;
1668
2099
  var MAX_SHIMMER_ROWS = 10;
1669
2100
  function TableArtifact({ artifact, labels, callbacks }) {
1670
2101
  const validConfig = isValidTableConfig(artifact.config);
1671
2102
  const validColumns = validConfig ? artifact.config.columns : null;
1672
- (0, import_react11.useEffect)(() => {
2103
+ (0, import_react15.useEffect)(() => {
1673
2104
  if (validConfig) return;
1674
2105
  console.warn("[clay] TableArtifact: malformed `config` \u2014 skipping render.");
1675
2106
  }, [validConfig]);
1676
- const resolvedLabels = (0, import_react11.useMemo)(
1677
- () => ({ ...DEFAULT_TABLE_ARTIFACT_LABELS, ...labels?.[artifactTypes.TABLE] ?? {} }),
2107
+ const resolvedLabels = (0, import_react15.useMemo)(
2108
+ () => ({ ...DEFAULT_TABLE_ARTIFACT_LABELS, ...labels ?? {} }),
1678
2109
  [labels]
1679
2110
  );
1680
2111
  const data = useTableArtifactData(
@@ -1682,13 +2113,13 @@ function TableArtifact({ artifact, labels, callbacks }) {
1682
2113
  validColumns ?? []
1683
2114
  );
1684
2115
  const presignedUrl = artifact.protectedAsset?.presignedUrl ?? null;
1685
- const onDownload = callbacks?.[artifactTypes.TABLE]?.onDownload;
2116
+ const onDownload = callbacks?.onDownload;
1686
2117
  const handleDownloadClick = onDownload ? () => onDownload(artifact) : void 0;
1687
2118
  if (!validConfig || !validColumns) {
1688
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Artifact, { className: "shadow-none w-full rounded-2xl bg-background/70", children: [
1689
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
1690
- artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactTitle, { className: TITLE_CLASSES2, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {}),
1691
- presignedUrl ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactActions, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2119
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Artifact, { className: "shadow-none w-full rounded-2xl bg-background/70", children: [
2120
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
2121
+ artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactTitle, { className: TITLE_CLASSES2, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", {}),
2122
+ presignedUrl ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactActions, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1692
2123
  ArtifactDownloadButton,
1693
2124
  {
1694
2125
  href: presignedUrl,
@@ -1697,17 +2128,17 @@ function TableArtifact({ artifact, labels, callbacks }) {
1697
2128
  }
1698
2129
  ) }) : null
1699
2130
  ] }),
1700
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactContent, { className: "p-0 overflow-auto", style: { maxHeight: TABLE_MAX_BODY_HEIGHT }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StatusMessage, { $tone: "info", children: resolvedLabels.unavailable }) })
2131
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactContent, { className: "p-0 overflow-auto", style: { maxHeight: TABLE_MAX_BODY_HEIGHT }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StatusMessage, { $tone: "info", children: resolvedLabels.unavailable }) })
1701
2132
  ] });
1702
2133
  }
1703
2134
  return (
1704
2135
  // The table body owns its own scroll container (`ArtifactTable` inside `TableArtifactContent`).
1705
2136
  // Disable the outer overflow container so only one scroll context exists — this prevents
1706
2137
  // double-scroll nesting and lets `useScrollShadow` find the correct scroll ancestor.
1707
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Artifact, { className: "shadow-none w-full rounded-2xl bg-background/70", children: [
1708
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
1709
- artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactTitle, { className: TITLE_CLASSES2, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {}),
1710
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactActions, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2138
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Artifact, { className: "shadow-none w-full rounded-2xl bg-background/70", children: [
2139
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(ArtifactHeader, { className: "bg-background/70", children: [
2140
+ artifact.title ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactTitle, { className: TITLE_CLASSES2, children: artifact.title }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", {}),
2141
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactActions, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1711
2142
  ArtifactDownloadButton,
1712
2143
  {
1713
2144
  href: presignedUrl ?? "",
@@ -1716,7 +2147,7 @@ function TableArtifact({ artifact, labels, callbacks }) {
1716
2147
  }
1717
2148
  ) })
1718
2149
  ] }),
1719
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ArtifactContent, { className: "p-0 overflow-visible", style: { maxHeight: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2150
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ArtifactContent, { className: "p-0 overflow-visible", style: { maxHeight: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1720
2151
  TableArtifactContent,
1721
2152
  {
1722
2153
  columns: validColumns,
@@ -1758,13 +2189,13 @@ function artifactToClipboardText(artifact) {
1758
2189
  }
1759
2190
 
1760
2191
  // src/components/blocks/artifact-ref-block/artifact-ref-block.tsx
1761
- var import_jsx_runtime20 = require("react/jsx-runtime");
2192
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1762
2193
  function ArtifactRefBlock({ block }) {
1763
2194
  const { artifact, labels, callbacks } = block.payload;
1764
2195
  const entry = ArtifactServices[artifact.type];
1765
2196
  if (!entry) return null;
1766
- const { Component } = entry;
1767
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Component, { artifact, labels, callbacks });
2197
+ const Component = entry.Component;
2198
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Component, { artifact, labels, callbacks });
1768
2199
  }
1769
2200
 
1770
2201
  // src/components/blocks/block-services/artifact-ref-block-service.ts
@@ -1816,9 +2247,9 @@ var TableScroll = import_styled_components3.default.div`
1816
2247
  `;
1817
2248
 
1818
2249
  // src/components/blocks/scrollable-table/scrollable-table.tsx
1819
- var import_jsx_runtime21 = require("react/jsx-runtime");
2250
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1820
2251
  function ScrollableTable({ node: _node, ...props }) {
1821
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TableScroll, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("table", { ...props }) }) });
2252
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TableContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TableScroll, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("table", { ...props }) }) });
1822
2253
  }
1823
2254
 
1824
2255
  // src/components/blocks/text-block/sanitize.ts
@@ -1831,6 +2262,7 @@ function sanitize(text) {
1831
2262
 
1832
2263
  // src/components/blocks/text-block/text-block-styles.ts
1833
2264
  var import_styled_components4 = __toESM(require("styled-components"), 1);
2265
+ init_colors();
1834
2266
  var TextBlockWrapper = import_styled_components4.default.div`
1835
2267
  ${typographyMixin(typographyTypes.GEIST_BODY_S_REGULAR)};
1836
2268
  color: ${colors["brown-100"]};
@@ -1949,12 +2381,12 @@ var TextBlockWrapper = import_styled_components4.default.div`
1949
2381
  `;
1950
2382
 
1951
2383
  // src/components/blocks/text-block/text-block.tsx
1952
- var import_jsx_runtime22 = require("react/jsx-runtime");
2384
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1953
2385
  var markdownComponents = {
1954
- table: ((tableProps) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ScrollableTable, { ...tableProps }))
2386
+ table: ((tableProps) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ScrollableTable, { ...tableProps }))
1955
2387
  };
1956
2388
  function TextBlock({ block }) {
1957
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(TextBlockWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_markdown.default, { remarkPlugins: [import_remark_gfm.default, import_remark_breaks.default], components: markdownComponents, children: sanitize(block.payload.text) }) });
2389
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TextBlockWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_markdown.default, { remarkPlugins: [import_remark_gfm.default, import_remark_breaks.default], components: markdownComponents, children: sanitize(block.payload.text) }) });
1958
2390
  }
1959
2391
 
1960
2392
  // src/components/blocks/block-services/text-block-service.ts
@@ -1976,12 +2408,12 @@ var BlockServices = {
1976
2408
  };
1977
2409
 
1978
2410
  // src/components/blocks/block/block.tsx
1979
- var import_jsx_runtime23 = require("react/jsx-runtime");
2411
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1980
2412
  function Block({ block }) {
1981
2413
  const service = BlockServices[block.type];
1982
2414
  if (!service) return null;
1983
2415
  const { Component } = service;
1984
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Component, { block });
2416
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Component, { block });
1985
2417
  }
1986
2418
 
1987
2419
  // src/components/chat/hooks/copy-message-text.ts
@@ -1999,13 +2431,13 @@ function copyMessageText(message) {
1999
2431
  }
2000
2432
 
2001
2433
  // src/components/chat/chat-message-actions/chat-message-actions.tsx
2002
- var import_react14 = require("react");
2434
+ var import_react18 = require("react");
2003
2435
 
2004
2436
  // src/components/chat/chat-context/chat-context.ts
2005
- var import_react12 = require("react");
2006
- var ChatContext = (0, import_react12.createContext)(null);
2437
+ var import_react16 = require("react");
2438
+ var ChatContext = (0, import_react16.createContext)(null);
2007
2439
  function useChatContext() {
2008
- const context = (0, import_react12.useContext)(ChatContext);
2440
+ const context = (0, import_react16.useContext)(ChatContext);
2009
2441
  if (!context) {
2010
2442
  throw new Error("useChatContext must be used within a Chat.Root component");
2011
2443
  }
@@ -2013,7 +2445,7 @@ function useChatContext() {
2013
2445
  }
2014
2446
 
2015
2447
  // src/components/chat/hooks/use-copy-to-clipboard.ts
2016
- var import_react13 = require("react");
2448
+ var import_react17 = require("react");
2017
2449
 
2018
2450
  // src/utils/clipboard.ts
2019
2451
  function copyToClipboard(text, options) {
@@ -2026,14 +2458,14 @@ function copyToClipboard(text, options) {
2026
2458
  // src/components/chat/hooks/use-copy-to-clipboard.ts
2027
2459
  var RESET_DELAY_MS = 2e3;
2028
2460
  function useCopyToClipboard() {
2029
- const [isCopied, setIsCopied] = (0, import_react13.useState)(false);
2030
- const timeoutRef = (0, import_react13.useRef)(null);
2031
- (0, import_react13.useEffect)(() => {
2461
+ const [isCopied, setIsCopied] = (0, import_react17.useState)(false);
2462
+ const timeoutRef = (0, import_react17.useRef)(null);
2463
+ (0, import_react17.useEffect)(() => {
2032
2464
  return () => {
2033
2465
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
2034
2466
  };
2035
2467
  }, []);
2036
- const copy = (0, import_react13.useCallback)((text) => {
2468
+ const copy = (0, import_react17.useCallback)((text) => {
2037
2469
  copyToClipboard(text, {
2038
2470
  onSuccess: () => {
2039
2471
  setIsCopied(true);
@@ -2073,24 +2505,24 @@ var AnimatedAction = import_styled_components5.default.div`
2073
2505
  `;
2074
2506
 
2075
2507
  // src/components/chat/chat-message-actions/chat-message-actions.tsx
2076
- var import_jsx_runtime24 = require("react/jsx-runtime");
2508
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2077
2509
  function ChatMessageActions({ className, messageId, content, role, isHelpful }) {
2078
2510
  const { onCopyMessage, onThumbUpClick, onThumbDownClick } = useChatContext();
2079
2511
  const { isCopied, copy } = useCopyToClipboard();
2080
- const handleCopy = (0, import_react14.useCallback)(() => {
2512
+ const handleCopy = (0, import_react18.useCallback)(() => {
2081
2513
  copy(content);
2082
2514
  onCopyMessage?.(messageId);
2083
2515
  }, [content, messageId, copy, onCopyMessage]);
2084
- const handleThumbUp = (0, import_react14.useCallback)(() => {
2516
+ const handleThumbUp = (0, import_react18.useCallback)(() => {
2085
2517
  onThumbUpClick?.(messageId, isHelpful === true ? null : true);
2086
2518
  }, [messageId, isHelpful, onThumbUpClick]);
2087
- const handleThumbDown = (0, import_react14.useCallback)(() => {
2519
+ const handleThumbDown = (0, import_react18.useCallback)(() => {
2088
2520
  onThumbDownClick?.(messageId, isHelpful === false ? null : false);
2089
2521
  }, [messageId, isHelpful, onThumbDownClick]);
2090
2522
  const isAssistant = role === MESSAGE_ROLE.ASSISTANT;
2091
2523
  const hasFeedback = isAssistant && (onThumbUpClick || onThumbDownClick);
2092
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(ActionsContainer, { $role: role, className, children: [
2093
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2524
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(ActionsContainer, { $role: role, className, children: [
2525
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2094
2526
  IconButton,
2095
2527
  {
2096
2528
  icon: isCopied ? IconCheck : IconCopy,
@@ -2098,7 +2530,7 @@ function ChatMessageActions({ className, messageId, content, role, isHelpful })
2098
2530
  "aria-label": isCopied ? "Copied" : "Copy message"
2099
2531
  }
2100
2532
  ),
2101
- hasFeedback && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(AnimatedAction, { $visible: isHelpful !== false, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2533
+ hasFeedback && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(AnimatedAction, { $visible: isHelpful !== false, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2102
2534
  IconButton,
2103
2535
  {
2104
2536
  icon: IconThumbUp,
@@ -2107,7 +2539,7 @@ function ChatMessageActions({ className, messageId, content, role, isHelpful })
2107
2539
  "aria-label": "Good response"
2108
2540
  }
2109
2541
  ) }),
2110
- hasFeedback && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(AnimatedAction, { $visible: isHelpful !== true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2542
+ hasFeedback && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(AnimatedAction, { $visible: isHelpful !== true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2111
2543
  IconButton,
2112
2544
  {
2113
2545
  icon: IconThumbDown,
@@ -2121,6 +2553,7 @@ function ChatMessageActions({ className, messageId, content, role, isHelpful })
2121
2553
 
2122
2554
  // src/components/chat/chat-message/chat-message-styles.ts
2123
2555
  var import_styled_components6 = __toESM(require("styled-components"), 1);
2556
+ init_colors();
2124
2557
  var MessageRow = import_styled_components6.default.div`
2125
2558
  display: flex;
2126
2559
  justify-content: ${({ $role }) => $role === MESSAGE_ROLE.USER ? "flex-end" : "flex-start"};
@@ -2157,12 +2590,12 @@ var MessageBubble = import_styled_components6.default.div`
2157
2590
  `;
2158
2591
 
2159
2592
  // src/components/chat/chat-message/chat-message.tsx
2160
- var import_jsx_runtime25 = require("react/jsx-runtime");
2593
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2161
2594
  function ChatMessage({ message }) {
2162
- const clipboardText = (0, import_react15.useMemo)(() => copyMessageText(message), [message]);
2163
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MessageRow, { $role: message.role, role: "article", "aria-label": `${message.role} message`, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(MessageContainer, { $role: message.role, children: [
2164
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MessageBubble, { $role: message.role, "data-testid": "message-bubble", children: message.blocks.map((block, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Block, { block }, index)) }),
2165
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2595
+ const clipboardText = (0, import_react19.useMemo)(() => copyMessageText(message), [message]);
2596
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(MessageRow, { $role: message.role, role: "article", "aria-label": `${message.role} message`, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(MessageContainer, { $role: message.role, children: [
2597
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(MessageBubble, { $role: message.role, "data-testid": "message-bubble", children: message.blocks.map((block, index) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Block, { block }, index)) }),
2598
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2166
2599
  ChatMessageActions,
2167
2600
  {
2168
2601
  messageId: message.id,
@@ -2186,9 +2619,13 @@ function ChatMessage({ message }) {
2186
2619
 
2187
2620
  @tabler/icons-react/dist/esm/defaultAttributes.mjs:
2188
2621
  @tabler/icons-react/dist/esm/createReactComponent.mjs:
2622
+ @tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs:
2189
2623
  @tabler/icons-react/dist/esm/icons/IconCheck.mjs:
2190
2624
  @tabler/icons-react/dist/esm/icons/IconCopy.mjs:
2191
2625
  @tabler/icons-react/dist/esm/icons/IconDownload.mjs:
2626
+ @tabler/icons-react/dist/esm/icons/IconFileSpreadsheet.mjs:
2627
+ @tabler/icons-react/dist/esm/icons/IconLoader2.mjs:
2628
+ @tabler/icons-react/dist/esm/icons/IconPhoto.mjs:
2192
2629
  @tabler/icons-react/dist/esm/icons/IconThumbDown.mjs:
2193
2630
  @tabler/icons-react/dist/esm/icons/IconThumbUp.mjs:
2194
2631
  @tabler/icons-react/dist/esm/tabler-icons-react.mjs: