@forgedevstack/grid-table 1.0.1 → 1.0.2

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.js CHANGED
@@ -1133,7 +1133,7 @@ function FilterPopup({
1133
1133
  "div",
1134
1134
  {
1135
1135
  ref: popupRef,
1136
- className: `filter-popup absolute z-50 bg-theme-primary border border-theme-border rounded-lg shadow-xl min-w-[280px] ${className}`,
1136
+ className: `filter-popup ${className}`,
1137
1137
  style: {
1138
1138
  top: (_a = position == null ? void 0 : position.top) != null ? _a : "100%",
1139
1139
  left: (_b = position == null ? void 0 : position.left) != null ? _b : 0,
@@ -1141,44 +1141,44 @@ function FilterPopup({
1141
1141
  ...style
1142
1142
  },
1143
1143
  children: [
1144
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-header px-4 py-3 border-b border-theme-border", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex items-center justify-between", children: [
1145
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "font-medium text-theme-primary", children: columnHeader }),
1144
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-header", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "header-content", children: [
1145
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "header-title", children: columnHeader }),
1146
1146
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1147
1147
  "button",
1148
1148
  {
1149
1149
  onClick: onClose,
1150
- className: "p-1 rounded hover:bg-theme-hover text-theme-muted",
1150
+ className: "header-close",
1151
1151
  "aria-label": "Close",
1152
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
1152
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
1153
1153
  }
1154
1154
  )
1155
1155
  ] }) }),
1156
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-body p-4 space-y-4", children: filterType === "select" && filterOptions ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
1156
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-body", children: filterType === "select" && filterOptions ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
1157
1157
  "select",
1158
1158
  {
1159
1159
  value: String(value),
1160
1160
  onChange: (e) => setValue(e.target.value),
1161
- className: "w-full px-3 py-2 text-sm rounded border border-theme-border bg-theme-secondary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary",
1161
+ className: "w-full px-3 py-2 text-sm rounded",
1162
1162
  children: [
1163
1163
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: "", children: "Select..." }),
1164
1164
  filterOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: String(opt.value), children: opt.label }, String(opt.value)))
1165
1165
  ]
1166
1166
  }
1167
1167
  ) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
1168
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
1169
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { className: "block text-xs text-theme-muted mb-1", children: "Operator" }),
1168
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-field", children: [
1169
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { children: "Operator" }),
1170
1170
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1171
1171
  "select",
1172
1172
  {
1173
1173
  value: operator,
1174
1174
  onChange: (e) => setOperator(e.target.value),
1175
- className: "w-full px-3 py-2 text-sm rounded border border-theme-border bg-theme-secondary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary",
1175
+ className: "w-full px-3 py-2 text-sm rounded",
1176
1176
  children: operators.map((op) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: op, children: OPERATOR_LABELS[op] }, op))
1177
1177
  }
1178
1178
  )
1179
1179
  ] }),
1180
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
1181
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { className: "block text-xs text-theme-muted mb-1", children: "Value" }),
1180
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-field", children: [
1181
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { children: "Value" }),
1182
1182
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1183
1183
  "input",
1184
1184
  {
@@ -1187,18 +1187,18 @@ function FilterPopup({
1187
1187
  onChange: (e) => setValue(e.target.value),
1188
1188
  onKeyDown: handleKeyDown,
1189
1189
  placeholder: `Filter ${columnHeader}...`,
1190
- className: "w-full px-3 py-2 text-sm rounded border border-theme-border bg-theme-secondary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary",
1190
+ className: "w-full px-3 py-2 text-sm rounded",
1191
1191
  autoFocus: true
1192
1192
  }
1193
1193
  )
1194
1194
  ] })
1195
1195
  ] }) }),
1196
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-popup-footer px-4 py-3 border-t border-theme-border flex items-center justify-between", children: [
1196
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-popup-footer", children: [
1197
1197
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1198
1198
  "button",
1199
1199
  {
1200
1200
  onClick: handleClear,
1201
- className: "px-3 py-1.5 text-sm text-theme-muted hover:text-theme-primary transition-colors",
1201
+ className: "filter-clear",
1202
1202
  children: translations.clearFilter
1203
1203
  }
1204
1204
  ),
@@ -1206,7 +1206,7 @@ function FilterPopup({
1206
1206
  "button",
1207
1207
  {
1208
1208
  onClick: handleApply,
1209
- className: "px-4 py-1.5 text-sm bg-accent-primary text-white rounded hover:opacity-90 transition-opacity",
1209
+ className: "filter-apply",
1210
1210
  children: translations.apply
1211
1211
  }
1212
1212
  )
@@ -1221,7 +1221,7 @@ var import_jsx_runtime3 = require("react/jsx-runtime");
1221
1221
  var FilterIcon = ({ active = false }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1222
1222
  "svg",
1223
1223
  {
1224
- className: `w-3.5 h-3.5 ${active ? "text-accent-primary" : "text-theme-muted"}`,
1224
+ className: `icon-sm ${active ? "text-accent-primary" : "text-theme-muted"}`,
1225
1225
  fill: "none",
1226
1226
  viewBox: "0 0 24 24",
1227
1227
  stroke: "currentColor",
@@ -1239,7 +1239,7 @@ var FilterIcon = ({ active = false }) => /* @__PURE__ */ (0, import_jsx_runtime3
1239
1239
  var SortIcon = ({ direction }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1240
1240
  "svg",
1241
1241
  {
1242
- className: `w-3.5 h-3.5 ${direction ? "text-accent-primary" : "text-theme-muted"}`,
1242
+ className: `icon-sm ${direction ? "text-accent-primary" : "text-theme-muted"}`,
1243
1243
  fill: "none",
1244
1244
  viewBox: "0 0 24 24",
1245
1245
  stroke: "currentColor",
@@ -1296,36 +1296,23 @@ function HeaderCell({
1296
1296
  const cellClasses = (0, import_react9.useMemo)(() => {
1297
1297
  const classes = [
1298
1298
  "grid-header-cell",
1299
- "relative",
1300
- "flex",
1301
- "items-center",
1302
- "gap-2",
1303
- "px-4",
1304
- "py-3",
1305
- "font-medium",
1306
- "text-sm",
1307
- "text-theme-secondary",
1308
- "select-none",
1309
- "border-b",
1310
- "border-theme-border",
1311
- "transition-colors",
1312
1299
  ALIGN_CLASSES[column.align || "left"]
1313
1300
  ];
1314
1301
  if (isSortable) {
1315
- classes.push("cursor-pointer", "hover:text-theme-primary", "hover:bg-theme-hover");
1302
+ classes.push("cursor-pointer");
1316
1303
  }
1317
1304
  if (isDragging) {
1318
1305
  classes.push("opacity-50");
1319
1306
  }
1320
1307
  if (isDragOver) {
1321
- classes.push("bg-accent-primary/10", "border-l-2", "border-l-accent-primary");
1308
+ classes.push("bg-accent-primary/10");
1322
1309
  }
1323
1310
  return classes.join(" ");
1324
1311
  }, [column.align, isSortable, isDragging, isDragOver]);
1325
1312
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1326
1313
  "div",
1327
1314
  {
1328
- className: `${cellClasses} ${column.headerClassName || ""} ${column.sticky ? "shadow-[2px_0_4px_-2px_rgba(0,0,0,0.2)]" : ""}`,
1315
+ className: `${cellClasses} ${column.headerClassName || ""} ${column.sticky ? `sticky-${column.sticky}` : ""}`,
1329
1316
  style: {
1330
1317
  width: columnState.width,
1331
1318
  minWidth: column.minWidth || MIN_COLUMN_WIDTH,
@@ -1344,8 +1331,8 @@ function HeaderCell({
1344
1331
  onClick: handleClick,
1345
1332
  ...isDraggable ? { ...dragHandleProps, ...dropTargetProps } : {},
1346
1333
  children: [
1347
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "grid-header-content truncate flex-1", children: headerContent }),
1348
- isSortable && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "grid-header-sort flex items-center gap-0.5", children: [
1334
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "grid-header-content", children: headerContent }),
1335
+ isSortable && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "grid-header-sort", children: [
1349
1336
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SortIcon, { direction: sortDirection != null ? sortDirection : null }),
1350
1337
  isMultiSort && sortIndex !== void 0 && sortIndex >= 0 && sortDirection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-xs text-theme-muted", children: sortIndex + 1 })
1351
1338
  ] }),
@@ -1353,7 +1340,7 @@ function HeaderCell({
1353
1340
  "button",
1354
1341
  {
1355
1342
  onClick: handleFilterClick,
1356
- className: "grid-header-filter p-1 rounded hover:bg-theme-tertiary",
1343
+ className: "grid-header-filter",
1357
1344
  "aria-label": "Filter column",
1358
1345
  children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FilterIcon, { active: hasFilter })
1359
1346
  }
@@ -1361,7 +1348,7 @@ function HeaderCell({
1361
1348
  isResizable && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1362
1349
  "div",
1363
1350
  {
1364
- className: "grid-header-resize absolute right-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-accent-primary",
1351
+ className: "grid-header-resize",
1365
1352
  onMouseDown: onResizeStart,
1366
1353
  onClick: (e) => e.stopPropagation()
1367
1354
  }
@@ -1452,7 +1439,7 @@ function GridHeader({
1452
1439
  return classes.join(" ");
1453
1440
  }, [sticky]);
1454
1441
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `${headerClasses} ${className}`, style, role: "row", children: [
1455
- enableSelection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "grid-header-select flex items-center px-2 border-b border-theme-border", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1442
+ enableSelection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "grid-header-select", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1456
1443
  "input",
1457
1444
  {
1458
1445
  type: "checkbox",
@@ -1461,7 +1448,7 @@ function GridHeader({
1461
1448
  if (el) el.indeterminate = someSelected && !allSelected;
1462
1449
  },
1463
1450
  onChange: onSelectAll,
1464
- className: "w-4 h-4 rounded border-theme-border",
1451
+ className: "grid-header-checkbox",
1465
1452
  "aria-label": "Select all rows"
1466
1453
  }
1467
1454
  ) }),
@@ -1478,7 +1465,7 @@ function GridHeader({
1478
1465
  const hasFilter = state.filters.some((f) => f.columnId === col.id);
1479
1466
  const existingFilter = state.filters.find((f) => f.columnId === col.id);
1480
1467
  const headerText = typeof col.header === "string" ? col.header : col.id;
1481
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
1468
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", style: { position: "relative" }, children: [
1482
1469
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1483
1470
  HeaderCell,
1484
1471
  {
@@ -1598,17 +1585,15 @@ function GridCell({
1598
1585
  return baseStyle;
1599
1586
  }, [style, width, sticky, stickyOffset]);
1600
1587
  const alignClass = ALIGN_CLASSES2[align];
1601
- const stickyClasses = sticky ? "shadow-[2px_0_4px_-2px_rgba(0,0,0,0.2)]" : "";
1588
+ const stickyClass = sticky ? `sticky-${sticky}` : "";
1602
1589
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1603
1590
  "div",
1604
1591
  {
1605
1592
  className: `
1606
1593
  grid-cell
1607
- px-4 py-3
1608
- flex items-center
1609
1594
  ${alignClass}
1610
- ${stickyClasses}
1611
- ${onClick ? "cursor-pointer hover:bg-theme-hover" : ""}
1595
+ ${stickyClass}
1596
+ ${onClick ? "cursor-pointer" : ""}
1612
1597
  ${column.cellClassName || ""}
1613
1598
  ${className}
1614
1599
  `.trim(),
@@ -1616,7 +1601,7 @@ function GridCell({
1616
1601
  role: "cell",
1617
1602
  onClick: onClick ? handleClick : void 0,
1618
1603
  children: [
1619
- showLabel && labelText && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "grid-cell-label font-medium text-theme-muted mr-2 text-sm", children: [
1604
+ showLabel && labelText && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "grid-cell-label", children: [
1620
1605
  labelText,
1621
1606
  ":"
1622
1607
  ] }),
@@ -1739,23 +1724,23 @@ function GridRow({
1739
1724
  onMouseEnter: () => setIsHovered(true),
1740
1725
  onMouseLeave: () => setIsHovered(false),
1741
1726
  children: [
1742
- enableSelection && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-select flex items-center px-2", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1727
+ enableSelection && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-select", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1743
1728
  "input",
1744
1729
  {
1745
1730
  type: "checkbox",
1746
1731
  checked: isSelected,
1747
1732
  onChange: handleSelectChange,
1748
1733
  disabled: isDisabled,
1749
- className: "w-4 h-4 rounded border-theme-border",
1734
+ className: "grid-row-checkbox",
1750
1735
  "aria-label": "Select row"
1751
1736
  }
1752
1737
  ) }),
1753
- enableExpansion && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expand flex items-center px-2", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1738
+ enableExpansion && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expand", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1754
1739
  "button",
1755
1740
  {
1756
1741
  onClick: handleExpandToggle,
1757
1742
  disabled: isDisabled,
1758
- className: "w-6 h-6 flex items-center justify-center rounded hover:bg-theme-tertiary",
1743
+ className: "grid-row-expand-button",
1759
1744
  "aria-label": isExpanded ? "Collapse row" : "Expand row",
1760
1745
  "aria-expanded": isExpanded,
1761
1746
  children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
@@ -1801,7 +1786,7 @@ function GridRow({
1801
1786
  align: col.align,
1802
1787
  showLabel: isMobile && showMobileLabels && col.showLabelOnMobile !== false,
1803
1788
  labelText: typeof col.header === "string" ? col.header : col.id,
1804
- className: isMobile ? "w-full sm:w-auto flex-shrink-0" : "flex-shrink-0",
1789
+ className: isMobile ? "w-full-sm flex-shrink-0" : "flex-shrink-0",
1805
1790
  sticky: col.sticky,
1806
1791
  stickyOffset,
1807
1792
  onClick: onCellClick
@@ -1812,7 +1797,7 @@ function GridRow({
1812
1797
  ]
1813
1798
  }
1814
1799
  ),
1815
- isExpanded && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expansion border-b border-theme-border bg-theme-secondary p-4", children: renderExpansion(row) })
1800
+ isExpanded && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expansion", children: renderExpansion(row) })
1816
1801
  ] });
1817
1802
  }
1818
1803
 
@@ -1977,13 +1962,13 @@ function Pagination({
1977
1962
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1978
1963
  "div",
1979
1964
  {
1980
- className: `grid-pagination flex flex-wrap items-center justify-between gap-4 px-4 py-3 border-t border-theme-border ${className}`,
1965
+ className: `grid-pagination ${className}`,
1981
1966
  style,
1982
1967
  role: "navigation",
1983
1968
  "aria-label": "Pagination",
1984
1969
  children: [
1985
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-info flex items-center gap-4", children: [
1986
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-range text-sm text-theme-secondary", children: [
1970
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-info", children: [
1971
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-range", children: [
1987
1972
  startItem,
1988
1973
  "-",
1989
1974
  endItem,
@@ -1992,8 +1977,8 @@ function Pagination({
1992
1977
  " ",
1993
1978
  totalItems
1994
1979
  ] }),
1995
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-size flex items-center gap-2", children: [
1996
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: "page-size", className: "text-sm text-theme-muted", children: [
1980
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-size", children: [
1981
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: "page-size", children: [
1997
1982
  translations.rowsPerPage,
1998
1983
  ":"
1999
1984
  ] }),
@@ -2003,19 +1988,19 @@ function Pagination({
2003
1988
  id: "page-size",
2004
1989
  value: pageSize,
2005
1990
  onChange: handlePageSizeChange,
2006
- className: "px-2 py-1 text-sm rounded border border-theme-border bg-theme-primary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary",
1991
+ className: "px-2 py-1 text-sm rounded",
2007
1992
  children: pageSizeOptions.map((size) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: size, children: size }, size))
2008
1993
  }
2009
1994
  )
2010
1995
  ] })
2011
1996
  ] }),
2012
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-controls flex items-center gap-1", children: [
1997
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-controls", children: [
2013
1998
  showFirstLast && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2014
1999
  "button",
2015
2000
  {
2016
2001
  onClick: handleFirstPage,
2017
2002
  disabled: !canGoPrevious,
2018
- className: "p-2 rounded hover:bg-theme-hover disabled:opacity-50 disabled:cursor-not-allowed text-theme-secondary",
2003
+ className: "p-2 rounded text-theme-secondary",
2019
2004
  "aria-label": translations.first,
2020
2005
  children: "<<"
2021
2006
  }
@@ -2025,17 +2010,17 @@ function Pagination({
2025
2010
  {
2026
2011
  onClick: handlePreviousPage,
2027
2012
  disabled: !canGoPrevious,
2028
- className: "p-2 rounded hover:bg-theme-hover disabled:opacity-50 disabled:cursor-not-allowed text-theme-secondary",
2013
+ className: "p-2 rounded text-theme-secondary",
2029
2014
  "aria-label": translations.previous,
2030
2015
  children: "<"
2031
2016
  }
2032
2017
  ),
2033
- showPageNumbers && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grid-pagination-pages flex items-center gap-1", children: pageNumbers.map(
2018
+ showPageNumbers && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grid-pagination-pages", children: pageNumbers.map(
2034
2019
  (pageNum, index) => pageNum === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "px-2 text-theme-muted", children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2035
2020
  "button",
2036
2021
  {
2037
2022
  onClick: () => onPageChange(pageNum),
2038
- className: `min-w-[32px] h-8 px-2 rounded text-sm transition-colors ${pageNum === page ? "bg-accent-primary text-white" : "hover:bg-theme-hover text-theme-secondary"}`,
2023
+ className: `min-w-[32px] h-8 px-2 rounded text-sm ${pageNum === page ? "active" : ""}`,
2039
2024
  "aria-current": pageNum === page ? "page" : void 0,
2040
2025
  children: pageNum
2041
2026
  },
@@ -2047,7 +2032,7 @@ function Pagination({
2047
2032
  {
2048
2033
  onClick: handleNextPage,
2049
2034
  disabled: !canGoNext,
2050
- className: "p-2 rounded hover:bg-theme-hover disabled:opacity-50 disabled:cursor-not-allowed text-theme-secondary",
2035
+ className: "p-2 rounded text-theme-secondary",
2051
2036
  "aria-label": translations.next,
2052
2037
  children: ">"
2053
2038
  }
@@ -2057,7 +2042,7 @@ function Pagination({
2057
2042
  {
2058
2043
  onClick: handleLastPage,
2059
2044
  disabled: !canGoNext,
2060
- className: "p-2 rounded hover:bg-theme-hover disabled:opacity-50 disabled:cursor-not-allowed text-theme-secondary",
2045
+ className: "p-2 rounded text-theme-secondary",
2061
2046
  "aria-label": translations.last,
2062
2047
  children: ">>"
2063
2048
  }
@@ -2080,7 +2065,7 @@ function SkeletonCell({ width = DEFAULT_COLUMN_WIDTH, height = 16, animate = tru
2080
2065
  children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2081
2066
  "div",
2082
2067
  {
2083
- className: `rounded bg-theme-tertiary ${animate ? "animate-pulse" : ""}`,
2068
+ className: `rounded ${animate ? "animate-pulse" : ""}`,
2084
2069
  style: { height: `${height}px`, width: "80%" }
2085
2070
  }
2086
2071
  )
@@ -2088,7 +2073,7 @@ function SkeletonCell({ width = DEFAULT_COLUMN_WIDTH, height = 16, animate = tru
2088
2073
  );
2089
2074
  }
2090
2075
  function SkeletonRow({ columns, columnWidths, height = 16, animate = true }) {
2091
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-row flex border-b border-theme-border", children: Array.from({ length: columns }).map((_, index) => {
2076
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-row", children: Array.from({ length: columns }).map((_, index) => {
2092
2077
  var _a;
2093
2078
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2094
2079
  SkeletonCell,
@@ -2112,7 +2097,7 @@ function Skeleton({
2112
2097
  animate = true
2113
2098
  }) {
2114
2099
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `grid-skeleton ${className}`, style, role: "status", "aria-label": "Loading", children: [
2115
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-header flex border-b border-theme-border bg-theme-secondary", children: Array.from({ length: columns }).map((_, index) => {
2100
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-header", children: Array.from({ length: columns }).map((_, index) => {
2116
2101
  var _a;
2117
2102
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2118
2103
  "div",
@@ -2122,7 +2107,7 @@ function Skeleton({
2122
2107
  children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2123
2108
  "div",
2124
2109
  {
2125
- className: `rounded bg-theme-tertiary ${animate ? "animate-pulse" : ""}`,
2110
+ className: `rounded ${animate ? "animate-pulse" : ""}`,
2126
2111
  style: { height: "12px", width: "60%" }
2127
2112
  }
2128
2113
  )
@@ -2160,15 +2145,15 @@ function EmptyState({
2160
2145
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2161
2146
  "div",
2162
2147
  {
2163
- className: `grid-empty-state flex flex-col items-center justify-center py-16 px-8 text-center ${className}`,
2148
+ className: `grid-empty-state ${className}`,
2164
2149
  style,
2165
2150
  role: "status",
2166
2151
  children: [
2167
- icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon mb-4 text-theme-muted text-4xl", children: icon }),
2168
- !icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon mb-4 text-theme-muted", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2152
+ icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon", children: icon }),
2153
+ !icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2169
2154
  "svg",
2170
2155
  {
2171
- className: "w-16 h-16",
2156
+ className: "icon-lg",
2172
2157
  fill: "none",
2173
2158
  viewBox: "0 0 24 24",
2174
2159
  stroke: "currentColor",
@@ -2183,8 +2168,8 @@ function EmptyState({
2183
2168
  )
2184
2169
  }
2185
2170
  ) }),
2186
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "grid-empty-title text-lg font-medium text-theme-primary mb-2", children: displayTitle }),
2187
- displayDescription && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "grid-empty-description text-sm text-theme-muted max-w-sm mb-4", children: displayDescription }),
2171
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "grid-empty-title", children: displayTitle }),
2172
+ displayDescription && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "grid-empty-description", children: displayDescription }),
2188
2173
  action && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-action", children: action })
2189
2174
  ]
2190
2175
  }
@@ -2195,13 +2180,13 @@ function EmptyState({
2195
2180
  var import_react14 = require("react");
2196
2181
  var import_jsx_runtime10 = require("react/jsx-runtime");
2197
2182
  function DrawerHeader({ title, onClose }) {
2198
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-header flex items-center justify-between px-4 py-3 border-b border-theme-border", children: [
2199
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { className: "text-lg font-medium text-theme-primary", children: title }),
2183
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-header", children: [
2184
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { children: title }),
2200
2185
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2201
2186
  "button",
2202
2187
  {
2203
2188
  onClick: onClose,
2204
- className: "p-2 rounded hover:bg-theme-hover text-theme-secondary",
2189
+ className: "p-2 rounded",
2205
2190
  "aria-label": "Close",
2206
2191
  children: "X"
2207
2192
  }
@@ -2214,8 +2199,8 @@ function FilterContent() {
2214
2199
  const handleClearAll = (0, import_react14.useCallback)(() => {
2215
2200
  actions.clearFilters();
2216
2201
  }, [actions]);
2217
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-filter-content p-4 space-y-4", children: [
2218
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [
2202
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-filter-content", children: [
2203
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
2219
2204
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-sm text-theme-muted", children: [
2220
2205
  filters.length,
2221
2206
  " ",
@@ -2226,7 +2211,7 @@ function FilterContent() {
2226
2211
  "button",
2227
2212
  {
2228
2213
  onClick: handleClearAll,
2229
- className: "text-sm text-accent-primary hover:underline",
2214
+ className: "text-sm",
2230
2215
  children: translations.clearAll
2231
2216
  }
2232
2217
  )
@@ -2250,7 +2235,7 @@ function FilterContent() {
2250
2235
  }
2251
2236
  },
2252
2237
  placeholder: `${translations.filter} ${headerText}...`,
2253
- className: "w-full px-3 py-2 text-sm rounded border border-theme-border bg-theme-primary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary"
2238
+ className: "w-full px-3 py-2 text-sm rounded"
2254
2239
  }
2255
2240
  )
2256
2241
  ] }, col.id);
@@ -2263,8 +2248,8 @@ function SortContent() {
2263
2248
  const handleClearAll = (0, import_react14.useCallback)(() => {
2264
2249
  actions.clearSorting();
2265
2250
  }, [actions]);
2266
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-sort-content p-4 space-y-4", children: [
2267
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [
2251
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-sort-content", children: [
2252
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
2268
2253
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-sm text-theme-muted", children: [
2269
2254
  sorting.length,
2270
2255
  " ",
@@ -2275,7 +2260,7 @@ function SortContent() {
2275
2260
  "button",
2276
2261
  {
2277
2262
  onClick: handleClearAll,
2278
- className: "text-sm text-accent-primary hover:underline",
2263
+ className: "text-sm",
2279
2264
  children: translations.clearAll
2280
2265
  }
2281
2266
  )
@@ -2287,7 +2272,7 @@ function SortContent() {
2287
2272
  "button",
2288
2273
  {
2289
2274
  onClick: () => actions.toggleSorting(col.id),
2290
- className: `w-full flex items-center justify-between px-3 py-2 rounded border transition-colors ${sortItem ? "border-accent-primary bg-accent-primary/10" : "border-theme-border hover:bg-theme-hover"}`,
2275
+ className: `w-full px-3 py-2 rounded ${sortItem ? "active" : ""}`,
2291
2276
  children: [
2292
2277
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-primary", children: headerText }),
2293
2278
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs text-theme-muted", children: (sortItem == null ? void 0 : sortItem.direction) === "asc" ? translations.sortAsc : (sortItem == null ? void 0 : sortItem.direction) === "desc" ? translations.sortDesc : "-" })
@@ -2301,14 +2286,14 @@ function SortContent() {
2301
2286
  function ColumnsContent() {
2302
2287
  const { state, actions } = useTableContext();
2303
2288
  const { translations, columns, columnStates } = state;
2304
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-columns-content p-4 space-y-4", children: [
2305
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [
2289
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-columns-content", children: [
2290
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
2306
2291
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-muted", children: translations.showColumns }),
2307
2292
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2308
2293
  "button",
2309
2294
  {
2310
2295
  onClick: actions.resetColumns,
2311
- className: "text-sm text-accent-primary hover:underline",
2296
+ className: "text-sm",
2312
2297
  children: translations.resetColumns
2313
2298
  }
2314
2299
  )
@@ -2320,7 +2305,7 @@ function ColumnsContent() {
2320
2305
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
2321
2306
  "label",
2322
2307
  {
2323
- className: "flex items-center gap-3 px-3 py-2 rounded hover:bg-theme-hover cursor-pointer",
2308
+ className: "px-3 py-2 rounded cursor-pointer",
2324
2309
  children: [
2325
2310
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2326
2311
  "input",
@@ -2328,7 +2313,7 @@ function ColumnsContent() {
2328
2313
  type: "checkbox",
2329
2314
  checked: isVisible,
2330
2315
  onChange: () => actions.toggleColumnVisibility(col.id),
2331
- className: "w-4 h-4 rounded border-theme-border"
2316
+ className: "w-4 h-4 rounded"
2332
2317
  }
2333
2318
  ),
2334
2319
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-primary", children: headerText })
@@ -2373,11 +2358,11 @@ function MobileDrawer({
2373
2358
  if (!isOpen || !content) {
2374
2359
  return null;
2375
2360
  }
2376
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `mobile-drawer-container fixed inset-0 z-50 ${className}`, style, children: [
2361
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `mobile-drawer-container ${className}`, style, children: [
2377
2362
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2378
2363
  "div",
2379
2364
  {
2380
- className: "mobile-drawer-overlay absolute inset-0 bg-black transition-opacity",
2365
+ className: "mobile-drawer-overlay",
2381
2366
  style: {
2382
2367
  opacity: DRAWER_OVERLAY_OPACITY,
2383
2368
  transitionDuration: `${DRAWER_ANIMATION_DURATION}ms`
@@ -2389,7 +2374,7 @@ function MobileDrawer({
2389
2374
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
2390
2375
  "div",
2391
2376
  {
2392
- className: "mobile-drawer absolute bottom-0 left-0 right-0 bg-theme-primary rounded-t-2xl shadow-2xl max-h-[80vh] overflow-hidden flex flex-col",
2377
+ className: "mobile-drawer",
2393
2378
  style: {
2394
2379
  transitionDuration: `${DRAWER_ANIMATION_DURATION}ms`
2395
2380
  },
@@ -2398,7 +2383,7 @@ function MobileDrawer({
2398
2383
  "aria-labelledby": "drawer-title",
2399
2384
  children: [
2400
2385
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DrawerHeader, { title: DRAWER_TITLES[content], onClose }),
2401
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-content flex-1 overflow-y-auto", children: [
2386
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-content", children: [
2402
2387
  content === "filter" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FilterContent, {}),
2403
2388
  content === "sort" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SortContent, {}),
2404
2389
  content === "columns" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ColumnsContent, {})
@@ -2520,7 +2505,7 @@ function GridTableContent({
2520
2505
  "button",
2521
2506
  {
2522
2507
  onClick: onRetry,
2523
- className: "px-4 py-2 bg-accent-primary text-white rounded hover:bg-accent-primary/90",
2508
+ className: "px-4 py-2 bg-accent-primary text-white rounded hover:opacity-90 cursor-pointer",
2524
2509
  children: state.translations.retry
2525
2510
  }
2526
2511
  )
@@ -2548,17 +2533,17 @@ function GridTableContent({
2548
2533
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2549
2534
  "div",
2550
2535
  {
2551
- className: `grid-table bg-theme-primary rounded-lg border border-theme-border overflow-hidden ${classNames.root || ""} ${className}`,
2536
+ className: `grid-table rounded-lg border overflow-hidden ${classNames.root || ""} ${className}`,
2552
2537
  style: containerStyle,
2553
2538
  role: "table",
2554
2539
  children: [
2555
2540
  renderHeader && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "grid-table-custom-header", children: renderHeader() }),
2556
- showGlobalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid-table-toolbar flex items-center gap-4 px-4 py-3 border-b border-theme-border", children: [
2557
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex-1 relative", children: [
2541
+ showGlobalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid-table-toolbar", children: [
2542
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "toolbar-search-wrapper", children: [
2558
2543
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2559
2544
  "svg",
2560
2545
  {
2561
- className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-theme-muted",
2546
+ className: "search-icon",
2562
2547
  fill: "none",
2563
2548
  viewBox: "0 0 24 24",
2564
2549
  stroke: "currentColor",
@@ -2573,16 +2558,16 @@ function GridTableContent({
2573
2558
  value: state.globalFilter,
2574
2559
  onChange: (e) => actions.setGlobalFilter(e.target.value),
2575
2560
  placeholder: state.translations.search,
2576
- className: "w-full pl-10 pr-3 py-2 text-sm rounded border border-theme-border bg-theme-secondary text-theme-primary focus:outline-none focus:ring-2 focus:ring-accent-primary"
2561
+ className: "w-full pl-10 pr-3 py-2 text-sm rounded"
2577
2562
  }
2578
2563
  ),
2579
2564
  state.globalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2580
2565
  "button",
2581
2566
  {
2582
2567
  onClick: () => actions.setGlobalFilter(""),
2583
- className: "absolute right-3 top-1/2 -translate-y-1/2 text-theme-muted hover:text-theme-primary",
2568
+ className: "clear-button",
2584
2569
  "aria-label": "Clear search",
2585
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) })
2570
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) })
2586
2571
  }
2587
2572
  )
2588
2573
  ] }),
@@ -2590,9 +2575,9 @@ function GridTableContent({
2590
2575
  "button",
2591
2576
  {
2592
2577
  onClick: () => actions.clearFilters(),
2593
- className: "flex items-center gap-2 px-3 py-2 text-sm rounded border border-theme-border hover:bg-theme-hover text-theme-secondary",
2578
+ className: "filter-badge",
2594
2579
  children: [
2595
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }),
2580
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }),
2596
2581
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
2597
2582
  state.filters.length,
2598
2583
  " filter",
@@ -2601,32 +2586,32 @@ function GridTableContent({
2601
2586
  ]
2602
2587
  }
2603
2588
  ),
2604
- shouldShowMobileView && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2", children: [
2589
+ shouldShowMobileView && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "toolbar-actions", children: [
2605
2590
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2606
2591
  "button",
2607
2592
  {
2608
2593
  onClick: () => actions.openMobileDrawer("filter"),
2609
- className: "p-2 rounded border border-theme-border hover:bg-theme-hover",
2594
+ className: "toolbar-action-button",
2610
2595
  "aria-label": state.translations.filter,
2611
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z" }) })
2596
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z" }) })
2612
2597
  }
2613
2598
  ),
2614
2599
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2615
2600
  "button",
2616
2601
  {
2617
2602
  onClick: () => actions.openMobileDrawer("sort"),
2618
- className: "p-2 rounded border border-theme-border hover:bg-theme-hover",
2603
+ className: "toolbar-action-button",
2619
2604
  "aria-label": state.translations.sort,
2620
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" }) })
2605
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" }) })
2621
2606
  }
2622
2607
  ),
2623
2608
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2624
2609
  "button",
2625
2610
  {
2626
2611
  onClick: () => actions.openMobileDrawer("columns"),
2627
- className: "p-2 rounded border border-theme-border hover:bg-theme-hover",
2612
+ className: "toolbar-action-button",
2628
2613
  "aria-label": state.translations.columns,
2629
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 17V7m0 10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2h2a2 2 0 012 2m0 10a2 2 0 002 2h2a2 2 0 002-2M9 7a2 2 0 012-2h2a2 2 0 012 2m0 10V7m0 10a2 2 0 002 2h2a2 2 0 002-2V7a2 2 0 00-2-2h-2a2 2 0 00-2 2" }) })
2614
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 17V7m0 10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2h2a2 2 0 012 2m0 10a2 2 0 002 2h2a2 2 0 002-2M9 7a2 2 0 012-2h2a2 2 0 012 2m0 10V7m0 10a2 2 0 002 2h2a2 2 0 002-2V7a2 2 0 00-2-2h-2a2 2 0 00-2 2" }) })
2630
2615
  }
2631
2616
  )
2632
2617
  ] })