impact-nova 1.6.5 → 1.6.7

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.
package/README.md CHANGED
@@ -11,6 +11,9 @@
11
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg?style=flat&logo=typescript)](https://www.typescriptlang.org/)
12
12
  [![Tailwind CSS](https://img.shields.io/badge/Tailwind-3.4-38b2ac.svg?style=flat&logo=tailwind-css)](https://tailwindcss.com/)
13
13
  [![Radix UI](https://img.shields.io/badge/Radix%20UI-Primitives-white?style=flat&logo=radix-ui)](https://www.radix-ui.com/)
14
+ [![Internationalization](https://img.shields.io/badge/i18n-Built--in-059669.svg?style=flat)](#internationalization-i18n)
15
+ [![Documentation](https://img.shields.io/badge/Documentation-online-FF4785?style=flat&logo=storybook&logoColor=white)](https://impact-nova.iaproducts.ai/)
16
+ [![npm impact-nova-mcp](https://img.shields.io/npm/v/impact-nova-mcp?label=impact-nova-mcp&logo=npm)](https://www.npmjs.com/package/impact-nova-mcp)
14
17
 
15
18
  </div>
16
19
 
@@ -38,6 +41,20 @@ Impact Nova is built upon four core pillars that guide every component applicati
38
41
 
39
42
  ---
40
43
 
44
+ ## 📚 Documentation
45
+
46
+ Visit **[https://impact-nova.iaproducts.ai/](https://impact-nova.iaproducts.ai/)** to view the full documentation: component reference, interactive **React** examples, props and controls, and usage notes—all in the browser, with no local checkout required.
47
+
48
+ That documentation site is published with **Storybook** ([storybook.js.org](https://storybook.js.org/)), the same format many design systems use; you can treat the URL like any other docs hub even if you are not familiar with Storybook.
49
+
50
+ ### MCP server (`impact-nova-mcp`)
51
+
52
+ Use **[impact-nova-mcp on npm](https://www.npmjs.com/package/impact-nova-mcp)** if you want a **Model Context Protocol** (MCP) server for Impact Nova in **Cursor**, **Windsurf**, **Claude**, **Antigravity**, or other MCP-capable clients—component lists, specs, design tokens, codegen, and conventions wired for assistants.
53
+
54
+ What MCP is, what this server exposes, and how to install and configure your editor are documented in **[packages/mcp/README.md](packages/mcp/README.md)** in this repository.
55
+
56
+ ---
57
+
41
58
  ## 🚀 Getting Started
42
59
 
43
60
  Everything you need to install, configure, and start building with **Impact Nova**.
@@ -54,7 +71,7 @@ pnpm add impact-nova
54
71
  yarn add impact-nova
55
72
  ```
56
73
 
57
- > **Note on Peer Dependencies**:
74
+ > **Note on Peer Dependencies**:
58
75
  > You must also ensure `react`, `react-dom`, `ag-grid-react`, `ag-grid-enterprise`, and `highcharts` (if used) are installed in your project, as these are peer dependencies.
59
76
 
60
77
  ### Styles & Configuration
@@ -62,17 +79,15 @@ yarn add impact-nova
62
79
  Import the bundled CSS in your root entry file (e.g., `main.tsx`, `App.tsx`, or `layout.tsx`).
63
80
 
64
81
  ```tsx
65
- import React from 'react';
66
- import ReactDOM from 'react-dom/client';
82
+ import React from "react";
83
+ import ReactDOM from "react-dom/client";
67
84
 
68
85
  // ⚠️ Import styles before your App
69
- import 'impact-nova/dist/impact-nova.css';
86
+ import "impact-nova/dist/impact-nova.css";
70
87
 
71
- import App from './App';
88
+ import App from "./App";
72
89
 
73
- ReactDOM.createRoot(document.getElementById('root')!).render(
74
- <App />
75
- );
90
+ ReactDOM.createRoot(document.getElementById("root")!).render(<App />);
76
91
  ```
77
92
 
78
93
  ### Typography
@@ -80,15 +95,19 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
80
95
  Impact Nova looks best with **Manrope**. We recommend adding it to your project:
81
96
 
82
97
  1. **Import Font**:
98
+
83
99
  ```html
84
- <link href="https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap" rel="stylesheet" />
100
+ <link
101
+ href="https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap"
102
+ rel="stylesheet"
103
+ />
85
104
  ```
86
105
 
87
106
  2. **Configure Tailwind**:
88
107
  ```css
89
108
  @layer base {
90
109
  body {
91
- font-family: 'Manrope', sans-serif;
110
+ font-family: "Manrope", sans-serif;
92
111
  }
93
112
  }
94
113
  ```
@@ -102,7 +121,7 @@ Import components directly from the package. All components export strong TypeSc
102
121
  ### Core Components
103
122
 
104
123
  ```tsx
105
- import { Button, Card, DatePicker } from 'impact-nova';
124
+ import { Button, Card, DatePicker } from "impact-nova";
106
125
 
107
126
  export default function MyPage() {
108
127
  return (
@@ -122,7 +141,7 @@ export default function MyPage() {
122
141
  Impact Nova includes a custom-built icon library. Icons are treeshakeable and accept standard SVG props.
123
142
 
124
143
  ```tsx
125
- import { Icons } from 'impact-nova';
144
+ import { Icons } from "impact-nova";
126
145
 
127
146
  export function StatusBadge() {
128
147
  return (
@@ -139,7 +158,7 @@ export function StatusBadge() {
139
158
  You can import component props to ensure type safety in your own interfaces.
140
159
 
141
160
  ```tsx
142
- import { Button, type ButtonProps } from 'impact-nova';
161
+ import { Button, type ButtonProps } from "impact-nova";
143
162
 
144
163
  interface CustomActionProps extends ButtonProps {
145
164
  analyticsId: string;
@@ -157,7 +176,7 @@ Impact Nova supports multiple languages via a provider and message overrides. Wr
157
176
  **Locale packs** (German, Spanish, Hindi, Kannada) are exported so you can use them as-is or override only the strings you need:
158
177
 
159
178
  ```tsx
160
- import { ImpactNovaI18nProvider, de, defaultMessages } from 'impact-nova';
179
+ import { ImpactNovaI18nProvider, de, defaultMessages } from "impact-nova";
161
180
 
162
181
  // Use a full locale pack as-is
163
182
  function App() {
@@ -172,25 +191,25 @@ function App() {
172
191
  **Override only a few keys** by spreading a locale pack and then overriding specific sections or keys. The provider merges your `messages` over the built-in English defaults (or over the pack you pass), so you only need to provide the keys you want to change:
173
192
 
174
193
  ```tsx
175
- import { ImpactNovaI18nProvider, de } from 'impact-nova';
194
+ import { ImpactNovaI18nProvider, de } from "impact-nova";
176
195
 
177
196
  // German with custom labels for calendar only
178
197
  const messages = {
179
198
  ...de,
180
- calendar: { ...de.calendar, apply: 'Übernehmen', cancel: 'Schließen' },
199
+ calendar: { ...de.calendar, apply: "Übernehmen", cancel: "Schließen" },
181
200
  };
182
201
 
183
202
  <ImpactNovaI18nProvider locale="de" messages={messages}>
184
203
  <MyApp />
185
- </ImpactNovaI18nProvider>
204
+ </ImpactNovaI18nProvider>;
186
205
  ```
187
206
 
188
207
  **Tree-shakeable locale imports** (if you only need one language and want to avoid pulling others into your bundle):
189
208
 
190
209
  ```tsx
191
- import { de } from 'impact-nova/locale/de';
210
+ import { de } from "impact-nova/locale/de";
192
211
  // or
193
- import { de, es, hi, kn } from 'impact-nova/locale';
212
+ import { de, es, hi, kn } from "impact-nova/locale";
194
213
  ```
195
214
 
196
215
  - **`locale`**: BCP 47 code (e.g. `'en'`, `'de'`) used for date/number formatting. Supported: `en`, `en-US`, `en-GB`, `de`, `es`, `hi`, `kn`.
@@ -216,6 +235,7 @@ The library utilizes a modern, headless architecture pattern:
216
235
  Impact Nova provides a rich set of components structured for any enterprise use-case.
217
236
 
218
237
  ### 📝 Forms & Inputs
238
+
219
239
  - Button, Button Group
220
240
  - Checkbox, Radio Group, Switch
221
241
  - Input, Smart Input, Textarea
@@ -226,6 +246,7 @@ Impact Nova provides a rich set of components structured for any enterprise use-
226
246
  - Prompt, Form Group
227
247
 
228
248
  ### 🧭 Navigation
249
+
229
250
  - Sidebar, Navigation Bar
230
251
  - Tabs, Breadcrumb, Stepper
231
252
  - Card, Accordion, Nested List
@@ -233,6 +254,7 @@ Impact Nova provides a rich set of components structured for any enterprise use-
233
254
  - Dynamic Layout
234
255
 
235
256
  ### 💬 Feedback & Overlay
257
+
236
258
  - Alert, Alert Dialog, Dialog
237
259
  - Sheet, Drawer, Modal
238
260
  - Toast, Tooltip, Popover
@@ -240,6 +262,7 @@ Impact Nova provides a rich set of components structured for any enterprise use-
240
262
  - Loader, Skeleton, Progress Bar
241
263
 
242
264
  ### 📊 Data Display
265
+
243
266
  - Avatar, Badge, Tag, Chips
244
267
  - Calendar, Chart
245
268
  - Empty Container, Notification Panel
@@ -258,22 +281,30 @@ Impact Nova provides a rich set of components structured for any enterprise use-
258
281
  ## ✨ Credits & Contributors
259
282
 
260
283
  **Core Development**
284
+
261
285
  - Anil M
262
286
  - Ritesh Ranjan
287
+ - Manohar R
288
+ - Pratik Pradhan
289
+ - Balaji Utukuri
263
290
 
264
291
  **Design Architecture**
292
+
265
293
  - Jaymin Pancholi
266
294
  - Sudip Sarkar
267
295
 
268
296
  **UX & Product UI**
297
+
269
298
  - Kalyan
270
299
  - Vikram
271
300
  - Aditi Chaudhary
272
301
 
273
302
  **Inspiration**
303
+
274
304
  - Impact UI
275
305
 
276
306
  **Special Thanks**
307
+
277
308
  - Girish Pattana Setty
278
309
  - Himanshu K
279
310
  - Harish V
@@ -283,4 +314,3 @@ Impact Nova provides a rich set of components structured for any enterprise use-
283
314
  ## 📄 License
284
315
 
285
316
  Impact Nova is licensed under the [MIT License](LICENSE).
286
-
@@ -1,65 +1,66 @@
1
- import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
- import * as c from "react";
3
- import * as a from "@radix-ui/react-accordion";
1
+ import { jsx as e, jsxs as a } from "react/jsx-runtime";
2
+ import * as l from "react";
3
+ import * as o from "@radix-ui/react-accordion";
4
4
  import { ChevronRight as f } from "lucide-react";
5
5
  import { cn as n } from "../../lib/utils.js";
6
- import { Tooltip as p, TooltipTrigger as g, TooltipContent as h } from "./tooltip.js";
7
- import { useImpactNovaI18n as x } from "../../i18n/ImpactNovaI18nContext.js";
8
- const C = a.Root, v = c.forwardRef(({ className: o, ...t }, r) => /* @__PURE__ */ e(
9
- a.Item,
6
+ import { Tooltip as p, TooltipTrigger as g, TooltipContent as v } from "./tooltip.js";
7
+ import { useImpactNovaI18n as h } from "../../i18n/ImpactNovaI18nContext.js";
8
+ const C = o.Root, x = l.forwardRef(({ className: i, ...t }, r) => /* @__PURE__ */ e(
9
+ o.Item,
10
10
  {
11
11
  ref: r,
12
12
  "data-item": t.value,
13
13
  "data-disabled": t.disabled ? "" : void 0,
14
14
  className: n(
15
- "ia-accordion-item border-b rounded-lg bg-white border-b-[#D9DDE7]",
16
- o
15
+ "ia-accordion-item border rounded-lg bg-white border-[#D9DDE7]",
16
+ i
17
17
  ),
18
18
  ...t
19
19
  }
20
20
  ));
21
- v.displayName = "AccordionItem";
22
- const N = c.forwardRef(({ className: o, children: t, badge: r, rightActions: d, ...s }, l) => {
23
- const { t: m } = x();
24
- return /* @__PURE__ */ e(a.Header, { className: "flex", children: /* @__PURE__ */ i(
25
- a.Trigger,
21
+ x.displayName = "AccordionItem";
22
+ const u = l.forwardRef(({ className: i, children: t, badge: r, rightActions: s, ...d }, c) => {
23
+ const { t: m } = h();
24
+ return /* @__PURE__ */ e(o.Header, { className: "flex", style: { overflow: "visible" }, children: /* @__PURE__ */ a(
25
+ o.Trigger,
26
26
  {
27
- ref: l,
27
+ ref: c,
28
28
  className: n(
29
- "flex flex-1 items-center gap-3 px-4 py-2 text-sm font-semibold transition-all text-left [&[data-state=open]>div>svg]:-rotate-90",
30
- o
29
+ "flex flex-1 items-center gap-3 px-4 py-2 text-sm font-semibold transition-all text-left [&[data-state=open]>div>svg]:-rotate-90 focus-visible:outline-none",
30
+ i
31
31
  ),
32
- ...s,
32
+ style: { outline: "none" },
33
+ ...d,
33
34
  children: [
34
- /* @__PURE__ */ i(p, { children: [
35
+ /* @__PURE__ */ a(p, { children: [
35
36
  /* @__PURE__ */ e(g, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "flex items-center justify-center h-8 w-8 shrink-0 rounded-lg bg-secondary text-secondary-foreground transition-transform duration-200", children: /* @__PURE__ */ e(f, { className: "h-4 w-4 transition-transform duration-200" }) }) }),
36
- /* @__PURE__ */ e(h, { side: "top", variant: "tertiary", children: m("aria.toggle") })
37
+ /* @__PURE__ */ e(v, { side: "top", variant: "tertiary", children: m("aria.toggle") })
37
38
  ] }),
38
- /* @__PURE__ */ i("div", { className: "flex flex-1 items-center justify-between", children: [
39
- /* @__PURE__ */ i("div", { className: "flex items-center gap-3", children: [
39
+ /* @__PURE__ */ a("div", { className: "flex flex-1 items-center justify-between", children: [
40
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
40
41
  t,
41
42
  r
42
43
  ] }),
43
- d
44
+ s
44
45
  ] })
45
46
  ]
46
47
  }
47
48
  ) });
48
49
  });
49
- N.displayName = a.Trigger.displayName;
50
- const b = c.forwardRef(({ className: o, children: t, surfaceClassName: r, ...d }, s) => /* @__PURE__ */ e(
51
- a.Content,
50
+ u.displayName = o.Trigger.displayName;
51
+ const N = l.forwardRef(({ className: i, children: t, surfaceClassName: r, ...s }, d) => /* @__PURE__ */ e(
52
+ o.Content,
52
53
  {
53
- ref: s,
54
+ ref: d,
54
55
  className: n("overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down data-[state=open]:overflow-visible", r),
55
- ...d,
56
- children: /* @__PURE__ */ e("div", { className: n("px-4 pb-4 pt-2", o), children: t })
56
+ ...s,
57
+ children: /* @__PURE__ */ e("div", { className: n("px-4 pb-4 pt-2", i), children: t })
57
58
  }
58
59
  ));
59
- b.displayName = a.Content.displayName;
60
+ N.displayName = o.Content.displayName;
60
61
  export {
61
62
  C as Accordion,
62
- b as AccordionContent,
63
- v as AccordionItem,
64
- N as AccordionTrigger
63
+ N as AccordionContent,
64
+ x as AccordionItem,
65
+ u as AccordionTrigger
65
66
  };
@@ -1,111 +1,140 @@
1
- import { jsxs as k, jsx as m } from "react/jsx-runtime";
2
- import { lazy as E, useRef as L, useState as d, useCallback as h, useMemo as F, Suspense as V } from "react";
3
- import { ModuleRegistry as W, AllCommunityModule as _, ValidationModule as $ } from "ag-grid-community";
1
+ import { jsxs as P, jsx as a } from "react/jsx-runtime";
2
+ import { lazy as V, useRef as E, useState as p, useCallback as v, useMemo as F, useEffect as W, Suspense as _ } from "react";
3
+ import { ModuleRegistry as $, AllCommunityModule as q, ValidationModule as K } from "ag-grid-community";
4
4
  import { AllEnterpriseModule as U } from "ag-grid-enterprise";
5
- import { AgGridReact as w } from "ag-grid-react";
6
- import { customAgGridTheme as z } from "./theme.js";
7
- import { CustomHeader as J } from "./headers/custom-header.js";
8
- import { CustomHeaderGroup as q } from "./headers/custom-header-group.js";
9
- import { GridHeaderContext as B } from "./headers/context/grid-header-context.js";
10
- import { convertToAgGridFilterModel as K, getMultiFilterIndices as Q, convertFromAgGridFilterModel as X } from "./headers/utils/filter-utils.js";
11
- import { ColumnSettingsMenu as Y } from "./headers/column-menu/column-settings-menu.js";
12
- import { AG_GRID_VALUE_FORMATTERS as Z } from "./value-formatters.js";
5
+ import { AgGridReact as z } from "ag-grid-react";
6
+ import { customAgGridTheme as J } from "./theme.js";
7
+ import { CustomHeader as B } from "./headers/custom-header.js";
8
+ import { CustomHeaderGroup as Q } from "./headers/custom-header-group.js";
9
+ import { GridHeaderContext as X } from "./headers/context/grid-header-context.js";
10
+ import { convertToAgGridFilterModel as Y, getMultiFilterIndices as Z, convertFromAgGridFilterModel as ee } from "./headers/utils/filter-utils.js";
11
+ import { ColumnSettingsMenu as te } from "./headers/column-menu/column-settings-menu.js";
12
+ import { AG_GRID_VALUE_FORMATTERS as re } from "./value-formatters.js";
13
13
  /* empty css */
14
- const ee = E(() => import("./headers/advanced-filter/advanced-filter-dialog.js"));
15
- W.registerModules([_, U, $]);
16
- function ge({
17
- children: i,
18
- defaultColDef: n,
19
- defaultColGroupDef: l,
20
- columnDefs: p,
21
- valueFormatters: c,
22
- onGridReady: s,
23
- ...o
14
+ const ne = V(() => import("./headers/advanced-filter/advanced-filter-dialog.js"));
15
+ $.registerModules([q, U, K]);
16
+ function Fe({
17
+ children: c,
18
+ defaultColDef: l,
19
+ defaultColGroupDef: i,
20
+ columnDefs: f,
21
+ valueFormatters: d,
22
+ onGridReady: m,
23
+ ...u
24
24
  }) {
25
- const t = L(null), [u, M] = d(null), [v, A] = d(!1), [G, C] = d(null), [D, S] = d(!1), [y, b] = d(null), [I, x] = d(null), O = h((e) => {
26
- if (!t.current) return;
27
- const r = K(e);
28
- t.current.setFilterModel(r), t.current.onFilterChanged();
29
- }, []), f = F(() => ({
25
+ const r = E(null), s = E(null), [g, M] = p(null), [G, h] = p(!1), [y, x] = p(null), [R, S] = p(!1), [b, k] = p(null), [I, O] = p(null), D = v((e) => {
26
+ if (!r.current) return;
27
+ const t = Y(e);
28
+ r.current.setFilterModel(t), r.current.onFilterChanged();
29
+ }, []), C = F(() => ({
30
30
  openSearch: (e) => {
31
- if (!t.current) return;
32
- const r = t.current.getGridOption("context") || {};
33
- t.current.setGridOption("context", { ...r, activeSearchColumnId: e }), t.current.refreshHeader();
31
+ if (!r.current) return;
32
+ const t = r.current.getGridOption("context") || {};
33
+ r.current.setGridOption("context", { ...t, activeSearchColumnId: e }), r.current.refreshHeader();
34
34
  },
35
35
  closeSearch: () => {
36
- if (!t.current) return;
37
- const e = t.current.getGridOption("context") || {};
38
- t.current.setGridOption("context", { ...e, activeSearchColumnId: null }), t.current.refreshHeader();
36
+ if (!r.current) return;
37
+ const e = r.current.getGridOption("context") || {};
38
+ r.current.setGridOption("context", { ...e, activeSearchColumnId: null }), r.current.refreshHeader();
39
39
  },
40
40
  openAdvancedFilter: (e) => {
41
- C(e || null), A(!0);
41
+ x(e || null), h(!0);
42
42
  },
43
43
  closeAdvancedFilter: () => {
44
- A(!1), C(null);
44
+ h(!1), x(null);
45
45
  },
46
46
  applyAdvancedFilter: (e) => {
47
- O(e);
47
+ D(e);
48
48
  },
49
- openMenu: (e, r) => {
50
- b(e), x(r), S(!0);
49
+ openMenu: (e, t) => {
50
+ k(e), O(t), S(!0);
51
51
  },
52
52
  closeMenu: () => {
53
- S(!1), b(null), x(null);
53
+ S(!1), k(null), O(null);
54
+ },
55
+ activeMenuColumnId: b
56
+ }), [D, b]), H = v((e) => {
57
+ r.current = e.api, M(e.api), e.api.setGridOption("context", { activeSearchColumnId: null }), m && m(e);
58
+ }, [m]);
59
+ W(() => {
60
+ const e = s.current;
61
+ if (!e) return;
62
+ const t = (o) => {
63
+ if (o.key !== "Enter" && o.key !== " ") return;
64
+ const n = o.target;
65
+ if (!n.classList.contains("ag-cell") && !n.classList.contains("ag-header-cell")) return;
66
+ const A = n.querySelector(
67
+ 'button, [role="checkbox"], [role="switch"], [role="combobox"], [role="button"], [role="link"], a, input, select, textarea, .cursor-pointer'
68
+ );
69
+ A && (o.preventDefault(), o.stopPropagation(), A.click(), A.focus());
70
+ };
71
+ return e.addEventListener("keydown", t, !0), () => e.removeEventListener("keydown", t, !0);
72
+ }, []);
73
+ const N = F(() => ({
74
+ headerComponent: B,
75
+ ...l,
76
+ suppressHeaderKeyboardEvent: (e) => {
77
+ const { event: t } = e;
78
+ if (t.key === "Enter" || t.key === " ") {
79
+ const o = t.target.closest(".ag-header-cell");
80
+ if (o) {
81
+ const n = o.querySelector('[role="checkbox"], button, [role="switch"], input');
82
+ if (n)
83
+ return t.preventDefault(), n.click(), !0;
84
+ }
85
+ }
86
+ return l?.suppressHeaderKeyboardEvent?.(e) ?? !1;
54
87
  },
55
- activeMenuColumnId: y
56
- }), [O, y]), R = h((e) => {
57
- t.current = e.api, M(e.api), e.api.setGridOption("context", { activeSearchColumnId: null }), s && s(e);
58
- }, [s]), N = F(() => ({
59
- headerComponent: J,
60
- ...n,
61
88
  headerComponentParams: {
62
- ...n?.headerComponentParams
89
+ ...l?.headerComponentParams
63
90
  }
64
- }), [n]), j = F(() => ({
65
- headerGroupComponent: q,
66
- ...l,
91
+ }), [l]), j = F(() => ({
92
+ headerGroupComponent: Q,
93
+ ...i,
67
94
  headerGroupComponentParams: {
68
- ...l?.headerGroupComponentParams
95
+ ...i?.headerGroupComponentParams
69
96
  }
70
- }), [l]), T = F(() => ({
71
- ...Z,
97
+ }), [i]), L = F(() => ({
98
+ ...re,
72
99
  // Always available - value formatters
73
- ...o.components,
100
+ ...u.components,
74
101
  // User components override
75
- ...c
102
+ ...d
76
103
  // Optional custom formatters override defaults
77
- }), [c, o.components]), H = h((e) => {
104
+ }), [d, u.components]), T = v((e) => {
78
105
  if (e.value !== null && e.value !== void 0 && typeof e.value == "object") {
79
- const r = Object.entries(e.value).map(([g, a]) => a && typeof a == "object" && "value" in a ? a.value : typeof a != "object" && typeof a < "u" ? a : null).filter((g) => g != null);
80
- return r.length > 0 ? r.join(" ") : "";
106
+ const t = Object.entries(e.value).map(([o, n]) => n && typeof n == "object" && "value" in n ? n.value : typeof n != "object" && typeof n < "u" ? n : null).filter((o) => o != null);
107
+ return t.length > 0 ? t.join(" ") : "";
81
108
  }
82
109
  return e.value;
83
- }, []), P = h((e) => {
110
+ }, []), w = v((e) => {
84
111
  if (typeof e.value == "string") {
85
- const r = e.value.trim();
86
- if (r.startsWith("{") || r.startsWith("["))
112
+ const t = e.value.trim();
113
+ if (t.startsWith("{") || t.startsWith("["))
87
114
  try {
88
- return JSON.parse(r);
115
+ return JSON.parse(t);
89
116
  } catch {
90
117
  return e.value;
91
118
  }
92
119
  }
93
120
  return e.value;
94
121
  }, []);
95
- return /* @__PURE__ */ k(B.Provider, { value: f, children: [
96
- /* @__PURE__ */ m(
97
- w,
122
+ return /* @__PURE__ */ P(X.Provider, { value: C, children: [
123
+ /* @__PURE__ */ a("div", { ref: s, style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ a(
124
+ z,
98
125
  {
99
- theme: z,
126
+ theme: J,
100
127
  defaultColDef: N,
101
- columnDefs: p,
128
+ columnDefs: f,
102
129
  cellSelection: !0,
103
130
  defaultColGroupDef: j,
104
- onGridReady: R,
105
- components: T,
106
- processCellForClipboard: H,
107
- processCellFromClipboard: P,
131
+ onGridReady: H,
132
+ components: L,
133
+ processCellForClipboard: T,
134
+ processCellFromClipboard: w,
108
135
  ensureDomOrder: !0,
136
+ suppressHeaderFocus: !1,
137
+ suppressFocusAfterRefresh: !0,
109
138
  suppressGroupRowsSticky: !0,
110
139
  columnTypes: {
111
140
  numericColumn: {
@@ -129,78 +158,78 @@ function ge({
129
158
  filter: "agDateColumnFilter"
130
159
  }
131
160
  },
132
- ...o
161
+ ...u
133
162
  }
134
- ),
135
- i,
136
- /* @__PURE__ */ m(
137
- te,
163
+ ) }),
164
+ c,
165
+ /* @__PURE__ */ a(
166
+ oe,
138
167
  {
139
- isOpen: v,
140
- columnId: G,
141
- gridApi: u,
142
- onClose: f.closeAdvancedFilter,
143
- onApply: f.applyAdvancedFilter
168
+ isOpen: G,
169
+ columnId: y,
170
+ gridApi: g,
171
+ onClose: C.closeAdvancedFilter,
172
+ onApply: C.applyAdvancedFilter
144
173
  }
145
174
  ),
146
- /* @__PURE__ */ m(
147
- re,
175
+ /* @__PURE__ */ a(
176
+ le,
148
177
  {
149
- isOpen: D,
150
- columnId: y,
151
- gridApi: u,
178
+ isOpen: R,
179
+ columnId: b,
180
+ gridApi: g,
152
181
  anchor: I,
153
- onClose: f.closeMenu
182
+ onClose: C.closeMenu
154
183
  }
155
184
  )
156
185
  ] });
157
186
  }
158
- function te({
159
- isOpen: i,
160
- columnId: n,
161
- gridApi: l,
162
- onClose: p,
163
- onApply: c
187
+ function oe({
188
+ isOpen: c,
189
+ columnId: l,
190
+ gridApi: i,
191
+ onClose: f,
192
+ onApply: d
164
193
  }) {
165
- if (!i || !n || !l) return null;
166
- const s = l.getColumn(n);
167
- if (!s) return null;
168
- const o = s.getColDef(), t = o.headerComponentParams, u = Q(o), M = u.text !== -1 || u.number !== -1 || u.date !== -1, v = u.set !== -1, G = o.filter === "agMultiColumnFilter" && (M || v) ? "multi" : o.filter === "agNumberColumnFilter" ? "number" : o.filter === "agDateColumnFilter" ? "date" : o.filter === "agSetColumnFilter" || t?.selectOptions ? "select" : "text", C = X(l.getFilterModel());
169
- return /* @__PURE__ */ m(V, { fallback: null, children: /* @__PURE__ */ m(
170
- ee,
194
+ if (!c || !l || !i) return null;
195
+ const m = i.getColumn(l);
196
+ if (!m) return null;
197
+ const u = m.getColDef(), r = u.headerComponentParams, s = Z(u), g = s.text !== -1 || s.number !== -1 || s.date !== -1, M = s.set !== -1, h = u.filter === "agMultiColumnFilter" && (g || M) ? "multi" : u.filter === "agNumberColumnFilter" ? "number" : u.filter === "agDateColumnFilter" ? "date" : u.filter === "agSetColumnFilter" || r?.selectOptions ? "select" : "text", y = ee(i.getFilterModel());
198
+ return /* @__PURE__ */ a(_, { fallback: null, children: /* @__PURE__ */ a(
199
+ ne,
171
200
  {
172
- isOpen: i,
173
- onClose: p,
174
- onApply: c,
175
- columnId: n,
176
- columnLabel: o.headerName || n,
177
- columnType: G,
178
- selectOptions: t?.selectOptions,
179
- isMultiSelect: t?.isMultiSelect,
180
- initialModel: C,
181
- api: l
201
+ isOpen: c,
202
+ onClose: f,
203
+ onApply: d,
204
+ columnId: l,
205
+ columnLabel: u.headerName || l,
206
+ columnType: h,
207
+ selectOptions: r?.selectOptions,
208
+ isMultiSelect: r?.isMultiSelect,
209
+ initialModel: y,
210
+ api: i
182
211
  }
183
212
  ) });
184
213
  }
185
- function re({
186
- isOpen: i,
187
- columnId: n,
188
- gridApi: l,
189
- anchor: p,
190
- onClose: c
214
+ function le({
215
+ isOpen: c,
216
+ columnId: l,
217
+ gridApi: i,
218
+ anchor: f,
219
+ onClose: d
191
220
  }) {
192
- return !i || !n || !l ? null : /* @__PURE__ */ m(
193
- Y,
221
+ return !c || !l || !i ? null : /* @__PURE__ */ a(
222
+ te,
194
223
  {
195
- isOpen: i,
196
- columnId: n,
197
- gridApi: l,
198
- anchor: p,
199
- onClose: c
224
+ isOpen: c,
225
+ columnId: l,
226
+ gridApi: i,
227
+ anchor: f,
228
+ onClose: d
200
229
  }
201
230
  );
202
231
  }
203
232
  export {
204
- ge as AgGridWrapper,
205
- ge as default
233
+ Fe as AgGridWrapper,
234
+ Fe as default
206
235
  };