@12-apps/ui 6.13.1 → 6.14.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 (142) hide show
  1. package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
  2. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  3. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  4. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  5. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  6. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  7. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +24 -21
  8. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +29 -26
  9. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
  11. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  12. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  13. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +5 -5
  14. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +20 -18
  16. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +12 -0
  17. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js.map +1 -0
  18. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +7 -7
  19. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +5 -5
  20. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +6 -6
  21. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
  22. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +8 -0
  23. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js.map +1 -0
  24. package/dist/_internal/components/data-display/DataViews/data-views-selection.js +1 -1
  25. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
  26. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +1 -1
  27. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
  28. package/dist/_internal/components/data-display/DataViews/data-views-writers.js +9 -0
  29. package/dist/_internal/components/data-display/DataViews/data-views-writers.js.map +1 -0
  30. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -2
  31. package/dist/_internal/components/data-display/index.js +23 -23
  32. package/dist/_internal/components/index.js +24 -24
  33. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  34. package/dist/_internal/components/layout/index.js +1 -1
  35. package/dist/charts.js +17 -17
  36. package/dist/{chunk-BV5XTGKB.js → chunk-2UCJJACD.js} +7 -9
  37. package/dist/chunk-2UCJJACD.js.map +1 -0
  38. package/dist/{chunk-JKLWHENB.js → chunk-62WEMJV3.js} +3 -3
  39. package/dist/chunk-62WEMJV3.js.map +1 -0
  40. package/dist/chunk-A4YWFX5C.js +39 -0
  41. package/dist/chunk-A4YWFX5C.js.map +1 -0
  42. package/dist/{chunk-CXA6UNFF.js → chunk-AP3PVR3T.js} +5 -5
  43. package/dist/{chunk-NPEKJXVV.js → chunk-BPCYXLWY.js} +7 -7
  44. package/dist/{chunk-XULTDO56.js → chunk-BVGR7OYA.js} +4 -4
  45. package/dist/{chunk-BZTFPSWT.js → chunk-DFLTUI7W.js} +7 -7
  46. package/dist/{chunk-AWTERXCW.js → chunk-GNAAHDCN.js} +4 -2
  47. package/dist/chunk-GNAAHDCN.js.map +1 -0
  48. package/dist/{chunk-HGBZZDP6.js → chunk-J4DDXHLB.js} +4 -4
  49. package/dist/chunk-KX75HM5U.js +20 -0
  50. package/dist/chunk-KX75HM5U.js.map +1 -0
  51. package/dist/chunk-LLZWB32X.js +36 -0
  52. package/dist/chunk-LLZWB32X.js.map +1 -0
  53. package/dist/{chunk-T4BFDZGU.js → chunk-LNIVT62P.js} +16 -40
  54. package/dist/chunk-LNIVT62P.js.map +1 -0
  55. package/dist/{chunk-WLCVOQCJ.js → chunk-LPNF4YJ7.js} +3 -3
  56. package/dist/{chunk-QQE2PVLO.js → chunk-M6365FGG.js} +2 -2
  57. package/dist/{chunk-RDYBS45D.js → chunk-O6MZPB64.js} +2 -2
  58. package/dist/{chunk-4KSOSI3U.js → chunk-O6V7KKW7.js} +4 -4
  59. package/dist/{chunk-JPDKRGYI.js → chunk-PDGAFQ6Z.js} +3 -3
  60. package/dist/{chunk-IN642YHK.js → chunk-PHA3NFZM.js} +2 -2
  61. package/dist/{chunk-NC2AATCC.js → chunk-QIKTIKO6.js} +2 -2
  62. package/dist/{chunk-GOWBYHYW.js → chunk-R6SBP5M5.js} +4 -4
  63. package/dist/{chunk-X5MPHXG5.js → chunk-RPWEXIAW.js} +6 -6
  64. package/dist/{chunk-2WWKBD4D.js → chunk-TSPHRZ4U.js} +5 -1
  65. package/dist/chunk-TSPHRZ4U.js.map +1 -0
  66. package/dist/chunk-U5FOJBLG.js +19 -0
  67. package/dist/chunk-U5FOJBLG.js.map +1 -0
  68. package/dist/{chunk-DEOC5OI7.js → chunk-U5RIDMMV.js} +2 -2
  69. package/dist/chunk-U5RIDMMV.js.map +1 -0
  70. package/dist/{chunk-ZHPKFV7Y.js → chunk-UENDC45F.js} +2 -2
  71. package/dist/{chunk-WXBBWSNU.js → chunk-ZNGUDGKW.js} +6 -5
  72. package/dist/chunk-ZNGUDGKW.js.map +1 -0
  73. package/dist/data-display/CardKit.js +7 -7
  74. package/dist/data-display/Carousel.js +4 -4
  75. package/dist/data-display/Chart.js +17 -17
  76. package/dist/data-display/DataGrid.js +2 -2
  77. package/dist/data-display/DataViews.js +38 -35
  78. package/dist/layout/ContentToolbar.js +1 -1
  79. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts +12 -0
  80. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts.map +1 -1
  81. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts +3 -0
  82. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  83. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts +3 -0
  84. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  85. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts +18 -0
  86. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts.map +1 -0
  87. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +50 -0
  88. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -0
  89. package/dist/types/components/data-display/DataViews/data-views-selection.d.ts +31 -2
  90. package/dist/types/components/data-display/DataViews/data-views-selection.d.ts.map +1 -1
  91. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  92. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  93. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  94. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  95. package/dist/types/components/data-display/DataViews/data-views-writers.d.ts +20 -0
  96. package/dist/types/components/data-display/DataViews/data-views-writers.d.ts.map +1 -0
  97. package/dist/types/components/data-display/DataViews/index.d.ts +1 -0
  98. package/dist/types/components/data-display/DataViews/index.d.ts.map +1 -1
  99. package/dist/types/components/data-display/DataViews/use-data-views-state.d.ts.map +1 -1
  100. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  101. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  102. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +15 -0
  103. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/src/components/data-display/DataViews/DataViewsGrid.tsx +12 -0
  106. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +3 -0
  107. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +5 -50
  108. package/src/components/data-display/DataViews/data-views-header-row.tsx +52 -0
  109. package/src/components/data-display/DataViews/data-views-selection-extra.ts +67 -0
  110. package/src/components/data-display/DataViews/data-views-selection.ts +61 -6
  111. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  112. package/src/components/data-display/DataViews/data-views-toolbar.tsx +3 -0
  113. package/src/components/data-display/DataViews/data-views-writers.ts +45 -0
  114. package/src/components/data-display/DataViews/index.ts +1 -0
  115. package/src/components/data-display/DataViews/use-data-views-state.ts +4 -11
  116. package/src/components/layout/ContentToolbar/ContentToolbar.md +10 -3
  117. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +5 -0
  118. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +15 -0
  119. package/dist/chunk-2WWKBD4D.js.map +0 -1
  120. package/dist/chunk-AWTERXCW.js.map +0 -1
  121. package/dist/chunk-BV5XTGKB.js.map +0 -1
  122. package/dist/chunk-DEOC5OI7.js.map +0 -1
  123. package/dist/chunk-JKLWHENB.js.map +0 -1
  124. package/dist/chunk-T4BFDZGU.js.map +0 -1
  125. package/dist/chunk-WTOTWP6A.js +0 -27
  126. package/dist/chunk-WTOTWP6A.js.map +0 -1
  127. package/dist/chunk-WXBBWSNU.js.map +0 -1
  128. /package/dist/{chunk-CXA6UNFF.js.map → chunk-AP3PVR3T.js.map} +0 -0
  129. /package/dist/{chunk-NPEKJXVV.js.map → chunk-BPCYXLWY.js.map} +0 -0
  130. /package/dist/{chunk-XULTDO56.js.map → chunk-BVGR7OYA.js.map} +0 -0
  131. /package/dist/{chunk-BZTFPSWT.js.map → chunk-DFLTUI7W.js.map} +0 -0
  132. /package/dist/{chunk-HGBZZDP6.js.map → chunk-J4DDXHLB.js.map} +0 -0
  133. /package/dist/{chunk-WLCVOQCJ.js.map → chunk-LPNF4YJ7.js.map} +0 -0
  134. /package/dist/{chunk-QQE2PVLO.js.map → chunk-M6365FGG.js.map} +0 -0
  135. /package/dist/{chunk-RDYBS45D.js.map → chunk-O6MZPB64.js.map} +0 -0
  136. /package/dist/{chunk-4KSOSI3U.js.map → chunk-O6V7KKW7.js.map} +0 -0
  137. /package/dist/{chunk-JPDKRGYI.js.map → chunk-PDGAFQ6Z.js.map} +0 -0
  138. /package/dist/{chunk-IN642YHK.js.map → chunk-PHA3NFZM.js.map} +0 -0
  139. /package/dist/{chunk-NC2AATCC.js.map → chunk-QIKTIKO6.js.map} +0 -0
  140. /package/dist/{chunk-GOWBYHYW.js.map → chunk-R6SBP5M5.js.map} +0 -0
  141. /package/dist/{chunk-X5MPHXG5.js.map → chunk-RPWEXIAW.js.map} +0 -0
  142. /package/dist/{chunk-ZHPKFV7Y.js.map → chunk-UENDC45F.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  ShellToolbar
4
- } from "../../../../chunk-AWTERXCW.js";
5
- import "../../../../chunk-WXBBWSNU.js";
6
- import "../../../../chunk-NQCYVYP3.js";
7
- import "../../../../chunk-HGBZZDP6.js";
8
- import "../../../../chunk-2PPWKCMW.js";
4
+ } from "../../../../chunk-GNAAHDCN.js";
5
+ import "../../../../chunk-ZNGUDGKW.js";
6
+ import "../../../../chunk-J4DDXHLB.js";
9
7
  import "../../../../chunk-SCGVB7DS.js";
8
+ import "../../../../chunk-2PPWKCMW.js";
10
9
  import "../../../../chunk-SNR537TI.js";
10
+ import "../../../../chunk-NQCYVYP3.js";
11
11
  import "../../../../chunk-ZPIMPOHV.js";
12
12
  import "../../../../chunk-QTPKACVO.js";
13
13
  import "../../../../chunk-5VZPVDUF.js";
@@ -21,7 +21,7 @@ import "../../../../chunk-EFEZWG4C.js";
21
21
  import "../../../../chunk-4T6W43TO.js";
22
22
  import "../../../../chunk-YB6MDGPR.js";
23
23
  import "../../../../chunk-LVCUJ7YU.js";
24
- import "../../../../chunk-2WWKBD4D.js";
24
+ import "../../../../chunk-TSPHRZ4U.js";
25
25
  import "../../../../chunk-JMVIIKII.js";
26
26
  import "../../../../chunk-WXD7MGBT.js";
27
27
  import "../../../../chunk-PGM5RRQO.js";
@@ -15,7 +15,7 @@ import "../../../../chunk-EFEZWG4C.js";
15
15
  import "../../../../chunk-4T6W43TO.js";
16
16
  import "../../../../chunk-YB6MDGPR.js";
17
17
  import "../../../../chunk-LVCUJ7YU.js";
18
- import "../../../../chunk-2WWKBD4D.js";
18
+ import "../../../../chunk-TSPHRZ4U.js";
19
19
  import "../../../../chunk-JMVIIKII.js";
20
20
  import "../../../../chunk-WXD7MGBT.js";
21
21
  import "../../../../chunk-4PJ52YBO.js";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  GridToolbar
4
- } from "../../../../chunk-WXBBWSNU.js";
5
- import "../../../../chunk-NQCYVYP3.js";
6
- import "../../../../chunk-HGBZZDP6.js";
7
- import "../../../../chunk-2PPWKCMW.js";
4
+ } from "../../../../chunk-ZNGUDGKW.js";
5
+ import "../../../../chunk-J4DDXHLB.js";
8
6
  import "../../../../chunk-SCGVB7DS.js";
7
+ import "../../../../chunk-2PPWKCMW.js";
9
8
  import "../../../../chunk-SNR537TI.js";
9
+ import "../../../../chunk-NQCYVYP3.js";
10
10
  import "../../../../chunk-ZPIMPOHV.js";
11
11
  import "../../../../chunk-QTPKACVO.js";
12
12
  import "../../../../chunk-5VZPVDUF.js";
@@ -20,7 +20,7 @@ import "../../../../chunk-EFEZWG4C.js";
20
20
  import "../../../../chunk-4T6W43TO.js";
21
21
  import "../../../../chunk-YB6MDGPR.js";
22
22
  import "../../../../chunk-LVCUJ7YU.js";
23
- import "../../../../chunk-2WWKBD4D.js";
23
+ import "../../../../chunk-TSPHRZ4U.js";
24
24
  import "../../../../chunk-JMVIIKII.js";
25
25
  import "../../../../chunk-WXD7MGBT.js";
26
26
  import "../../../../chunk-PGM5RRQO.js";
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ useStateWriters
4
+ } from "../../../../chunk-U5FOJBLG.js";
5
+ import "../../../../chunk-PZ5AY32C.js";
6
+ export {
7
+ useStateWriters
8
+ };
9
+ //# sourceMappingURL=data-views-writers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  useDataViewsState
4
- } from "../../../../chunk-BV5XTGKB.js";
4
+ } from "../../../../chunk-2UCJJACD.js";
5
5
  import "../../../../chunk-4QQVIGRG.js";
6
6
  import "../../../../chunk-YGQX7BNI.js";
7
7
  import "../../../../chunk-IMLIIW77.js";
8
- import "../../../../chunk-WTOTWP6A.js";
8
+ import "../../../../chunk-LLZWB32X.js";
9
9
  import "../../../../chunk-LYKV3C7B.js";
10
+ import "../../../../chunk-U5FOJBLG.js";
10
11
  import "../../../../chunk-5VZPVDUF.js";
11
12
  import "../../../../chunk-LHHAYZ55.js";
12
13
  import "../../../../chunk-KHG57NAE.js";
@@ -117,11 +117,11 @@ import "../../../chunk-FS4X3VDA.js";
117
117
  import "../../../chunk-L5CPOEDP.js";
118
118
  import {
119
119
  DataGrid
120
- } from "../../../chunk-X5MPHXG5.js";
120
+ } from "../../../chunk-RPWEXIAW.js";
121
+ import "../../../chunk-5E3XZAED.js";
121
122
  import "../../../chunk-DLJGBJZW.js";
122
123
  import "../../../chunk-KZLLTOB2.js";
123
124
  import "../../../chunk-E5LWJDI3.js";
124
- import "../../../chunk-5E3XZAED.js";
125
125
  import "../../../chunk-G3E66C6J.js";
126
126
  import "../../../chunk-SNCSGLJ6.js";
127
127
  import {
@@ -175,27 +175,35 @@ import "../../../chunk-2YEZONLX.js";
175
175
  import "../../../chunk-62FET2BM.js";
176
176
  import {
177
177
  Carousel
178
- } from "../../../chunk-NPEKJXVV.js";
179
- import "../../../chunk-5QXSPLWU.js";
180
- import "../../../chunk-Z56IO7OV.js";
178
+ } from "../../../chunk-BPCYXLWY.js";
181
179
  import "../../../chunk-WIXUMFU7.js";
180
+ import "../../../chunk-RUIV5TVA.js";
181
+ import "../../../chunk-5QXSPLWU.js";
182
182
  import {
183
183
  CarouselArrows,
184
184
  CarouselIndicators,
185
185
  CarouselThumbnails
186
186
  } from "../../../chunk-2XGM5PDA.js";
187
- import "../../../chunk-RUIV5TVA.js";
187
+ import "../../../chunk-Z56IO7OV.js";
188
188
  import "../../../chunk-5KLSLD72.js";
189
189
  import {
190
190
  SpecChart
191
- } from "../../../chunk-JPDKRGYI.js";
191
+ } from "../../../chunk-PDGAFQ6Z.js";
192
192
  import {
193
193
  Chart
194
- } from "../../../chunk-CXA6UNFF.js";
195
- import "../../../chunk-XULTDO56.js";
196
- import "../../../chunk-XSKVBGCZ.js";
197
- import "../../../chunk-AVU6KU27.js";
198
- import "../../../chunk-4V532JF6.js";
194
+ } from "../../../chunk-AP3PVR3T.js";
195
+ import {
196
+ CHART_SEMANTIC_COLORS,
197
+ ChartSpecError,
198
+ parseChartSpec,
199
+ specToChartProps
200
+ } from "../../../chunk-R6SBP5M5.js";
201
+ import {
202
+ getChartSpecRenderer,
203
+ getRegisteredChartSpecTypes,
204
+ registerChartSpecRenderer
205
+ } from "../../../chunk-WKUA6P3W.js";
206
+ import "../../../chunk-BVGR7OYA.js";
199
207
  import {
200
208
  ChartContainer,
201
209
  ChartLegend,
@@ -203,21 +211,13 @@ import {
203
211
  ChartTooltip,
204
212
  ChartTooltipContent
205
213
  } from "../../../chunk-M5T3COS2.js";
206
- import {
207
- CHART_SEMANTIC_COLORS,
208
- ChartSpecError,
209
- parseChartSpec,
210
- specToChartProps
211
- } from "../../../chunk-GOWBYHYW.js";
212
214
  import {
213
215
  chartValueFormatter,
214
216
  formatChartValue
215
217
  } from "../../../chunk-QVWNK4JO.js";
216
- import {
217
- getChartSpecRenderer,
218
- getRegisteredChartSpecTypes,
219
- registerChartSpecRenderer
220
- } from "../../../chunk-WKUA6P3W.js";
218
+ import "../../../chunk-XSKVBGCZ.js";
219
+ import "../../../chunk-AVU6KU27.js";
220
+ import "../../../chunk-4V532JF6.js";
221
221
  import {
222
222
  Avatar,
223
223
  AvatarGroup
@@ -526,7 +526,7 @@ import {
526
526
  } from "../../chunk-LVCUJ7YU.js";
527
527
  import {
528
528
  ContentToolbar
529
- } from "../../chunk-2WWKBD4D.js";
529
+ } from "../../chunk-TSPHRZ4U.js";
530
530
  import {
531
531
  ColumnsMenu
532
532
  } from "../../chunk-JMVIIKII.js";
@@ -607,11 +607,11 @@ import {
607
607
  import "../../chunk-L5CPOEDP.js";
608
608
  import {
609
609
  DataGrid
610
- } from "../../chunk-X5MPHXG5.js";
610
+ } from "../../chunk-RPWEXIAW.js";
611
+ import "../../chunk-5E3XZAED.js";
611
612
  import "../../chunk-DLJGBJZW.js";
612
613
  import "../../chunk-KZLLTOB2.js";
613
614
  import "../../chunk-E5LWJDI3.js";
614
- import "../../chunk-5E3XZAED.js";
615
615
  import "../../chunk-G3E66C6J.js";
616
616
  import "../../chunk-SNCSGLJ6.js";
617
617
  import {
@@ -667,27 +667,35 @@ import "../../chunk-2YEZONLX.js";
667
667
  import "../../chunk-62FET2BM.js";
668
668
  import {
669
669
  Carousel
670
- } from "../../chunk-NPEKJXVV.js";
671
- import "../../chunk-5QXSPLWU.js";
672
- import "../../chunk-Z56IO7OV.js";
670
+ } from "../../chunk-BPCYXLWY.js";
673
671
  import "../../chunk-WIXUMFU7.js";
672
+ import "../../chunk-RUIV5TVA.js";
673
+ import "../../chunk-5QXSPLWU.js";
674
674
  import {
675
675
  CarouselArrows,
676
676
  CarouselIndicators,
677
677
  CarouselThumbnails
678
678
  } from "../../chunk-2XGM5PDA.js";
679
- import "../../chunk-RUIV5TVA.js";
679
+ import "../../chunk-Z56IO7OV.js";
680
680
  import "../../chunk-5KLSLD72.js";
681
681
  import {
682
682
  SpecChart
683
- } from "../../chunk-JPDKRGYI.js";
683
+ } from "../../chunk-PDGAFQ6Z.js";
684
684
  import {
685
685
  Chart
686
- } from "../../chunk-CXA6UNFF.js";
687
- import "../../chunk-XULTDO56.js";
688
- import "../../chunk-XSKVBGCZ.js";
689
- import "../../chunk-AVU6KU27.js";
690
- import "../../chunk-4V532JF6.js";
686
+ } from "../../chunk-AP3PVR3T.js";
687
+ import {
688
+ CHART_SEMANTIC_COLORS,
689
+ ChartSpecError,
690
+ parseChartSpec,
691
+ specToChartProps
692
+ } from "../../chunk-R6SBP5M5.js";
693
+ import {
694
+ getChartSpecRenderer,
695
+ getRegisteredChartSpecTypes,
696
+ registerChartSpecRenderer
697
+ } from "../../chunk-WKUA6P3W.js";
698
+ import "../../chunk-BVGR7OYA.js";
691
699
  import {
692
700
  ChartContainer,
693
701
  ChartLegend,
@@ -695,21 +703,13 @@ import {
695
703
  ChartTooltip,
696
704
  ChartTooltipContent
697
705
  } from "../../chunk-M5T3COS2.js";
698
- import {
699
- CHART_SEMANTIC_COLORS,
700
- ChartSpecError,
701
- parseChartSpec,
702
- specToChartProps
703
- } from "../../chunk-GOWBYHYW.js";
704
706
  import {
705
707
  chartValueFormatter,
706
708
  formatChartValue
707
709
  } from "../../chunk-QVWNK4JO.js";
708
- import {
709
- getChartSpecRenderer,
710
- getRegisteredChartSpecTypes,
711
- registerChartSpecRenderer
712
- } from "../../chunk-WKUA6P3W.js";
710
+ import "../../chunk-XSKVBGCZ.js";
711
+ import "../../chunk-AVU6KU27.js";
712
+ import "../../chunk-4V532JF6.js";
713
713
  import "../../chunk-6GP2DOOO.js";
714
714
  import {
715
715
  Heading
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  ContentToolbar
4
- } from "../../../../chunk-2WWKBD4D.js";
4
+ } from "../../../../chunk-TSPHRZ4U.js";
5
5
  import "../../../../chunk-PZ5AY32C.js";
6
6
  export {
7
7
  ContentToolbar
@@ -83,7 +83,7 @@ import {
83
83
  } from "../../../chunk-LVCUJ7YU.js";
84
84
  import {
85
85
  ContentToolbar
86
- } from "../../../chunk-2WWKBD4D.js";
86
+ } from "../../../chunk-TSPHRZ4U.js";
87
87
  import {
88
88
  ColumnsMenu
89
89
  } from "../../../chunk-JMVIIKII.js";
package/dist/charts.js CHANGED
@@ -1,14 +1,22 @@
1
1
  import "./chunk-5KLSLD72.js";
2
2
  import {
3
3
  SpecChart
4
- } from "./chunk-JPDKRGYI.js";
4
+ } from "./chunk-PDGAFQ6Z.js";
5
5
  import {
6
6
  Chart
7
- } from "./chunk-CXA6UNFF.js";
8
- import "./chunk-XULTDO56.js";
9
- import "./chunk-XSKVBGCZ.js";
10
- import "./chunk-AVU6KU27.js";
11
- import "./chunk-4V532JF6.js";
7
+ } from "./chunk-AP3PVR3T.js";
8
+ import {
9
+ CHART_SEMANTIC_COLORS,
10
+ ChartSpecError,
11
+ parseChartSpec,
12
+ specToChartProps
13
+ } from "./chunk-R6SBP5M5.js";
14
+ import {
15
+ getChartSpecRenderer,
16
+ getRegisteredChartSpecTypes,
17
+ registerChartSpecRenderer
18
+ } from "./chunk-WKUA6P3W.js";
19
+ import "./chunk-BVGR7OYA.js";
12
20
  import {
13
21
  ChartContainer,
14
22
  ChartLegend,
@@ -16,21 +24,13 @@ import {
16
24
  ChartTooltip,
17
25
  ChartTooltipContent
18
26
  } from "./chunk-M5T3COS2.js";
19
- import {
20
- CHART_SEMANTIC_COLORS,
21
- ChartSpecError,
22
- parseChartSpec,
23
- specToChartProps
24
- } from "./chunk-GOWBYHYW.js";
25
27
  import {
26
28
  chartValueFormatter,
27
29
  formatChartValue
28
30
  } from "./chunk-QVWNK4JO.js";
29
- import {
30
- getChartSpecRenderer,
31
- getRegisteredChartSpecTypes,
32
- registerChartSpecRenderer
33
- } from "./chunk-WKUA6P3W.js";
31
+ import "./chunk-XSKVBGCZ.js";
32
+ import "./chunk-AVU6KU27.js";
33
+ import "./chunk-4V532JF6.js";
34
34
  import "./chunk-I6PZVHIT.js";
35
35
  import "./chunk-7CA6GVBO.js";
36
36
  import "./chunk-PZ5AY32C.js";
@@ -11,11 +11,14 @@ import {
11
11
  } from "./chunk-IMLIIW77.js";
12
12
  import {
13
13
  useSelection
14
- } from "./chunk-WTOTWP6A.js";
14
+ } from "./chunk-LLZWB32X.js";
15
15
  import {
16
16
  resolveScope,
17
17
  useScopeConfigChecks
18
18
  } from "./chunk-LYKV3C7B.js";
19
+ import {
20
+ useStateWriters
21
+ } from "./chunk-U5FOJBLG.js";
19
22
  import {
20
23
  computeActiveFilterCount,
21
24
  defaultSortFields
@@ -38,10 +41,6 @@ function useMatchedRows(server, rows, columns, fields, rangeFields, state) {
38
41
  [server, rows, columns, fields, rangeFields, state.search, state.pills, state.ranges]
39
42
  );
40
43
  }
41
- function nextVisibleColumns(current, id, visible) {
42
- const without = current.filter((colId) => colId !== id);
43
- return visible ? [...without, id] : without;
44
- }
45
44
  function useStateSyncEffects(appliedState, syncState, state, onStateChange, setState) {
46
45
  const firstApplied = useRef(true);
47
46
  useEffect(() => {
@@ -132,7 +131,7 @@ function useDataViewsState({
132
131
  );
133
132
  const [filterOpen, setFilterOpen] = useState(false);
134
133
  useStateSyncEffects(appliedState, syncState, state, onStateChange, setState);
135
- const patch = (next) => setState((prev) => ({ ...prev, ...typeof next === "function" ? next(prev) : next }));
134
+ const { patch, toggleColumn } = useStateWriters(setState);
136
135
  const matched = useMatchedRows(server, rows, columns, fields, rangeFields, state);
137
136
  const scope = resolveScope(scopes, state.scope);
138
137
  const { changePage } = useServerQuery(server, state, scope);
@@ -142,8 +141,7 @@ function useDataViewsState({
142
141
  onRowClick,
143
142
  state.order
144
143
  );
145
- const toggleColumn = (id, visible) => setState((prev) => ({ ...prev, visibleColumns: nextVisibleColumns(prev.visibleColumns, id, visible) }));
146
- const selection = useSelection(matched, getRowId);
144
+ const selection = useSelection(matched, getRowId, { rememberOffPage: Boolean(server) });
147
145
  const resolvedSortFields = sortFields ?? defaultSortFields(columns);
148
146
  return {
149
147
  state,
@@ -174,4 +172,4 @@ function useDataViewsState({
174
172
  export {
175
173
  useDataViewsState
176
174
  };
177
- //# sourceMappingURL=chunk-BV5XTGKB.js.map
175
+ //# sourceMappingURL=chunk-2UCJJACD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/use-data-views-state.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { type GridColumn } from \"../DataGrid\";\nimport { type SortFieldDefinition } from \"../../layout/ContentToolbar\";\n\nimport { filterRows } from \"./data-views-filter\";\nimport {\n useColumnsWithActions,\n useRenderedColumns,\n type HideableColumn,\n} from \"./data-views-columns\";\nimport { computeActiveFilterCount, defaultSortFields } from \"./data-views-grid-helpers\";\nimport { resolveScope, useScopeConfigChecks, type ScopeConfig } from \"./data-views-scopes\";\nimport { serverDerived, useServerQuery } from \"./data-views-server-query\";\nimport { useSelection } from \"./data-views-selection\";\nimport { useStateWriters } from \"./data-views-writers\";\nimport {\n emptyViewState,\n type DataViewColumn,\n type DataViewServer,\n type DataViewState,\n type DataViewStatePatch,\n type DataViewSyncState,\n type FilterFieldConfig,\n type RangeFieldConfig,\n type DataViewQuery,\n type RangeValue,\n type RowAction,\n} from \"./data-views-types\";\n\nexport type { HideableColumn };\n\n/** Inputs the hook needs to own the view state + derived data. */\ninterface UseDataViewsStateArgs<T extends Record<string, unknown>> {\n rows: T[];\n columns: DataViewColumn<T>[];\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n getRowId: (row: T) => string | number;\n onRowClick?: (row: T) => void;\n appliedState?: DataViewState;\n /**\n * URL-driven controls (search/pills/ranges/sort) that re-apply on reference\n * change while preserving column visibility — see {@link DataViewSyncState}.\n */\n syncState?: DataViewSyncState;\n onStateChange?: (state: DataViewState) => void;\n testIdPrefix: string;\n sortFields?: SortFieldDefinition[];\n rowActions?: RowAction<T>[];\n rowActionsLeading?: (row: T) => React.ReactNode;\n /** Bespoke per-row menu rendered in the actions column instead of the auto kebab. */\n renderRowMenu?: (row: T) => React.ReactNode;\n /**\n * When present, the table is BACKEND-driven: `rows` is already the current\n * page (no in-browser filter/sort/paginate), and query changes re-fetch via\n * `server.onQueryChange`. Omit for the legacy client-side behaviour.\n */\n server?: DataViewServer;\n /**\n * The page-level partition rendered as tabs under the toolbar. Requires server\n * mode: a scope is applied at the BACKEND, never in the browser.\n */\n scopes?: ScopeConfig[];\n /**\n * The row field the scopes partition by, when the host knows it — used only to\n * reject the pill/scope clash at setup. See `assertNoScopePillOverlap`.\n */\n scopeFieldId?: string;\n}\n\n/** Everything the DataViewsGrid render needs; keeps the component itself thin. */\nexport interface DataViewsController<T extends Record<string, unknown>> {\n state: DataViewState;\n ranges: Record<string, RangeValue>;\n /**\n * Merge a partial into the view state.\n *\n * The UPDATER form is the one to reach for when the patch is derived from\n * state you are also changing — successive calls within one tick each see the\n * previous call's result, where the object form would have every caller build\n * its patch from the same render-scoped snapshot and the last write would win.\n */\n patch: (next: DataViewStatePatch) => void;\n matched: T[];\n gridColumns: GridColumn<T>[];\n /** Columns eligible for the show/hide menu (hideable, with a text header). */\n hideableColumns: HideableColumn[];\n /** Every column id in reading order — what the Colunas tab reorders. */\n columnOrder: string[];\n /** Toggle one column's visibility in the current view state. */\n toggleColumn: (id: string, visible: boolean) => void;\n selectedIds: Set<string | number>;\n setSelectedIds: (ids: Set<string | number>) => void;\n /**\n * Add/remove ONE id from the selection. The card and board bodies both need\n * it, so it lives here rather than being written out twice at the call sites —\n * one selection model, one toggle, identical in every layout.\n */\n toggleId: (id: string | number) => void;\n selectedRows: T[];\n clearSelection: () => void;\n selectAll: () => void;\n filterOpen: boolean;\n setFilterOpen: (open: boolean) => void;\n resolvedSortFields: SortFieldDefinition[];\n activeSortField: string;\n activeSortOrder: \"asc\" | \"desc\";\n activeFilterCount: number;\n /** True when the table is backend-driven (server mode). */\n serverMode: boolean;\n /** Server-mode pagination: 1-based current page (1 when client mode). */\n serverPage: number;\n /** Server-mode pagination: total pages (1 when client mode). */\n serverPageCount: number;\n /** Server-mode: total matched rows across all pages (drives the counter). */\n serverTotalCount: number;\n /** Server-mode: request a specific 1-based page (re-fetches via onQueryChange). */\n changePage: (page: number) => void;\n /**\n * The active scope id, RESOLVED against the declared scopes (see\n * `resolveScope`). `undefined` when the table declares none — which is what\n * keeps `scope` out of the emitted query for every table that never opted in.\n */\n scope: string | undefined;\n /** Select a scope: re-fetches from page 1 and drops the selection. */\n setScope: (id: string) => void;\n /**\n * The query the grid is currently showing. Read by Export, which hands it\n * back to the host UNPAGINATED — so an export follows the filters rather\n * than the 25 rows that happen to be loaded.\n */\n currentQuery: DataViewQuery;\n /**\n * Server-supplied per-scope totals, passed through verbatim, or `undefined`\n * when the server omits them. NEVER falls back to counting `matched`: a count\n * off the loaded page is wrong under pagination, which is the bug scopes fix.\n */\n scopeCounts?: Record<string, number>;\n}\n\n/**\n * The rows to render: in server mode `rows` is already the current page (the\n * backend filtered/sorted/paginated), so it passes through untouched; otherwise\n * the client search/pill/range filter narrows it.\n */\nfunction useMatchedRows<T extends Record<string, unknown>>(\n server: DataViewServer | undefined,\n rows: T[],\n columns: DataViewColumn<T>[],\n fields: FilterFieldConfig<T>[],\n rangeFields: RangeFieldConfig<T>[],\n state: DataViewState,\n): T[] {\n return useMemo(\n () =>\n server\n ? rows\n : filterRows(\n rows,\n columns,\n fields,\n { search: state.search, pills: state.pills, ranges: state.ranges },\n rangeFields,\n ),\n [server, rows, columns, fields, rangeFields, state.search, state.pills, state.ranges],\n );\n}\n\n/**\n * Reconcile external state changes and surface every change to the caller:\n * - `appliedState` (a saved view) fully REPLACES the state — it is columns-\n * authoritative, so applying a view restores its filters, sort AND columns.\n * - `syncState` (URL-driven controls) MERGES over the current state, leaving\n * `visibleColumns` untouched — so browser back/forward or a same-route\n * deep-link re-applies search/pills/sort without wiping a user's hidden columns.\n * Each channel only fires when its own reference changes (after the first run).\n */\nfunction useStateSyncEffects(\n appliedState: DataViewState | undefined,\n syncState: DataViewSyncState | undefined,\n state: DataViewState,\n onStateChange: ((state: DataViewState) => void) | undefined,\n setState: React.Dispatch<React.SetStateAction<DataViewState>>,\n): void {\n const firstApplied = useRef(true);\n useEffect(() => {\n if (firstApplied.current) {\n firstApplied.current = false;\n return;\n }\n if (appliedState) setState(appliedState);\n // `setState` is a stable useState setter (passed in), included to satisfy\n // exhaustive-deps; the effect still only re-applies when `appliedState` changes.\n }, [appliedState, setState]);\n const firstSync = useRef(true);\n useEffect(() => {\n if (firstSync.current) {\n firstSync.current = false;\n return;\n }\n // Merge — keep the current `visibleColumns` (never URL-carried); only the\n // URL-driven controls change.\n if (syncState) setState((prev) => ({ ...prev, ...syncState }));\n }, [syncState, setState]);\n useEffect(() => {\n onStateChange?.(state);\n }, [state, onStateChange]);\n}\n\n/**\n * The seed view state: a saved view (`appliedState`) or a pristine all-columns\n * one, with the URL-driven controls (`syncState`) merged over it so a deep-linked\n * filter or scope is reflected on the FIRST render. Column visibility is never\n * URL-carried, so the merge cannot wipe it.\n */\nfunction seedState(\n appliedState: DataViewState | undefined,\n syncState: DataViewSyncState | undefined,\n allColumnIds: string[],\n): DataViewState {\n const seed = appliedState ?? emptyViewState(allColumnIds);\n return syncState ? { ...seed, ...syncState } : seed;\n}\n\n/**\n * Selecting a scope: record it, then DROP the selection.\n *\n * A scope change renders a different result set. A selection that survived it\n * would let a bulk action run against rows the user can no longer see — the\n * same reason changing any other part of the query clears it.\n */\nfunction makeSetScope(\n patch: (next: DataViewStatePatch) => void,\n clearSelection: () => void,\n): (id: string) => void {\n return (id) => {\n patch({ scope: id });\n clearSelection();\n };\n}\n\n/**\n * The declared column ids in the stored reading order — the same tolerance\n * `applyOrder` uses, so the Colunas tab lists exactly what the grid renders.\n */\nfunction orderedColumnIds(allColumnIds: string[], order: string[] | undefined): string[] {\n if (!order || order.length === 0) return allColumnIds;\n const declared = new Set(allColumnIds);\n const kept = order.filter((id) => declared.has(id));\n const seen = new Set(kept);\n return [...kept, ...allColumnIds.filter((id) => !seen.has(id))];\n}\n\n/**\n * The query the grid is currently SHOWING — the same shape `onQueryChange`\n * emits, kept as a value so a host control (Exportar) can re-run it against the\n * backend rather than reading the loaded rows.\n */\nfunction liveQuery(\n state: DataViewState,\n scope: string | undefined,\n server: DataViewServer | undefined,\n matchedCount: number,\n): DataViewQuery {\n return {\n search: state.search,\n pills: state.pills,\n ranges: state.ranges ?? {},\n sortBy: state.sortBy,\n // Absent, not undefined, when the table declares no scopes.\n ...(scope !== undefined ? { scope } : {}),\n page: server?.page ?? 1,\n // Client mode has one page, and it is everything that matched.\n pageSize: server?.pageSize ?? matchedCount,\n };\n}\n\n/** The toolbar's active sort, read off the state's FIRST sort entry. */\nfunction activeSortOf(\n state: DataViewState,\n resolvedSortFields: SortFieldDefinition[],\n): { activeSortField: string; activeSortOrder: \"asc\" | \"desc\" } {\n const active = state.sortBy?.[0];\n return {\n activeSortField: active?.id ?? resolvedSortFields[0]?.value ?? \"\",\n activeSortOrder: active?.dir === \"desc\" ? \"desc\" : \"asc\",\n };\n}\n\n/**\n * Owns the DataViews view state (search/pills/ranges/sort/visibleColumns),\n * multi-select, the filter-panel toggle, and every derived value (filtered rows,\n * grid columns, active sort/filter counts). Extracted from the component so the\n * render stays within the size/complexity budget.\n */\nexport function useDataViewsState<T extends Record<string, unknown>>({\n rows,\n columns,\n fields,\n rangeFields,\n getRowId,\n onRowClick,\n appliedState,\n syncState,\n onStateChange,\n testIdPrefix,\n sortFields,\n rowActions,\n rowActionsLeading,\n renderRowMenu,\n server,\n scopes = [],\n scopeFieldId,\n}: UseDataViewsStateArgs<T>): DataViewsController<T> {\n useScopeConfigChecks(scopes, fields.map((field) => field.id), scopeFieldId, server !== undefined);\n const { columnsWithActions, allColumnIds } = useColumnsWithActions(columns, {\n rowActions,\n rowActionsLeading,\n renderRowMenu,\n testIdPrefix,\n getRowId,\n });\n // Seed once — see {@link seedState}.\n const [state, setState] = useState<DataViewState>(() =>\n seedState(appliedState, syncState, allColumnIds),\n );\n const [filterOpen, setFilterOpen] = useState(false);\n\n useStateSyncEffects(appliedState, syncState, state, onStateChange, setState);\n\n const { patch, toggleColumn } = useStateWriters(setState);\n const matched = useMatchedRows(server, rows, columns, fields, rangeFields, state);\n // Resolved at READ time, every render: a stale deep link or a saved view naming\n // a scope that has since been removed falls back to the first declared scope\n // instead of putting an id the backend rejects on the wire.\n const scope = resolveScope(scopes, state.scope);\n // Server mode: re-fetch on query change (page resets to 1) + drive pagination.\n const { changePage } = useServerQuery(server, state, scope);\n const { gridColumns, hideableColumns } = useRenderedColumns(\n columnsWithActions,\n state.visibleColumns,\n onRowClick,\n state.order,\n );\n // Server mode is where `matched` is a PAGE — see `useSelection` (FUT-942).\n const selection = useSelection(matched, getRowId, { rememberOffPage: Boolean(server) });\n const resolvedSortFields = sortFields ?? defaultSortFields(columns);\n\n return {\n state,\n ranges: state.ranges ?? {},\n patch,\n matched,\n gridColumns,\n hideableColumns,\n columnOrder: orderedColumnIds(allColumnIds, state.order),\n toggleColumn,\n ...selection,\n filterOpen,\n setFilterOpen,\n resolvedSortFields,\n ...activeSortOf(state, resolvedSortFields),\n activeFilterCount: computeActiveFilterCount(state, fields, rangeFields),\n ...serverDerived(server, matched.length),\n changePage,\n scope,\n setScope: makeSetScope(patch, selection.clearSelection),\n currentQuery: liveQuery(state, scope, server, matched.length),\n // Verbatim, or absent. See DataViewServer.scopeCounts for why there is no\n // client-side fallback.\n scopeCounts: server?.scopeCounts,\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-T4BFDZGU.js";
3
+ } from "./chunk-LNIVT62P.js";
4
4
  import {
5
5
  useDataViewsState
6
- } from "./chunk-BV5XTGKB.js";
6
+ } from "./chunk-2UCJJACD.js";
7
7
 
8
8
  // src/components/data-display/DataViews/DataViewsGrid.tsx
9
9
  import { useEffect, useRef } from "react";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-JKLWHENB.js.map
30
+ //# sourceMappingURL=chunk-62WEMJV3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/DataViewsGrid.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\nimport { type SortFieldDefinition } from \"../../layout/ContentToolbar\";\n\nimport { GridShell } from \"./data-views-grid-parts\";\nimport type { SelectionExtraRender } from \"./data-views-selection-extra\";\nimport type { ListGroupConfig } from \"./list-card-rails\";\nimport type { DisplayPanelView } from \"./data-views-display-panel\";\nimport type { BoardConfig } from \"./DataViewsBoard\";\nimport type { DataViewExport } from \"./data-views-export\";\nimport type { ScopeConfig } from \"./data-views-scopes\";\nimport type { DataViewCardSelection } from \"./data-views-types\";\nimport {\n type DataViewColumn,\n type DataViewsLayout,\n type DataViewServer,\n type DataViewState,\n type DataViewSyncState,\n type FilterFieldConfig,\n type RangeFieldConfig,\n type RowAction,\n} from \"./data-views-types\";\nimport { useDataViewsState } from \"./use-data-views-state\";\n\ninterface DataViewsGridProps<T extends Record<string, unknown>> {\n rows: T[];\n columns: DataViewColumn<T>[];\n fields: FilterFieldConfig<T>[];\n /** Optional numeric min/max range filters (advanced \"filter by amount\"). */\n rangeFields?: RangeFieldConfig<T>[];\n getRowId: (row: T) => string | number;\n /** Row click opens the row; clicks in the actions column are ignored. */\n onRowClick?: (row: T) => void;\n emptyState?: React.ReactNode;\n dataTestId?: string;\n testIdPrefix?: string;\n /** Seed/replace the view state. A NEW reference re-applies (used to apply a saved view). */\n appliedState?: DataViewState;\n /**\n * URL-driven controls (search/pills/ranges/sort) that RE-APPLY on reference\n * change while preserving column visibility — for server-mode lists that keep\n * their filter/sort/page in the address bar (see {@link DataViewSyncState}).\n */\n syncState?: DataViewSyncState;\n /** Notified on every view-state change (so a save-view modal can read it). */\n onStateChange?: (state: DataViewState) => void;\n /**\n * Notified with the currently-visible (search + filter matched) rows whenever\n * they change — so a page-level Export exports what the user sees, not the\n * full dataset.\n */\n onVisibleRowsChange?: (rows: T[]) => void;\n /** Saved-views UI injected into the toolbar (FUT-89). */\n toolbarRightSlot?: React.ReactNode;\n /**\n * The saved-view chrome for the Exibir panel: its VISÃO header (with the\n * views dropdown) and its Redefinir / Salvar visão footer. Supplied by\n * `DataViewsTableBase`; without it the panel is tabs only.\n */\n displayView?: DisplayPanelView;\n /** Big page title in the header row (next to the funnel + gear). */\n title?: string;\n /** Primary page actions rendered at the header's right. */\n headerActions?: React.ReactNode;\n /**\n * Sort options for the toolbar's \"Sort By\" dropdown. Defaults to the sortable\n * columns (asc/desc each) when omitted.\n */\n sortFields?: SortFieldDefinition[];\n /**\n * Per-sort-field VALUE KIND (`\"currency\" | \"number\" | \"date\" | \"text\"`), so the\n * Exibir panel phrases the direction in that column's own terms. \"Crescente\"\n * on a currency column is a puzzle; \"Menor → maior\" is not. Defaults to text.\n */\n sortKinds?: Record<string, string>;\n /**\n * Opt-in \"Exportar\" control. The grid hands the host the current query,\n * UNPAGINATED, and the host re-queries — the grid never fetches, and an\n * export therefore follows the filters rather than the loaded page.\n */\n exportConfig?: DataViewExport;\n /**\n * A single, reusable list of row actions that drives BOTH the per-row \"⋮\"\n * kebab AND the bulk-actions menu (tabwoah model). When provided, the grid\n * appends a kebab actions column automatically (unless the page already\n * defines one) and shows an \"Ações\" bulk menu when rows are selected.\n */\n rowActions?: RowAction<T>[];\n /**\n * Extra leading control rendered in the auto kebab column, before the \"⋮\"\n * (e.g. a favourite star). Only used when `rowActions` is set.\n */\n rowActionsLeading?: (row: T) => React.ReactNode;\n /**\n * Low-level override for the selection bulk control. Prefer `rowActions`.\n * Receives the selected rows + a `clearSelection` callback.\n */\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /**\n * A control rendered beside the \"N selected\" count, for changing WHAT is\n * selected rather than what happens to it — a \"select all N matching the\n * filter\" widening, above all.\n *\n * Called only while something is selected, and handed\n * {@link SelectionExtraContext.allOnPageSelected} so the control can follow\n * the convention operators already know: the widening appears once the whole\n * page is ticked, and not before.\n */\n selectionExtra?: SelectionExtraRender<T>;\n /**\n * Render a bespoke per-row menu in the actions column instead of the auto\n * kebab — typically an entity's self-contained 3-dots menu that owns its own\n * popups, so the SAME menu component drives both the table row and the card.\n * `rowActions`/`bulkActions` still drive the multi-row bulk menu.\n */\n renderRowMenu?: (row: T) => React.ReactNode;\n /**\n * Opt-in \"Grade\" (cards) layout. When provided, a Grade/Tabela toggle appears in\n * the toolbar and the cards body renders each visible row via this function\n * (reusing the same search/filter/sort). Omit ⇒ table only (unchanged).\n */\n renderCard?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /**\n * Opt-in \"Quadro\" (board) layout: the loaded page laid out as columns of one\n * grouping field. Reuses `renderCard`, so supplying a board WITHOUT one simply\n * offers no board. Best when the groups are states in a state machine — derive\n * these groups and `scopes` from ONE definition so the two cannot drift.\n */\n board?: BoardConfig<T>;\n /**\n * Opt-in \"Lista\" layout (FUT-733): one FULL-WIDTH row per record, rendered by\n * the entity — a marker, a title, a subtitle and a value on the right. Sits\n * between the table (compare columns) and the cards (browse); omit ⇒ not\n * offered, exactly as `renderCard` gates the cards.\n */\n renderListRow?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /**\n * The Lista's SHARED COLUMNS — declared once for the list, obeyed by every row.\n *\n * This is what makes a list line up by construction rather than by convention.\n * Omit it and each row still resolves its own tracks from its own config,\n * which agrees with its neighbours right up until one row carries an unusually\n * wide value.\n */\n listGroup?: ListGroupConfig<T>;\n /**\n * The page-level partition rendered as an exclusive tab strip above the\n * toolbar, with server-supplied counts. Requires `server`: a scope is applied\n * at the backend, never in the browser.\n */\n scopes?: ScopeConfig[];\n /** The row field the scopes partition by — used only to reject a pill over the same field. */\n scopeFieldId?: string;\n /** Which layout to show first when the user has expressed no preference (default \"table\"). */\n defaultLayout?: DataViewsLayout;\n /**\n * Ignore the remembered cross-screen layout preference and pin to\n * `defaultLayout`. For tables that exist to SHOW a layout — stories, docs,\n * screenshots — not for real screens.\n */\n ignoreStoredLayout?: boolean;\n /**\n * Opt into the responsive inline filter UX (collapsible filter row on wide\n * screens, modal on narrow). Default `false` keeps the classic slide-in panel.\n */\n inlineFilters?: boolean;\n /** Keep the inline search visible with no filter fields and no active search. */\n alwaysShowSearch?: boolean;\n /** Server-mode wiring; when set the grid is backend-driven (no client filter/sort/paginate). */\n server?: DataViewServer;\n}\n\n/**\n * Surface the visible (filtered) rows so a page-level Export matches the view.\n *\n * Pages pass inline column/field arrays, so `matched` is a fresh reference on\n * every render even when its contents are unchanged. The guard is a signature\n * over the rows' *contents* (not just their ids), so the callback — and the\n * parent `useState` it usually drives — fires only when the visible data\n * actually changes. Ids alone are not enough: a server refresh can change a\n * visible row's values while keeping its id, and the export must reflect them.\n * Content-equal renders keep the same signature, so this never loops.\n */\nfunction useVisibleRowsNotifier<T>(matched: T[], onVisibleRowsChange?: (rows: T[]) => void): void {\n const visibleSignature = JSON.stringify(matched);\n const lastSignature = useRef<string | null>(null);\n useEffect(() => {\n if (lastSignature.current === visibleSignature) return;\n lastSignature.current = visibleSignature;\n onVisibleRowsChange?.(matched);\n }, [visibleSignature, matched, onVisibleRowsChange]);\n}\n\n/**\n * The reusable admin DataViews table (FUT-88): the shared ContentToolbar +\n * TableFilter panel over `@12-apps/ui` DataGrid. State + derived data live in\n * {@link useDataViewsState}; the render lives in `GridShell`. This component just\n * connects the two. Reused across every admin list page.\n */\nexport function DataViewsGrid<T extends Record<string, unknown>>(\n props: DataViewsGridProps<T>,\n): React.JSX.Element {\n // Forwarded as a whole rather than restated name-by-name twice: this component\n // only ADDS the controller, and a 25-name destructure repeated in the JSX is\n // where a newly added prop silently stops being passed on.\n const { rangeFields = [], testIdPrefix = \"table\" } = props;\n const controller = useDataViewsState({ ...props, rangeFields, testIdPrefix });\n useVisibleRowsNotifier(controller.matched, props.onVisibleRowsChange);\n return <GridShell {...props} c={controller} rangeFields={rangeFields} testIdPrefix={testIdPrefix} />;\n}\n"],"mappings":";;;;;;;;AAEA,SAAS,WAAW,cAAc;AAgNzB;AAzBT,SAAS,uBAA0B,SAAc,qBAAiD;AAChG,QAAM,mBAAmB,KAAK,UAAU,OAAO;AAC/C,QAAM,gBAAgB,OAAsB,IAAI;AAChD,YAAU,MAAM;AACd,QAAI,cAAc,YAAY,iBAAkB;AAChD,kBAAc,UAAU;AACxB,0BAAsB,OAAO;AAAA,EAC/B,GAAG,CAAC,kBAAkB,SAAS,mBAAmB,CAAC;AACrD;AAQO,SAAS,cACd,OACmB;AAInB,QAAM,EAAE,cAAc,CAAC,GAAG,eAAe,QAAQ,IAAI;AACrD,QAAM,aAAa,kBAAkB,EAAE,GAAG,OAAO,aAAa,aAAa,CAAC;AAC5E,yBAAuB,WAAW,SAAS,MAAM,mBAAmB;AACpE,SAAO,oBAAC,aAAW,GAAG,OAAO,GAAG,YAAY,aAA0B,cAA4B;AACpG;","names":[]}
@@ -0,0 +1,39 @@
1
+ import {
2
+ default as default2
3
+ } from "./chunk-6DPAWXZ3.js";
4
+ import {
5
+ Text
6
+ } from "./chunk-VRHBJXZ7.js";
7
+
8
+ // src/components/data-display/DataViews/data-views-header-row.tsx
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ function GridHeaderRow({
11
+ title,
12
+ headerActions,
13
+ testIdPrefix
14
+ }) {
15
+ if (!title && !headerActions) return null;
16
+ return /* @__PURE__ */ jsxs(
17
+ default2,
18
+ {
19
+ "data-testid": `${testIdPrefix}-header`,
20
+ sx: {
21
+ display: "flex",
22
+ alignItems: "center",
23
+ justifyContent: "space-between",
24
+ gap: 2,
25
+ flexWrap: "wrap",
26
+ pb: 1.5
27
+ },
28
+ children: [
29
+ title ? /* @__PURE__ */ jsx(Text, { variant: "heading", size: "lg", as: "h2", children: title }) : /* @__PURE__ */ jsx(default2, {}),
30
+ headerActions && /* @__PURE__ */ jsx(default2, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: headerActions })
31
+ ]
32
+ }
33
+ );
34
+ }
35
+
36
+ export {
37
+ GridHeaderRow
38
+ };
39
+ //# sourceMappingURL=chunk-A4YWFX5C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-header-row.tsx"],"sourcesContent":["\"use client\";\n\nimport { Text } from \"../../typography/Text\";\nimport { Box } from \"../../../mui/Box\";\n\n/* ── Header row ──────────────────────────────────────────────────────────── */\n\n/**\n * The grid's own header row: the page title on the left, the primary page\n * actions on the right.\n *\n * `title` and `headerActions` were DECLARED on `DataViewsGridProps` and\n * `DataViewsTableBaseProps` but never destructured or forwarded — dead props\n * whose types lied to every caller that set them. Wired here rather than\n * deleted: a table that carries its own title keeps the title, the scope tabs\n * and the toolbar as one block, instead of the page having to space them.\n *\n * Renders NOTHING when neither is supplied, so no existing table gains a row.\n */\nexport function GridHeaderRow({\n title,\n headerActions,\n testIdPrefix,\n}: {\n title?: string;\n headerActions?: React.ReactNode;\n testIdPrefix: string;\n}): React.JSX.Element | null {\n if (!title && !headerActions) return null;\n return (\n <Box\n data-testid={`${testIdPrefix}-header`}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 2,\n flexWrap: \"wrap\",\n pb: 1.5,\n }}\n >\n {title ? (\n <Text variant=\"heading\" size=\"lg\" as=\"h2\">\n {title}\n </Text>\n ) : (\n <Box />\n )}\n {headerActions && <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>{headerActions}</Box>}\n </Box>\n );\n}\n"],"mappings":";;;;;;;;AA8BI,SAYI,KAZJ;AAXG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAI6B;AAC3B,MAAI,CAAC,SAAS,CAAC,cAAe,QAAO;AACrC,SACE;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,eAAa,GAAG,YAAY;AAAA,MAC5B,IAAI;AAAA,QACF,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,KAAK;AAAA,QACL,UAAU;AAAA,QACV,IAAI;AAAA,MACN;AAAA,MAEC;AAAA,gBACC,oBAAC,QAAK,SAAQ,WAAU,MAAK,MAAK,IAAG,MAClC,iBACH,IAEA,oBAACA,UAAA,EAAI;AAAA,QAEN,iBAAiB,oBAACA,UAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAE,GAAI,yBAAc;AAAA;AAAA;AAAA,EAC/F;AAEJ;","names":["default"]}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  renderChartByType
3
- } from "./chunk-XULTDO56.js";
3
+ } from "./chunk-BVGR7OYA.js";
4
+ import {
5
+ ChartContainer
6
+ } from "./chunk-M5T3COS2.js";
4
7
  import {
5
8
  getSizeStyles,
6
9
  getVariantStyles
7
10
  } from "./chunk-AVU6KU27.js";
8
- import {
9
- ChartContainer
10
- } from "./chunk-M5T3COS2.js";
11
11
  import {
12
12
  muiColor
13
13
  } from "./chunk-I6PZVHIT.js";
@@ -104,4 +104,4 @@ var Chart = (props) => {
104
104
  export {
105
105
  Chart
106
106
  };
107
- //# sourceMappingURL=chunk-CXA6UNFF.js.map
107
+ //# sourceMappingURL=chunk-AP3PVR3T.js.map
@@ -1,15 +1,15 @@
1
- import {
2
- CarouselChrome
3
- } from "./chunk-5QXSPLWU.js";
4
- import {
5
- containerStyles
6
- } from "./chunk-Z56IO7OV.js";
7
1
  import {
8
2
  CarouselTrack
9
3
  } from "./chunk-WIXUMFU7.js";
10
4
  import {
11
5
  useCarouselNavigation
12
6
  } from "./chunk-RUIV5TVA.js";
7
+ import {
8
+ CarouselChrome
9
+ } from "./chunk-5QXSPLWU.js";
10
+ import {
11
+ containerStyles
12
+ } from "./chunk-Z56IO7OV.js";
13
13
  import {
14
14
  withDefaults
15
15
  } from "./chunk-HPK33ACY.js";
@@ -152,4 +152,4 @@ var Carousel = (props) => {
152
152
  export {
153
153
  Carousel
154
154
  };
155
- //# sourceMappingURL=chunk-NPEKJXVV.js.map
155
+ //# sourceMappingURL=chunk-BPCYXLWY.js.map
@@ -1,10 +1,10 @@
1
- import {
2
- buildChartContext
3
- } from "./chunk-XSKVBGCZ.js";
4
1
  import {
5
2
  ChartLegendContent,
6
3
  ChartTooltipContent
7
4
  } from "./chunk-M5T3COS2.js";
5
+ import {
6
+ buildChartContext
7
+ } from "./chunk-XSKVBGCZ.js";
8
8
 
9
9
  // src/components/data-display/Chart/chart-renderers.tsx
10
10
  import {
@@ -312,4 +312,4 @@ function renderChartByType(props, theme) {
312
312
  export {
313
313
  renderChartByType
314
314
  };
315
- //# sourceMappingURL=chunk-XULTDO56.js.map
315
+ //# sourceMappingURL=chunk-BVGR7OYA.js.map
@@ -1,9 +1,3 @@
1
- import {
2
- RangePresets
3
- } from "./chunk-F4RR4666.js";
4
- import {
5
- presetsFor
6
- } from "./chunk-CBOB5AV6.js";
7
1
  import {
8
2
  NumberBoundInput
9
3
  } from "./chunk-FV36LFPX.js";
@@ -13,6 +7,12 @@ import {
13
7
  numericRange,
14
8
  rangeChipLabel
15
9
  } from "./chunk-GCZJH4XL.js";
10
+ import {
11
+ RangePresets
12
+ } from "./chunk-F4RR4666.js";
13
+ import {
14
+ presetsFor
15
+ } from "./chunk-CBOB5AV6.js";
16
16
  import {
17
17
  useDataViewsCopy
18
18
  } from "./chunk-KHG57NAE.js";
@@ -279,4 +279,4 @@ export {
279
279
  RangePill,
280
280
  PanelRangeField
281
281
  };
282
- //# sourceMappingURL=chunk-BZTFPSWT.js.map
282
+ //# sourceMappingURL=chunk-DFLTUI7W.js.map