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.mjs CHANGED
@@ -31,7 +31,7 @@ var __objRest = (source, exclude) => {
31
31
  };
32
32
 
33
33
  // components/data-grid/data-grid.tsx
34
- import React14, { useState as useState6, useRef, useEffect as useEffect3, useMemo as useMemo3 } from "react";
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: "#2563eb",
66
- // blue-600
67
- secondary: "#6b7280",
68
- // gray-500
69
- background: "#ffffff",
70
- foreground: "#1e1e21",
71
- // slate-950
72
- muted: "#f1f5f9",
73
- // slate-100
74
- mutedForeground: "#64748b",
75
- // slate-500
76
- border: "#e2e8f0",
77
- // slate-200
78
- popover: "#ffffff"
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: "#3b82f6",
84
- // blue-500
85
- secondary: "#9ca3af",
86
- // gray-400
87
- background: "#121314",
88
- foreground: "#f8fafc",
89
- // slate-50
90
- muted: "#1e293b",
91
- // slate-800
92
- mutedForeground: "#94a3b8",
93
- // slate-400
94
- border: "#334155",
95
- // slate-700
96
- popover: "#1a1c1e"
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-md overflow-hidden",
101
- header: "bg-muted/50 border-b border-border",
102
- headerCell: "text-muted-foreground font-medium px-4 py-3",
103
- row: "border-b border-border hover:bg-muted/30 transition-colors",
104
- cell: "px-4 py-2 text-sm",
105
- pagination: "bg-background border-t border-border p-2 flex justify-between items-center",
106
- filterMenu: "bg-popover border border-border shadow-md rounded-md",
107
- filterMenuContent: "p-3",
108
- filterMenuHeader: "font-medium mb-2",
109
- filterMenuInput: "",
110
- filterMenuClearButton: "",
111
- filterMenuApplyButton: "",
112
- columnResizeHandle: "w-1 bg-border hover:bg-primary cursor-col-resize h-full absolute right-0 top-0",
113
- columnResizeHandleActive: "bg-primary",
114
- sortIcon: "text-muted-foreground",
115
- sortIconActive: "text-foreground"
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-3", theme.classes.filterMenuContent) }, /* @__PURE__ */ React2.createElement(
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-medium mb-2",
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-1 rounded bg-primary/20 text-primary",
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-2" }, renderCurrentFilter ? renderCurrentFilter(filterValue) : /* @__PURE__ */ React2.createElement(
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-muted p-1 rounded",
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 filter: ",
362
- /* @__PURE__ */ React2.createElement("strong", null, filterValue)
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 p-2 border rounded-md",
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-between mt-2 gap-2",
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-3 py-1 text-sm rounded-md border",
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-3 py-1 text-sm bg-primary text-primary-foreground rounded-md",
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-1 min-w-[200px] bg-popover border rounded-md shadow-md",
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-1 min-w-[200px] bg-popover border rounded-md shadow-md",
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-2 h-4 w-4 text-primary" }) : /* @__PURE__ */ React3.createElement(ChevronDown, { className: "ml-2 h-4 w-4 text-primary" });
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-2 h-4 w-4 text-primary" }) : /* @__PURE__ */ React3.createElement(ArrowDown, { className: "ml-2 h-4 w-4 text-primary" });
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-4 w-4 ml-1",
551
- isActive ? theme.classes.sortIconActive : theme.classes.sortIcon
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 React8 from "react";
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 content = /* @__PURE__ */ React6.createElement("div", { className: "relative z-0" }, column.renderCell ? column.renderCell(row) : column.cell ? column.cell(row) : row[column.id]);
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-muted/50 transition-colors",
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__ */ React8.createElement(ChevronDown3, { className: "h-4 w-4" }),
1124
- groupCollapseIcon = /* @__PURE__ */ React8.createElement(ChevronRight2, { className: "h-4 w-4" }),
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__ */ React8.createElement("tbody", { className: theme.classes.tbody }, paginatedData.map((row, rowIndex) => {
1206
+ return /* @__PURE__ */ React9.createElement("tbody", { className: theme.classes.tbody }, paginatedData.map((row, rowIndex) => {
1133
1207
  if (enableGrouping && row.isGroupRow) {
1134
- return /* @__PURE__ */ React8.createElement(
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.id || `row-${rowIndex}`;
1226
+ const rowId = getRowId(row, rowIndex);
1153
1227
  const isSelected = selectedRows[rowId];
1154
- return /* @__PURE__ */ React8.createElement(
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 React9 from "react";
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__ */ React9.createElement("div", { className: cn("p-2 flex items-center justify-between", className) }, showPageSizeSelector && /* @__PURE__ */ React9.createElement("div", { className: cn("flex items-center gap-2", pageSizeClassName) }, renderPageSizeSelector ? renderPageSizeSelector({
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__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement("span", { className: "text-sm text-muted-foreground" }, "Rows per page:"), /* @__PURE__ */ React9.createElement(
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 rounded px-2 py-1 text-sm bg-background"
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__ */ React9.createElement("option", { key: option, value: option }, option))
1229
- ))), /* @__PURE__ */ React9.createElement(
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 justify-between", buttonsClassName)
1323
+ className: cn("flex items-center gap-4", buttonsClassName)
1233
1324
  },
1234
- showPageInfo && /* @__PURE__ */ React9.createElement("div", { className: cn("mr-2", pageInfoClassName) }, renderPageInfo ? renderPageInfo({ start, end, total: totalRows }) : /* @__PURE__ */ React9.createElement("span", { className: "text-sm text-muted-foreground" }, start, "-", end, " of ", totalRows)),
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__ */ React9.createElement(
1329
+ }) : /* @__PURE__ */ React10.createElement(
1239
1330
  "button",
1240
1331
  {
1241
1332
  onClick: goToFirstPage,
1242
1333
  disabled: isFirstPage,
1243
1334
  className: cn(
1244
- "p-1 rounded hover:bg-muted disabled:opacity-50 disabled:pointer-events-none",
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__ */ React9.createElement(
1349
+ }) : /* @__PURE__ */ React10.createElement(
1254
1350
  "button",
1255
1351
  {
1256
1352
  onClick: goToPrevPage,
1257
1353
  disabled: isFirstPage,
1258
1354
  className: cn(
1259
- "p-1 rounded hover:bg-muted disabled:opacity-50 disabled:pointer-events-none",
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__ */ React9.createElement(
1369
+ }) : /* @__PURE__ */ React10.createElement(
1269
1370
  "button",
1270
1371
  {
1271
1372
  onClick: goToNextPage,
1272
1373
  disabled: isLastPage,
1273
1374
  className: cn(
1274
- "p-1 rounded hover:bg-muted disabled:opacity-50 disabled:pointer-events-none",
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__ */ React9.createElement(
1389
+ }) : /* @__PURE__ */ React10.createElement(
1284
1390
  "button",
1285
1391
  {
1286
1392
  onClick: goToLastPage,
1287
1393
  disabled: isLastPage,
1288
1394
  className: cn(
1289
- "p-1 rounded hover:bg-muted disabled:opacity-50 disabled:pointer-events-none",
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 React12 from "react";
1411
+ import React13 from "react";
1300
1412
 
1301
1413
  // components/ui/dropdown-menu.tsx
1302
- import * as React10 from "react";
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 = React10.forwardRef((_a, ref) => {
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__ */ React10.createElement(
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__ */ React10.createElement(ChevronRight3, { className: "ml-auto" })
1436
+ /* @__PURE__ */ React11.createElement(ChevronRight3, { className: "ml-auto" })
1325
1437
  );
1326
1438
  });
1327
1439
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1328
- var DropdownMenuSubContent = React10.forwardRef((_a, ref) => {
1440
+ var DropdownMenuSubContent = React11.forwardRef((_a, ref) => {
1329
1441
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1330
- return /* @__PURE__ */ React10.createElement(
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 = React10.forwardRef((_a, ref) => {
1454
+ var DropdownMenuContent = React11.forwardRef((_a, ref) => {
1343
1455
  var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
1344
- return /* @__PURE__ */ React10.createElement(DropdownMenuPrimitive.Portal, null, /* @__PURE__ */ React10.createElement(
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 = React10.forwardRef((_a, ref) => {
1470
+ var DropdownMenuItem = React11.forwardRef((_a, ref) => {
1359
1471
  var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
1360
- return /* @__PURE__ */ React10.createElement(
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 = React10.forwardRef((_a, ref) => {
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__ */ React10.createElement(
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__ */ React10.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React10.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React10.createElement(Check, { className: "h-4 w-4" }))),
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 = React10.forwardRef((_a, ref) => {
1502
+ var DropdownMenuRadioItem = React11.forwardRef((_a, ref) => {
1391
1503
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
1392
- return /* @__PURE__ */ React10.createElement(
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__ */ React10.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React10.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React10.createElement(Circle, { className: "h-2 w-2 fill-current" }))),
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 = React10.forwardRef((_a, ref) => {
1518
+ var DropdownMenuLabel = React11.forwardRef((_a, ref) => {
1407
1519
  var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
1408
- return /* @__PURE__ */ React10.createElement(
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 = React10.forwardRef((_a, ref) => {
1533
+ var DropdownMenuSeparator = React11.forwardRef((_a, ref) => {
1422
1534
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1423
- return /* @__PURE__ */ React10.createElement(
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__ */ React10.createElement(
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 React11 from "react";
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-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
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 shadow hover:bg-primary/90",
1457
- destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
1458
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
1459
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
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-9 px-4 py-2",
1465
- sm: "h-8 rounded-md px-3 text-xs",
1466
- lg: "h-10 rounded-md px-8",
1467
- icon: "h-9 w-9"
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 = React11.forwardRef(
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__ */ React11.createElement(
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__ */ React12.createElement(DropdownMenu, null, /* @__PURE__ */ React12.createElement(DropdownMenuTrigger, { asChild: true, className }, renderTrigger ? renderTrigger({ onClick: () => {
1510
- } }) : /* @__PURE__ */ React12.createElement(
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__ */ React12.createElement(Settings, { className: "h-4 w-4 mr-2" }),
1518
- /* @__PURE__ */ React12.createElement("span", null, "Columns")
1519
- )), /* @__PURE__ */ React12.createElement(DropdownMenuContent, { align, className: contentClassName }, columns.map((column) => {
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__ */ React12.createElement(React12.Fragment, { key: column.id }, renderColumnItem({ column, isVisible, onToggle: handleToggle })) : /* @__PURE__ */ React12.createElement(
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__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(DropdownMenuSeparator, null), renderResetButton ? renderResetButton({ onClick: resetGridPreferences }) : /* @__PURE__ */ React12.createElement(
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__ */ React12.createElement(RotateCcw, { className: "h-4 w-4 mr-2" }),
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 React13 from "react";
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__ */ React13.createElement("div", { className: "flex flex-col" }, groupByColumns.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: cn("flex flex-wrap gap-1 mb-2", activeGroupsClassName) }, groupByColumns.map((columnId) => {
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__ */ React13.createElement(React13.Fragment, { key: columnId }, renderActiveGroup({
1689
+ return renderActiveGroup ? /* @__PURE__ */ React14.createElement(React14.Fragment, { key: columnId }, renderActiveGroup({
1578
1690
  column,
1579
1691
  onRemove: () => removeGroupByColumn(columnId)
1580
- })) : /* @__PURE__ */ React13.createElement(
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__ */ React13.createElement("span", { className: "mr-1" }, column.header),
1587
- /* @__PURE__ */ React13.createElement(
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__ */ React13.createElement(X, { className: "h-3 w-3" })
1705
+ /* @__PURE__ */ React14.createElement(X, { className: "h-3 w-3" })
1594
1706
  )
1595
1707
  );
1596
- }), /* @__PURE__ */ React13.createElement(
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__ */ React13.createElement(DropdownMenu, null, /* @__PURE__ */ React13.createElement(DropdownMenuTrigger, { asChild: true, className }, renderTrigger ? renderTrigger({ onClick: () => {
1606
- } }) : /* @__PURE__ */ React13.createElement(
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__ */ React13.createElement(Layers, { className: "h-4 w-4 mr-2" }),
1614
- /* @__PURE__ */ React13.createElement("span", null, "Group by")
1615
- )), /* @__PURE__ */ React13.createElement(DropdownMenuContent, { align, className: contentClassName }, groupableColumns.length > 0 ? groupableColumns.map((column) => {
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__ */ React13.createElement(
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__ */ React13.createElement(DropdownMenuItem, { disabled: true }, "No groupable columns"), groupByColumns.length > 0 && /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(DropdownMenuSeparator, null), /* @__PURE__ */ React13.createElement(DropdownMenuItem, { onClick: clearGrouping }, "Clear all groups")))));
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__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement("div", { className: "w-full overflow-auto" }, /* @__PURE__ */ React14.createElement("table", { className: "w-full border-collapse" }, /* @__PURE__ */ React14.createElement(
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__ */ React14.createElement(
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__ */ React14.createElement(
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 React15 from "react";
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__ */ React15.createElement(
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__ */ React15.createElement(Sun, { className: "h-4 w-4" }) : /* @__PURE__ */ React15.createElement(Moon, { className: "h-4 w-4" })
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 React16 from "react";
2450
+ import React17 from "react";
2319
2451
  var ThemeWrapper = ({
2320
2452
  children,
2321
2453
  customTheme
2322
2454
  }) => {
2323
- return /* @__PURE__ */ React16.createElement(
2455
+ return /* @__PURE__ */ React17.createElement(
2324
2456
  ThemeProvider,
2325
2457
  {
2326
2458
  initialTssTheme: __spreadValues({}, customTheme || {})
2327
2459
  },
2328
- /* @__PURE__ */ React16.createElement("div", null, children)
2460
+ /* @__PURE__ */ React17.createElement("div", null, children)
2329
2461
  );
2330
2462
  };
2331
2463
 
2332
2464
  // components/ui/badge.tsx
2333
- import * as React17 from "react";
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__ */ React17.createElement(
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 React18 from "react";
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 = React18.forwardRef((_a, ref) => {
2508
+ var Checkbox = React19.forwardRef((_a, ref) => {
2377
2509
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2378
- return /* @__PURE__ */ React18.createElement(
2510
+ return /* @__PURE__ */ React19.createElement(
2379
2511
  CheckboxPrimitive.Root,
2380
2512
  __spreadValues({
2381
2513
  ref,
2382
2514
  className: cn(
2383
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
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__ */ React18.createElement(
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__ */ React18.createElement(Check2, { className: "h-4 w-4" })
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 React19 from "react";
2400
- var Input = React19.forwardRef(
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__ */ React19.createElement(
2535
+ return /* @__PURE__ */ React20.createElement(
2404
2536
  "input",
2405
2537
  __spreadValues({
2406
2538
  type,
2407
2539
  className: cn(
2408
- "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
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 React20 from "react";
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 = React20.forwardRef((_a, ref) => {
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__ */ React20.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React20.createElement(
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 rounded-md border bg-popover p-4 text-popover-foreground shadow-md 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-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
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 React21 from "react";
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 = React21.forwardRef((_a, ref) => {
2580
+ var SelectTrigger = React22.forwardRef((_a, ref) => {
2449
2581
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2450
- return /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement(SelectPrimitive.Icon, { asChild: true }, /* @__PURE__ */ React21.createElement(ChevronDown4, { className: "h-4 w-4 opacity-50" }))
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 = React21.forwardRef((_a, ref) => {
2596
+ var SelectScrollUpButton = React22.forwardRef((_a, ref) => {
2465
2597
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2466
- return /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement(ChevronUp2, { className: "h-4 w-4" })
2607
+ /* @__PURE__ */ React22.createElement(ChevronUp2, { className: "h-4 w-4" })
2476
2608
  );
2477
2609
  });
2478
2610
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2479
- var SelectScrollDownButton = React21.forwardRef((_a, ref) => {
2611
+ var SelectScrollDownButton = React22.forwardRef((_a, ref) => {
2480
2612
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2481
- return /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement(ChevronDown4, { className: "h-4 w-4" })
2622
+ /* @__PURE__ */ React22.createElement(ChevronDown4, { className: "h-4 w-4" })
2491
2623
  );
2492
2624
  });
2493
2625
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2494
- var SelectContent = React21.forwardRef((_a, ref) => {
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__ */ React21.createElement(SelectPrimitive.Portal, null, /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement(SelectScrollUpButton, null),
2508
- /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement(SelectScrollDownButton, null)
2650
+ /* @__PURE__ */ React22.createElement(SelectScrollDownButton, null)
2519
2651
  ));
2520
2652
  });
2521
2653
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2522
- var SelectLabel = React21.forwardRef((_a, ref) => {
2654
+ var SelectLabel = React22.forwardRef((_a, ref) => {
2523
2655
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2524
- return /* @__PURE__ */ React21.createElement(
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 = React21.forwardRef((_a, ref) => {
2665
+ var SelectItem = React22.forwardRef((_a, ref) => {
2534
2666
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2535
- return /* @__PURE__ */ React21.createElement(
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__ */ React21.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React21.createElement(SelectPrimitive.ItemIndicator, null, /* @__PURE__ */ React21.createElement(Check3, { className: "h-4 w-4" }))),
2545
- /* @__PURE__ */ React21.createElement(SelectPrimitive.ItemText, null, children)
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 = React21.forwardRef((_a, ref) => {
2681
+ var SelectSeparator = React22.forwardRef((_a, ref) => {
2550
2682
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2551
- return /* @__PURE__ */ React21.createElement(
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,