gridular 2.0.0 → 2.2.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.
- package/dist/index.d.mts +43 -6
- package/dist/index.d.ts +43 -6
- package/dist/index.js +378 -244
- package/dist/index.mjs +353 -220
- package/package.json +6 -5
package/dist/index.mjs
CHANGED
|
@@ -31,7 +31,7 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// components/data-grid/data-grid.tsx
|
|
34
|
-
import
|
|
34
|
+
import React15, { useState as useState6, useRef, useEffect as useEffect3, useMemo as useMemo3 } from "react";
|
|
35
35
|
|
|
36
36
|
// lib/utils.ts
|
|
37
37
|
import { clsx } from "clsx";
|
|
@@ -62,57 +62,64 @@ import React, { createContext, useContext, useMemo, useState } from "react";
|
|
|
62
62
|
import { createMakeStyles } from "tss-react";
|
|
63
63
|
var lightTheme = {
|
|
64
64
|
colors: {
|
|
65
|
-
primary: "#
|
|
66
|
-
//
|
|
67
|
-
secondary: "#
|
|
68
|
-
//
|
|
69
|
-
background: "#
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
primary: "#536976",
|
|
66
|
+
// Logo slate - sophisticated primary
|
|
67
|
+
secondary: "#BBD2C5",
|
|
68
|
+
// Logo sage - elegant accent
|
|
69
|
+
background: "#fafbfc",
|
|
70
|
+
// Slightly off-white
|
|
71
|
+
foreground: "#292E49",
|
|
72
|
+
// Logo navy - strong text
|
|
73
|
+
muted: "rgba(187, 210, 197, 0.08)",
|
|
74
|
+
// Subtle sage tint
|
|
75
|
+
mutedForeground: "#536976",
|
|
76
|
+
// Logo slate for muted text
|
|
77
|
+
border: "rgba(83, 105, 118, 0.2)",
|
|
78
|
+
// Transparent slate
|
|
79
|
+
popover: "#ffffff",
|
|
80
|
+
accent: "#BBD2C5"
|
|
81
|
+
// Logo sage
|
|
79
82
|
}
|
|
80
83
|
};
|
|
81
84
|
var darkTheme = {
|
|
82
85
|
colors: {
|
|
83
|
-
primary: "#
|
|
84
|
-
//
|
|
85
|
-
secondary: "#
|
|
86
|
-
//
|
|
87
|
-
background: "#
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
86
|
+
primary: "#BBD2C5",
|
|
87
|
+
// Logo sage - glowing primary in dark
|
|
88
|
+
secondary: "#536976",
|
|
89
|
+
// Logo slate
|
|
90
|
+
background: "#0a0b0d",
|
|
91
|
+
// Deep technical black
|
|
92
|
+
foreground: "#e8eaed",
|
|
93
|
+
// Technical pearl
|
|
94
|
+
muted: "rgba(41, 46, 73, 0.3)",
|
|
95
|
+
// Logo navy transparency
|
|
96
|
+
mutedForeground: "#a8abb2",
|
|
97
|
+
// Technical silver
|
|
98
|
+
border: "rgba(83, 105, 118, 0.25)",
|
|
99
|
+
// Transparent slate
|
|
100
|
+
popover: "rgba(26, 28, 32, 0.95)",
|
|
101
|
+
// Semi-transparent charcoal
|
|
102
|
+
accent: "#BBD2C5"
|
|
103
|
+
// Logo sage
|
|
97
104
|
}
|
|
98
105
|
};
|
|
99
106
|
var defaultTailwindTheme = {
|
|
100
|
-
container: "bg-background border border-border rounded-
|
|
101
|
-
header: "bg-muted/50 border-b border-border",
|
|
102
|
-
headerCell: "text-
|
|
103
|
-
row: "border-b border-border hover:bg-
|
|
104
|
-
cell: "px-4 py-
|
|
105
|
-
pagination: "bg-background border-t border-border
|
|
106
|
-
filterMenu: "bg-popover border border-border shadow-
|
|
107
|
-
filterMenuContent: "p-3",
|
|
108
|
-
filterMenuHeader: "font-
|
|
109
|
-
filterMenuInput: "",
|
|
110
|
-
filterMenuClearButton: "",
|
|
111
|
-
filterMenuApplyButton: "",
|
|
112
|
-
columnResizeHandle: "w-
|
|
113
|
-
columnResizeHandleActive: "bg-primary",
|
|
114
|
-
sortIcon: "text-muted-foreground",
|
|
115
|
-
sortIconActive: "text-
|
|
107
|
+
container: "bg-background border border-border/30 rounded-lg overflow-hidden shadow-sm",
|
|
108
|
+
header: "bg-muted/50 border-b border-border/40 backdrop-blur-sm",
|
|
109
|
+
headerCell: "text-foreground font-semibold px-4 py-3.5 text-sm font-sans tracking-tight border-r border-border/20 last:border-r-0 relative",
|
|
110
|
+
row: "border-b border-border/30 hover:bg-primary/5 transition-colors duration-200 group",
|
|
111
|
+
cell: "px-4 py-3 text-sm font-sans text-foreground/90",
|
|
112
|
+
pagination: "bg-background/50 border-t border-border/30 px-4 py-3 flex justify-between items-center font-sans text-sm",
|
|
113
|
+
filterMenu: "bg-popover border border-border/40 shadow-lg rounded-lg backdrop-blur-xl",
|
|
114
|
+
filterMenuContent: "p-4 space-y-3",
|
|
115
|
+
filterMenuHeader: "font-semibold mb-3 text-sm font-sans border-b border-border/30 pb-2",
|
|
116
|
+
filterMenuInput: "font-sans text-sm",
|
|
117
|
+
filterMenuClearButton: "font-sans text-sm font-medium",
|
|
118
|
+
filterMenuApplyButton: "font-sans text-sm font-semibold",
|
|
119
|
+
columnResizeHandle: "w-[3px] bg-border/40 hover:bg-primary cursor-col-resize h-full absolute right-0 top-0 transition-all duration-200 opacity-0 group-hover:opacity-100",
|
|
120
|
+
columnResizeHandleActive: "bg-primary opacity-100 w-[3px]",
|
|
121
|
+
sortIcon: "text-muted-foreground transition-all duration-200",
|
|
122
|
+
sortIconActive: "text-primary"
|
|
116
123
|
};
|
|
117
124
|
var createSpacingFunction = (baseSpacing = 4) => {
|
|
118
125
|
const spacingFn = (...args) => {
|
|
@@ -331,11 +338,11 @@ var FilterMenu = ({
|
|
|
331
338
|
if (!isOpen) {
|
|
332
339
|
return /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement("div", { onClick: () => onOpenChange(true) }, trigger), isActive && /* @__PURE__ */ React2.createElement("div", { className: "absolute -top-1 -right-1 w-3 h-3 bg-primary rounded-full text-[10px] flex items-center justify-center text-primary-foreground" }, "\u2022"));
|
|
333
340
|
}
|
|
334
|
-
const menuContent = /* @__PURE__ */ React2.createElement("div", { className: cn("p-
|
|
341
|
+
const menuContent = /* @__PURE__ */ React2.createElement("div", { className: cn("p-4", theme.classes.filterMenuContent) }, /* @__PURE__ */ React2.createElement(
|
|
335
342
|
"div",
|
|
336
343
|
{
|
|
337
344
|
className: cn(
|
|
338
|
-
"font-
|
|
345
|
+
"font-semibold mb-3 text-sm text-gray-700 dark:text-gray-200",
|
|
339
346
|
theme.classes.filterMenuHeader,
|
|
340
347
|
classes.header
|
|
341
348
|
)
|
|
@@ -344,22 +351,22 @@ var FilterMenu = ({
|
|
|
344
351
|
"span",
|
|
345
352
|
{
|
|
346
353
|
className: cn(
|
|
347
|
-
"ml-2 text-xs px-
|
|
354
|
+
"ml-2 text-xs px-2 py-0.5 rounded-full bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-200",
|
|
348
355
|
classes.activeIndicator
|
|
349
356
|
)
|
|
350
357
|
},
|
|
351
358
|
"Active"
|
|
352
359
|
))
|
|
353
|
-
), isActive && filterValue && /* @__PURE__ */ React2.createElement("div", { className: "mb-
|
|
360
|
+
), isActive && filterValue && /* @__PURE__ */ React2.createElement("div", { className: "mb-3" }, renderCurrentFilter ? renderCurrentFilter(filterValue) : /* @__PURE__ */ React2.createElement(
|
|
354
361
|
"div",
|
|
355
362
|
{
|
|
356
363
|
className: cn(
|
|
357
|
-
"text-xs bg-
|
|
364
|
+
"text-xs bg-gray-50 dark:bg-gray-800 p-2 rounded border border-gray-200 dark:border-gray-700",
|
|
358
365
|
classes.currentFilter
|
|
359
366
|
)
|
|
360
367
|
},
|
|
361
|
-
"Current
|
|
362
|
-
/* @__PURE__ */ React2.createElement("strong",
|
|
368
|
+
"Current: ",
|
|
369
|
+
/* @__PURE__ */ React2.createElement("strong", { className: "font-semibold" }, filterValue)
|
|
363
370
|
)), renderInput ? renderInput({
|
|
364
371
|
value: localFilterValue,
|
|
365
372
|
onChange: setLocalFilterValue,
|
|
@@ -373,7 +380,10 @@ var FilterMenu = ({
|
|
|
373
380
|
onChange: (e) => setLocalFilterValue(e.target.value),
|
|
374
381
|
onKeyDown: handleKeyDown,
|
|
375
382
|
className: cn(
|
|
376
|
-
"w-full
|
|
383
|
+
"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md",
|
|
384
|
+
"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent",
|
|
385
|
+
"bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",
|
|
386
|
+
"placeholder-gray-400 dark:placeholder-gray-500",
|
|
377
387
|
theme.classes.filterMenuInput,
|
|
378
388
|
classes.input
|
|
379
389
|
),
|
|
@@ -388,7 +398,7 @@ var FilterMenu = ({
|
|
|
388
398
|
"div",
|
|
389
399
|
{
|
|
390
400
|
className: cn(
|
|
391
|
-
"flex justify-
|
|
401
|
+
"flex justify-end mt-3 gap-2",
|
|
392
402
|
classes.buttonContainer
|
|
393
403
|
)
|
|
394
404
|
},
|
|
@@ -397,7 +407,10 @@ var FilterMenu = ({
|
|
|
397
407
|
{
|
|
398
408
|
onClick: handleClearFilter,
|
|
399
409
|
className: cn(
|
|
400
|
-
"px-
|
|
410
|
+
"px-4 py-2 text-sm font-medium rounded-md border border-gray-300 dark:border-gray-600",
|
|
411
|
+
"hover:bg-gray-50 dark:hover:bg-gray-800",
|
|
412
|
+
"text-gray-700 dark:text-gray-200",
|
|
413
|
+
"transition-colors",
|
|
401
414
|
theme.classes.filterMenuClearButton,
|
|
402
415
|
classes.clearButton
|
|
403
416
|
)
|
|
@@ -409,7 +422,9 @@ var FilterMenu = ({
|
|
|
409
422
|
{
|
|
410
423
|
onClick: handleApplyFilter,
|
|
411
424
|
className: cn(
|
|
412
|
-
"px-
|
|
425
|
+
"px-4 py-2 text-sm font-medium rounded-md",
|
|
426
|
+
"bg-blue-600 hover:bg-blue-700 text-white",
|
|
427
|
+
"transition-colors",
|
|
413
428
|
theme.classes.filterMenuApplyButton,
|
|
414
429
|
classes.applyButton
|
|
415
430
|
)
|
|
@@ -423,7 +438,11 @@ var FilterMenu = ({
|
|
|
423
438
|
{
|
|
424
439
|
ref: menuRef,
|
|
425
440
|
className: cn(
|
|
426
|
-
"absolute top-full left-0 z-50 mt-
|
|
441
|
+
"absolute top-full left-0 z-50 mt-2 min-w-[280px]",
|
|
442
|
+
"bg-white dark:bg-gray-900",
|
|
443
|
+
"border border-gray-200 dark:border-gray-700",
|
|
444
|
+
"rounded-lg shadow-xl",
|
|
445
|
+
"backdrop-blur-sm",
|
|
427
446
|
theme.classes.filterMenu,
|
|
428
447
|
classes.container,
|
|
429
448
|
column.index === totalColumns - 1 && "right-0 left-auto"
|
|
@@ -444,7 +463,11 @@ var FilterMenu = ({
|
|
|
444
463
|
{
|
|
445
464
|
ref: menuRef,
|
|
446
465
|
className: cn(
|
|
447
|
-
"absolute top-full left-0 z-50 mt-
|
|
466
|
+
"absolute top-full left-0 z-50 mt-2 min-w-[280px]",
|
|
467
|
+
"bg-white dark:bg-gray-900",
|
|
468
|
+
"border border-gray-200 dark:border-gray-700",
|
|
469
|
+
"rounded-lg shadow-xl",
|
|
470
|
+
"backdrop-blur-sm",
|
|
448
471
|
theme.classes.filterMenu,
|
|
449
472
|
classes.container,
|
|
450
473
|
column.index === totalColumns - 1 && "right-0 left-auto"
|
|
@@ -538,17 +561,17 @@ function TableHeader({
|
|
|
538
561
|
if (!sortDirection) return null;
|
|
539
562
|
if (sortIconVariant === "none") return null;
|
|
540
563
|
if (sortIconVariant === "chevrons") {
|
|
541
|
-
return sortDirection === "asc" ? /* @__PURE__ */ React3.createElement(ChevronUp, { className: "ml-
|
|
564
|
+
return sortDirection === "asc" ? /* @__PURE__ */ React3.createElement(ChevronUp, { className: "ml-1 h-3 w-3 text-primary" }) : /* @__PURE__ */ React3.createElement(ChevronDown, { className: "ml-1 h-3 w-3 text-primary" });
|
|
542
565
|
}
|
|
543
|
-
return sortDirection === "asc" ? /* @__PURE__ */ React3.createElement(ArrowUp, { className: "ml-
|
|
566
|
+
return sortDirection === "asc" ? /* @__PURE__ */ React3.createElement(ArrowUp, { className: "ml-1 h-3 w-3 text-primary" }) : /* @__PURE__ */ React3.createElement(ArrowDown, { className: "ml-1 h-3 w-3 text-primary" });
|
|
544
567
|
};
|
|
545
568
|
const defaultFilterIcon = (column, isActive) => {
|
|
546
569
|
return /* @__PURE__ */ React3.createElement(
|
|
547
570
|
Filter,
|
|
548
571
|
{
|
|
549
572
|
className: cn(
|
|
550
|
-
"h-
|
|
551
|
-
isActive ?
|
|
573
|
+
"h-3.5 w-3.5 transition-colors",
|
|
574
|
+
isActive ? "text-blue-500 fill-blue-100" : "text-gray-400 hover:text-gray-600"
|
|
552
575
|
)
|
|
553
576
|
}
|
|
554
577
|
);
|
|
@@ -629,7 +652,7 @@ function TableHeader({
|
|
|
629
652
|
filterMenuOpen === column.id ? null : column.id
|
|
630
653
|
);
|
|
631
654
|
},
|
|
632
|
-
className: "focus:outline-none"
|
|
655
|
+
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-1"
|
|
633
656
|
},
|
|
634
657
|
renderFilterIcon ? renderFilterIcon(column, hasActiveFilter) : defaultFilterIcon(column, hasActiveFilter)
|
|
635
658
|
)
|
|
@@ -648,7 +671,7 @@ function TableHeader({
|
|
|
648
671
|
}
|
|
649
672
|
|
|
650
673
|
// components/data-grid/table-body.tsx
|
|
651
|
-
import
|
|
674
|
+
import React9 from "react";
|
|
652
675
|
|
|
653
676
|
// components/data-grid/group-row.tsx
|
|
654
677
|
import React4 from "react";
|
|
@@ -973,10 +996,27 @@ var TableCell = ({
|
|
|
973
996
|
onSelect,
|
|
974
997
|
contextMenuContent,
|
|
975
998
|
selectedCellClassName = "ring-2 ring-primary ring-inset",
|
|
976
|
-
preventRowSelection = true
|
|
999
|
+
preventRowSelection = true,
|
|
1000
|
+
enableExpandableRows = false,
|
|
1001
|
+
isExpanded = false,
|
|
1002
|
+
onToggleExpand,
|
|
1003
|
+
expandIcon,
|
|
1004
|
+
collapseIcon
|
|
977
1005
|
}) => {
|
|
978
1006
|
const themeClasses = useTailwindTheme();
|
|
979
|
-
const
|
|
1007
|
+
const cellContent = column.renderCell ? column.renderCell(row) : column.cell ? column.cell(row) : row[column.id];
|
|
1008
|
+
const content = /* @__PURE__ */ React6.createElement("div", { className: "relative z-0 flex items-center gap-2" }, enableExpandableRows && /* @__PURE__ */ React6.createElement(
|
|
1009
|
+
"button",
|
|
1010
|
+
{
|
|
1011
|
+
onClick: (e) => {
|
|
1012
|
+
e.stopPropagation();
|
|
1013
|
+
onToggleExpand == null ? void 0 : onToggleExpand();
|
|
1014
|
+
},
|
|
1015
|
+
className: "p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors",
|
|
1016
|
+
"aria-label": isExpanded ? "Collapse row" : "Expand row"
|
|
1017
|
+
},
|
|
1018
|
+
isExpanded ? expandIcon : collapseIcon
|
|
1019
|
+
), /* @__PURE__ */ React6.createElement("span", { className: "flex-1" }, cellContent));
|
|
980
1020
|
const cell = contextMenuContent ? /* @__PURE__ */ React6.createElement(
|
|
981
1021
|
ContextMenu,
|
|
982
1022
|
{
|
|
@@ -1051,14 +1091,19 @@ function TableRow({
|
|
|
1051
1091
|
onCellSelect,
|
|
1052
1092
|
selectedCellClassName,
|
|
1053
1093
|
preventRowSelection,
|
|
1054
|
-
contextMenuContent
|
|
1094
|
+
contextMenuContent,
|
|
1095
|
+
enableExpandableRows = false,
|
|
1096
|
+
isExpanded = false,
|
|
1097
|
+
onToggleExpand,
|
|
1098
|
+
expandIcon,
|
|
1099
|
+
collapseIcon
|
|
1055
1100
|
}) {
|
|
1056
1101
|
return /* @__PURE__ */ React7.createElement(
|
|
1057
1102
|
"tr",
|
|
1058
1103
|
{
|
|
1059
1104
|
className: cn(
|
|
1060
|
-
"hover:bg-
|
|
1061
|
-
isSelected && selectedRowClassName,
|
|
1105
|
+
"border-b border-border/30 hover:bg-primary/5 transition-colors duration-200 group",
|
|
1106
|
+
isSelected && (selectedRowClassName || "bg-primary/10"),
|
|
1062
1107
|
rowClassName
|
|
1063
1108
|
),
|
|
1064
1109
|
onClick: () => {
|
|
@@ -1073,7 +1118,7 @@ function TableRow({
|
|
|
1073
1118
|
cursor: onRowSelect || onRowClick ? "pointer" : "default"
|
|
1074
1119
|
}
|
|
1075
1120
|
},
|
|
1076
|
-
columns.map((column) => {
|
|
1121
|
+
columns.map((column, index) => {
|
|
1077
1122
|
const isCellSelected = selectedCell && selectedCell.rowId === rowId && selectedCell.columnId === column.id;
|
|
1078
1123
|
return /* @__PURE__ */ React7.createElement(
|
|
1079
1124
|
TableCell,
|
|
@@ -1096,13 +1141,35 @@ function TableRow({
|
|
|
1096
1141
|
}
|
|
1097
1142
|
},
|
|
1098
1143
|
preventRowSelection,
|
|
1099
|
-
contextMenuContent
|
|
1144
|
+
contextMenuContent,
|
|
1145
|
+
enableExpandableRows: enableExpandableRows && index === 0,
|
|
1146
|
+
isExpanded,
|
|
1147
|
+
onToggleExpand,
|
|
1148
|
+
expandIcon,
|
|
1149
|
+
collapseIcon
|
|
1100
1150
|
}
|
|
1101
1151
|
);
|
|
1102
1152
|
})
|
|
1103
1153
|
);
|
|
1104
1154
|
}
|
|
1105
1155
|
|
|
1156
|
+
// components/data-grid/expandable-row.tsx
|
|
1157
|
+
import React8 from "react";
|
|
1158
|
+
function ExpandableRow({
|
|
1159
|
+
row,
|
|
1160
|
+
rowId,
|
|
1161
|
+
columns,
|
|
1162
|
+
isExpanded,
|
|
1163
|
+
onToggleExpand,
|
|
1164
|
+
renderExpandedContent,
|
|
1165
|
+
expandIcon,
|
|
1166
|
+
collapseIcon,
|
|
1167
|
+
expandButtonClassName
|
|
1168
|
+
}) {
|
|
1169
|
+
if (!isExpanded) return null;
|
|
1170
|
+
return /* @__PURE__ */ React8.createElement("tr", { key: `${rowId}-expanded`, className: "border-b bg-gray-50 dark:bg-gray-900" }, /* @__PURE__ */ React8.createElement("td", { colSpan: columns.length, className: "p-0" }, /* @__PURE__ */ React8.createElement("div", { className: "px-4 py-3 bg-white dark:bg-gray-950 border-t" }, renderExpandedContent(row))));
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1106
1173
|
// components/data-grid/table-body.tsx
|
|
1107
1174
|
var TableBody = ({
|
|
1108
1175
|
paginatedData,
|
|
@@ -1120,18 +1187,25 @@ var TableBody = ({
|
|
|
1120
1187
|
groupingState,
|
|
1121
1188
|
toggleGroupExpanded,
|
|
1122
1189
|
renderGroupRow,
|
|
1123
|
-
groupExpandIcon = /* @__PURE__ */
|
|
1124
|
-
groupCollapseIcon = /* @__PURE__ */
|
|
1190
|
+
groupExpandIcon = /* @__PURE__ */ React9.createElement(ChevronDown3, { className: "h-4 w-4" }),
|
|
1191
|
+
groupCollapseIcon = /* @__PURE__ */ React9.createElement(ChevronRight2, { className: "h-4 w-4" }),
|
|
1125
1192
|
groupRowProps = {},
|
|
1126
1193
|
selectedCell = null,
|
|
1127
1194
|
onCellSelect,
|
|
1128
1195
|
selectedCellClassName = "ring-2 ring-primary ring-inset",
|
|
1129
1196
|
preventRowSelection,
|
|
1130
|
-
contextMenuContent
|
|
1197
|
+
contextMenuContent,
|
|
1198
|
+
enableExpandableRows = false,
|
|
1199
|
+
expandedRows = {},
|
|
1200
|
+
onToggleRowExpand,
|
|
1201
|
+
renderExpandedRow,
|
|
1202
|
+
expandIcon = /* @__PURE__ */ React9.createElement(ChevronDown3, { className: "h-4 w-4" }),
|
|
1203
|
+
collapseIcon = /* @__PURE__ */ React9.createElement(ChevronRight2, { className: "h-4 w-4" }),
|
|
1204
|
+
getRowId = (row, index) => row.id || `row-${index}`
|
|
1131
1205
|
}) => {
|
|
1132
|
-
return /* @__PURE__ */
|
|
1206
|
+
return /* @__PURE__ */ React9.createElement("tbody", { className: theme.classes.tbody }, paginatedData.map((row, rowIndex) => {
|
|
1133
1207
|
if (enableGrouping && row.isGroupRow) {
|
|
1134
|
-
return /* @__PURE__ */
|
|
1208
|
+
return /* @__PURE__ */ React9.createElement(
|
|
1135
1209
|
GroupRow,
|
|
1136
1210
|
__spreadValues({
|
|
1137
1211
|
key: row.groupKey,
|
|
@@ -1149,12 +1223,12 @@ var TableBody = ({
|
|
|
1149
1223
|
}, groupRowProps)
|
|
1150
1224
|
);
|
|
1151
1225
|
}
|
|
1152
|
-
const rowId = row
|
|
1226
|
+
const rowId = getRowId(row, rowIndex);
|
|
1153
1227
|
const isSelected = selectedRows[rowId];
|
|
1154
|
-
|
|
1228
|
+
const isExpanded = expandedRows[rowId] || false;
|
|
1229
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, { key: rowId }, /* @__PURE__ */ React9.createElement(
|
|
1155
1230
|
TableRow,
|
|
1156
1231
|
{
|
|
1157
|
-
key: rowId,
|
|
1158
1232
|
row,
|
|
1159
1233
|
rowId,
|
|
1160
1234
|
columns,
|
|
@@ -1169,14 +1243,31 @@ var TableBody = ({
|
|
|
1169
1243
|
onCellSelect,
|
|
1170
1244
|
selectedCellClassName,
|
|
1171
1245
|
preventRowSelection,
|
|
1172
|
-
contextMenuContent
|
|
1246
|
+
contextMenuContent,
|
|
1247
|
+
enableExpandableRows,
|
|
1248
|
+
isExpanded,
|
|
1249
|
+
onToggleExpand: enableExpandableRows && onToggleRowExpand ? () => onToggleRowExpand(rowId) : void 0,
|
|
1250
|
+
expandIcon,
|
|
1251
|
+
collapseIcon
|
|
1173
1252
|
}
|
|
1174
|
-
)
|
|
1253
|
+
), enableExpandableRows && isExpanded && renderExpandedRow && /* @__PURE__ */ React9.createElement(
|
|
1254
|
+
ExpandableRow,
|
|
1255
|
+
{
|
|
1256
|
+
row,
|
|
1257
|
+
rowId,
|
|
1258
|
+
columns,
|
|
1259
|
+
isExpanded,
|
|
1260
|
+
onToggleExpand: () => onToggleRowExpand == null ? void 0 : onToggleRowExpand(rowId),
|
|
1261
|
+
renderExpandedContent: renderExpandedRow,
|
|
1262
|
+
expandIcon,
|
|
1263
|
+
collapseIcon
|
|
1264
|
+
}
|
|
1265
|
+
));
|
|
1175
1266
|
}));
|
|
1176
1267
|
};
|
|
1177
1268
|
|
|
1178
1269
|
// components/data-grid/pagination.tsx
|
|
1179
|
-
import
|
|
1270
|
+
import React10 from "react";
|
|
1180
1271
|
var Pagination = ({
|
|
1181
1272
|
pageIndex,
|
|
1182
1273
|
pageCount,
|
|
@@ -1214,92 +1305,113 @@ var Pagination = ({
|
|
|
1214
1305
|
const goToPrevPage = () => setPageIndex(Math.max(0, pageIndex - 1));
|
|
1215
1306
|
const goToNextPage = () => setPageIndex(Math.min(pageCount - 1, pageIndex + 1));
|
|
1216
1307
|
const goToLastPage = () => setPageIndex(pageCount - 1);
|
|
1217
|
-
return /* @__PURE__ */
|
|
1308
|
+
return /* @__PURE__ */ React10.createElement("div", { className: cn("px-4 py-3 flex items-center justify-between border-t border-gray-200 dark:border-gray-700", className) }, showPageSizeSelector && /* @__PURE__ */ React10.createElement("div", { className: cn("flex items-center gap-3", pageSizeClassName) }, renderPageSizeSelector ? renderPageSizeSelector({
|
|
1218
1309
|
pageSize,
|
|
1219
1310
|
options: pageSizeOptions,
|
|
1220
1311
|
onChange: handlePageSizeChange
|
|
1221
|
-
}) : /* @__PURE__ */
|
|
1312
|
+
}) : /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("span", { className: "text-sm text-gray-600 dark:text-gray-400 font-medium" }, "Rows per page:"), /* @__PURE__ */ React10.createElement(
|
|
1222
1313
|
"select",
|
|
1223
1314
|
{
|
|
1224
1315
|
value: pageSize,
|
|
1225
1316
|
onChange: (e) => handlePageSizeChange(Number(e.target.value)),
|
|
1226
|
-
className: "border
|
|
1317
|
+
className: "border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-3 py-1.5 text-sm rounded-md hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors cursor-pointer"
|
|
1227
1318
|
},
|
|
1228
|
-
pageSizeOptions.map((option) => /* @__PURE__ */
|
|
1229
|
-
))), /* @__PURE__ */
|
|
1319
|
+
pageSizeOptions.map((option) => /* @__PURE__ */ React10.createElement("option", { key: option, value: option }, option))
|
|
1320
|
+
))), /* @__PURE__ */ React10.createElement(
|
|
1230
1321
|
"div",
|
|
1231
1322
|
{
|
|
1232
|
-
className: cn("flex items-center
|
|
1323
|
+
className: cn("flex items-center gap-4", buttonsClassName)
|
|
1233
1324
|
},
|
|
1234
|
-
showPageInfo && /* @__PURE__ */
|
|
1235
|
-
showFirstLastButtons && (renderFirstPageButton ? renderFirstPageButton({
|
|
1325
|
+
showPageInfo && /* @__PURE__ */ React10.createElement("div", { className: cn("text-sm text-gray-600 dark:text-gray-400", pageInfoClassName) }, renderPageInfo ? renderPageInfo({ start, end, total: totalRows }) : /* @__PURE__ */ React10.createElement("span", null, start, "\u2013", end, " of ", totalRows)),
|
|
1326
|
+
/* @__PURE__ */ React10.createElement("div", { className: "flex items-center gap-1" }, showFirstLastButtons && (renderFirstPageButton ? renderFirstPageButton({
|
|
1236
1327
|
onClick: goToFirstPage,
|
|
1237
1328
|
disabled: isFirstPage
|
|
1238
|
-
}) : /* @__PURE__ */
|
|
1329
|
+
}) : /* @__PURE__ */ React10.createElement(
|
|
1239
1330
|
"button",
|
|
1240
1331
|
{
|
|
1241
1332
|
onClick: goToFirstPage,
|
|
1242
1333
|
disabled: isFirstPage,
|
|
1243
1334
|
className: cn(
|
|
1244
|
-
"
|
|
1335
|
+
"h-8 w-8 rounded-md border border-gray-300 dark:border-gray-600",
|
|
1336
|
+
"bg-white dark:bg-gray-800",
|
|
1337
|
+
"hover:bg-gray-50 dark:hover:bg-gray-700",
|
|
1338
|
+
"text-gray-700 dark:text-gray-300",
|
|
1339
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
1340
|
+
"transition-colors",
|
|
1341
|
+
"flex items-center justify-center text-sm",
|
|
1245
1342
|
buttonClassName
|
|
1246
1343
|
)
|
|
1247
1344
|
},
|
|
1248
1345
|
"<<"
|
|
1249
|
-
)),
|
|
1250
|
-
renderPrevPageButton ? renderPrevPageButton({
|
|
1346
|
+
)), renderPrevPageButton ? renderPrevPageButton({
|
|
1251
1347
|
onClick: goToPrevPage,
|
|
1252
1348
|
disabled: isFirstPage
|
|
1253
|
-
}) : /* @__PURE__ */
|
|
1349
|
+
}) : /* @__PURE__ */ React10.createElement(
|
|
1254
1350
|
"button",
|
|
1255
1351
|
{
|
|
1256
1352
|
onClick: goToPrevPage,
|
|
1257
1353
|
disabled: isFirstPage,
|
|
1258
1354
|
className: cn(
|
|
1259
|
-
"
|
|
1355
|
+
"h-8 w-8 rounded-md border border-gray-300 dark:border-gray-600",
|
|
1356
|
+
"bg-white dark:bg-gray-800",
|
|
1357
|
+
"hover:bg-gray-50 dark:hover:bg-gray-700",
|
|
1358
|
+
"text-gray-700 dark:text-gray-300",
|
|
1359
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
1360
|
+
"transition-colors",
|
|
1361
|
+
"flex items-center justify-center text-sm",
|
|
1260
1362
|
buttonClassName
|
|
1261
1363
|
)
|
|
1262
1364
|
},
|
|
1263
1365
|
"<"
|
|
1264
|
-
),
|
|
1265
|
-
renderNextPageButton ? renderNextPageButton({
|
|
1366
|
+
), renderNextPageButton ? renderNextPageButton({
|
|
1266
1367
|
onClick: goToNextPage,
|
|
1267
1368
|
disabled: isLastPage
|
|
1268
|
-
}) : /* @__PURE__ */
|
|
1369
|
+
}) : /* @__PURE__ */ React10.createElement(
|
|
1269
1370
|
"button",
|
|
1270
1371
|
{
|
|
1271
1372
|
onClick: goToNextPage,
|
|
1272
1373
|
disabled: isLastPage,
|
|
1273
1374
|
className: cn(
|
|
1274
|
-
"
|
|
1375
|
+
"h-8 w-8 rounded-md border border-gray-300 dark:border-gray-600",
|
|
1376
|
+
"bg-white dark:bg-gray-800",
|
|
1377
|
+
"hover:bg-gray-50 dark:hover:bg-gray-700",
|
|
1378
|
+
"text-gray-700 dark:text-gray-300",
|
|
1379
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
1380
|
+
"transition-colors",
|
|
1381
|
+
"flex items-center justify-center text-sm",
|
|
1275
1382
|
buttonClassName
|
|
1276
1383
|
)
|
|
1277
1384
|
},
|
|
1278
1385
|
">"
|
|
1279
|
-
),
|
|
1280
|
-
showFirstLastButtons && (renderLastPageButton ? renderLastPageButton({
|
|
1386
|
+
), showFirstLastButtons && (renderLastPageButton ? renderLastPageButton({
|
|
1281
1387
|
onClick: goToLastPage,
|
|
1282
1388
|
disabled: isLastPage
|
|
1283
|
-
}) : /* @__PURE__ */
|
|
1389
|
+
}) : /* @__PURE__ */ React10.createElement(
|
|
1284
1390
|
"button",
|
|
1285
1391
|
{
|
|
1286
1392
|
onClick: goToLastPage,
|
|
1287
1393
|
disabled: isLastPage,
|
|
1288
1394
|
className: cn(
|
|
1289
|
-
"
|
|
1395
|
+
"h-8 w-8 rounded-md border border-gray-300 dark:border-gray-600",
|
|
1396
|
+
"bg-white dark:bg-gray-800",
|
|
1397
|
+
"hover:bg-gray-50 dark:hover:bg-gray-700",
|
|
1398
|
+
"text-gray-700 dark:text-gray-300",
|
|
1399
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
1400
|
+
"transition-colors",
|
|
1401
|
+
"flex items-center justify-center text-sm",
|
|
1290
1402
|
buttonClassName
|
|
1291
1403
|
)
|
|
1292
1404
|
},
|
|
1293
1405
|
">>"
|
|
1294
|
-
))
|
|
1406
|
+
)))
|
|
1295
1407
|
));
|
|
1296
1408
|
};
|
|
1297
1409
|
|
|
1298
1410
|
// components/data-grid/column-manager.tsx
|
|
1299
|
-
import
|
|
1411
|
+
import React13 from "react";
|
|
1300
1412
|
|
|
1301
1413
|
// components/ui/dropdown-menu.tsx
|
|
1302
|
-
import * as
|
|
1414
|
+
import * as React11 from "react";
|
|
1303
1415
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1304
1416
|
import { Check, ChevronRight as ChevronRight3, Circle } from "lucide-react";
|
|
1305
1417
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
@@ -1308,9 +1420,9 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
1308
1420
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
1309
1421
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
1310
1422
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
1311
|
-
var DropdownMenuSubTrigger =
|
|
1423
|
+
var DropdownMenuSubTrigger = React11.forwardRef((_a, ref) => {
|
|
1312
1424
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
1313
|
-
return /* @__PURE__ */
|
|
1425
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1314
1426
|
DropdownMenuPrimitive.SubTrigger,
|
|
1315
1427
|
__spreadValues({
|
|
1316
1428
|
ref,
|
|
@@ -1321,13 +1433,13 @@ var DropdownMenuSubTrigger = React10.forwardRef((_a, ref) => {
|
|
|
1321
1433
|
)
|
|
1322
1434
|
}, props),
|
|
1323
1435
|
children,
|
|
1324
|
-
/* @__PURE__ */
|
|
1436
|
+
/* @__PURE__ */ React11.createElement(ChevronRight3, { className: "ml-auto" })
|
|
1325
1437
|
);
|
|
1326
1438
|
});
|
|
1327
1439
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
1328
|
-
var DropdownMenuSubContent =
|
|
1440
|
+
var DropdownMenuSubContent = React11.forwardRef((_a, ref) => {
|
|
1329
1441
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1330
|
-
return /* @__PURE__ */
|
|
1442
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1331
1443
|
DropdownMenuPrimitive.SubContent,
|
|
1332
1444
|
__spreadValues({
|
|
1333
1445
|
ref,
|
|
@@ -1339,9 +1451,9 @@ var DropdownMenuSubContent = React10.forwardRef((_a, ref) => {
|
|
|
1339
1451
|
);
|
|
1340
1452
|
});
|
|
1341
1453
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
1342
|
-
var DropdownMenuContent =
|
|
1454
|
+
var DropdownMenuContent = React11.forwardRef((_a, ref) => {
|
|
1343
1455
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
|
1344
|
-
return /* @__PURE__ */
|
|
1456
|
+
return /* @__PURE__ */ React11.createElement(DropdownMenuPrimitive.Portal, null, /* @__PURE__ */ React11.createElement(
|
|
1345
1457
|
DropdownMenuPrimitive.Content,
|
|
1346
1458
|
__spreadValues({
|
|
1347
1459
|
ref,
|
|
@@ -1355,9 +1467,9 @@ var DropdownMenuContent = React10.forwardRef((_a, ref) => {
|
|
|
1355
1467
|
));
|
|
1356
1468
|
});
|
|
1357
1469
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1358
|
-
var DropdownMenuItem =
|
|
1470
|
+
var DropdownMenuItem = React11.forwardRef((_a, ref) => {
|
|
1359
1471
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
1360
|
-
return /* @__PURE__ */
|
|
1472
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1361
1473
|
DropdownMenuPrimitive.Item,
|
|
1362
1474
|
__spreadValues({
|
|
1363
1475
|
ref,
|
|
@@ -1370,9 +1482,9 @@ var DropdownMenuItem = React10.forwardRef((_a, ref) => {
|
|
|
1370
1482
|
);
|
|
1371
1483
|
});
|
|
1372
1484
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
1373
|
-
var DropdownMenuCheckboxItem =
|
|
1485
|
+
var DropdownMenuCheckboxItem = React11.forwardRef((_a, ref) => {
|
|
1374
1486
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
1375
|
-
return /* @__PURE__ */
|
|
1487
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1376
1488
|
DropdownMenuPrimitive.CheckboxItem,
|
|
1377
1489
|
__spreadValues({
|
|
1378
1490
|
ref,
|
|
@@ -1382,14 +1494,14 @@ var DropdownMenuCheckboxItem = React10.forwardRef((_a, ref) => {
|
|
|
1382
1494
|
),
|
|
1383
1495
|
checked
|
|
1384
1496
|
}, props),
|
|
1385
|
-
/* @__PURE__ */
|
|
1497
|
+
/* @__PURE__ */ React11.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React11.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React11.createElement(Check, { className: "h-4 w-4" }))),
|
|
1386
1498
|
children
|
|
1387
1499
|
);
|
|
1388
1500
|
});
|
|
1389
1501
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
1390
|
-
var DropdownMenuRadioItem =
|
|
1502
|
+
var DropdownMenuRadioItem = React11.forwardRef((_a, ref) => {
|
|
1391
1503
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
1392
|
-
return /* @__PURE__ */
|
|
1504
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1393
1505
|
DropdownMenuPrimitive.RadioItem,
|
|
1394
1506
|
__spreadValues({
|
|
1395
1507
|
ref,
|
|
@@ -1398,14 +1510,14 @@ var DropdownMenuRadioItem = React10.forwardRef((_a, ref) => {
|
|
|
1398
1510
|
className
|
|
1399
1511
|
)
|
|
1400
1512
|
}, props),
|
|
1401
|
-
/* @__PURE__ */
|
|
1513
|
+
/* @__PURE__ */ React11.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React11.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React11.createElement(Circle, { className: "h-2 w-2 fill-current" }))),
|
|
1402
1514
|
children
|
|
1403
1515
|
);
|
|
1404
1516
|
});
|
|
1405
1517
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
1406
|
-
var DropdownMenuLabel =
|
|
1518
|
+
var DropdownMenuLabel = React11.forwardRef((_a, ref) => {
|
|
1407
1519
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
1408
|
-
return /* @__PURE__ */
|
|
1520
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1409
1521
|
DropdownMenuPrimitive.Label,
|
|
1410
1522
|
__spreadValues({
|
|
1411
1523
|
ref,
|
|
@@ -1418,9 +1530,9 @@ var DropdownMenuLabel = React10.forwardRef((_a, ref) => {
|
|
|
1418
1530
|
);
|
|
1419
1531
|
});
|
|
1420
1532
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
1421
|
-
var DropdownMenuSeparator =
|
|
1533
|
+
var DropdownMenuSeparator = React11.forwardRef((_a, ref) => {
|
|
1422
1534
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1423
|
-
return /* @__PURE__ */
|
|
1535
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1424
1536
|
DropdownMenuPrimitive.Separator,
|
|
1425
1537
|
__spreadValues({
|
|
1426
1538
|
ref,
|
|
@@ -1435,7 +1547,7 @@ var DropdownMenuShortcut = (_a) => {
|
|
|
1435
1547
|
} = _b, props = __objRest(_b, [
|
|
1436
1548
|
"className"
|
|
1437
1549
|
]);
|
|
1438
|
-
return /* @__PURE__ */
|
|
1550
|
+
return /* @__PURE__ */ React11.createElement(
|
|
1439
1551
|
"span",
|
|
1440
1552
|
__spreadValues({
|
|
1441
1553
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className)
|
|
@@ -1445,26 +1557,26 @@ var DropdownMenuShortcut = (_a) => {
|
|
|
1445
1557
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
1446
1558
|
|
|
1447
1559
|
// components/ui/button.tsx
|
|
1448
|
-
import * as
|
|
1560
|
+
import * as React12 from "react";
|
|
1449
1561
|
import { Slot } from "@radix-ui/react-slot";
|
|
1450
1562
|
import { cva } from "class-variance-authority";
|
|
1451
1563
|
var buttonVariants = cva(
|
|
1452
|
-
"inline-flex items-center justify-center gap-
|
|
1564
|
+
"inline-flex items-center justify-center gap-1.5 whitespace-nowrap text-sm font-mono font-bold uppercase tracking-[0.08em] transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-30 [&_svg]:pointer-events-none [&_svg]:size-3 [&_svg]:shrink-0 relative overflow-hidden",
|
|
1453
1565
|
{
|
|
1454
1566
|
variants: {
|
|
1455
1567
|
variant: {
|
|
1456
|
-
default: "bg-primary text-primary-foreground
|
|
1457
|
-
destructive: "bg-destructive text-destructive-foreground
|
|
1458
|
-
outline: "border border-
|
|
1459
|
-
secondary: "bg-secondary text-secondary-foreground
|
|
1460
|
-
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
1461
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
1568
|
+
default: "bg-primary text-primary-foreground border-2 border-foreground hover:bg-foreground hover:text-background active:translate-y-[1px] shadow-[3px_3px_0_0_rgba(0,0,0,1)] dark:shadow-[3px_3px_0_0_rgba(255,255,255,0.2)] hover:shadow-[1px_1px_0_0_rgba(0,0,0,1)] dark:hover:shadow-[1px_1px_0_0_rgba(255,255,255,0.2)]",
|
|
1569
|
+
destructive: "bg-destructive text-destructive-foreground border-2 border-foreground hover:bg-destructive/90 active:translate-y-[1px] shadow-[3px_3px_0_0_rgba(0,0,0,1)] dark:shadow-[3px_3px_0_0_rgba(255,255,255,0.2)] hover:shadow-[1px_1px_0_0_rgba(0,0,0,1)] dark:hover:shadow-[1px_1px_0_0_rgba(255,255,255,0.2)]",
|
|
1570
|
+
outline: "border-2 border-foreground bg-background hover:bg-foreground hover:text-background active:translate-y-[1px] shadow-[3px_3px_0_0_rgba(0,0,0,1)] dark:shadow-[3px_3px_0_0_rgba(255,255,255,0.2)] hover:shadow-[1px_1px_0_0_rgba(0,0,0,1)] dark:hover:shadow-[1px_1px_0_0_rgba(255,255,255,0.2)]",
|
|
1571
|
+
secondary: "bg-secondary text-secondary-foreground border-2 border-border hover:bg-secondary/80 active:translate-y-[1px] shadow-[2px_2px_0_0_rgba(0,0,0,0.3)] dark:shadow-[2px_2px_0_0_rgba(255,255,255,0.1)] hover:shadow-[1px_1px_0_0_rgba(0,0,0,0.3)] dark:hover:shadow-[1px_1px_0_0_rgba(255,255,255,0.1)]",
|
|
1572
|
+
ghost: "hover:bg-accent hover:text-accent-foreground border-2 border-transparent hover:border-border",
|
|
1573
|
+
link: "text-primary underline-offset-4 hover:underline border-0 shadow-none"
|
|
1462
1574
|
},
|
|
1463
1575
|
size: {
|
|
1464
|
-
default: "h-
|
|
1465
|
-
sm: "h-8
|
|
1466
|
-
lg: "h-
|
|
1467
|
-
icon: "h-
|
|
1576
|
+
default: "h-10 px-5 py-2.5 text-xs",
|
|
1577
|
+
sm: "h-8 px-4 text-[10px]",
|
|
1578
|
+
lg: "h-12 px-7 text-sm",
|
|
1579
|
+
icon: "h-10 w-10"
|
|
1468
1580
|
}
|
|
1469
1581
|
},
|
|
1470
1582
|
defaultVariants: {
|
|
@@ -1473,11 +1585,11 @@ var buttonVariants = cva(
|
|
|
1473
1585
|
}
|
|
1474
1586
|
}
|
|
1475
1587
|
);
|
|
1476
|
-
var Button =
|
|
1588
|
+
var Button = React12.forwardRef(
|
|
1477
1589
|
(_a, ref) => {
|
|
1478
1590
|
var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]);
|
|
1479
1591
|
const Comp = asChild ? Slot : "button";
|
|
1480
|
-
return /* @__PURE__ */
|
|
1592
|
+
return /* @__PURE__ */ React12.createElement(
|
|
1481
1593
|
Comp,
|
|
1482
1594
|
__spreadValues({
|
|
1483
1595
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -1506,20 +1618,20 @@ function ColumnManager({
|
|
|
1506
1618
|
itemClassName,
|
|
1507
1619
|
resetClassName
|
|
1508
1620
|
}) {
|
|
1509
|
-
return /* @__PURE__ */
|
|
1510
|
-
} }) : /* @__PURE__ */
|
|
1621
|
+
return /* @__PURE__ */ React13.createElement(DropdownMenu, null, /* @__PURE__ */ React13.createElement(DropdownMenuTrigger, { asChild: true, className }, renderTrigger ? renderTrigger({ onClick: () => {
|
|
1622
|
+
} }) : /* @__PURE__ */ React13.createElement(
|
|
1511
1623
|
Button,
|
|
1512
1624
|
{
|
|
1513
1625
|
variant: "outline",
|
|
1514
1626
|
size: "sm",
|
|
1515
1627
|
className: cn("ml-auto", triggerClassName)
|
|
1516
1628
|
},
|
|
1517
|
-
/* @__PURE__ */
|
|
1518
|
-
/* @__PURE__ */
|
|
1519
|
-
)), /* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ React13.createElement(Settings, { className: "h-3 w-3 mr-1.5" }),
|
|
1630
|
+
/* @__PURE__ */ React13.createElement("span", null, "Columns")
|
|
1631
|
+
)), /* @__PURE__ */ React13.createElement(DropdownMenuContent, { align, className: contentClassName }, columns.map((column) => {
|
|
1520
1632
|
const isVisible = visibleColumns.includes(column.id);
|
|
1521
1633
|
const handleToggle = (checked) => toggleColumnVisibility(column.id, checked);
|
|
1522
|
-
return renderColumnItem ? /* @__PURE__ */
|
|
1634
|
+
return renderColumnItem ? /* @__PURE__ */ React13.createElement(React13.Fragment, { key: column.id }, renderColumnItem({ column, isVisible, onToggle: handleToggle })) : /* @__PURE__ */ React13.createElement(
|
|
1523
1635
|
DropdownMenuCheckboxItem,
|
|
1524
1636
|
{
|
|
1525
1637
|
key: column.id,
|
|
@@ -1529,7 +1641,7 @@ function ColumnManager({
|
|
|
1529
1641
|
},
|
|
1530
1642
|
column.header
|
|
1531
1643
|
);
|
|
1532
|
-
}), showResetButton && /* @__PURE__ */
|
|
1644
|
+
}), showResetButton && /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(DropdownMenuSeparator, null), renderResetButton ? renderResetButton({ onClick: resetGridPreferences }) : /* @__PURE__ */ React13.createElement(
|
|
1533
1645
|
DropdownMenuItem,
|
|
1534
1646
|
{
|
|
1535
1647
|
onClick: resetGridPreferences,
|
|
@@ -1538,13 +1650,13 @@ function ColumnManager({
|
|
|
1538
1650
|
resetClassName
|
|
1539
1651
|
)
|
|
1540
1652
|
},
|
|
1541
|
-
/* @__PURE__ */
|
|
1653
|
+
/* @__PURE__ */ React13.createElement(RotateCcw, { className: "h-3 w-3 mr-1.5" }),
|
|
1542
1654
|
"Reset all columns"
|
|
1543
1655
|
))));
|
|
1544
1656
|
}
|
|
1545
1657
|
|
|
1546
1658
|
// components/data-grid/group-manager.tsx
|
|
1547
|
-
import
|
|
1659
|
+
import React14 from "react";
|
|
1548
1660
|
import { Layers, X } from "lucide-react";
|
|
1549
1661
|
function GroupManager({
|
|
1550
1662
|
columns,
|
|
@@ -1571,29 +1683,29 @@ function GroupManager({
|
|
|
1571
1683
|
updateGroupByColumns([...groupByColumns, columnId]);
|
|
1572
1684
|
}
|
|
1573
1685
|
};
|
|
1574
|
-
return /* @__PURE__ */
|
|
1686
|
+
return /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col" }, groupByColumns.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: cn("flex flex-wrap gap-1 mb-2", activeGroupsClassName) }, groupByColumns.map((columnId) => {
|
|
1575
1687
|
const column = columns.find((col) => col.id === columnId);
|
|
1576
1688
|
if (!column) return null;
|
|
1577
|
-
return renderActiveGroup ? /* @__PURE__ */
|
|
1689
|
+
return renderActiveGroup ? /* @__PURE__ */ React14.createElement(React14.Fragment, { key: columnId }, renderActiveGroup({
|
|
1578
1690
|
column,
|
|
1579
1691
|
onRemove: () => removeGroupByColumn(columnId)
|
|
1580
|
-
})) : /* @__PURE__ */
|
|
1692
|
+
})) : /* @__PURE__ */ React14.createElement(
|
|
1581
1693
|
"div",
|
|
1582
1694
|
{
|
|
1583
1695
|
key: columnId,
|
|
1584
1696
|
className: "bg-primary/10 rounded-md px-2 py-1 text-xs flex items-center"
|
|
1585
1697
|
},
|
|
1586
|
-
/* @__PURE__ */
|
|
1587
|
-
/* @__PURE__ */
|
|
1698
|
+
/* @__PURE__ */ React14.createElement("span", { className: "mr-1" }, column.header),
|
|
1699
|
+
/* @__PURE__ */ React14.createElement(
|
|
1588
1700
|
"button",
|
|
1589
1701
|
{
|
|
1590
1702
|
onClick: () => removeGroupByColumn(columnId),
|
|
1591
1703
|
className: "hover:text-destructive focus:outline-none"
|
|
1592
1704
|
},
|
|
1593
|
-
/* @__PURE__ */
|
|
1705
|
+
/* @__PURE__ */ React14.createElement(X, { className: "h-3 w-3" })
|
|
1594
1706
|
)
|
|
1595
1707
|
);
|
|
1596
|
-
}), /* @__PURE__ */
|
|
1708
|
+
}), /* @__PURE__ */ React14.createElement(
|
|
1597
1709
|
Button,
|
|
1598
1710
|
{
|
|
1599
1711
|
variant: "ghost",
|
|
@@ -1602,19 +1714,19 @@ function GroupManager({
|
|
|
1602
1714
|
className: "text-xs h-6"
|
|
1603
1715
|
},
|
|
1604
1716
|
"Clear All"
|
|
1605
|
-
)), /* @__PURE__ */
|
|
1606
|
-
} }) : /* @__PURE__ */
|
|
1717
|
+
)), /* @__PURE__ */ React14.createElement(DropdownMenu, null, /* @__PURE__ */ React14.createElement(DropdownMenuTrigger, { asChild: true, className }, renderTrigger ? renderTrigger({ onClick: () => {
|
|
1718
|
+
} }) : /* @__PURE__ */ React14.createElement(
|
|
1607
1719
|
Button,
|
|
1608
1720
|
{
|
|
1609
1721
|
variant: "outline",
|
|
1610
1722
|
size: "sm",
|
|
1611
1723
|
className: cn(triggerClassName)
|
|
1612
1724
|
},
|
|
1613
|
-
/* @__PURE__ */
|
|
1614
|
-
/* @__PURE__ */
|
|
1615
|
-
)), /* @__PURE__ */
|
|
1725
|
+
/* @__PURE__ */ React14.createElement(Layers, { className: "h-3 w-3 mr-1.5" }),
|
|
1726
|
+
/* @__PURE__ */ React14.createElement("span", null, "Group by")
|
|
1727
|
+
)), /* @__PURE__ */ React14.createElement(DropdownMenuContent, { align, className: contentClassName }, groupableColumns.length > 0 ? groupableColumns.map((column) => {
|
|
1616
1728
|
const isGrouped = groupByColumns.includes(column.id);
|
|
1617
|
-
return /* @__PURE__ */
|
|
1729
|
+
return /* @__PURE__ */ React14.createElement(
|
|
1618
1730
|
DropdownMenuCheckboxItem,
|
|
1619
1731
|
{
|
|
1620
1732
|
key: column.id,
|
|
@@ -1624,7 +1736,7 @@ function GroupManager({
|
|
|
1624
1736
|
},
|
|
1625
1737
|
column.header
|
|
1626
1738
|
);
|
|
1627
|
-
}) : /* @__PURE__ */
|
|
1739
|
+
}) : /* @__PURE__ */ React14.createElement(DropdownMenuItem, { disabled: true }, "No groupable columns"), groupByColumns.length > 0 && /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(DropdownMenuSeparator, null), /* @__PURE__ */ React14.createElement(DropdownMenuItem, { onClick: clearGrouping }, "Clear all groups")))));
|
|
1628
1740
|
}
|
|
1629
1741
|
|
|
1630
1742
|
// components/data-grid/use-grid-persistence.ts
|
|
@@ -1843,6 +1955,7 @@ function DataGrid({
|
|
|
1843
1955
|
enableRowSelection = false,
|
|
1844
1956
|
enablePagination = true,
|
|
1845
1957
|
enableGrouping = false,
|
|
1958
|
+
enableExpandableRows = false,
|
|
1846
1959
|
hideGroupControls = false,
|
|
1847
1960
|
hideColumnManager = false,
|
|
1848
1961
|
pageSizeOptions = [5, 10, 20, 50, 100],
|
|
@@ -1872,7 +1985,13 @@ function DataGrid({
|
|
|
1872
1985
|
enableCellSelection = false,
|
|
1873
1986
|
onCellSelect,
|
|
1874
1987
|
preventRowSelection,
|
|
1875
|
-
contextMenuContent
|
|
1988
|
+
contextMenuContent,
|
|
1989
|
+
expandedRows = {},
|
|
1990
|
+
onExpandedRowsChange,
|
|
1991
|
+
renderExpandedRow,
|
|
1992
|
+
expandIcon,
|
|
1993
|
+
collapseIcon,
|
|
1994
|
+
getRowId
|
|
1876
1995
|
}) {
|
|
1877
1996
|
const { theme } = useTheme();
|
|
1878
1997
|
const filterValueRefs = useRef(filterState || {});
|
|
@@ -2057,7 +2176,7 @@ function DataGrid({
|
|
|
2057
2176
|
});
|
|
2058
2177
|
};
|
|
2059
2178
|
if (!isLoading && (!data || data.length === 0)) {
|
|
2060
|
-
return /* @__PURE__ */
|
|
2179
|
+
return /* @__PURE__ */ React15.createElement(
|
|
2061
2180
|
"div",
|
|
2062
2181
|
{
|
|
2063
2182
|
className: cn(
|
|
@@ -2070,7 +2189,7 @@ function DataGrid({
|
|
|
2070
2189
|
);
|
|
2071
2190
|
}
|
|
2072
2191
|
if (isLoading) {
|
|
2073
|
-
return /* @__PURE__ */
|
|
2192
|
+
return /* @__PURE__ */ React15.createElement(
|
|
2074
2193
|
"div",
|
|
2075
2194
|
{
|
|
2076
2195
|
className: cn(
|
|
@@ -2083,7 +2202,7 @@ function DataGrid({
|
|
|
2083
2202
|
);
|
|
2084
2203
|
}
|
|
2085
2204
|
const showToolbar = enableGrouping && !hideGroupControls || !hideColumnManager;
|
|
2086
|
-
return /* @__PURE__ */
|
|
2205
|
+
return /* @__PURE__ */ React15.createElement(
|
|
2087
2206
|
"div",
|
|
2088
2207
|
{
|
|
2089
2208
|
className: cn(
|
|
@@ -2093,7 +2212,7 @@ function DataGrid({
|
|
|
2093
2212
|
classes.container
|
|
2094
2213
|
)
|
|
2095
2214
|
},
|
|
2096
|
-
showToolbar ? /* @__PURE__ */
|
|
2215
|
+
showToolbar ? /* @__PURE__ */ React15.createElement(
|
|
2097
2216
|
"div",
|
|
2098
2217
|
{
|
|
2099
2218
|
className: cn(
|
|
@@ -2101,7 +2220,7 @@ function DataGrid({
|
|
|
2101
2220
|
classes.columnManager
|
|
2102
2221
|
)
|
|
2103
2222
|
},
|
|
2104
|
-
enableGrouping && !hideGroupControls ? /* @__PURE__ */
|
|
2223
|
+
enableGrouping && !hideGroupControls ? /* @__PURE__ */ React15.createElement(
|
|
2105
2224
|
GroupManager,
|
|
2106
2225
|
__spreadValues({
|
|
2107
2226
|
columns,
|
|
@@ -2111,7 +2230,7 @@ function DataGrid({
|
|
|
2111
2230
|
clearGrouping: handleClearGrouping
|
|
2112
2231
|
}, groupManagerProps)
|
|
2113
2232
|
) : null,
|
|
2114
|
-
!hideColumnManager ? /* @__PURE__ */
|
|
2233
|
+
!hideColumnManager ? /* @__PURE__ */ React15.createElement(
|
|
2115
2234
|
ColumnManager,
|
|
2116
2235
|
__spreadValues({
|
|
2117
2236
|
columns,
|
|
@@ -2121,7 +2240,7 @@ function DataGrid({
|
|
|
2121
2240
|
}, columnManagerProps)
|
|
2122
2241
|
) : null
|
|
2123
2242
|
) : null,
|
|
2124
|
-
/* @__PURE__ */
|
|
2243
|
+
/* @__PURE__ */ React15.createElement("div", { className: "w-full overflow-auto" }, /* @__PURE__ */ React15.createElement("table", { className: "w-full border-separate border-spacing-0" }, /* @__PURE__ */ React15.createElement(
|
|
2125
2244
|
TableHeader,
|
|
2126
2245
|
{
|
|
2127
2246
|
columns: orderedColumns,
|
|
@@ -2159,7 +2278,7 @@ function DataGrid({
|
|
|
2159
2278
|
filterMenu,
|
|
2160
2279
|
filterMenuRef
|
|
2161
2280
|
}
|
|
2162
|
-
), /* @__PURE__ */
|
|
2281
|
+
), /* @__PURE__ */ React15.createElement(
|
|
2163
2282
|
TableBody,
|
|
2164
2283
|
{
|
|
2165
2284
|
paginatedData,
|
|
@@ -2195,10 +2314,23 @@ function DataGrid({
|
|
|
2195
2314
|
groupCollapseIcon,
|
|
2196
2315
|
groupRowProps,
|
|
2197
2316
|
preventRowSelection,
|
|
2198
|
-
contextMenuContent
|
|
2317
|
+
contextMenuContent,
|
|
2318
|
+
enableExpandableRows,
|
|
2319
|
+
expandedRows,
|
|
2320
|
+
onToggleRowExpand: (rowId) => {
|
|
2321
|
+
if (onExpandedRowsChange) {
|
|
2322
|
+
const newExpandedRows = __spreadValues({}, expandedRows);
|
|
2323
|
+
newExpandedRows[rowId] = !newExpandedRows[rowId];
|
|
2324
|
+
onExpandedRowsChange(newExpandedRows);
|
|
2325
|
+
}
|
|
2326
|
+
},
|
|
2327
|
+
renderExpandedRow,
|
|
2328
|
+
expandIcon,
|
|
2329
|
+
collapseIcon,
|
|
2330
|
+
getRowId
|
|
2199
2331
|
}
|
|
2200
2332
|
))),
|
|
2201
|
-
effectiveEnablePagination ? /* @__PURE__ */
|
|
2333
|
+
effectiveEnablePagination ? /* @__PURE__ */ React15.createElement(
|
|
2202
2334
|
Pagination,
|
|
2203
2335
|
__spreadValues({
|
|
2204
2336
|
pageIndex: pageIndex != null ? pageIndex : 0,
|
|
@@ -2257,7 +2389,7 @@ var useColumnResize = (enableColumnResize) => {
|
|
|
2257
2389
|
};
|
|
2258
2390
|
|
|
2259
2391
|
// components/theme-provider/theme-switcher.tsx
|
|
2260
|
-
import
|
|
2392
|
+
import React16 from "react";
|
|
2261
2393
|
import { Moon, Sun } from "lucide-react";
|
|
2262
2394
|
var ThemeSwitcher = ({ className }) => {
|
|
2263
2395
|
const { theme, setTssTheme, setTailwindTheme } = useTheme();
|
|
@@ -2301,7 +2433,7 @@ var ThemeSwitcher = ({ className }) => {
|
|
|
2301
2433
|
});
|
|
2302
2434
|
}
|
|
2303
2435
|
};
|
|
2304
|
-
return /* @__PURE__ */
|
|
2436
|
+
return /* @__PURE__ */ React16.createElement(
|
|
2305
2437
|
Button,
|
|
2306
2438
|
{
|
|
2307
2439
|
onClick: toggleTheme,
|
|
@@ -2310,27 +2442,27 @@ var ThemeSwitcher = ({ className }) => {
|
|
|
2310
2442
|
className,
|
|
2311
2443
|
title: isDarkMode ? "Switch to light mode" : "Switch to dark mode"
|
|
2312
2444
|
},
|
|
2313
|
-
isDarkMode ? /* @__PURE__ */
|
|
2445
|
+
isDarkMode ? /* @__PURE__ */ React16.createElement(Sun, { className: "h-4 w-4" }) : /* @__PURE__ */ React16.createElement(Moon, { className: "h-4 w-4" })
|
|
2314
2446
|
);
|
|
2315
2447
|
};
|
|
2316
2448
|
|
|
2317
2449
|
// components/theme-provider/theme-wrapper.tsx
|
|
2318
|
-
import
|
|
2450
|
+
import React17 from "react";
|
|
2319
2451
|
var ThemeWrapper = ({
|
|
2320
2452
|
children,
|
|
2321
2453
|
customTheme
|
|
2322
2454
|
}) => {
|
|
2323
|
-
return /* @__PURE__ */
|
|
2455
|
+
return /* @__PURE__ */ React17.createElement(
|
|
2324
2456
|
ThemeProvider,
|
|
2325
2457
|
{
|
|
2326
2458
|
initialTssTheme: __spreadValues({}, customTheme || {})
|
|
2327
2459
|
},
|
|
2328
|
-
/* @__PURE__ */
|
|
2460
|
+
/* @__PURE__ */ React17.createElement("div", null, children)
|
|
2329
2461
|
);
|
|
2330
2462
|
};
|
|
2331
2463
|
|
|
2332
2464
|
// components/ui/badge.tsx
|
|
2333
|
-
import * as
|
|
2465
|
+
import * as React18 from "react";
|
|
2334
2466
|
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
2335
2467
|
import { cva as cva2 } from "class-variance-authority";
|
|
2336
2468
|
var badgeVariants = cva2(
|
|
@@ -2360,7 +2492,7 @@ function Badge(_a) {
|
|
|
2360
2492
|
"asChild"
|
|
2361
2493
|
]);
|
|
2362
2494
|
const Comp = asChild ? Slot2 : "span";
|
|
2363
|
-
return /* @__PURE__ */
|
|
2495
|
+
return /* @__PURE__ */ React18.createElement(
|
|
2364
2496
|
Comp,
|
|
2365
2497
|
__spreadValues({
|
|
2366
2498
|
"data-slot": "badge",
|
|
@@ -2370,42 +2502,42 @@ function Badge(_a) {
|
|
|
2370
2502
|
}
|
|
2371
2503
|
|
|
2372
2504
|
// components/ui/checkbox.tsx
|
|
2373
|
-
import * as
|
|
2505
|
+
import * as React19 from "react";
|
|
2374
2506
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
2375
2507
|
import { Check as Check2 } from "lucide-react";
|
|
2376
|
-
var Checkbox =
|
|
2508
|
+
var Checkbox = React19.forwardRef((_a, ref) => {
|
|
2377
2509
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2378
|
-
return /* @__PURE__ */
|
|
2510
|
+
return /* @__PURE__ */ React19.createElement(
|
|
2379
2511
|
CheckboxPrimitive.Root,
|
|
2380
2512
|
__spreadValues({
|
|
2381
2513
|
ref,
|
|
2382
2514
|
className: cn(
|
|
2383
|
-
"peer h-
|
|
2515
|
+
"peer h-3.5 w-3.5 shrink-0 border-2 border-border shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:cursor-not-allowed disabled:opacity-30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-foreground",
|
|
2384
2516
|
className
|
|
2385
2517
|
)
|
|
2386
2518
|
}, props),
|
|
2387
|
-
/* @__PURE__ */
|
|
2519
|
+
/* @__PURE__ */ React19.createElement(
|
|
2388
2520
|
CheckboxPrimitive.Indicator,
|
|
2389
2521
|
{
|
|
2390
2522
|
className: cn("flex items-center justify-center text-current")
|
|
2391
2523
|
},
|
|
2392
|
-
/* @__PURE__ */
|
|
2524
|
+
/* @__PURE__ */ React19.createElement(Check2, { className: "h-3 w-3", strokeWidth: 3 })
|
|
2393
2525
|
)
|
|
2394
2526
|
);
|
|
2395
2527
|
});
|
|
2396
2528
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
2397
2529
|
|
|
2398
2530
|
// components/ui/input.tsx
|
|
2399
|
-
import * as
|
|
2400
|
-
var Input =
|
|
2531
|
+
import * as React20 from "react";
|
|
2532
|
+
var Input = React20.forwardRef(
|
|
2401
2533
|
(_a, ref) => {
|
|
2402
2534
|
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
2403
|
-
return /* @__PURE__ */
|
|
2535
|
+
return /* @__PURE__ */ React20.createElement(
|
|
2404
2536
|
"input",
|
|
2405
2537
|
__spreadValues({
|
|
2406
2538
|
type,
|
|
2407
2539
|
className: cn(
|
|
2408
|
-
"flex h-
|
|
2540
|
+
"flex h-10 w-full border-2 border-border bg-background px-3 py-2 text-sm font-mono font-medium transition-all duration-150 file:border-0 file:bg-transparent file:text-sm file:font-mono file:font-bold file:text-foreground placeholder:text-muted-foreground placeholder:text-xs placeholder:uppercase placeholder:tracking-[0.08em] placeholder:font-bold focus-visible:outline-none focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 hover:border-foreground disabled:cursor-not-allowed disabled:opacity-30 disabled:bg-muted shadow-[inset_2px_2px_0_0_rgba(0,0,0,0.1)] dark:shadow-[inset_2px_2px_0_0_rgba(255,255,255,0.05)] focus-visible:shadow-[inset_0_0_0_0_rgba(0,0,0,0)]",
|
|
2409
2541
|
className
|
|
2410
2542
|
),
|
|
2411
2543
|
ref
|
|
@@ -2416,21 +2548,21 @@ var Input = React19.forwardRef(
|
|
|
2416
2548
|
Input.displayName = "Input";
|
|
2417
2549
|
|
|
2418
2550
|
// components/ui/popover.tsx
|
|
2419
|
-
import * as
|
|
2551
|
+
import * as React21 from "react";
|
|
2420
2552
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
2421
2553
|
var Popover = PopoverPrimitive.Root;
|
|
2422
2554
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
2423
2555
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
2424
|
-
var PopoverContent =
|
|
2556
|
+
var PopoverContent = React21.forwardRef((_a, ref) => {
|
|
2425
2557
|
var _b = _a, { className, align = "center", sideOffset = 4 } = _b, props = __objRest(_b, ["className", "align", "sideOffset"]);
|
|
2426
|
-
return /* @__PURE__ */
|
|
2558
|
+
return /* @__PURE__ */ React21.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React21.createElement(
|
|
2427
2559
|
PopoverPrimitive.Content,
|
|
2428
2560
|
__spreadValues({
|
|
2429
2561
|
ref,
|
|
2430
2562
|
align,
|
|
2431
2563
|
sideOffset,
|
|
2432
2564
|
className: cn(
|
|
2433
|
-
"z-50 w-72
|
|
2565
|
+
"z-50 w-72 border-2 border-foreground bg-popover p-4 text-popover-foreground shadow-[4px_4px_0_0_rgba(0,0,0,1)] dark:shadow-[4px_4px_0_0_rgba(255,255,255,0.2)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-98",
|
|
2434
2566
|
className
|
|
2435
2567
|
)
|
|
2436
2568
|
}, props)
|
|
@@ -2439,15 +2571,15 @@ var PopoverContent = React20.forwardRef((_a, ref) => {
|
|
|
2439
2571
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
2440
2572
|
|
|
2441
2573
|
// components/ui/select.tsx
|
|
2442
|
-
import * as
|
|
2574
|
+
import * as React22 from "react";
|
|
2443
2575
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
2444
2576
|
import { Check as Check3, ChevronDown as ChevronDown4, ChevronUp as ChevronUp2 } from "lucide-react";
|
|
2445
2577
|
var Select = SelectPrimitive.Root;
|
|
2446
2578
|
var SelectGroup = SelectPrimitive.Group;
|
|
2447
2579
|
var SelectValue = SelectPrimitive.Value;
|
|
2448
|
-
var SelectTrigger =
|
|
2580
|
+
var SelectTrigger = React22.forwardRef((_a, ref) => {
|
|
2449
2581
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2450
|
-
return /* @__PURE__ */
|
|
2582
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2451
2583
|
SelectPrimitive.Trigger,
|
|
2452
2584
|
__spreadValues({
|
|
2453
2585
|
ref,
|
|
@@ -2457,13 +2589,13 @@ var SelectTrigger = React21.forwardRef((_a, ref) => {
|
|
|
2457
2589
|
)
|
|
2458
2590
|
}, props),
|
|
2459
2591
|
children,
|
|
2460
|
-
/* @__PURE__ */
|
|
2592
|
+
/* @__PURE__ */ React22.createElement(SelectPrimitive.Icon, { asChild: true }, /* @__PURE__ */ React22.createElement(ChevronDown4, { className: "h-4 w-4 opacity-50" }))
|
|
2461
2593
|
);
|
|
2462
2594
|
});
|
|
2463
2595
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
2464
|
-
var SelectScrollUpButton =
|
|
2596
|
+
var SelectScrollUpButton = React22.forwardRef((_a, ref) => {
|
|
2465
2597
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2466
|
-
return /* @__PURE__ */
|
|
2598
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2467
2599
|
SelectPrimitive.ScrollUpButton,
|
|
2468
2600
|
__spreadValues({
|
|
2469
2601
|
ref,
|
|
@@ -2472,13 +2604,13 @@ var SelectScrollUpButton = React21.forwardRef((_a, ref) => {
|
|
|
2472
2604
|
className
|
|
2473
2605
|
)
|
|
2474
2606
|
}, props),
|
|
2475
|
-
/* @__PURE__ */
|
|
2607
|
+
/* @__PURE__ */ React22.createElement(ChevronUp2, { className: "h-4 w-4" })
|
|
2476
2608
|
);
|
|
2477
2609
|
});
|
|
2478
2610
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
2479
|
-
var SelectScrollDownButton =
|
|
2611
|
+
var SelectScrollDownButton = React22.forwardRef((_a, ref) => {
|
|
2480
2612
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2481
|
-
return /* @__PURE__ */
|
|
2613
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2482
2614
|
SelectPrimitive.ScrollDownButton,
|
|
2483
2615
|
__spreadValues({
|
|
2484
2616
|
ref,
|
|
@@ -2487,13 +2619,13 @@ var SelectScrollDownButton = React21.forwardRef((_a, ref) => {
|
|
|
2487
2619
|
className
|
|
2488
2620
|
)
|
|
2489
2621
|
}, props),
|
|
2490
|
-
/* @__PURE__ */
|
|
2622
|
+
/* @__PURE__ */ React22.createElement(ChevronDown4, { className: "h-4 w-4" })
|
|
2491
2623
|
);
|
|
2492
2624
|
});
|
|
2493
2625
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
2494
|
-
var SelectContent =
|
|
2626
|
+
var SelectContent = React22.forwardRef((_a, ref) => {
|
|
2495
2627
|
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
2496
|
-
return /* @__PURE__ */
|
|
2628
|
+
return /* @__PURE__ */ React22.createElement(SelectPrimitive.Portal, null, /* @__PURE__ */ React22.createElement(
|
|
2497
2629
|
SelectPrimitive.Content,
|
|
2498
2630
|
__spreadValues({
|
|
2499
2631
|
ref,
|
|
@@ -2504,8 +2636,8 @@ var SelectContent = React21.forwardRef((_a, ref) => {
|
|
|
2504
2636
|
),
|
|
2505
2637
|
position
|
|
2506
2638
|
}, props),
|
|
2507
|
-
/* @__PURE__ */
|
|
2508
|
-
/* @__PURE__ */
|
|
2639
|
+
/* @__PURE__ */ React22.createElement(SelectScrollUpButton, null),
|
|
2640
|
+
/* @__PURE__ */ React22.createElement(
|
|
2509
2641
|
SelectPrimitive.Viewport,
|
|
2510
2642
|
{
|
|
2511
2643
|
className: cn(
|
|
@@ -2515,13 +2647,13 @@ var SelectContent = React21.forwardRef((_a, ref) => {
|
|
|
2515
2647
|
},
|
|
2516
2648
|
children
|
|
2517
2649
|
),
|
|
2518
|
-
/* @__PURE__ */
|
|
2650
|
+
/* @__PURE__ */ React22.createElement(SelectScrollDownButton, null)
|
|
2519
2651
|
));
|
|
2520
2652
|
});
|
|
2521
2653
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
2522
|
-
var SelectLabel =
|
|
2654
|
+
var SelectLabel = React22.forwardRef((_a, ref) => {
|
|
2523
2655
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2524
|
-
return /* @__PURE__ */
|
|
2656
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2525
2657
|
SelectPrimitive.Label,
|
|
2526
2658
|
__spreadValues({
|
|
2527
2659
|
ref,
|
|
@@ -2530,9 +2662,9 @@ var SelectLabel = React21.forwardRef((_a, ref) => {
|
|
|
2530
2662
|
);
|
|
2531
2663
|
});
|
|
2532
2664
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
2533
|
-
var SelectItem =
|
|
2665
|
+
var SelectItem = React22.forwardRef((_a, ref) => {
|
|
2534
2666
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
2535
|
-
return /* @__PURE__ */
|
|
2667
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2536
2668
|
SelectPrimitive.Item,
|
|
2537
2669
|
__spreadValues({
|
|
2538
2670
|
ref,
|
|
@@ -2541,14 +2673,14 @@ var SelectItem = React21.forwardRef((_a, ref) => {
|
|
|
2541
2673
|
className
|
|
2542
2674
|
)
|
|
2543
2675
|
}, props),
|
|
2544
|
-
/* @__PURE__ */
|
|
2545
|
-
/* @__PURE__ */
|
|
2676
|
+
/* @__PURE__ */ React22.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React22.createElement(SelectPrimitive.ItemIndicator, null, /* @__PURE__ */ React22.createElement(Check3, { className: "h-4 w-4" }))),
|
|
2677
|
+
/* @__PURE__ */ React22.createElement(SelectPrimitive.ItemText, null, children)
|
|
2546
2678
|
);
|
|
2547
2679
|
});
|
|
2548
2680
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
2549
|
-
var SelectSeparator =
|
|
2681
|
+
var SelectSeparator = React22.forwardRef((_a, ref) => {
|
|
2550
2682
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2551
|
-
return /* @__PURE__ */
|
|
2683
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2552
2684
|
SelectPrimitive.Separator,
|
|
2553
2685
|
__spreadValues({
|
|
2554
2686
|
ref,
|
|
@@ -2592,6 +2724,7 @@ export {
|
|
|
2592
2724
|
DropdownMenuSubContent,
|
|
2593
2725
|
DropdownMenuSubTrigger,
|
|
2594
2726
|
DropdownMenuTrigger,
|
|
2727
|
+
ExpandableRow,
|
|
2595
2728
|
FilterMenu,
|
|
2596
2729
|
Input,
|
|
2597
2730
|
Pagination,
|