@epam/ai-dial-ui-kit 0.16.0-dev.32 → 0.16.0-dev.33

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.
@@ -1,56 +1,51 @@
1
1
  import { jsxs as c, jsx as t } from "react/jsx-runtime";
2
- import d from "../../../assets/icons/no-data.svg.js";
3
2
  import { mergeClasses as e } from "../../../utils/merge-classes.js";
4
3
  import { DIAL_KIT_CLASS as x } from "../../../constants/public-class-names.js";
5
- const r = 32, N = ({
6
- title: s,
7
- description: a,
8
- icon: o,
9
- live: i = !1,
4
+ import { NoDataIllustration as d } from "./NoDataIllustration.js";
5
+ const h = ({
6
+ title: a,
7
+ description: l,
8
+ icon: r,
9
+ action: s,
10
+ live: m = !1,
10
11
  className: n,
11
- titleClassName: l,
12
- descriptionClassName: m
12
+ titleClassName: o,
13
+ descriptionClassName: i
13
14
  }) => /* @__PURE__ */ c(
14
15
  "div",
15
16
  {
16
- role: i ? "status" : void 0,
17
+ role: m ? "status" : void 0,
17
18
  className: e(
18
- "flex size-full flex-col items-center justify-center gap-2 text-tertiary",
19
+ "flex size-full flex-col items-center justify-center px-4 text-center",
19
20
  n,
20
21
  x.noDataContent
21
22
  ),
22
23
  children: [
23
- o ?? /* @__PURE__ */ t(
24
- d,
25
- {
26
- width: r,
27
- height: r,
28
- "aria-hidden": "true"
29
- }
30
- ),
24
+ r ?? /* @__PURE__ */ t(d, {}),
31
25
  /* @__PURE__ */ t(
32
26
  "span",
33
27
  {
34
28
  className: e(
35
- "dial-tiny-text text-secondary",
36
- l
29
+ "dial-small-semi-text mt-6 text-primary",
30
+ o
37
31
  ),
38
- children: s
32
+ children: a
39
33
  }
40
34
  ),
41
- a && /* @__PURE__ */ t(
35
+ l != null && /* @__PURE__ */ t(
42
36
  "span",
43
37
  {
44
38
  className: e(
45
- "dial-tiny-text text-secondary",
46
- m
39
+ "dial-small-text mt-2 text-secondary",
40
+ i
47
41
  ),
48
- children: a
42
+ children: l
49
43
  }
50
- )
44
+ ),
45
+ s != null && /* @__PURE__ */ t("div", { className: "mt-4", children: s })
51
46
  ]
52
47
  }
53
48
  );
54
49
  export {
55
- N as NoDataContent
50
+ h as NoDataContent
56
51
  };
@@ -0,0 +1,53 @@
1
+ import { jsxs as r, jsx as l } from "react/jsx-runtime";
2
+ const i = [12, 40, 68], t = () => /* @__PURE__ */ r(
3
+ "svg",
4
+ {
5
+ width: 121,
6
+ height: 97,
7
+ viewBox: "0 0 121 97",
8
+ fill: "none",
9
+ "aria-hidden": "true",
10
+ focusable: "false",
11
+ children: [
12
+ /* @__PURE__ */ l(
13
+ "rect",
14
+ {
15
+ x: 0.5,
16
+ y: 0.5,
17
+ width: 120,
18
+ height: 96,
19
+ rx: 16,
20
+ className: "fill-layer-0 stroke-tertiary"
21
+ }
22
+ ),
23
+ i.map((e) => /* @__PURE__ */ r("g", { children: [
24
+ /* @__PURE__ */ l("circle", { cx: 20.5, cy: e + 8.5, r: 8, className: "fill-layer-1" }),
25
+ /* @__PURE__ */ l(
26
+ "rect",
27
+ {
28
+ x: 36.5,
29
+ y: e + 1,
30
+ width: 56,
31
+ height: 6,
32
+ rx: 3,
33
+ className: "fill-layer-1"
34
+ }
35
+ ),
36
+ /* @__PURE__ */ l(
37
+ "rect",
38
+ {
39
+ x: 36.5,
40
+ y: e + 11,
41
+ width: 34,
42
+ height: 5,
43
+ rx: 2.5,
44
+ className: "fill-layer-2"
45
+ }
46
+ )
47
+ ] }, e))
48
+ ]
49
+ }
50
+ );
51
+ export {
52
+ t as NoDataIllustration
53
+ };
@@ -1,4 +1,4 @@
1
- import { jsx as l, jsxs as g, Fragment as Ve } from "react/jsx-runtime";
1
+ import { jsx as l, jsxs as N, Fragment as Ve } from "react/jsx-runtime";
2
2
  import { IconChevronDown as qe } from "@tabler/icons-react";
3
3
  import { useId as Ge, useState as U, useCallback as m, useMemo as u, useEffect as He, useImperativeHandle as Qe, Fragment as We } from "react";
4
4
  import { Checkbox as Ze } from "../Checkbox/Checkbox.js";
@@ -9,7 +9,7 @@ import { ErrorText as Ye, CaptionText as Pe } from "../CaptionText/CaptionText.j
9
9
  import { GhostIconButton as el } from "../IconButton/IconButtonWrappers.js";
10
10
  import { Input as se } from "../Input/Input.js";
11
11
  import { Label as ll } from "../Label/Label.js";
12
- import { DialNoDataContent as tl } from "../../NoDataContent/NoDataContent.js";
12
+ import { NoDataContent as tl } from "../NoDataContent/NoDataContent.js";
13
13
  import { DIAL_KIT_ICON_STROKE as nl } from "../constants/icon.js";
14
14
  import { DIAL_ICON_SIZE as ce } from "../../../constants/icon.js";
15
15
  import { MenuItem as de } from "../MenuItem/MenuItem.js";
@@ -21,9 +21,9 @@ import { mergeClasses as p } from "../../../utils/merge-classes.js";
21
21
  import { CollapsedSelectTags as il } from "./CollapsedSelectTags.js";
22
22
  import { MultiSelectTags as al } from "./MultiSelectTags.js";
23
23
  import { SelectSubMenuItem as ol } from "./SelectSubMenuItem.js";
24
- import { selectFieldIconClassName as sl, selectListWidthClassName as cl, selectOverlayBaseClassName as dl, selectSearchThreshold as fl, selectSearchIcon as ml, selectCloseIcon as ul, selectOptionBaseClassName as hl, selectOptionsScrollClassName as pl, selectEmptyStateIcon as vl } from "./constants.js";
25
- import { DIAL_KIT_CLASS as bl } from "../../../constants/public-class-names.js";
26
- const ql = ({
24
+ import { selectFieldIconClassName as sl, selectListWidthClassName as cl, selectOverlayBaseClassName as dl, selectSearchThreshold as fl, selectSearchIcon as ml, selectCloseIcon as ul, selectOptionBaseClassName as hl, selectOptionsScrollClassName as pl } from "./constants.js";
25
+ import { DIAL_KIT_CLASS as vl } from "../../../constants/public-class-names.js";
26
+ const Vl = ({
27
27
  options: i,
28
28
  multiple: n = !1,
29
29
  id: me,
@@ -33,7 +33,7 @@ const ql = ({
33
33
  prefix: G,
34
34
  customSelectedValue: H,
35
35
  placeholder: he = "Select...",
36
- labelProps: N,
36
+ labelProps: S,
37
37
  error: v,
38
38
  caption: Q,
39
39
  ariaLabel: W,
@@ -44,11 +44,11 @@ const ql = ({
44
44
  selectAll: be = !1,
45
45
  invalid: R,
46
46
  selectAllLabel: Ce = "Select all",
47
- collapseTagOverflow: Ie = !1,
47
+ collapseTagOverflow: ge = !1,
48
48
  selectedOptionMark: X = V.Tint,
49
- emptyStateTitle: Se = "No options available",
50
- emptyStateDescription: ge,
51
- emptyStateIcon: Ne,
49
+ emptyStateTitle: Ie = "No options available",
50
+ emptyStateDescription: Ne,
51
+ emptyStateIcon: Se,
52
52
  disabled: b = !1,
53
53
  className: xe,
54
54
  fieldClassName: we,
@@ -65,28 +65,28 @@ const ql = ({
65
65
  onSearchQueryChange: ne,
66
66
  customMultiSelectTagsRenderer: $
67
67
  }) => {
68
- const Ae = Ge(), c = me || Ae, re = `list-${c}`, ie = v ? `${c}-error` : void 0, ae = !v && Q ? `${c}-caption` : void 0, oe = q === D.Small, [ke, Oe] = U(!1), E = le !== void 0, f = E ? !!le : ke, d = m(
68
+ const Ae = Ge(), c = me || Ae, re = `list-${c}`, ie = v ? `${c}-error` : void 0, ae = !v && Q ? `${c}-caption` : void 0, oe = q === D.Small, [ke, Oe] = U(!1), M = le !== void 0, f = M ? !!le : ke, d = m(
69
69
  (e) => {
70
- E || Oe(e), te?.(e);
70
+ M || Oe(e), te?.(e);
71
71
  },
72
- [E, te]
73
- ), [h, De] = U(""), M = m(
72
+ [M, te]
73
+ ), [h, De] = U(""), B = m(
74
74
  (e) => {
75
75
  e !== h && (De(e || ""), ne?.(e || ""));
76
76
  },
77
77
  [ne, h]
78
- ), B = F !== void 0, [Fe, Le] = U(ue), C = B ? F : Fe, r = u(() => n ? Array.isArray(C) ? C : [] : typeof C == "string" ? [C] : [], [C, n]), y = u(() => {
78
+ ), E = F !== void 0, [Fe, Le] = U(ue), C = E ? F : Fe, r = u(() => n ? Array.isArray(C) ? C : [] : typeof C == "string" ? [C] : [], [C, n]), y = u(() => {
79
79
  const e = h.trim().toLowerCase();
80
80
  return e ? i.filter((t) => t.label.toLowerCase().includes(e)) : i;
81
81
  }, [i, h]);
82
82
  He(() => {
83
- f || M("");
84
- }, [f, M]);
83
+ f || B("");
84
+ }, [f, B]);
85
85
  const s = m(
86
86
  (e) => {
87
- B || Le(e), P?.(e);
87
+ E || Le(e), P?.(e);
88
88
  },
89
- [B, P]
89
+ [E, P]
90
90
  ), _ = m(
91
91
  (e) => {
92
92
  if (n) {
@@ -119,7 +119,7 @@ const ql = ({
119
119
  allSelectedInFiltered: e,
120
120
  someSelectedInFiltered: j > 0 && !e
121
121
  };
122
- }, [o, j]), Ee = m(() => {
122
+ }, [o, j]), Me = m(() => {
123
123
  if (!(!n || o.length === 0))
124
124
  if (K) {
125
125
  const e = new Set(o.map((t) => t.value));
@@ -137,7 +137,7 @@ const ql = ({
137
137
  ]), A = r.length > 0, k = !n && A ? r[0] : void 0, a = u(
138
138
  () => k ? i.find((e) => e.value === k) ?? i.flatMap((e) => e.children ?? []).find((e) => e.value === k) : void 0,
139
139
  [i, k]
140
- ), I = a ? G ? `${G} ${a.label}` : a.label : void 0, Me = rl(), z = n && Ie && !$ && !Me, S = u(() => n ? A ? z ? /* @__PURE__ */ l(
140
+ ), g = a ? G ? `${G} ${a.label}` : a.label : void 0, Be = rl(), z = n && ge && !$ && !Be, I = u(() => n ? A ? z ? /* @__PURE__ */ l(
141
141
  il,
142
142
  {
143
143
  options: i,
@@ -155,11 +155,11 @@ const ql = ({
155
155
  selectedValues: r,
156
156
  handleRemoveTag: T
157
157
  }
158
- ) }) : null : !a || !a.labelNode && !a.description ? null : /* @__PURE__ */ g("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
158
+ ) }) : null : !a || !a.labelNode && !a.description ? null : /* @__PURE__ */ N("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
159
159
  /* @__PURE__ */ l(
160
160
  Re,
161
161
  {
162
- text: a.labelNode ?? I
162
+ text: a.labelNode ?? g
163
163
  }
164
164
  ),
165
165
  a.description && /* @__PURE__ */ l("span", { className: "truncate text-secondary dial-tiny-text", children: a.description })
@@ -170,12 +170,12 @@ const ql = ({
170
170
  A,
171
171
  n,
172
172
  i,
173
- I,
173
+ g,
174
174
  r,
175
175
  a
176
- ]), Be = n || S ? "" : I || (H && F ? H : ""), _e = typeof N?.label == "string" ? N.label : void 0, je = S ? [
176
+ ]), Ee = n || I ? "" : g || (H && F ? H : ""), _e = typeof S?.label == "string" ? S.label : void 0, je = I ? [
177
177
  fe(W, _e),
178
- n ? r.map((e) => i.find((t) => t.value === e)?.label ?? e).join(", ") : I
178
+ n ? r.map((e) => i.find((t) => t.value === e)?.label ?? e).join(", ") : g
179
179
  ].filter(Boolean).join(", ") || void 0 : fe(W);
180
180
  Qe(Te, () => ({
181
181
  dismiss: () => {
@@ -187,7 +187,7 @@ const ql = ({
187
187
  b || (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), f || d(!0));
188
188
  },
189
189
  [b, f, d]
190
- ), ze = () => /* @__PURE__ */ g(
190
+ ), ze = () => /* @__PURE__ */ N(
191
191
  "div",
192
192
  {
193
193
  id: re,
@@ -196,7 +196,7 @@ const ql = ({
196
196
  className: dl,
197
197
  children: [
198
198
  x && /* @__PURE__ */ l(Ve, { children: typeof x == "function" ? x() : x }),
199
- (Z || L) && (i.length > fl || !!h) && /* @__PURE__ */ g("div", { className: "flex items-center gap-2 px-2 pt-2", children: [
199
+ (Z || L) && (i.length > fl || !!h) && /* @__PURE__ */ N("div", { className: "flex items-center gap-2 px-2 pt-2", children: [
200
200
  Z && /* @__PURE__ */ l(
201
201
  se,
202
202
  {
@@ -204,7 +204,7 @@ const ql = ({
204
204
  size: ve,
205
205
  placeholder: J,
206
206
  "aria-label": J || "Search options",
207
- onChange: (e) => M(e),
207
+ onChange: (e) => B(e),
208
208
  value: h,
209
209
  iconBefore: ml,
210
210
  containerClassName: "w-full"
@@ -230,15 +230,15 @@ const ql = ({
230
230
  labelProps: { label: Ce },
231
231
  isSelected: K,
232
232
  isIndeterminate: $e,
233
- onChange: Ee
233
+ onChange: Me
234
234
  }
235
235
  ) }),
236
236
  /* @__PURE__ */ l("div", { role: "none", className: pl, children: y.length === 0 ? /* @__PURE__ */ l("div", { className: "px-2 py-3", children: /* @__PURE__ */ l(
237
237
  tl,
238
238
  {
239
- icon: Ne ?? vl,
240
- title: Se,
241
- description: ge
239
+ icon: Se,
240
+ title: Ie,
241
+ description: Ne
242
242
  }
243
243
  ) }) : y.map((e) => {
244
244
  const t = r.includes(e.value);
@@ -318,17 +318,17 @@ const ql = ({
318
318
  ]
319
319
  }
320
320
  );
321
- return /* @__PURE__ */ g(
321
+ return /* @__PURE__ */ N(
322
322
  "div",
323
323
  {
324
324
  className: p(
325
325
  "flex w-full flex-col gap-2",
326
326
  xe,
327
- bl.select
327
+ vl.select
328
328
  ),
329
329
  children: [
330
- N && /* @__PURE__ */ l(ll, { ...N, htmlFor: c }),
331
- /* @__PURE__ */ g("div", { className: "flex flex-col gap-1", children: [
330
+ S && /* @__PURE__ */ l(ll, { ...S, htmlFor: c }),
331
+ /* @__PURE__ */ N("div", { className: "flex flex-col gap-1", children: [
332
332
  /* @__PURE__ */ l(
333
333
  Je,
334
334
  {
@@ -349,8 +349,8 @@ const ql = ({
349
349
  size: q,
350
350
  disabled: b,
351
351
  invalid: R,
352
- value: Be,
353
- placeholder: S ? void 0 : he,
352
+ value: Ee,
353
+ placeholder: I ? void 0 : he,
354
354
  readOnly: !0,
355
355
  iconBefore: n ? void 0 : a?.icon,
356
356
  iconAfter: /* @__PURE__ */ l(
@@ -384,10 +384,10 @@ const ql = ({
384
384
  ),
385
385
  className: p(
386
386
  "cursor-pointer",
387
- S && "w-0 min-w-0 flex-none p-0"
387
+ I && "w-0 min-w-0 flex-none p-0"
388
388
  ),
389
389
  onKeyDown: Ke,
390
- children: S
390
+ children: I
391
391
  }
392
392
  )
393
393
  }
@@ -400,5 +400,5 @@ const ql = ({
400
400
  );
401
401
  };
402
402
  export {
403
- ql as Select
403
+ Vl as Select
404
404
  };
@@ -1,53 +1,44 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import { IconSearch as a, IconX as r, IconChevronRight as c } from "@tabler/icons-react";
3
- import l from "../../../assets/icons/no-data.svg.js";
4
- import { overlayItemClassName as n, overlayListClassName as i, overlayGap as m, overlaySubMenuListClassName as h } from "../constants/overlay.js";
5
- import { DIAL_KIT_ICON_STROKE as t } from "../constants/icon.js";
6
- import { DIAL_ICON_SIZE as e } from "../../../constants/icon.js";
7
- import { mergeClasses as o } from "../../../utils/merge-classes.js";
8
- const N = o("w-full flex flex-col"), v = n, y = "!max-w-[var(--reference-width)]", x = o(
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { IconSearch as a, IconX as r, IconChevronRight as l } from "@tabler/icons-react";
3
+ import { overlayItemClassName as c, overlayListClassName as n, overlayGap as i, overlaySubMenuListClassName as m } from "../constants/overlay.js";
4
+ import { DIAL_KIT_ICON_STROKE as s } from "../constants/icon.js";
5
+ import { DIAL_ICON_SIZE as o } from "../../../constants/icon.js";
6
+ import { mergeClasses as t } from "../../../utils/merge-classes.js";
7
+ const S = t("w-full flex flex-col"), d = c, N = "!max-w-[var(--reference-width)]", v = t(
9
8
  "max-h-[344px] overflow-y-auto py-1",
10
- i
11
- ), L = m, M = h, O = /* @__PURE__ */ s(
12
- c,
9
+ n
10
+ ), x = i, y = m, M = /* @__PURE__ */ e(
11
+ l,
13
12
  {
14
- size: e.SM,
15
- stroke: t,
13
+ size: o.SM,
14
+ stroke: s,
16
15
  "aria-hidden": "true"
17
16
  }
18
- ), w = "text-secondary transition-transform", _ = 8, b = /* @__PURE__ */ s(
17
+ ), O = "text-secondary transition-transform", L = 8, _ = /* @__PURE__ */ e(
19
18
  a,
20
19
  {
21
- size: e.MD,
22
- stroke: t,
20
+ size: o.MD,
21
+ stroke: s,
23
22
  "aria-hidden": "true"
24
23
  }
25
- ), g = /* @__PURE__ */ s(
24
+ ), b = /* @__PURE__ */ e(
26
25
  r,
27
26
  {
28
- size: e.SM,
29
- stroke: t,
30
- "aria-hidden": "true"
31
- }
32
- ), D = /* @__PURE__ */ s(
33
- l,
34
- {
35
- width: e.LG,
36
- height: e.LG,
27
+ size: o.SM,
28
+ stroke: s,
37
29
  "aria-hidden": "true"
38
30
  }
39
31
  );
40
32
  export {
41
- g as selectCloseIcon,
42
- D as selectEmptyStateIcon,
43
- w as selectFieldIconClassName,
44
- y as selectListWidthClassName,
45
- v as selectOptionBaseClassName,
46
- x as selectOptionsScrollClassName,
47
- N as selectOverlayBaseClassName,
48
- b as selectSearchIcon,
49
- _ as selectSearchThreshold,
50
- O as selectSubMenuCaretIcon,
51
- M as selectSubMenuClassName,
52
- L as selectSubMenuGap
33
+ b as selectCloseIcon,
34
+ O as selectFieldIconClassName,
35
+ N as selectListWidthClassName,
36
+ d as selectOptionBaseClassName,
37
+ v as selectOptionsScrollClassName,
38
+ S as selectOverlayBaseClassName,
39
+ _ as selectSearchIcon,
40
+ L as selectSearchThreshold,
41
+ M as selectSubMenuCaretIcon,
42
+ y as selectSubMenuClassName,
43
+ x as selectSubMenuGap
53
44
  };
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.16.0-dev.32",
3
- "generatedAt": "2026-10-21T19:48:14.902Z",
2
+ "version": "0.16.0-dev.33",
3
+ "generatedAt": "2026-10-21T20:30:45.012Z",
4
4
  "kit": {
5
5
  "name": "@epam/ai-dial-ui-kit",
6
6
  "description": "A modern UI kit for building AI DIAL interfaces with React",
@@ -5070,7 +5070,7 @@
5070
5070
  "name": "NoDataContent",
5071
5071
  "category": "Components_2_0",
5072
5072
  "generation": "2.0",
5073
- "description": "Message shown in place of a list, table or grid that has nothing to show.\naliases: EmptyState|NoResults|ZeroState\nDesign system 2.0\n\nFills its container and centres an illustration, a headline and an optional\nsecondary line. The icon is decorative, so it is hidden from assistive tech\nand the text carries the message on its own.",
5073
+ "description": "Message shown in place of a list, table or grid that has nothing to show.\naliases: EmptyState|NoResults|ZeroState\nDesign system 2.0\n\nFills its container and centres an illustration, a headline, an optional\nsecondary line and an optional action. The icon is decorative, so it is\nhidden from assistive tech and the text carries the message on its own.",
5074
5074
  "props": [
5075
5075
  {
5076
5076
  "name": "title",
@@ -5088,7 +5088,13 @@
5088
5088
  "name": "icon",
5089
5089
  "type": "ReactNode",
5090
5090
  "required": false,
5091
- "description": "Illustration above the title. Defaults to the empty-state document mark."
5091
+ "description": "Illustration above the title. Defaults to the placeholder-list card."
5092
+ },
5093
+ {
5094
+ "name": "action",
5095
+ "type": "ReactNode",
5096
+ "required": false,
5097
+ "description": "Optional way forward, rendered under the text."
5092
5098
  },
5093
5099
  {
5094
5100
  "name": "live",
@@ -5117,7 +5123,7 @@
5117
5123
  }
5118
5124
  ],
5119
5125
  "examples": [
5120
- "<NoDataContent\n title=\"No results found\"\n description=\"Try a different search term.\"\n/>\n\n<NoDataContent title=\"Nothing here yet\" icon={<IconInbox size={60} />} live />"
5126
+ "<NoDataContent\n title=\"No chats found\"\n description=\"Try a different search term or check your filters.\"\n live\n/>\n\n<NoDataContent\n title=\"No chats yet\"\n description=\"Chats will appear here once you start one.\"\n action={<Button label=\"New chat\" onClick={createChat} />}\n/>"
5121
5127
  ],
5122
5128
  "sourceFile": "components/New/NoDataContent/NoDataContent.tsx"
5123
5129
  },