@epam/ai-dial-skills 1.2.0-dev.181 → 1.2.0-dev.185

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.
@@ -7,5 +7,5 @@ import { UseSkillSelectorOverlayOptions, UseSkillSelectorOverlayResult } from '.
7
7
  * listing data, favorites state, labels, the deployment-support signal, and
8
8
  * the modal/panel components.
9
9
  */
10
- export declare const useSkillSelectorOverlay: ({ isEnabled, isSkillsSupported, skills, sharedWithMe, publicSkills, favoriteIds, onToggleFavorite, labels, historyChipLabelClassName, activeMentionDetailsTrigger, renderCatalogContent, detailsPanelComponent: DetailsPanelComponent, }: UseSkillSelectorOverlayOptions) => UseSkillSelectorOverlayResult;
10
+ export declare const useSkillSelectorOverlay: ({ isSkillsSupported, skills, sharedWithMe, publicSkills, favoriteIds, onToggleFavorite, labels, historyChipLabelClassName, activeMentionDetailsTrigger, renderCatalogContent, detailsPanelComponent: DetailsPanelComponent, }: UseSkillSelectorOverlayOptions) => UseSkillSelectorOverlayResult;
11
11
  //# sourceMappingURL=useSkillSelectorOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSkillSelectorOverlay.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAK7C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,0OAarC,8BAA8B,KAAG,6BA2ZnC,CAAC"}
1
+ {"version":3,"file":"useSkillSelectorOverlay.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAK7C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,+NAYrC,8BAA8B,KAAG,6BA8XnC,CAAC"}
package/index.js CHANGED
@@ -1,26 +1,26 @@
1
1
  import { DeploymentIcon as e, buildCssVars as t, isSkillSelectionUnsupported as n, mergeClasses as r } from "@epam/ai-dial-chat-shared";
2
2
  import { BASE_ICON_SIZE as i, Button as a, ButtonAppearance as o, ButtonVariant as s, DIAL_ICON_SIZE as c, DIAL_KIT_ICON_STROKE as l, Dropdown as u, FileDropzone as d, GhostButton as f, Highlight as p, Input as m, InteractiveTooltip as h, Popup as g, PopupSize as _, Search as v, ToggleIconButton as y, TooltipPlacement as b } from "@epam/ai-dial-ui-kit";
3
3
  import { Suspense as x, useCallback as S, useEffect as C, useId as ee, useLayoutEffect as w, useMemo as T, useRef as E, useState as D } from "react";
4
- import { IconBlocks as O, IconChevronDown as te, IconEye as ne, IconStarFilled as k, IconX as re } from "@tabler/icons-react";
5
- import { Fragment as A, jsx as j, jsxs as M } from "react/jsx-runtime";
6
- import { DialFileNodeType as N, DialFoldersTree as P } from "@epam/ai-dial-react-file-manager";
7
- import { CatalogContentNodeType as F, DetailsPanel as I } from "@epam/ai-dial-catalog";
4
+ import { IconBlocks as O, IconChevronDown as k, IconEye as te, IconStarFilled as A, IconX as j } from "@tabler/icons-react";
5
+ import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
6
+ import { DialFileNodeType as F, DialFoldersTree as I } from "@epam/ai-dial-react-file-manager";
7
+ import { CatalogContentNodeType as L, DetailsPanel as R } from "@epam/ai-dial-catalog";
8
8
  //#region src/constants/public-class-names.ts
9
- var L = {
9
+ var z = {
10
10
  selectorField: "dial-skills-selector-field",
11
11
  favoritesPanel: "dial-skills-favorites-panel",
12
12
  chip: "dial-skills-chip"
13
- }, R = ({ description: e, unsupportedMessage: t, viewDetailsLabel: n = "View details", onViewDetails: r, viewDetailsTabIndex: i }) => t == null ? /* @__PURE__ */ M("div", {
13
+ }, B = ({ description: e, unsupportedMessage: t, viewDetailsLabel: n = "View details", onViewDetails: r, viewDetailsTabIndex: i }) => t == null ? /* @__PURE__ */ P("div", {
14
14
  className: "flex flex-col gap-3",
15
- children: [e != null && e !== "" && /* @__PURE__ */ j("p", {
15
+ children: [e != null && e !== "" && /* @__PURE__ */ N("p", {
16
16
  className: "text-start",
17
17
  children: e
18
- }), /* @__PURE__ */ j(a, {
18
+ }), /* @__PURE__ */ N(a, {
19
19
  variant: s.Primary,
20
20
  appearance: o.Link,
21
21
  className: "h-[24px] self-start",
22
22
  label: n,
23
- iconBefore: /* @__PURE__ */ j(ne, {
23
+ iconBefore: /* @__PURE__ */ N(te, {
24
24
  size: c.SM,
25
25
  stroke: l,
26
26
  "aria-hidden": !0
@@ -28,10 +28,10 @@ var L = {
28
28
  onClick: r,
29
29
  tabIndex: i
30
30
  })]
31
- }) : /* @__PURE__ */ j("p", {
31
+ }) : /* @__PURE__ */ N("p", {
32
32
  className: "text-start",
33
33
  children: t
34
- }), z = ({ name: e, path: t, description: n, isUnsupported: i = !1, labelClassName: a = "dial-body-paragraph-text text-accent", unsupportedLabelClassName: o = "text-error", unsupportedClassName: s = "bg-error", detailsTrigger: c = "hover", onViewDetails: l, labels: u = {} }) => {
34
+ }), V = ({ name: e, path: t, description: n, isUnsupported: i = !1, labelClassName: a = "dial-body-paragraph-text text-accent", unsupportedLabelClassName: o = "text-error", unsupportedClassName: s = "bg-error", detailsTrigger: c = "hover", onViewDetails: l, labels: u = {} }) => {
35
35
  let { viewDetailsLabel: d = "View details", unsupportedTooltipLabel: f = "Selected model does not support skills. Remove the skill or select different model to proceed." } = u, [p, m] = D(0), [g, _] = D(!1), v = c === "click", y = () => {
36
36
  _(!1), m((e) => e + 1), l(t);
37
37
  }, x = (e) => {
@@ -39,29 +39,29 @@ var L = {
39
39
  }, S = E(null), [C, ee] = D(null);
40
40
  return w(() => {
41
41
  ee(S.current?.getBoundingClientRect().width ?? null);
42
- }, [a]), /* @__PURE__ */ j(h, {
42
+ }, [a]), /* @__PURE__ */ N(h, {
43
43
  asChild: !0,
44
44
  placement: b.Top,
45
45
  open: v ? g : void 0,
46
46
  onOpenChange: v ? _ : void 0,
47
47
  contentClassName: "max-w-[550px]",
48
- content: i ? /* @__PURE__ */ j(R, { unsupportedMessage: f }) : /* @__PURE__ */ j(R, {
48
+ content: i ? /* @__PURE__ */ N(B, { unsupportedMessage: f }) : /* @__PURE__ */ N(B, {
49
49
  description: n,
50
50
  viewDetailsLabel: d,
51
51
  onViewDetails: y
52
52
  }),
53
- children: /* @__PURE__ */ M("span", {
53
+ children: /* @__PURE__ */ P("span", {
54
54
  tabIndex: 0,
55
- className: r("relative -me-1 -ms-1 inline-block cursor-pointer select-text rounded-full pe-1 ps-1", i ? s : "hover:bg-info focus-visible:bg-info active:bg-info", i ? r(a, o) : a, L.chip),
55
+ className: r("relative -me-1 -ms-1 inline-block cursor-pointer select-text rounded-full pe-1 ps-1", i ? s : "hover:bg-info focus-visible:bg-info active:bg-info", i ? r(a, o) : a, z.chip),
56
56
  "aria-label": `/${e}`,
57
57
  onClick: v ? () => _(!0) : void 0,
58
58
  onKeyDown: x,
59
- children: [/* @__PURE__ */ j("span", {
59
+ children: [/* @__PURE__ */ N("span", {
60
60
  ref: S,
61
61
  "aria-hidden": !0,
62
62
  className: "inset-inline-start-0 pointer-events-none absolute top-0 select-none",
63
63
  children: "/"
64
- }), /* @__PURE__ */ j("span", {
64
+ }), /* @__PURE__ */ N("span", {
65
65
  "aria-hidden": !0,
66
66
  className: "select-none",
67
67
  style: { paddingInlineStart: C ?? void 0 },
@@ -69,7 +69,7 @@ var L = {
69
69
  })]
70
70
  })
71
71
  }, p);
72
- }, B = {
72
+ }, H = {
73
73
  row: "_row_1v431_1",
74
74
  header: "_header_1v431_8",
75
75
  emptyHint: "_emptyHint_1v431_12",
@@ -80,105 +80,105 @@ var L = {
80
80
  rowLeaving: "_rowLeaving_1v431_32",
81
81
  rowFadeOut: "_rowFadeOut_1v431_1",
82
82
  listContent: "_listContent_1v431_60"
83
- }, V = "px-3 pb-0.5 pt-2", H = 180, U = 288, W = ({ favorites: n, onSelect: i, onToggleFavorite: a, onBrowse: o, onViewDetails: s, className: l, rowClassName: u, searchQuery: d, listboxId: m, activeOptionId: g, isMenu: _ = !1, labels: v = {}, colors: b, nameClassName: x = "dial-small-text", headerClassName: S = "dial-tiny-lead-semi-text", emptyHintClassName: T = "dial-small-text" }) => {
84
- let { myCollectionLabel: O = "My Collection", emptyHintLabel: te = "Star a skill to pin it here", browseLabel: ne = "Browse", removeFromFavoritesLabel: re = "Remove from favorites", viewDetailsLabel: A = "View details", noMatchingSkillsLabel: N = "No matching skills" } = v, P = t({
83
+ }, U = "px-3 pb-0.5 pt-2", W = 180, G = 288, K = ({ favorites: n, onSelect: i, onToggleFavorite: a, onBrowse: o, onViewDetails: s, className: l, rowClassName: u, searchQuery: d, listboxId: m, activeOptionId: g, isMenu: _ = !1, labels: v = {}, colors: b, nameClassName: x = "dial-small-text", headerClassName: S = "dial-tiny-lead-semi-text", emptyHintClassName: T = "dial-small-text" }) => {
84
+ let { myCollectionLabel: O = "My Collection", emptyHintLabel: k = "Star a skill to pin it here", browseLabel: te = "Browse", removeFromFavoritesLabel: j = "Remove from favorites", viewDetailsLabel: M = "View details", noMatchingSkillsLabel: F = "No matching skills" } = v, I = t({
85
85
  "--fs-row-hover-bg": b?.rowHoverBackground,
86
86
  "--fs-header-text": b?.headerText,
87
87
  "--fs-empty-hint-text": b?.emptyHintText,
88
88
  "--fs-star-color": b?.starColor,
89
89
  "--fs-footer-border": b?.footerBorder
90
- }), [F, I] = D(/* @__PURE__ */ new Set()), z = E(/* @__PURE__ */ new Map());
90
+ }), [L, R] = D(/* @__PURE__ */ new Set()), V = E(/* @__PURE__ */ new Map());
91
91
  C(() => {
92
- let e = z.current;
92
+ let e = V.current;
93
93
  return () => {
94
94
  e.forEach((e) => clearTimeout(e)), e.clear();
95
95
  };
96
96
  }, []);
97
- let W = m != null, G = _ && !W, K = W || G ? "none" : void 0, q = "button";
98
- W ? q = "option" : G && (q = "menuitem");
99
- let J = ee(), Y = d != null, X = d?.toLowerCase() ?? "", Z = Y ? n.filter((e) => e.name.toLowerCase().includes(X)) : n, Q = E(null), [ie, ae] = D();
97
+ let K = m != null, ne = _ && !K, q = K || ne ? "none" : void 0, J = "button";
98
+ K ? J = "option" : ne && (J = "menuitem");
99
+ let Y = ee(), X = d != null, Z = d?.toLowerCase() ?? "", Q = X ? n.filter((e) => e.name.toLowerCase().includes(Z)) : n, $ = E(null), [re, ie] = D();
100
100
  w(() => {
101
- Q.current && ae(Math.min(Q.current.scrollHeight, U));
101
+ $.current && ie(Math.min($.current.scrollHeight, G));
102
102
  }, [n, d]);
103
- let oe = (e, t) => {
103
+ let ae = (e, t) => {
104
104
  e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), i(t));
105
- }, se = (e) => {
106
- I((t) => new Set(t).add(e));
105
+ }, oe = (e) => {
106
+ R((t) => new Set(t).add(e));
107
107
  let t = setTimeout(() => {
108
- a?.(e), I((t) => {
108
+ a?.(e), R((t) => {
109
109
  let n = new Set(t);
110
110
  return n.delete(e), n;
111
- }), z.current.delete(e);
112
- }, H);
113
- z.current.set(e, t);
111
+ }), V.current.delete(e);
112
+ }, W);
113
+ V.current.set(e, t);
114
114
  };
115
- return /* @__PURE__ */ M("div", {
116
- className: r("flex w-full flex-col desktop:w-[280px]", l, L.favoritesPanel),
117
- style: P,
115
+ return /* @__PURE__ */ P("div", {
116
+ className: r("flex w-full flex-col desktop:w-[280px]", l, z.favoritesPanel),
117
+ style: I,
118
118
  children: [
119
- /* @__PURE__ */ j("p", {
120
- id: J,
121
- className: r(S, V, B.header),
119
+ /* @__PURE__ */ N("p", {
120
+ id: Y,
121
+ className: r(S, U, H.header),
122
122
  children: O
123
123
  }),
124
- /* @__PURE__ */ j("div", {
125
- className: r("max-h-72 min-h-0 flex-1 overflow-y-auto", B.listContent),
126
- style: { maxHeight: ie },
127
- children: /* @__PURE__ */ j("div", {
128
- ref: Q,
129
- children: Z.length > 0 ? /* @__PURE__ */ j("ul", {
124
+ /* @__PURE__ */ N("div", {
125
+ className: r("max-h-72 min-h-0 flex-1 overflow-y-auto", H.listContent),
126
+ style: { maxHeight: re },
127
+ children: /* @__PURE__ */ N("div", {
128
+ ref: $,
129
+ children: Q.length > 0 ? /* @__PURE__ */ N("ul", {
130
130
  id: m,
131
- role: W ? "listbox" : K,
132
- "aria-labelledby": W ? J : void 0,
131
+ role: K ? "listbox" : q,
132
+ "aria-labelledby": K ? Y : void 0,
133
133
  className: "flex flex-col gap-1 px-1 pb-1",
134
- children: Z.map((t) => {
135
- let n = W ? `${m}-${encodeURIComponent(t.id)}` : void 0, o = W ? -1 : void 0, l = /* @__PURE__ */ M("div", {
136
- role: q,
134
+ children: Q.map((t) => {
135
+ let n = K ? `${m}-${encodeURIComponent(t.id)}` : void 0, o = K ? -1 : void 0, l = /* @__PURE__ */ P("div", {
136
+ role: J,
137
137
  id: n,
138
- "aria-selected": W ? n === g : void 0,
138
+ "aria-selected": K ? n === g : void 0,
139
139
  "aria-label": t.name,
140
140
  tabIndex: 0,
141
- className: r("flex cursor-pointer items-center gap-2 rounded-lg border border-transparent px-2 py-1.5 transition-colors", B.row, u),
141
+ className: r("flex cursor-pointer items-center gap-2 rounded-lg border border-transparent px-2 py-1.5 transition-colors", H.row, u),
142
142
  onClick: () => i(t),
143
- onKeyDown: (e) => oe(e, t),
143
+ onKeyDown: (e) => ae(e, t),
144
144
  children: [
145
- /* @__PURE__ */ j(e, {
145
+ /* @__PURE__ */ N(e, {
146
146
  size: c.MD,
147
147
  initialsName: t.name
148
148
  }),
149
- d == null ? /* @__PURE__ */ j("span", {
149
+ d == null ? /* @__PURE__ */ N("span", {
150
150
  className: r(x, "min-w-0 flex-1 truncate text-start"),
151
151
  children: t.name
152
- }) : /* @__PURE__ */ j(p, {
152
+ }) : /* @__PURE__ */ N(p, {
153
153
  text: t.name,
154
154
  query: d,
155
155
  maxLines: 1,
156
156
  className: r(x, "min-w-0 flex-1 text-start")
157
157
  }),
158
- a && /* @__PURE__ */ j(y, {
159
- icon: /* @__PURE__ */ j(k, {
158
+ a && /* @__PURE__ */ N(y, {
159
+ icon: /* @__PURE__ */ N(A, {
160
160
  size: c.SM,
161
- className: B.star,
161
+ className: H.star,
162
162
  "aria-hidden": !0
163
163
  }),
164
- "aria-label": re,
164
+ "aria-label": j,
165
165
  isSelected: !0,
166
166
  tabIndex: o,
167
167
  onClick: (e) => {
168
- e.stopPropagation(), se(t.id);
168
+ e.stopPropagation(), oe(t.id);
169
169
  }
170
170
  })
171
171
  ]
172
172
  });
173
- return /* @__PURE__ */ j("li", {
174
- role: K,
175
- className: F.has(t.id) ? B.rowLeaving : B.rowEnter,
176
- children: s ? /* @__PURE__ */ j(h, {
173
+ return /* @__PURE__ */ N("li", {
174
+ role: q,
175
+ className: L.has(t.id) ? H.rowLeaving : H.rowEnter,
176
+ children: s ? /* @__PURE__ */ N(h, {
177
177
  asChild: !0,
178
178
  contentClassName: "max-w-[550px]",
179
- content: /* @__PURE__ */ j(R, {
179
+ content: /* @__PURE__ */ N(B, {
180
180
  description: t.description,
181
- viewDetailsLabel: A,
181
+ viewDetailsLabel: M,
182
182
  onViewDetails: () => s(t),
183
183
  viewDetailsTabIndex: o
184
184
  }),
@@ -186,43 +186,43 @@ var L = {
186
186
  }) : l
187
187
  }, t.id);
188
188
  })
189
- }) : Y && X !== "" ? /* @__PURE__ */ j("p", {
189
+ }) : X && Z !== "" ? /* @__PURE__ */ N("p", {
190
190
  role: "status",
191
191
  "aria-live": "polite",
192
- className: r(T, "px-4 py-4 text-start", B.emptyHint),
193
- children: N
194
- }) : /* @__PURE__ */ j("p", {
195
- className: r(T, "px-4 py-4 text-start", B.emptyHint),
196
- children: te
192
+ className: r(T, "px-4 py-4 text-start", H.emptyHint),
193
+ children: F
194
+ }) : /* @__PURE__ */ N("p", {
195
+ className: r(T, "px-4 py-4 text-start", H.emptyHint),
196
+ children: k
197
197
  })
198
198
  })
199
199
  }),
200
- /* @__PURE__ */ j("div", {
201
- className: r("border-t px-2 py-3", B.footer),
202
- children: /* @__PURE__ */ j(f, {
203
- role: G ? "menuitem" : void 0,
204
- label: ne,
200
+ /* @__PURE__ */ N("div", {
201
+ className: r("border-t px-2 py-3", H.footer),
202
+ children: /* @__PURE__ */ N(f, {
203
+ role: ne ? "menuitem" : void 0,
204
+ label: te,
205
205
  className: "w-full justify-center",
206
206
  onClick: o
207
207
  })
208
208
  })
209
209
  ]
210
210
  });
211
- }, G = ".zip,.md", K = ({ isOpen: e, errorText: t, accept: n = G, labels: r, onClose: i, onFilesSelected: a, onFilesRejected: o }) => {
211
+ }, ne = ".zip,.md", q = ({ isOpen: e, errorText: t, accept: n = ne, labels: r, onClose: i, onFilesSelected: a, onFilesRejected: o }) => {
212
212
  let { dialogTitle: s = "Upload skill", dropZoneLabel: c = "Drag and drop it or click here to upload", dropZoneMobileLabel: l = "Click here to upload", formatsLabel: u = "File formats .zip and SKILL.md", fileInputAriaLabel: f = "Upload a skill ZIP archive or a SKILL.md file", closeAriaLabel: p = "Close" } = r ?? {};
213
- return /* @__PURE__ */ j(g, {
213
+ return /* @__PURE__ */ N(g, {
214
214
  open: e,
215
215
  size: _.Sm,
216
216
  header: s,
217
217
  closeAriaLabel: p,
218
218
  onClose: i,
219
- children: /* @__PURE__ */ j("div", {
219
+ children: /* @__PURE__ */ N("div", {
220
220
  className: "px-6 py-4",
221
- children: /* @__PURE__ */ j(d, {
222
- label: /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j("span", {
221
+ children: /* @__PURE__ */ N(d, {
222
+ label: /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N("span", {
223
223
  className: "desktop:hidden",
224
224
  children: l
225
- }), /* @__PURE__ */ j("span", {
225
+ }), /* @__PURE__ */ N("span", {
226
226
  className: "hidden desktop:inline",
227
227
  children: c
228
228
  })] }),
@@ -235,34 +235,34 @@ var L = {
235
235
  })
236
236
  })
237
237
  });
238
- }, q = ({ isOpen: e, onClose: t, onSelect: n, title: r, renderContent: i }) => /* @__PURE__ */ j(g, {
238
+ }, J = ({ isOpen: e, onClose: t, onSelect: n, title: r, renderContent: i }) => /* @__PURE__ */ N(g, {
239
239
  open: e,
240
240
  header: r,
241
241
  size: _.Lg,
242
242
  className: "h-[min(90vh,860px)] !max-w-[min(95vw,1200px)] overflow-hidden",
243
243
  onClose: t,
244
- children: /* @__PURE__ */ j("div", {
244
+ children: /* @__PURE__ */ N("div", {
245
245
  className: "h-[min(80vh,840px)] overflow-auto",
246
- children: /* @__PURE__ */ j(x, {
246
+ children: /* @__PURE__ */ N(x, {
247
247
  fallback: null,
248
248
  children: e && i(n, t)
249
249
  })
250
250
  })
251
- }), J = (e, t = null) => e.map((e) => e.type === F.Folder ? {
251
+ }), Y = (e, t = null) => e.map((e) => e.type === L.Folder ? {
252
252
  path: e.id,
253
253
  name: e.name,
254
- nodeType: N.FOLDER,
254
+ nodeType: F.FOLDER,
255
255
  parentPath: t,
256
256
  folderId: e.id,
257
- items: J(e.items, e.id)
257
+ items: Y(e.items, e.id)
258
258
  } : {
259
259
  path: e.id,
260
260
  name: e.name,
261
- nodeType: N.ITEM,
261
+ nodeType: F.ITEM,
262
262
  parentPath: t,
263
263
  folderId: t ?? ""
264
- }), Y = ({ nodes: e, selectedFileId: t, expandedFolderIds: n, onToggleFolder: r, onSelectFile: i, onClose: a, ariaLabel: o }) => /* @__PURE__ */ j(P, {
265
- items: T(() => J(e), [e]),
264
+ }), X = ({ nodes: e, selectedFileId: t, expandedFolderIds: n, onToggleFolder: r, onSelectFile: i, onClose: a, ariaLabel: o }) => /* @__PURE__ */ N(I, {
265
+ items: T(() => Y(e), [e]),
266
266
  showFiles: !0,
267
267
  areHiddenFilesVisible: !0,
268
268
  selectedPath: t,
@@ -272,15 +272,15 @@ var L = {
272
272
  for (let t of n) e.has(t) || r(t);
273
273
  },
274
274
  onItemClick: (e) => {
275
- e.nodeType === N.ITEM && i(e.path);
275
+ e.nodeType === F.ITEM && i(e.path);
276
276
  },
277
277
  ariaLabel: o,
278
278
  autoFocus: !0,
279
279
  onEscape: a
280
- }), X = (e) => /* @__PURE__ */ j(I, {
280
+ }), Z = (e) => /* @__PURE__ */ N(R, {
281
281
  ...e,
282
- renderContentFileTree: (e) => /* @__PURE__ */ j(Y, { ...e })
283
- }), Z = (e) => e == null || /[\s/]/.test(e), Q = (e, t, n) => {
282
+ renderContentFileTree: (e) => /* @__PURE__ */ N(X, { ...e })
283
+ }), Q = (e) => e == null || /[\s/]/.test(e), $ = (e, t, n) => {
284
284
  let r = [], i = 0;
285
285
  return t.forEach((t, a) => {
286
286
  let o = `/${n(t.url)}`, s = i;
@@ -288,7 +288,7 @@ var L = {
288
288
  let t = e.indexOf(o, s);
289
289
  if (t === -1) return;
290
290
  let n = t + o.length;
291
- if (Z(e[n])) {
291
+ if (Q(e[n])) {
292
292
  r.push({
293
293
  skillIndex: a,
294
294
  start: t,
@@ -299,7 +299,7 @@ var L = {
299
299
  s = t + 1;
300
300
  }
301
301
  }), r;
302
- }, ie = (e, t) => {
302
+ }, re = (e, t) => {
303
303
  let n = Math.min(e.length, t.length), r = 0;
304
304
  for (; r < n && e[r] === t[r];) r += 1;
305
305
  let i = n - r, a = 0;
@@ -309,13 +309,13 @@ var L = {
309
309
  deletedLength: e.length - r - a,
310
310
  insertedLength: t.length - r - a
311
311
  };
312
- }, ae = (e, t) => {
312
+ }, ie = (e, t) => {
313
313
  let n = t.start + t.deletedLength, r = t.insertedLength - t.deletedLength;
314
314
  return e.reduce((e, i) => i.start + i.length <= t.start ? (e.push(i), e) : (i.start >= n && e.push({
315
315
  ...i,
316
316
  start: i.start + r
317
317
  }), e), []);
318
- }, oe = (e, t, n, r, i) => {
318
+ }, ae = (e, t, n, r, i) => {
319
319
  let a = r.length + 1, o = a + +!!i, s = e.map((e) => e.start >= t ? {
320
320
  ...e,
321
321
  start: e.start + o
@@ -326,7 +326,7 @@ var L = {
326
326
  length: a
327
327
  };
328
328
  return [...s, c].sort((e, t) => e.start - t.start);
329
- }, se = (e, t) => e.find((e) => e.start + e.length === t), ce = () => {
329
+ }, oe = (e, t) => e.find((e) => e.start + e.length === t), se = () => {
330
330
  let [e, t] = D(""), [n, r] = D([]), i = E(e);
331
331
  i.current = e;
332
332
  let a = E(n);
@@ -334,14 +334,14 @@ var L = {
334
334
  draft: e,
335
335
  anchors: n,
336
336
  onDraftChange: S((e) => {
337
- let n = ie(i.current, e);
338
- r((e) => ae(e, n)), i.current = e, t(e);
337
+ let n = re(i.current, e);
338
+ r((e) => ie(e, n)), i.current = e, t(e);
339
339
  }, []),
340
340
  insertMention: S((e, n, a) => {
341
341
  let o = i.current, s = !/^\s/.test(o.slice(a)), c = `/${n}${s ? " " : ""}`, l = o.slice(0, a) + c + o.slice(a);
342
- return i.current = l, t(l), r((t) => oe(t, a, e, n, s)), s;
342
+ return i.current = l, t(l), r((t) => ae(t, a, e, n, s)), s;
343
343
  }, []),
344
- onBackspaceAtCaret: S((e) => se(a.current, e), []),
344
+ onBackspaceAtCaret: S((e) => oe(a.current, e), []),
345
345
  orderedSkills: T(() => {
346
346
  if (n.length !== 0) return n.map((e) => ({ url: e.url }));
347
347
  }, [n]),
@@ -349,7 +349,7 @@ var L = {
349
349
  t(""), r([]);
350
350
  }, []),
351
351
  seedFromMessage: S((e, n, i) => {
352
- let a = n ?? [], o = Q(e, a, i);
352
+ let a = n ?? [], o = $(e, a, i);
353
353
  t(e), r(o.map((e) => {
354
354
  let t = a[e.skillIndex];
355
355
  return {
@@ -361,215 +361,198 @@ var L = {
361
361
  }));
362
362
  }, [])
363
363
  };
364
- }, le = (e) => ({
364
+ }, ce = (e) => ({
365
365
  id: e.url,
366
366
  name: e.name,
367
367
  description: e.description
368
- }), ue = (e) => {
368
+ }), le = (e) => {
369
369
  let t = e.split("/").filter((e) => e.length > 0);
370
370
  return t[t.length - 1] ?? e;
371
- }, de = ({ isEnabled: e, isSkillsSupported: t, skills: n, sharedWithMe: r, publicSkills: a, favoriteIds: o, onToggleFavorite: s, labels: c, historyChipLabelClassName: u, activeMentionDetailsTrigger: d, renderCatalogContent: f, detailsPanelComponent: p }) => {
372
- let { addMenuLabel: m = "Skills", backLabel: h = "Back", catalogModalTitleLabel: g = "Use skill", emptyQueryHintLabel: _ = "Type to filter", panelLabels: v } = c ?? {}, y = e && t, [b, C] = D(!1), [ee, w] = D(null), [E, te] = D(0), [ne, k] = D(0), [re, A] = D(void 0), M = ce(), N = T(() => [
373
- ...n,
374
- ...r ?? [],
375
- ...a ?? []
371
+ }, ue = ({ isSkillsSupported: e, skills: t, sharedWithMe: n, publicSkills: r, favoriteIds: a, onToggleFavorite: o, labels: s, historyChipLabelClassName: c, activeMentionDetailsTrigger: u, renderCatalogContent: d, detailsPanelComponent: f }) => {
372
+ let { addMenuLabel: p = "Skills", backLabel: m = "Back", catalogModalTitleLabel: h = "Use skill", emptyQueryHintLabel: g = "Type to filter", panelLabels: _ } = s ?? {}, [v, y] = D(!1), [b, C] = D(null), [ee, w] = D(0), [E, k] = D(0), [te, A] = D(void 0), j = se(), M = T(() => [
373
+ ...t,
374
+ ...n ?? [],
375
+ ...r ?? []
376
376
  ], [
377
+ t,
377
378
  n,
378
- r,
379
- a
380
- ]), P = T(() => new Map(N.map((e) => [e.url, e])), [N]), F = S((e) => P.get(e)?.name ?? ue(e), [P]), I = T(() => N.filter((e) => o.has(e.url)).map((e) => le(e)), [N, o]), L = M.anchors.length > 0 && !t, R = T(() => M.anchors.map((e) => ({
381
- start: e.start,
382
- length: e.length,
383
- isUnsupported: !t,
384
- render: () => /* @__PURE__ */ j(z, {
385
- name: e.name,
386
- path: e.url,
387
- labelClassName: u,
388
- description: P.get(e.url)?.description,
389
- isUnsupported: !t,
390
- detailsTrigger: d,
391
- onViewDetails: w,
392
- labels: { viewDetailsLabel: v?.viewDetailsLabel }
379
+ r
380
+ ]), P = T(() => new Map(M.map((e) => [e.url, e])), [M]), F = S((e) => P.get(e)?.name ?? le(e), [P]), I = T(() => M.filter((e) => a.has(e.url)).map((e) => ce(e)), [M, a]), L = j.anchors.length > 0 && !e, R = T(() => j.anchors.map((t) => ({
381
+ start: t.start,
382
+ length: t.length,
383
+ isUnsupported: !e,
384
+ render: () => /* @__PURE__ */ N(V, {
385
+ name: t.name,
386
+ path: t.url,
387
+ labelClassName: c,
388
+ description: P.get(t.url)?.description,
389
+ isUnsupported: !e,
390
+ detailsTrigger: u,
391
+ onViewDetails: C,
392
+ labels: { viewDetailsLabel: _?.viewDetailsLabel }
393
393
  })
394
394
  })), [
395
- M.anchors,
396
- t,
395
+ j.anchors,
396
+ e,
397
397
  P,
398
+ c,
398
399
  u,
399
- d,
400
- v
401
- ]), B = S((e, t, n) => {
402
- let r = M.insertMention(e, t, n);
400
+ _
401
+ ]), z = S((e, t, n) => {
402
+ let r = j.insertMention(e, t, n);
403
403
  k((e) => e + 1), A(n + 1 + t.length + +!!r);
404
- }, [M]), V = S(() => {
405
- M.reset(), k((e) => e + 1), A(void 0);
406
- }, [M]), H = S((e, t) => {
407
- M.seedFromMessage(e, t, F), k((e) => e + 1), A(void 0);
408
- }, [M, F]), U = S((e, t) => {
404
+ }, [j]), B = S(() => {
405
+ j.reset(), k((e) => e + 1), A(void 0);
406
+ }, [j]), H = S((e, t) => {
407
+ j.seedFromMessage(e, t, F), k((e) => e + 1), A(void 0);
408
+ }, [j, F]), U = S((e, t) => {
409
409
  if (t == null || t.length === 0) return null;
410
- let n = Q(e, t, F), r = [], i = 0;
410
+ let n = $(e, t, F), r = [], i = 0;
411
411
  return n.forEach((n) => {
412
412
  n.start > i && r.push(e.slice(i, n.start));
413
- let a = t[n.skillIndex], o = P.get(a.url), s = o?.name ?? ue(a.url);
414
- r.push(/* @__PURE__ */ j(z, {
413
+ let a = t[n.skillIndex], o = P.get(a.url), s = o?.name ?? le(a.url);
414
+ r.push(/* @__PURE__ */ N(V, {
415
415
  name: s,
416
416
  path: a.url,
417
- labelClassName: u,
417
+ labelClassName: c,
418
418
  description: o?.description,
419
- onViewDetails: w,
420
- labels: { viewDetailsLabel: v?.viewDetailsLabel }
419
+ onViewDetails: C,
420
+ labels: { viewDetailsLabel: _?.viewDetailsLabel }
421
421
  }, `${a.url}-${n.start}`)), i = n.start + n.length;
422
422
  }), i < e.length && r.push(e.slice(i)), r;
423
423
  }, [
424
424
  F,
425
425
  P,
426
- u,
427
- v
428
- ]), G = S((e) => e == null || e.length === 0 ? null : e.map((e) => {
426
+ c,
427
+ _
428
+ ]), W = S((e) => e == null || e.length === 0 ? null : e.map((e) => {
429
429
  let t = P.get(e.url);
430
- return /* @__PURE__ */ j(z, {
431
- name: t?.name ?? ue(e.url),
430
+ return /* @__PURE__ */ N(V, {
431
+ name: t?.name ?? le(e.url),
432
432
  path: e.url,
433
- labelClassName: u,
433
+ labelClassName: c,
434
434
  description: t?.description,
435
- onViewDetails: w,
436
- labels: { viewDetailsLabel: v?.viewDetailsLabel }
435
+ onViewDetails: C,
436
+ labels: { viewDetailsLabel: _?.viewDetailsLabel }
437
437
  }, e.url);
438
438
  }), [
439
439
  P,
440
- u,
441
- v
442
- ]), K = S((e, t) => /* @__PURE__ */ j(W, {
440
+ c,
441
+ _
442
+ ]), G = S((e, t) => /* @__PURE__ */ N(K, {
443
443
  favorites: I,
444
444
  isMenu: !0,
445
445
  onSelect: (n) => {
446
- B(n.id, n.name, t), e();
446
+ z(n.id, n.name, t), e();
447
447
  },
448
- onToggleFavorite: s,
448
+ onToggleFavorite: o,
449
449
  onBrowse: () => {
450
- te(t), e(), C(!0);
450
+ w(t), e(), y(!0);
451
451
  },
452
452
  onViewDetails: (t) => {
453
- e(), w(t.id);
453
+ e(), C(t.id);
454
454
  },
455
- labels: v
455
+ labels: _
456
456
  }), [
457
457
  I,
458
- B,
459
- s,
460
- v
461
- ]), J = T(() => y ? {
462
- key: "skills",
463
- title: m,
464
- icon: /* @__PURE__ */ j(O, {
465
- size: i,
466
- "aria-hidden": !0,
467
- stroke: l
468
- }),
469
- renderOverlay: K,
470
- backLabel: h
471
- } : void 0, [
472
- y,
473
- m,
474
- h,
475
- K
476
- ]), Y = T(() => y ? {
477
- triggerPrefix: "/",
478
- menuLabel: m,
479
- emptyQueryHint: _,
480
- renderMenu: ({ query: e, caretPosition: t, close: n, listboxId: r, activeOptionId: i }) => /* @__PURE__ */ j(W, {
481
- favorites: I,
482
- searchQuery: e,
483
- listboxId: r,
484
- activeOptionId: i,
485
- onSelect: (e) => {
486
- n({ consumeQuery: !0 }), B(e.id, e.name, t);
487
- },
488
- onToggleFavorite: s,
489
- onBrowse: () => {
490
- n({ consumeQuery: !0 }), te(t), C(!0);
491
- },
492
- onViewDetails: (e) => {
493
- n({ consumeQuery: !0 }), w(e.id);
494
- },
495
- labels: v
496
- })
497
- } : void 0, [
498
- y,
499
- m,
500
- _,
501
- I,
502
- B,
503
- s,
504
- v
458
+ z,
459
+ o,
460
+ _
505
461
  ]);
506
- return e ? {
507
- skillMenuOverlay: J,
508
- commandMenu: Y,
509
- skillCatalogModal: /* @__PURE__ */ j(q, {
510
- isOpen: b,
511
- onClose: () => C(!1),
462
+ return {
463
+ skillMenuOverlay: T(() => e ? {
464
+ key: "skills",
465
+ title: p,
466
+ icon: /* @__PURE__ */ N(O, {
467
+ size: i,
468
+ "aria-hidden": !0,
469
+ stroke: l
470
+ }),
471
+ renderOverlay: G,
472
+ backLabel: m
473
+ } : void 0, [
474
+ e,
475
+ p,
476
+ m,
477
+ G
478
+ ]),
479
+ commandMenu: T(() => e ? {
480
+ triggerPrefix: "/",
481
+ menuLabel: p,
482
+ emptyQueryHint: g,
483
+ renderMenu: ({ query: e, caretPosition: t, close: n, listboxId: r, activeOptionId: i }) => /* @__PURE__ */ N(K, {
484
+ favorites: I,
485
+ searchQuery: e,
486
+ listboxId: r,
487
+ activeOptionId: i,
488
+ onSelect: (e) => {
489
+ n({ consumeQuery: !0 }), z(e.id, e.name, t);
490
+ },
491
+ onToggleFavorite: o,
492
+ onBrowse: () => {
493
+ n({ consumeQuery: !0 }), w(t), y(!0);
494
+ },
495
+ onViewDetails: (e) => {
496
+ n({ consumeQuery: !0 }), C(e.id);
497
+ },
498
+ labels: _
499
+ })
500
+ } : void 0, [
501
+ e,
502
+ p,
503
+ g,
504
+ I,
505
+ z,
506
+ o,
507
+ _
508
+ ]),
509
+ skillCatalogModal: /* @__PURE__ */ N(J, {
510
+ isOpen: v,
511
+ onClose: () => y(!1),
512
512
  onSelect: (e) => {
513
- B(e, F(e), E), C(!1);
513
+ z(e, F(e), ee), y(!1);
514
514
  },
515
- title: g,
516
- renderContent: f
515
+ title: h,
516
+ renderContent: d
517
517
  }),
518
- skillDetailsPanel: /* @__PURE__ */ j(x, {
518
+ skillDetailsPanel: /* @__PURE__ */ N(x, {
519
519
  fallback: null,
520
- children: /* @__PURE__ */ j(p, {
521
- skillId: ee,
522
- onClose: () => w(null)
520
+ children: /* @__PURE__ */ N(f, {
521
+ skillId: b,
522
+ onClose: () => C(null)
523
523
  })
524
524
  }),
525
- message: M.draft,
526
- messageRevision: ne,
525
+ message: j.draft,
526
+ messageRevision: E,
527
527
  activeMentions: R,
528
- onDraftChange: M.onDraftChange,
529
- onBackspaceAtCaret: M.onBackspaceAtCaret,
530
- caretPositionOverride: re,
528
+ onDraftChange: j.onDraftChange,
529
+ onBackspaceAtCaret: j.onBackspaceAtCaret,
530
+ caretPositionOverride: te,
531
531
  isSkillUnsupported: L,
532
- selectedSkills: M.orderedSkills,
533
- resetSkillMentions: V,
532
+ selectedSkills: j.orderedSkills,
533
+ resetSkillMentions: B,
534
534
  seedSkillMentions: H,
535
535
  renderHistorySkillSegments: U,
536
- renderHistorySkills: G
537
- } : {
538
- skillMenuOverlay: void 0,
539
- commandMenu: void 0,
540
- skillCatalogModal: null,
541
- skillDetailsPanel: null,
542
- message: "",
543
- messageRevision: 0,
544
- activeMentions: [],
545
- onDraftChange: () => void 0,
546
- onBackspaceAtCaret: () => void 0,
547
- caretPositionOverride: void 0,
548
- isSkillUnsupported: !1,
549
- selectedSkills: void 0,
550
- resetSkillMentions: () => void 0,
551
- seedSkillMentions: () => void 0,
552
- renderHistorySkillSegments: () => null,
553
- renderHistorySkills: () => null
536
+ renderHistorySkills: W
554
537
  };
555
- }, $ = {
538
+ }, de = {
556
539
  background: "_background_14zdf_1",
557
540
  border: "_border_14zdf_5",
558
541
  value: "_value_14zdf_9",
559
542
  clear: "_clear_14zdf_13",
560
543
  invalid: "_invalid_14zdf_17"
561
544
  }, fe = [], pe = ({ value: e, onChange: i, displayName: a, favorites: o = fe, onToggleFavorite: s, onViewDetails: c, renderOverlay: d, isSkillsSupported: p, isDisabled: h = !1, isInvalid: g = !1, labelledById: _, describedById: y, labels: b, renderCatalogContent: x, className: S, styles: w }) => {
562
- let [T, O] = D(!1), [ne, k] = D(!1), [N, P] = D(""), F = E(null), I = ee(), R = E(null), z = E(!1), B = n(e, p), V = p && !h, H = T && V, U = ne && V, G = () => {
563
- R.current && !R.current.disabled ? R.current.focus() : F.current?.querySelector("button:not(:disabled)")?.focus();
545
+ let [T, O] = D(!1), [te, A] = D(!1), [F, I] = D(""), L = E(null), R = ee(), B = E(null), V = E(!1), H = n(e, p), U = p && !h, W = T && U, G = te && U, ne = () => {
546
+ B.current && !B.current.disabled ? B.current.focus() : L.current?.querySelector("button:not(:disabled)")?.focus();
564
547
  };
565
548
  C(() => {
566
- z.current && !H && !U && ((document.activeElement === document.body || F.current?.contains(document.activeElement)) && G(), O(!1), k(!1)), z.current = H || U;
567
- }, [H, U]);
568
- let K = (e) => {
569
- e && !V || (P(""), O(e));
570
- }, J = (e) => {
571
- V && i(e), O(!1), k(!1);
572
- }, Y = {
549
+ V.current && !W && !G && ((document.activeElement === document.body || L.current?.contains(document.activeElement)) && ne(), O(!1), A(!1)), V.current = W || G;
550
+ }, [W, G]);
551
+ let q = (e) => {
552
+ e && !U || (I(""), O(e));
553
+ }, Y = (e) => {
554
+ U && i(e), O(!1), A(!1);
555
+ }, X = {
573
556
  ...t({
574
557
  "--ssf-text": w?.colors?.text,
575
558
  "--ssf-bg": w?.colors?.background,
@@ -577,114 +560,114 @@ var L = {
577
560
  "--ssf-error": w?.colors?.error
578
561
  }),
579
562
  ...w?.cssVars
580
- }, X = /* @__PURE__ */ M("div", {
581
- id: I,
563
+ }, Z = /* @__PURE__ */ P("div", {
564
+ id: R,
582
565
  className: "w-full min-w-0",
583
- children: [/* @__PURE__ */ j("div", {
566
+ children: [/* @__PURE__ */ N("div", {
584
567
  className: "p-2",
585
- children: /* @__PURE__ */ j(v, {
586
- value: N,
587
- onChange: (e) => P(e ?? ""),
568
+ children: /* @__PURE__ */ N(v, {
569
+ value: F,
570
+ onChange: (e) => I(e ?? ""),
588
571
  placeholder: b.searchPlaceholder ?? "Search skills",
589
572
  "aria-label": b.searchPlaceholder ?? "Search skills",
590
573
  clearLabel: b.clearSearchLabel ?? "Clear search"
591
574
  })
592
- }), /* @__PURE__ */ j(W, {
575
+ }), /* @__PURE__ */ N(K, {
593
576
  className: "min-w-0 desktop:w-full",
594
577
  rowClassName: "min-h-11",
595
578
  favorites: o,
596
- searchQuery: N,
579
+ searchQuery: F,
597
580
  labels: b.panelLabels,
598
- onSelect: (e) => J(e.id),
581
+ onSelect: (e) => Y(e.id),
599
582
  onToggleFavorite: s,
600
583
  onViewDetails: c ? (e) => {
601
584
  O(!1), c(e);
602
585
  } : void 0,
603
586
  onBrowse: () => {
604
- O(!1), k(!0);
587
+ O(!1), A(!0);
605
588
  }
606
589
  })]
607
- }), Z = /* @__PURE__ */ j(m, {
608
- inputRef: R,
590
+ }), Q = /* @__PURE__ */ N(m, {
591
+ inputRef: B,
609
592
  readOnly: !0,
610
593
  role: "combobox",
611
594
  "aria-haspopup": "dialog",
612
- "aria-expanded": H,
613
- "aria-controls": H ? I : void 0,
595
+ "aria-expanded": W,
596
+ "aria-controls": W ? R : void 0,
614
597
  "aria-labelledby": _,
615
598
  "aria-describedby": y,
616
- "aria-invalid": g || B,
617
- disabled: !V,
618
- invalid: g || B,
599
+ "aria-invalid": g || H,
600
+ disabled: !U,
601
+ invalid: g || H,
619
602
  value: e ? a || e : "",
620
603
  placeholder: b.placeholder,
621
604
  title: p ? e ? a || e : void 0 : b.unsupportedTooltipLabel,
622
605
  containerClassName: "w-full min-w-0",
623
- wrapperClassName: r("cursor-pointer", "--ssf-bg" in Y && $.background, "--ssf-border" in Y && $.border, (g || B) && $.invalid, w?.triggerClassName),
624
- className: r("min-w-0 cursor-pointer text-ellipsis", "--ssf-text" in Y && $.value, w?.typography?.fontClassName ?? "dial-small-text"),
606
+ wrapperClassName: r("cursor-pointer", "--ssf-bg" in X && de.background, "--ssf-border" in X && de.border, (g || H) && de.invalid, w?.triggerClassName),
607
+ className: r("min-w-0 cursor-pointer text-ellipsis", "--ssf-text" in X && de.value, w?.typography?.fontClassName ?? "dial-small-text"),
625
608
  onKeyDown: (e) => {
626
609
  [
627
610
  "Enter",
628
611
  " ",
629
612
  "ArrowDown"
630
- ].includes(e.key) ? (e.preventDefault(), e.stopPropagation(), K(e.key === "ArrowDown" || !H)) : e.key === "Escape" && K(!1);
613
+ ].includes(e.key) ? (e.preventDefault(), e.stopPropagation(), q(e.key === "ArrowDown" || !W)) : e.key === "Escape" && q(!1);
631
614
  },
632
- iconAfter: /* @__PURE__ */ M("span", {
615
+ iconAfter: /* @__PURE__ */ P("span", {
633
616
  className: "flex shrink-0 items-center",
634
- children: [e && /* @__PURE__ */ j(f, {
617
+ children: [e && /* @__PURE__ */ N(f, {
635
618
  type: "button",
636
- className: r("size-11 shrink-0", $.clear),
619
+ className: r("size-11 shrink-0", de.clear),
637
620
  disabled: h,
638
621
  "aria-label": b.removeSkillLabel,
639
622
  onKeyDown: (e) => e.stopPropagation(),
640
623
  onClick: (e) => {
641
- e.stopPropagation(), i(void 0), O(!1), V ? R.current?.focus() : F.current?.focus();
624
+ e.stopPropagation(), i(void 0), O(!1), U ? B.current?.focus() : L.current?.focus();
642
625
  },
643
- iconBefore: /* @__PURE__ */ j(re, {
626
+ iconBefore: /* @__PURE__ */ N(j, {
644
627
  "aria-hidden": !0,
645
628
  size: 18,
646
629
  stroke: l
647
630
  })
648
- }), /* @__PURE__ */ j(te, {
631
+ }), /* @__PURE__ */ N(k, {
649
632
  "aria-hidden": !0,
650
633
  size: 20,
651
634
  stroke: l,
652
- className: r("transition-transform", H && "rotate-180")
635
+ className: r("transition-transform", W && "rotate-180")
653
636
  })]
654
637
  })
655
638
  });
656
- return /* @__PURE__ */ M("div", {
657
- ref: F,
639
+ return /* @__PURE__ */ P("div", {
640
+ ref: L,
658
641
  role: "group",
659
642
  "aria-labelledby": _,
660
643
  tabIndex: -1,
661
- className: r("min-w-0", S, L.selectorField),
662
- style: Y,
663
- children: [d ? /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j("div", {
644
+ className: r("min-w-0", S, z.selectorField),
645
+ style: X,
646
+ children: [d ? /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N("div", {
664
647
  className: "w-full min-w-0",
665
- onClick: () => K(!H),
666
- children: Z
667
- }), d(X, H, () => K(!1))] }) : /* @__PURE__ */ j(u, {
668
- open: H,
669
- onOpenChange: K,
670
- disabled: !V,
648
+ onClick: () => q(!W),
649
+ children: Q
650
+ }), d(Z, W, () => q(!1))] }) : /* @__PURE__ */ N(u, {
651
+ open: W,
652
+ onOpenChange: q,
653
+ disabled: !U,
671
654
  className: "w-full min-w-0",
672
655
  listClassName: "w-[min(var(--reference-width),calc(100vw-2rem))] max-w-full",
673
- renderOverlay: () => /* @__PURE__ */ j("div", {
656
+ renderOverlay: () => /* @__PURE__ */ N("div", {
674
657
  role: "dialog",
675
658
  "aria-labelledby": _,
676
- children: X
659
+ children: Z
677
660
  }),
678
661
  initialFocus: 0,
679
- children: Z
680
- }), U && /* @__PURE__ */ j(q, {
662
+ children: Q
663
+ }), G && /* @__PURE__ */ N(J, {
681
664
  isOpen: !0,
682
- onClose: () => k(!1),
665
+ onClose: () => A(!1),
683
666
  title: b.modalTitle,
684
- onSelect: J,
667
+ onSelect: Y,
685
668
  renderContent: x
686
669
  })]
687
670
  });
688
671
  };
689
672
  //#endregion
690
- export { z as ChatSkill, W as FavoriteSkillsPanel, L as SKILLS_CLASS, K as SkillArchiveUploadDialog, q as SkillCatalogModal, Y as SkillContentFileTree, X as SkillDetailsSidePanel, R as SkillInfoTooltipContent, pe as SkillSelectorField, le as buildFavoriteSkillItem, ie as diffTextChange, se as findMentionAtCaret, ue as getSkillFallbackName, oe as insertAnchor, Q as matchSkillMentions, ae as reconcileAnchors, ce as useSkillMentions, de as useSkillSelectorOverlay };
673
+ export { V as ChatSkill, K as FavoriteSkillsPanel, z as SKILLS_CLASS, q as SkillArchiveUploadDialog, J as SkillCatalogModal, X as SkillContentFileTree, Z as SkillDetailsSidePanel, B as SkillInfoTooltipContent, pe as SkillSelectorField, ce as buildFavoriteSkillItem, re as diffTextChange, oe as findMentionAtCaret, le as getSkillFallbackName, ae as insertAnchor, $ as matchSkillMentions, ie as reconcileAnchors, se as useSkillMentions, ue as useSkillSelectorOverlay };
@@ -34,21 +34,16 @@ export interface SkillSelectorOverlayLabels {
34
34
  }
35
35
  /** Options accepted by `useSkillSelectorOverlay`. */
36
36
  export interface UseSkillSelectorOverlayOptions {
37
- /**
38
- * Whether the skill flow is enabled. While `false` the hook returns empty
39
- * outputs: no menu entry, no modal, no panel, no chips.
40
- */
41
- isEnabled: boolean;
42
37
  /**
43
38
  * Whether the input's current deployment supports skills. While `false`
44
- * (with the flow enabled) the entry points are omitted — no Add-menu item
45
- * and no slash menu — but a tracked mention stays in the draft text and
46
- * folds into `isSkillUnsupported` for the host's own send-disabled
47
- * condition. The host resolves this from its own deployment data. Note: a
48
- * live-composing mention has no per-mention error styling of its own (it
49
- * renders as a plain highlighted run, not a `ChatSkill`); only the sent
50
- * `custom_content.skills`/history rendering, and this boolean fold, reflect
51
- * the unsupported state.
39
+ * the entry points are omitted — no Add-menu item and no slash menu — but
40
+ * a tracked mention stays in the draft text and folds into
41
+ * `isSkillUnsupported` for the host's own send-disabled condition. The
42
+ * host resolves this from its own deployment data. Note: a live-composing
43
+ * mention has no per-mention error styling of its own (it renders as a
44
+ * plain highlighted run, not a `ChatSkill`); only the sent
45
+ * `custom_content.skills`/history rendering, and this boolean fold,
46
+ * reflect the unsupported state.
52
47
  */
53
48
  isSkillsSupported: boolean;
54
49
  /** The user's own skills. */
@@ -89,28 +84,27 @@ export interface UseSkillSelectorOverlayOptions {
89
84
  export interface UseSkillSelectorOverlayResult {
90
85
  /**
91
86
  * The Skills entry for the `menuOverlays` prop of
92
- * `ConversationInput`/`EditMessageInput`/`Input`. `undefined` while the flow
93
- * is disabled or the current deployment does not support skills: the host
94
- * omits the entry entirely when this is `undefined`, so a stub renderer
95
- * would leave the menu item in place with nothing behind it.
87
+ * `ConversationInput`/`EditMessageInput`/`Input`. `undefined` while the
88
+ * current deployment does not support skills: the host omits the entry
89
+ * entirely when this is `undefined`, so a stub renderer would leave the
90
+ * menu item in place with nothing behind it.
96
91
  */
97
92
  skillMenuOverlay?: MenuOverlayConfig;
98
93
  /**
99
94
  * The Skills entry for the `commandMenu` prop of
100
95
  * `ConversationInput`/`EditMessageInput`/`Input`: typing `/` into an empty
101
96
  * textarea opens the favorites panel in search mode above the input.
102
- * `undefined` while the flow is disabled or the current deployment does not
103
- * support skills, disabling the slash menu entirely.
97
+ * `undefined` while the current deployment does not support skills,
98
+ * disabling the slash menu entirely.
104
99
  */
105
100
  commandMenu?: CommandMenuConfig;
106
101
  /**
107
102
  * The browse modal element. Render at a stable level outside the popover
108
- * (e.g. next to the input); `null` while `isEnabled` is `false`.
103
+ * (e.g. next to the input).
109
104
  */
110
105
  skillCatalogModal: ReactNode;
111
106
  /**
112
107
  * The skill details side panel opened by a row tooltip's "View details".
113
- * `null` while `isEnabled` is `false`.
114
108
  */
115
109
  skillDetailsPanel: ReactNode;
116
110
  /**
@@ -135,7 +129,7 @@ export interface UseSkillSelectorOverlayResult {
135
129
  * Every currently-tracked skill mention's character range within the
136
130
  * composer's live draft text, for `ConversationInput`/`EditMessageInput`/
137
131
  * `Input`'s `activeMentions` prop (the live-composing highlighted-run
138
- * render). Empty while nothing is mentioned or the flow is disabled.
132
+ * render). Empty while nothing is mentioned.
139
133
  */
140
134
  activeMentions: HighlightedTextRange[];
141
135
  /**
@@ -166,15 +160,14 @@ export interface UseSkillSelectorOverlayResult {
166
160
  /**
167
161
  * Whether at least one skill is mentioned while the current deployment does
168
162
  * not support skills — hosts must fold this into their send-disabled
169
- * conditions. Always `false` while `isEnabled` is `false`.
163
+ * conditions.
170
164
  */
171
165
  isSkillUnsupported: boolean;
172
166
  /**
173
167
  * Every currently-tracked mention as the send-time `custom_content.skills`
174
168
  * payload, in left-to-right text order — `undefined` while nothing is
175
- * mentioned or the flow is disabled, so `custom_content.skills` is omitted
176
- * entirely. Cleared to `undefined` by `resetSkillMentions` after a
177
- * successful send.
169
+ * mentioned, so `custom_content.skills` is omitted entirely. Cleared to
170
+ * `undefined` by `resetSkillMentions` after a successful send.
178
171
  */
179
172
  selectedSkills: RequestSkill[] | undefined;
180
173
  /**
@@ -198,9 +191,9 @@ export interface UseSkillSelectorOverlayResult {
198
191
  * `textSegments` prop. Resolves each entry's name from the listing pools
199
192
  * matched on its url, falling back to the url's last non-empty segment,
200
193
  * sharing the "View details" panel with the favorite rows. Returns `null`
201
- * while `isEnabled` is `false` or `skills` is empty/absent; a mention
202
- * `matchSkillMentions` cannot locate in `content` is simply omitted from
203
- * the render (see `matchSkillMentions`'s own doc for that heuristic).
194
+ * while `skills` is empty/absent; a mention `matchSkillMentions` cannot
195
+ * locate in `content` is simply omitted from the render (see
196
+ * `matchSkillMentions`'s own doc for that heuristic).
204
197
  */
205
198
  renderHistorySkillSegments: (content: string, skills: RequestSkill[] | undefined) => ReactNode[] | null;
206
199
  /**
@@ -208,8 +201,8 @@ export interface UseSkillSelectorOverlayResult {
208
201
  * ignoring text position — for `AssistantMessageBubble`'s `beforeContent`
209
202
  * slot, since assistant text is model-generated markdown and never
210
203
  * authors positioned mentions. Each entry's name/description resolve the
211
- * same way as `renderHistorySkillSegments`. Returns `null` while
212
- * `isEnabled` is `false` or the array is empty/absent.
204
+ * same way as `renderHistorySkillSegments`. Returns `null` while the
205
+ * array is empty/absent.
213
206
  */
214
207
  renderHistorySkills: (skills: RequestSkill[] | undefined) => ReactNode;
215
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-selector-overlay.d.ts","sourceRoot":"","sources":["../../src/models/skill-selector-overlay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-selector-overlay.d.ts","sourceRoot":"","sources":["../../src/models/skill-selector-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC9C,iFAAiF;IACjF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qEAAqE;AACrE,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED,qDAAqD;AACrD,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;OAUG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B,6BAA6B;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,uDAAuD;IACvD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,0EAA0E;IAC1E,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,oCAAoC;IACpC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,2BAA2B,CAAC,EAAE,uBAAuB,CAAC;IACtD;;;;OAIG;IACH,oBAAoB,EAAE,CACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAC9B,OAAO,EAAE,MAAM,IAAI,KAChB,SAAS,CAAC;IACf,sEAAsE;IACtE,qBAAqB,EAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;CACvE;AAED,6CAA6C;AAC7C,MAAM,WAAW,6BAA6B;IAC5C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;OAGG;IACH,iBAAiB,EAAE,SAAS,CAAC;IAC7B;;OAEG;IACH,iBAAiB,EAAE,SAAS,CAAC;IAC7B;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;;;;OAOG;IACH,kBAAkB,EAAE,CAClB,aAAa,EAAE,MAAM,KAClB,oBAAoB,GAAG,SAAS,CAAC;IACtC;;;;;;OAMG;IACH,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,cAAc,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC3C;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,KAC/B,IAAI,CAAC;IACV;;;;;;;;;;OAUG;IACH,0BAA0B,EAAE,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,KAC/B,SAAS,EAAE,GAAG,IAAI,CAAC;IACxB;;;;;;;OAOG;IACH,mBAAmB,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,KAAK,SAAS,CAAC;CACxE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-skills",
3
3
  "description": "Host-agnostic UI for picking a favorite skill to attach to a chat input",
4
- "version": "1.2.0-dev.181",
4
+ "version": "1.2.0-dev.185",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -18,11 +18,11 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@tabler/icons-react": "^3.44.0",
21
- "@epam/ai-dial-catalog": "1.2.0-dev.181",
22
- "@epam/ai-dial-conversation-input": "1.2.0-dev.181"
21
+ "@epam/ai-dial-catalog": "1.2.0-dev.185",
22
+ "@epam/ai-dial-conversation-input": "1.2.0-dev.185"
23
23
  },
24
24
  "peerDependencies": {
25
- "@epam/ai-dial-chat-shared": "1.2.0-dev.181",
25
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.185",
26
26
  "@epam/ai-dial-react-file-manager": "^0.3.0-dev.15",
27
27
  "@epam/ai-dial-ui-kit": "^0.15.0-dev.21",
28
28
  "react": "^19.2.8"