impact-nova 2.2.8 → 2.3.0

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 (124) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-header-dom.js +6 -8
  2. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +1 -1
  3. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +25 -13
  4. package/dist/components/data/ag-grid-react/headers/custom-header.js +1 -1
  5. package/dist/components/data/ag-grid-react/headers/custom-inner-header-group.js +7 -7
  6. package/dist/components/data/ag-grid-react/headers/utils/filter-utils.js +9 -9
  7. package/dist/components/data/ag-grid-react/strip-column-min-width-constraints.d.ts +3 -0
  8. package/dist/components/data/data-table/data-table.d.ts +1 -1
  9. package/dist/components/data/data-table/data-table.js +41 -39
  10. package/dist/components/data/data-table/data-table.types.d.ts +1 -1
  11. package/dist/components/data-display/calendar/calendar-day-picker-components.js +69 -56
  12. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +5 -0
  13. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +6 -0
  14. package/dist/components/data-display/calendar/calendar.types.d.ts +1 -1
  15. package/dist/components/flows/filter-panel/filter-panel.js +101 -94
  16. package/dist/components/flows/guidance/adapters/ag-grid-adapter.d.ts +13 -0
  17. package/dist/components/flows/guidance/adapters/ag-grid-adapter.js +30 -0
  18. package/dist/components/flows/guidance/adapters/ag-grid.d.ts +2 -0
  19. package/dist/components/flows/guidance/adapters/ag-grid.js +6 -0
  20. package/dist/components/flows/guidance/adapters/dialog.d.ts +1 -0
  21. package/dist/components/flows/guidance/adapters/dialog.js +5 -0
  22. package/dist/components/flows/guidance/adapters/overlay-adapter.d.ts +5 -0
  23. package/dist/components/flows/guidance/adapters/overlay-adapter.js +21 -0
  24. package/dist/components/flows/guidance/engine.d.ts +1 -0
  25. package/dist/components/flows/guidance/engine.js +36 -0
  26. package/dist/components/flows/guidance/guidance-context.d.ts +29 -0
  27. package/dist/components/flows/guidance/guidance-context.js +35 -0
  28. package/dist/components/flows/guidance/guidance-error-boundary.d.ts +16 -0
  29. package/dist/components/flows/guidance/guidance-error-boundary.js +49 -0
  30. package/dist/components/flows/guidance/guidance-layer.d.ts +2 -0
  31. package/dist/components/flows/guidance/guidance-layer.js +71 -0
  32. package/dist/components/flows/guidance/guidance-provider.d.ts +3 -0
  33. package/dist/components/flows/guidance/guidance-provider.js +58 -0
  34. package/dist/components/flows/guidance/guidance-target.d.ts +7 -0
  35. package/dist/components/flows/guidance/guidance-target.js +27 -0
  36. package/dist/components/flows/guidance/guidance.types.d.ts +1 -0
  37. package/dist/components/flows/guidance/help-center/filter-help-center-guides.d.ts +7 -0
  38. package/dist/components/flows/guidance/help-center/filter-help-center-guides.js +11 -0
  39. package/dist/components/flows/guidance/help-center/guide-catalog.d.ts +3 -0
  40. package/dist/components/flows/guidance/help-center/guide-catalog.js +118 -0
  41. package/dist/components/flows/guidance/help-center/help-center-header.d.ts +3 -0
  42. package/dist/components/flows/guidance/help-center/help-center-header.js +43 -0
  43. package/dist/components/flows/guidance/help-center/help-center.constants.d.ts +5 -0
  44. package/dist/components/flows/guidance/help-center/help-center.constants.js +7 -0
  45. package/dist/components/flows/guidance/help-center/help-center.d.ts +10 -0
  46. package/dist/components/flows/guidance/help-center/help-center.js +95 -0
  47. package/dist/components/flows/guidance/help-center/help-center.story-helpers.d.ts +10 -0
  48. package/dist/components/flows/guidance/help-center/help-center.types.d.ts +39 -0
  49. package/dist/components/flows/guidance/help-center.d.ts +6 -0
  50. package/dist/components/flows/guidance/help-center.js +19 -0
  51. package/dist/components/flows/guidance/hooks/use-guidance.d.ts +19 -0
  52. package/dist/components/flows/guidance/hooks/use-guidance.js +50 -0
  53. package/dist/components/flows/guidance/hooks/use-help-center.d.ts +24 -0
  54. package/dist/components/flows/guidance/hooks/use-help-center.js +67 -0
  55. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.d.ts +2 -0
  56. package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +30 -0
  57. package/dist/components/flows/guidance/index.d.ts +18 -0
  58. package/dist/components/flows/guidance/index.js +48 -0
  59. package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +3 -0
  60. package/dist/components/flows/guidance/renderers/announcement-renderer.js +40 -0
  61. package/dist/components/flows/guidance/renderers/coach-mark-renderer.d.ts +2 -0
  62. package/dist/components/flows/guidance/renderers/coach-mark-renderer.js +14 -0
  63. package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +42 -0
  64. package/dist/components/flows/guidance/renderers/guidance-card-shared.js +213 -0
  65. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +48 -0
  66. package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +254 -0
  67. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.d.ts +11 -0
  68. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +217 -0
  69. package/dist/components/flows/guidance/renderers/renderer-registry.d.ts +6 -0
  70. package/dist/components/flows/guidance/renderers/renderer-registry.js +19 -0
  71. package/dist/components/flows/guidance/renderers/spotlight-renderer.d.ts +2 -0
  72. package/dist/components/flows/guidance/renderers/spotlight-renderer.js +14 -0
  73. package/dist/components/flows/guidance/renderers.d.ts +4 -0
  74. package/dist/components/flows/guidance/renderers.js +11 -0
  75. package/dist/components/flows/guidance/target.d.ts +3 -0
  76. package/dist/components/flows/guidance/target.js +6 -0
  77. package/dist/components/flows/guidance/triggers.d.ts +2 -0
  78. package/dist/components/flows/guidance/triggers.js +16 -0
  79. package/dist/components/flows/guidance/use-guidance-target.d.ts +5 -0
  80. package/dist/components/flows/guidance/use-guidance-target.js +16 -0
  81. package/dist/components/flows/guidance/utils/motion-settle.d.ts +2 -0
  82. package/dist/components/flows/guidance/utils/motion-settle.js +17 -0
  83. package/dist/components/forms/combobox/combobox.js +185 -160
  84. package/dist/components/forms/combobox/combobox.types.d.ts +2 -0
  85. package/dist/i18n/defaultMessages.d.ts +13 -0
  86. package/dist/i18n/defaultMessages.js +23 -11
  87. package/dist/i18n/index.d.ts +1 -1
  88. package/dist/i18n/locales/de.js +12 -0
  89. package/dist/i18n/locales/es.js +12 -0
  90. package/dist/i18n/locales/hi.js +12 -0
  91. package/dist/i18n/locales/kn.js +12 -0
  92. package/dist/impact-nova-components.css +52 -10
  93. package/dist/impact-nova.css +1 -1
  94. package/dist/lib/guidance/analytics/analytics-adapter.d.ts +16 -0
  95. package/dist/lib/guidance/analytics/analytics-adapter.js +50 -0
  96. package/dist/lib/guidance/engine/guidance-engine.d.ts +74 -0
  97. package/dist/lib/guidance/engine/guidance-engine.js +384 -0
  98. package/dist/lib/guidance/engine/guide-registry.d.ts +21 -0
  99. package/dist/lib/guidance/engine/guide-registry.js +71 -0
  100. package/dist/lib/guidance/engine/manifest-validator.d.ts +4 -0
  101. package/dist/lib/guidance/engine/manifest-validator.js +102 -0
  102. package/dist/lib/guidance/engine/step-navigation.d.ts +5 -0
  103. package/dist/lib/guidance/engine/step-navigation.js +35 -0
  104. package/dist/lib/guidance/index.d.ts +12 -0
  105. package/dist/lib/guidance/storage/storage-adapter.d.ts +10 -0
  106. package/dist/lib/guidance/storage/storage-adapter.js +51 -0
  107. package/dist/lib/guidance/storage/storage-keys.d.ts +10 -0
  108. package/dist/lib/guidance/storage/storage-keys.js +23 -0
  109. package/dist/lib/guidance/targets/ref-registry.d.ts +12 -0
  110. package/dist/lib/guidance/targets/ref-registry.js +65 -0
  111. package/dist/lib/guidance/targets/target-resolver.d.ts +13 -0
  112. package/dist/lib/guidance/targets/target-resolver.js +85 -0
  113. package/dist/lib/guidance/triggers/built-in-triggers.d.ts +14 -0
  114. package/dist/lib/guidance/triggers/built-in-triggers.js +88 -0
  115. package/dist/lib/guidance/triggers/trigger-registry.d.ts +9 -0
  116. package/dist/lib/guidance/triggers/trigger-registry.js +44 -0
  117. package/dist/lib/guidance/types/guidance.types.d.ts +181 -0
  118. package/dist/lib/overflow/is-line-clamp-text-clipped.d.ts +2 -0
  119. package/dist/lib/overflow/is-line-clamp-text-clipped.js +33 -0
  120. package/dist/lib/overflow/is-text-overflowing.d.ts +1 -0
  121. package/dist/lib/overflow/is-text-overflowing.js +8 -3
  122. package/dist/llms/rules/installation.js +1 -1
  123. package/dist/llms/rules/requirements.js +1 -1
  124. package/package.json +51 -22
@@ -1,11 +1,9 @@
1
- const E = "ag-grid-header-label-cluster", _ = ".ag-header-group-cell-label", L = ".ag-header-cell-label", l = `.${E}`;
2
- function r(e) {
3
- return e === "group" ? _ : L;
1
+ const l = ".ag-header-group-cell-label", r = ".ag-header-cell-label";
2
+ function E(e) {
3
+ return e === "group" ? l : r;
4
4
  }
5
5
  export {
6
- L as AG_GRID_HEADER_CELL_LABEL_SELECTOR,
7
- _ as AG_GRID_HEADER_GROUP_LABEL_SELECTOR,
8
- E as AG_GRID_HEADER_LABEL_CLUSTER_CLASS,
9
- l as AG_GRID_HEADER_LABEL_CLUSTER_SELECTOR,
10
- r as resolveAgGridHeaderLabelShellSelector
6
+ r as AG_GRID_HEADER_CELL_LABEL_SELECTOR,
7
+ l as AG_GRID_HEADER_GROUP_LABEL_SELECTOR,
8
+ E as resolveAgGridHeaderLabelShellSelector
11
9
  };
@@ -3,5 +3,5 @@ import { AgGridHeaderTooltipKind } from './ag-grid-header-dom';
3
3
  export type AgGridTooltipOverflowMode = TextOverflowMode;
4
4
  /** Matches AG Grid `_isElementOverflowingCallback` (horizontal or vertical). */
5
5
  export declare function isAgGridTextOverflowing(element: HTMLElement, mode?: AgGridTooltipOverflowMode): boolean;
6
- /** Header label tooltips: ellipsis on the text node, else content wider than the label shell. */
6
+ /** Header label tooltips: text-node overflow only; shell fallback ignores info-icon cluster width. */
7
7
  export declare function isAgGridHeaderLabelTooltipOverflowing(element: HTMLElement, headerKind: AgGridHeaderTooltipKind): boolean;
@@ -1,18 +1,30 @@
1
- import { isTextOverflowing as o } from "../../../lib/overflow/is-text-overflowing.js";
2
- import { resolveAgGridHeaderLabelShellSelector as n, AG_GRID_HEADER_LABEL_CLUSTER_SELECTOR as c } from "./ag-grid-header-dom.js";
3
- function h(t, l = "line-clamp") {
4
- return o(t, l);
1
+ import { isLineClampTextVisuallyClipped as o } from "../../../lib/overflow/is-line-clamp-text-clipped.js";
2
+ import { isTextOverflowing as n, TEXT_OVERFLOW_EPSILON_PX as t } from "../../../lib/overflow/is-text-overflowing.js";
3
+ import { resolveAgGridHeaderLabelShellSelector as c } from "./ag-grid-header-dom.js";
4
+ const s = 16;
5
+ function l(r, i) {
6
+ return r - i > t;
5
7
  }
6
- function u(t, l) {
7
- if (t.clientWidth < t.scrollWidth)
8
- return !0;
9
- const e = t.closest(n(l));
10
- if (!e || typeof e.clientWidth != "number")
8
+ function f(r) {
9
+ const i = r.scrollHeight - r.clientHeight;
10
+ if (i <= t)
11
11
  return !1;
12
- const i = e, r = t.closest(c);
13
- return (r && typeof r.scrollWidth == "number" ? r.scrollWidth : t.scrollWidth) > i.clientWidth;
12
+ const e = parseFloat(getComputedStyle(r).lineHeight) || s;
13
+ return i > e + t;
14
+ }
15
+ function p(r, i = "line-clamp") {
16
+ return n(r, i);
17
+ }
18
+ function g(r, i) {
19
+ if (l(r.scrollWidth, r.clientWidth) || f(r) || o(r))
20
+ return !0;
21
+ const e = r.closest(c(i));
22
+ return !e || typeof e.clientWidth != "number" ? !1 : l(
23
+ r.scrollWidth,
24
+ e.clientWidth
25
+ );
14
26
  }
15
27
  export {
16
- u as isAgGridHeaderLabelTooltipOverflowing,
17
- h as isAgGridTextOverflowing
28
+ g as isAgGridHeaderLabelTooltipOverflowing,
29
+ p as isAgGridTextOverflowing
18
30
  };
@@ -128,7 +128,7 @@ const ce = ({ api: r }) => {
128
128
  enableBooleanParsing: O,
129
129
  enableDateParsing: U
130
130
  } = r, I = M(null);
131
- re(h, t ?? "", I, "ellipsis", "leaf");
131
+ re(h, t ?? "", I, "line-clamp", "leaf");
132
132
  const u = $(), { t: S } = R(), i = l.getColDef(), m = l.getColId(), [de, K] = F(0);
133
133
  L(() => ie(() => {
134
134
  K((b) => b + 1);
@@ -1,19 +1,19 @@
1
1
  import { jsxs as d, jsx as o } from "react/jsx-runtime";
2
- import { useRef as p } from "react";
3
- import { HeaderInfo as m } from "./components/header-info.js";
2
+ import { useRef as m } from "react";
3
+ import { HeaderInfo as p } from "./components/header-info.js";
4
4
  import { useAgGridTruncationTooltip as c } from "../use-ag-grid-truncation-tooltip.js";
5
5
  import { ColumnGroupSettingsMenu as f } from "./column-menu/column-header-settings-menu.js";
6
6
  function I(t) {
7
- const { displayName: a, setTooltip: l, showInfoIcon: s = !1, columnGroup: i, api: u } = t, r = p(null), e = a || "";
8
- if (c(l, e, r, "ellipsis", "group"), !e && s === !1)
7
+ const { displayName: a, setTooltip: l, showInfoIcon: s = !1, columnGroup: u, api: i } = t, r = m(null), e = a || "";
8
+ if (c(l, e, r, "line-clamp", "group"), !e && s === !1)
9
9
  return null;
10
- const n = i?.getGroupId();
10
+ const n = u?.getGroupId();
11
11
  return /* @__PURE__ */ d("div", { className: "ag-grid-header-label-cluster", children: [
12
12
  n ? /* @__PURE__ */ o(
13
13
  f,
14
14
  {
15
15
  columnGroupId: n,
16
- gridApi: u,
16
+ gridApi: i,
17
17
  headerLabelRef: r,
18
18
  children: e
19
19
  }
@@ -26,7 +26,7 @@ function I(t) {
26
26
  children: e
27
27
  }
28
28
  ),
29
- /* @__PURE__ */ o(m, { ...t, className: "shrink-0" })
29
+ /* @__PURE__ */ o(p, { ...t, className: "shrink-0" })
30
30
  ] });
31
31
  }
32
32
  export {
@@ -1,4 +1,4 @@
1
- import { DEFAULT_DATE_DISPLAY_FORMAT as O, isoToDisplay as S, getTodayStr as b, getYesterdayStr as W, getMonthRange as F, getYearRange as x } from "./date-utils.js";
1
+ import { DEFAULT_DATE_DISPLAY_FORMAT as O, isoToDisplay as C, getTodayStr as b, getYesterdayStr as W, getMonthRange as S, getYearRange as F } from "./date-utils.js";
2
2
  const v = {
3
3
  yes: !0,
4
4
  true: !0,
@@ -96,14 +96,14 @@ function E(i, n = !1, e = !1) {
96
96
  if (a === "today") return { operator: "equals", value: b() };
97
97
  if (a === "yesterday") return { operator: "equals", value: W() };
98
98
  if (/^\d{4}$/.test(t)) {
99
- const r = x(Number(t));
99
+ const r = F(Number(t));
100
100
  return { operator: "inRange", value: r.from, valueTo: r.to };
101
101
  }
102
102
  const o = t.match(/^([a-zA-Z]+)\s*(\d{4})$/);
103
103
  if (o) {
104
104
  const r = $[o[1].toLowerCase()];
105
105
  if (r) {
106
- const l = F(r, Number(o[2]));
106
+ const l = S(r, Number(o[2]));
107
107
  return { operator: "inRange", value: l.from, valueTo: l.to };
108
108
  }
109
109
  }
@@ -137,7 +137,7 @@ function m(i, n = O) {
137
137
  if (Array.isArray(i))
138
138
  return i.map((e) => m(e, n)).join(", ");
139
139
  if (/^\d{4}-\d{2}-\d{2}/.test(i)) {
140
- const e = S(i, n);
140
+ const e = C(i, n);
141
141
  if (e) return e;
142
142
  }
143
143
  return i;
@@ -175,7 +175,7 @@ function N(i, n = O) {
175
175
  return e;
176
176
  }
177
177
  }
178
- const C = {
178
+ const x = {
179
179
  contains: "contains",
180
180
  notContains: "notContains",
181
181
  equals: "equals",
@@ -211,7 +211,7 @@ function A(i, n, e = O) {
211
211
  }
212
212
  const t = n;
213
213
  if ("type" in t && t.type) {
214
- const s = t.type, c = C[s] || s, p = t.filter !== void 0 ? String(t.filter) : t.dateFrom !== void 0 ? String(t.dateFrom) : "", a = t.filterTo !== void 0 ? String(t.filterTo) : t.dateTo !== void 0 ? String(t.dateTo) : void 0;
214
+ const s = t.type, c = x[s] || s, p = t.filter !== void 0 ? String(t.filter) : t.dateFrom !== void 0 ? String(t.dateFrom) : "", a = t.filterTo !== void 0 ? String(t.filterTo) : t.dateTo !== void 0 ? String(t.dateTo) : void 0;
215
215
  return N({
216
216
  operator: c,
217
217
  value: p,
@@ -269,7 +269,7 @@ function h(i) {
269
269
  }
270
270
  }
271
271
  function M(i, n, e) {
272
- return e === "number" ? "number" : e === "date" ? "date" : e === "select" || e === "set" || Array.isArray(n) ? i === "notEqual" || i === "notContains" ? "text" : "set" : typeof n == "string" && /^\d{4}-\d{2}-\d{2}/.test(n) ? "date" : ["greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "inRange"].includes(i) && n && !I(n) && !isNaN(Number(n)) || typeof n == "string" && n && /^-?\d+(\.\d+)?$/.test(n.trim()) ? "number" : "text";
272
+ return e === "number" ? "number" : e === "date" ? "date" : e === "text" ? "text" : e === "select" || e === "set" || Array.isArray(n) ? i === "notEqual" || i === "notContains" ? "text" : "set" : typeof n == "string" && /^\d{4}-\d{2}-\d{2}/.test(n) ? "date" : ["greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "inRange"].includes(i) && n && !I(n) && !isNaN(Number(n)) || typeof n == "string" && n && /^-?\d+(\.\d+)?$/.test(n.trim()) ? "number" : "text";
273
273
  }
274
274
  function I(i) {
275
275
  return Array.isArray(i);
@@ -443,7 +443,7 @@ function V(i) {
443
443
  return o.conditions.flatMap((d) => p(d));
444
444
  if ("filterType" in o && o.filterType === "multi" && o.filterModels)
445
445
  return o.filterModels?.filter((d) => d != null).flatMap((d) => p(d)) ?? [];
446
- const r = o, l = "type" in r && r.type ? r.type : "equals", u = r.filterType === "set" ? "equals" : C[l] || "contains", f = r.values, g = r.filter !== void 0 ? String(r.filter) : r.dateFrom !== void 0 ? String(r.dateFrom) : f ? f.filter((d) => d != null) : "";
446
+ const r = o, l = "type" in r && r.type ? r.type : "equals", u = r.filterType === "set" ? "equals" : x[l] || "contains", f = r.values, g = r.filter !== void 0 ? String(r.filter) : r.dateFrom !== void 0 ? String(r.dateFrom) : f ? f.filter((d) => d != null) : "";
447
447
  return [{
448
448
  id: R(),
449
449
  columnId: t,
@@ -462,7 +462,7 @@ function V(i) {
462
462
  };
463
463
  }
464
464
  export {
465
- C as agToInternalOperator,
465
+ x as agToInternalOperator,
466
466
  V as convertFromAgGridFilterModel,
467
467
  k as convertToAgGridFilterModel,
468
468
  D as createEmptyRule,
@@ -0,0 +1,3 @@
1
+ import { ColDef, ColGroupDef } from 'ag-grid-community';
2
+ export type ColumnDefTree = ColDef | ColGroupDef;
3
+ export declare function stripColumnMinWidthConstraints(columnDefinitions: ColumnDefTree[]): ColumnDefTree[];
@@ -13,4 +13,4 @@ export declare function DataTableContent<TData>(props: DataTableContentProps<TDa
13
13
  /**
14
14
  * Top bar above the grid. Optional — omit to remove the toolbar from the DOM.
15
15
  */
16
- export declare const DataTableToolbar: ({ children, className, }: DataTableToolbarProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const DataTableToolbar: ({ children, className, ...rest }: DataTableToolbarProps) => import("react/jsx-runtime").JSX.Element;
@@ -13,27 +13,27 @@ const R = {
13
13
  comfort: 52
14
14
  }, re = ({
15
15
  children: a,
16
- className: o
16
+ className: r
17
17
  }) => {
18
- const [r, e] = h(null), [t, s] = h("medium"), [n, m] = h("full"), [l, c] = h("default"), u = p(() => L(), []), d = b((f) => {
18
+ const [t, e] = h(null), [o, s] = h("medium"), [n, m] = h("full"), [l, c] = h("default"), u = p(() => L(), []), d = b((f) => {
19
19
  u.registerScopedSheetDepth(f);
20
20
  }, [u]), g = b((f) => {
21
21
  e(f);
22
22
  }, []);
23
23
  D(() => {
24
- if (r)
25
- return k(r);
26
- }, [r]);
24
+ if (t)
25
+ return k(t);
26
+ }, [t]);
27
27
  const T = {
28
28
  small: "12px",
29
29
  medium: "14px",
30
30
  large: "16px"
31
- }[t], H = `${R[l]}px`, x = p(
31
+ }[o], H = `${R[l]}px`, x = p(
32
32
  () => ({
33
- gridApi: r,
33
+ gridApi: t,
34
34
  registerApi: g,
35
35
  registerScopedSheetDepth: d,
36
- fontSize: t,
36
+ fontSize: o,
37
37
  setFontSize: s,
38
38
  numericFormat: n,
39
39
  setNumericFormat: m,
@@ -41,10 +41,10 @@ const R = {
41
41
  setRowHeight: c
42
42
  }),
43
43
  [
44
- r,
44
+ t,
45
45
  g,
46
46
  d,
47
- t,
47
+ o,
48
48
  n,
49
49
  l
50
50
  ]
@@ -59,7 +59,7 @@ const R = {
59
59
  "data-component": "data-table",
60
60
  className: _(
61
61
  "flex flex-col w-full min-h-0 rounded-[inherit]",
62
- o
62
+ r
63
63
  ),
64
64
  style: {
65
65
  "--ag-font-size": T,
@@ -77,21 +77,21 @@ const R = {
77
77
  b: "bil",
78
78
  full_precision: "full_precision"
79
79
  }, V = A(function() {
80
- const { setSheetTarget: o } = P();
80
+ const { setSheetTarget: r } = P();
81
81
  return /* @__PURE__ */ i(
82
82
  "div",
83
83
  {
84
- ref: o,
84
+ ref: r,
85
85
  className: "absolute inset-0 pointer-events-none z-[39] flex overflow-hidden"
86
86
  }
87
87
  );
88
88
  }), Y = A(function({
89
- className: o,
90
- children: r
89
+ className: r,
90
+ children: t
91
91
  }) {
92
- const { scopedSheetOpen: e } = P(), t = O(null), [s, n] = h(!1);
92
+ const { scopedSheetOpen: e } = P(), o = O(null), [s, n] = h(!1);
93
93
  !e && s && n(!1), N(() => {
94
- if (!e || (t.current?.clientHeight ?? 0) >= v)
94
+ if (!e || (o.current?.clientHeight ?? 0) >= v)
95
95
  return;
96
96
  const c = window.setTimeout(() => {
97
97
  n(!0);
@@ -104,23 +104,23 @@ const R = {
104
104
  return /* @__PURE__ */ I(
105
105
  "div",
106
106
  {
107
- ref: t,
107
+ ref: o,
108
108
  className: _(
109
109
  "relative flex-1 min-h-0 w-full bg-canvas-elevated rounded-b-[inherit] grid-rounded-bottom",
110
- o
110
+ r
111
111
  ),
112
112
  style: m ? { minHeight: v } : void 0,
113
113
  children: [
114
- r,
114
+ t,
115
115
  /* @__PURE__ */ i(V, {})
116
116
  ]
117
117
  }
118
118
  );
119
119
  }), $ = A(function({
120
- resolvedRowHeight: o,
121
- mergedContext: r,
120
+ resolvedRowHeight: r,
121
+ mergedContext: t,
122
122
  onGridReady: e,
123
- columnDefs: t,
123
+ columnDefs: o,
124
124
  maintainColumnOrder: s = !0,
125
125
  ...n
126
126
  }) {
@@ -128,20 +128,20 @@ const R = {
128
128
  M,
129
129
  {
130
130
  ...n,
131
- columnDefs: t,
132
- rowHeight: o,
131
+ columnDefs: o,
132
+ rowHeight: r,
133
133
  onGridReady: e,
134
- context: r,
134
+ context: t,
135
135
  maintainColumnOrder: s
136
136
  }
137
137
  );
138
138
  });
139
139
  function ne(a) {
140
140
  const {
141
- registerApi: o,
142
- rowHeight: r,
141
+ registerApi: r,
142
+ rowHeight: t,
143
143
  gridApi: e,
144
- numericFormat: t
144
+ numericFormat: o
145
145
  } = B(), {
146
146
  className: s,
147
147
  onGridReady: n,
@@ -152,7 +152,7 @@ function ne(a) {
152
152
  suppressInitialRuntimeState: d,
153
153
  maintainColumnOrder: g = !0,
154
154
  ...T
155
- } = a, H = R[r], x = m ?? H, { runtimeColumnDefs: f, extractedRuntimeDefaults: w } = p(
155
+ } = a, H = R[t], x = m ?? H, { runtimeColumnDefs: f, extractedRuntimeDefaults: w } = p(
156
156
  () => W(c ?? void 0),
157
157
  [c]
158
158
  ), C = p(
@@ -165,26 +165,26 @@ function ne(a) {
165
165
  ), E = p(
166
166
  () => ({
167
167
  ...l,
168
- formatType: y[t]
168
+ formatType: y[o]
169
169
  }),
170
- [l, t]
170
+ [l, o]
171
171
  );
172
172
  D(() => {
173
173
  e?.resetRowHeights();
174
- }, [r, e]), D(() => {
174
+ }, [t, e]), D(() => {
175
175
  if (e) {
176
176
  const S = e.getGridOption("context") || {};
177
177
  e.setGridOption("context", {
178
178
  ...S,
179
- formatType: y[t]
179
+ formatType: y[o]
180
180
  }), e.refreshCells({ force: !0 });
181
181
  }
182
- }, [t, e]);
182
+ }, [o, e]);
183
183
  const G = b(
184
184
  (S) => {
185
- o(S.api), n?.(S);
185
+ r(S.api), n?.(S);
186
186
  },
187
- [o, n]
187
+ [r, n]
188
188
  );
189
189
  return /* @__PURE__ */ i(Y, { className: s, children: /* @__PURE__ */ i(
190
190
  $,
@@ -201,15 +201,17 @@ function ne(a) {
201
201
  }
202
202
  const ie = ({
203
203
  children: a,
204
- className: o
204
+ className: r,
205
+ ...t
205
206
  }) => /* @__PURE__ */ i(
206
207
  "div",
207
208
  {
208
209
  "data-component": "data-table-toolbar",
209
210
  className: _(
210
211
  "flex items-center justify-between px-4 py-3 shrink-0 bg-canvas-elevated rounded-t-[inherit]",
211
- o
212
+ r
212
213
  ),
214
+ ...t,
213
215
  children: a
214
216
  }
215
217
  );
@@ -31,7 +31,7 @@ export type DataTableToolbarProps = {
31
31
  children: React.ReactNode;
32
32
  /** Extra classes on the toolbar root (`data-component="data-table-toolbar"`). */
33
33
  className?: string;
34
- };
34
+ } & Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'className'>;
35
35
  /**
36
36
  * Scoped settings panel state. Renders inside the `DataTable` container (not a viewport modal).
37
37
  *
@@ -1,52 +1,53 @@
1
- import { jsx as n, jsxs as k } from "react/jsx-runtime";
1
+ import { jsx as n, jsxs as R } from "react/jsx-runtime";
2
2
  import * as p from "react";
3
3
  import "react-day-picker";
4
4
  import { ChevronRight as C } from "impact-nova-icons";
5
- import { cn as d } from "../../../lib/utils.js";
5
+ import { cn as s } from "../../../lib/utils.js";
6
6
  import { Button as N } from "../../primitives/button/button.js";
7
7
  import { Select as D } from "../../forms/select/select.js";
8
- import { CalendarCaptionHeader as z } from "./calendar-caption-header.js";
9
- import { CalendarDayButton as O } from "./calendar-day-button.js";
8
+ import { CalendarCaptionHeader as Y } from "./calendar-caption-header.js";
9
+ import { CalendarDayButton as z } from "./calendar-day-button.js";
10
10
  import { PanelIndexContext as h } from "./calendar-panel-context.js";
11
- import { CalendarWeekNumberCell as W } from "./calendar-week-number-cell.js";
11
+ import { CalendarWeekNumberCell as O } from "./calendar-week-number-cell.js";
12
12
  import { getAvailableMonths as A } from "./calendar-month-utils.js";
13
- function X({
13
+ import { isCalendarPaddingWeek as F } from "./calendar-padding-week.utils.js";
14
+ function _({
14
15
  buttonVariant: u,
15
16
  pickerType: f,
16
- currentMonth: i,
17
+ currentMonth: d,
17
18
  monthsFull: w,
18
19
  resolvedStartMonth: b,
19
- resolvedEndMonth: I,
20
+ resolvedEndMonth: k,
20
21
  availableYears: v,
21
- weekStartsOn: M,
22
- previousMonthLabel: x,
23
- nextMonthLabel: g,
24
- monthPlaceholder: S,
25
- yearPlaceholder: y,
26
- weekNumberLabel: B,
27
- weekLabel: P,
22
+ weekStartsOn: I,
23
+ previousMonthLabel: g,
24
+ nextMonthLabel: x,
25
+ monthPlaceholder: M,
26
+ yearPlaceholder: P,
27
+ weekNumberLabel: S,
28
+ weekLabel: W,
28
29
  onMonthChange: m,
29
- onWeekSelect: R,
30
- components: Y
30
+ onWeekSelect: y,
31
+ components: B
31
32
  }) {
32
33
  return {
33
- Root: ({ className: e, rootRef: t, ...a }) => /* @__PURE__ */ n("div", { "data-slot": "calendar", ref: t, className: d(e), ...a }),
34
+ Root: ({ className: e, rootRef: t, ...a }) => /* @__PURE__ */ n("div", { "data-slot": "calendar", ref: t, className: s(e), ...a }),
34
35
  Chevron: ({ className: e, orientation: t, ...a }) => t === "left" ? /* @__PURE__ */ n(
35
36
  C,
36
37
  {
37
38
  size: 16,
38
- className: d("rotate-180 text-content", e),
39
+ className: s("rotate-180 text-content", e),
39
40
  ...a
40
41
  }
41
- ) : t === "right" ? /* @__PURE__ */ n(C, { size: 16, className: d("text-content", e), ...a }) : /* @__PURE__ */ n("span", {}),
42
+ ) : t === "right" ? /* @__PURE__ */ n(C, { size: 16, className: s("text-content", e), ...a }) : /* @__PURE__ */ n("span", {}),
42
43
  PreviousMonthButton: (e) => /* @__PURE__ */ n(
43
44
  N,
44
45
  {
45
46
  variant: u,
46
47
  size: "icon",
47
48
  className: "h-7 w-7",
48
- "aria-label": x,
49
- title: x,
49
+ "aria-label": g,
50
+ title: g,
50
51
  ...e
51
52
  }
52
53
  ),
@@ -56,35 +57,35 @@ function X({
56
57
  variant: u,
57
58
  size: "icon",
58
59
  className: "h-7 w-7",
59
- "aria-label": g,
60
- title: g,
60
+ "aria-label": x,
61
+ title: x,
61
62
  ...e
62
63
  }
63
64
  ),
64
65
  MonthCaption: ({ displayIndex: e, calendarMonth: t, ...a }) => /* @__PURE__ */ n(h.Provider, { value: e, children: /* @__PURE__ */ n("div", { ...a }) }),
65
- Month: ({ calendarMonth: e, displayIndex: t, className: a, children: r, ...l }) => {
66
- const o = p.Children.toArray(r), s = o[o.length - 1], c = o.slice(0, -1);
67
- return /* @__PURE__ */ k("div", { className: d(a), ...l, children: [
68
- c.length > 0 ? /* @__PURE__ */ n(z, { children: c }) : null,
69
- s
66
+ Month: ({ calendarMonth: e, displayIndex: t, className: a, children: l, ...r }) => {
67
+ const o = p.Children.toArray(l), i = o[o.length - 1], c = o.slice(0, -1);
68
+ return /* @__PURE__ */ R("div", { className: s(a), ...r, children: [
69
+ c.length > 0 ? /* @__PURE__ */ n(Y, { children: c }) : null,
70
+ i
70
71
  ] });
71
72
  },
72
- Months: ({ className: e, children: t, ...a }) => /* @__PURE__ */ n("div", { "data-slot": "day-months", className: d(e), ...a, children: t }),
73
+ Months: ({ className: e, children: t, ...a }) => /* @__PURE__ */ n("div", { "data-slot": "day-months", className: s(e), ...a, children: t }),
73
74
  MonthsDropdown: ({ value: e }) => {
74
- const t = p.useContext(h), a = t > 0, l = new Date(i.getFullYear(), i.getMonth() + t, 1).getFullYear(), o = A(
75
- l,
75
+ const t = p.useContext(h), a = t > 0, r = new Date(d.getFullYear(), d.getMonth() + t, 1).getFullYear(), o = A(
76
+ r,
76
77
  w,
77
78
  b,
78
- I
79
+ k
79
80
  );
80
81
  return /* @__PURE__ */ n(
81
82
  D,
82
83
  {
83
- value: o.find((s) => s.value === e?.toString()),
84
- onChange: (s) => {
85
- if (s && "value" in s) {
86
- const c = parseInt(s.value);
87
- m(a ? new Date(l, c - 1, 1) : new Date(l, c, 1));
84
+ value: o.find((i) => i.value === e?.toString()),
85
+ onChange: (i) => {
86
+ if (i && "value" in i) {
87
+ const c = parseInt(i.value);
88
+ m(a ? new Date(r, c - 1, 1) : new Date(r, c, 1));
88
89
  }
89
90
  },
90
91
  scrollToSelectedOnOpen: !0,
@@ -93,7 +94,7 @@ function X({
93
94
  menuWidth: "160px",
94
95
  isSearchable: !0,
95
96
  isClearable: !1,
96
- placeholder: S
97
+ placeholder: M
97
98
  }
98
99
  );
99
100
  },
@@ -102,19 +103,19 @@ function X({
102
103
  return /* @__PURE__ */ n(
103
104
  D,
104
105
  {
105
- value: v.find((r) => r.value === e?.toString()),
106
- onChange: (r) => {
107
- if (r && "value" in r) {
108
- const l = parseInt(r.value);
106
+ value: v.find((l) => l.value === e?.toString()),
107
+ onChange: (l) => {
108
+ if (l && "value" in l) {
109
+ const r = parseInt(l.value);
109
110
  if (a) {
110
111
  const o = new Date(
111
- i.getFullYear(),
112
- i.getMonth() + 1,
112
+ d.getFullYear(),
113
+ d.getMonth() + 1,
113
114
  1
114
115
  ).getMonth();
115
- m(new Date(l, o - 1, 1));
116
+ m(new Date(r, o - 1, 1));
116
117
  } else
117
- m(new Date(l, i.getMonth(), 1));
118
+ m(new Date(r, d.getMonth(), 1));
118
119
  }
119
120
  },
120
121
  scrollToSelectedOnOpen: !0,
@@ -123,26 +124,38 @@ function X({
123
124
  menuWidth: "140px",
124
125
  isSearchable: !0,
125
126
  isClearable: !1,
126
- placeholder: y
127
+ placeholder: P
128
+ }
129
+ );
130
+ },
131
+ DayButton: (e) => /* @__PURE__ */ n(z, { ...e, pickerType: f }),
132
+ Week: ({ week: e, className: t, children: a, ...l }) => {
133
+ const r = F(e);
134
+ return /* @__PURE__ */ n(
135
+ "tr",
136
+ {
137
+ className: s(t, r && "invisible"),
138
+ "aria-hidden": r || void 0,
139
+ ...l,
140
+ children: a
127
141
  }
128
142
  );
129
143
  },
130
- DayButton: (e) => /* @__PURE__ */ n(O, { ...e, pickerType: f }),
131
144
  WeekNumber: ({ week: e, ...t }) => /* @__PURE__ */ n(
132
- W,
145
+ O,
133
146
  {
134
147
  week: e,
135
- weekStartsOn: M,
148
+ weekStartsOn: I,
136
149
  pickerType: f,
137
- weekNumberLabel: B,
138
- weekLabel: P,
139
- onWeekSelect: R,
150
+ weekNumberLabel: S,
151
+ weekLabel: W,
152
+ onWeekSelect: y,
140
153
  ...t
141
154
  }
142
155
  ),
143
- ...Y
156
+ ...B
144
157
  };
145
158
  }
146
159
  export {
147
- X as buildCalendarDayPickerComponents
160
+ _ as buildCalendarDayPickerComponents
148
161
  };
@@ -0,0 +1,5 @@
1
+ export declare function isCalendarPaddingWeek(week: {
2
+ days: Array<{
3
+ outside?: boolean;
4
+ }>;
5
+ }): boolean;
@@ -0,0 +1,6 @@
1
+ function n(e) {
2
+ return e.days.length > 0 && e.days.every((d) => d.outside);
3
+ }
4
+ export {
5
+ n as isCalendarPaddingWeek
6
+ };
@@ -54,6 +54,6 @@ export interface CalendarProps extends Omit<React.ComponentProps<typeof DayPicke
54
54
  monthMode?: "single" | "multiple" | "range";
55
55
  selectedMonths?: MonthSelection | MonthSelection[] | MonthRange;
56
56
  onMonthSelect?: (months: MonthSelection | MonthSelection[] | MonthRange | undefined) => void;
57
- /** Always render 6 week rows to prevent layout shift when navigating months. Default true. */
57
+ /** Always render 6 week rows to prevent layout shift when navigating months. Default true. Padding weeks (all days outside the month) are visually hidden via the Week component. */
58
58
  fixedWeeks?: boolean;
59
59
  }