@versini/ui-datagrid 3.0.12 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,12 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { DataGridContext, clsx } from "./926.js";
7
- import { useRef, useContext, useLayoutEffect } from "./511.js";
6
+ import clsx from "clsx";
7
+ import { useContext, useLayoutEffect, useRef } from "react";
8
+ import { DataGridContext } from "./430.js";
9
+
8
10
 
9
11
 
10
12
  /**
@@ -13,12 +15,14 @@ import { useRef, useContext, useLayoutEffect } from "./511.js";
13
15
  * are provided, or define their own grid otherwise.
14
16
  *
15
17
  * @param className - Additional class name to merge
18
+ *
16
19
  */ function getBodyClass(className) {
17
20
  return clsx("contents", className);
18
21
  }
19
22
 
20
23
 
21
24
 
25
+
22
26
  /**
23
27
  * Snap a CSS pixel value to the nearest device pixel.
24
28
  *
@@ -36,7 +40,7 @@ import { useRef, useContext, useLayoutEffect } from "./511.js";
36
40
  // Guard against invalid DPR values.
37
41
  const dpr = Number.isFinite(devicePixelRatio) && devicePixelRatio > 0 ? devicePixelRatio : 1;
38
42
  /**
39
- * Note: `window.devicePixelRatio` can be < 1 in some zoom/scaling scenarios.
43
+ * NOTE: `window.devicePixelRatio` can be < 1 in some zoom/scaling scenarios.
40
44
  * We intentionally accept any DPR > 0 rather than clamping to 1 so that we
41
45
  * still snap to the real device pixel grid.
42
46
  */ const quantum = 1 / dpr;
@@ -1,9 +1,9 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { createContext } from "./511.js";
6
+ import { createContext } from "react";
7
7
 
8
8
 
9
9
 
@@ -12,4 +12,3 @@ const DataGridContext = createContext({
12
12
  });
13
13
 
14
14
  export { DataGridContext };
15
- export { default as clsx } from "clsx";
@@ -1,5 +1,5 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
@@ -1,10 +1,11 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { clsx } from "./926.js";
7
- import { BlurEffects, CellWrapper } from "./46.js";
6
+ import clsx from "clsx";
7
+ import { BlurEffects, CellWrapper } from "./799.js";
8
+
8
9
 
9
10
 
10
11
 
@@ -60,6 +61,35 @@ const getTextColorClassesForHeaderFooter = ({ mode, hasBlur })=>clsx({
60
61
  "dark:border-table-light": isSys(mode),
61
62
  "dark:border-table-dark": isAlt(mode)
62
63
  });
64
+ /**
65
+ * Hover classes for body rows.
66
+ *
67
+ * The hover lifts both the background and the text color so the highlighted row
68
+ * reads as a single, cohesive change (mirroring the light-mode behavior where
69
+ * the font color shifts too).
70
+ *
71
+ * The shade is tuned per surface so the lift stays proportional:
72
+ * - Dark surfaces (slate-900 base) only step up to `table-dark-hover`
73
+ * (slate-700) instead of the much brighter `surface-medium` (slate-500),
74
+ * which felt harsh against very dark tables, and brighten the text to
75
+ * `copy-lighter` (white).
76
+ * - Light surfaces (slate-300 base) keep the established `surface-medium`
77
+ * (slate-500) background with `copy-light` (slate-200) text.
78
+ *
79
+ * Pairing matches `getBorderClasses`/`getSurfaceBackgroundClasses` so the hover
80
+ * always tracks the active surface, including the OS-driven `dark:` flips that
81
+ * `system` and `alt-system` perform.
82
+ *
83
+ */ const getRowHoverClasses = ({ mode })=>clsx(/**
84
+ * Smooth the hover so quick mouse sweeps fade rather than flash. Animating
85
+ * the row's background- and (inherited) text-color is enough; cells stay
86
+ * transparent and follow the row's transitioning color.
87
+ */ "transition-colors duration-300 ease-in-out motion-reduce:transition-none", {
88
+ "hover:bg-table-dark-hover hover:text-copy-lighter": isDarkish(mode),
89
+ "hover:bg-surface-medium hover:text-copy-light": isLightish(mode),
90
+ "dark:hover:bg-surface-medium dark:hover:text-copy-light": isSys(mode),
91
+ "dark:hover:bg-table-dark-hover dark:hover:text-copy-lighter": isAlt(mode)
92
+ });
63
93
  /**
64
94
  * Blur effect classes for sticky elements.
65
95
  */ const getBlurClasses = ({ blurEffect })=>clsx({
@@ -68,9 +98,9 @@ const getTextColorClassesForHeaderFooter = ({ mode, hasBlur })=>clsx({
68
98
  "backdrop-blur-lg": blurEffect === BlurEffects.LARGE
69
99
  });
70
100
  /**
71
- * Loading text classes for loading state. Rendered as a high-contrast pill
72
- * with a fixed dark background and light text so the message stays legible
73
- * against the blurred content behind it regardless of the grid mode.
101
+ * Loading text classes for loading state. Rendered as a high-contrast pill with
102
+ * a fixed dark background and light text so the message stays legible against
103
+ * the blurred content behind it regardless of the grid mode.
74
104
  */ const getLoadingTextClasses = ()=>"px-5 py-2 rounded-full shadow-lg text-sm font-semibold bg-surface-darker text-copy-light";
75
105
  /**
76
106
  * Overlay classes for loading state. Uses z-30/z-40 to layer above the sticky
@@ -170,7 +200,9 @@ const ROW_LAYOUT = "group grid items-center";
170
200
  return clsx(ROW_LAYOUT, className);
171
201
  }
172
202
  const borderClasses = isLastRow !== undefined ? isLastRow ? "border-b border-b-transparent dark:border-b-transparent" : "border-b" : "border-b last:border-0";
173
- return clsx(ROW_LAYOUT, borderClasses, "hover:bg-surface-medium hover:text-copy-light", getBorderClasses({
203
+ return clsx(ROW_LAYOUT, borderClasses, getRowHoverClasses({
204
+ mode
205
+ }), getBorderClasses({
174
206
  mode
175
207
  }), className);
176
208
  };
@@ -101,8 +101,8 @@ export type DataGridHeaderProps = {
101
101
  } & React.HTMLAttributes<HTMLDivElement>;
102
102
  export type DataGridBodyProps = ({
103
103
  /**
104
- * If true, applies styles for an empty state (e.g. removing extra row borders).
105
- * Used when there are no rows to display.
104
+ * If true, applies styles for an empty state (e.g. removing extra row
105
+ * borders). Used when there are no rows to display.
106
106
  */
107
107
  noData: true;
108
108
  /**
@@ -115,8 +115,8 @@ export type DataGridBodyProps = ({
115
115
  noDataText?: string;
116
116
  } | {
117
117
  /**
118
- * If true, applies styles for an empty state (e.g. removing extra row borders).
119
- * Used when there are no rows to display.
118
+ * If true, applies styles for an empty state (e.g. removing extra row
119
+ * borders). Used when there are no rows to display.
120
120
  * @default false
121
121
  */
122
122
  noData?: false;
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { jsxs, Fragment, useState, useCallback, useMemo, jsx } from "../511.js";
7
- import { BlurEffects } from "../46.js";
8
- import { getDataGridClasses } from "../298.js";
9
- import { DataGridContext } from "../926.js";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { useCallback, useMemo, useState } from "react";
8
+ import { BlurEffects } from "../799.js";
9
+ import { getDataGridClasses } from "../91.js";
10
+ import { DataGridContext } from "../430.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -172,4 +175,4 @@ import { DataGridContext } from "../926.js";
172
175
 
173
176
 
174
177
  export { DataGrid };
175
- export { DataGridContext } from "../926.js";
178
+ export { DataGridContext } from "../430.js";
@@ -1,9 +1,12 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { useState, useLayoutEffect, useRef, jsx } from "../511.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useLayoutEffect, useRef, useState } from "react";
8
+
9
+
7
10
 
8
11
 
9
12
  const DEFAULT_ANIMATION_DURATION = 300;
@@ -4,5 +4,6 @@
4
4
  * are provided, or define their own grid otherwise.
5
5
  *
6
6
  * @param className - Additional class name to merge
7
+ *
7
8
  */
8
9
  export declare function getBodyClass(className?: string): string;
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { useRef, useContext, jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { getBodyClass, useColumnMeasurement } from "../131.js";
9
- import { CellWrapper } from "../46.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useContext, useRef } from "react";
8
+ import { DataGridContext } from "../430.js";
9
+ import { getBodyClass, useColumnMeasurement } from "../197.js";
10
+ import { CellWrapper } from "../799.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -1,11 +1,12 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { getCellRole, getCellClasses } from "../298.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { DataGridContext } from "../430.js";
8
+ import { getCellRole, getCellClasses } from "../91.js";
9
+
9
10
 
10
11
 
11
12
 
@@ -1,13 +1,18 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
+ import { jsx, jsxs } from "react/jsx-runtime";
6
7
  import { IconSort, IconSortDown, IconSortUp } from "@versini/ui-icons";
7
- import { jsxs, jsx } from "../511.js";
8
- import { DataGridContext, clsx } from "../926.js";
9
- import { BlurEffects } from "../46.js";
10
- import { getCellClasses, getTextColorClassesForHeaderFooter } from "../298.js";
8
+ import clsx from "clsx";
9
+ import { BlurEffects } from "../799.js";
10
+ import { getCellClasses, getTextColorClassesForHeaderFooter } from "../91.js";
11
+ import { DataGridContext } from "../430.js";
12
+
13
+
14
+
15
+
11
16
 
12
17
 
13
18
 
@@ -1,9 +1,9 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
6
 
7
7
 
8
8
 
9
- export { BlurEffects, CellWrapper, SortDirections, ThemeModes } from "../46.js";
9
+ export { BlurEffects, CellWrapper, SortDirections, ThemeModes } from "../799.js";
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { useLayoutEffect, useRef, useEffect, jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { CellWrapper } from "../46.js";
9
- import { getFooterClasses } from "../298.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useLayoutEffect, useRef } from "react";
8
+ import { DataGridContext } from "../430.js";
9
+ import { CellWrapper } from "../799.js";
10
+ import { getFooterClasses } from "../91.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -34,7 +37,14 @@ DataGridFooter.displayName = "DataGridFooter";
34
37
  /**
35
38
  * Register this footer with the parent DataGrid on mount. This enables sticky
36
39
  * footer behavior regardless of nesting depth.
37
- */ useEffect(()=>{
40
+ *
41
+ * useLayoutEffect (not useEffect) so registration — and therefore
42
+ * effectiveStickyFooter — happens BEFORE the first paint. React flushes the
43
+ * resulting parent state update synchronously before paint, so the grid's
44
+ * first paint is already the sticky layout. With a passive effect the first
45
+ * paint would be the non-sticky layout and flip one frame later, producing a
46
+ * visible reposition on load.
47
+ */ useLayoutEffect(()=>{
38
48
  ctx.registerFooter?.();
39
49
  return ()=>{
40
50
  ctx.unregisterFooter?.();
@@ -51,10 +61,23 @@ DataGridFooter.displayName = "DataGridFooter";
51
61
  if (!element || !ctx.stickyFooter || !ctx.setFooterHeight) {
52
62
  return;
53
63
  }
64
+ /**
65
+ * Initial synchronous measurement so the scrollable content's
66
+ * paddingBottom is correct on the FIRST paint. React flushes this state
67
+ * update before paint, so there is no one-frame layout shift (the same
68
+ * approach useColumnMeasurement uses for column widths). The
69
+ * ResizeObserver below still handles later dynamic changes.
70
+ *
71
+ * Both paths round to integer px. getBoundingClientRect().height (here)
72
+ * and the observer's borderBoxSize.blockSize (below) can report slightly
73
+ * different sub-pixel values for the same box; rounding keeps them in
74
+ * agreement so the observer's first callback doesn't overwrite this value
75
+ * with a fractional one and trigger a second shift.
76
+ */ ctx.setFooterHeight(Math.round(element.getBoundingClientRect().height));
54
77
  const observer = new ResizeObserver((entries)=>{
55
78
  const height = entries[0]?.borderBoxSize?.[0]?.blockSize;
56
79
  if (height !== undefined) {
57
- ctx.setFooterHeight?.(height);
80
+ ctx.setFooterHeight?.(Math.round(height));
58
81
  }
59
82
  });
60
83
  observer.observe(element);
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { jsxs, useLayoutEffect, useId, useRef, useEffect, jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { CellWrapper } from "../46.js";
9
- import { getCaptionClasses, getHeaderClasses } from "../298.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { useEffect, useId, useLayoutEffect, useRef } from "react";
8
+ import { DataGridContext } from "../430.js";
9
+ import { CellWrapper } from "../799.js";
10
+ import { getCaptionClasses, getHeaderClasses } from "../91.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -38,7 +41,14 @@ DataGridHeader.displayName = "DataGridHeader";
38
41
  /**
39
42
  * Register this header with the parent DataGrid on mount. This enables sticky
40
43
  * header behavior regardless of nesting depth.
41
- */ useEffect(()=>{
44
+ *
45
+ * useLayoutEffect (not useEffect) so registration — and therefore
46
+ * effectiveStickyHeader — happens BEFORE the first paint. React flushes the
47
+ * resulting parent state update synchronously before paint, so the grid's
48
+ * first paint is already the sticky layout. With a passive effect the first
49
+ * paint would be the non-sticky layout and flip one frame later, producing a
50
+ * visible reposition on load.
51
+ */ useLayoutEffect(()=>{
42
52
  ctx.registerHeader?.();
43
53
  return ()=>{
44
54
  ctx.unregisterHeader?.();
@@ -70,10 +80,25 @@ DataGridHeader.displayName = "DataGridHeader";
70
80
  if (!element || !ctx.stickyHeader || !ctx.setHeaderHeight) {
71
81
  return;
72
82
  }
83
+ /**
84
+ * Initial synchronous measurement so the scrollable content's paddingTop
85
+ * is correct on the FIRST paint. React flushes this state update before
86
+ * paint, so there is no one-frame layout shift (the same approach
87
+ * useColumnMeasurement uses for column widths). The ResizeObserver below
88
+ * still handles later dynamic changes (text wrap, font load, etc.).
89
+ *
90
+ * Both paths round to integer px. getBoundingClientRect().height (here)
91
+ * and the observer's borderBoxSize.blockSize (below) can report slightly
92
+ * different sub-pixel values for the same box; rounding keeps them in
93
+ * agreement so the observer's first callback doesn't overwrite this value
94
+ * with a fractional one and trigger a second shift. Integer rounding is
95
+ * coarser than useColumnMeasurement's device-pixel snapping (1 / DPR), but
96
+ * it is enough here: padding only needs to be stable, not pixel-perfect.
97
+ */ ctx.setHeaderHeight(Math.round(element.getBoundingClientRect().height));
73
98
  const observer = new ResizeObserver((entries)=>{
74
99
  const height = entries[0]?.borderBoxSize?.[0]?.blockSize;
75
100
  if (height !== undefined) {
76
- ctx.setHeaderHeight?.(height);
101
+ ctx.setHeaderHeight?.(Math.round(height));
77
102
  }
78
103
  });
79
104
  observer.observe(element);
@@ -1,7 +1,7 @@
1
1
  export type DataGridInfiniteBodyProps<T> = ({
2
2
  /**
3
- * If true, displays an empty state instead of infinite scroll content.
4
- * When noData is true, data, children, and scroll-related props are optional.
3
+ * If true, displays an empty state instead of infinite scroll content. When
4
+ * noData is true, data, children, and scroll-related props are optional.
5
5
  */
6
6
  noData: true;
7
7
  /**
@@ -10,7 +10,8 @@ export type DataGridInfiniteBodyProps<T> = ({
10
10
  data?: T[];
11
11
  /**
12
12
  * Render function for each row. Should return a DataGridRow element. The
13
- * consumer is responsible for providing the key prop on the returned element.
13
+ * consumer is responsible for providing the key prop on the returned
14
+ * element.
14
15
  */
15
16
  children?: (item: T, index: number) => React.ReactNode;
16
17
  /**
@@ -29,7 +30,8 @@ export type DataGridInfiniteBodyProps<T> = ({
29
30
  data: T[];
30
31
  /**
31
32
  * Render function for each row. Should return a DataGridRow element. The
32
- * consumer is responsible for providing the key prop on the returned element.
33
+ * consumer is responsible for providing the key prop on the returned
34
+ * element.
33
35
  */
34
36
  children: (item: T, index: number) => React.ReactNode;
35
37
  noDataText?: never;
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { useMemo, useContext, useImperativeHandle, useState, useCallback, useRef, useEffect, jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { CellWrapper } from "../46.js";
9
- import { getBodyClass, useColumnMeasurement } from "../131.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
8
+ import { DataGridContext } from "../430.js";
9
+ import { CellWrapper } from "../799.js";
10
+ import { getBodyClass, useColumnMeasurement } from "../197.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -1,12 +1,15 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { react, jsx } from "../511.js";
7
- import { DataGridContext } from "../926.js";
8
- import { CellWrapper } from "../46.js";
9
- import { getRowClasses } from "../298.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import react from "react";
8
+ import { DataGridContext } from "../430.js";
9
+ import { CellWrapper } from "../799.js";
10
+ import { getRowClasses } from "../91.js";
11
+
12
+
10
13
 
11
14
 
12
15
 
@@ -1,9 +1,9 @@
1
1
  /*!
2
- @versini/ui-datagrid v3.0.12
2
+ @versini/ui-datagrid v3.1.1
3
3
  © 2026 gizmette.com
4
4
  */
5
5
 
6
- import { SortDirections } from "../46.js";
6
+ import { SortDirections } from "../799.js";
7
7
 
8
8
 
9
9
  /**
@@ -233,4 +233,4 @@ import { SortDirections } from "../46.js";
233
233
 
234
234
 
235
235
  export { getNextSortConfig, getOppositeSortDirection, sortByBoolean, sortByDate, sortByNumber, sortByString, sortItems, toggleSortDirection };
236
- export { SortDirections } from "../46.js";
236
+ export { SortDirections } from "../799.js";
@@ -28,6 +28,29 @@ export declare const getHeaderFooterBackgroundClasses: ({ hasBlur, sticky, }: {
28
28
  export declare const getBorderClasses: ({ mode }: {
29
29
  mode: ThemeMode;
30
30
  }) => string;
31
+ /**
32
+ * Hover classes for body rows.
33
+ *
34
+ * The hover lifts both the background and the text color so the highlighted row
35
+ * reads as a single, cohesive change (mirroring the light-mode behavior where
36
+ * the font color shifts too).
37
+ *
38
+ * The shade is tuned per surface so the lift stays proportional:
39
+ * - Dark surfaces (slate-900 base) only step up to `table-dark-hover`
40
+ * (slate-700) instead of the much brighter `surface-medium` (slate-500),
41
+ * which felt harsh against very dark tables, and brighten the text to
42
+ * `copy-lighter` (white).
43
+ * - Light surfaces (slate-300 base) keep the established `surface-medium`
44
+ * (slate-500) background with `copy-light` (slate-200) text.
45
+ *
46
+ * Pairing matches `getBorderClasses`/`getSurfaceBackgroundClasses` so the hover
47
+ * always tracks the active surface, including the OS-driven `dark:` flips that
48
+ * `system` and `alt-system` perform.
49
+ *
50
+ */
51
+ export declare const getRowHoverClasses: ({ mode }: {
52
+ mode: ThemeMode;
53
+ }) => string;
31
54
  /**
32
55
  * Blur effect classes for sticky elements.
33
56
  */
@@ -35,9 +58,9 @@ export declare const getBlurClasses: ({ blurEffect }: {
35
58
  blurEffect?: BlurEffect;
36
59
  }) => string;
37
60
  /**
38
- * Loading text classes for loading state. Rendered as a high-contrast pill
39
- * with a fixed dark background and light text so the message stays legible
40
- * against the blurred content behind it regardless of the grid mode.
61
+ * Loading text classes for loading state. Rendered as a high-contrast pill with
62
+ * a fixed dark background and light text so the message stays legible against
63
+ * the blurred content behind it regardless of the grid mode.
41
64
  */
42
65
  export declare const getLoadingTextClasses: () => string;
43
66
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/ui-datagrid",
3
- "version": "3.0.12",
3
+ "version": "3.1.1",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -98,5 +98,5 @@
98
98
  "sideEffects": [
99
99
  "**/*.css"
100
100
  ],
101
- "gitHead": "fc3839da4f630dd7954e8d9537f5cbf1762f9d85"
101
+ "gitHead": "4fa14b05aa9384b4ab44800ac9bcc70c3211bec9"
102
102
  }
package/dist/511.js DELETED
@@ -1,9 +0,0 @@
1
- /*!
2
- @versini/ui-datagrid v3.0.12
3
- © 2026 gizmette.com
4
- */
5
-
6
-
7
-
8
- export { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
- export { createContext, default as react, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";