@epam/ai-dial-conversation-stages 1.3.0-dev.14 → 1.3.0-dev.141

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,24 +1,24 @@
1
1
  import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, MarkdownCodeBlock as r, MarkdownRenderer as i, RequestStatus as a, StageStatus as o, buildCssVars as s, mergeClasses as c, messageAttachmentsToDisplayAttachments as l, normalizeMimeType as u } from "@epam/ai-dial-chat-shared";
2
- import { Accordion as d, DIAL_ICON_SIZE as f, DIAL_KIT_ICON_STROKE as p, ElementSize as m, EllipsisTooltip as h, Highlight as g, Skeleton as _, SkeletonVariant as v, Spinner as y, StaticIconButton as b } from "@epam/ai-dial-ui-kit";
3
- import { IconAlertCircle as x, IconCheck as S, IconClipboard as C, IconDownload as w, IconExternalLink as T, IconFile as E, IconFileTypeBmp as D, IconFileTypeCss as O, IconFileTypeCsv as k, IconFileTypeDoc as A, IconFileTypeDocx as j, IconFileTypeHtml as M, IconFileTypeJpg as N, IconFileTypeJs as P, IconFileTypeJsx as F, IconFileTypePdf as I, IconFileTypePhp as L, IconFileTypePng as R, IconFileTypePpt as z, IconFileTypeRs as ee, IconFileTypeSql as te, IconFileTypeSvg as ne, IconFileTypeTs as re, IconFileTypeTsx as B, IconFileTypeTxt as ie, IconFileTypeVue as ae, IconFileTypeXls as oe, IconFileTypeXml as se, IconFileTypeZip as ce, IconMusic as le, IconPhoto as V, IconReload as ue, IconTerminal2 as de, IconVideo as fe, IconX as pe } from "@tabler/icons-react";
4
- import { memo as me, useCallback as H, useEffect as U, useId as he, useMemo as W, useRef as ge, useState as G } from "react";
5
- import { Fragment as _e, jsx as K, jsxs as q } from "react/jsx-runtime";
2
+ import { Accordion as d, DIAL_ICON_SIZE as f, DIAL_KIT_ICON_STROKE as p, DialItemType as m, ElementSize as h, EllipsisTooltip as g, FileIcon as _, Highlight as v, Skeleton as y, SkeletonVariant as b, Spinner as x, StaticIconButton as S } from "@epam/ai-dial-ui-kit";
3
+ import { IconAlertCircle as C, IconCheck as w, IconClipboard as T, IconDownload as E, IconExternalLink as D, IconFile as O, IconFileTypeBmp as k, IconFileTypeCss as A, IconFileTypeCsv as j, IconFileTypeDoc as M, IconFileTypeDocx as N, IconFileTypeHtml as P, IconFileTypeJpg as F, IconFileTypeJs as I, IconFileTypeJsx as L, IconFileTypePdf as R, IconFileTypePhp as z, IconFileTypePng as B, IconFileTypePpt as V, IconFileTypeRs as ee, IconFileTypeSql as te, IconFileTypeSvg as ne, IconFileTypeTs as re, IconFileTypeTsx as ie, IconFileTypeTxt as ae, IconFileTypeVue as H, IconFileTypeXls as oe, IconFileTypeXml as se, IconFileTypeZip as ce, IconMusic as le, IconPhoto as U, IconReload as ue, IconTerminal2 as de, IconVideo as fe, IconX as pe } from "@tabler/icons-react";
4
+ import { memo as me, useCallback as W, useEffect as G, useId as he, useMemo as K, useRef as ge, useState as q } from "react";
5
+ import { Fragment as _e, jsx as J, jsxs as Y } from "react/jsx-runtime";
6
6
  //#region src/constants/public-class-names.ts
7
- var J = {
7
+ var ve = {
8
8
  panel: "dial-conversation-stages-panel",
9
9
  group: "dial-conversation-stages-group",
10
10
  groupToggle: "dial-conversation-stages-group-toggle"
11
- }, ve = () => {
12
- let [e, t] = G(() => /* @__PURE__ */ new Set()), n = H((e, n) => {
11
+ }, ye = () => {
12
+ let [e, t] = q(() => /* @__PURE__ */ new Set()), n = W((e, n) => {
13
13
  t((t) => {
14
14
  if (t.has(e) === n) return t;
15
15
  let r = new Set(t);
16
16
  return n ? r.add(e) : r.delete(e), r;
17
17
  });
18
- }, []), r = H(() => {
18
+ }, []), r = W(() => {
19
19
  t((e) => e.size ? /* @__PURE__ */ new Set() : e);
20
20
  }, []);
21
- return W(() => ({
21
+ return K(() => ({
22
22
  isExpanded: (t) => e.has(t),
23
23
  onToggle: n,
24
24
  reset: r
@@ -27,30 +27,30 @@ var J = {
27
27
  n,
28
28
  r
29
29
  ]);
30
- }, ye = /[([][^()[\]]*[)\]]/g, be = /(\d+(?:\.\d+)?)\s*s\b/, xe = (e) => {
30
+ }, be = /[([][^()[\]]*[)\]]/g, xe = /(\d+(?:\.\d+)?)\s*s\b/, Se = (e) => {
31
31
  let t = e.trimEnd();
32
32
  return t.endsWith(":") ? t.slice(0, -1) : t;
33
- }, Se = (e) => {
34
- ye.lastIndex = 0;
33
+ }, Ce = (e) => {
34
+ be.lastIndex = 0;
35
35
  let t;
36
- for (; t = ye.exec(e);) {
37
- let e = t[0].slice(1, -1), n = be.exec(e);
36
+ for (; t = be.exec(e);) {
37
+ let e = t[0].slice(1, -1), n = xe.exec(e);
38
38
  if (n) return {
39
39
  durationLabel: `${n[1]}s`,
40
40
  groupIndex: t.index,
41
41
  groupLength: t[0].length
42
42
  };
43
43
  }
44
- }, Y = (e) => {
45
- let t = e ?? "", n = Se(t);
44
+ }, we = (e) => {
45
+ let t = e ?? "", n = Ce(t);
46
46
  return {
47
- name: xe(n ? t.slice(0, n.groupIndex) + t.slice(n.groupIndex + n.groupLength) : t).trim().replace(/ {2,}/g, " "),
47
+ name: Se(n ? t.slice(0, n.groupIndex) + t.slice(n.groupIndex + n.groupLength) : t).trim().replace(/ {2,}/g, " "),
48
48
  durationLabel: n?.durationLabel
49
49
  };
50
- }, Ce = (e) => e.length > 0 && !/\s/.test(e) && e.includes("_"), we = (e) => [...e].reverse().find((e) => e.status == null), Te = (e, t) => {
50
+ }, Te = (e) => e.length > 0 && !/\s/.test(e) && e.includes("_"), Ee = (e) => [...e].reverse().find((e) => e.status == null), De = (e, t) => {
51
51
  let n = e.parent_stage_index;
52
52
  if (!(n == null || !Number.isInteger(n) || n < 0 || n >= e.index)) return t.get(n);
53
- }, Ee = (e) => {
53
+ }, Oe = (e) => {
54
54
  let t = e.map((e) => ({
55
55
  stage: e,
56
56
  children: []
@@ -58,15 +58,15 @@ var J = {
58
58
  for (let e of t) n.has(e.stage.index) || n.set(e.stage.index, e);
59
59
  let r = [];
60
60
  for (let e of t) {
61
- let t = Te(e.stage, n);
61
+ let t = De(e.stage, n);
62
62
  t ? t.children.push(e) : r.push(e);
63
63
  }
64
64
  return r;
65
- }, De = (e) => `stage:${e}`, Oe = (e) => `group:${e}`, ke = "min-w-0 overflow-visible py-0", Ae = "min-w-0 justify-start gap-2 rounded-lg px-2 py-1.5 text-start mobile:min-h-11", je = (e) => {
65
+ }, ke = (e) => `stage:${e}`, Ae = (e) => `group:${e}`, je = "min-w-0 overflow-visible py-0", Me = "min-w-0 justify-start gap-2 rounded-lg px-2 py-1.5 text-start mobile:min-h-11", Ne = (e) => {
66
66
  let t = [], n = 0;
67
67
  for (; n < e.length;) {
68
- let r = e[n], i = Y(r.stage.name).name, a = n + 1;
69
- for (; a < e.length && Y(e[a].stage.name).name === i;) a += 1;
68
+ let r = e[n], i = we(r.stage.name).name, a = n + 1;
69
+ for (; a < e.length && we(e[a].stage.name).name === i;) a += 1;
70
70
  let o = e.slice(n, a);
71
71
  o.length > 1 ? t.push({
72
72
  key: r.stage.index,
@@ -98,44 +98,44 @@ var J = {
98
98
  codeInline: "_codeInline_w65is_84",
99
99
  blockquote: "_blockquote_w65is_91",
100
100
  tableCell: "_tableCell_w65is_96"
101
- }, Me = ({ status: e, isLive: t, runningLabel: n = "Running", failedLabel: r = "Failed" }) => e === o.Failed ? /* @__PURE__ */ q(_e, { children: [/* @__PURE__ */ K(x, {
101
+ }, Pe = ({ status: e, isLive: t, runningLabel: n = "Running", failedLabel: r = "Failed" }) => e === o.Failed ? /* @__PURE__ */ Y(_e, { children: [/* @__PURE__ */ J(C, {
102
102
  size: f.MD,
103
103
  className: X.iconError,
104
104
  "aria-hidden": !0,
105
105
  stroke: p
106
- }), /* @__PURE__ */ K("span", {
106
+ }), /* @__PURE__ */ J("span", {
107
107
  className: "sr-only",
108
108
  children: r
109
- })] }) : e === o.Completed ? /* @__PURE__ */ K(S, {
109
+ })] }) : e === o.Completed ? /* @__PURE__ */ J(w, {
110
110
  size: f.SM,
111
111
  className: X.iconCompleted,
112
112
  "aria-hidden": !0,
113
113
  stroke: p
114
- }) : t ? /* @__PURE__ */ K(y, {
114
+ }) : t ? /* @__PURE__ */ J(x, {
115
115
  size: 16,
116
116
  ariaLabel: n
117
- }) : null, Ne = (e) => {
117
+ }) : null, Fe = (e) => {
118
118
  if (e == null) return "";
119
119
  let t = e.lastIndexOf(".");
120
120
  return t > 0 ? e.slice(0, t) : e;
121
- }, Pe = (e) => {
122
- if (!e) return E;
121
+ }, Ie = (e) => {
122
+ if (!e) return O;
123
123
  let t = u(e);
124
124
  if (t.startsWith("image/")) switch (t) {
125
- case "image/jpeg": return N;
126
- case "image/png": return R;
125
+ case "image/jpeg": return F;
126
+ case "image/png": return B;
127
127
  case "image/svg+xml": return ne;
128
- case "image/bmp": return D;
129
- default: return V;
128
+ case "image/bmp": return k;
129
+ default: return U;
130
130
  }
131
131
  if (t.startsWith("video/")) return fe;
132
132
  if (t.startsWith("audio/")) return le;
133
133
  switch (t) {
134
- case "application/pdf": return I;
135
- case "application/msword": return A;
136
- case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return j;
137
- case "application/vnd.ms-powerpoint": return z;
138
- case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return z;
134
+ case "application/pdf": return R;
135
+ case "application/msword": return M;
136
+ case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return N;
137
+ case "application/vnd.ms-powerpoint": return V;
138
+ case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return V;
139
139
  case "application/vnd.ms-excel": return oe;
140
140
  case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return oe;
141
141
  case "application/zip":
@@ -143,53 +143,57 @@ var J = {
143
143
  case "application/x-7z-compressed":
144
144
  case "application/gzip":
145
145
  case "application/x-tar": return ce;
146
- case "text/csv": return k;
147
- case "text/plain": return ie;
146
+ case "text/csv": return j;
147
+ case "text/plain": return ae;
148
148
  case "text/html":
149
- case "application/xhtml+xml": return M;
149
+ case "application/xhtml+xml": return P;
150
150
  case "application/xml": return se;
151
151
  case "application/sql": return te;
152
- case "text/javascript": return P;
153
- case "text/jsx": return F;
152
+ case "text/javascript": return I;
153
+ case "text/jsx": return L;
154
154
  case "text/typescript": return re;
155
- case "text/tsx": return B;
156
- case "text/css": return O;
157
- case "text/x-php": return L;
155
+ case "text/tsx": return ie;
156
+ case "text/css": return A;
157
+ case "text/x-php": return z;
158
158
  case "text/x-rustsrc": return ee;
159
- case "text/x-vue": return ae;
160
- default: return E;
159
+ case "text/x-vue": return H;
160
+ default: return O;
161
161
  }
162
- }, Fe = (e) => {
162
+ }, Le = (e) => {
163
163
  let { type: n, contentType: r } = e;
164
- return n === t.Prompt ? de : n === t.Pasted ? C : n === t.Image ? V : Pe(r ?? "");
165
- }, Ie = (e) => {
164
+ return n === t.Prompt ? de : n === t.Pasted ? T : n === t.Image ? U : Ie(r ?? "");
165
+ }, Re = (e) => {
166
166
  let t = u(e), r = n[t];
167
167
  if (r) return r;
168
168
  let i = t.split("/")[1];
169
169
  if (i && !i.startsWith("vnd.") && !i.includes("+")) return i;
170
- }, Le = (e, n) => {
171
- let { type: r, name: i, contentType: a } = e;
170
+ }, ze = (e) => {
171
+ let { name: t, contentType: n } = e;
172
+ if (n) {
173
+ let e = Re(n);
174
+ if (e) return e;
175
+ }
176
+ if (t == null) return;
177
+ let r = t.lastIndexOf(".");
178
+ if (r > 0 && r < t.length - 1) return t.slice(r + 1).toLowerCase();
179
+ }, Be = (e) => e.type !== t.Prompt && e.type !== t.Pasted, Ve = (e, n) => {
180
+ let { type: r, name: i } = e;
172
181
  if (r === t.Prompt) return n.promptLabel ?? "Prompt";
173
182
  if (r === t.Pasted) return n.pastedLabel ?? "Pasted";
174
183
  if (r === t.Image) return n.imageLabel ?? "Image";
175
- if (a) {
176
- let e = Ie(a);
177
- if (e) return `.${e}`;
178
- }
179
- if (i == null) return "";
180
- let o = i.lastIndexOf(".");
181
- return o > 0 && o < i.length - 1 ? `.${i.slice(o + 1).toLowerCase()}` : i;
182
- }, Re = (e, n = {}) => {
184
+ let a = ze(e);
185
+ return a ? `.${a}` : i ?? "";
186
+ }, He = (e, n = {}) => {
183
187
  let { type: r, status: i, previewUrl: o, url: s } = e, c = i === a.Loading, l = i === a.Error, u = r === t.Image && !!(o ?? s) && !l, d = r === t.Link && !l;
184
188
  return {
185
189
  isLoading: c,
186
190
  isError: l,
187
191
  isImage: u,
188
192
  isLink: d,
189
- BottomIcon: d ? null : Fe(e),
190
- typeLabel: d ? null : Le(e, n)
193
+ BottomIcon: d ? null : Le(e),
194
+ typeLabel: d ? null : Ve(e, n)
191
195
  };
192
- }, ze = "flex size-[84px] items-center justify-center rounded-xl border", Z = {
196
+ }, Ue = "flex size-[100px] items-center justify-center rounded-xl border", We = "outline-offset-1 focus-visible:outline-1", Z = {
193
197
  tray: "dial-ai-attachment-tray",
194
198
  trayItem: "dial-ai-attachment-tray-item",
195
199
  tile: "dial-ai-attachment-tile",
@@ -198,156 +202,168 @@ var J = {
198
202
  tileType: "dial-ai-attachment-tile-type",
199
203
  tileAction: "dial-ai-attachment-tile-action"
200
204
  }, Q = {
201
- tile: "_tile_1tdbq_12",
202
- hovered: "_hovered_1tdbq_18",
203
- selected: "_selected_1tdbq_28",
204
- tileError: "_tileError_1tdbq_33",
205
- nameText: "_nameText_1tdbq_38",
206
- typeText: "_typeText_1tdbq_42",
207
- retryIcon: "_retryIcon_1tdbq_46",
208
- track: "_track_1tdbq_50",
209
- actionButton: "_actionButton_1tdbq_56",
210
- imageActionButton: "_imageActionButton_1tdbq_60"
211
- }, Be = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: o }) => /* @__PURE__ */ K(b, {
205
+ tile: "_tile_23kve_12",
206
+ hovered: "_hovered_23kve_18",
207
+ selected: "_selected_23kve_28",
208
+ tileError: "_tileError_23kve_33",
209
+ nameText: "_nameText_23kve_38",
210
+ typeText: "_typeText_23kve_42",
211
+ placeholderIcon: "_placeholderIcon_23kve_46",
212
+ retryIcon: "_retryIcon_23kve_50",
213
+ track: "_track_23kve_54",
214
+ actionButton: "_actionButton_23kve_65",
215
+ loading: "_loading_23kve_86",
216
+ imageActionButton: "_imageActionButton_23kve_87",
217
+ proxyFocus: "_proxyFocus_23kve_96"
218
+ }, Ge = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: o, isAlwaysVisible: s }) => /* @__PURE__ */ J(S, {
212
219
  icon: a,
213
- size: m.Small,
214
- className: c("opacity-0 focus-visible:opacity-100 group-focus-within/attachment-tile:opacity-100 group-hover/attachment-tile:opacity-100", Q.actionButton, o, Z.tileAction),
220
+ size: h.Small,
221
+ className: c(s ? "opacity-100" : "opacity-0 group-hover/attachment-tile:opacity-100 group-focus-visible/attachment-tile:opacity-100 group-has-[:focus-visible]/attachment-tile:opacity-100", Q.actionButton, o, Z.tileAction),
215
222
  "aria-label": e,
216
223
  "aria-describedby": t ? n : void 0,
217
224
  onClick: (e) => {
218
225
  e.stopPropagation(), r(i);
219
226
  }
220
- }), Ve = ({ ...e }) => /* @__PURE__ */ K(Be, {
221
- icon: /* @__PURE__ */ K(ue, {
227
+ }), Ke = ({ ...e }) => /* @__PURE__ */ J(Ge, {
228
+ icon: /* @__PURE__ */ J(ue, {
222
229
  size: f.SM,
223
230
  "aria-hidden": !0,
224
231
  stroke: p
225
232
  }),
226
233
  className: Q.retryIcon,
227
234
  ...e
228
- }), He = ({ ...e }) => /* @__PURE__ */ K(Be, {
229
- icon: /* @__PURE__ */ K(w, {
235
+ }), qe = ({ ...e }) => /* @__PURE__ */ J(Ge, {
236
+ icon: /* @__PURE__ */ J(E, {
230
237
  size: f.SM,
231
238
  "aria-hidden": !0,
232
239
  stroke: p
233
240
  }),
234
241
  ...e
235
- }), Ue = ({ ...e }) => /* @__PURE__ */ K(Be, {
236
- icon: /* @__PURE__ */ K(T, {
242
+ }), Je = ({ ...e }) => /* @__PURE__ */ J(Ge, {
243
+ icon: /* @__PURE__ */ J(D, {
237
244
  size: f.SM,
238
245
  "aria-hidden": !0,
239
246
  stroke: p
240
247
  }),
241
248
  ...e
242
- }), We = ({ ...e }) => /* @__PURE__ */ K(Be, {
243
- icon: /* @__PURE__ */ K(pe, {
249
+ }), Ye = ({ className: e, ...t }) => /* @__PURE__ */ J(Ge, {
250
+ icon: /* @__PURE__ */ J(pe, {
244
251
  size: f.SM,
245
252
  "aria-hidden": !0,
246
253
  stroke: p
247
254
  }),
248
- ...e
249
- }), Ge = {
255
+ className: c("mobile:opacity-100", e),
256
+ ...t
257
+ }), Xe = {
250
258
  [e.Network]: "Upload failed · network error",
251
259
  [e.UnsupportedType]: "Upload failed · unsupported file type",
252
260
  [e.FileTooLarge]: "Upload failed · file too large"
253
- }, Ke = ({ attachment: t, searchQuery: n = "", onClick: r, onRetry: i, labels: o, styles: s, onDownload: l, isLink: u, cssVars: d, onExpand: f, isExpandable: p, onRemove: m, isSelected: h }) => {
254
- let { clickLabel: _ = "Download attachment", expandLabel: v = "Expand pasted text", downloadLabel: b = "Download attachment", retryLabel: x = "Retry upload", removeLabel: S = "Remove attachment", openInNewTabLabel: C = "Open in new tab", sizeLabel: w, uploadingLabel: T = "Uploading", errorReasonLabels: E, genericErrorLabel: D = "Upload failed" } = o ?? {}, { typography: O, className: k } = s ?? {}, { id: A, name: j, status: M, errorReason: N } = t, P = M === a.Loading, F = M === a.Error, I = he(), L = F ? N && (E?.[N] ?? Ge[N]) || D : "", { BottomIcon: R, typeLabel: z } = Re(t), ee = !F && !P && l && !u, te = F && !!i && N !== e.UnsupportedType && N !== e.FileTooLarge, ne = Number(!!ee) + Number(!!te) + Number(!!u) + Number(!!m), re = ne > 1 ? "pe-11" : ne === 1 ? "pe-5" : void 0, B = !!p && f !== void 0, ie = B || r !== void 0, ae = () => {
255
- B ? f(A) : r?.(A);
256
- }, oe = (e) => {
257
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), ae());
258
- }, se = W(() => Ne(j), [j]), ce = H(() => {
261
+ }, Ze = ({ attachment: t, searchQuery: n = "", onClick: r, onRetry: i, labels: o, styles: s, onDownload: l, isLink: u, cssVars: d, onExpand: h, isExpandable: g, onRemove: y, isSelected: b }) => {
262
+ let { clickLabel: S = "Download attachment", expandLabel: C = "Expand pasted text", downloadLabel: w = "Download attachment", retryLabel: T = "Retry upload", removeLabel: E = "Remove attachment", openInNewTabLabel: D = "Open in new tab", sizeLabel: O, uploadingLabel: k = "Uploading", errorReasonLabels: A, genericErrorLabel: j = "Upload failed" } = o ?? {}, { typography: M, className: N } = s ?? {}, { id: P, name: F, status: I, errorReason: L } = t, R = I === a.Loading, z = I === a.Error, B = he(), V = z ? L && (A?.[L] ?? Xe[L]) || j : "", { BottomIcon: ee, typeLabel: te } = He(t), ne = Be(t), re = !z && !R && l && !u, ie = z && !!i && L !== e.UnsupportedType && L !== e.FileTooLarge, ae = !!g && h !== void 0, H = ae || r !== void 0, oe = Number(!!re) + Number(!!ie) + Number(!!u) + Number(!!y), se = !H && oe === 1, ce = () => {
263
+ ae ? h(P) : r?.(P);
264
+ }, le = (e) => {
265
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), ce());
266
+ }, U = K(() => Fe(F), [F]), ue = W(() => {
259
267
  window.open(t.referenceUrl, "_blank", "noopener,noreferrer");
260
- }, [t]), le = c(ze, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", Q.tile, !F && Q.hovered, h && Q.selected, F && Q.tileError, Z.tile, h && Z.tileSelected), V = /* @__PURE__ */ K("div", {
261
- title: se,
262
- className: c(O?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", Q.nameText, !F && re, Z.tileName),
263
- children: n ? /* @__PURE__ */ K(g, {
264
- text: se,
268
+ }, [t]), de = c(Ue, "group/attachment-tile relative flex-col justify-between items-start gap-2 overflow-hidden p-3", Q.tile, H && !z && !R && Q.hovered, R && Q.loading, b && Q.selected, z && Q.tileError, se && Q.proxyFocus, Z.tile, b && Z.tileSelected), fe = /* @__PURE__ */ J("div", {
269
+ title: U,
270
+ className: c(M?.nameClassName ?? "dial-tiny-text", "line-clamp-2 w-full min-w-0 break-words", Q.nameText, Z.tileName),
271
+ children: n ? /* @__PURE__ */ J(v, {
272
+ text: U,
265
273
  query: n,
266
274
  maxLines: 2
267
- }) : se
268
- }), ue = R && /* @__PURE__ */ q("div", {
269
- className: c("flex w-full items-center gap-1", F && re, Z.tileType),
270
- children: [/* @__PURE__ */ K(R, {
271
- size: 16,
275
+ }) : U
276
+ }), pe = ee && /* @__PURE__ */ Y("div", {
277
+ className: c("flex w-full items-end gap-1", Z.tileType),
278
+ children: [ne ? /* @__PURE__ */ J(_, {
279
+ type: m.File,
280
+ name: F ?? "",
281
+ fileExtension: ze(t),
282
+ size: f.MD,
283
+ decorative: !0
284
+ }) : /* @__PURE__ */ J(ee, {
285
+ size: f.MD,
272
286
  className: Q.typeText,
287
+ stroke: p,
273
288
  "aria-hidden": !0
274
- }), /* @__PURE__ */ K("span", {
275
- className: c(O?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", Q.typeText),
276
- children: w ? `${z} · ${w}` : z
289
+ }), /* @__PURE__ */ J("span", {
290
+ className: c(M?.metaClassName ?? "dial-tiny-text", "min-w-0 flex-1 truncate", Q.typeText),
291
+ children: O ? `${te} · ${O}` : te
277
292
  })]
278
- }), de = ie ? {
293
+ }), me = H ? {
279
294
  role: "button",
280
295
  tabIndex: 0,
281
- "aria-label": B ? v : _,
282
- onClick: ae,
283
- onKeyDown: oe
284
- } : {}, fe = /* @__PURE__ */ q(_e, { children: [
285
- V,
286
- ue,
287
- P && /* @__PURE__ */ K("div", {
296
+ "aria-label": ae ? C : S,
297
+ onClick: ce,
298
+ onKeyDown: le
299
+ } : {}, G = /* @__PURE__ */ Y(_e, { children: [
300
+ fe,
301
+ pe,
302
+ R && /* @__PURE__ */ J("div", {
288
303
  role: "progressbar",
289
- "aria-label": T,
290
- className: c("absolute start-[-1px] top-[-1px] flex size-full items-center justify-center rounded", Q.track),
291
- children: /* @__PURE__ */ K(y, { size: 32 })
304
+ "aria-label": k,
305
+ className: c("absolute inset-0 flex items-center justify-center rounded-[11px]", Q.track),
306
+ children: /* @__PURE__ */ J(x, { size: 32 })
292
307
  }),
293
- /* @__PURE__ */ q("div", {
294
- className: "absolute end-1 top-1 flex gap-1",
308
+ /* @__PURE__ */ Y("div", {
309
+ className: "absolute inset-e-1 top-1 flex",
295
310
  children: [
296
- ee && /* @__PURE__ */ K(He, {
297
- ariaLabel: b,
298
- errorTitle: L,
299
- errorDescId: I,
311
+ re && /* @__PURE__ */ J(qe, {
312
+ ariaLabel: w,
313
+ errorTitle: V,
314
+ errorDescId: B,
300
315
  onClick: l,
301
- id: A
316
+ id: P
302
317
  }),
303
- te && /* @__PURE__ */ K(Ve, {
304
- ariaLabel: x,
305
- errorTitle: L,
306
- errorDescId: I,
318
+ ie && /* @__PURE__ */ J(Ke, {
319
+ ariaLabel: T,
320
+ errorTitle: V,
321
+ errorDescId: B,
307
322
  onClick: i,
308
- id: A
323
+ id: P
309
324
  }),
310
- u && /* @__PURE__ */ K(Ue, {
311
- ariaLabel: C,
312
- errorTitle: L,
313
- errorDescId: I,
314
- onClick: ce
325
+ u && /* @__PURE__ */ J(Je, {
326
+ ariaLabel: D,
327
+ errorTitle: V,
328
+ errorDescId: B,
329
+ onClick: ue
315
330
  }),
316
- m && /* @__PURE__ */ K(We, {
317
- ariaLabel: S,
318
- errorTitle: L,
319
- errorDescId: I,
320
- onClick: m,
321
- id: A
331
+ y && /* @__PURE__ */ J(Ye, {
332
+ ariaLabel: E,
333
+ errorTitle: V,
334
+ errorDescId: B,
335
+ onClick: y,
336
+ id: P,
337
+ isAlwaysVisible: R
322
338
  })
323
339
  ]
324
340
  }),
325
- F && /* @__PURE__ */ K("span", {
326
- id: I,
341
+ z && /* @__PURE__ */ J("span", {
342
+ id: B,
327
343
  role: "status",
328
344
  "aria-live": "polite",
329
345
  className: "sr-only",
330
- children: L
346
+ children: V
331
347
  })
332
348
  ] });
333
- return /* @__PURE__ */ K("div", {
349
+ return /* @__PURE__ */ J("div", {
334
350
  style: d,
335
- className: c("inline-flex", k),
336
- children: /* @__PURE__ */ K("div", {
337
- ...de,
338
- "aria-busy": P,
351
+ className: c("inline-flex", N),
352
+ children: /* @__PURE__ */ J("div", {
353
+ ...me,
354
+ "aria-busy": R,
339
355
  style: d,
340
- className: c(le, ie && "cursor-pointer", "focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
341
- children: fe
356
+ className: c(de, H && "cursor-pointer", We),
357
+ children: G
342
358
  })
343
359
  });
344
- }, qe = /* @__PURE__ */ function(e) {
360
+ }, Qe = /* @__PURE__ */ function(e) {
345
361
  return e.Idle = "idle", e.Loading = "loading", e.Loaded = "loaded", e.Error = "error", e;
346
- }({}), Je = ({ enabled: e, src: t }) => {
347
- let n = ge(null), [r, i] = G("idle");
348
- return U(() => {
362
+ }({}), $e = ({ enabled: e, src: t }) => {
363
+ let n = ge(null), [r, i] = q("idle");
364
+ return G(() => {
349
365
  i(e && t ? "loading" : "idle");
350
- }, [e, t]), U(() => {
366
+ }, [e, t]), G(() => {
351
367
  let r = n.current;
352
368
  if (!r || !e || !t) return;
353
369
  let a = () => i("loaded"), o = () => i("error");
@@ -358,67 +374,75 @@ var J = {
358
374
  imageRef: n,
359
375
  imageLoadStatus: r
360
376
  };
361
- }, Ye = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: o, onDownload: s, styles: l, isSelected: u }) => {
362
- let { clickLabel: d = "Open attachment", expandLabel: m = "Expand pasted text", removeLabel: h = "Remove attachment", downloadLabel: g = "Download attachment" } = i ?? {}, { className: y } = l ?? {}, { id: b, name: x } = e, S = e.previewUrl ?? e.url, C = e.type === t.Pasted && n !== void 0, { isLoading: w, isError: T, isImage: E } = W(() => Re(e), [e]), D = r !== void 0 && !C && !w && !T, O = C || D, { imageRef: k, imageLoadStatus: A } = Je({
363
- enabled: E,
364
- src: S
365
- }), j = () => {
366
- C && n ? n(b) : D && r && r(b);
367
- }, M = O ? {
377
+ }, et = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: o, onDownload: s, styles: l, isSelected: u }) => {
378
+ let { clickLabel: d = "Open attachment", expandLabel: m = "Expand pasted text", removeLabel: h = "Remove attachment", downloadLabel: g = "Download attachment", uploadingLabel: _ = "Uploading" } = i ?? {}, { className: v } = l ?? {}, { id: S, name: C } = e, w = e.previewUrl ?? e.url, T = e.type === t.Pasted && n !== void 0, { isLoading: E, isError: D, isImage: O } = K(() => He(e), [e]), k = r !== void 0 && !T && !E && !D, A = T || k, j = !!s && !E, M = !A && Number(!!a) + Number(j) === 1, { imageRef: N, imageLoadStatus: P } = $e({
379
+ enabled: O,
380
+ src: w
381
+ }), F = () => {
382
+ T && n ? n(S) : k && r && r(S);
383
+ }, I = A ? {
368
384
  role: "button",
369
385
  tabIndex: 0,
370
- "aria-label": C ? m : d,
371
- onClick: j,
386
+ "aria-label": T ? m : d,
387
+ onClick: F,
372
388
  onKeyDown: (e) => {
373
- e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), j());
389
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), F());
374
390
  }
375
- } : {};
376
- return /* @__PURE__ */ K("div", {
377
- className: c(ze, "group/attachment-tile", O && "cursor-pointer", Q.tile, u && Q.selected, y, Z.tile, u && Z.tileSelected),
378
- ...M,
391
+ } : {}, L = c(Ue, "group/attachment-tile", A && "cursor-pointer", Q.tile, u && Q.selected, E && Q.loading, M && Q.proxyFocus, We, v, Z.tile, u && Z.tileSelected);
392
+ return /* @__PURE__ */ J("div", {
393
+ className: L,
394
+ ...I,
395
+ "aria-busy": E,
379
396
  style: o,
380
- children: /* @__PURE__ */ q("div", {
397
+ children: /* @__PURE__ */ Y("div", {
381
398
  className: "relative h-full w-full overflow-hidden",
382
399
  children: [
383
- /* @__PURE__ */ q("div", {
384
- className: "absolute end-1 top-1 z-10 flex gap-1",
385
- children: [a && /* @__PURE__ */ K(We, {
400
+ /* @__PURE__ */ Y("div", {
401
+ className: "absolute inset-e-1 top-1 z-10 flex",
402
+ children: [a && /* @__PURE__ */ J(Ye, {
386
403
  ariaLabel: h,
387
404
  onClick: a,
388
- id: b,
389
- className: Q.imageActionButton
390
- }), s && /* @__PURE__ */ K(He, {
405
+ id: S,
406
+ className: Q.imageActionButton,
407
+ isAlwaysVisible: E
408
+ }), j && /* @__PURE__ */ J(qe, {
391
409
  ariaLabel: g,
392
410
  onClick: s,
393
- id: b,
411
+ id: S,
394
412
  className: Q.imageActionButton
395
413
  })]
396
414
  }),
397
- A !== qe.Loaded && /* @__PURE__ */ K(_, {
398
- variant: v.Rectangular,
415
+ P !== Qe.Loaded && /* @__PURE__ */ J(y, {
416
+ variant: b.Rectangular,
399
417
  width: "100%",
400
418
  height: "100%",
401
- active: A === qe.Loading,
402
- overlay: /* @__PURE__ */ K(V, {
419
+ active: P === Qe.Loading,
420
+ overlay: /* @__PURE__ */ J(U, {
403
421
  size: f.LG,
404
- className: Q.typeText,
422
+ className: Q.placeholderIcon,
405
423
  "aria-hidden": !0,
406
424
  stroke: p
407
425
  }),
408
426
  className: "absolute inset-0 rounded-xl"
409
427
  }),
410
- /* @__PURE__ */ K("img", {
411
- ref: k,
412
- src: S,
413
- alt: x,
428
+ /* @__PURE__ */ J("img", {
429
+ ref: N,
430
+ src: w,
431
+ alt: C,
414
432
  loading: "lazy",
415
433
  decoding: "async",
416
- className: c("h-full w-full rounded-xl object-cover transition-opacity duration-200", A === qe.Loaded ? "opacity-100" : "opacity-0")
434
+ className: c("h-full w-full rounded-xl object-cover transition-opacity duration-200", P === Qe.Loaded ? "opacity-100" : "opacity-0")
435
+ }),
436
+ E && /* @__PURE__ */ J("div", {
437
+ role: "progressbar",
438
+ "aria-label": _,
439
+ className: c("absolute inset-0 flex items-center justify-center rounded-xl", Q.track),
440
+ children: /* @__PURE__ */ J(x, { size: 32 })
417
441
  })
418
442
  ]
419
443
  })
420
444
  });
421
- }, Xe = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: i, onExpand: a, onClick: o, onDownload: c, labels: l, styles: u, isSelected: d }) => {
445
+ }, tt = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: i, onExpand: a, onClick: o, onDownload: c, labels: l, styles: u, isSelected: d }) => {
422
446
  let { colors: f } = u ?? {}, p = e.type === t.Pasted && a !== void 0, m = s({
423
447
  "--ai-tile-bg": f?.background,
424
448
  "--ai-tile-border": f?.border,
@@ -432,11 +456,12 @@ var J = {
432
456
  "--ai-tile-error-text": f?.errorText,
433
457
  "--ai-tile-name-text": f?.nameText,
434
458
  "--ai-tile-type-text": f?.typeText,
459
+ "--ai-tile-placeholder-icon": f?.placeholderIcon,
435
460
  "--ai-tile-hover-icon-bg": f?.hoverIconBackground,
436
461
  "--ai-tile-hover-icon-color": f?.hoverIconColor,
437
462
  "--ai-tile-progress-track": f?.trackBackground
438
- }), { isImage: h, isLink: g } = W(() => Re(e), [e]);
439
- return h ? /* @__PURE__ */ K(Ye, {
463
+ }), { isImage: h, isLink: g } = K(() => He(e), [e]);
464
+ return h ? /* @__PURE__ */ J(et, {
440
465
  attachment: e,
441
466
  labels: l,
442
467
  onClick: o,
@@ -446,7 +471,7 @@ var J = {
446
471
  cssVars: m,
447
472
  onDownload: c,
448
473
  isSelected: d
449
- }) : /* @__PURE__ */ K(Ke, {
474
+ }) : /* @__PURE__ */ J(Ze, {
450
475
  attachment: e,
451
476
  searchQuery: n,
452
477
  onClick: o,
@@ -461,32 +486,35 @@ var J = {
461
486
  isExpandable: p,
462
487
  isSelected: d
463
488
  });
464
- }, Ze = (e) => {
465
- let t = l(e);
466
- if (!e?.length) return t;
467
- let n = /* @__PURE__ */ new Map();
489
+ }, nt = (e, t) => {
490
+ let n = l(e, t);
491
+ if (!e?.length) return n;
492
+ let r = /* @__PURE__ */ new Map();
468
493
  for (let t of e) {
469
494
  let e = t.url ?? t.data ?? t.title;
470
- n.has(e) || n.set(e, t.type);
495
+ r.has(e) || r.set(e, t.type);
471
496
  }
472
- return t.map((e) => {
473
- let t = n.get(e.id);
497
+ return n.map((e) => {
498
+ let t = r.get(e.id);
474
499
  return t ? {
475
500
  ...e,
476
501
  contentType: t
477
502
  } : e;
478
503
  });
479
- }, Qe = ({ children: e, codeClassName: t, blockClassName: n = "dial-code-text", copyAriaLabel: i, copiedLabel: a }) => /* @__PURE__ */ K(r, {
480
- language: t?.replace(/^language-/, "") ?? "",
481
- value: typeof e == "string" ? e : String(e ?? ""),
482
- codeClassName: n,
483
- containerClassName: c(X.codeBlock, n),
484
- copyLabel: i,
485
- copiedLabel: a,
486
- hideDownload: !0
487
- }), $e = me(({ content: e, typography: t, copyAriaLabel: n = "Copy", copiedLabel: r, tableScrollRegionAriaLabel: a, mathScrollRegionAriaLabel: o }) => {
504
+ }, rt = ({ children: e, codeClassName: t, blockClassName: n = "dial-code-text", copyAriaLabel: i, copiedLabel: a }) => {
505
+ let o = t?.replace(/^language-/, "") ?? "";
506
+ return /* @__PURE__ */ J(r, {
507
+ language: o,
508
+ value: typeof e == "string" ? e : String(e ?? ""),
509
+ codeClassName: n,
510
+ containerClassName: c(X.codeBlock, n),
511
+ copyLabel: i,
512
+ copiedLabel: a,
513
+ hideDownload: !0
514
+ });
515
+ }, it = me(({ content: e, typography: t, copyAriaLabel: n = "Copy", copiedLabel: r, tableScrollRegionAriaLabel: a, mathScrollRegionAriaLabel: o }) => {
488
516
  let s = "mb-1.5 last:mb-0", l = c(t?.headingClassName ?? "dial-small-semi-text", X.stageContent, s);
489
- return /* @__PURE__ */ K(i, {
517
+ return /* @__PURE__ */ J(i, {
490
518
  content: e,
491
519
  tableScrollRegionAriaLabel: a,
492
520
  mathScrollRegionAriaLabel: o,
@@ -506,216 +534,220 @@ var J = {
506
534
  link: c(t?.contentClassName ?? "dial-tiny-text", X.stageContent),
507
535
  tableCell: c(t?.contentClassName ?? "dial-tiny-text", X.tableCell)
508
536
  },
509
- components: { code: ({ children: e, className: i }) => i?.includes("language-") ? /* @__PURE__ */ K(Qe, {
537
+ components: { code: ({ children: e, className: i }) => i?.includes("language-") ? /* @__PURE__ */ J(rt, {
510
538
  codeClassName: i,
511
539
  blockClassName: t?.codeBlockClassName,
512
540
  copyAriaLabel: n,
513
541
  copiedLabel: r,
514
542
  children: e
515
- }) : /* @__PURE__ */ K("code", {
543
+ }) : /* @__PURE__ */ J("code", {
516
544
  className: c("px-1 py-0.5", t?.codeClassName ?? "dial-tiny-text rounded-md", X.codeInline),
517
545
  children: e
518
546
  }) }
519
547
  });
520
- }), et = ({ attachments: e, clickLabel: t, onAttachmentClick: n }) => {
521
- let r = H((t) => {
548
+ }), at = ({ attachments: e, clickLabel: t, onAttachmentClick: n }) => {
549
+ let r = W((t) => {
522
550
  let r = e.find((e) => e.id === t);
523
551
  r && n?.(r);
524
552
  }, [e, n]);
525
- return /* @__PURE__ */ K("div", {
553
+ return /* @__PURE__ */ J("div", {
526
554
  role: "list",
527
- className: "flex flex-wrap gap-3",
528
- children: e.map((e) => /* @__PURE__ */ K("div", {
555
+ className: "flex flex-wrap gap-2",
556
+ children: e.map((e) => /* @__PURE__ */ J("div", {
529
557
  role: "listitem",
530
- children: /* @__PURE__ */ K(Xe, {
558
+ children: /* @__PURE__ */ J(tt, {
531
559
  attachment: e,
532
560
  onClick: n && r,
533
561
  labels: { clickLabel: t }
534
562
  })
535
563
  }, e.id))
536
564
  });
537
- }, tt = ({ stage: e, isLive: t, typography: n, labels: r, nameOverride: i, onAttachmentClick: a, childList: s, isExpanded: l, onToggle: u }) => {
538
- let [f, p] = G(!1), m = l ?? f, g = H((e) => {
539
- l === void 0 && p(e), u?.(e);
540
- }, [l, u]), { copyAriaLabel: _ = "Copy stage content", codeBlockCopiedLabel: v, tableScrollRegionAriaLabel: y, mathScrollRegionAriaLabel: b, runningAriaLabel: x, failedAriaLabel: S, attachmentClickLabel: C = "Preview search result" } = r ?? {}, w = W(() => Ze(e.attachments), [e.attachments]), { name: T, durationLabel: E } = Y(e.name), D = i ?? T, O = !i && Ce(T), k = e.status === o.Failed, A = !!e.content || !!e.attachments?.length, j = A || s != null, M = /* @__PURE__ */ q(_e, { children: [
541
- /* @__PURE__ */ K("span", {
565
+ }, ot = ({ stage: e, isLive: t, typography: n, labels: r, nameOverride: i, onAttachmentClick: a, attachmentDisplayResolvers: s, childList: l, isExpanded: u, onToggle: f }) => {
566
+ let [p, m] = q(!1), h = u ?? p, _ = W((e) => {
567
+ u === void 0 && m(e), f?.(e);
568
+ }, [u, f]), { copyAriaLabel: v = "Copy stage content", codeBlockCopiedLabel: y, tableScrollRegionAriaLabel: b, mathScrollRegionAriaLabel: x, runningAriaLabel: S, failedAriaLabel: C, attachmentClickLabel: w = "Preview search result" } = r ?? {}, T = K(() => nt(e.attachments, s), [e.attachments, s]), { name: E, durationLabel: D } = we(e.name), O = i ?? E, k = !i && Te(E), A = e.status === o.Failed, j = !!e.content || !!e.attachments?.length, M = j || l != null, N = /* @__PURE__ */ Y(_e, { children: [
569
+ /* @__PURE__ */ J("span", {
542
570
  className: "flex flex-none items-center",
543
- children: /* @__PURE__ */ K(Me, {
571
+ children: /* @__PURE__ */ J(Pe, {
544
572
  status: e.status,
545
573
  isLive: t,
546
- runningLabel: x,
547
- failedLabel: S
574
+ runningLabel: S,
575
+ failedLabel: C
548
576
  })
549
577
  }),
550
- /* @__PURE__ */ K("span", {
551
- className: c("min-w-0 max-w-[22rem] truncate", n?.fontClassName ?? "dial-small-text", X.stageName, k && X.stageNameFailed, O && X.monoName),
552
- children: /* @__PURE__ */ K(h, { text: D || e.status || "" })
578
+ /* @__PURE__ */ J("span", {
579
+ className: c("max-w-[22rem] min-w-0 truncate", n?.fontClassName ?? "dial-small-text", X.stageName, A && X.stageNameFailed, k && X.monoName),
580
+ children: /* @__PURE__ */ J(g, { text: O || e.status || "" })
553
581
  }),
554
- e.tag && /* @__PURE__ */ K("span", {
582
+ e.tag && /* @__PURE__ */ J("span", {
555
583
  className: c("flex-none", n?.tagClassName ?? "dial-tiny-lead-text", X.tag),
556
584
  children: e.tag
557
585
  }),
558
- E && /* @__PURE__ */ K("span", {
586
+ D && /* @__PURE__ */ J("span", {
559
587
  className: c("flex-none", n?.countFontClassName ?? "dial-tiny-text", X.duration),
560
- children: E
588
+ children: D
561
589
  })
562
590
  ] });
563
- return j ? /* @__PURE__ */ q(d, {
564
- expanded: m,
565
- onToggle: g,
566
- title: /* @__PURE__ */ K("span", {
591
+ return M ? /* @__PURE__ */ Y(d, {
592
+ expanded: h,
593
+ onToggle: _,
594
+ title: /* @__PURE__ */ J("span", {
567
595
  className: "flex min-w-0 items-center gap-2",
568
- children: M
596
+ children: N
569
597
  }),
570
- className: ke,
571
- headerClassName: c(Ae, X.row, X.stageHeader),
598
+ className: je,
599
+ headerClassName: c(Me, X.row, X.stageHeader),
572
600
  contentClassName: c("-mt-1 flex min-w-0 flex-col gap-3 px-0 py-1", X.stageRegion),
573
- children: [m && A && /* @__PURE__ */ q("div", {
601
+ children: [h && j && /* @__PURE__ */ Y("div", {
574
602
  className: "flex min-w-0 flex-col gap-3 ps-8",
575
- children: [e.content && /* @__PURE__ */ K("div", {
603
+ children: [e.content && /* @__PURE__ */ J("div", {
576
604
  className: "max-h-[300px] min-w-0 overflow-y-auto",
577
- children: /* @__PURE__ */ K($e, {
605
+ children: /* @__PURE__ */ J(it, {
578
606
  content: e.content,
579
607
  typography: n,
580
- copyAriaLabel: _,
581
- copiedLabel: v,
582
- tableScrollRegionAriaLabel: y,
583
- mathScrollRegionAriaLabel: b
608
+ copyAriaLabel: v,
609
+ copiedLabel: y,
610
+ tableScrollRegionAriaLabel: b,
611
+ mathScrollRegionAriaLabel: x
584
612
  })
585
- }), w.length > 0 && /* @__PURE__ */ K(et, {
586
- attachments: w,
587
- clickLabel: C,
613
+ }), T.length > 0 && /* @__PURE__ */ J(at, {
614
+ attachments: T,
615
+ clickLabel: w,
588
616
  onAttachmentClick: a
589
617
  })]
590
- }), m && s]
591
- }) : /* @__PURE__ */ K("div", {
618
+ }), h && l]
619
+ }) : /* @__PURE__ */ J("div", {
592
620
  className: c("flex w-full items-center gap-2 px-2 py-1.5", X.row),
593
- children: M
621
+ children: N
594
622
  });
595
- }, nt = (e) => e <= 3 ? "ps-4" : "ps-0", rt = (e) => e <= 3 ? "ps-6" : "ps-0", it = ({ node: e, depth: t, nameOverride: n, isStreaming: r, expansion: i, typography: a, labels: o, onAttachmentClick: s }) => {
596
- let c = De(e.stage.index), l = t + 1;
597
- return /* @__PURE__ */ K(tt, {
623
+ }, st = (e) => e <= 3 ? "ps-4" : "ps-0", ct = (e) => e <= 3 ? "ps-6" : "ps-0", lt = ({ node: e, depth: t, nameOverride: n, isStreaming: r, expansion: i, typography: a, labels: o, onAttachmentClick: s, attachmentDisplayResolvers: c }) => {
624
+ let l = ke(e.stage.index), u = t + 1;
625
+ return /* @__PURE__ */ J(ot, {
598
626
  stage: e.stage,
599
627
  nameOverride: n,
600
628
  isLive: r && e.stage.status == null,
601
629
  typography: a,
602
630
  labels: o,
603
631
  onAttachmentClick: s,
604
- isExpanded: i.isExpanded(c),
605
- onToggle: (e) => i.onToggle(c, e),
606
- childList: e.children.length > 0 ? /* @__PURE__ */ K(ot, {
632
+ attachmentDisplayResolvers: c,
633
+ isExpanded: i.isExpanded(l),
634
+ onToggle: (e) => i.onToggle(l, e),
635
+ childList: e.children.length > 0 ? /* @__PURE__ */ J(dt, {
607
636
  nodes: e.children,
608
- depth: l,
609
- className: nt(l),
637
+ depth: u,
638
+ className: st(u),
610
639
  isStreaming: r,
611
640
  expansion: i,
612
641
  typography: a,
613
642
  labels: o,
614
- onAttachmentClick: s
643
+ onAttachmentClick: s,
644
+ attachmentDisplayResolvers: c
615
645
  }) : void 0
616
646
  });
617
- }, at = ({ row: e, depth: t, isStreaming: n, expansion: r, typography: i, labels: a, onAttachmentClick: s }) => {
618
- let { runningAriaLabel: l, failedAriaLabel: u, attemptLabel: f = (e) => `Attempt ${e}` } = a ?? {}, p = e.attempts ?? [], m = p.some((e) => e.stage.status == null), g = p.some((e) => e.stage.status === o.Failed), _ = o.Completed;
619
- m ? _ = null : g && (_ = o.Failed);
620
- let v = Oe(e.key), y = r.isExpanded(v), b = t + 1;
621
- return /* @__PURE__ */ K(d, {
622
- title: /* @__PURE__ */ q("span", {
623
- className: "flex min-w-0 items-center gap-2",
624
- children: [
625
- /* @__PURE__ */ K("span", {
626
- className: "flex flex-none items-center",
627
- children: /* @__PURE__ */ K(Me, {
628
- status: _,
629
- isLive: n && m,
630
- runningLabel: l,
631
- failedLabel: u
632
- })
633
- }),
634
- /* @__PURE__ */ K("span", {
635
- className: c("min-w-0 max-w-[22rem] truncate", i?.fontClassName ?? "dial-small-text", X.stageName, g && X.stageNameFailed),
636
- children: /* @__PURE__ */ K(h, { text: e.name })
637
- }),
638
- /* @__PURE__ */ q("span", {
639
- className: c("flex-none", i?.countFontClassName ?? "dial-tiny-text", X.count),
640
- children: ["×", p.length]
647
+ }, ut = ({ row: e, depth: t, isStreaming: n, expansion: r, typography: i, labels: a, onAttachmentClick: s, attachmentDisplayResolvers: l }) => {
648
+ let { runningAriaLabel: u, failedAriaLabel: f, attemptLabel: p = (e) => `Attempt ${e}` } = a ?? {}, m = e.attempts ?? [], h = m.some((e) => e.stage.status == null), _ = m.some((e) => e.stage.status === o.Failed), v = o.Completed;
649
+ h ? v = null : _ && (v = o.Failed);
650
+ let y = Ae(e.key), b = r.isExpanded(y), x = t + 1, S = /* @__PURE__ */ Y("span", {
651
+ className: "flex min-w-0 items-center gap-2",
652
+ children: [
653
+ /* @__PURE__ */ J("span", {
654
+ className: "flex flex-none items-center",
655
+ children: /* @__PURE__ */ J(Pe, {
656
+ status: v,
657
+ isLive: n && h,
658
+ runningLabel: u,
659
+ failedLabel: f
641
660
  })
642
- ]
643
- }),
644
- expanded: y,
645
- onToggle: (e) => r.onToggle(v, e),
646
- className: ke,
647
- headerClassName: c(Ae, X.collapseButton, X.row, X.stageHeader),
648
- contentClassName: c("-mt-2 min-w-0 px-0", rt(b), X.stageRegion),
649
- children: /* @__PURE__ */ K("ul", {
661
+ }),
662
+ /* @__PURE__ */ J("span", {
663
+ className: c("max-w-[22rem] min-w-0 truncate", i?.fontClassName ?? "dial-small-text", X.stageName, _ && X.stageNameFailed),
664
+ children: /* @__PURE__ */ J(g, { text: e.name })
665
+ }),
666
+ /* @__PURE__ */ Y("span", {
667
+ className: c("flex-none", i?.countFontClassName ?? "dial-tiny-text", X.count),
668
+ children: ["×", m.length]
669
+ })
670
+ ]
671
+ });
672
+ return /* @__PURE__ */ J(d, {
673
+ title: S,
674
+ expanded: b,
675
+ onToggle: (e) => r.onToggle(y, e),
676
+ className: je,
677
+ headerClassName: c(Me, X.collapseButton, X.row, X.stageHeader),
678
+ contentClassName: c("-mt-2 min-w-0 px-0", ct(x), X.stageRegion),
679
+ children: /* @__PURE__ */ J("ul", {
650
680
  role: "list",
651
681
  className: "flex min-w-0 flex-col gap-0.5",
652
- children: y && p.map((e, t) => /* @__PURE__ */ K("li", {
682
+ children: b && m.map((e, t) => /* @__PURE__ */ J("li", {
653
683
  role: "listitem",
654
684
  className: "min-w-0",
655
- children: /* @__PURE__ */ K(it, {
685
+ children: /* @__PURE__ */ J(lt, {
656
686
  node: e,
657
- depth: b,
658
- nameOverride: f(t + 1),
687
+ depth: x,
688
+ nameOverride: p(t + 1),
659
689
  isStreaming: n,
660
690
  expansion: r,
661
691
  typography: i,
662
692
  labels: a,
663
- onAttachmentClick: s
693
+ onAttachmentClick: s,
694
+ attachmentDisplayResolvers: l
664
695
  })
665
696
  }, e.stage.index))
666
697
  })
667
698
  });
668
- }, ot = ({ nodes: e, depth: t, className: n, ...r }) => /* @__PURE__ */ K("ul", {
699
+ }, dt = ({ nodes: e, depth: t, className: n, ...r }) => /* @__PURE__ */ J("ul", {
669
700
  role: "list",
670
701
  className: c("flex min-w-0 flex-col gap-0.5", n),
671
- children: je(e).map((e) => /* @__PURE__ */ K("li", {
702
+ children: Ne(e).map((e) => /* @__PURE__ */ J("li", {
672
703
  role: "listitem",
673
704
  className: "min-w-0",
674
- children: e.node ? /* @__PURE__ */ K(it, {
705
+ children: e.node ? /* @__PURE__ */ J(lt, {
675
706
  node: e.node,
676
707
  depth: t,
677
708
  ...r
678
- }) : /* @__PURE__ */ K(at, {
709
+ }) : /* @__PURE__ */ J(ut, {
679
710
  row: e,
680
711
  depth: t,
681
712
  ...r
682
713
  })
683
714
  }, e.key))
684
- }), st = ({ stages: e, isStreaming: t, className: n, styles: r, labels: i, onAttachmentClick: a, expansion: o }) => {
685
- let { colors: l, typography: u } = r ?? {}, d = s({
686
- "--cs-text": l?.text,
687
- "--cs-row-hover": l?.rowHoverColor,
688
- "--cs-button-bg": l?.collapsedButtonBg,
689
- "--cs-stage-text": l?.stageTextColor,
690
- "--cs-failed-text": l?.failedColor,
691
- "--cs-tag-text": l?.tagTextColor,
692
- "--cs-count-text": l?.countTextColor,
693
- "--cs-duration-text": l?.durationTextColor,
694
- "--cs-icon-secondary": l?.iconSecondaryColor,
695
- "--cs-icon-completed": l?.iconCompletedColor,
696
- "--cs-icon-error": l?.iconErrorColor,
697
- "--cs-code-bg": l?.codeBg,
698
- "--cs-code-border": l?.codeBorderColor,
699
- "--cs-code-text": l?.codeTextColor,
700
- "--cs-border": l?.borderColor
701
- }), f = W(() => Ee(e), [e]);
702
- return /* @__PURE__ */ K("div", {
703
- style: d,
704
- className: c("w-full min-w-0", X.panel, n, J.panel),
705
- children: /* @__PURE__ */ K(ot, {
706
- nodes: f,
715
+ }), ft = ({ stages: e, isStreaming: t, className: n, styles: r, labels: i, onAttachmentClick: a, attachmentDisplayResolvers: o, expansion: l }) => {
716
+ let { colors: u, typography: d } = r ?? {}, f = s({
717
+ "--cs-text": u?.text,
718
+ "--cs-row-hover": u?.rowHoverColor,
719
+ "--cs-button-bg": u?.collapsedButtonBg,
720
+ "--cs-stage-text": u?.stageTextColor,
721
+ "--cs-failed-text": u?.failedColor,
722
+ "--cs-tag-text": u?.tagTextColor,
723
+ "--cs-count-text": u?.countTextColor,
724
+ "--cs-duration-text": u?.durationTextColor,
725
+ "--cs-icon-secondary": u?.iconSecondaryColor,
726
+ "--cs-icon-completed": u?.iconCompletedColor,
727
+ "--cs-icon-error": u?.iconErrorColor,
728
+ "--cs-code-bg": u?.codeBg,
729
+ "--cs-code-border": u?.codeBorderColor,
730
+ "--cs-code-text": u?.codeTextColor,
731
+ "--cs-border": u?.borderColor
732
+ }), p = K(() => Oe(e), [e]);
733
+ return /* @__PURE__ */ J("div", {
734
+ style: f,
735
+ className: c("w-full min-w-0", X.panel, n, ve.panel),
736
+ children: /* @__PURE__ */ J(dt, {
737
+ nodes: p,
707
738
  depth: 0,
708
739
  className: "w-full ps-5",
709
740
  isStreaming: t,
710
- expansion: o,
711
- typography: u,
741
+ expansion: l,
742
+ typography: d,
712
743
  labels: i,
713
- onAttachmentClick: a
744
+ onAttachmentClick: a,
745
+ attachmentDisplayResolvers: o
714
746
  })
715
747
  });
716
- }, ct = (e) => {
717
- let t = ve();
718
- return /* @__PURE__ */ K(st, {
748
+ }, pt = (e) => {
749
+ let t = ye();
750
+ return /* @__PURE__ */ J(ft, {
719
751
  ...e,
720
752
  expansion: t
721
753
  });
@@ -726,141 +758,143 @@ var J = {
726
758
  doneIcon: "_doneIcon_16fae_36",
727
759
  failedText: "_failedText_16fae_40",
728
760
  liveName: "_liveName_16fae_44"
729
- }, lt = ({ stages: e, isStreaming: t, labels: n, className: r, styles: i, onAttachmentClick: a }) => {
730
- let { executedLabel: l = "Executed", stepsLabel: u = () => "steps", failedCountLabel: m = (e) => `${e} failed`, runningAriaLabel: g = "Running", copyAriaLabel: _, codeBlockCopiedLabel: v, tableScrollRegionAriaLabel: b, mathScrollRegionAriaLabel: x, failedAriaLabel: C, attemptLabel: w, attachmentClickLabel: T } = n ?? {}, [E, D] = G(t), O = ve(), { reset: k } = O, A = e.length > 1;
731
- U(() => {
732
- A && !E && k();
761
+ }, mt = ({ stages: e, isStreaming: t, labels: n, className: r, styles: i, onAttachmentClick: a, attachmentDisplayResolvers: l }) => {
762
+ let { executedLabel: u = "Executed", stepsLabel: m = () => "steps", failedCountLabel: h = (e) => `${e} failed`, runningAriaLabel: _ = "Running", copyAriaLabel: v, codeBlockCopiedLabel: y, tableScrollRegionAriaLabel: b, mathScrollRegionAriaLabel: S, failedAriaLabel: C, attemptLabel: T, attachmentClickLabel: E } = n ?? {}, [D, O] = q(t), k = ye(), { reset: A } = k, j = e.length > 1;
763
+ G(() => {
764
+ j && !D && A();
733
765
  }, [
734
- A,
735
- E,
736
- k
766
+ j,
767
+ D,
768
+ A
737
769
  ]);
738
- let j = ge(t);
739
- U(() => {
740
- j.current && !t && D(!1), j.current = t;
770
+ let M = ge(t);
771
+ G(() => {
772
+ M.current && !t && O(!1), M.current = t;
741
773
  }, [t]);
742
- let { colors: M, panel: N } = i ?? {}, P = i?.typography ?? { fontClassName: "dial-small-text" }, F = s({
743
- "--cs-cg-label": M?.labelColor,
744
- "--cs-cg-label-hover": M?.labelHoverColor,
745
- "--cs-cg-done": M?.doneColor,
746
- "--cs-cg-failed": M?.failedColor,
747
- "--cs-text": N?.text,
748
- "--cs-row-hover": N?.rowHoverColor,
749
- "--cs-button-bg": N?.collapsedButtonBg,
750
- "--cs-stage-text": N?.stageTextColor,
751
- "--cs-failed-text": N?.failedColor,
752
- "--cs-tag-text": N?.tagTextColor,
753
- "--cs-count-text": N?.countTextColor,
754
- "--cs-duration-text": N?.durationTextColor,
755
- "--cs-icon-secondary": N?.iconSecondaryColor,
756
- "--cs-icon-completed": N?.iconCompletedColor,
757
- "--cs-icon-error": N?.iconErrorColor,
758
- "--cs-code-bg": N?.codeBg,
759
- "--cs-code-border": N?.codeBorderColor,
760
- "--cs-code-text": N?.codeTextColor,
761
- "--cs-border": N?.borderColor
774
+ let { colors: N, panel: P } = i ?? {}, F = i?.typography ?? { fontClassName: "dial-small-text" }, I = s({
775
+ "--cs-cg-label": N?.labelColor,
776
+ "--cs-cg-label-hover": N?.labelHoverColor,
777
+ "--cs-cg-done": N?.doneColor,
778
+ "--cs-cg-failed": N?.failedColor,
779
+ "--cs-text": P?.text,
780
+ "--cs-row-hover": P?.rowHoverColor,
781
+ "--cs-button-bg": P?.collapsedButtonBg,
782
+ "--cs-stage-text": P?.stageTextColor,
783
+ "--cs-failed-text": P?.failedColor,
784
+ "--cs-tag-text": P?.tagTextColor,
785
+ "--cs-count-text": P?.countTextColor,
786
+ "--cs-duration-text": P?.durationTextColor,
787
+ "--cs-icon-secondary": P?.iconSecondaryColor,
788
+ "--cs-icon-completed": P?.iconCompletedColor,
789
+ "--cs-icon-error": P?.iconErrorColor,
790
+ "--cs-code-bg": P?.codeBg,
791
+ "--cs-code-border": P?.codeBorderColor,
792
+ "--cs-code-text": P?.codeTextColor,
793
+ "--cs-border": P?.borderColor
762
794
  });
763
795
  if (e.length === 0) return null;
764
- let I = {
765
- copyAriaLabel: _,
766
- codeBlockCopiedLabel: v,
796
+ let L = {
797
+ copyAriaLabel: v,
798
+ codeBlockCopiedLabel: y,
767
799
  tableScrollRegionAriaLabel: b,
768
- mathScrollRegionAriaLabel: x,
769
- runningAriaLabel: g,
800
+ mathScrollRegionAriaLabel: S,
801
+ runningAriaLabel: _,
770
802
  failedAriaLabel: C,
771
- attemptLabel: w,
772
- attachmentClickLabel: T
803
+ attemptLabel: T,
804
+ attachmentClickLabel: E
773
805
  };
774
- if (e.length === 1) return /* @__PURE__ */ K(st, {
806
+ if (e.length === 1) return /* @__PURE__ */ J(ft, {
775
807
  stages: e,
776
808
  isStreaming: t,
777
- expansion: O,
809
+ expansion: k,
778
810
  className: r,
779
811
  styles: {
780
- colors: N,
812
+ colors: P,
781
813
  typography: i?.typography
782
814
  },
783
- labels: I,
784
- onAttachmentClick: a
815
+ labels: L,
816
+ onAttachmentClick: a,
817
+ attachmentDisplayResolvers: l
785
818
  });
786
- let L = e.some((e) => e.status === o.Failed), R;
819
+ let R = e.some((e) => e.status === o.Failed), z;
787
820
  if (t) {
788
- let t = Y((we(e) ?? e[e.length - 1]).name).name;
789
- R = /* @__PURE__ */ q("span", {
821
+ let t = we((Ee(e) ?? e[e.length - 1]).name).name;
822
+ z = /* @__PURE__ */ Y("span", {
790
823
  role: "status",
791
824
  "aria-live": "polite",
792
825
  className: "flex min-w-0 items-center gap-2",
793
- children: [/* @__PURE__ */ K("span", {
826
+ children: [/* @__PURE__ */ J("span", {
794
827
  className: "flex flex-none items-center",
795
- children: /* @__PURE__ */ K(y, {
828
+ children: /* @__PURE__ */ J(x, {
796
829
  size: 14,
797
- ariaLabel: g
830
+ ariaLabel: _
798
831
  })
799
- }), t && /* @__PURE__ */ K("span", {
800
- className: c("min-w-0 max-w-[22rem] truncate", P.fontClassName, $.liveName),
801
- children: /* @__PURE__ */ K(h, { text: t })
832
+ }), t && /* @__PURE__ */ J("span", {
833
+ className: c("max-w-[22rem] min-w-0 truncate", F.fontClassName, $.liveName),
834
+ children: /* @__PURE__ */ J(g, { text: t })
802
835
  })]
803
836
  });
804
- } else if (L) {
837
+ } else if (R) {
805
838
  let t = e.filter((e) => e.status === o.Failed).length;
806
- R = /* @__PURE__ */ q("span", {
839
+ z = /* @__PURE__ */ Y("span", {
807
840
  className: "inline-flex items-center gap-1",
808
- children: [/* @__PURE__ */ q("span", {
809
- className: c(P.fontClassName, $.executedLabel),
841
+ children: [/* @__PURE__ */ Y("span", {
842
+ className: c(F.fontClassName, $.executedLabel),
810
843
  children: [
811
- l,
844
+ u,
812
845
  " ",
813
846
  e.length,
814
847
  " ",
815
- u(e.length)
848
+ m(e.length)
816
849
  ]
817
- }), /* @__PURE__ */ K("span", {
818
- className: c(P.fontClassName, $.failedText),
819
- children: m(t)
850
+ }), /* @__PURE__ */ J("span", {
851
+ className: c(F.fontClassName, $.failedText),
852
+ children: h(t)
820
853
  })]
821
854
  });
822
- } else R = /* @__PURE__ */ q("span", {
855
+ } else z = /* @__PURE__ */ Y("span", {
823
856
  className: "inline-flex items-center gap-1",
824
- children: [/* @__PURE__ */ K(S, {
857
+ children: [/* @__PURE__ */ J(w, {
825
858
  size: f.SM,
826
859
  className: $.doneIcon,
827
860
  "aria-hidden": !0,
828
861
  stroke: p
829
- }), /* @__PURE__ */ q("span", {
830
- className: c(P.fontClassName, $.executedLabel),
862
+ }), /* @__PURE__ */ Y("span", {
863
+ className: c(F.fontClassName, $.executedLabel),
831
864
  children: [
832
- l,
865
+ u,
833
866
  " ",
834
867
  e.length,
835
868
  " ",
836
- u(e.length)
869
+ m(e.length)
837
870
  ]
838
871
  })]
839
872
  });
840
- return /* @__PURE__ */ K("div", {
841
- style: F,
842
- className: c("flex w-full flex-col gap-1", r, J.group),
843
- children: /* @__PURE__ */ K(d, {
844
- title: R,
845
- expanded: E,
846
- onToggle: D,
873
+ return /* @__PURE__ */ J("div", {
874
+ style: I,
875
+ className: c("flex w-full flex-col gap-1", r, ve.group),
876
+ children: /* @__PURE__ */ J(d, {
877
+ title: z,
878
+ expanded: D,
879
+ onToggle: O,
847
880
  className: "overflow-visible py-0",
848
- headerClassName: c("justify-start gap-1 rounded-none px-0", $.toggleButton, J.groupToggle),
881
+ headerClassName: c("justify-start gap-1 rounded-none px-0", $.toggleButton, ve.groupToggle),
849
882
  contentClassName: c("-mt-2 px-0", $.groupRegion),
850
- children: E && /* @__PURE__ */ K(st, {
883
+ children: D && /* @__PURE__ */ J(ft, {
851
884
  stages: e,
852
885
  isStreaming: t,
853
- expansion: O,
886
+ expansion: k,
854
887
  styles: {
855
- colors: N,
888
+ colors: P,
856
889
  typography: i?.typography
857
890
  },
858
- labels: I,
891
+ labels: L,
859
892
  className: "pt-1",
860
- onAttachmentClick: a
893
+ onAttachmentClick: a,
894
+ attachmentDisplayResolvers: l
861
895
  })
862
896
  })
863
897
  });
864
898
  };
865
899
  //#endregion
866
- export { J as CONVERSATION_STAGES_CLASS, lt as CollapsedGroup, ct as StagesPanel };
900
+ export { ve as CONVERSATION_STAGES_CLASS, mt as CollapsedGroup, pt as StagesPanel };