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

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 (47) hide show
  1. package/dist/components/data/ag-grid-react/cell-renderers/editors/list-select-cell-editor.js +56 -42
  2. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.js +48 -45
  3. package/dist/components/data/ag-grid-react/cell-renderers/list-select-display-renderer.js +31 -33
  4. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +18 -17
  5. package/dist/components/data/ag-grid-react/editable-utils.d.ts +9 -1
  6. package/dist/components/data/ag-grid-react/editable-utils.js +46 -41
  7. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +3 -2
  8. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +3 -2
  9. package/dist/components/data/expandable-list-item/sku-picker-chrome.d.ts +2 -1
  10. package/dist/components/data/expandable-list-item/sku-picker-chrome.js +51 -40
  11. package/dist/components/data/expandable-list-item/useServerSkuInfinitePages.d.ts +2 -1
  12. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.catalog.d.ts +5 -4
  13. package/dist/components/data-display/chart/chart-scatter3d.d.ts +39 -0
  14. package/dist/components/data-display/chart/chart-scatter3d.js +180 -0
  15. package/dist/components/data-display/chart/chart.js +125 -112
  16. package/dist/components/data-display/chart/chart.utils.js +122 -92
  17. package/dist/components/feedback/tooltip/button-icon-tooltip.d.ts +4 -1
  18. package/dist/components/feedback/tooltip/button-icon-tooltip.js +14 -12
  19. package/dist/components/feedback/tooltip/tab-tooltip-render.js +3 -2
  20. package/dist/components/feedback/tooltip/use-overflow-tooltip.js +44 -36
  21. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  22. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  23. package/dist/components/flows/iris-chat/iris-chat-menu.js +100 -73
  24. package/dist/components/forms/choice-card/choice-card-percent.js +68 -50
  25. package/dist/components/forms/choice-card/choice-card.js +23 -23
  26. package/dist/components/forms/select/components/SelectMenuPanel.js +15 -15
  27. package/dist/components/forms/select/components/SelectTriggerValue.js +3 -2
  28. package/dist/components/forms/select/components/Submenu.js +3 -2
  29. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.d.ts +3 -0
  30. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.js +12 -0
  31. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +181 -125
  32. package/dist/components/layout/horizontal-scroller/horizontal-scroller.types.d.ts +2 -0
  33. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.d.ts +3 -1
  34. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.js +77 -67
  35. package/dist/components/primitives/iris/iris-insight-truncated-text.d.ts +3 -0
  36. package/dist/components/primitives/iris/iris-insight-truncated-text.js +33 -0
  37. package/dist/components/primitives/iris/iris.d.ts +2 -1
  38. package/dist/components/primitives/iris/iris.js +57 -67
  39. package/dist/components/primitives/iris/iris.types.d.ts +7 -0
  40. package/dist/components/primitives/stepper/internals/stepper-summary.js +5 -5
  41. package/dist/form-react/Fields/VirtualizedListField.js +69 -64
  42. package/dist/impact-nova-components.css +35 -8
  43. package/dist/impact-nova.css +1 -1
  44. package/dist/lib/alphabetical-sort.js +13 -0
  45. package/dist/llms/rules/installation.js +1 -1
  46. package/dist/llms/rules/requirements.js +1 -1
  47. package/package.json +2 -2
@@ -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
  }
@@ -1777,6 +1776,16 @@ html.iris-agent-session *:not(.iris-agent-cursor):not(.iris-agent-cursor *):not(
1777
1776
  overflow: hidden;
1778
1777
  }
1779
1778
 
1779
+ /* AG Grid 36 sticky left/right pin is trapped by overflow:hidden on the header
1780
+ row, so pinned headers scroll with the center columns. Keep the clip for
1781
+ unpinned lists; open overflow when a pin region has cells. */
1782
+ [data-component="ag-grid-react"][data-variant="list"]
1783
+ .ag-header-row:has(.ag-grid-pinned-left-cells .ag-header-cell),
1784
+ [data-component="ag-grid-react"][data-variant="list"]
1785
+ .ag-header-row:has(.ag-grid-pinned-right-cells .ag-header-cell) {
1786
+ overflow: visible;
1787
+ }
1788
+
1780
1789
  [data-component="ag-grid-react"][data-variant="list"] .ag-header-cell,
1781
1790
  [data-component="ag-grid-react"][data-variant="list"] .ag-header-group-cell {
1782
1791
  height: var(--in-ag-list-header-height);
@@ -1794,22 +1803,40 @@ html.iris-agent-session *:not(.iris-agent-cursor):not(.iris-agent-cursor *):not(
1794
1803
  border-radius: var(--in-ag-list-radius);
1795
1804
  }
1796
1805
 
1797
- [data-component="ag-grid-react"][data-variant="list"] .ag-pinned-left-header:has(.ag-header-cell) {
1806
+ [data-component="ag-grid-react"][data-variant="list"] .ag-pinned-left-header:has(.ag-header-cell),
1807
+ [data-component="ag-grid-react"][data-variant="list"]
1808
+ .ag-header-row
1809
+ > .ag-grid-pinned-left-cells:has(.ag-header-cell) {
1798
1810
  border-radius: var(--in-ag-list-radius) 0 0 var(--in-ag-list-radius);
1811
+ background-color: var(--color-surface-muted);
1812
+ z-index: 2;
1799
1813
  }
1800
1814
 
1801
1815
  [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-left-header .ag-header-cell) .ag-header-viewport,
1802
- [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-left-header .ag-header-cell) .ag-header-row {
1816
+ [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-left-header .ag-header-cell) .ag-header-row,
1817
+ [data-component="ag-grid-react"][data-variant="list"]:has(
1818
+ .ag-header-row > .ag-grid-pinned-left-cells .ag-header-cell
1819
+ )
1820
+ .ag-header-row {
1803
1821
  border-top-left-radius: 0;
1804
1822
  border-bottom-left-radius: 0;
1805
1823
  }
1806
1824
 
1807
- [data-component="ag-grid-react"][data-variant="list"] .ag-pinned-right-header:has(.ag-header-cell) {
1825
+ [data-component="ag-grid-react"][data-variant="list"] .ag-pinned-right-header:has(.ag-header-cell),
1826
+ [data-component="ag-grid-react"][data-variant="list"]
1827
+ .ag-header-row
1828
+ > .ag-grid-pinned-right-cells:has(.ag-header-cell) {
1808
1829
  border-radius: 0 var(--in-ag-list-radius) var(--in-ag-list-radius) 0;
1830
+ background-color: var(--color-surface-muted);
1831
+ z-index: 2;
1809
1832
  }
1810
1833
 
1811
1834
  [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-right-header .ag-header-cell) .ag-header-viewport,
1812
- [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-right-header .ag-header-cell) .ag-header-row {
1835
+ [data-component="ag-grid-react"][data-variant="list"]:has(.ag-pinned-right-header .ag-header-cell) .ag-header-row,
1836
+ [data-component="ag-grid-react"][data-variant="list"]:has(
1837
+ .ag-header-row > .ag-grid-pinned-right-cells .ag-header-cell
1838
+ )
1839
+ .ag-header-row {
1813
1840
  border-top-right-radius: 0;
1814
1841
  border-bottom-right-radius: 0;
1815
1842
  }