@godxjp/ui 11.0.2 → 12.0.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 (107) hide show
  1. package/README.md +40 -12
  2. package/dist/app/index.d.ts +1 -5
  3. package/dist/app/index.js +4 -4
  4. package/dist/{checkbox-em-oFM5D.d.ts → checkbox-DPFcnsMZ.d.ts} +1 -1
  5. package/dist/{chunk-QVLUCB47.js → chunk-2JCSS6B4.js} +2 -2
  6. package/dist/{chunk-6CSBMMZS.js → chunk-3ELRYXJK.js} +27 -0
  7. package/dist/{chunk-NXVCI6YB.js → chunk-3LPY7YA4.js} +2 -2
  8. package/dist/chunk-BCBK4FLV.js +83 -0
  9. package/dist/{chunk-FAB3LMTK.js → chunk-F7BEIY7S.js} +3 -3
  10. package/dist/chunk-FK2JDABO.js +318 -0
  11. package/dist/{chunk-X2VY4MOW.js → chunk-FK5QEFVY.js} +2 -11
  12. package/dist/{chunk-SARQRCKO.js → chunk-FOANNF6Z.js} +1 -1
  13. package/dist/{chunk-DNGJHWJZ.js → chunk-FTOG7D4T.js} +4 -2
  14. package/dist/{chunk-PUGEOUWZ.js → chunk-I6HD36IU.js} +2 -2
  15. package/dist/{chunk-2HOTP7RL.js → chunk-JSQOCVM6.js} +4 -78
  16. package/dist/{chunk-Z46J47FY.js → chunk-L2MEN2VK.js} +1 -1
  17. package/dist/{chunk-3Q4A4U2P.js → chunk-MMFIL33F.js} +1 -1
  18. package/dist/{chunk-IHRMOJXD.js → chunk-N6ELT7KB.js} +0 -47
  19. package/dist/{chunk-UNVRNJCB.js → chunk-PO5ISUFA.js} +1 -1
  20. package/dist/{chunk-T2QO2S65.js → chunk-PY3CXDO2.js} +3 -3
  21. package/dist/{chunk-EE5DKOHX.js → chunk-SIUIIIQW.js} +1 -1
  22. package/dist/{chunk-HTG5VHU7.js → chunk-TXRYSMOD.js} +2 -6
  23. package/dist/{chunk-IY347EQA.js → chunk-UDEPO3UF.js} +1 -1
  24. package/dist/{chunk-BG5RNXTH.js → chunk-UJUWAQE5.js} +1 -1
  25. package/dist/{chunk-PDXFQS7M.js → chunk-VWDXRNOK.js} +4 -6
  26. package/dist/{chunk-QR7MITE6.js → chunk-WBUUCU7R.js} +52 -20
  27. package/dist/{chunk-54R5TEXH.js → chunk-WJNR3RAG.js} +40 -20
  28. package/dist/{chunk-USNR424B.js → chunk-XT2AI6WJ.js} +4 -11
  29. package/dist/{chunk-JWGLJXQU.js → chunk-XVD5SLDL.js} +1 -1
  30. package/dist/chunk-YD7V2HGZ.js +13 -0
  31. package/dist/{chunk-VSM44AYE.js → chunk-YGD4CCQC.js} +36 -15
  32. package/dist/components/admin/index.d.ts +7 -15
  33. package/dist/components/admin/index.js +28 -26
  34. package/dist/components/data-display/badge.js +3 -3
  35. package/dist/components/data-display/card.d.ts +2 -2
  36. package/dist/components/data-display/carousel.js +3 -3
  37. package/dist/components/data-display/index.js +8 -7
  38. package/dist/components/data-entry/calendar.d.ts +1 -1
  39. package/dist/components/data-entry/calendar.js +1 -1
  40. package/dist/components/data-entry/cascader.d.ts +1 -1
  41. package/dist/components/data-entry/cascader.js +3 -6
  42. package/dist/components/data-entry/checkbox.d.ts +2 -2
  43. package/dist/components/data-entry/color-picker.d.ts +1 -1
  44. package/dist/components/data-entry/color-picker.js +3 -3
  45. package/dist/components/data-entry/command.d.ts +10 -10
  46. package/dist/components/data-entry/date-picker.d.ts +1 -1
  47. package/dist/components/data-entry/date-picker.js +4 -4
  48. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  49. package/dist/components/data-entry/date-range-picker.js +4 -4
  50. package/dist/components/data-entry/index.d.ts +3 -3
  51. package/dist/components/data-entry/index.js +18 -17
  52. package/dist/components/data-entry/radio.d.ts +1 -1
  53. package/dist/components/data-entry/select.d.ts +1 -1
  54. package/dist/components/data-entry/select.js +4 -4
  55. package/dist/components/data-entry/slider.d.ts +1 -1
  56. package/dist/components/data-entry/switch.d.ts +1 -1
  57. package/dist/components/data-entry/time-input.js +2 -2
  58. package/dist/components/data-entry/time-picker.d.ts +1 -1
  59. package/dist/components/data-entry/time-picker.js +3 -3
  60. package/dist/components/data-entry/transfer.d.ts +2 -2
  61. package/dist/components/data-entry/transfer.js +5 -4
  62. package/dist/components/data-entry/tree-select.d.ts +1 -1
  63. package/dist/components/data-entry/tree-select.js +3 -3
  64. package/dist/components/data-entry/upload.d.ts +2 -2
  65. package/dist/components/data-entry/upload.js +5 -5
  66. package/dist/components/data-grid/index.d.ts +71 -0
  67. package/dist/components/data-grid/index.js +372 -0
  68. package/dist/components/feedback/alert.js +4 -4
  69. package/dist/components/feedback/dialog.js +3 -3
  70. package/dist/components/feedback/index.d.ts +3 -3
  71. package/dist/components/feedback/index.js +6 -6
  72. package/dist/components/layout/index.d.ts +3 -3
  73. package/dist/components/layout/index.js +5 -5
  74. package/dist/components/navigation/index.d.ts +2 -2
  75. package/dist/components/navigation/index.js +9 -9
  76. package/dist/components/navigation/pagination.d.ts +1 -1
  77. package/dist/components/navigation/pagination.js +5 -5
  78. package/dist/components/navigation/steps.d.ts +2 -2
  79. package/dist/components/navigation/steps.js +3 -3
  80. package/dist/components/query/index.d.ts +1 -2
  81. package/dist/components/query/index.js +4 -4
  82. package/dist/components/ui/index.d.ts +3 -3
  83. package/dist/components/ui/index.js +25 -25
  84. package/dist/{data-entry.prop-BR4vNA1j.d.ts → data-entry.prop-6J0o45se.d.ts} +3 -25
  85. package/dist/{filter-bar-BxjSJJnQ.d.ts → filter-bar-B07JSxME.d.ts} +1 -1
  86. package/dist/{flex-D_EXRFSW.d.ts → flex-DXtIALBh.d.ts} +1 -1
  87. package/dist/i18n/index.d.ts +10 -0
  88. package/dist/i18n/index.js +2 -2
  89. package/dist/index.d.ts +7 -7
  90. package/dist/index.js +37 -35
  91. package/dist/{layout.prop-JE2TcRyL.d.ts → layout.prop-B1yQPUNZ.d.ts} +2 -17
  92. package/dist/lib/datetime/index.js +1 -1
  93. package/dist/{navigation.prop-DMcXkR-J.d.ts → navigation.prop-Dumy196X.d.ts} +1 -5
  94. package/dist/props/components/index.d.ts +4 -4
  95. package/dist/props/index.d.ts +4 -4
  96. package/dist/props/index.js +2 -2
  97. package/dist/props/registry.d.ts +0 -47
  98. package/dist/props/registry.js +1 -1
  99. package/dist/{query.prop-BDdz9L1G.d.ts → query.prop-Dog-EAfG.d.ts} +2 -6
  100. package/dist/{search-input-C_x-JFD3.d.ts → search-input-BR4nAWiT.d.ts} +1 -1
  101. package/dist/styles/control.css +3 -8
  102. package/dist/styles/layout.css +7 -3
  103. package/dist/styles/navigation-layout.css +3 -3
  104. package/dist/styles/shell-layout.css +4 -4
  105. package/package.json +15 -3
  106. package/dist/chunk-5NCFLCM7.js +0 -255
  107. /package/dist/{chunk-7CFO5FFE.js → chunk-GJXOBDER.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { q as TimePickerProp } from '../../data-entry.prop-BR4vNA1j.js';
2
+ import { p as TimePickerProp } from '../../data-entry.prop-6J0o45se.js';
3
3
  import '@radix-ui/react-checkbox';
4
4
  import '@radix-ui/react-radio-group';
5
5
  import '@radix-ui/react-slider';
@@ -1,7 +1,7 @@
1
- export { TimePicker } from '../../chunk-VSM44AYE.js';
1
+ export { TimePicker } from '../../chunk-YGD4CCQC.js';
2
2
  import '../../chunk-VOHTRR5X.js';
3
3
  import '../../chunk-M4PZNAMV.js';
4
4
  import '../../chunk-DY5C44UP.js';
5
- import '../../chunk-HTG5VHU7.js';
6
- import '../../chunk-6CSBMMZS.js';
5
+ import '../../chunk-TXRYSMOD.js';
6
+ import '../../chunk-3ELRYXJK.js';
7
7
  import '../../chunk-U7N2A7A3.js';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { s as TransferProp } from '../../data-entry.prop-BR4vNA1j.js';
3
- export { r as TransferItemProp } from '../../data-entry.prop-BR4vNA1j.js';
2
+ import { r as TransferProp } from '../../data-entry.prop-6J0o45se.js';
3
+ export { q as TransferItemProp } from '../../data-entry.prop-6J0o45se.js';
4
4
  import '@radix-ui/react-checkbox';
5
5
  import '@radix-ui/react-radio-group';
6
6
  import '@radix-ui/react-slider';
@@ -1,12 +1,13 @@
1
- export { Transfer } from '../../chunk-2HOTP7RL.js';
2
- import '../../chunk-SMLKNECP.js';
1
+ export { Transfer } from '../../chunk-JSQOCVM6.js';
2
+ import '../../chunk-BCBK4FLV.js';
3
3
  import '../../chunk-VOHTRR5X.js';
4
+ import '../../chunk-SMLKNECP.js';
4
5
  import '../../chunk-BE6GJGKJ.js';
5
6
  import '../../chunk-44YRPSZ7.js';
6
7
  import '../../chunk-M4PZNAMV.js';
7
8
  import '../../chunk-3KPEZ5CF.js';
8
9
  import '../../chunk-7PWBC4BY.js';
9
- import '../../chunk-HTG5VHU7.js';
10
- import '../../chunk-6CSBMMZS.js';
10
+ import '../../chunk-TXRYSMOD.js';
11
+ import '../../chunk-3ELRYXJK.js';
11
12
  import '../../chunk-LFW37FGG.js';
12
13
  import '../../chunk-U7N2A7A3.js';
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { v as TreeSelectProp } from '../../data-entry.prop-BR4vNA1j.js';
2
+ import { u as TreeSelectProp } from '../../data-entry.prop-6J0o45se.js';
3
3
  import '@radix-ui/react-checkbox';
4
4
  import '@radix-ui/react-radio-group';
5
5
  import '@radix-ui/react-slider';
@@ -1,4 +1,4 @@
1
- export { SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeSelect } from '../../chunk-UNVRNJCB.js';
1
+ export { SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeSelect } from '../../chunk-PO5ISUFA.js';
2
2
  import '../../chunk-SMLKNECP.js';
3
3
  import '../../chunk-HTEL5DQI.js';
4
4
  import '../../chunk-BE6GJGKJ.js';
@@ -8,6 +8,6 @@ import '../../chunk-DY5C44UP.js';
8
8
  import '../../chunk-3KPEZ5CF.js';
9
9
  import '../../chunk-IBK5D2Q6.js';
10
10
  import '../../chunk-7PWBC4BY.js';
11
- import '../../chunk-HTG5VHU7.js';
12
- import '../../chunk-6CSBMMZS.js';
11
+ import '../../chunk-TXRYSMOD.js';
12
+ import '../../chunk-3ELRYXJK.js';
13
13
  import '../../chunk-U7N2A7A3.js';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { w as UploadFileItem, U as UploadCommitAction, y as UploadProp } from '../../data-entry.prop-BR4vNA1j.js';
3
- export { x as UploadFileItemProp, z as UploadVariant, B as UploadVariantProp, E as collectUploadCommitActions, G as createUploadItem } from '../../data-entry.prop-BR4vNA1j.js';
2
+ import { v as UploadFileItem, U as UploadCommitAction, x as UploadProp } from '../../data-entry.prop-6J0o45se.js';
3
+ export { w as UploadFileItemProp, y as UploadVariant, z as UploadVariantProp, A as collectUploadCommitActions, B as createUploadItem } from '../../data-entry.prop-6J0o45se.js';
4
4
  import '@radix-ui/react-checkbox';
5
5
  import '@radix-ui/react-radio-group';
6
6
  import '@radix-ui/react-slider';
@@ -1,11 +1,11 @@
1
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-FAB3LMTK.js';
2
- import '../../chunk-X2VY4MOW.js';
3
- import '../../chunk-BG5RNXTH.js';
1
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from '../../chunk-F7BEIY7S.js';
4
2
  import '../../chunk-CRERCLIZ.js';
3
+ import '../../chunk-FK5QEFVY.js';
4
+ import '../../chunk-UJUWAQE5.js';
5
5
  import '../../chunk-VOHTRR5X.js';
6
6
  import '../../chunk-M4PZNAMV.js';
7
7
  import '../../chunk-IBK5D2Q6.js';
8
8
  import '../../chunk-7PWBC4BY.js';
9
- import '../../chunk-HTG5VHU7.js';
10
- import '../../chunk-6CSBMMZS.js';
9
+ import '../../chunk-TXRYSMOD.js';
10
+ import '../../chunk-3ELRYXJK.js';
11
11
  import '../../chunk-U7N2A7A3.js';
@@ -0,0 +1,71 @@
1
+ import * as React from 'react';
2
+ import { RowData, ColumnDef, SortingState, OnChangeFn, ColumnFiltersState, PaginationState, RowSelectionState, VisibilityState } from '@tanstack/react-table';
3
+ export { ColumnDef } from '@tanstack/react-table';
4
+ import { T as TableDensityProp } from '../../layout.prop-CXvl2rVR.js';
5
+
6
+ type DataGridDensity = TableDensityProp;
7
+
8
+ declare module "@tanstack/react-table" {
9
+ interface ColumnMeta<TData extends RowData, TValue> {
10
+ label?: React.ReactNode;
11
+ }
12
+ }
13
+ interface DataGridProps<T> {
14
+ columns: ColumnDef<T, unknown>[];
15
+ data: T[];
16
+ getRowId?: (row: T) => string;
17
+ /** Stable id key when getRowId is omitted (defaults to "id"). */
18
+ rowIdKey?: keyof T & string;
19
+ sorting?: SortingState;
20
+ onSortingChange?: OnChangeFn<SortingState>;
21
+ columnFilters?: ColumnFiltersState;
22
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
23
+ globalFilter?: string;
24
+ onGlobalFilterChange?: OnChangeFn<string>;
25
+ pagination?: PaginationState;
26
+ onPaginationChange?: OnChangeFn<PaginationState>;
27
+ /** Total server row count (manual pagination) — drives the page count. */
28
+ rowCount?: number;
29
+ rowSelection?: RowSelectionState;
30
+ onRowSelectionChange?: OnChangeFn<RowSelectionState>;
31
+ enableRowSelection?: boolean;
32
+ columnVisibility?: VisibilityState;
33
+ onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
34
+ manualSorting?: boolean;
35
+ manualFiltering?: boolean;
36
+ manualPagination?: boolean;
37
+ density?: DataGridDensity;
38
+ onDensityChange?: (d: DataGridDensity) => void;
39
+ loading?: boolean;
40
+ empty?: React.ReactNode;
41
+ onRowClick?: (row: T) => void;
42
+ className?: string;
43
+ children?: React.ReactNode;
44
+ }
45
+ interface DataGridComponent {
46
+ <T>(props: DataGridProps<T>): React.ReactElement;
47
+ Toolbar: React.FC<{
48
+ children?: React.ReactNode;
49
+ className?: string;
50
+ }>;
51
+ Search: React.FC<{
52
+ placeholder?: string;
53
+ className?: string;
54
+ }>;
55
+ ViewOptions: React.FC<{
56
+ className?: string;
57
+ }>;
58
+ BulkActions: React.FC<{
59
+ children: (count: number) => React.ReactNode;
60
+ }>;
61
+ DensityToggle: React.FC;
62
+ Content: React.FC;
63
+ Pagination: React.FC<{
64
+ pageSizeOptions?: number[];
65
+ className?: string;
66
+ }>;
67
+ displayName?: string;
68
+ }
69
+ declare const DataGrid: DataGridComponent;
70
+
71
+ export { DataGrid, type DataGridDensity, type DataGridProps };
@@ -0,0 +1,372 @@
1
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuCheckboxItem } from '../../chunk-LMKUKCTN.js';
2
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '../../chunk-3LPY7YA4.js';
3
+ import { SearchInput } from '../../chunk-BCBK4FLV.js';
4
+ import '../../chunk-VOHTRR5X.js';
5
+ import '../../chunk-HTEL5DQI.js';
6
+ import { EmptyState } from '../../chunk-YD7V2HGZ.js';
7
+ import { Checkbox } from '../../chunk-BE6GJGKJ.js';
8
+ import '../../chunk-44YRPSZ7.js';
9
+ import { Flex, densityClass } from '../../chunk-INIIF7F7.js';
10
+ import { Button } from '../../chunk-M4PZNAMV.js';
11
+ import '../../chunk-DY5C44UP.js';
12
+ import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from '../../chunk-4MMIMZMK.js';
13
+ import { tableCellPaddingClass, tableRowHeightClass } from '../../chunk-IBK5D2Q6.js';
14
+ import '../../chunk-7PWBC4BY.js';
15
+ import { useTranslation } from '../../chunk-TXRYSMOD.js';
16
+ import '../../chunk-3ELRYXJK.js';
17
+ import '../../chunk-LFW37FGG.js';
18
+ import { cn } from '../../chunk-U7N2A7A3.js';
19
+ import * as React from 'react';
20
+ import { flexRender, useReactTable, getPaginationRowModel, getFilteredRowModel, getSortedRowModel, getCoreRowModel } from '@tanstack/react-table';
21
+ import { SlidersHorizontal, Layers, Layers2, ArrowUp, ArrowDown, ChevronsUpDown, ChevronLeft, ChevronRight } from 'lucide-react';
22
+ import { jsx, jsxs } from 'react/jsx-runtime';
23
+
24
+ var DataGridContext = React.createContext(null);
25
+ function useDataGrid() {
26
+ const ctx = React.useContext(DataGridContext);
27
+ if (!ctx) throw new Error("DataGrid.* must be used inside <DataGrid>");
28
+ return ctx;
29
+ }
30
+ var DataGrid = function DataGridRoot({
31
+ columns,
32
+ data,
33
+ getRowId,
34
+ rowIdKey = "id",
35
+ sorting,
36
+ onSortingChange,
37
+ columnFilters,
38
+ onColumnFiltersChange,
39
+ globalFilter,
40
+ onGlobalFilterChange,
41
+ pagination,
42
+ onPaginationChange,
43
+ rowCount,
44
+ rowSelection,
45
+ onRowSelectionChange,
46
+ enableRowSelection = false,
47
+ columnVisibility: columnVisibilityProp,
48
+ onColumnVisibilityChange,
49
+ manualSorting = true,
50
+ manualFiltering = true,
51
+ manualPagination = true,
52
+ density: densityProp,
53
+ onDensityChange,
54
+ loading = false,
55
+ empty,
56
+ onRowClick,
57
+ className,
58
+ children
59
+ }) {
60
+ const [internalDensity, setInternalDensity] = React.useState("comfortable");
61
+ const density = densityProp ?? internalDensity;
62
+ const setDensity = (d) => {
63
+ if (!densityProp) setInternalDensity(d);
64
+ onDensityChange?.(d);
65
+ };
66
+ const [internalSorting, setInternalSorting] = React.useState([]);
67
+ const [internalFilters, setInternalFilters] = React.useState([]);
68
+ const [internalGlobal, setInternalGlobal] = React.useState("");
69
+ const [internalPagination, setInternalPagination] = React.useState({
70
+ pageIndex: 0,
71
+ pageSize: 10
72
+ });
73
+ const [internalSelection, setInternalSelection] = React.useState({});
74
+ const [internalVisibility, setInternalVisibility] = React.useState({});
75
+ const resolveRowId = React.useCallback(
76
+ (row) => getRowId ? getRowId(row) : String(row[rowIdKey]),
77
+ [getRowId, rowIdKey]
78
+ );
79
+ const table = useReactTable({
80
+ data,
81
+ columns,
82
+ getRowId: resolveRowId,
83
+ getCoreRowModel: getCoreRowModel(),
84
+ ...manualSorting ? {} : { getSortedRowModel: getSortedRowModel() },
85
+ ...manualFiltering ? {} : { getFilteredRowModel: getFilteredRowModel() },
86
+ ...manualPagination ? {} : { getPaginationRowModel: getPaginationRowModel() },
87
+ manualSorting,
88
+ manualFiltering,
89
+ manualPagination,
90
+ rowCount,
91
+ enableRowSelection,
92
+ state: {
93
+ sorting: sorting ?? internalSorting,
94
+ columnFilters: columnFilters ?? internalFilters,
95
+ globalFilter: globalFilter ?? internalGlobal,
96
+ pagination: pagination ?? internalPagination,
97
+ rowSelection: rowSelection ?? internalSelection,
98
+ columnVisibility: columnVisibilityProp ?? internalVisibility
99
+ },
100
+ onSortingChange: onSortingChange ?? setInternalSorting,
101
+ onColumnFiltersChange: onColumnFiltersChange ?? setInternalFilters,
102
+ onGlobalFilterChange: onGlobalFilterChange ?? setInternalGlobal,
103
+ onPaginationChange: onPaginationChange ?? setInternalPagination,
104
+ onRowSelectionChange: onRowSelectionChange ?? setInternalSelection,
105
+ onColumnVisibilityChange: onColumnVisibilityChange ?? setInternalVisibility
106
+ });
107
+ const ctx = {
108
+ table,
109
+ density,
110
+ setDensity,
111
+ loading,
112
+ empty,
113
+ onRowClick
114
+ };
115
+ return /* @__PURE__ */ jsx(DataGridContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
116
+ "div",
117
+ {
118
+ className: cn(
119
+ "ui-data-table-root",
120
+ densityClass[density === "compact" ? "compact" : "comfortable"],
121
+ className
122
+ ),
123
+ children: children ?? /* @__PURE__ */ jsx(DataGrid.Content, {})
124
+ }
125
+ ) });
126
+ };
127
+ DataGrid.displayName = "DataGrid";
128
+ DataGrid.Toolbar = function DataGridToolbar({ children, className }) {
129
+ return /* @__PURE__ */ jsx(
130
+ Flex,
131
+ {
132
+ direction: "row",
133
+ align: "center",
134
+ justify: "between",
135
+ gap: "sm",
136
+ wrap: true,
137
+ className: cn("ui-data-table-toolbar", className),
138
+ children
139
+ }
140
+ );
141
+ };
142
+ DataGrid.Toolbar.displayName = "DataGrid.Toolbar";
143
+ DataGrid.Search = function DataGridSearch({ placeholder, className }) {
144
+ const { table } = useDataGrid();
145
+ const { t } = useTranslation();
146
+ const value = table.getState().globalFilter ?? "";
147
+ return /* @__PURE__ */ jsx(
148
+ SearchInput,
149
+ {
150
+ value,
151
+ onValueChange: (q) => table.setGlobalFilter(q),
152
+ onSearch: (q) => table.setGlobalFilter(q),
153
+ placeholder: placeholder ?? t("dataGrid.searchPlaceholder"),
154
+ ariaLabel: t("dataGrid.search"),
155
+ className
156
+ }
157
+ );
158
+ };
159
+ DataGrid.Search.displayName = "DataGrid.Search";
160
+ DataGrid.ViewOptions = function DataGridViewOptions({ className }) {
161
+ const { table } = useDataGrid();
162
+ const { t } = useTranslation();
163
+ const hideable = table.getAllLeafColumns().filter((c) => c.getCanHide());
164
+ if (hideable.length === 0) return null;
165
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
166
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", className, children: [
167
+ /* @__PURE__ */ jsx(SlidersHorizontal, { className: "size-4 shrink-0", "aria-hidden": "true" }),
168
+ t("dataGrid.view")
169
+ ] }) }),
170
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", children: [
171
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: t("dataGrid.toggleColumns") }),
172
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
173
+ hideable.map((column) => /* @__PURE__ */ jsx(
174
+ DropdownMenuCheckboxItem,
175
+ {
176
+ checked: column.getIsVisible(),
177
+ onCheckedChange: (v) => column.toggleVisibility(!!v),
178
+ children: columnLabel(column)
179
+ },
180
+ column.id
181
+ ))
182
+ ] })
183
+ ] });
184
+ };
185
+ DataGrid.ViewOptions.displayName = "DataGrid.ViewOptions";
186
+ function columnLabel(column) {
187
+ const meta = column.columnDef.meta;
188
+ if (meta?.label) return meta.label;
189
+ if (typeof column.columnDef.header === "string") return column.columnDef.header;
190
+ return column.id;
191
+ }
192
+ DataGrid.BulkActions = function DataGridBulkActions({ children }) {
193
+ const { table } = useDataGrid();
194
+ const count = table.getSelectedRowModel().rows.length;
195
+ if (count === 0) return null;
196
+ return /* @__PURE__ */ jsx(Flex, { direction: "row", align: "center", gap: "sm", children: children(count) });
197
+ };
198
+ DataGrid.BulkActions.displayName = "DataGrid.BulkActions";
199
+ DataGrid.DensityToggle = function DataGridDensityToggle() {
200
+ const { density, setDensity } = useDataGrid();
201
+ const { t } = useTranslation();
202
+ const next = density === "compact" ? "comfortable" : "compact";
203
+ const Icon = density === "compact" ? Layers : Layers2;
204
+ const nextLabel = next === "compact" ? t("dataTable.densityCompact") : t("dataTable.densityComfortable");
205
+ return /* @__PURE__ */ jsxs(
206
+ Button,
207
+ {
208
+ variant: "outline",
209
+ size: "sm",
210
+ onClick: () => setDensity(next),
211
+ "aria-label": t("dataTable.densitySwitch", { density: nextLabel }),
212
+ children: [
213
+ /* @__PURE__ */ jsx(Icon, { className: "size-4 shrink-0", "aria-hidden": "true" }),
214
+ density === "compact" ? t("dataTable.densityCompact") : t("dataTable.densityComfortable")
215
+ ]
216
+ }
217
+ );
218
+ };
219
+ DataGrid.DensityToggle.displayName = "DataGrid.DensityToggle";
220
+ DataGrid.Content = function DataGridContent() {
221
+ const { table, loading, empty, onRowClick } = useDataGrid();
222
+ const { t } = useTranslation();
223
+ const leafCount = table.getVisibleLeafColumns().length;
224
+ const enableSelection = table.options.enableRowSelection;
225
+ const colSpan = leafCount + (enableSelection ? 1 : 0);
226
+ const isInteractive = (target) => !!target.closest("button, a, input, select, textarea, [role=menuitem], [role=checkbox]");
227
+ return /* @__PURE__ */ jsx("div", { className: "ui-data-table-scroll", "aria-busy": loading, children: /* @__PURE__ */ jsx("div", { className: "ui-data-table-surface min-w-[640px] sm:min-w-0", children: /* @__PURE__ */ jsxs(Table, { children: [
228
+ /* @__PURE__ */ jsx(TableHeader, { className: "bg-secondary sticky top-0 z-10", children: table.getHeaderGroups().map((hg) => /* @__PURE__ */ jsxs(TableRow, { children: [
229
+ enableSelection && /* @__PURE__ */ jsx(TableHead, { className: "w-10", children: /* @__PURE__ */ jsx(
230
+ Checkbox,
231
+ {
232
+ checked: table.getIsAllPageRowsSelected() ? true : table.getIsSomePageRowsSelected() ? "indeterminate" : false,
233
+ onCheckedChange: (v) => table.toggleAllPageRowsSelected(!!v),
234
+ "aria-label": t("dataTable.selectAll")
235
+ }
236
+ ) }),
237
+ hg.headers.map((header) => {
238
+ const canSort = header.column.getCanSort();
239
+ const sorted = header.column.getIsSorted();
240
+ return /* @__PURE__ */ jsx(
241
+ TableHead,
242
+ {
243
+ "aria-sort": canSort ? sorted === "asc" ? "ascending" : sorted === "desc" ? "descending" : "none" : void 0,
244
+ className: cn(canSort && "select-none"),
245
+ children: header.isPlaceholder ? null : canSort ? /* @__PURE__ */ jsxs(
246
+ "button",
247
+ {
248
+ type: "button",
249
+ className: "ui-data-table-sort-button focus-visible:ring-ring inline-flex items-center gap-1 rounded-sm focus-visible:ring-2",
250
+ onClick: header.column.getToggleSortingHandler(),
251
+ children: [
252
+ flexRender(header.column.columnDef.header, header.getContext()),
253
+ sorted === "asc" ? /* @__PURE__ */ jsx(ArrowUp, { className: "size-3", "aria-hidden": "true" }) : sorted === "desc" ? /* @__PURE__ */ jsx(ArrowDown, { className: "size-3", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(
254
+ ChevronsUpDown,
255
+ {
256
+ className: "text-muted-foreground size-3",
257
+ "aria-hidden": "true"
258
+ }
259
+ )
260
+ ]
261
+ }
262
+ ) : flexRender(header.column.columnDef.header, header.getContext())
263
+ },
264
+ header.id
265
+ );
266
+ })
267
+ ] }, hg.id)) }),
268
+ /* @__PURE__ */ jsx(TableBody, { children: loading ? /* @__PURE__ */ jsx(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ jsx(TableCell, { colSpan, className: "h-32 text-center", "aria-live": "polite", children: /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: t("dataTable.loading") }) }) }) : table.getRowModel().rows.length === 0 ? /* @__PURE__ */ jsx(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ jsx(TableCell, { colSpan, className: "ui-data-table-empty", "aria-live": "polite", children: empty ?? /* @__PURE__ */ jsx(EmptyState, { title: t("dataTable.empty") }) }) }) : table.getRowModel().rows.map((row) => {
269
+ const selected = row.getIsSelected();
270
+ return /* @__PURE__ */ jsxs(
271
+ TableRow,
272
+ {
273
+ "data-state": selected ? "selected" : void 0,
274
+ tabIndex: onRowClick ? 0 : void 0,
275
+ onClick: (e) => {
276
+ if (isInteractive(e.target)) return;
277
+ onRowClick?.(row.original);
278
+ },
279
+ onKeyDown: onRowClick ? (e) => {
280
+ if (e.key !== "Enter" && e.key !== " ") return;
281
+ if (e.target !== e.currentTarget) return;
282
+ e.preventDefault();
283
+ onRowClick(row.original);
284
+ } : void 0,
285
+ className: cn(
286
+ tableRowHeightClass,
287
+ onRowClick && "hover:bg-muted/50 focus-visible:ring-ring cursor-pointer focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset",
288
+ selected && "bg-muted/30"
289
+ ),
290
+ children: [
291
+ enableSelection && /* @__PURE__ */ jsx(TableCell, { className: tableCellPaddingClass, children: /* @__PURE__ */ jsx(
292
+ Checkbox,
293
+ {
294
+ checked: selected,
295
+ onCheckedChange: (v) => row.toggleSelected(!!v),
296
+ "aria-label": t("dataTable.selectRow", { id: row.id }),
297
+ onClick: (e) => e.stopPropagation()
298
+ }
299
+ ) }),
300
+ row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(TableCell, { className: tableCellPaddingClass, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))
301
+ ]
302
+ },
303
+ row.id
304
+ );
305
+ }) })
306
+ ] }) }) });
307
+ };
308
+ DataGrid.Content.displayName = "DataGrid.Content";
309
+ DataGrid.Pagination = function DataGridPagination({
310
+ pageSizeOptions = [10, 20, 50, 100],
311
+ className
312
+ }) {
313
+ const { table } = useDataGrid();
314
+ const { t } = useTranslation();
315
+ const { pageIndex, pageSize } = table.getState().pagination;
316
+ const pageCount = table.getPageCount();
317
+ return /* @__PURE__ */ jsxs(
318
+ Flex,
319
+ {
320
+ direction: "row",
321
+ align: "center",
322
+ justify: "between",
323
+ gap: "md",
324
+ wrap: true,
325
+ className: cn("ui-data-table-pagination", className),
326
+ children: [
327
+ /* @__PURE__ */ jsxs(Flex, { direction: "row", align: "center", gap: "sm", children: [
328
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: t("dataGrid.rowsPerPage") }),
329
+ /* @__PURE__ */ jsxs(
330
+ Select,
331
+ {
332
+ value: String(pageSize),
333
+ onValueChange: (v) => table.setPageSize(Number(v)),
334
+ children: [
335
+ /* @__PURE__ */ jsx(SelectTrigger, { size: "sm", "aria-label": t("dataGrid.rowsPerPage"), className: "tabular-nums", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
336
+ /* @__PURE__ */ jsx(SelectContent, { children: pageSizeOptions.map((n) => /* @__PURE__ */ jsx(SelectItem, { value: String(n), className: "tabular-nums", children: n }, n)) })
337
+ ]
338
+ }
339
+ )
340
+ ] }),
341
+ /* @__PURE__ */ jsxs(Flex, { direction: "row", align: "center", gap: "sm", children: [
342
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm tabular-nums", children: t("dataGrid.pageOf", { page: pageIndex + 1, total: Math.max(1, pageCount) }) }),
343
+ /* @__PURE__ */ jsx(
344
+ Button,
345
+ {
346
+ variant: "outline",
347
+ size: "icon",
348
+ disabled: !table.getCanPreviousPage(),
349
+ onClick: () => table.previousPage(),
350
+ "aria-label": t("common.previous") ?? "Previous",
351
+ children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4", "aria-hidden": "true" })
352
+ }
353
+ ),
354
+ /* @__PURE__ */ jsx(
355
+ Button,
356
+ {
357
+ variant: "outline",
358
+ size: "icon",
359
+ disabled: !table.getCanNextPage(),
360
+ onClick: () => table.nextPage(),
361
+ "aria-label": t("common.next") ?? "Next",
362
+ children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4", "aria-hidden": "true" })
363
+ }
364
+ )
365
+ ] })
366
+ ]
367
+ }
368
+ );
369
+ };
370
+ DataGrid.Pagination.displayName = "DataGrid.Pagination";
371
+
372
+ export { DataGrid };
@@ -1,7 +1,7 @@
1
- export { Alert, AlertActions, AlertBase, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-QVLUCB47.js';
2
- import '../../chunk-X2VY4MOW.js';
1
+ export { Alert, AlertActions, AlertBase, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-2JCSS6B4.js';
2
+ import '../../chunk-FK5QEFVY.js';
3
3
  import '../../chunk-INIIF7F7.js';
4
4
  import '../../chunk-M4PZNAMV.js';
5
- import '../../chunk-HTG5VHU7.js';
6
- import '../../chunk-6CSBMMZS.js';
5
+ import '../../chunk-TXRYSMOD.js';
6
+ import '../../chunk-3ELRYXJK.js';
7
7
  import '../../chunk-U7N2A7A3.js';
@@ -1,7 +1,7 @@
1
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger } from '../../chunk-BG5RNXTH.js';
1
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger } from '../../chunk-UJUWAQE5.js';
2
2
  import '../../chunk-VOHTRR5X.js';
3
3
  import '../../chunk-M4PZNAMV.js';
4
4
  import '../../chunk-7PWBC4BY.js';
5
- import '../../chunk-HTG5VHU7.js';
6
- import '../../chunk-6CSBMMZS.js';
5
+ import '../../chunk-TXRYSMOD.js';
6
+ import '../../chunk-3ELRYXJK.js';
7
7
  import '../../chunk-U7N2A7A3.js';
@@ -12,12 +12,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
12
12
  import * as React from 'react';
13
13
  export { A as AlertActionsProp, A as AlertActionsProps, a as AlertContentProp, a as AlertContentProps, b as AlertDescriptionProp, b as AlertDescriptionProps, c as AlertDialogProp, c as AlertDialogProps, d as AlertProp, d as AlertProps, e as AlertQueryErrorProp, e as AlertQueryErrorProps, f as AlertTitleProp, f as AlertTitleProps } from '../../feedback.prop-Nc9Aa8SV.js';
14
14
  import '@radix-ui/react-alert-dialog';
15
- import '../../shared.prop-BsNSXeqD.js';
16
- import '../../content.prop-DrV_zDy-.js';
17
- import '../../interaction.prop-DSFizzP6.js';
18
15
  import 'class-variance-authority/types';
19
16
  import 'class-variance-authority';
20
17
  import 'sonner';
18
+ import '../../shared.prop-BsNSXeqD.js';
19
+ import '../../content.prop-DrV_zDy-.js';
20
+ import '../../interaction.prop-DSFizzP6.js';
21
21
  import '@radix-ui/react-tooltip';
22
22
 
23
23
  declare function Drawer({ shouldScaleBackground, ...props }: React.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
@@ -2,16 +2,16 @@ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, Dr
2
2
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from '../../chunk-EZHHJQWQ.js';
3
3
  export { toast, useToast } from '../../chunk-B3WX53JQ.js';
4
4
  export { Skeleton, SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from '../../chunk-COD66MFF.js';
5
- export { Toaster } from '../../chunk-TO7URV7U.js';
6
5
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../chunk-32WO3YLB.js';
7
- export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-QVLUCB47.js';
8
- import '../../chunk-X2VY4MOW.js';
9
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from '../../chunk-BG5RNXTH.js';
6
+ export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from '../../chunk-2JCSS6B4.js';
7
+ import '../../chunk-FK5QEFVY.js';
8
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from '../../chunk-UJUWAQE5.js';
10
9
  import '../../chunk-VOHTRR5X.js';
10
+ export { Toaster } from '../../chunk-TO7URV7U.js';
11
11
  import '../../chunk-INIIF7F7.js';
12
12
  import '../../chunk-M4PZNAMV.js';
13
13
  import '../../chunk-IBK5D2Q6.js';
14
14
  import '../../chunk-7PWBC4BY.js';
15
- import '../../chunk-HTG5VHU7.js';
16
- import '../../chunk-6CSBMMZS.js';
15
+ import '../../chunk-TXRYSMOD.js';
16
+ import '../../chunk-3ELRYXJK.js';
17
17
  import '../../chunk-U7N2A7A3.js';
@@ -1,8 +1,8 @@
1
- export { F as Flex, P as PageContainer } from '../../flex-D_EXRFSW.js';
1
+ export { F as Flex, P as PageContainer } from '../../flex-DXtIALBh.js';
2
2
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from './resizable.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { A as AppShellProp, h as SidebarProp, S as SidebarItemData, l as TopbarProp, R as ResponsiveGridColumnsProp } from '../../layout.prop-JE2TcRyL.js';
5
- export { F as FlexAlignProp, a as FlexDirectionProp, b as FlexJustifyProp, c as FlexProp, c as FlexProps, P as PageContainerProp, P as PageContainerProps, g as SidebarProduct, i as SidebarSectionProp, T as TopbarProduct, k as TopbarProject } from '../../layout.prop-JE2TcRyL.js';
4
+ import { A as AppShellProp, g as SidebarProp, S as SidebarItemData, j as TopbarProp, R as ResponsiveGridColumnsProp } from '../../layout.prop-B1yQPUNZ.js';
5
+ export { F as FlexAlignProp, a as FlexDirectionProp, b as FlexJustifyProp, c as FlexProp, c as FlexProps, P as PageContainerProp, P as PageContainerProps, f as SidebarProduct, h as SidebarSectionProp, T as TopbarProduct, i as TopbarProject } from '../../layout.prop-B1yQPUNZ.js';
6
6
  import * as React from 'react';
7
7
  import { ElementType, ReactNode } from 'react';
8
8
  import { a as BreadcrumbProp } from '../../navigation.prop-BKlxd-j7.js';
@@ -1,11 +1,11 @@
1
- export { AppShell, Breadcrumb, PageContainer, ResponsiveGrid, Sidebar, SidebarHeader, SidebarItem, SidebarSection, SplitPane, Topbar } from '../../chunk-PUGEOUWZ.js';
1
+ export { AppShell, Breadcrumb, PageContainer, ResponsiveGrid, Sidebar, SidebarHeader, SidebarItem, SidebarSection, SplitPane, Topbar } from '../../chunk-I6HD36IU.js';
2
2
  export { AspectRatio, Separator } from '../../chunk-XK3M3VRR.js';
3
- import '../../chunk-32WO3YLB.js';
4
- import '../../chunk-LMKUKCTN.js';
5
3
  export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../chunk-W4REF4TD.js';
4
+ import '../../chunk-LMKUKCTN.js';
5
+ import '../../chunk-32WO3YLB.js';
6
6
  import '../../chunk-DV52WNXO.js';
7
7
  export { Flex } from '../../chunk-INIIF7F7.js';
8
8
  import '../../chunk-DY5C44UP.js';
9
- import '../../chunk-HTG5VHU7.js';
10
- import '../../chunk-6CSBMMZS.js';
9
+ import '../../chunk-TXRYSMOD.js';
10
+ import '../../chunk-3ELRYXJK.js';
11
11
  import '../../chunk-U7N2A7A3.js';