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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +3 -0
  2. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +6 -0
  3. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +15 -21
  4. package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +1 -1
  5. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +1 -2
  6. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.js +12 -6
  7. package/dist/components/data/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +19 -19
  8. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +1 -1
  9. package/dist/components/data/ag-grid-react/cell-renderers/switch-display-renderer.js +15 -15
  10. package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +1 -1
  11. package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +33 -33
  12. package/dist/components/data/ag-grid-react/headers/components/header-info.js +66 -62
  13. package/dist/components/data/ag-grid-react/headers/components/info-modal.js +6 -6
  14. package/dist/components/data/ag-grid-react/headers/components/section-renderers.js +18 -18
  15. package/dist/components/data/ag-grid-react/headers/custom-header-group.js +40 -29
  16. package/dist/components/data/ag-grid-react/headers/custom-header.js +102 -98
  17. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  18. package/dist/components/data/ag-grid-react/index.js +136 -127
  19. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.d.ts +7 -0
  20. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.js +6 -0
  21. package/dist/components/data/ag-grid-react/theme.js +8 -4
  22. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.d.ts +5 -0
  23. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.js +13 -0
  24. package/dist/components/data/ag-grid-react/useGridAutoSizeStrategyOnResize.js +8 -5
  25. package/dist/components/data/data-table/build-column-tree-from-grid.d.ts +14 -0
  26. package/dist/components/data/data-table/build-column-tree-from-grid.js +95 -0
  27. package/dist/components/data/data-table/data-table-column-apply.d.ts +29 -0
  28. package/dist/components/data/data-table/data-table-column-apply.js +102 -0
  29. package/dist/components/data/data-table/data-table-column-def-pin.d.ts +25 -0
  30. package/dist/components/data/data-table/data-table-column-def-pin.js +66 -0
  31. package/dist/components/data/data-table/data-table-column-list-sync.d.ts +8 -0
  32. package/dist/components/data/data-table/data-table-column-list-sync.js +15 -0
  33. package/dist/components/data/data-table/data-table-column-list.d.ts +14 -4
  34. package/dist/components/data/data-table/data-table-column-list.js +74 -277
  35. package/dist/components/data/data-table/data-table-constants.d.ts +3 -4
  36. package/dist/components/data/data-table/data-table-context.d.ts +3 -6
  37. package/dist/components/data/data-table/data-table-context.js +21 -10
  38. package/dist/components/data/data-table/data-table-saved-views.js +26 -26
  39. package/dist/components/data/data-table/data-table-sheet-portal-store.d.ts +13 -0
  40. package/dist/components/data/data-table/data-table-sheet-portal-store.js +36 -0
  41. package/dist/components/data/data-table/data-table-sheet.d.ts +3 -6
  42. package/dist/components/data/data-table/data-table-sheet.js +4 -2
  43. package/dist/components/data/data-table/data-table-view-menu.js +40 -40
  44. package/dist/components/data/data-table/data-table.d.ts +8 -10
  45. package/dist/components/data/data-table/data-table.js +138 -111
  46. package/dist/components/data/data-table/data-table.types.d.ts +35 -0
  47. package/dist/components/data/data-table/index.js +28 -27
  48. package/dist/components/data/data-table/indicator-legend.js +6 -6
  49. package/dist/components/data/data-table/use-data-table-column-list-sync.d.ts +16 -0
  50. package/dist/components/data/data-table/use-data-table-column-list-sync.js +222 -0
  51. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.d.ts +8 -0
  52. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +72 -0
  53. package/dist/components/data/expandable-list-item/expandable-list-item-context.d.ts +13 -0
  54. package/dist/components/data/expandable-list-item/expandable-list-item-context.js +25 -0
  55. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.d.ts +6 -0
  56. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +41 -0
  57. package/dist/components/data/expandable-list-item/expandable-list-item-parts.d.ts +31 -0
  58. package/dist/components/data/expandable-list-item/expandable-list-item-parts.js +233 -0
  59. package/dist/components/data/expandable-list-item/expandable-list-item-preset.d.ts +18 -0
  60. package/dist/components/data/expandable-list-item/expandable-list-item-preset.js +133 -0
  61. package/dist/components/data/expandable-list-item/expandable-list-item.d.ts +5 -0
  62. package/dist/components/data/{expandable-sku/expandable-sku.types.d.ts → expandable-list-item/expandable-list-item.types.d.ts} +7 -7
  63. package/dist/components/data/expandable-list-item/index.d.ts +5 -0
  64. package/dist/components/data/expandable-list-item/index.js +19 -0
  65. package/dist/components/data/nested-list/components/NestedListHeader.js +11 -11
  66. package/dist/components/data/nested-list/components/SortableItem.js +2 -2
  67. package/dist/components/data-display/avatar/avatar.types.d.ts +2 -0
  68. package/dist/components/data-display/badge/badge.types.d.ts +2 -0
  69. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +11 -11
  70. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +7 -7
  71. package/dist/components/data-display/calendar/calendar-week-number-cell.js +31 -31
  72. package/dist/components/data-display/card/card.js +8 -8
  73. package/dist/components/data-display/chart/chart.types.d.ts +9 -0
  74. package/dist/components/data-display/skeleton/skeleton.js +6 -6
  75. package/dist/components/data-display/statistics-card/statistics-card.js +14 -14
  76. package/dist/components/feedback/alert-dialog/alert-dialog.js +19 -19
  77. package/dist/components/feedback/dialog/dialog.js +1 -1
  78. package/dist/components/feedback/drawer/drawer.js +18 -18
  79. package/dist/components/feedback/dropdown-menu/dropdown-menu.js +70 -57
  80. package/dist/components/feedback/popover/popover.js +1 -1
  81. package/dist/components/feedback/sheet/sheet.js +1 -1
  82. package/dist/components/feedback/tooltip/tooltip.js +22 -22
  83. package/dist/components/feedback/tooltip/tooltip.variants.js +1 -1
  84. package/dist/components/flows/command-palette/command-palette.js +104 -104
  85. package/dist/components/flows/command-palette/shortcut-settings.js +34 -34
  86. package/dist/components/flows/filter-strip/filter-tag-list.js +4 -4
  87. package/dist/components/flows/notification-panel/notification-list.js +17 -17
  88. package/dist/components/flows/notification-panel/notification-panel.js +4 -4
  89. package/dist/components/flows/notification-panel/notification-panel.types.d.ts +3 -0
  90. package/dist/components/flows/wizard/wizard.js +8 -8
  91. package/dist/components/forms/combobox/combobox.js +20 -20
  92. package/dist/components/forms/date-picker/date-picker.js +17 -17
  93. package/dist/components/forms/date-picker/date-range-picker.js +3 -3
  94. package/dist/components/forms/date-picker/month-picker.js +1 -1
  95. package/dist/components/forms/date-picker/month-range-picker.js +42 -42
  96. package/dist/components/forms/date-picker/week-picker.js +15 -15
  97. package/dist/components/forms/date-picker/week-range-picker.js +3 -3
  98. package/dist/components/forms/file-upload/file-upload.js +33 -33
  99. package/dist/components/forms/input/input.js +8 -8
  100. package/dist/components/forms/input/input.variants.js +3 -3
  101. package/dist/components/forms/select/components/SelectMenuPanel.d.ts +1 -2
  102. package/dist/components/forms/select/components/SelectMenuPanel.js +18 -20
  103. package/dist/components/forms/select/components/SelectTrigger.d.ts +9 -6
  104. package/dist/components/forms/select/components/SelectTrigger.js +120 -122
  105. package/dist/components/forms/select/components/Submenu.js +8 -8
  106. package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.d.ts +1 -1
  107. package/dist/components/forms/select/hooks/useSelectValueState.d.ts +19 -0
  108. package/dist/components/forms/select/hooks/useSelectValueState.js +41 -0
  109. package/dist/components/forms/select/index.js +4 -3
  110. package/dist/components/forms/select/select.js +180 -175
  111. package/dist/components/forms/select/select.types.d.ts +3 -2
  112. package/dist/components/forms/select/select.variants.js +4 -4
  113. package/dist/components/forms/select/utils/select.d.ts +2 -1
  114. package/dist/components/forms/select/utils/select.js +47 -37
  115. package/dist/components/layout/sidebar/sidebar.d.ts +7 -50
  116. package/dist/components/layout/sidebar/sidebar.js +12 -11
  117. package/dist/components/layout/sidebar/sidebar.types.d.ts +35 -1
  118. package/dist/components/primitives/button-group/button-group.js +32 -32
  119. package/dist/components/primitives/chips/chips.variants.js +5 -5
  120. package/dist/components/primitives/empty-container/empty-container.types.d.ts +3 -0
  121. package/dist/components/primitives/kbd/kbd.variants.js +3 -3
  122. package/dist/components/primitives/stepper/stepper.js +6 -6
  123. package/dist/impact-nova-components.css +113 -7
  124. package/dist/impact-nova-tokens.scss +2 -4
  125. package/dist/impact-nova.css +1 -1
  126. package/dist/index.d.ts +1 -1
  127. package/dist/index.js +467 -433
  128. package/dist/lib/compose-refs.d.ts +8 -0
  129. package/dist/lib/compose-refs.js +14 -0
  130. package/dist/lib/primitives/field.types.d.ts +8 -2
  131. package/dist/lib/virtualized/index.d.ts +3 -0
  132. package/dist/lib/virtualized/index.js +33 -16
  133. package/dist/lib/virtualized/useVirtualizedList.d.ts +2 -0
  134. package/dist/lib/virtualized/useVirtualizedList.js +115 -109
  135. package/dist/lib/virtualized/virtualized-list-context.d.ts +12 -0
  136. package/dist/lib/virtualized/virtualized-list-context.js +21 -0
  137. package/dist/lib/virtualized/virtualized-list-parts.d.ts +51 -0
  138. package/dist/lib/virtualized/virtualized-list-parts.js +175 -0
  139. package/dist/lib/virtualized/virtualized-list-utils.d.ts +5 -0
  140. package/dist/lib/virtualized/virtualized-list-utils.js +6 -0
  141. package/dist/llms/rules/ag-grid.js +1 -1
  142. package/dist/llms/rules/installation.js +1 -1
  143. package/dist/llms/rules/migration.js +1 -1
  144. package/dist/llms/rules/real-world-patterns.js +1 -1
  145. package/dist/llms/rules/requirements.js +1 -1
  146. package/package.json +24 -15
  147. package/tailwind.config.js +1 -0
  148. package/dist/components/data/ag-grid-react/headers/components/truncated-text.d.ts +0 -15
  149. package/dist/components/data/ag-grid-react/headers/components/truncated-text.js +0 -27
  150. package/dist/components/data/expandable-sku/expandable-sku.d.ts +0 -38
  151. package/dist/components/data/expandable-sku/expandable-sku.js +0 -245
  152. package/dist/components/data/expandable-sku/index.d.ts +0 -2
  153. package/dist/components/data/expandable-sku/index.js +0 -4
@@ -22,7 +22,9 @@ const I = ({
22
22
  }, [e]);
23
23
  return f(() => {
24
24
  if (l)
25
- return a(1), () => a(-1);
25
+ return a(1), () => {
26
+ a(-1);
27
+ };
26
28
  }, [l, a]), /* @__PURE__ */ t(N.Provider, { value: y, children: /* @__PURE__ */ t(k.Provider, { value: l, children: n }) });
27
29
  }, M = ({
28
30
  children: n,
@@ -67,7 +69,7 @@ const I = ({
67
69
  className: "close_icon h-6 w-6 rounded-full hover:bg-muted/50",
68
70
  "aria-label": "Close",
69
71
  onClick: () => o(!1),
70
- children: /* @__PURE__ */ t(C, { className: "!h-3 !w-3 text-content-muted" })
72
+ children: /* @__PURE__ */ t(C, { className: "!h-3 !w-3 text-content-icon" })
71
73
  }
72
74
  )
73
75
  ] })
@@ -1,102 +1,102 @@
1
- import { jsx as t, jsxs as s } from "react/jsx-runtime";
1
+ import { jsx as a, jsxs as s } from "react/jsx-runtime";
2
2
  import * as c from "react";
3
- import { DropdownMenuContent as m, DropdownMenuSub as p, DropdownMenuSubTrigger as d, DropdownMenuSubContent as u, DropdownMenuRadioGroup as g, DropdownMenuRadioItem as l, DropdownMenuItem as i, DropdownMenuTrigger as f } from "../../feedback/dropdown-menu/dropdown-menu.js";
3
+ import { DropdownMenuContent as p, DropdownMenuSub as m, DropdownMenuSubTrigger as d, DropdownMenuSubContent as u, DropdownMenuRadioGroup as g, DropdownMenuRadioItem as r, DropdownMenuItem as l, DropdownMenuTrigger as f } from "../../feedback/dropdown-menu/dropdown-menu.js";
4
4
  import { Button as h } from "../../primitives/button/button.js";
5
5
  import { cn as b } from "../../../lib/utils.js";
6
6
  import { Density as x, Stack as T, StackCompact as w, StackComfort as D, Settings as N, ThreeDots as C, Collapse as M, Expand as S } from "impact-nova-icons";
7
- import { useImpactNovaI18n as r } from "../../../i18n/use-impact-nova-i18n.js";
7
+ import { useImpactNovaI18n as i } from "../../../i18n/use-impact-nova-i18n.js";
8
8
  import { useDataTable as v } from "./data-table-context.js";
9
9
  import { DataTableSheetTrigger as P } from "./data-table-sheet.js";
10
10
  const y = ({
11
- children: a,
11
+ children: t,
12
12
  ...n
13
13
  }) => {
14
- const { t: o } = r();
15
- return /* @__PURE__ */ t(f, { asChild: !0, ...n, children: a ?? /* @__PURE__ */ s(h, { variant: "secondary", size: "icon", "aria-label": o("dataTable.more"), children: [
16
- /* @__PURE__ */ t(C, { size: "sm" }),
17
- /* @__PURE__ */ t("span", { className: "sr-only", children: o("dataTable.openMenu") })
14
+ const { t: o } = i();
15
+ return /* @__PURE__ */ a(f, { asChild: !0, ...n, children: t ?? /* @__PURE__ */ s(h, { variant: "secondary", size: "icon", "aria-label": o("dataTable.more"), children: [
16
+ /* @__PURE__ */ a(C, { size: "sm" }),
17
+ /* @__PURE__ */ a("span", { className: "sr-only", children: o("dataTable.openMenu") })
18
18
  ] }) });
19
19
  };
20
20
  y.displayName = "DataTableViewMenuTrigger";
21
- const k = c.forwardRef(({ className: a, align: n = "end", ...o }, e) => /* @__PURE__ */ t(
22
- m,
21
+ const k = c.forwardRef(({ className: t, align: n = "end", ...o }, e) => /* @__PURE__ */ a(
22
+ p,
23
23
  {
24
24
  ref: e,
25
25
  align: n,
26
26
  "data-component": "data-table-view-menu",
27
- className: b("w-[240px] flex flex-col gap-[2px]", a),
27
+ className: b("w-[240px] flex flex-col gap-[2px]", t),
28
28
  ...o
29
29
  }
30
30
  ));
31
31
  k.displayName = "DataTableViewMenuContent";
32
32
  const G = () => {
33
- const { t: a } = r();
34
- return /* @__PURE__ */ t(P, { asChild: !0, children: /* @__PURE__ */ t(
35
- i,
33
+ const { t } = i();
34
+ return /* @__PURE__ */ a(P, { asChild: !0, children: /* @__PURE__ */ a(
35
+ l,
36
36
  {
37
37
  className: "flex cursor-pointer gap-2",
38
38
  onClick: (n) => n.stopPropagation(),
39
39
  onSelect: (n) => n.stopPropagation(),
40
40
  children: /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
41
- /* @__PURE__ */ t(N, { size: "sm", className: "text-content-muted" }),
42
- /* @__PURE__ */ t("span", { children: a("dataTable.tableSettings") })
41
+ /* @__PURE__ */ a(N, { size: "sm", className: "text-content-icon" }),
42
+ /* @__PURE__ */ a("span", { children: t("dataTable.tableSettings") })
43
43
  ] })
44
44
  }
45
45
  ) });
46
46
  }, q = () => {
47
- const { t: a } = r(), { rowHeight: n, setRowHeight: o } = v();
48
- return /* @__PURE__ */ s(p, { children: [
47
+ const { t } = i(), { rowHeight: n, setRowHeight: o } = v();
48
+ return /* @__PURE__ */ s(m, { children: [
49
49
  /* @__PURE__ */ s(
50
50
  d,
51
51
  {
52
52
  className: "flex items-center gap-2 cursor-pointer",
53
53
  onClick: (e) => e.stopPropagation(),
54
54
  children: [
55
- /* @__PURE__ */ t(x, { size: "sm", className: "text-content-muted" }),
56
- /* @__PURE__ */ t("span", { children: a("dataTable.contentDensity") })
55
+ /* @__PURE__ */ a(x, { size: "sm", className: "text-content-icon" }),
56
+ /* @__PURE__ */ a("span", { children: t("dataTable.contentDensity") })
57
57
  ]
58
58
  }
59
59
  ),
60
- /* @__PURE__ */ t(u, { className: "w-[190px]", children: /* @__PURE__ */ s(
60
+ /* @__PURE__ */ a(u, { className: "w-[190px]", children: /* @__PURE__ */ s(
61
61
  g,
62
62
  {
63
63
  value: n,
64
64
  onValueChange: (e) => o(e),
65
65
  className: "flex flex-col gap-0.5",
66
66
  children: [
67
- /* @__PURE__ */ t(
68
- l,
67
+ /* @__PURE__ */ a(
68
+ r,
69
69
  {
70
70
  value: "default",
71
71
  onClick: (e) => e.stopPropagation(),
72
72
  onSelect: (e) => e.stopPropagation(),
73
73
  children: /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
74
- /* @__PURE__ */ t(T, { size: "sm", className: "text-content-muted" }),
75
- a("dataTable.densityDefault")
74
+ /* @__PURE__ */ a(T, { size: "sm", className: "text-content-icon" }),
75
+ t("dataTable.densityDefault")
76
76
  ] })
77
77
  }
78
78
  ),
79
- /* @__PURE__ */ t(
80
- l,
79
+ /* @__PURE__ */ a(
80
+ r,
81
81
  {
82
82
  value: "compact",
83
83
  onClick: (e) => e.stopPropagation(),
84
84
  onSelect: (e) => e.stopPropagation(),
85
85
  children: /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
86
- /* @__PURE__ */ t(w, { size: "sm", className: "text-content-muted" }),
87
- a("dataTable.densityCompact")
86
+ /* @__PURE__ */ a(w, { size: "sm", className: "text-content-icon" }),
87
+ t("dataTable.densityCompact")
88
88
  ] })
89
89
  }
90
90
  ),
91
- /* @__PURE__ */ t(
92
- l,
91
+ /* @__PURE__ */ a(
92
+ r,
93
93
  {
94
94
  value: "comfort",
95
95
  onClick: (e) => e.stopPropagation(),
96
96
  onSelect: (e) => e.stopPropagation(),
97
97
  children: /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
98
- /* @__PURE__ */ t(D, { size: "sm", className: "text-content-muted" }),
99
- a("dataTable.densityComfort")
98
+ /* @__PURE__ */ a(D, { size: "sm", className: "text-content-icon" }),
99
+ t("dataTable.densityComfort")
100
100
  ] })
101
101
  }
102
102
  )
@@ -105,21 +105,21 @@ const G = () => {
105
105
  ) })
106
106
  ] });
107
107
  }, A = ({
108
- expanded: a,
108
+ expanded: t,
109
109
  onExpandedChange: n
110
110
  }) => {
111
- const { t: o } = r();
112
- return /* @__PURE__ */ t(
113
- i,
111
+ const { t: o } = i();
112
+ return /* @__PURE__ */ a(
113
+ l,
114
114
  {
115
115
  className: "flex cursor-pointer gap-2",
116
116
  onClick: (e) => e.stopPropagation(),
117
117
  onSelect: (e) => {
118
- e.stopPropagation(), n(!a);
118
+ e.stopPropagation(), n(!t);
119
119
  },
120
120
  children: /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
121
- a ? /* @__PURE__ */ t(M, { size: "sm", className: "text-content-muted" }) : /* @__PURE__ */ t(S, { size: "sm", className: "text-content-muted" }),
122
- /* @__PURE__ */ t("span", { children: o(a ? "dataTable.tableCollapse" : "dataTable.tableExpand") })
121
+ t ? /* @__PURE__ */ a(M, { size: "sm", className: "text-content-icon" }) : /* @__PURE__ */ a(S, { size: "sm", className: "text-content-icon" }),
122
+ /* @__PURE__ */ a("span", { children: o(t ? "dataTable.tableCollapse" : "dataTable.tableExpand") })
123
123
  ] })
124
124
  }
125
125
  );
@@ -1,18 +1,16 @@
1
- import { default as React } from 'react';
2
- import { DataTableProps, DataTableContentProps } from './data-table.types';
3
- export type { DataTableProps, DataTableContentProps } from './data-table.types';
1
+ import { DataTableProps, DataTableContentProps, DataTableToolbarProps } from './data-table.types';
2
+ export type { DataTableProps, DataTableContentProps, DataTableToolbarProps, } from './data-table.types';
4
3
  /**
5
4
  * DataTable Root
6
5
  * Provides context and structural container.
7
6
  */
8
7
  export declare const DataTable: ({ children, className, }: DataTableProps) => import("react/jsx-runtime").JSX.Element;
8
+ /**
9
+ * DataTable Content — does not subscribe to sheet open/close; only the frame
10
+ * and sheet UI re-render when the scoped settings panel toggles.
11
+ */
9
12
  export declare function DataTableContent<TData>(props: DataTableContentProps<TData>): import("react/jsx-runtime").JSX.Element;
10
13
  /**
11
- * DataTable Toolbar
12
- * Generic container for top-bar actions.
13
- * Users can conditionally render this component to remove it from DOM.
14
+ * Top bar above the grid. Optional — omit to remove the toolbar from the DOM.
14
15
  */
15
- export declare const DataTableToolbar: ({ children, className, }: {
16
- children: React.ReactNode;
17
- className?: string;
18
- }) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const DataTableToolbar: ({ children, className, }: DataTableToolbarProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,170 +1,197 @@
1
- import { jsx as n, jsxs as C } from "react/jsx-runtime";
2
- import { useState as a, useRef as E, useCallback as H, useMemo as v, useEffect as y, memo as N } from "react";
3
- import { AgGridWrapper as z } from "../ag-grid-react/index.js";
4
- import { cn as w } from "../../../lib/utils.js";
5
- import { DataTableContext as F, DataTableSheetPortalContext as M, useDataTable as j, useDataTableSheetPortal as P } from "./data-table-context.js";
6
- import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as A } from "./data-table-constants.js";
7
- const D = {
1
+ import { jsx as n, jsxs as G } from "react/jsx-runtime";
2
+ import { useState as h, useRef as E, useCallback as D, useMemo as g, useEffect as y, memo as v } from "react";
3
+ import { AgGridWrapper as O } from "../ag-grid-react/index.js";
4
+ import { cn as H } from "../../../lib/utils.js";
5
+ import { DataTableContext as F, DataTableSheetPortalStoreContext as N, useDataTable as I, useDataTableSheetPortal as A } from "./data-table-context.js";
6
+ import { createDataTableSheetPortalStore as z } from "./data-table-sheet-portal-store.js";
7
+ import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as B } from "./data-table-constants.js";
8
+ import { extractRuntimeColumnDefs as M, mergeInitialGridRuntimeState as j } from "./data-table-column-def-pin.js";
9
+ const P = {
8
10
  default: 46,
9
11
  compact: 30,
10
12
  comfort: 52
11
- }, Y = ({
12
- children: i,
13
+ }, U = ({
14
+ children: a,
13
15
  className: t
14
16
  }) => {
15
- const [o, e] = a(null), [r, p] = a(null), [l, c] = a("medium"), [h, d] = a("full"), [m, f] = a("default"), [g, T] = a(!1), u = E(0), x = H((b) => {
16
- u.current = Math.max(
17
- 0,
18
- u.current + b
19
- ), T(u.current > 0);
20
- }, []), S = H((b) => {
21
- e(b);
22
- }, []), s = {
17
+ const [r, e] = h(null), [o, c] = h("medium"), [i, S] = h("full"), [s, m] = h("default"), d = E(z()), u = D((l) => {
18
+ d.current.registerScopedSheetDepth(l);
19
+ }, []), f = D((l) => {
20
+ e(l);
21
+ }, []), x = {
23
22
  small: "12px",
24
23
  medium: "14px",
25
24
  large: "16px"
26
- }[l], O = `${D[m]}px`, R = v(
25
+ }[o], b = `${P[s]}px`, T = g(
27
26
  () => ({
28
- gridApi: o,
29
- registerApi: S,
30
- registerScopedSheetDepth: x,
31
- fontSize: l,
27
+ gridApi: r,
28
+ registerApi: f,
29
+ registerScopedSheetDepth: u,
30
+ fontSize: o,
32
31
  setFontSize: c,
33
- numericFormat: h,
34
- setNumericFormat: d,
35
- rowHeight: m,
36
- setRowHeight: f
32
+ numericFormat: i,
33
+ setNumericFormat: S,
34
+ rowHeight: s,
35
+ setRowHeight: m
37
36
  }),
38
37
  [
38
+ r,
39
+ f,
40
+ u,
39
41
  o,
40
- S,
41
- x,
42
- l,
43
- c,
44
- h,
45
- d,
46
- m,
47
- f
42
+ i,
43
+ s
48
44
  ]
49
- ), G = v(
50
- () => ({
51
- sheetTarget: r,
52
- setSheetTarget: p,
53
- scopedSheetOpen: g
54
- }),
55
- [r, p, g]
56
45
  );
57
- return /* @__PURE__ */ n(F.Provider, { value: R, children: /* @__PURE__ */ n(M.Provider, { value: G, children: /* @__PURE__ */ n(
58
- "div",
46
+ return /* @__PURE__ */ n(F.Provider, { value: T, children: /* @__PURE__ */ n(
47
+ N.Provider,
59
48
  {
60
- "data-component": "data-table",
61
- className: w(
62
- "flex flex-col w-full min-h-0 rounded-[inherit]",
63
- t
64
- ),
65
- style: {
66
- "--ag-font-size": s,
67
- "--ag-row-height": O
68
- },
69
- children: i
49
+ value: d.current,
50
+ children: /* @__PURE__ */ n(
51
+ "div",
52
+ {
53
+ "data-component": "data-table",
54
+ className: H(
55
+ "flex flex-col w-full min-h-0 rounded-[inherit]",
56
+ t
57
+ ),
58
+ style: {
59
+ "--ag-font-size": x,
60
+ "--ag-row-height": b
61
+ },
62
+ children: a
63
+ }
64
+ )
70
65
  }
71
- ) }) });
72
- }, _ = {
66
+ ) });
67
+ }, w = {
73
68
  full: "full_no",
74
69
  k: "thou",
75
70
  m: "mil",
76
71
  b: "bil",
77
72
  full_precision: "full_precision"
78
- }, k = N(function() {
79
- const { setSheetTarget: t, scopedSheetOpen: o } = P();
73
+ }, k = v(function() {
74
+ const { setSheetTarget: t } = A();
80
75
  return /* @__PURE__ */ n(
81
76
  "div",
82
77
  {
83
78
  ref: t,
84
- className: "absolute inset-0 pointer-events-none z-[39] flex overflow-x-hidden overflow-y-visible",
85
- style: o ? { minHeight: A } : void 0
79
+ className: "absolute inset-0 pointer-events-none z-[39] flex overflow-x-hidden overflow-y-visible"
80
+ }
81
+ );
82
+ }), L = v(function({
83
+ className: t,
84
+ children: r
85
+ }) {
86
+ const { scopedSheetOpen: e } = A();
87
+ return /* @__PURE__ */ G(
88
+ "div",
89
+ {
90
+ className: H(
91
+ "relative flex-1 min-h-0 w-full bg-canvas-elevated rounded-b-[inherit] grid-rounded-bottom",
92
+ t
93
+ ),
94
+ style: e ? { minHeight: B } : void 0,
95
+ children: [
96
+ r,
97
+ /* @__PURE__ */ n(k, {})
98
+ ]
99
+ }
100
+ );
101
+ }), W = v(function({
102
+ resolvedRowHeight: t,
103
+ mergedContext: r,
104
+ onGridReady: e,
105
+ columnDefs: o,
106
+ maintainColumnOrder: c = !0,
107
+ ...i
108
+ }) {
109
+ return /* @__PURE__ */ n(
110
+ O,
111
+ {
112
+ ...i,
113
+ columnDefs: o,
114
+ rowHeight: t,
115
+ onGridReady: e,
116
+ context: r,
117
+ maintainColumnOrder: c
86
118
  }
87
119
  );
88
120
  });
89
- function $(i) {
121
+ function Z(a) {
90
122
  const {
91
123
  registerApi: t,
92
- rowHeight: o,
124
+ rowHeight: r,
93
125
  gridApi: e,
94
- numericFormat: r
95
- } = j(), { scopedSheetOpen: p } = P(), {
96
- className: l,
97
- onGridReady: c,
98
- rowHeight: h,
99
- context: d,
126
+ numericFormat: o
127
+ } = I(), {
128
+ className: c,
129
+ onGridReady: i,
130
+ rowHeight: S,
131
+ context: s,
100
132
  columnDefs: m,
101
- maintainColumnOrder: f = !0,
102
- ...g
103
- } = i, T = D[o], u = h ?? T, x = v(
133
+ initialState: d,
134
+ maintainColumnOrder: u = !0,
135
+ ...f
136
+ } = a, x = P[r], b = S ?? x, { runtimeColumnDefs: T, extractedRuntimeDefaults: l } = g(
137
+ () => M(m ?? void 0),
138
+ [m]
139
+ ), _ = g(
140
+ () => j(d, l),
141
+ [d, l]
142
+ ), C = g(
104
143
  () => ({
105
- ...d,
106
- formatType: _[r]
144
+ ...s,
145
+ formatType: w[o]
107
146
  }),
108
- [d, r]
147
+ [s, o]
109
148
  );
110
149
  y(() => {
111
150
  e?.resetRowHeights();
112
- }, [o, e]), y(() => {
151
+ }, [r, e]), y(() => {
113
152
  if (e) {
114
- const s = e.getGridOption("context") || {};
153
+ const p = e.getGridOption("context") || {};
115
154
  e.setGridOption("context", {
116
- ...s,
117
- formatType: _[r]
155
+ ...p,
156
+ formatType: w[o]
118
157
  }), e.refreshCells({ force: !0 });
119
158
  }
120
- }, [r, e]);
121
- const S = H(
122
- (s) => {
123
- t(s.api), c?.(s);
159
+ }, [o, e]);
160
+ const R = D(
161
+ (p) => {
162
+ t(p.api), i?.(p);
124
163
  },
125
- [t, c]
164
+ [t, i]
126
165
  );
127
- return /* @__PURE__ */ C(
128
- "div",
166
+ return /* @__PURE__ */ n(L, { className: c, children: /* @__PURE__ */ n(
167
+ W,
129
168
  {
130
- className: w(
131
- "relative flex-1 min-h-0 w-full bg-canvas-elevated rounded-b-[inherit] grid-rounded-bottom",
132
- l
133
- ),
134
- style: p ? { minHeight: A } : void 0,
135
- children: [
136
- /* @__PURE__ */ n(
137
- z,
138
- {
139
- ...g,
140
- columnDefs: m,
141
- rowHeight: u,
142
- onGridReady: S,
143
- context: x,
144
- maintainColumnOrder: f
145
- }
146
- ),
147
- /* @__PURE__ */ n(k, {})
148
- ]
169
+ ...f,
170
+ columnDefs: T,
171
+ initialState: _,
172
+ maintainColumnOrder: u,
173
+ resolvedRowHeight: b,
174
+ mergedContext: C,
175
+ onGridReady: R
149
176
  }
150
- );
177
+ ) });
151
178
  }
152
- const q = ({
153
- children: i,
179
+ const ee = ({
180
+ children: a,
154
181
  className: t
155
182
  }) => /* @__PURE__ */ n(
156
183
  "div",
157
184
  {
158
185
  "data-component": "data-table-toolbar",
159
- className: w(
186
+ className: H(
160
187
  "flex items-center justify-between px-4 py-3 shrink-0 bg-canvas-elevated rounded-t-[inherit]",
161
188
  t
162
189
  ),
163
- children: i
190
+ children: a
164
191
  }
165
192
  );
166
193
  export {
167
- Y as DataTable,
168
- $ as DataTableContent,
169
- q as DataTableToolbar
194
+ U as DataTable,
195
+ Z as DataTableContent,
196
+ ee as DataTableToolbar
170
197
  };
@@ -1,9 +1,44 @@
1
1
  import { AgGridWrapperProps } from '../ag-grid-react/ag-grid.types';
2
2
  import type * as React from "react";
3
+ /**
4
+ * Root layout provider for data tables. Compose toolbar, sheet, and `DataTableContent` as children.
5
+ */
3
6
  export type DataTableProps = {
4
7
  children: React.ReactNode;
5
8
  className?: string;
6
9
  };
10
+ /**
11
+ * AG Grid surface — forwards native `AgGridReact` props (rowData, columnDefs, rowModelType, treeData, …)
12
+ * with Impact Nova styling. See https://www.ag-grid.com/react-data-grid/grid-options/
13
+ */
7
14
  export type DataTableContentProps<TData = unknown> = AgGridWrapperProps<TData> & {
8
15
  className?: string;
9
16
  };
17
+ /**
18
+ * Top bar above the grid. Optional — omit to remove the toolbar from the DOM.
19
+ *
20
+ * Layout is `justify-between`: place a title or context on the left, actions on the right
21
+ * (filter toggle, `DataTableSheet` / view menu, export, density, saved views).
22
+ */
23
+ export type DataTableToolbarProps = {
24
+ /** Toolbar slots — typically title (left) and action buttons / `DataTableSheet` (right). */
25
+ children: React.ReactNode;
26
+ /** Extra classes on the toolbar root (`data-component="data-table-toolbar"`). */
27
+ className?: string;
28
+ };
29
+ /**
30
+ * Scoped settings panel state. Renders inside the `DataTable` container (not a viewport modal).
31
+ *
32
+ * Compose `DataTableSheetContent` for the slide-in panel, triggers from the toolbar or view menu,
33
+ * and optional `DataTableColumnList` / `DataTableSavedViews` inside the sheet body.
34
+ */
35
+ export type DataTableSheetProps = {
36
+ /** Sheet subtree — typically `DataTableSheetContent`, triggers, and settings panels. */
37
+ children: React.ReactNode;
38
+ /** Initial open state when `open` is not provided (uncontrolled). */
39
+ defaultOpen?: boolean;
40
+ /** Controlled open state. Pair with `onOpenChange`. */
41
+ open?: boolean;
42
+ /** Called when the user opens or closes the sheet. */
43
+ onOpenChange?: (open: boolean) => void;
44
+ };
@@ -1,40 +1,41 @@
1
1
  import { DataTable as t, DataTableContent as o, DataTableToolbar as r } from "./data-table.js";
2
2
  import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as l, TABLE_VIEWPORT_SHELL_EXPANDED_CLASS as D } from "./data-table-constants.js";
3
- import { DataTableColumnList as b } from "./data-table-column-list.js";
4
- import { DataTableContext as S, DataTableSheetPortalContext as m, useDataTable as p, useDataTableSheetPortal as x } from "./data-table-context.js";
5
- import { DataTableFormatOptions as u } from "./data-table-format-options.js";
6
- import { DataTableSheet as _, DataTableSheetContent as h, DataTableSheetHeader as s, DataTableSheetTrigger as C } from "./data-table-sheet.js";
3
+ import { DataTableColumnList as n } from "./data-table-column-list.js";
4
+ import { DataTableContext as i, DataTableSheetPortalStoreContext as m, useDataTable as p, useDataTableSheetPortal as x, useDataTableSheetPortalStore as f } from "./data-table-context.js";
5
+ import { DataTableFormatOptions as E } from "./data-table-format-options.js";
6
+ import { DataTableSheet as h, DataTableSheetContent as s, DataTableSheetHeader as C, DataTableSheetTrigger as w } from "./data-table-sheet.js";
7
7
  import { useDataTableSheet as V, useDataTableSheetApi as A } from "./data-table-sheet-context.js";
8
- import { DataTableViewMenuContent as P, DataTableViewMenuDensity as d, DataTableViewMenuSettingsItem as g, DataTableViewMenuTrigger as H, DataTableViewMenuViewportExpand as I } from "./data-table-view-menu.js";
9
- import { DataTableSavedViews as O } from "./data-table-saved-views.js";
10
- import { PinSwitch as B } from "./pin-switch.js";
11
- import { ColumnIndicator as X } from "./column-indicator.js";
12
- import { IndicatorLegend as y } from "./indicator-legend.js";
8
+ import { DataTableViewMenuContent as d, DataTableViewMenuDensity as g, DataTableViewMenuSettingsItem as H, DataTableViewMenuTrigger as I, DataTableViewMenuViewportExpand as M } from "./data-table-view-menu.js";
9
+ import { DataTableSavedViews as c } from "./data-table-saved-views.js";
10
+ import { PinSwitch as N } from "./pin-switch.js";
11
+ import { ColumnIndicator as v } from "./column-indicator.js";
12
+ import { IndicatorLegend as F } from "./indicator-legend.js";
13
13
  export {
14
- X as ColumnIndicator,
14
+ v as ColumnIndicator,
15
15
  l as DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX,
16
16
  t as DataTable,
17
- b as DataTableColumnList,
17
+ n as DataTableColumnList,
18
18
  o as DataTableContent,
19
- S as DataTableContext,
20
- u as DataTableFormatOptions,
21
- O as DataTableSavedViews,
22
- _ as DataTableSheet,
23
- h as DataTableSheetContent,
24
- s as DataTableSheetHeader,
25
- m as DataTableSheetPortalContext,
26
- C as DataTableSheetTrigger,
19
+ i as DataTableContext,
20
+ E as DataTableFormatOptions,
21
+ c as DataTableSavedViews,
22
+ h as DataTableSheet,
23
+ s as DataTableSheetContent,
24
+ C as DataTableSheetHeader,
25
+ m as DataTableSheetPortalStoreContext,
26
+ w as DataTableSheetTrigger,
27
27
  r as DataTableToolbar,
28
- P as DataTableViewMenuContent,
29
- d as DataTableViewMenuDensity,
30
- g as DataTableViewMenuSettingsItem,
31
- H as DataTableViewMenuTrigger,
32
- I as DataTableViewMenuViewportExpand,
33
- y as IndicatorLegend,
34
- B as PinSwitch,
28
+ d as DataTableViewMenuContent,
29
+ g as DataTableViewMenuDensity,
30
+ H as DataTableViewMenuSettingsItem,
31
+ I as DataTableViewMenuTrigger,
32
+ M as DataTableViewMenuViewportExpand,
33
+ F as IndicatorLegend,
34
+ N as PinSwitch,
35
35
  D as TABLE_VIEWPORT_SHELL_EXPANDED_CLASS,
36
36
  p as useDataTable,
37
37
  V as useDataTableSheet,
38
38
  A as useDataTableSheetApi,
39
- x as useDataTableSheetPortal
39
+ x as useDataTableSheetPortal,
40
+ f as useDataTableSheetPortalStore
40
41
  };
@@ -1,15 +1,15 @@
1
1
  import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import { useImpactNovaI18n as r } from "../../../i18n/use-impact-nova-i18n.js";
3
- import { ColumnIndicator as n } from "./column-indicator.js";
2
+ import { useImpactNovaI18n as n } from "../../../i18n/use-impact-nova-i18n.js";
3
+ import { ColumnIndicator as r } from "./column-indicator.js";
4
4
  const i = () => {
5
- const { t: a } = r();
6
- return /* @__PURE__ */ t("div", { className: "flex items-center gap-3 text-[10px] text-content-muted", "data-component": "indicator-legend", children: [
5
+ const { t: a } = n();
6
+ return /* @__PURE__ */ t("div", { className: "flex items-center gap-3 text-[10px] text-secondary-foreground", "data-component": "indicator-legend", children: [
7
7
  /* @__PURE__ */ t("div", { className: "flex items-center gap-1", children: [
8
- /* @__PURE__ */ e(n, { type: "sort" }),
8
+ /* @__PURE__ */ e(r, { type: "sort" }),
9
9
  /* @__PURE__ */ e("span", { children: a("dataTable.indicatorSort") })
10
10
  ] }),
11
11
  /* @__PURE__ */ t("div", { className: "flex items-center gap-1", children: [
12
- /* @__PURE__ */ e(n, { type: "filter" }),
12
+ /* @__PURE__ */ e(r, { type: "filter" }),
13
13
  /* @__PURE__ */ e("span", { children: a("dataTable.indicatorSearch") })
14
14
  ] })
15
15
  ] });