impact-nova 2.1.0-alpha.7 → 2.1.0-alpha.9

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 (108) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +6 -0
  2. package/dist/components/data/ag-grid-react/build-ag-grid-theme.d.ts +3 -0
  3. package/dist/components/data/ag-grid-react/cell-renderers/editors/input-cell-editor.js +58 -58
  4. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.d.ts +9 -0
  5. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.js +15 -0
  6. package/dist/components/data/ag-grid-react/headers/column-menu/column-settings-menu.js +78 -73
  7. package/dist/components/data/ag-grid-react/headers/custom-header.js +3 -1
  8. package/dist/components/data/ag-grid-react/headers/header-search-input.js +87 -91
  9. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  10. package/dist/components/data/ag-grid-react/index.js +109 -100
  11. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.d.ts +3 -2
  12. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.js +4 -3
  13. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.d.ts +3 -0
  14. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.js +10 -0
  15. package/dist/components/data/ag-grid-react/theme.d.ts +1 -0
  16. package/dist/components/data/ag-grid-react/theme.js +93 -21
  17. package/dist/components/data/data-table/column-indicator.d.ts +1 -1
  18. package/dist/components/data/data-table/column-indicator.js +15 -11
  19. package/dist/components/data/data-table/data-table-column-def-pin.d.ts +9 -4
  20. package/dist/components/data/data-table/data-table-column-def-pin.js +38 -38
  21. package/dist/components/data/data-table/data-table-saved-views.js +37 -37
  22. package/dist/components/data/data-table/data-table.js +78 -73
  23. package/dist/components/data/data-table/data-table.types.d.ts +7 -1
  24. package/dist/components/data/data-table/indicator-legend.d.ts +13 -2
  25. package/dist/components/data/data-table/indicator-legend.js +20 -17
  26. package/dist/components/data/data-table/pin-switch.js +9 -9
  27. package/dist/components/data/data-table/use-data-table-column-list-sync.js +92 -89
  28. package/dist/components/data/nested-list/nested-list-change-detection.d.ts +11 -0
  29. package/dist/components/data/nested-list/nested-list-change-detection.js +13 -0
  30. package/dist/components/data/nested-list/nested-list.js +107 -97
  31. package/dist/components/data-display/calendar/calendar.d.ts +1 -1
  32. package/dist/components/data-display/calendar/calendar.js +194 -189
  33. package/dist/components/data-display/chart/chart-palette.d.ts +16 -0
  34. package/dist/components/data-display/chart/chart-palette.js +28 -0
  35. package/dist/components/data-display/chart/chart.js +121 -115
  36. package/dist/components/data-display/chart/chart.utils.js +9 -6
  37. package/dist/components/data-display/chart/index.d.ts +1 -0
  38. package/dist/components/data-display/chart/index.js +15 -9
  39. package/dist/components/data-display/chart/resolve-highcharts-options.d.ts +3 -0
  40. package/dist/components/data-display/chart/resolve-highcharts-options.js +35 -0
  41. package/dist/components/data-display/statistics-card/statistics-card.color.d.ts +6 -0
  42. package/dist/components/data-display/statistics-card/statistics-card.color.js +19 -0
  43. package/dist/components/data-display/statistics-card/statistics-card.hooks.js +50 -48
  44. package/dist/components/data-display/statistics-card/statistics-card.js +127 -146
  45. package/dist/components/feedback/alert-dialog/alert-dialog.js +15 -15
  46. package/dist/components/feedback/dialog/dialog.js +3 -3
  47. package/dist/components/feedback/drawer/drawer.js +32 -32
  48. package/dist/components/feedback/sheet/sheet.js +8 -8
  49. package/dist/components/feedback/sheet/sheet.variants.js +1 -1
  50. package/dist/components/feedback/toast/toast.js +83 -92
  51. package/dist/components/flows/command-palette/command-palette-context.types.d.ts +5 -0
  52. package/dist/components/flows/command-palette/command-palette.d.ts +4 -16
  53. package/dist/components/flows/command-palette/command-palette.js +245 -258
  54. package/dist/components/flows/command-palette/command-palette.types.d.ts +9 -0
  55. package/dist/components/flows/command-palette/shortcut-overlay.js +6 -6
  56. package/dist/components/flows/filter-panel/filter-panel.d.ts +3 -2
  57. package/dist/components/flows/filter-panel/filter-panel.js +99 -104
  58. package/dist/components/flows/filter-strip/filter-summary.js +41 -41
  59. package/dist/components/flows/filter-strip/filter-tag-list.js +48 -48
  60. package/dist/components/flows/wizard/wizard.js +32 -32
  61. package/dist/components/forms/choice-card/choice-card.d.ts +2 -2
  62. package/dist/components/forms/choice-card/choice-card.js +156 -166
  63. package/dist/components/forms/combobox/combobox.js +70 -70
  64. package/dist/components/forms/date-picker/date-picker.js +31 -30
  65. package/dist/components/forms/file-upload/file-upload.js +146 -168
  66. package/dist/components/forms/prompt/prompt.js +47 -48
  67. package/dist/components/forms/select/components/SelectAllRow.js +14 -14
  68. package/dist/components/forms/select/components/SelectMenuFooter.js +12 -12
  69. package/dist/components/forms/select/components/SelectMenuHeader.js +44 -44
  70. package/dist/components/forms/select/components/SelectMenuListBody.js +22 -22
  71. package/dist/components/forms/select/components/SelectMenuPanel.js +8 -8
  72. package/dist/components/forms/select/components/SelectOptionRow.js +62 -62
  73. package/dist/components/forms/select/select.d.ts +5 -4
  74. package/dist/components/forms/select/select.js +123 -120
  75. package/dist/components/forms/select/select.types.d.ts +95 -204
  76. package/dist/components/forms/slider/slider.js +17 -17
  77. package/dist/components/forms/smart-input/smart-input.js +49 -49
  78. package/dist/components/forms/textarea/textarea.js +25 -25
  79. package/dist/components/layout/breadcrumb/breadcrumb.js +112 -118
  80. package/dist/components/layout/header/header.d.ts +5 -17
  81. package/dist/components/layout/header/header.js +113 -116
  82. package/dist/components/layout/header/header.types.d.ts +3 -0
  83. package/dist/components/layout/sidebar/sidebar.js +5 -5
  84. package/dist/components/layout/sidebar/sidebar.variants.js +1 -1
  85. package/dist/components/primitives/accordion/accordion.js +38 -41
  86. package/dist/components/primitives/kbd/kbd.variants.js +1 -1
  87. package/dist/i18n/defaultMessages.d.ts +2 -0
  88. package/dist/i18n/defaultMessages.js +6 -4
  89. package/dist/i18n/locales/de.js +2 -0
  90. package/dist/i18n/locales/es.js +2 -0
  91. package/dist/i18n/locales/hi.js +2 -0
  92. package/dist/i18n/locales/kn.js +2 -0
  93. package/dist/impact-nova-base.scss +8 -5
  94. package/dist/impact-nova-components.css +2 -2
  95. package/dist/impact-nova-tokens.scss +346 -189
  96. package/dist/impact-nova.css +1 -1
  97. package/dist/index.js +505 -499
  98. package/dist/lib/resolve-design-token-color.d.ts +5 -0
  99. package/dist/lib/resolve-design-token-color.js +12 -0
  100. package/dist/llms/rules/ag-grid.js +1 -1
  101. package/dist/llms/rules/installation.js +1 -1
  102. package/dist/llms/rules/requirements.js +1 -1
  103. package/dist/tailwind.config.js +297 -0
  104. package/dist/theme/tailwind-colors.js +199 -0
  105. package/dist/theme/tokens/chart-series-palette.json.d.ts +53 -0
  106. package/dist/theme/tokens/chart-series-palette.json.js +7 -0
  107. package/package.json +32 -259
  108. package/tailwind.config.js +0 -335
@@ -1,37 +1,38 @@
1
- import { jsxs as ye, jsx as v } from "react/jsx-runtime";
2
- import { lazy as ve, useRef as S, useState as j, useCallback as f, useMemo as y, useEffect as be, Suspense as xe } from "react";
3
- import { ModuleRegistry as Se, AllCommunityModule as Fe, ValidationModule as Me } from "ag-grid-community";
4
- import { AllEnterpriseModule as Ee } from "ag-grid-enterprise";
5
- import { AgGridReact as Ae } from "ag-grid-react";
6
- import { customAgGridTheme as Re } from "./theme.js";
7
- import { CustomHeader as Ge } from "./headers/custom-header.js";
8
- import { CustomHeaderGroup as ke } from "./headers/custom-header-group.js";
9
- import { DefaultTextCellRenderer as we } from "./cell-renderers/default-text-cell-renderer.js";
10
- import { GridHeaderContext as je } from "./headers/context/grid-header-context.js";
11
- import { convertToAgGridFilterModel as Ie, getMultiFilterIndices as Te, convertFromAgGridFilterModel as Oe } from "./headers/utils/filter-utils.js";
12
- import { ColumnSettingsMenu as Pe } from "./headers/column-menu/column-settings-menu.js";
13
- import { AG_GRID_VALUE_FORMATTERS as De } from "./value-formatters.js";
14
- import { useGridAutoSizeStrategyOnResize as He } from "./useGridAutoSizeStrategyOnResize.js";
15
- import { subscribeGridApiEvent as it, subscribeGridApiEvents as st } from "./grid-api-event-subscription.js";
16
- import { notifyColumnIndicatorSync as $ } from "./notify-column-indicator-sync.js";
1
+ import { jsxs as be, jsx as v } from "react/jsx-runtime";
2
+ import { lazy as xe, useRef as S, useState as T, useEffect as $, useCallback as f, useMemo as y, Suspense as Se } from "react";
3
+ import { ModuleRegistry as Fe, AllCommunityModule as Me, ValidationModule as Ee } from "ag-grid-community";
4
+ import { AllEnterpriseModule as Ae } from "ag-grid-enterprise";
5
+ import { AgGridReact as Re } from "ag-grid-react";
6
+ import { customAgGridTheme as Ge } from "./theme.js";
7
+ import { syncAgGridThemeMode as ke } from "./sync-ag-grid-theme-mode.js";
8
+ import { CustomHeader as we } from "./headers/custom-header.js";
9
+ import { CustomHeaderGroup as Te } from "./headers/custom-header-group.js";
10
+ import { DefaultTextCellRenderer as je } from "./cell-renderers/default-text-cell-renderer.js";
11
+ import { GridHeaderContext as Ie } from "./headers/context/grid-header-context.js";
12
+ import { convertToAgGridFilterModel as Oe, getMultiFilterIndices as Pe, convertFromAgGridFilterModel as De } from "./headers/utils/filter-utils.js";
13
+ import { ColumnSettingsMenu as He } from "./headers/column-menu/column-settings-menu.js";
14
+ import { AG_GRID_VALUE_FORMATTERS as Le } from "./value-formatters.js";
15
+ import { useGridAutoSizeStrategyOnResize as Ne } from "./useGridAutoSizeStrategyOnResize.js";
16
+ import { subscribeGridApiEvent as ct, subscribeGridApiEvents as ut } from "./grid-api-event-subscription.js";
17
+ import { notifyColumnIndicatorSync as q } from "./notify-column-indicator-sync.js";
17
18
  /* empty css */
18
- const Le = ve(
19
+ const _e = xe(
19
20
  () => import("./headers/advanced-filter/advanced-filter-dialog.js").then((l) => ({
20
21
  default: l.AdvancedFilterDialog
21
22
  }))
22
23
  );
23
- Se.registerModules([Fe, Ee, Me]);
24
+ Fe.registerModules([Me, Ae, Ee]);
24
25
  const F = "", N = "";
25
- function q(l) {
26
+ function z(l) {
26
27
  return l.getColumns()?.some((n) => n.getColDef().headerCheckboxSelection) ?? !1;
27
28
  }
28
- const z = (l) => {
29
+ const B = (l) => {
29
30
  if (!l) return;
30
31
  const n = l.cellRendererParams?.splits;
31
32
  if (Array.isArray(n) && n.length > 0) return n;
32
33
  const i = l.cellEditorParams?.splits;
33
34
  if (Array.isArray(i) && i.length > 0) return i;
34
- }, B = (l, n) => {
35
+ }, J = (l, n) => {
35
36
  const i = [];
36
37
  for (const g of n) {
37
38
  const m = g?.field?.split(".").pop();
@@ -56,13 +57,13 @@ const z = (l) => {
56
57
  i.push("");
57
58
  }
58
59
  return i;
59
- }, J = (l) => {
60
+ }, X = (l) => {
60
61
  if (typeof navigator < "u" && navigator.clipboard?.writeText) {
61
- navigator.clipboard.writeText(l).catch(() => X(l));
62
+ navigator.clipboard.writeText(l).catch(() => Q(l));
62
63
  return;
63
64
  }
64
- X(l);
65
- }, X = (l) => {
65
+ Q(l);
66
+ }, Q = (l) => {
66
67
  if (typeof document > "u") return;
67
68
  const n = document.createElement("textarea");
68
69
  n.value = l, n.setAttribute("readonly", ""), n.style.position = "fixed", n.style.top = "0", n.style.left = "0", n.style.opacity = "0", n.style.pointerEvents = "none", document.body.appendChild(n);
@@ -72,7 +73,7 @@ const z = (l) => {
72
73
  document.body.removeChild(n);
73
74
  }
74
75
  };
75
- function nt({
76
+ function it({
76
77
  children: l,
77
78
  defaultColDef: n,
78
79
  defaultColGroupDef: i,
@@ -83,17 +84,25 @@ function nt({
83
84
  onFilterChanged: b,
84
85
  onSelectionChanged: h,
85
86
  onModelUpdated: M,
86
- ensureDomOrder: I = !1,
87
- autoSizeStrategy: T,
87
+ ensureDomOrder: j = !1,
88
+ autoSizeStrategy: I,
88
89
  tooltipShowMode: O = "whenTruncated",
89
90
  tooltipShowDelay: P = 500,
90
- tooltipHideDelay: Q = 5e3,
91
- tooltipInteraction: Y = !0,
91
+ tooltipHideDelay: Y = 5e3,
92
+ tooltipInteraction: Z = !0,
93
+ themeOverride: ee,
92
94
  ...C
93
95
  }) {
94
- const a = S(null), D = S(null), [H, _] = j(null);
95
- He(H, D, T);
96
- const [Z, V] = j(!1), [ee, W] = j(null), [te, K] = j(!1), E = S(null), L = S(null), A = S(null), re = f(() => [], []), ne = y(() => ({
96
+ const a = S(null), D = S(null), [H, _] = T(null);
97
+ Ne(H, D, I), $(() => {
98
+ const e = document.documentElement, t = () => {
99
+ ke(e.classList.contains("dark") ? "dark" : "light", e);
100
+ };
101
+ t();
102
+ const o = new MutationObserver(t);
103
+ return o.observe(e, { attributes: !0, attributeFilter: ["class"] }), () => o.disconnect();
104
+ }, []);
105
+ const [te, V] = T(!1), [re, W] = T(null), [ne, K] = T(!1), E = S(null), L = S(null), A = S(null), oe = f(() => [], []), le = y(() => ({
97
106
  numericColumn: {
98
107
  cellClass: "ag-right-aligned-cell",
99
108
  headerClass: "ag-right-aligned-header",
@@ -118,12 +127,12 @@ function nt({
118
127
  openSearch: (e) => {
119
128
  if (!a.current) return;
120
129
  const t = a.current.getGridOption("context") || {};
121
- a.current.setGridOption("context", { ...t, activeSearchColumnId: e }), a.current.refreshHeader(), $(a.current);
130
+ a.current.setGridOption("context", { ...t, activeSearchColumnId: e }), a.current.refreshHeader(), q(a.current);
122
131
  },
123
132
  closeSearch: () => {
124
133
  if (!a.current) return;
125
134
  const e = a.current.getGridOption("context") || {};
126
- a.current.setGridOption("context", { ...e, activeSearchColumnId: null }), a.current.refreshHeader(), $(a.current);
135
+ a.current.setGridOption("context", { ...e, activeSearchColumnId: null }), a.current.refreshHeader(), q(a.current);
127
136
  },
128
137
  openAdvancedFilter: (e) => {
129
138
  W(e || null), V(!0);
@@ -133,7 +142,7 @@ function nt({
133
142
  },
134
143
  applyAdvancedFilter: (e) => {
135
144
  if (!a.current) return;
136
- const t = Ie(e);
145
+ const t = Oe(e);
137
146
  a.current.setFilterModel(t), a.current.onFilterChanged(), a.current.refreshHeader();
138
147
  },
139
148
  openMenu: (e, t, o = "column") => {
@@ -149,32 +158,32 @@ function nt({
149
158
  get activeMenuVariant() {
150
159
  return A.current;
151
160
  }
152
- }), []), oe = f((e) => {
161
+ }), []), ie = f((e) => {
153
162
  a.current = e.api, _(e.api);
154
163
  const t = e.api.getGridOption("context") || {};
155
164
  e.api.setGridOption("context", { ...t, activeSearchColumnId: null }), c && c(e);
156
- }, [c]), le = f(
165
+ }, [c]), se = f(
157
166
  (e) => {
158
167
  a.current = null, _(null), u?.(e);
159
168
  },
160
169
  [u]
161
- ), ie = f(
170
+ ), ae = f(
162
171
  (e) => {
163
172
  e.api.getGridOption("context")?.activeSearchColumnId || e.api.refreshHeader(), b?.(e);
164
173
  },
165
174
  [b]
166
- ), se = f(
175
+ ), ce = f(
167
176
  (e) => {
168
- q(e.api) && e.api.refreshHeader(), h?.(e);
177
+ z(e.api) && e.api.refreshHeader(), h?.(e);
169
178
  },
170
179
  [h]
171
- ), ae = f(
180
+ ), ue = f(
172
181
  (e) => {
173
- e.api.getGridOption("rowModelType") !== "serverSide" && q(e.api) && e.api.refreshHeader(), M?.(e);
182
+ e.api.getGridOption("rowModelType") !== "serverSide" && z(e.api) && e.api.refreshHeader(), M?.(e);
174
183
  },
175
184
  [M]
176
185
  );
177
- be(() => {
186
+ $(() => {
178
187
  const e = D.current;
179
188
  if (!e) return;
180
189
  const t = (o) => {
@@ -188,12 +197,12 @@ function nt({
188
197
  };
189
198
  return e.addEventListener("keydown", t, !0), () => e.removeEventListener("keydown", t, !0);
190
199
  }, []);
191
- const ce = y(() => ({
192
- headerComponent: Ge,
200
+ const de = y(() => ({
201
+ headerComponent: we,
193
202
  // Default cell renderer wraps text in a span so display:flex centering
194
203
  // and text-overflow:ellipsis both work (ellipsis doesn't work on
195
204
  // anonymous flex text nodes, but works on flex child elements).
196
- cellRenderer: we,
205
+ cellRenderer: je,
197
206
  ...n,
198
207
  suppressHeaderKeyboardEvent: (e) => {
199
208
  const { event: t } = e, o = t.target;
@@ -212,25 +221,25 @@ function nt({
212
221
  headerComponentParams: {
213
222
  ...n?.headerComponentParams
214
223
  }
215
- }), [n]), ue = y(() => ({
216
- headerGroupComponent: ke,
224
+ }), [n]), pe = y(() => ({
225
+ headerGroupComponent: Te,
217
226
  ...i,
218
227
  headerGroupComponentParams: {
219
228
  ...i?.headerGroupComponentParams
220
229
  }
221
- }), [i]), de = y(() => ({
222
- ...De,
230
+ }), [i]), fe = y(() => ({
231
+ ...Le,
223
232
  // Always available - value formatters
224
233
  ...C.components,
225
234
  // User components override
226
235
  ...m
227
236
  // Optional custom formatters override defaults
228
- }), [m, C.components]), pe = f((e) => {
237
+ }), [m, C.components]), me = f((e) => {
229
238
  const t = e.value;
230
239
  if (t == null || typeof t != "object") return t;
231
- const o = z(e.column?.getColDef());
240
+ const o = B(e.column?.getColDef());
232
241
  if (o && o.length > 0) {
233
- const r = B(t, o);
242
+ const r = J(t, o);
234
243
  if (o.length === 1) {
235
244
  const d = o[0]?.field?.split(".").pop(), x = d ? t[d] : void 0;
236
245
  return x && typeof x == "object" && "value" in x ? x.value ?? "" : r[0];
@@ -239,7 +248,7 @@ function nt({
239
248
  }
240
249
  const s = Object.entries(t).map(([, r]) => r && typeof r == "object" && "value" in r ? r.value : typeof r != "object" && typeof r < "u" ? r : null).filter((r) => r != null);
241
250
  return s.length === 0 ? "" : s.length === 1 ? s[0] : s.join(F);
242
- }, []), fe = f((e) => {
251
+ }, []), ge = f((e) => {
243
252
  if (typeof e.value == "string") {
244
253
  const t = e.value.trim();
245
254
  if (t.startsWith("{") || t.startsWith("["))
@@ -250,10 +259,10 @@ function nt({
250
259
  }
251
260
  }
252
261
  return e.value;
253
- }, []), me = f((e) => {
262
+ }, []), he = f((e) => {
254
263
  const t = e?.data ?? "";
255
264
  if (!t.includes(F) && !t.includes(N)) {
256
- J(t);
265
+ X(t);
257
266
  return;
258
267
  }
259
268
  const o = [], s = t.split(`
@@ -270,19 +279,19 @@ function nt({
270
279
  continue;
271
280
  }
272
281
  for (let p = 0; p < U; p++) {
273
- const Ce = k.map((w) => !w.isSplit && w.slots.length === 1 ? w.slots[0] : w.slots[p] ?? "");
274
- o.push(Ce.join(" "));
282
+ const ve = k.map((w) => !w.isSplit && w.slots.length === 1 ? w.slots[0] : w.slots[p] ?? "");
283
+ o.push(ve.join(" "));
275
284
  }
276
285
  }
277
- J(o.join(`
286
+ X(o.join(`
278
287
  `));
279
288
  }, []), G = f((e) => {
280
289
  const t = e.value;
281
290
  if (t == null) return "";
282
291
  if (typeof t != "object") return String(t);
283
- const o = z(e.column?.getColDef());
292
+ const o = B(e.column?.getColDef());
284
293
  if (o && o.length > 0) {
285
- const r = B(t, o);
294
+ const r = J(t, o);
286
295
  return o.length === 1 ? r[0] : r.join(`
287
296
  `);
288
297
  }
@@ -298,64 +307,64 @@ function nt({
298
307
  }
299
308
  return s.length === 0 ? "" : s.length === 1 ? s[0] : s.join(`
300
309
  `);
301
- }, []), ge = y(() => ({
310
+ }, []), Ce = y(() => ({
302
311
  processCellCallback: G,
303
312
  ...C.defaultCsvExportParams ?? {}
304
- }), [G, C.defaultCsvExportParams]), he = y(() => ({
313
+ }), [G, C.defaultCsvExportParams]), ye = y(() => ({
305
314
  processCellCallback: G,
306
315
  ...C.defaultExcelExportParams ?? {}
307
316
  }), [G, C.defaultExcelExportParams]);
308
- return /* @__PURE__ */ ye(je.Provider, { value: R, children: [
317
+ return /* @__PURE__ */ be(Ie.Provider, { value: R, children: [
309
318
  /* @__PURE__ */ v("div", { ref: D, "data-component": "ag-grid-react", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ v(
310
- Ae,
319
+ Re,
311
320
  {
312
- theme: Re,
313
- defaultColDef: ce,
321
+ theme: ee ?? Ge,
322
+ defaultColDef: de,
314
323
  columnDefs: g,
315
324
  cellSelection: !0,
316
- defaultColGroupDef: ue,
317
- onGridReady: oe,
318
- onGridPreDestroyed: le,
319
- onFilterChanged: ie,
320
- onSelectionChanged: se,
321
- onModelUpdated: ae,
322
- components: de,
325
+ defaultColGroupDef: pe,
326
+ onGridReady: ie,
327
+ onGridPreDestroyed: se,
328
+ onFilterChanged: ae,
329
+ onSelectionChanged: ce,
330
+ onModelUpdated: ue,
331
+ components: fe,
323
332
  tooltipShowMode: O,
324
333
  tooltipShowDelay: P,
325
- tooltipHideDelay: Q,
326
- tooltipInteraction: Y,
327
- processCellForClipboard: pe,
328
- processCellFromClipboard: fe,
329
- sendToClipboard: me,
330
- ensureDomOrder: I,
334
+ tooltipHideDelay: Y,
335
+ tooltipInteraction: Z,
336
+ processCellForClipboard: me,
337
+ processCellFromClipboard: ge,
338
+ sendToClipboard: he,
339
+ ensureDomOrder: j,
331
340
  suppressHeaderFocus: !1,
332
341
  suppressFocusAfterRefresh: !0,
333
342
  suppressGroupRowsSticky: !0,
334
343
  hidePaddedHeaderRows: !0,
335
344
  suppressServerSideFullWidthLoadingRow: !0,
336
- columnTypes: ne,
337
- autoSizeStrategy: T,
345
+ columnTypes: le,
346
+ autoSizeStrategy: I,
338
347
  ...C,
339
- defaultCsvExportParams: ge,
340
- defaultExcelExportParams: he,
341
- getMainMenuItems: re
348
+ defaultCsvExportParams: Ce,
349
+ defaultExcelExportParams: ye,
350
+ getMainMenuItems: oe
342
351
  }
343
352
  ) }),
344
353
  l,
345
354
  /* @__PURE__ */ v(
346
- Ne,
355
+ Ve,
347
356
  {
348
- isOpen: Z,
349
- columnId: ee,
357
+ isOpen: te,
358
+ columnId: re,
350
359
  gridApi: H,
351
360
  onClose: R.closeAdvancedFilter,
352
361
  onApply: R.applyAdvancedFilter
353
362
  }
354
363
  ),
355
364
  /* @__PURE__ */ v(
356
- _e,
365
+ We,
357
366
  {
358
- isOpen: te,
367
+ isOpen: ne,
359
368
  columnId: E.current,
360
369
  gridApi: H,
361
370
  anchor: L.current,
@@ -365,7 +374,7 @@ function nt({
365
374
  )
366
375
  ] });
367
376
  }
368
- function Ne({
377
+ function Ve({
369
378
  isOpen: l,
370
379
  columnId: n,
371
380
  gridApi: i,
@@ -375,9 +384,9 @@ function Ne({
375
384
  if (!l || !n || !i) return null;
376
385
  const c = i.getColumn(n);
377
386
  if (!c) return null;
378
- const u = c.getColDef(), b = u.headerComponentParams, h = Te(u), M = h.text !== -1 || h.number !== -1 || h.date !== -1, I = h.set !== -1, O = u.filter === "agMultiColumnFilter" && (M || I) ? "multi" : u.filter === "agNumberColumnFilter" ? "number" : u.filter === "agDateColumnFilter" ? "date" : u.filter === "agSetColumnFilter" || b?.selectOptions ? "select" : "text", P = Oe(i.getFilterModel());
379
- return /* @__PURE__ */ v(xe, { fallback: null, children: /* @__PURE__ */ v(
380
- Le,
387
+ const u = c.getColDef(), b = u.headerComponentParams, h = Pe(u), M = h.text !== -1 || h.number !== -1 || h.date !== -1, j = h.set !== -1, O = u.filter === "agMultiColumnFilter" && (M || j) ? "multi" : u.filter === "agNumberColumnFilter" ? "number" : u.filter === "agDateColumnFilter" ? "date" : u.filter === "agSetColumnFilter" || b?.selectOptions ? "select" : "text", P = De(i.getFilterModel());
388
+ return /* @__PURE__ */ v(Se, { fallback: null, children: /* @__PURE__ */ v(
389
+ _e,
381
390
  {
382
391
  isOpen: l,
383
392
  onClose: g,
@@ -392,7 +401,7 @@ function Ne({
392
401
  }
393
402
  ) });
394
403
  }
395
- function _e({
404
+ function We({
396
405
  isOpen: l,
397
406
  columnId: n,
398
407
  gridApi: i,
@@ -401,7 +410,7 @@ function _e({
401
410
  onClose: c
402
411
  }) {
403
412
  return !l || !n || !i ? null : /* @__PURE__ */ v(
404
- Pe,
413
+ He,
405
414
  {
406
415
  isOpen: l,
407
416
  columnId: n,
@@ -413,7 +422,7 @@ function _e({
413
422
  );
414
423
  }
415
424
  export {
416
- nt as AgGridWrapper,
417
- it as subscribeGridApiEvent,
418
- st as subscribeGridApiEvents
425
+ it as AgGridWrapper,
426
+ ct as subscribeGridApiEvent,
427
+ ut as subscribeGridApiEvents
419
428
  };
@@ -1,7 +1,8 @@
1
1
  import { GridApi } from 'ag-grid-community';
2
2
  /**
3
3
  * Column-picker indicators read `activeSearchColumnId` from grid context.
4
- * Opening/closing inline header search only updates context + refreshHeader,
5
- * so notify indicator listeners through the existing filterChanged channel.
4
+ * Opening/closing inline header search only updates context + refreshHeader.
5
+ * Notify column-list listeners via the indicator bus — NOT `onFilterChanged`,
6
+ * which would refetch SSRM rows when the filter model is unchanged.
6
7
  */
7
8
  export declare function notifyColumnIndicatorSync<TData = unknown>(gridApi: GridApi<TData>): void;
@@ -1,6 +1,7 @@
1
- function o(n) {
2
- n.isDestroyed() || n.onFilterChanged("api");
1
+ import { emitColumnIndicatorSync as o } from "./column-indicator-sync-bus.js";
2
+ function i(n) {
3
+ n.isDestroyed() || o();
3
4
  }
4
5
  export {
5
- o as notifyColumnIndicatorSync
6
+ i as notifyColumnIndicatorSync
6
7
  };
@@ -0,0 +1,3 @@
1
+ export type AgGridThemeMode = "light" | "dark";
2
+ /** Sync AG Grid Quartz theme mode on document roots (see ag-grid theming docs). */
3
+ export declare function syncAgGridThemeMode(mode: AgGridThemeMode, root?: HTMLElement): () => void;
@@ -0,0 +1,10 @@
1
+ const t = "data-ag-theme-mode";
2
+ function o(n, u = document.documentElement) {
3
+ const i = u.getAttribute(t), e = document.body, r = e?.getAttribute(t) ?? null;
4
+ return u.setAttribute(t, n), e?.setAttribute(t, n), () => {
5
+ i == null ? u.removeAttribute(t) : u.setAttribute(t, i), e && (r == null ? e.removeAttribute(t) : e.setAttribute(t, r));
6
+ };
7
+ }
8
+ export {
9
+ o as syncAgGridThemeMode
10
+ };
@@ -1,2 +1,3 @@
1
1
  import { Theme } from 'ag-grid-enterprise';
2
+ /** Generated from src/theme/ag-grid/param-map.json + tokens/light.json + dark.json — do not edit by hand. */
2
3
  export declare const customAgGridTheme: Theme;
@@ -1,30 +1,49 @@
1
- import { themeQuartz as e, iconSetMaterial as r } from "ag-grid-enterprise";
2
- const t = e.withPart(r).withParams({
1
+ import { themeQuartz as e, iconSetMaterial as o } from "ag-grid-enterprise";
2
+ const d = e.withPart(o).withParams({
3
3
  accentColor: "#4259EE",
4
- advancedFilterBuilderButtonBarBorder: !0,
4
+ backgroundColor: "#FFFFFF",
5
5
  borderColor: "#D9DDE7",
6
- browserColorScheme: "light",
7
- cellEditingBorder: !0,
8
- chartMenuPanelWidth: 260,
9
6
  checkboxCheckedBackgroundColor: "#ECEEFD",
10
7
  checkboxCheckedBorderColor: "#4259EE",
11
8
  checkboxCheckedShapeColor: "#4259EE",
12
- checkboxIndeterminateBackgroundColor: "transparent",
13
9
  checkboxIndeterminateBorderColor: "#4259EE",
14
10
  checkboxIndeterminateShapeColor: "#4259EE",
11
+ chromeBackgroundColor: "#FFFFFF",
12
+ foregroundColor: "#0D152C",
13
+ headerBackgroundColor: "#F5F6FA",
14
+ headerTextColor: "#0D152C",
15
+ selectedRowBackgroundColor: "#ECEEFD",
16
+ headerRowBorder: {
17
+ style: "solid",
18
+ width: 1,
19
+ color: "#D9DDE7"
20
+ },
21
+ rowBorder: {
22
+ style: "solid",
23
+ width: 1,
24
+ color: "#D9DDE7"
25
+ },
26
+ menuBackgroundColor: "#FFFFFF",
27
+ menuTextColor: "#1F2B4D",
28
+ tooltipBackgroundColor: "#1F2B4D",
29
+ tooltipTextColor: "#FFFFFF",
30
+ pinnedRowBackgroundColor: "#F4F1F9",
31
+ pinnedSourceRowBackgroundColor: "#F4F1F9",
32
+ menuShadow: "#00000040 0px 0px 2px 0px",
33
+ checkboxIndeterminateBackgroundColor: "transparent",
34
+ advancedFilterBuilderButtonBarBorder: !0,
35
+ cellEditingBorder: !0,
36
+ chartMenuPanelWidth: 260,
15
37
  columnBorder: !0,
16
38
  columnDropCellBorder: !0,
17
39
  fontFamily: "inherit",
18
40
  fontWeight: "inherit",
19
41
  footerRowBorder: !0,
20
- foregroundColor: "#0D152C",
21
- headerBackgroundColor: "#F5F6FA",
22
42
  headerColumnBorder: !0,
23
43
  headerFontFamily: "inherit",
24
44
  headerFontSize: 14,
25
45
  headerHeight: 40,
26
46
  headerFontWeight: 700,
27
- headerRowBorder: { style: "solid", width: 1, color: "#D9DDE7" },
28
47
  headerVerticalPaddingScale: 1,
29
48
  headerColumnResizeHandleWidth: 0,
30
49
  inputBorder: !1,
@@ -32,22 +51,75 @@ const t = e.withPart(r).withParams({
32
51
  inputFocusBorder: !1,
33
52
  inputFocusShadow: "none",
34
53
  focusShadow: "none",
35
- rowBorder: { style: "solid", width: 1, color: "#D9DDE7" },
36
54
  tabBarBorder: !0,
37
55
  wrapperBorder: !0,
38
56
  wrapperBorderRadius: 0,
39
57
  spacing: 9,
40
- menuBackgroundColor: "#FFFFFF",
41
58
  menuBorder: !1,
42
- menuShadow: "#00000040 0px 0px 2px 0px",
43
- menuTextColor: "#1F2B4D",
44
- tooltipBackgroundColor: "#1F2B4D",
45
- tooltipTextColor: "#FFFFFF",
46
59
  tooltipBorder: !1,
47
- pinnedRowBackgroundColor: "#F4F1F9",
48
- pinnedSourceRowBackgroundColor: "#F4F1F9",
49
- pinnedRowBorder: !1
50
- });
60
+ pinnedRowBorder: !1,
61
+ browserColorScheme: "light"
62
+ }, "light").withParams({
63
+ accentColor: "#E5E5E5",
64
+ backgroundColor: "#0A0A0A",
65
+ borderColor: "#282828",
66
+ checkboxCheckedBackgroundColor: "#262626",
67
+ checkboxCheckedBorderColor: "#E5E5E5",
68
+ checkboxCheckedShapeColor: "#E5E5E5",
69
+ checkboxIndeterminateBorderColor: "#E5E5E5",
70
+ checkboxIndeterminateShapeColor: "#E5E5E5",
71
+ chromeBackgroundColor: "#171717",
72
+ foregroundColor: "#FAFAFA",
73
+ headerBackgroundColor: "#262626",
74
+ headerTextColor: "#FAFAFA",
75
+ selectedRowBackgroundColor: "#262626",
76
+ headerRowBorder: {
77
+ style: "solid",
78
+ width: 1,
79
+ color: "#282828"
80
+ },
81
+ rowBorder: {
82
+ style: "solid",
83
+ width: 1,
84
+ color: "#282828"
85
+ },
86
+ menuBackgroundColor: "#262626",
87
+ menuTextColor: "#FAFAFA",
88
+ tooltipBackgroundColor: "#FAFAFA",
89
+ tooltipTextColor: "#171717",
90
+ pinnedRowBackgroundColor: "#171717",
91
+ pinnedSourceRowBackgroundColor: "#171717",
92
+ menuShadow: "hsl(0 0% 0% / 0.35) 0px 0px 4px 0px",
93
+ checkboxIndeterminateBackgroundColor: "transparent",
94
+ advancedFilterBuilderButtonBarBorder: !0,
95
+ cellEditingBorder: !0,
96
+ chartMenuPanelWidth: 260,
97
+ columnBorder: !0,
98
+ columnDropCellBorder: !0,
99
+ fontFamily: "inherit",
100
+ fontWeight: "inherit",
101
+ footerRowBorder: !0,
102
+ headerColumnBorder: !0,
103
+ headerFontFamily: "inherit",
104
+ headerFontSize: 14,
105
+ headerHeight: 40,
106
+ headerFontWeight: 700,
107
+ headerVerticalPaddingScale: 1,
108
+ headerColumnResizeHandleWidth: 0,
109
+ inputBorder: !1,
110
+ inputDisabledBorder: !1,
111
+ inputFocusBorder: !1,
112
+ inputFocusShadow: "none",
113
+ focusShadow: "none",
114
+ tabBarBorder: !0,
115
+ wrapperBorder: !0,
116
+ wrapperBorderRadius: 0,
117
+ spacing: 9,
118
+ menuBorder: !1,
119
+ tooltipBorder: !1,
120
+ pinnedRowBorder: !1,
121
+ browserColorScheme: "dark"
122
+ }, "dark");
51
123
  export {
52
- t as customAgGridTheme
124
+ d as customAgGridTheme
53
125
  };
@@ -1,4 +1,4 @@
1
- export type IndicatorType = 'sort' | 'filter';
1
+ export type IndicatorType = 'sort' | 'filter' | 'nonSavable';
2
2
  interface ColumnIndicatorProps {
3
3
  /** Type of indicator - determines color and label */
4
4
  type: IndicatorType;
@@ -1,28 +1,32 @@
1
- import { jsx as n } from "react/jsx-runtime";
1
+ import { jsx as i } from "react/jsx-runtime";
2
2
  import { cn as e } from "../../../lib/utils.js";
3
3
  import { useImpactNovaI18n as c } from "../../../i18n/use-impact-nova-i18n.js";
4
4
  const s = ({
5
- type: r,
6
- className: l
5
+ type: l,
6
+ className: r
7
7
  }) => {
8
- const { t: o } = c(), t = {
8
+ const { t: a } = c(), t = {
9
9
  sort: {
10
10
  colorClass: "bg-indicator-sort",
11
- label: o("dataTable.indicatorSortedAriaLabel")
11
+ label: a("dataTable.indicatorSortedAriaLabel")
12
12
  },
13
13
  filter: {
14
14
  colorClass: "bg-indicator-filter",
15
- label: o("dataTable.indicatorFilteredAriaLabel")
15
+ label: a("dataTable.indicatorFilteredAriaLabel")
16
+ },
17
+ nonSavable: {
18
+ colorClass: "bg-content-secondary",
19
+ label: a("dataTable.indicatorNonSavableAriaLabel")
16
20
  }
17
- }, { colorClass: i, label: a } = t[r];
18
- return /* @__PURE__ */ n(
21
+ }, { colorClass: n, label: o } = t[l];
22
+ return /* @__PURE__ */ i(
19
23
  "span",
20
24
  {
21
25
  role: "img",
22
26
  "data-component": "column-indicator",
23
- className: e("w-2 h-2 rounded-[2px] inline-block shrink-0", i, l),
24
- title: a,
25
- "aria-label": a
27
+ className: e("w-2 h-2 rounded-[2px] inline-block shrink-0", n, r),
28
+ title: o,
29
+ "aria-label": o
26
30
  }
27
31
  );
28
32
  };