@12-apps/ui 6.13.2 → 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 (112) hide show
  1. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  2. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  3. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  4. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +20 -18
  5. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +23 -21
  6. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  7. package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
  8. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  9. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
  11. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  12. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +19 -17
  13. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +12 -0
  14. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js.map +1 -0
  15. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  16. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  17. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
  18. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +8 -0
  20. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js.map +1 -0
  21. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
  22. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
  24. package/dist/_internal/components/data-display/index.js +16 -16
  25. package/dist/_internal/components/index.js +17 -17
  26. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  27. package/dist/_internal/components/layout/index.js +1 -1
  28. package/dist/charts.js +11 -11
  29. package/dist/{chunk-HNDUCGM3.js → chunk-62WEMJV3.js} +2 -2
  30. package/dist/chunk-62WEMJV3.js.map +1 -0
  31. package/dist/chunk-A4YWFX5C.js +39 -0
  32. package/dist/chunk-A4YWFX5C.js.map +1 -0
  33. package/dist/{chunk-HRJ27X5B.js → chunk-BPCYXLWY.js} +4 -4
  34. package/dist/{chunk-XEE7PLDR.js → chunk-DFLTUI7W.js} +7 -7
  35. package/dist/{chunk-AWTERXCW.js → chunk-GNAAHDCN.js} +4 -2
  36. package/dist/chunk-GNAAHDCN.js.map +1 -0
  37. package/dist/{chunk-HGBZZDP6.js → chunk-J4DDXHLB.js} +4 -4
  38. package/dist/chunk-KX75HM5U.js +20 -0
  39. package/dist/chunk-KX75HM5U.js.map +1 -0
  40. package/dist/{chunk-Q4ITS2EP.js → chunk-LNIVT62P.js} +14 -38
  41. package/dist/chunk-LNIVT62P.js.map +1 -0
  42. package/dist/{chunk-RUO4D4N6.js → chunk-LPNF4YJ7.js} +3 -3
  43. package/dist/{chunk-QQE2PVLO.js → chunk-M6365FGG.js} +2 -2
  44. package/dist/{chunk-RDYBS45D.js → chunk-O6MZPB64.js} +2 -2
  45. package/dist/{chunk-4KSOSI3U.js → chunk-O6V7KKW7.js} +4 -4
  46. package/dist/{chunk-4VNUOSTQ.js → chunk-PHA3NFZM.js} +2 -2
  47. package/dist/{chunk-6PFBYCBU.js → chunk-QIKTIKO6.js} +2 -2
  48. package/dist/{chunk-X5MPHXG5.js → chunk-RPWEXIAW.js} +6 -6
  49. package/dist/{chunk-2WWKBD4D.js → chunk-TSPHRZ4U.js} +5 -1
  50. package/dist/chunk-TSPHRZ4U.js.map +1 -0
  51. package/dist/{chunk-RRYQG5Y6.js → chunk-U5RIDMMV.js} +3 -3
  52. package/dist/chunk-U5RIDMMV.js.map +1 -0
  53. package/dist/{chunk-N6JGYVRY.js → chunk-UENDC45F.js} +2 -2
  54. package/dist/{chunk-4ZEU22L2.js → chunk-XPS7FWZS.js} +4 -4
  55. package/dist/{chunk-WXBBWSNU.js → chunk-ZNGUDGKW.js} +6 -5
  56. package/dist/chunk-ZNGUDGKW.js.map +1 -0
  57. package/dist/data-display/CardKit.js +4 -4
  58. package/dist/data-display/Carousel.js +3 -3
  59. package/dist/data-display/Chart.js +11 -11
  60. package/dist/data-display/DataGrid.js +2 -2
  61. package/dist/data-display/DataViews.js +31 -29
  62. package/dist/layout/ContentToolbar.js +1 -1
  63. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts +12 -0
  64. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts.map +1 -1
  65. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts +3 -0
  66. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  67. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts +3 -0
  68. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  69. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts +18 -0
  70. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts.map +1 -0
  71. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +50 -0
  72. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -0
  73. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  74. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  75. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  76. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  77. package/dist/types/components/data-display/DataViews/index.d.ts +1 -0
  78. package/dist/types/components/data-display/DataViews/index.d.ts.map +1 -1
  79. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  80. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  81. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +15 -0
  82. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  83. package/package.json +1 -1
  84. package/src/components/data-display/DataViews/DataViewsGrid.tsx +12 -0
  85. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +3 -0
  86. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +5 -50
  87. package/src/components/data-display/DataViews/data-views-header-row.tsx +52 -0
  88. package/src/components/data-display/DataViews/data-views-selection-extra.ts +67 -0
  89. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  90. package/src/components/data-display/DataViews/data-views-toolbar.tsx +3 -0
  91. package/src/components/data-display/DataViews/index.ts +1 -0
  92. package/src/components/layout/ContentToolbar/ContentToolbar.md +10 -3
  93. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +5 -0
  94. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +15 -0
  95. package/dist/chunk-2WWKBD4D.js.map +0 -1
  96. package/dist/chunk-AWTERXCW.js.map +0 -1
  97. package/dist/chunk-HNDUCGM3.js.map +0 -1
  98. package/dist/chunk-Q4ITS2EP.js.map +0 -1
  99. package/dist/chunk-RRYQG5Y6.js.map +0 -1
  100. package/dist/chunk-WXBBWSNU.js.map +0 -1
  101. /package/dist/{chunk-HRJ27X5B.js.map → chunk-BPCYXLWY.js.map} +0 -0
  102. /package/dist/{chunk-XEE7PLDR.js.map → chunk-DFLTUI7W.js.map} +0 -0
  103. /package/dist/{chunk-HGBZZDP6.js.map → chunk-J4DDXHLB.js.map} +0 -0
  104. /package/dist/{chunk-RUO4D4N6.js.map → chunk-LPNF4YJ7.js.map} +0 -0
  105. /package/dist/{chunk-QQE2PVLO.js.map → chunk-M6365FGG.js.map} +0 -0
  106. /package/dist/{chunk-RDYBS45D.js.map → chunk-O6MZPB64.js.map} +0 -0
  107. /package/dist/{chunk-4KSOSI3U.js.map → chunk-O6V7KKW7.js.map} +0 -0
  108. /package/dist/{chunk-4VNUOSTQ.js.map → chunk-PHA3NFZM.js.map} +0 -0
  109. /package/dist/{chunk-6PFBYCBU.js.map → chunk-QIKTIKO6.js.map} +0 -0
  110. /package/dist/{chunk-X5MPHXG5.js.map → chunk-RPWEXIAW.js.map} +0 -0
  111. /package/dist/{chunk-N6JGYVRY.js.map → chunk-UENDC45F.js.map} +0 -0
  112. /package/dist/{chunk-4ZEU22L2.js.map → chunk-XPS7FWZS.js.map} +0 -0
@@ -117,12 +117,12 @@ 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
125
  import "../../../chunk-G3E66C6J.js";
125
- import "../../../chunk-5E3XZAED.js";
126
126
  import "../../../chunk-SNCSGLJ6.js";
127
127
  import {
128
128
  DescriptionItem
@@ -175,16 +175,16 @@ import "../../../chunk-2YEZONLX.js";
175
175
  import "../../../chunk-62FET2BM.js";
176
176
  import {
177
177
  Carousel
178
- } from "../../../chunk-HRJ27X5B.js";
178
+ } from "../../../chunk-BPCYXLWY.js";
179
+ import "../../../chunk-WIXUMFU7.js";
179
180
  import "../../../chunk-RUIV5TVA.js";
180
181
  import "../../../chunk-5QXSPLWU.js";
181
- import "../../../chunk-Z56IO7OV.js";
182
- import "../../../chunk-WIXUMFU7.js";
183
182
  import {
184
183
  CarouselArrows,
185
184
  CarouselIndicators,
186
185
  CarouselThumbnails
187
186
  } from "../../../chunk-2XGM5PDA.js";
187
+ import "../../../chunk-Z56IO7OV.js";
188
188
  import "../../../chunk-5KLSLD72.js";
189
189
  import {
190
190
  SpecChart
@@ -192,17 +192,6 @@ import {
192
192
  import {
193
193
  Chart
194
194
  } from "../../../chunk-AP3PVR3T.js";
195
- import "../../../chunk-BVGR7OYA.js";
196
- import {
197
- ChartContainer,
198
- ChartLegend,
199
- ChartLegendContent,
200
- ChartTooltip,
201
- ChartTooltipContent
202
- } from "../../../chunk-M5T3COS2.js";
203
- import "../../../chunk-XSKVBGCZ.js";
204
- import "../../../chunk-AVU6KU27.js";
205
- import "../../../chunk-4V532JF6.js";
206
195
  import {
207
196
  CHART_SEMANTIC_COLORS,
208
197
  ChartSpecError,
@@ -214,10 +203,21 @@ import {
214
203
  getRegisteredChartSpecTypes,
215
204
  registerChartSpecRenderer
216
205
  } from "../../../chunk-WKUA6P3W.js";
206
+ import "../../../chunk-BVGR7OYA.js";
207
+ import {
208
+ ChartContainer,
209
+ ChartLegend,
210
+ ChartLegendContent,
211
+ ChartTooltip,
212
+ ChartTooltipContent
213
+ } from "../../../chunk-M5T3COS2.js";
217
214
  import {
218
215
  chartValueFormatter,
219
216
  formatChartValue
220
217
  } from "../../../chunk-QVWNK4JO.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,12 +607,12 @@ 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
615
  import "../../chunk-G3E66C6J.js";
615
- import "../../chunk-5E3XZAED.js";
616
616
  import "../../chunk-SNCSGLJ6.js";
617
617
  import {
618
618
  DescriptionItem
@@ -667,16 +667,16 @@ import "../../chunk-2YEZONLX.js";
667
667
  import "../../chunk-62FET2BM.js";
668
668
  import {
669
669
  Carousel
670
- } from "../../chunk-HRJ27X5B.js";
670
+ } from "../../chunk-BPCYXLWY.js";
671
+ import "../../chunk-WIXUMFU7.js";
671
672
  import "../../chunk-RUIV5TVA.js";
672
673
  import "../../chunk-5QXSPLWU.js";
673
- import "../../chunk-Z56IO7OV.js";
674
- import "../../chunk-WIXUMFU7.js";
675
674
  import {
676
675
  CarouselArrows,
677
676
  CarouselIndicators,
678
677
  CarouselThumbnails
679
678
  } from "../../chunk-2XGM5PDA.js";
679
+ import "../../chunk-Z56IO7OV.js";
680
680
  import "../../chunk-5KLSLD72.js";
681
681
  import {
682
682
  SpecChart
@@ -684,17 +684,6 @@ import {
684
684
  import {
685
685
  Chart
686
686
  } from "../../chunk-AP3PVR3T.js";
687
- import "../../chunk-BVGR7OYA.js";
688
- import {
689
- ChartContainer,
690
- ChartLegend,
691
- ChartLegendContent,
692
- ChartTooltip,
693
- ChartTooltipContent
694
- } from "../../chunk-M5T3COS2.js";
695
- import "../../chunk-XSKVBGCZ.js";
696
- import "../../chunk-AVU6KU27.js";
697
- import "../../chunk-4V532JF6.js";
698
687
  import {
699
688
  CHART_SEMANTIC_COLORS,
700
689
  ChartSpecError,
@@ -706,10 +695,21 @@ import {
706
695
  getRegisteredChartSpecTypes,
707
696
  registerChartSpecRenderer
708
697
  } from "../../chunk-WKUA6P3W.js";
698
+ import "../../chunk-BVGR7OYA.js";
699
+ import {
700
+ ChartContainer,
701
+ ChartLegend,
702
+ ChartLegendContent,
703
+ ChartTooltip,
704
+ ChartTooltipContent
705
+ } from "../../chunk-M5T3COS2.js";
709
706
  import {
710
707
  chartValueFormatter,
711
708
  formatChartValue
712
709
  } from "../../chunk-QVWNK4JO.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
@@ -5,17 +5,6 @@ import {
5
5
  import {
6
6
  Chart
7
7
  } from "./chunk-AP3PVR3T.js";
8
- import "./chunk-BVGR7OYA.js";
9
- import {
10
- ChartContainer,
11
- ChartLegend,
12
- ChartLegendContent,
13
- ChartTooltip,
14
- ChartTooltipContent
15
- } from "./chunk-M5T3COS2.js";
16
- import "./chunk-XSKVBGCZ.js";
17
- import "./chunk-AVU6KU27.js";
18
- import "./chunk-4V532JF6.js";
19
8
  import {
20
9
  CHART_SEMANTIC_COLORS,
21
10
  ChartSpecError,
@@ -27,10 +16,21 @@ import {
27
16
  getRegisteredChartSpecTypes,
28
17
  registerChartSpecRenderer
29
18
  } from "./chunk-WKUA6P3W.js";
19
+ import "./chunk-BVGR7OYA.js";
20
+ import {
21
+ ChartContainer,
22
+ ChartLegend,
23
+ ChartLegendContent,
24
+ ChartTooltip,
25
+ ChartTooltipContent
26
+ } from "./chunk-M5T3COS2.js";
30
27
  import {
31
28
  chartValueFormatter,
32
29
  formatChartValue
33
30
  } from "./chunk-QVWNK4JO.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";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-Q4ITS2EP.js";
3
+ } from "./chunk-LNIVT62P.js";
4
4
  import {
5
5
  useDataViewsState
6
6
  } from "./chunk-2UCJJACD.js";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-HNDUCGM3.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,3 +1,6 @@
1
+ import {
2
+ CarouselTrack
3
+ } from "./chunk-WIXUMFU7.js";
1
4
  import {
2
5
  useCarouselNavigation
3
6
  } from "./chunk-RUIV5TVA.js";
@@ -7,9 +10,6 @@ import {
7
10
  import {
8
11
  containerStyles
9
12
  } from "./chunk-Z56IO7OV.js";
10
- import {
11
- CarouselTrack
12
- } from "./chunk-WIXUMFU7.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-HRJ27X5B.js.map
155
+ //# sourceMappingURL=chunk-BPCYXLWY.js.map
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  NumberBoundInput
3
3
  } from "./chunk-FV36LFPX.js";
4
- import {
5
- RangePresets
6
- } from "./chunk-F4RR4666.js";
7
- import {
8
- presetsFor
9
- } from "./chunk-CBOB5AV6.js";
10
4
  import {
11
5
  isRangeInverted,
12
6
  isRangeSet,
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-XEE7PLDR.js.map
282
+ //# sourceMappingURL=chunk-DFLTUI7W.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridToolbar
3
- } from "./chunk-WXBBWSNU.js";
3
+ } from "./chunk-ZNGUDGKW.js";
4
4
 
5
5
  // src/components/data-display/DataViews/data-views-shell-toolbar.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -10,6 +10,7 @@ function ShellToolbar({
10
10
  testIdPrefix,
11
11
  rowActions,
12
12
  bulkActions,
13
+ selectionExtra,
13
14
  toolbarRightSlot,
14
15
  showInline,
15
16
  compactControls,
@@ -42,6 +43,7 @@ function ShellToolbar({
42
43
  clearSelection: c.clearSelection,
43
44
  rowActions,
44
45
  bulkActions,
46
+ selectionExtra,
45
47
  sortFields: c.resolvedSortFields,
46
48
  activeSortField: c.activeSortField,
47
49
  activeSortOrder: c.activeSortOrder,
@@ -62,4 +64,4 @@ function ShellToolbar({
62
64
  export {
63
65
  ShellToolbar
64
66
  };
65
- //# sourceMappingURL=chunk-AWTERXCW.js.map
67
+ //# sourceMappingURL=chunk-GNAAHDCN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-shell-toolbar.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * The toolbar band, fed from the controller — ~25 props of pure forwarding and\n * nothing else, which is why it lives in its own file rather than in the shell.\n */\nimport { type ColumnVisibilityOption } from \"../../layout/ContentToolbar\";\n\nimport type { DisplayPanelView } from \"./data-views-display-panel\";\nimport type { DataViewExport } from \"./data-views-export\";\nimport { GridToolbar } from \"./data-views-toolbar\";\nimport type { RowAction } from \"./data-views-types\";\nimport type { DataViewsController } from \"./use-data-views-state\";\n\n/**\n * The toolbar band, fed from the controller. Split out of `GridShell` for that\n * function's size budget — it is ~25 props of pure forwarding and nothing else.\n */\nexport function ShellToolbar<T extends Record<string, unknown>>({\n c,\n rows,\n testIdPrefix,\n rowActions,\n bulkActions,\n selectionExtra,\n toolbarRightSlot,\n showInline,\n compactControls,\n counterHidden,\n sortKinds,\n displayView,\n exportConfig,\n filterControls,\n barRef,\n}: {\n c: DataViewsController<T>;\n rows: T[];\n testIdPrefix: string;\n sortKinds?: Record<string, string>;\n displayView?: DisplayPanelView;\n exportConfig?: DataViewExport;\n rowActions?: RowAction<T>[];\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /** Already resolved by the shell, which is the party that knows the page. */\n selectionExtra?: React.ReactNode;\n toolbarRightSlot?: React.ReactNode;\n /** Search + filters, rendered on the toolbar line (see `GridToolbar`). */\n filterControls?: React.ReactNode;\n barRef?: React.Ref<HTMLDivElement>;\n showInline: boolean;\n /** Step 2 of the ladder: Exibir/Exportar as icons only. */\n compactControls?: boolean;\n /** Step 5, last resort: drop the counter so the row still fits one line. */\n counterHidden?: boolean;\n}): React.JSX.Element {\n const columnOptions: ColumnVisibilityOption[] = c.hideableColumns.map((col) => ({\n id: col.id,\n label: col.label,\n visible: c.state.visibleColumns.includes(col.id),\n }));\n return (\n <GridToolbar\n c={c}\n sortKinds={sortKinds}\n displayView={displayView}\n exportConfig={exportConfig}\n filterControls={filterControls}\n barRef={barRef}\n compactControls={compactControls}\n counterHidden={counterHidden}\n testIdPrefix={testIdPrefix}\n selectedRows={c.selectedRows}\n selectAll={c.selectAll}\n clearSelection={c.clearSelection}\n rowActions={rowActions}\n bulkActions={bulkActions}\n selectionExtra={selectionExtra}\n sortFields={c.resolvedSortFields}\n activeSortField={c.activeSortField}\n activeSortOrder={c.activeSortOrder}\n onChangeSort={(field, order) => c.patch({ sortBy: [{ id: field, dir: order }] })}\n matchedCount={c.matched.length}\n totalCount={c.serverMode ? c.serverTotalCount : rows.length}\n toolbarRightSlot={toolbarRightSlot}\n columnOptions={columnOptions}\n onToggleColumn={c.toggleColumn}\n filterOpen={c.filterOpen}\n setFilterOpen={c.setFilterOpen}\n activeFilterCount={c.activeFilterCount}\n showFilterTrigger={!showInline}\n />\n );\n}\n\n/** Wires the controller into the shared toolbar + filter panel + grid/cards body. */\n"],"mappings":";;;;;AA6DI;AA3CG,SAAS,aAAgD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAoBsB;AACpB,QAAM,gBAA0C,EAAE,gBAAgB,IAAI,CAAC,SAAS;AAAA,IAC9E,IAAI,IAAI;AAAA,IACR,OAAO,IAAI;AAAA,IACX,SAAS,EAAE,MAAM,eAAe,SAAS,IAAI,EAAE;AAAA,EACjD,EAAE;AACF,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,EAAE;AAAA,MAChB,WAAW,EAAE;AAAA,MACb,gBAAgB,EAAE;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,EAAE;AAAA,MACd,iBAAiB,EAAE;AAAA,MACnB,iBAAiB,EAAE;AAAA,MACnB,cAAc,CAAC,OAAO,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,OAAO,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,MAC/E,cAAc,EAAE,QAAQ;AAAA,MACxB,YAAY,EAAE,aAAa,EAAE,mBAAmB,KAAK;AAAA,MACrD;AAAA,MACA;AAAA,MACA,gBAAgB,EAAE;AAAA,MAClB,YAAY,EAAE;AAAA,MACd,eAAe,EAAE;AAAA,MACjB,mBAAmB,EAAE;AAAA,MACrB,mBAAmB,CAAC;AAAA;AAAA,EACtB;AAEJ;","names":[]}
@@ -1,10 +1,10 @@
1
- import {
2
- ColumnsTab
3
- } from "./chunk-2PPWKCMW.js";
4
1
  import {
5
2
  DisplayTab,
6
3
  SortTab
7
4
  } from "./chunk-SCGVB7DS.js";
5
+ import {
6
+ ColumnsTab
7
+ } from "./chunk-2PPWKCMW.js";
8
8
  import {
9
9
  ViewActions,
10
10
  ViewFooter,
@@ -261,4 +261,4 @@ function DataViewsDisplayPanel({
261
261
  export {
262
262
  DataViewsDisplayPanel
263
263
  };
264
- //# sourceMappingURL=chunk-HGBZZDP6.js.map
264
+ //# sourceMappingURL=chunk-J4DDXHLB.js.map
@@ -0,0 +1,20 @@
1
+ // src/components/data-display/DataViews/data-views-selection-extra.ts
2
+ function resolveSelectionExtra({
3
+ c,
4
+ getRowId,
5
+ selectionExtra
6
+ }) {
7
+ if (selectionExtra === void 0 || c.selectedRows.length === 0) return void 0;
8
+ const page = c.matched;
9
+ return selectionExtra({
10
+ selectedRows: c.selectedRows,
11
+ clearSelection: c.clearSelection,
12
+ allOnPageSelected: page.length > 0 && page.every((row) => c.selectedIds.has(getRowId(row))),
13
+ pageRowCount: page.length
14
+ });
15
+ }
16
+
17
+ export {
18
+ resolveSelectionExtra
19
+ };
20
+ //# sourceMappingURL=chunk-KX75HM5U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-selection-extra.ts"],"sourcesContent":["/**\n * The selection-WIDENING slot: what a paginated grid needs so an operator can\n * act on \"everything matching the filter\" rather than on the page in front of\n * them.\n *\n * It is a slot of its own rather than a share of the bulk-actions menu because\n * the two answer different questions — `actions` is what HAPPENS to the\n * selection, this is what the selection IS. Folding a widening into the actions\n * menu files \"change what I picked\" under \"do this to what I picked\", where\n * every entry is expected to write something.\n */\nimport type { DataViewsController } from \"./use-data-views-state\";\n\n/**\n * What a widening control gets to decide with.\n *\n * `allOnPageSelected` is the one thing a host cannot compute for itself, and\n * the whole reason this is a context rather than a bare node: the grid owns\n * which rows the page is currently rendering — server mode pages at the\n * backend, so the host's `rows` prop and the page can differ mid-fetch — and\n * \"every row here is ticked\" is the trigger a select-all-matching control\n * hangs on. Deriving it host-side would be a second, slightly different answer\n * to the question the grid already answers to draw its own header checkbox.\n */\nexport interface SelectionExtraContext<T extends Record<string, unknown>> {\n /** The selected rows, off-page ones included. */\n selectedRows: T[];\n /** Drop the whole selection. */\n clearSelection: () => void;\n /** Every row the page is rendering is selected — and the page is not empty. */\n allOnPageSelected: boolean;\n /** How many rows the page is rendering. */\n pageRowCount: number;\n}\n\n/** The host's widening control, called only while something is selected. */\nexport type SelectionExtraRender<T extends Record<string, unknown>> = (\n context: SelectionExtraContext<T>,\n) => React.ReactNode;\n\n/**\n * Resolve the host's control against the page on screen.\n *\n * Measured against `c.matched` — which in server mode IS the page — rather than\n * the `rows` prop, so the answer cannot lag a page change.\n *\n * Returns `undefined` with nothing selected, so the toolbar renders no empty\n * slot: a widening with nothing to widen is not a control.\n */\nexport function resolveSelectionExtra<T extends Record<string, unknown>>({\n c,\n getRowId,\n selectionExtra,\n}: {\n c: DataViewsController<T>;\n getRowId: (row: T) => string | number;\n selectionExtra?: SelectionExtraRender<T>;\n}): React.ReactNode {\n if (selectionExtra === undefined || c.selectedRows.length === 0) return undefined;\n const page = c.matched;\n return selectionExtra({\n selectedRows: c.selectedRows,\n clearSelection: c.clearSelection,\n allOnPageSelected: page.length > 0 && page.every((row) => c.selectedIds.has(getRowId(row))),\n pageRowCount: page.length,\n });\n}\n"],"mappings":";AAiDO,SAAS,sBAAyD;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AACF,GAIoB;AAClB,MAAI,mBAAmB,UAAa,EAAE,aAAa,WAAW,EAAG,QAAO;AACxE,QAAM,OAAO,EAAE;AACf,SAAO,eAAe;AAAA,IACpB,cAAc,EAAE;AAAA,IAChB,gBAAgB,EAAE;AAAA,IAClB,mBAAmB,KAAK,SAAS,KAAK,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,SAAS,GAAG,CAAC,CAAC;AAAA,IAC1F,cAAc,KAAK;AAAA,EACrB,CAAC;AACH;","names":[]}
@@ -1,16 +1,19 @@
1
+ import {
2
+ GridMain
3
+ } from "./chunk-M6365FGG.js";
1
4
  import {
2
5
  FilterDialog,
3
6
  GridFilterPanel
4
- } from "./chunk-4VNUOSTQ.js";
7
+ } from "./chunk-PHA3NFZM.js";
5
8
  import {
6
9
  DataViewsEmpty
7
10
  } from "./chunk-S7CAXRRP.js";
8
11
  import {
9
12
  InlineFilterControls
10
- } from "./chunk-RUO4D4N6.js";
13
+ } from "./chunk-LPNF4YJ7.js";
11
14
  import {
12
- GridMain
13
- } from "./chunk-QQE2PVLO.js";
15
+ GridHeaderRow
16
+ } from "./chunk-A4YWFX5C.js";
14
17
  import {
15
18
  DataViewsPagination
16
19
  } from "./chunk-VR5HDUBK.js";
@@ -20,7 +23,10 @@ import {
20
23
  } from "./chunk-TQ6FPOPD.js";
21
24
  import {
22
25
  ShellToolbar
23
- } from "./chunk-AWTERXCW.js";
26
+ } from "./chunk-GNAAHDCN.js";
27
+ import {
28
+ resolveSelectionExtra
29
+ } from "./chunk-KX75HM5U.js";
24
30
  import {
25
31
  ScopeTabsSlot
26
32
  } from "./chunk-OGGHD64H.js";
@@ -39,42 +45,11 @@ import {
39
45
  } from "./chunk-J3JGO6Y6.js";
40
46
  import {
41
47
  default as default2
42
- } from "./chunk-6DPAWXZ3.js";
43
- import {
44
- default as default3
45
48
  } from "./chunk-WEBEOBN5.js";
46
- import {
47
- Text
48
- } from "./chunk-VRHBJXZ7.js";
49
49
 
50
50
  // src/components/data-display/DataViews/data-views-grid-parts.tsx
51
51
  import { useEffect, useState } from "react";
52
52
  import { jsx, jsxs } from "react/jsx-runtime";
53
- function GridHeaderRow({
54
- title,
55
- headerActions,
56
- testIdPrefix
57
- }) {
58
- if (!title && !headerActions) return null;
59
- return /* @__PURE__ */ jsxs(
60
- default2,
61
- {
62
- "data-testid": `${testIdPrefix}-header`,
63
- sx: {
64
- display: "flex",
65
- alignItems: "center",
66
- justifyContent: "space-between",
67
- gap: 2,
68
- flexWrap: "wrap",
69
- pb: 1.5
70
- },
71
- children: [
72
- title ? /* @__PURE__ */ jsx(Text, { variant: "heading", size: "lg", as: "h2", children: title }) : /* @__PURE__ */ jsx(default2, {}),
73
- headerActions && /* @__PURE__ */ jsx(default2, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: headerActions })
74
- ]
75
- }
76
- );
77
- }
78
53
  function LayoutStateSync({
79
54
  c
80
55
  }) {
@@ -152,7 +127,7 @@ function ShellStack({
152
127
  open: c.filterOpen,
153
128
  onOpenChange: c.setFilterOpen,
154
129
  hasActiveFilters: c.activeFilterCount > 0,
155
- children: /* @__PURE__ */ jsxs(default3, { spacing: 0, "data-testid": dataTestId ? `${dataTestId}-container` : void 0, children: [
130
+ children: /* @__PURE__ */ jsxs(default2, { spacing: 0, "data-testid": dataTestId ? `${dataTestId}-container` : void 0, children: [
156
131
  /* @__PURE__ */ jsx(GridHeaderRow, { title: props.title, headerActions: props.headerActions, testIdPrefix }),
157
132
  /* @__PURE__ */ jsx(
158
133
  ShellToolbar,
@@ -175,6 +150,7 @@ function ShellStack({
175
150
  testIdPrefix,
176
151
  rowActions: props.rowActions,
177
152
  bulkActions: props.bulkActions,
153
+ selectionExtra: resolveSelectionExtra(props),
178
154
  toolbarRightSlot: props.toolbarRightSlot,
179
155
  compactControls: showInline && split.compactControls,
180
156
  counterHidden: showInline && split.counterHidden,
@@ -261,4 +237,4 @@ function GridShell(props) {
261
237
  export {
262
238
  GridShell
263
239
  };
264
- //# sourceMappingURL=chunk-Q4ITS2EP.js.map
240
+ //# sourceMappingURL=chunk-LNIVT62P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-grid-parts.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { TableFilter } from \"../../layout/TableFilter\";\nimport { Stack } from \"../../../mui/Stack\";\n\nimport {\n DataViewsLayoutProvider,\n useDataViewsLayout,\n type DataViewsLayout,\n} from \"./data-views-layout-context\";\nimport { FilterDialog, GridFilterPanel } from \"./data-views-filter-panel\";\nimport { GridMain } from \"./data-views-grid-bodies\";\nimport type { ListGroupConfig } from \"./list-card-rails\";\nimport { InlineFilterControls } from \"./data-views-inline-bar\";\nimport { toOverflowFields, useFilterOverflow, type OverflowSplit } from \"./data-views-overflow\";\nimport { GridHeaderRow } from \"./data-views-header-row\";\nimport { resolveSelectionExtra, type SelectionExtraRender } from \"./data-views-selection-extra\";\nimport { ShellToolbar } from \"./data-views-shell-toolbar\";\nimport type { DisplayPanelView } from \"./data-views-display-panel\";\nimport type { DataViewExport } from \"./data-views-export\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { DataViewsEmpty } from \"./data-views-empty\";\nimport { DataViewsPagination } from \"./data-views-pagination\";\nimport type { BoardConfig } from \"./DataViewsBoard\";\nimport { type ScopeConfig } from \"./data-views-scopes\";\nimport { ScopeTabsSlot } from \"./data-views-scope-tabs\";\nimport { togglePillValues } from \"./data-views-grid-helpers\";\nimport type {\n DataViewCardSelection,\n FilterFieldConfig,\n RangeFieldConfig,\n RangeValue,\n RowAction,\n} from \"./data-views-types\";\nimport type { DataViewsController } from \"./use-data-views-state\";\n\n/* ── Layout ⇄ view-state mirror ──────────────────────────────────────────── */\n\n/**\n * Mirrors the LIVE layout back into the view state, so saving a view captures\n * the layout the user is actually looking at.\n *\n * A component rather than a callback prop because only something INSIDE the\n * provider can read the layout, and only the controller can write the state.\n * The `stored !== layout` guard is what makes it idempotent: `c` is rebuilt on\n * every render, so an unguarded effect here would patch → re-render → patch.\n *\n * It re-fires when `stored` changes too, which is the case that matters after\n * applying a saved view: `appliedState` REPLACES the state, so a view saved\n * before layouts were captured clears `state.layout`, and the mirror puts the\n * current one back rather than leaving the next save with nothing to store.\n */\nfunction LayoutStateSync<T extends Record<string, unknown>>({\n c,\n}: {\n c: DataViewsController<T>;\n}): null {\n const { layout } = useDataViewsLayout();\n const stored = c.state.layout;\n useEffect(() => {\n if (stored !== layout) c.patch({ layout });\n // `c` is intentionally out of the deps — see the guard above.\n }, [layout, stored]);\n return null;\n}\n\n/* ── Shell (composes toolbar + body + panel) ─────────────────────────────── */\n\n/** The shared filter-surface props consumed by the inline bar, panel, and modal. */\ninterface FilterSurfaceProps<T extends Record<string, unknown>> {\n testIdPrefix: string;\n search: string;\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onSearchChange: (value: string) => void;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n onClearAll: () => void;\n}\n\n/**\n * Derives the responsive filter state (which surface to show at this width) and\n * the filter-mutation handlers from the controller — pulled out of `GridShell`\n * so the component body stays under the size/complexity budget.\n */\n/** Grouped rather than positional: the list had grown past readability. */\ninterface GridShellFiltersArgs<T extends Record<string, unknown>> {\n c: DataViewsController<T>;\n inlineFilters: boolean;\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n testIdPrefix: string;\n alwaysShowSearch: boolean;\n /** Is \"Exportar\" on the bar? Half the right cluster's cost when it is not. */\n hasExport: boolean;\n}\n\nfunction useGridShellFilters<T extends Record<string, unknown>>({\n c,\n inlineFilters,\n fields,\n rangeFields,\n testIdPrefix,\n alwaysShowSearch,\n hasExport,\n}: GridShellFiltersArgs<T>): {\n showInline: boolean;\n useModal: boolean;\n inlineVisible: boolean;\n filterProps: FilterSurfaceProps<T>;\n split: OverflowSplit<T>;\n onControlOpenChange: (open: boolean) => void;\n} {\n const { state } = c;\n // How many filter controls are open. A COUNT, not a flag: closing one popover\n // by opening another overlaps, and a boolean would unfreeze mid-handover.\n const [openControls, setOpenControls] = useState(0);\n // ONE measurement for the whole shell: the filter row decides which controls\n // it can keep, and the TOOLBAR needs the same answer to drop its labels.\n // Measuring twice would let the two disagree at the crossover width.\n const split = useFilterOverflow(\n toOverflowFields(fields, rangeFields),\n state.pills,\n c.ranges,\n openControls > 0,\n hasExport,\n );\n // THE BAR RENDERS AT EVERY WIDTH. It used to be swapped for a full-screen\n // filter MODAL below `lg`, which was the responsive strategy before the\n // measured ladder existed — and the two now do the same job, badly together:\n // the modal took the bar away at 1199px, and with it the very degradation\n // (labels off, search collapsed, filters into \"Mais\") that exists to make a\n // narrow bar work. So a 900px window got no bar and no ladder, and the\n // operator lost the search entirely rather than gaining a compact one.\n //\n // The ladder is measured, so it already covers every width the modal did.\n const showInline = inlineFilters;\n const useModal = false;\n const inlineVisible =\n showInline &&\n (alwaysShowSearch || fields.length > 0 || rangeFields.length > 0 || state.search !== \"\");\n const filterProps: FilterSurfaceProps<T> = {\n testIdPrefix,\n search: state.search,\n fields,\n rangeFields,\n pills: state.pills,\n ranges: c.ranges,\n onSearchChange: (value) => c.patch({ search: value }),\n // Updater, never the render's `state` — see {@link DataViewStatePatch}.\n onTogglePill: (fieldId, value, checked) =>\n c.patch(({ pills }) => ({ pills: { ...pills, [fieldId]: togglePillValues(pills[fieldId], value, checked) } })),\n onChangeRange: (fieldId, range) => c.patch({ ranges: { ...c.ranges, [fieldId]: range } }),\n onClearField: (fieldId) => c.patch({ pills: { ...state.pills, [fieldId]: [] } }),\n onClearAll: () => c.patch({ search: \"\", pills: {}, ranges: {} }),\n };\n return {\n showInline,\n useModal,\n inlineVisible,\n filterProps,\n split,\n onControlOpenChange: (open) =>\n setOpenControls((count) => Math.max(0, count + (open ? 1 : -1))),\n };\n}\n\ninterface GridShellProps<T extends Record<string, unknown>> {\n c: DataViewsController<T>;\n rows: T[];\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n getRowId: (row: T) => string | number;\n testIdPrefix: string;\n dataTestId?: string;\n emptyState?: React.ReactNode;\n toolbarRightSlot?: React.ReactNode;\n rowActions?: RowAction<T>[];\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /** A widening control beside the selection count — see `resolveSelectionExtra`. */\n selectionExtra?: SelectionExtraRender<T>;\n /** Opt-in \"Grade\" (cards) layout: renders each row as an entity-supplied card.\n * Omit ⇒ table only (no layout toggle). */\n renderCard?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /**\n * Opt-in \"Quadro\" (board) layout. Needs `renderCard` too — the board reuses\n * the entity's card, so a board config without one simply offers no board\n * rather than failing: that is a config gap, not a runtime error.\n */\n board?: BoardConfig<T>;\n /** Opt-in \"Lista\" layout: one full-width, entity-rendered row per record. */\n renderListRow?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /** The Lista's shared columns, so its rows line up by construction. */\n listGroup?: ListGroupConfig<T>;\n /** The page-level partition rendered as tabs under the toolbar. */\n scopes?: ScopeConfig[];\n /**\n * The row field the scopes partition by. Compared against the board's\n * `groupBy` so the two are not shown as the same partition twice.\n */\n scopeFieldId?: string;\n /** Per-sort-field value kind, so directions read in the column's own terms. */\n sortKinds?: Record<string, string>;\n /** The saved-view chrome bracketing the Exibir panel. */\n displayView?: DisplayPanelView;\n /** Injected export — the host re-queries; the grid never fetches. */\n exportConfig?: DataViewExport;\n /** Page title in the grid's own header row, above the scopes + toolbar. */\n title?: string;\n /** Primary page actions rendered at the header row's right. */\n headerActions?: React.ReactNode;\n /** Which layout to show first when the user has expressed no preference (default \"table\"). */\n defaultLayout?: DataViewsLayout;\n /** Pin to `defaultLayout`, ignoring the remembered preference (stories/docs). */\n ignoreStoredLayout?: boolean;\n /**\n * Opt into the responsive inline filter UX: a collapsible filter row below the\n * toolbar on wide screens and a modal on narrow ones. When false (default),\n * keep the classic slide-in filter panel opened by the \"Filtros\" button.\n */\n inlineFilters?: boolean;\n /**\n * Keep the inline search box on screen even with no filter fields and no\n * active search. Without it a grid whose only filter IS the search (`fields`\n * empty) can never OFFER one: the row renders only once a search exists, so\n * the operator would have to hand-edit the URL to start one. Default false —\n * every grid that ships filter fields already shows the row.\n */\n alwaysShowSearch?: boolean;\n}\n\n/** The scrollable content region: scope tabs, toolbar, filter bar, body, pager. */\nfunction ShellStack<T extends Record<string, unknown>>({\n props,\n filters,\n}: {\n props: GridShellProps<T>;\n filters: ReturnType<typeof useGridShellFilters<T>>;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { c, testIdPrefix, dataTestId, scopes = [], emptyState, inlineFilters = false } = props;\n const { showInline, useModal, inlineVisible, filterProps, split, onControlOpenChange } = filters;\n // The grid renders the FILTERED empty state itself — it is the only party\n // that knows a filter is applied. See {@link DataViewsEmpty}.\n const body = (\n <DataViewsEmpty\n filtered={c.activeFilterCount > 0 || c.state.search !== \"\"}\n onClearFilters={() => c.patch({ search: \"\", pills: {}, ranges: {} })}\n emptyState={emptyState}\n testIdPrefix={testIdPrefix}\n />\n );\n return (\n <TableFilter\n copy={copy.tableFilter} open={c.filterOpen} onOpenChange={c.setFilterOpen}\n hasActiveFilters={c.activeFilterCount > 0}\n >\n <Stack spacing={0} data-testid={dataTestId ? `${dataTestId}-container` : undefined}>\n <GridHeaderRow title={props.title} headerActions={props.headerActions} testIdPrefix={testIdPrefix} />\n <ShellToolbar\n c={c}\n rows={props.rows}\n sortKinds={props.sortKinds}\n displayView={props.displayView}\n exportConfig={props.exportConfig}\n filterControls={\n inlineVisible ? (\n <InlineFilterControls\n {...filterProps} split={split} activeFilterCount={c.activeFilterCount}\n onControlOpenChange={onControlOpenChange}\n />\n ) : undefined\n }\n barRef={split.barRef}\n testIdPrefix={testIdPrefix}\n rowActions={props.rowActions}\n bulkActions={props.bulkActions}\n selectionExtra={resolveSelectionExtra(props)}\n toolbarRightSlot={props.toolbarRightSlot}\n compactControls={showInline && split.compactControls}\n counterHidden={showInline && split.counterHidden}\n showInline={showInline}\n />\n <ScopeTabsSlot\n scopes={scopes} scopeFieldId={props.scopeFieldId} board={props.board}\n value={c.scope} onChange={c.setScope} counts={c.scopeCounts}\n testIdPrefix={testIdPrefix}\n />\n <TableFilter.Layout>\n <TableFilter.Main>\n <GridMain\n c={c}\n getRowId={props.getRowId}\n renderCard={props.renderCard}\n renderListRow={props.renderListRow}\n listGroup={props.listGroup}\n board={props.board}\n dataTestId={dataTestId}\n testIdPrefix={testIdPrefix}\n emptyState={body}\n />\n <DataViewsPagination c={c} testIdPrefix={testIdPrefix} />\n </TableFilter.Main>\n {inlineFilters ? null : <GridFilterPanel {...filterProps} />}\n </TableFilter.Layout>\n {useModal && <FilterDialog open={c.filterOpen} onClose={() => c.setFilterOpen(false)} {...filterProps} />}\n </Stack>\n </TableFilter>\n );\n}\n\nexport function GridShell<T extends Record<string, unknown>>(props: GridShellProps<T>): React.JSX.Element {\n const {\n c,\n fields,\n rangeFields,\n testIdPrefix,\n renderCard,\n renderListRow,\n board,\n defaultLayout,\n ignoreStoredLayout,\n inlineFilters = false,\n alwaysShowSearch = false,\n } = props;\n const filters = useGridShellFilters({\n c,\n inlineFilters,\n fields,\n rangeFields,\n testIdPrefix,\n alwaysShowSearch,\n hasExport: props.exportConfig !== undefined,\n });\n return (\n <DataViewsLayoutProvider\n canUseCards={Boolean(renderCard)}\n canUseList={Boolean(renderListRow)}\n // The board reuses the entity's card, so it needs BOTH — a `board` with no\n // `renderCard` offers no board rather than throwing.\n canUseBoard={Boolean(board && renderCard)}\n defaultLayout={defaultLayout}\n ignoreStoredLayout={ignoreStoredLayout}\n viewLayout={c.state.layout}\n >\n <LayoutStateSync c={c} />\n <ShellStack props={props} filters={filters} />\n </DataViewsLayoutProvider>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-ECIGNYSI.js";
8
8
  import {
9
9
  MoreFilters
10
- } from "./chunk-N6JGYVRY.js";
10
+ } from "./chunk-UENDC45F.js";
11
11
  import {
12
12
  RangePill
13
- } from "./chunk-XEE7PLDR.js";
13
+ } from "./chunk-DFLTUI7W.js";
14
14
  import {
15
15
  CollapsedSearch,
16
16
  InlineKeyword
@@ -220,4 +220,4 @@ function FilterSlots({
220
220
  export {
221
221
  InlineFilterControls
222
222
  };
223
- //# sourceMappingURL=chunk-RUO4D4N6.js.map
223
+ //# sourceMappingURL=chunk-LPNF4YJ7.js.map
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-KHG57NAE.js";
23
23
  import {
24
24
  DataGrid
25
- } from "./chunk-X5MPHXG5.js";
25
+ } from "./chunk-RPWEXIAW.js";
26
26
  import {
27
27
  default as default2
28
28
  } from "./chunk-6DPAWXZ3.js";
@@ -264,4 +264,4 @@ function GridMain(props) {
264
264
  export {
265
265
  GridMain
266
266
  };
267
- //# sourceMappingURL=chunk-QQE2PVLO.js.map
267
+ //# sourceMappingURL=chunk-M6365FGG.js.map
@@ -8,7 +8,7 @@ import {
8
8
  metaShape,
9
9
  rowStyles,
10
10
  useRowShell
11
- } from "./chunk-4KSOSI3U.js";
11
+ } from "./chunk-O6V7KKW7.js";
12
12
  import {
13
13
  ListCardActions,
14
14
  ListCardCaption,
@@ -179,4 +179,4 @@ function BaseListCard(props) {
179
179
  export {
180
180
  BaseListCard
181
181
  };
182
- //# sourceMappingURL=chunk-RDYBS45D.js.map
182
+ //# sourceMappingURL=chunk-O6MZPB64.js.map