impact-nova 3.0.0-alpha.4 → 3.0.0-alpha.5

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 (27) hide show
  1. package/dist/components/data/expandable-list-item/sku-picker-chrome.d.ts +2 -1
  2. package/dist/components/data/expandable-list-item/sku-picker-chrome.js +41 -35
  3. package/dist/components/data/expandable-list-item/useServerSkuInfinitePages.d.ts +2 -1
  4. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.catalog.d.ts +4 -3
  5. package/dist/components/feedback/tooltip/button-icon-tooltip.d.ts +4 -1
  6. package/dist/components/feedback/tooltip/button-icon-tooltip.js +14 -12
  7. package/dist/components/feedback/tooltip/use-overflow-tooltip.js +44 -36
  8. package/dist/components/flows/iris-chat/iris-chat-menu.js +100 -73
  9. package/dist/components/forms/select/components/SelectMenuPanel.js +15 -15
  10. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.d.ts +3 -0
  11. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.js +12 -0
  12. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +181 -125
  13. package/dist/components/layout/horizontal-scroller/horizontal-scroller.types.d.ts +2 -0
  14. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.d.ts +3 -1
  15. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.js +77 -67
  16. package/dist/components/primitives/iris/iris-insight-truncated-text.d.ts +3 -0
  17. package/dist/components/primitives/iris/iris-insight-truncated-text.js +33 -0
  18. package/dist/components/primitives/iris/iris.d.ts +2 -1
  19. package/dist/components/primitives/iris/iris.js +57 -67
  20. package/dist/components/primitives/iris/iris.types.d.ts +7 -0
  21. package/dist/form-react/Fields/VirtualizedListField.js +69 -64
  22. package/dist/impact-nova-components.css +3 -4
  23. package/dist/impact-nova.css +1 -1
  24. package/dist/lib/alphabetical-sort.js +13 -0
  25. package/dist/llms/rules/installation.js +1 -1
  26. package/dist/llms/rules/requirements.js +1 -1
  27. package/package.json +2 -2
@@ -1,16 +1,16 @@
1
- import { jsx as t, jsxs as I } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as p } from "react/jsx-runtime";
2
2
  import * as x from "react";
3
- import { Alan as b } from "impact-nova-icons";
3
+ import { Alan as N } from "impact-nova-icons";
4
4
  import { Button as w } from "../button/button.js";
5
- import { Popover as B, PopoverTrigger as z, PopoverContent as k } from "../../feedback/popover/popover.js";
6
- import { OverflowTooltip as A } from "../../feedback/tooltip/overflow-tooltip.js";
5
+ import { Popover as B, PopoverTrigger as z, PopoverContent as T } from "../../feedback/popover/popover.js";
6
+ import { IrisInsightTruncatedText as A } from "./iris-insight-truncated-text.js";
7
7
  import { createComponent as g } from "../../../lib/primitives/create-component.js";
8
8
  import { cn as l } from "../../../lib/utils.js";
9
9
  import { IrisAlanGradientIcon as v } from "./iris-alan-gradient-icon.js";
10
- import { irisButtonToButtonSize as T, irisButtonVariants as V, irisChromeWrapperVariants as O, irisIconChromeWrapperVariants as P, irisIconFilledButtonVariants as y, irisIconButtonToButtonSize as S, irisIconButtonVariants as j, irisMenuVariants as M } from "./iris.variants.js";
10
+ import { irisButtonToButtonSize as V, irisButtonVariants as k, irisChromeWrapperVariants as P, irisIconChromeWrapperVariants as S, irisIconFilledButtonVariants as j, irisIconButtonToButtonSize as y, irisIconButtonVariants as M, irisMenuVariants as O } from "./iris.variants.js";
11
11
  import { IrisControlProvider as _, IrisControlRegion as $ } from "./iris-control-region.js";
12
12
  import { IrisAgentCursor as ii } from "./iris-agent-cursor.js";
13
- import { useIrisControl as oi } from "./iris-control-context.js";
13
+ import { useIrisControl as ni } from "./iris-control-context.js";
14
14
  const G = {
15
15
  sm: 14,
16
16
  md: 16,
@@ -18,53 +18,53 @@ const G = {
18
18
  }, U = g(
19
19
  "IrisButton",
20
20
  ({
21
- className: o,
21
+ className: n,
22
22
  size: i = "md",
23
- shape: n = "default",
24
- children: e,
25
- type: s = "button",
23
+ shape: o = "default",
24
+ children: s,
25
+ type: e = "button",
26
26
  ...r
27
- }, a) => /* @__PURE__ */ t("span", { className: O({ shape: n }), children: /* @__PURE__ */ I(
27
+ }, a) => /* @__PURE__ */ t("span", { className: P({ shape: o }), children: /* @__PURE__ */ p(
28
28
  w,
29
29
  {
30
30
  ref: a,
31
- type: s,
31
+ type: e,
32
32
  variant: "ghost",
33
- size: T[i],
33
+ size: V[i],
34
34
  "data-component": "iris-button",
35
35
  "data-size": i,
36
- "data-shape": n,
37
- className: l(V({ size: i }), o),
36
+ "data-shape": o,
37
+ className: l(k({ size: i }), n),
38
38
  ...r,
39
39
  children: [
40
40
  /* @__PURE__ */ t(v, { size: G[i] }),
41
- e ?? "Ask Iris"
41
+ s ?? "Ask Iris"
42
42
  ]
43
43
  }
44
44
  ) })
45
45
  ), R = g(
46
46
  "IrisIconButton",
47
47
  ({
48
- className: o,
48
+ className: n,
49
49
  appearance: i = "outline",
50
- size: n = "md",
51
- shape: e = "default",
52
- type: s = "button",
50
+ size: o = "md",
51
+ shape: s = "default",
52
+ type: e = "button",
53
53
  "aria-label": r = "Ask Iris",
54
54
  ...a
55
55
  }, d) => {
56
- const m = P({ appearance: i, shape: e }), c = i === "filled" ? /* @__PURE__ */ t(b, { size: 16, className: "text-brand-foreground" }) : /* @__PURE__ */ t(v, { size: 16 });
56
+ const m = S({ appearance: i, shape: s }), c = i === "filled" ? /* @__PURE__ */ t(N, { size: 16, className: "text-brand-foreground" }) : /* @__PURE__ */ t(v, { size: 16 });
57
57
  return i === "filled" ? /* @__PURE__ */ t("span", { className: m, children: /* @__PURE__ */ t(
58
58
  "button",
59
59
  {
60
60
  ref: d,
61
- type: s,
61
+ type: e,
62
62
  "data-component": "iris-icon-button",
63
63
  "data-appearance": i,
64
- "data-size": n,
65
- "data-shape": e,
64
+ "data-size": o,
65
+ "data-shape": s,
66
66
  "aria-label": r,
67
- className: l(y({ size: n }), o),
67
+ className: l(j({ size: o }), n),
68
68
  ...a,
69
69
  children: c
70
70
  }
@@ -72,15 +72,15 @@ const G = {
72
72
  w,
73
73
  {
74
74
  ref: d,
75
- type: s,
75
+ type: e,
76
76
  variant: "ghost",
77
- size: S[n],
77
+ size: y[o],
78
78
  "data-component": "iris-icon-button",
79
79
  "data-appearance": i,
80
- "data-size": n,
81
- "data-shape": e,
80
+ "data-size": o,
81
+ "data-shape": s,
82
82
  "aria-label": r,
83
- className: l(j({ size: n }), o),
83
+ className: l(M({ size: o }), n),
84
84
  ...a,
85
85
  children: c
86
86
  }
@@ -89,21 +89,21 @@ const G = {
89
89
  ), C = g(
90
90
  "IrisMenu",
91
91
  ({
92
- className: o,
92
+ className: n,
93
93
  appearance: i = "loading",
94
- children: n,
95
- onAskInChat: e,
96
- askInChatLabel: s = "Ask in chat",
94
+ children: o,
95
+ onAskInChat: s,
96
+ askInChatLabel: e = "Ask in chat",
97
97
  overflowTooltipContent: r,
98
98
  ...a
99
99
  }, d) => {
100
- const m = i === "loading" || i === "status", c = i === "card", f = r ?? (typeof n == "string" ? n : void 0), u = /* @__PURE__ */ I(
100
+ const m = i === "loading" || i === "status", c = i === "card", f = r ?? (typeof o == "string" ? o : void 0), u = /* @__PURE__ */ p(
101
101
  "div",
102
102
  {
103
103
  ref: d,
104
104
  "data-component": "iris-menu",
105
105
  "data-appearance": i,
106
- className: l(M({ appearance: i }), o),
106
+ className: l(O({ appearance: i }), n),
107
107
  ...a,
108
108
  children: [
109
109
  m && /* @__PURE__ */ t(
@@ -126,21 +126,10 @@ const G = {
126
126
  i === "status" && "min-w-0 flex-1 overflow-hidden",
127
127
  i === "loading" && "whitespace-nowrap"
128
128
  ),
129
- children: i === "status" ? /* @__PURE__ */ t(
130
- A,
131
- {
132
- triggerClassName: "block w-full min-w-0 truncate whitespace-nowrap normal-case",
133
- contentClassName: "iris-menu-overflow-tooltip",
134
- variant: "secondary",
135
- side: "top",
136
- sideOffset: 10,
137
- content: f,
138
- children: n
139
- }
140
- ) : n
129
+ children: i === "status" ? /* @__PURE__ */ t(A, { overflowTooltipContent: f, children: o }) : o
141
130
  }
142
131
  ),
143
- c && e && /* @__PURE__ */ t(w, { variant: "outline", size: "sm", className: "max-h-7 capitalize", onClick: e, children: s })
132
+ c && s && /* @__PURE__ */ t(w, { variant: "outline", size: "sm", className: "max-h-7 capitalize", onClick: s, children: e })
144
133
  ]
145
134
  }
146
135
  );
@@ -149,7 +138,7 @@ const G = {
149
138
  {
150
139
  className: l(
151
140
  "iris-edge-wash-shell iris-edge-wash-shell--menu rounded-xl motion-reduce:animate-none",
152
- i === "status" && "iris-edge-wash-shell--fluid iris-edge-wash-shell--menu-plain"
141
+ i === "status" && "iris-edge-wash-shell--fluid iris-edge-wash-shell--menu-plain w-full min-w-0"
153
142
  ),
154
143
  children: u
155
144
  }
@@ -158,53 +147,53 @@ const G = {
158
147
  ), X = g(
159
148
  "IrisInsight",
160
149
  ({
161
- status: o = "idle",
150
+ status: n = "idle",
162
151
  iconSize: i = "md",
163
- iconAppearance: n = "outline",
164
- loadingLabel: e = "Gathering insights...",
165
- onTriggerClick: s,
152
+ iconAppearance: o = "outline",
153
+ loadingLabel: s = "Gathering insights...",
154
+ onTriggerClick: e,
166
155
  onAskInChat: r,
167
156
  askInChatLabel: a,
168
157
  className: d,
169
158
  children: m
170
159
  }, c) => {
171
- const [f, u] = x.useState(!1), h = o === "loading" || o === "ready", N = o === "loading";
160
+ const [f, u] = x.useState(!1), h = n === "loading" || n === "ready", b = n === "loading";
172
161
  return x.useEffect(() => {
173
- o === "loading" && u(!0);
174
- }, [o]), /* @__PURE__ */ t(
162
+ n === "loading" && u(!0);
163
+ }, [n]), /* @__PURE__ */ t(
175
164
  "div",
176
165
  {
177
166
  ref: c,
178
167
  "data-component": "iris",
179
- "data-status": o,
168
+ "data-status": n,
180
169
  className: l("relative inline-flex items-start", d),
181
- children: /* @__PURE__ */ I(
170
+ children: /* @__PURE__ */ p(
182
171
  B,
183
172
  {
184
173
  open: h ? f : !1,
185
- onOpenChange: (p) => {
186
- h && u(p);
174
+ onOpenChange: (I) => {
175
+ h && u(I);
187
176
  },
188
177
  children: [
189
178
  /* @__PURE__ */ t(z, { asChild: !0, children: /* @__PURE__ */ t(
190
179
  R,
191
180
  {
192
181
  size: i,
193
- appearance: N ? "filled" : n,
182
+ appearance: b ? "filled" : o,
194
183
  "aria-expanded": f && h,
195
- onClick: (p) => {
196
- o === "idle" && (s?.(), p.preventDefault());
184
+ onClick: (I) => {
185
+ n === "idle" && (e?.(), I.preventDefault());
197
186
  }
198
187
  }
199
188
  ) }),
200
189
  h && /* @__PURE__ */ t(
201
- k,
190
+ T,
202
191
  {
203
192
  align: "end",
204
193
  side: "bottom",
205
194
  sideOffset: 7,
206
195
  className: "w-auto border-0 bg-transparent p-0 shadow-none motion-reduce:animate-none",
207
- children: o === "loading" ? /* @__PURE__ */ t(C, { appearance: "loading", children: e }) : /* @__PURE__ */ t(
196
+ children: n === "loading" ? /* @__PURE__ */ t(C, { appearance: "loading", children: s }) : /* @__PURE__ */ t(
208
197
  C,
209
198
  {
210
199
  appearance: "card",
@@ -229,6 +218,7 @@ export {
229
218
  $ as IrisControlRegion,
230
219
  R as IrisIconButton,
231
220
  X as IrisInsight,
221
+ A as IrisInsightTruncatedText,
232
222
  C as IrisMenu,
233
- oi as useIrisControl
223
+ ni as useIrisControl
234
224
  };
@@ -22,6 +22,13 @@ export type IrisMenuProps = React.HTMLAttributes<HTMLDivElement> & {
22
22
  /** Tooltip body when `children` is not a plain string (e.g. formatted insight copy). */
23
23
  overflowTooltipContent?: React.ReactNode;
24
24
  };
25
+ export type IrisInsightTruncatedTextProps = {
26
+ children: React.ReactNode;
27
+ overflowTooltipContent?: React.ReactNode;
28
+ className?: string;
29
+ triggerClassName?: string;
30
+ as?: "span" | "p" | "div";
31
+ };
25
32
  export type IrisInsightStatus = "idle" | "loading" | "ready";
26
33
  export type IrisInsightProps = {
27
34
  status?: IrisInsightStatus;
@@ -1,11 +1,12 @@
1
- import { jsx as i, jsxs as x } from "react/jsx-runtime";
1
+ import { jsx as i, jsxs as S } from "react/jsx-runtime";
2
2
  import { useState as b } from "react";
3
- import { Controller as k } from "react-hook-form";
4
- import { ChoiceCardGroup as I, ChoiceCard as j, ChoiceCardIndicator as q, ChoiceCardContent as z, ChoiceCardTitle as D } from "../../components/forms/choice-card/choice-card.js";
3
+ import { Controller as O } from "react-hook-form";
4
+ import { ChoiceCardGroup as k, ChoiceCard as I, ChoiceCardIndicator as j, ChoiceCardContent as q, ChoiceCardTitle as z } from "../../components/forms/choice-card/choice-card.js";
5
5
  import { SkuPickerChrome as B } from "../../components/data/expandable-list-item/sku-picker-chrome.js";
6
- import { cn as S } from "../../lib/utils.js";
7
- import { getFieldTestId as M } from "../utils/fieldTestIds.js";
8
- function P(e) {
6
+ import { nextAlphabeticalSortDirection as M, compareAlphabeticalValues as P } from "../../lib/alphabetical-sort.js";
7
+ import { cn as y } from "../../lib/utils.js";
8
+ import { getFieldTestId as E } from "../utils/fieldTestIds.js";
9
+ function G(e) {
9
10
  if (!Array.isArray(e))
10
11
  return [];
11
12
  const r = [];
@@ -13,49 +14,53 @@ function P(e) {
13
14
  typeof t == "string" && r.push(t);
14
15
  return r;
15
16
  }
16
- function y(e, r, t) {
17
+ function x(e, r, t) {
17
18
  if (t === "single") {
18
- const l = Array.from(r).find((o) => !e.includes(o));
19
- return l ? [l] : Array.from(r).slice(0, 1);
19
+ const n = Array.from(r).find((s) => !e.includes(s));
20
+ return n ? [n] : Array.from(r).slice(0, 1);
20
21
  }
21
22
  const a = [];
22
- for (const l of e)
23
- r.has(l) && a.push(l);
24
- for (const l of r)
25
- e.includes(l) || a.push(l);
23
+ for (const n of e)
24
+ r.has(n) && a.push(n);
25
+ for (const n of r)
26
+ e.includes(n) || a.push(n);
26
27
  return a;
27
28
  }
28
29
  function d(e) {
29
30
  return typeof e.label == "string" ? e.label : e.value;
30
31
  }
31
- function E(e, r, t) {
32
- const a = r.trim().toLowerCase(), l = e.filter(
33
- (o) => d(o).toLowerCase().includes(a)
32
+ function R(e, r, t) {
33
+ const a = r.trim().toLowerCase(), n = e.filter(
34
+ (s) => d(s).toLowerCase().includes(a)
35
+ );
36
+ return t === "none" ? n : n.sort(
37
+ (s, f) => P(
38
+ d(s),
39
+ d(f),
40
+ t
41
+ )
34
42
  );
35
- return t ? l.sort(
36
- (o, f) => d(o).localeCompare(d(f))
37
- ) : l;
38
43
  }
39
- function G(e, r) {
44
+ function _(e, r) {
40
45
  let t = 0;
41
46
  for (const a of e)
42
47
  if (a.isDisabled !== !0 && (t += 1, !r.includes(a.value)))
43
48
  return !1;
44
49
  return t > 0;
45
50
  }
46
- function R(e, r) {
51
+ function $(e, r) {
47
52
  const t = [];
48
53
  for (const a of r) {
49
- const l = e.find((o) => o.value === a);
50
- if (l && (t.push(d(l)), t.length === 5))
54
+ const n = e.find((s) => s.value === a);
55
+ if (n && (t.push(d(n)), t.length === 5))
51
56
  break;
52
57
  }
53
58
  return t;
54
59
  }
55
- function _(e) {
60
+ function H(e) {
56
61
  const r = e.view === "card";
57
62
  return /* @__PURE__ */ i(
58
- I,
63
+ k,
59
64
  {
60
65
  type: "multiple",
61
66
  value: e.selected ? [e.option.value] : [],
@@ -64,65 +69,65 @@ function _(e) {
64
69
  },
65
70
  disabled: e.disabled,
66
71
  className: "min-w-0 w-full",
67
- children: /* @__PURE__ */ x(
68
- j,
72
+ children: /* @__PURE__ */ S(
73
+ I,
69
74
  {
70
75
  value: e.option.value,
71
76
  size: "sm",
72
77
  disabled: e.disabled,
73
78
  "aria-label": d(e.option),
74
- className: S(
79
+ className: y(
75
80
  "w-full min-w-0 items-center",
76
81
  !r && "justify-start gap-3 rounded-none border-0 bg-transparent p-0 shadow-none hover:border-0 data-[selected]:border-0 data-[selected]:bg-transparent data-[selected]:shadow-none"
77
82
  ),
78
83
  children: [
79
84
  /* @__PURE__ */ i(
80
- q,
85
+ j,
81
86
  {
82
87
  className: r ? "order-last self-center" : "order-first self-center"
83
88
  }
84
89
  ),
85
- /* @__PURE__ */ i(z, { className: "min-w-0", children: /* @__PURE__ */ i(D, { className: "whitespace-normal normal-case", children: d(e.option) }) })
90
+ /* @__PURE__ */ i(q, { className: "min-w-0", children: /* @__PURE__ */ i(z, { className: "whitespace-normal normal-case", children: d(e.option) }) })
86
91
  ]
87
92
  }
88
93
  )
89
94
  }
90
95
  );
91
96
  }
92
- const X = ({
97
+ const F = ({
93
98
  field: e,
94
99
  validationRules: r,
95
100
  isDisabled: t,
96
101
  formHelpers: a
97
102
  }) => {
98
- const [l, o] = b(""), [f, N] = b(!1), [m, A] = b("card");
103
+ const [n, s] = b(""), [f, N] = b("none"), [m, V] = b("card");
99
104
  if (e.fieldType !== "virtualized_list") return null;
100
- const C = e.options ?? [], g = e.selectionMode ?? "multi", L = a.form.control, h = E(C, l, f);
105
+ const C = e.options ?? [], g = e.selectionMode ?? "multi", A = a.form.control, h = R(C, n, f);
101
106
  return /* @__PURE__ */ i(
102
- k,
107
+ O,
103
108
  {
104
109
  name: e.id,
105
- control: L,
110
+ control: A,
106
111
  disabled: t,
107
112
  rules: r,
108
113
  render: ({ field: u, fieldState: p }) => {
109
- const c = P(u.value), v = !!p.error, w = v ? p.error?.message : e.helpText, T = (n) => {
110
- if (t || n.isDisabled === !0)
114
+ const c = G(u.value), v = !!p.error, w = v ? p.error?.message : e.helpText, L = (l) => {
115
+ if (t || l.isDisabled === !0)
111
116
  return;
112
- const s = new Set(c);
113
- s.has(n.value) ? s.delete(n.value) : s.add(n.value), u.onChange(y(c, s, g));
114
- }, V = () => {
117
+ const o = new Set(c);
118
+ o.has(l.value) ? o.delete(l.value) : o.add(l.value), u.onChange(x(c, o, g));
119
+ }, T = () => {
115
120
  if (g === "single") {
116
- const s = h.find((O) => O.isDisabled !== !0);
117
- u.onChange(s ? [s.value] : []);
121
+ const o = h.find((D) => D.isDisabled !== !0);
122
+ u.onChange(o ? [o.value] : []);
118
123
  return;
119
124
  }
120
- const n = new Set(c);
121
- for (const s of h)
122
- s.isDisabled !== !0 && n.add(s.value);
123
- u.onChange(y(c, n, "multi"));
125
+ const l = new Set(c);
126
+ for (const o of h)
127
+ o.isDisabled !== !0 && l.add(o.value);
128
+ u.onChange(x(c, l, "multi"));
124
129
  };
125
- return /* @__PURE__ */ x("div", { "data-testid": M(e.id), children: [
130
+ return /* @__PURE__ */ S("div", { "data-testid": E(e.id), children: [
126
131
  /* @__PURE__ */ i(
127
132
  B,
128
133
  {
@@ -134,41 +139,41 @@ const X = ({
134
139
  searchLabel: e.label ? `Search ${e.label}` : "Search",
135
140
  showBack: !1,
136
141
  view: m,
137
- search: l,
138
- sortAlphabetically: f,
142
+ search: n,
143
+ sortDirection: f,
139
144
  selectedCount: c.length,
140
- allSelected: G(h, c),
141
- previewCodes: R(C, c),
142
- onSearchChange: o,
143
- onViewChange: A,
144
- onToggleSort: () => N((n) => !n),
145
- onSelectAll: V,
145
+ allSelected: _(h, c),
146
+ previewCodes: $(C, c),
147
+ onSearchChange: s,
148
+ onViewChange: V,
149
+ onToggleSort: () => N((l) => M(l)),
150
+ onSelectAll: T,
146
151
  onClear: () => u.onChange([]),
147
152
  children: /* @__PURE__ */ i(
148
153
  "div",
149
154
  {
150
155
  className: m === "card" ? "grid w-full grid-cols-[repeat(auto-fill,minmax(180px,1fr))] gap-3" : "flex w-full flex-col gap-2",
151
- children: h.map((n) => /* @__PURE__ */ i(
152
- _,
156
+ children: h.map((l) => /* @__PURE__ */ i(
157
+ H,
153
158
  {
154
- option: n,
155
- selected: c.includes(n.value),
156
- disabled: t || n.isDisabled === !0,
159
+ option: l,
160
+ selected: c.includes(l.value),
161
+ disabled: t || l.isDisabled === !0,
157
162
  view: m,
158
- onToggle: () => T(n)
163
+ onToggle: () => L(l)
159
164
  },
160
- n.value
165
+ l.value
161
166
  ))
162
167
  }
163
168
  )
164
169
  }
165
170
  ),
166
- w ? /* @__PURE__ */ i("p", { className: S("mt-1 text-xs", v ? "text-destructive" : "text-content-tertiary"), children: w }) : null
171
+ w ? /* @__PURE__ */ i("p", { className: y("mt-1 text-xs", v ? "text-destructive" : "text-content-tertiary"), children: w }) : null
167
172
  ] });
168
173
  }
169
174
  }
170
175
  );
171
176
  };
172
177
  export {
173
- X as VirtualizedListField
178
+ F as VirtualizedListField
174
179
  };
@@ -832,7 +832,7 @@
832
832
  border-color: var(--color-iris-border-violet);
833
833
  }
834
834
 
835
- /* Status overflow tooltip — menu wrap chrome (gradient fill + animated ring + arrow). */
835
+ /* Status overflow tooltip — white fill + iris animated ring (same as menu wrap). */
836
836
  .iris-menu-overflow-tooltip {
837
837
  --iris-border-angle: 0deg;
838
838
  position: relative;
@@ -842,10 +842,9 @@
842
842
  border: 0 !important;
843
843
  border-radius: 12px !important;
844
844
  padding: 8px 12px !important;
845
- background: linear-gradient(90deg, var(--color-iris-menu-surface-from) 0%, var(--color-iris-menu-surface-to) 100%) !important;
845
+ background: var(--color-surface-elevated) !important;
846
846
  color: var(--color-foreground-title) !important;
847
847
  box-shadow: var(--shadow-iris-menu), inset 0 0 0 1px var(--color-iris-border-violet);
848
- backdrop-filter: blur(3px);
849
848
  font-weight: 500;
850
849
  text-transform: none;
851
850
  }
@@ -870,7 +869,7 @@
870
869
  }
871
870
  }
872
871
  .iris-menu-overflow-tooltip > svg {
873
- fill: var(--color-iris-menu-surface-to) !important;
872
+ fill: var(--color-surface-elevated) !important;
874
873
  stroke: var(--color-iris-border-violet);
875
874
  stroke-width: 1px;
876
875
  }