@epam/ai-dial-conversation-stages 1.3.0-dev.6 → 1.3.0-dev.61

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 (2) hide show
  1. package/index.js +311 -286
  2. package/package.json +4 -4
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-1 outline-offset-1 focus-visible:outline", 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_1sjdm_12",
206
+ hovered: "_hovered_1sjdm_18",
207
+ selected: "_selected_1sjdm_28",
208
+ tileError: "_tileError_1sjdm_33",
209
+ nameText: "_nameText_1sjdm_38",
210
+ typeText: "_typeText_1sjdm_42",
211
+ placeholderIcon: "_placeholderIcon_1sjdm_46",
212
+ retryIcon: "_retryIcon_1sjdm_50",
213
+ track: "_track_1sjdm_54",
214
+ actionButton: "_actionButton_1sjdm_65",
215
+ loading: "_loading_1sjdm_86",
216
+ imageActionButton: "_imageActionButton_1sjdm_87",
217
+ proxyFocus: "_proxyFocus_1sjdm_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 end-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
391
  } : {};
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,
392
+ return /* @__PURE__ */ J("div", {
393
+ className: 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),
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 end-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,7 +486,7 @@ var J = {
461
486
  isExpandable: p,
462
487
  isSelected: d
463
488
  });
464
- }, Ze = (e) => {
489
+ }, nt = (e) => {
465
490
  let t = l(e);
466
491
  if (!e?.length) return t;
467
492
  let n = /* @__PURE__ */ new Map();
@@ -476,7 +501,7 @@ var J = {
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, {
504
+ }, rt = ({ children: e, codeClassName: t, blockClassName: n = "dial-code-text", copyAriaLabel: i, copiedLabel: a }) => /* @__PURE__ */ J(r, {
480
505
  language: t?.replace(/^language-/, "") ?? "",
481
506
  value: typeof e == "string" ? e : String(e ?? ""),
482
507
  codeClassName: n,
@@ -484,9 +509,9 @@ var J = {
484
509
  copyLabel: i,
485
510
  copiedLabel: a,
486
511
  hideDownload: !0
487
- }), $e = me(({ content: e, typography: t, copyAriaLabel: n = "Copy", copiedLabel: r, tableScrollRegionAriaLabel: a, mathScrollRegionAriaLabel: o }) => {
512
+ }), it = me(({ content: e, typography: t, copyAriaLabel: n = "Copy", copiedLabel: r, tableScrollRegionAriaLabel: a, mathScrollRegionAriaLabel: o }) => {
488
513
  let s = "mb-1.5 last:mb-0", l = c(t?.headingClassName ?? "dial-small-semi-text", X.stageContent, s);
489
- return /* @__PURE__ */ K(i, {
514
+ return /* @__PURE__ */ J(i, {
490
515
  content: e,
491
516
  tableScrollRegionAriaLabel: a,
492
517
  mathScrollRegionAriaLabel: o,
@@ -506,75 +531,75 @@ var J = {
506
531
  link: c(t?.contentClassName ?? "dial-tiny-text", X.stageContent),
507
532
  tableCell: c(t?.contentClassName ?? "dial-tiny-text", X.tableCell)
508
533
  },
509
- components: { code: ({ children: e, className: i }) => i?.includes("language-") ? /* @__PURE__ */ K(Qe, {
534
+ components: { code: ({ children: e, className: i }) => i?.includes("language-") ? /* @__PURE__ */ J(rt, {
510
535
  codeClassName: i,
511
536
  blockClassName: t?.codeBlockClassName,
512
537
  copyAriaLabel: n,
513
538
  copiedLabel: r,
514
539
  children: e
515
- }) : /* @__PURE__ */ K("code", {
540
+ }) : /* @__PURE__ */ J("code", {
516
541
  className: c("px-1 py-0.5", t?.codeClassName ?? "dial-tiny-text rounded-md", X.codeInline),
517
542
  children: e
518
543
  }) }
519
544
  });
520
- }), et = ({ attachments: e, clickLabel: t, onAttachmentClick: n }) => {
521
- let r = H((t) => {
545
+ }), at = ({ attachments: e, clickLabel: t, onAttachmentClick: n }) => {
546
+ let r = W((t) => {
522
547
  let r = e.find((e) => e.id === t);
523
548
  r && n?.(r);
524
549
  }, [e, n]);
525
- return /* @__PURE__ */ K("div", {
550
+ return /* @__PURE__ */ J("div", {
526
551
  role: "list",
527
- className: "flex flex-wrap gap-3",
528
- children: e.map((e) => /* @__PURE__ */ K("div", {
552
+ className: "flex flex-wrap gap-2",
553
+ children: e.map((e) => /* @__PURE__ */ J("div", {
529
554
  role: "listitem",
530
- children: /* @__PURE__ */ K(Xe, {
555
+ children: /* @__PURE__ */ J(tt, {
531
556
  attachment: e,
532
557
  onClick: n && r,
533
558
  labels: { clickLabel: t }
534
559
  })
535
560
  }, e.id))
536
561
  });
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) => {
562
+ }, ot = ({ stage: e, isLive: t, typography: n, labels: r, nameOverride: i, onAttachmentClick: a, childList: s, isExpanded: l, onToggle: u }) => {
563
+ let [f, p] = q(!1), m = l ?? f, h = W((e) => {
539
564
  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
+ }, [l, u]), { copyAriaLabel: _ = "Copy stage content", codeBlockCopiedLabel: v, tableScrollRegionAriaLabel: y, mathScrollRegionAriaLabel: b, runningAriaLabel: x, failedAriaLabel: S, attachmentClickLabel: C = "Preview search result" } = r ?? {}, w = K(() => nt(e.attachments), [e.attachments]), { name: T, durationLabel: E } = we(e.name), D = i ?? T, O = !i && Te(T), k = e.status === o.Failed, A = !!e.content || !!e.attachments?.length, j = A || s != null, M = /* @__PURE__ */ Y(_e, { children: [
566
+ /* @__PURE__ */ J("span", {
542
567
  className: "flex flex-none items-center",
543
- children: /* @__PURE__ */ K(Me, {
568
+ children: /* @__PURE__ */ J(Pe, {
544
569
  status: e.status,
545
570
  isLive: t,
546
571
  runningLabel: x,
547
572
  failedLabel: S
548
573
  })
549
574
  }),
550
- /* @__PURE__ */ K("span", {
575
+ /* @__PURE__ */ J("span", {
551
576
  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 || "" })
577
+ children: /* @__PURE__ */ J(g, { text: D || e.status || "" })
553
578
  }),
554
- e.tag && /* @__PURE__ */ K("span", {
579
+ e.tag && /* @__PURE__ */ J("span", {
555
580
  className: c("flex-none", n?.tagClassName ?? "dial-tiny-lead-text", X.tag),
556
581
  children: e.tag
557
582
  }),
558
- E && /* @__PURE__ */ K("span", {
583
+ E && /* @__PURE__ */ J("span", {
559
584
  className: c("flex-none", n?.countFontClassName ?? "dial-tiny-text", X.duration),
560
585
  children: E
561
586
  })
562
587
  ] });
563
- return j ? /* @__PURE__ */ q(d, {
588
+ return j ? /* @__PURE__ */ Y(d, {
564
589
  expanded: m,
565
- onToggle: g,
566
- title: /* @__PURE__ */ K("span", {
590
+ onToggle: h,
591
+ title: /* @__PURE__ */ J("span", {
567
592
  className: "flex min-w-0 items-center gap-2",
568
593
  children: M
569
594
  }),
570
- className: ke,
571
- headerClassName: c(Ae, X.row, X.stageHeader),
595
+ className: je,
596
+ headerClassName: c(Me, X.row, X.stageHeader),
572
597
  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", {
598
+ children: [m && A && /* @__PURE__ */ Y("div", {
574
599
  className: "flex min-w-0 flex-col gap-3 ps-8",
575
- children: [e.content && /* @__PURE__ */ K("div", {
600
+ children: [e.content && /* @__PURE__ */ J("div", {
576
601
  className: "max-h-[300px] min-w-0 overflow-y-auto",
577
- children: /* @__PURE__ */ K($e, {
602
+ children: /* @__PURE__ */ J(it, {
578
603
  content: e.content,
579
604
  typography: n,
580
605
  copyAriaLabel: _,
@@ -582,19 +607,19 @@ var J = {
582
607
  tableScrollRegionAriaLabel: y,
583
608
  mathScrollRegionAriaLabel: b
584
609
  })
585
- }), w.length > 0 && /* @__PURE__ */ K(et, {
610
+ }), w.length > 0 && /* @__PURE__ */ J(at, {
586
611
  attachments: w,
587
612
  clickLabel: C,
588
613
  onAttachmentClick: a
589
614
  })]
590
615
  }), m && s]
591
- }) : /* @__PURE__ */ K("div", {
616
+ }) : /* @__PURE__ */ J("div", {
592
617
  className: c("flex w-full items-center gap-2 px-2 py-1.5", X.row),
593
618
  children: M
594
619
  });
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, {
620
+ }, 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 }) => {
621
+ let c = ke(e.stage.index), l = t + 1;
622
+ return /* @__PURE__ */ J(ot, {
598
623
  stage: e.stage,
599
624
  nameOverride: n,
600
625
  isLive: r && e.stage.status == null,
@@ -603,10 +628,10 @@ var J = {
603
628
  onAttachmentClick: s,
604
629
  isExpanded: i.isExpanded(c),
605
630
  onToggle: (e) => i.onToggle(c, e),
606
- childList: e.children.length > 0 ? /* @__PURE__ */ K(ot, {
631
+ childList: e.children.length > 0 ? /* @__PURE__ */ J(dt, {
607
632
  nodes: e.children,
608
633
  depth: l,
609
- className: nt(l),
634
+ className: st(l),
610
635
  isStreaming: r,
611
636
  expansion: i,
612
637
  typography: a,
@@ -614,28 +639,28 @@ var J = {
614
639
  onAttachmentClick: s
615
640
  }) : void 0
616
641
  });
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", {
642
+ }, ut = ({ row: e, depth: t, isStreaming: n, expansion: r, typography: i, labels: a, onAttachmentClick: s }) => {
643
+ let { runningAriaLabel: l, failedAriaLabel: u, attemptLabel: f = (e) => `Attempt ${e}` } = a ?? {}, p = e.attempts ?? [], m = p.some((e) => e.stage.status == null), h = p.some((e) => e.stage.status === o.Failed), _ = o.Completed;
644
+ m ? _ = null : h && (_ = o.Failed);
645
+ let v = Ae(e.key), y = r.isExpanded(v), b = t + 1;
646
+ return /* @__PURE__ */ J(d, {
647
+ title: /* @__PURE__ */ Y("span", {
623
648
  className: "flex min-w-0 items-center gap-2",
624
649
  children: [
625
- /* @__PURE__ */ K("span", {
650
+ /* @__PURE__ */ J("span", {
626
651
  className: "flex flex-none items-center",
627
- children: /* @__PURE__ */ K(Me, {
652
+ children: /* @__PURE__ */ J(Pe, {
628
653
  status: _,
629
654
  isLive: n && m,
630
655
  runningLabel: l,
631
656
  failedLabel: u
632
657
  })
633
658
  }),
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 })
659
+ /* @__PURE__ */ J("span", {
660
+ className: c("min-w-0 max-w-[22rem] truncate", i?.fontClassName ?? "dial-small-text", X.stageName, h && X.stageNameFailed),
661
+ children: /* @__PURE__ */ J(g, { text: e.name })
637
662
  }),
638
- /* @__PURE__ */ q("span", {
663
+ /* @__PURE__ */ Y("span", {
639
664
  className: c("flex-none", i?.countFontClassName ?? "dial-tiny-text", X.count),
640
665
  children: ["×", p.length]
641
666
  })
@@ -643,16 +668,16 @@ var J = {
643
668
  }),
644
669
  expanded: y,
645
670
  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", {
671
+ className: je,
672
+ headerClassName: c(Me, X.collapseButton, X.row, X.stageHeader),
673
+ contentClassName: c("-mt-2 min-w-0 px-0", ct(b), X.stageRegion),
674
+ children: /* @__PURE__ */ J("ul", {
650
675
  role: "list",
651
676
  className: "flex min-w-0 flex-col gap-0.5",
652
- children: y && p.map((e, t) => /* @__PURE__ */ K("li", {
677
+ children: y && p.map((e, t) => /* @__PURE__ */ J("li", {
653
678
  role: "listitem",
654
679
  className: "min-w-0",
655
- children: /* @__PURE__ */ K(it, {
680
+ children: /* @__PURE__ */ J(lt, {
656
681
  node: e,
657
682
  depth: b,
658
683
  nameOverride: f(t + 1),
@@ -665,23 +690,23 @@ var J = {
665
690
  }, e.stage.index))
666
691
  })
667
692
  });
668
- }, ot = ({ nodes: e, depth: t, className: n, ...r }) => /* @__PURE__ */ K("ul", {
693
+ }, dt = ({ nodes: e, depth: t, className: n, ...r }) => /* @__PURE__ */ J("ul", {
669
694
  role: "list",
670
695
  className: c("flex min-w-0 flex-col gap-0.5", n),
671
- children: je(e).map((e) => /* @__PURE__ */ K("li", {
696
+ children: Ne(e).map((e) => /* @__PURE__ */ J("li", {
672
697
  role: "listitem",
673
698
  className: "min-w-0",
674
- children: e.node ? /* @__PURE__ */ K(it, {
699
+ children: e.node ? /* @__PURE__ */ J(lt, {
675
700
  node: e.node,
676
701
  depth: t,
677
702
  ...r
678
- }) : /* @__PURE__ */ K(at, {
703
+ }) : /* @__PURE__ */ J(ut, {
679
704
  row: e,
680
705
  depth: t,
681
706
  ...r
682
707
  })
683
708
  }, e.key))
684
- }), st = ({ stages: e, isStreaming: t, className: n, styles: r, labels: i, onAttachmentClick: a, expansion: o }) => {
709
+ }), ft = ({ stages: e, isStreaming: t, className: n, styles: r, labels: i, onAttachmentClick: a, expansion: o }) => {
685
710
  let { colors: l, typography: u } = r ?? {}, d = s({
686
711
  "--cs-text": l?.text,
687
712
  "--cs-row-hover": l?.rowHoverColor,
@@ -698,11 +723,11 @@ var J = {
698
723
  "--cs-code-border": l?.codeBorderColor,
699
724
  "--cs-code-text": l?.codeTextColor,
700
725
  "--cs-border": l?.borderColor
701
- }), f = W(() => Ee(e), [e]);
702
- return /* @__PURE__ */ K("div", {
726
+ }), f = K(() => Oe(e), [e]);
727
+ return /* @__PURE__ */ J("div", {
703
728
  style: d,
704
- className: c("w-full min-w-0", X.panel, n, J.panel),
705
- children: /* @__PURE__ */ K(ot, {
729
+ className: c("w-full min-w-0", X.panel, n, ve.panel),
730
+ children: /* @__PURE__ */ J(dt, {
706
731
  nodes: f,
707
732
  depth: 0,
708
733
  className: "w-full ps-5",
@@ -713,9 +738,9 @@ var J = {
713
738
  onAttachmentClick: a
714
739
  })
715
740
  });
716
- }, ct = (e) => {
717
- let t = ve();
718
- return /* @__PURE__ */ K(st, {
741
+ }, pt = (e) => {
742
+ let t = ye();
743
+ return /* @__PURE__ */ J(ft, {
719
744
  ...e,
720
745
  expansion: t
721
746
  });
@@ -726,9 +751,9 @@ var J = {
726
751
  doneIcon: "_doneIcon_16fae_36",
727
752
  failedText: "_failedText_16fae_40",
728
753
  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(() => {
754
+ }, mt = ({ stages: e, isStreaming: t, labels: n, className: r, styles: i, onAttachmentClick: a }) => {
755
+ let { executedLabel: l = "Executed", stepsLabel: u = () => "steps", failedCountLabel: m = (e) => `${e} failed`, runningAriaLabel: h = "Running", copyAriaLabel: _, codeBlockCopiedLabel: v, tableScrollRegionAriaLabel: y, mathScrollRegionAriaLabel: b, failedAriaLabel: S, attemptLabel: C, attachmentClickLabel: T } = n ?? {}, [E, D] = q(t), O = ye(), { reset: k } = O, A = e.length > 1;
756
+ G(() => {
732
757
  A && !E && k();
733
758
  }, [
734
759
  A,
@@ -736,7 +761,7 @@ var J = {
736
761
  k
737
762
  ]);
738
763
  let j = ge(t);
739
- U(() => {
764
+ G(() => {
740
765
  j.current && !t && D(!1), j.current = t;
741
766
  }, [t]);
742
767
  let { colors: M, panel: N } = i ?? {}, P = i?.typography ?? { fontClassName: "dial-small-text" }, F = s({
@@ -764,14 +789,14 @@ var J = {
764
789
  let I = {
765
790
  copyAriaLabel: _,
766
791
  codeBlockCopiedLabel: v,
767
- tableScrollRegionAriaLabel: b,
768
- mathScrollRegionAriaLabel: x,
769
- runningAriaLabel: g,
770
- failedAriaLabel: C,
771
- attemptLabel: w,
792
+ tableScrollRegionAriaLabel: y,
793
+ mathScrollRegionAriaLabel: b,
794
+ runningAriaLabel: h,
795
+ failedAriaLabel: S,
796
+ attemptLabel: C,
772
797
  attachmentClickLabel: T
773
798
  };
774
- if (e.length === 1) return /* @__PURE__ */ K(st, {
799
+ if (e.length === 1) return /* @__PURE__ */ J(ft, {
775
800
  stages: e,
776
801
  isStreaming: t,
777
802
  expansion: O,
@@ -785,27 +810,27 @@ var J = {
785
810
  });
786
811
  let L = e.some((e) => e.status === o.Failed), R;
787
812
  if (t) {
788
- let t = Y((we(e) ?? e[e.length - 1]).name).name;
789
- R = /* @__PURE__ */ q("span", {
813
+ let t = we((Ee(e) ?? e[e.length - 1]).name).name;
814
+ R = /* @__PURE__ */ Y("span", {
790
815
  role: "status",
791
816
  "aria-live": "polite",
792
817
  className: "flex min-w-0 items-center gap-2",
793
- children: [/* @__PURE__ */ K("span", {
818
+ children: [/* @__PURE__ */ J("span", {
794
819
  className: "flex flex-none items-center",
795
- children: /* @__PURE__ */ K(y, {
820
+ children: /* @__PURE__ */ J(x, {
796
821
  size: 14,
797
- ariaLabel: g
822
+ ariaLabel: h
798
823
  })
799
- }), t && /* @__PURE__ */ K("span", {
824
+ }), t && /* @__PURE__ */ J("span", {
800
825
  className: c("min-w-0 max-w-[22rem] truncate", P.fontClassName, $.liveName),
801
- children: /* @__PURE__ */ K(h, { text: t })
826
+ children: /* @__PURE__ */ J(g, { text: t })
802
827
  })]
803
828
  });
804
829
  } else if (L) {
805
830
  let t = e.filter((e) => e.status === o.Failed).length;
806
- R = /* @__PURE__ */ q("span", {
831
+ R = /* @__PURE__ */ Y("span", {
807
832
  className: "inline-flex items-center gap-1",
808
- children: [/* @__PURE__ */ q("span", {
833
+ children: [/* @__PURE__ */ Y("span", {
809
834
  className: c(P.fontClassName, $.executedLabel),
810
835
  children: [
811
836
  l,
@@ -814,19 +839,19 @@ var J = {
814
839
  " ",
815
840
  u(e.length)
816
841
  ]
817
- }), /* @__PURE__ */ K("span", {
842
+ }), /* @__PURE__ */ J("span", {
818
843
  className: c(P.fontClassName, $.failedText),
819
844
  children: m(t)
820
845
  })]
821
846
  });
822
- } else R = /* @__PURE__ */ q("span", {
847
+ } else R = /* @__PURE__ */ Y("span", {
823
848
  className: "inline-flex items-center gap-1",
824
- children: [/* @__PURE__ */ K(S, {
849
+ children: [/* @__PURE__ */ J(w, {
825
850
  size: f.SM,
826
851
  className: $.doneIcon,
827
852
  "aria-hidden": !0,
828
853
  stroke: p
829
- }), /* @__PURE__ */ q("span", {
854
+ }), /* @__PURE__ */ Y("span", {
830
855
  className: c(P.fontClassName, $.executedLabel),
831
856
  children: [
832
857
  l,
@@ -837,17 +862,17 @@ var J = {
837
862
  ]
838
863
  })]
839
864
  });
840
- return /* @__PURE__ */ K("div", {
865
+ return /* @__PURE__ */ J("div", {
841
866
  style: F,
842
- className: c("flex w-full flex-col gap-1", r, J.group),
843
- children: /* @__PURE__ */ K(d, {
867
+ className: c("flex w-full flex-col gap-1", r, ve.group),
868
+ children: /* @__PURE__ */ J(d, {
844
869
  title: R,
845
870
  expanded: E,
846
871
  onToggle: D,
847
872
  className: "overflow-visible py-0",
848
- headerClassName: c("justify-start gap-1 rounded-none px-0", $.toggleButton, J.groupToggle),
873
+ headerClassName: c("justify-start gap-1 rounded-none px-0", $.toggleButton, ve.groupToggle),
849
874
  contentClassName: c("-mt-2 px-0", $.groupRegion),
850
- children: E && /* @__PURE__ */ K(st, {
875
+ children: E && /* @__PURE__ */ J(ft, {
851
876
  stages: e,
852
877
  isStreaming: t,
853
878
  expansion: O,
@@ -863,4 +888,4 @@ var J = {
863
888
  });
864
889
  };
865
890
  //#endregion
866
- export { J as CONVERSATION_STAGES_CLASS, lt as CollapsedGroup, ct as StagesPanel };
891
+ export { ve as CONVERSATION_STAGES_CLASS, mt as CollapsedGroup, pt as StagesPanel };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-conversation-stages",
3
3
  "description": "Panel for displaying agent processing stages during LLM response streaming",
4
- "version": "1.3.0-dev.6",
4
+ "version": "1.3.0-dev.61",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -18,12 +18,12 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@tabler/icons-react": "^3.44.0",
21
- "@epam/ai-dial-attachment-input": "1.3.0-dev.6"
21
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.61"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": "^19.2.8",
25
- "@epam/ai-dial-chat-shared": "1.3.0-dev.6",
26
- "@epam/ai-dial-ui-kit": "^0.15.0"
25
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.61",
26
+ "@epam/ai-dial-ui-kit": "^0.15.4"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",