@dreamtree-org/twreact-ui 1.1.25 → 1.1.26

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.esm.js CHANGED
@@ -3967,16 +3967,20 @@ function useClickOutside(refs, isActive, onClickOutside) {
3967
3967
  * Supports both header (icon-only) and footer (with page numbers) variants
3968
3968
  */
3969
3969
 
3970
+ var DEFAULT_ROW_HOVER$1 = "bg-gray-50";
3971
+
3970
3972
  // Header pagination (compact, icon-based)
3971
3973
  function PaginationHeader(_ref) {
3974
+ var _theme$rowHover;
3972
3975
  var currentPage = _ref.currentPage,
3973
3976
  totalPages = _ref.totalPages,
3974
3977
  onPageChange = _ref.onPageChange,
3975
3978
  theme = _ref.theme;
3979
+ var rowHover = (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : DEFAULT_ROW_HOVER$1;
3976
3980
  return /*#__PURE__*/React__default.createElement("div", {
3977
3981
  className: "flex items-center gap-1"
3978
3982
  }, totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
3979
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
3983
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
3980
3984
  disabled: currentPage === 1,
3981
3985
  onClick: function onClick() {
3982
3986
  return onPageChange(1);
@@ -3985,7 +3989,7 @@ function PaginationHeader(_ref) {
3985
3989
  }, /*#__PURE__*/React__default.createElement(ChevronsLeft, {
3986
3990
  className: "size-4 md:size-5 text-primary-800"
3987
3991
  })), /*#__PURE__*/React__default.createElement("button", {
3988
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
3992
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
3989
3993
  disabled: currentPage === 1,
3990
3994
  onClick: function onClick() {
3991
3995
  return onPageChange(Math.max(1, currentPage - 1));
@@ -3994,7 +3998,7 @@ function PaginationHeader(_ref) {
3994
3998
  }, /*#__PURE__*/React__default.createElement(ChevronLeft, {
3995
3999
  className: "size-4 md:size-5 text-primary-800"
3996
4000
  })), /*#__PURE__*/React__default.createElement("button", {
3997
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4001
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
3998
4002
  disabled: currentPage === totalPages,
3999
4003
  onClick: function onClick() {
4000
4004
  return onPageChange(Math.min(totalPages, currentPage + 1));
@@ -4003,7 +4007,7 @@ function PaginationHeader(_ref) {
4003
4007
  }, /*#__PURE__*/React__default.createElement(ChevronRight, {
4004
4008
  className: "size-4 md:size-5 text-primary-800"
4005
4009
  })), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
4006
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4010
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
4007
4011
  disabled: currentPage === totalPages,
4008
4012
  onClick: function onClick() {
4009
4013
  return onPageChange(totalPages);
@@ -4016,11 +4020,13 @@ function PaginationHeader(_ref) {
4016
4020
 
4017
4021
  // Footer pagination (with page numbers)
4018
4022
  function PaginationFooter(_ref2) {
4023
+ var _theme$rowHover2;
4019
4024
  var currentPage = _ref2.currentPage,
4020
4025
  totalPages = _ref2.totalPages,
4021
4026
  onPageChange = _ref2.onPageChange,
4022
4027
  isMobileView = _ref2.isMobileView,
4023
4028
  theme = _ref2.theme;
4029
+ var rowHover = (_theme$rowHover2 = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover2 !== void 0 ? _theme$rowHover2 : DEFAULT_ROW_HOVER$1;
4024
4030
  var visiblePageCount = isMobileView ? 5 : 3;
4025
4031
  return /*#__PURE__*/React__default.createElement("div", {
4026
4032
  className: "p-4 border-t"
@@ -4031,7 +4037,7 @@ function PaginationFooter(_ref2) {
4031
4037
  }, "Page ", currentPage, " of ", totalPages), /*#__PURE__*/React__default.createElement("div", {
4032
4038
  className: "flex items-center gap-1 sm:gap-2"
4033
4039
  }, totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
4034
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4040
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4035
4041
  disabled: currentPage === 1,
4036
4042
  onClick: function onClick() {
4037
4043
  return onPageChange(1);
@@ -4040,7 +4046,7 @@ function PaginationFooter(_ref2) {
4040
4046
  }, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronsLeft, {
4041
4047
  className: "size-4 text-primary-800"
4042
4048
  }) : "First"), /*#__PURE__*/React__default.createElement("button", {
4043
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4049
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4044
4050
  disabled: currentPage === 1,
4045
4051
  onClick: function onClick() {
4046
4052
  return onPageChange(Math.max(1, currentPage - 1));
@@ -4068,13 +4074,13 @@ function PaginationFooter(_ref2) {
4068
4074
  className: cn$1("h-8 w-8 rounded-lg md:rounded-md text-sm", _defineProperty$4({
4069
4075
  "bg-primary-600 text-white": pageNum === currentPage,
4070
4076
  "border border-gray-300": pageNum !== currentPage
4071
- }, "hover:" + theme.rowHover, pageNum !== currentPage)),
4077
+ }, "hover:" + rowHover, pageNum !== currentPage)),
4072
4078
  onClick: function onClick() {
4073
4079
  return onPageChange(pageNum);
4074
4080
  }
4075
4081
  }, pageNum);
4076
4082
  })), /*#__PURE__*/React__default.createElement("button", {
4077
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4083
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4078
4084
  disabled: currentPage === totalPages,
4079
4085
  onClick: function onClick() {
4080
4086
  return onPageChange(Math.min(totalPages, currentPage + 1));
@@ -4083,7 +4089,7 @@ function PaginationFooter(_ref2) {
4083
4089
  }, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronRight, {
4084
4090
  className: "size-4 text-primary-800"
4085
4091
  }) : "Next"), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
4086
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4092
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4087
4093
  disabled: currentPage === totalPages,
4088
4094
  onClick: function onClick() {
4089
4095
  return onPageChange(totalPages);
@@ -4094,14 +4100,18 @@ function PaginationFooter(_ref2) {
4094
4100
  }) : "Last"))));
4095
4101
  }
4096
4102
 
4103
+ var DEFAULT_ROW_HOVER = "bg-gray-50";
4104
+
4097
4105
  /**
4098
4106
  * Column visibility toggle menu
4099
4107
  */
4100
4108
  function ColumnMenu(_ref) {
4109
+ var _theme$rowHover;
4101
4110
  var columns = _ref.columns,
4102
4111
  onToggle = _ref.onToggle,
4103
4112
  menuRef = _ref.menuRef,
4104
4113
  theme = _ref.theme;
4114
+ var rowHover = (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : DEFAULT_ROW_HOVER;
4105
4115
  return /*#__PURE__*/React__default.createElement("div", {
4106
4116
  ref: menuRef,
4107
4117
  className: "absolute right-4 mt-2 w-56 z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-3 lg:block sm:block hidden",
@@ -4117,7 +4127,7 @@ function ColumnMenu(_ref) {
4117
4127
  key: col.key,
4118
4128
  className: cn$1(_defineProperty$4({
4119
4129
  "flex cursor-pointer items-center gap-2 px-2 py-1.5 rounded": true
4120
- }, "hover:" + theme.rowHover, true))
4130
+ }, "hover:" + rowHover, true))
4121
4131
  }, /*#__PURE__*/React__default.createElement("input", {
4122
4132
  type: "checkbox",
4123
4133
  checked: col.isVisible !== false,
@@ -4190,14 +4200,20 @@ function MobileFilters(_ref) {
4190
4200
  })));
4191
4201
  }
4192
4202
 
4203
+ var DEFAULT_MENU_BG = "bg-white";
4204
+ var DEFAULT_MENU_ITEM_HOVER = "hover:bg-gray-50";
4193
4205
  function ActionMenu(_ref) {
4206
+ var _theme$menuBg, _theme$menuItemHover;
4194
4207
  var _ref$actions = _ref.actions,
4195
4208
  actions = _ref$actions === void 0 ? [] : _ref$actions,
4196
4209
  row = _ref.row,
4197
4210
  onAction = _ref.onAction,
4198
4211
  onClose = _ref.onClose,
4199
4212
  menuRef = _ref.menuRef,
4200
- anchorEl = _ref.anchorEl;
4213
+ anchorEl = _ref.anchorEl,
4214
+ theme = _ref.theme;
4215
+ var menuBg = (_theme$menuBg = theme === null || theme === void 0 ? void 0 : theme.menuBg) !== null && _theme$menuBg !== void 0 ? _theme$menuBg : DEFAULT_MENU_BG;
4216
+ var menuItemHover = (_theme$menuItemHover = theme === null || theme === void 0 ? void 0 : theme.menuItemHover) !== null && _theme$menuItemHover !== void 0 ? _theme$menuItemHover : DEFAULT_MENU_ITEM_HOVER;
4201
4217
  var _useState = useState({
4202
4218
  left: 0,
4203
4219
  top: 0,
@@ -4320,7 +4336,7 @@ function ActionMenu(_ref) {
4320
4336
  transformOrigin: style.transformOrigin,
4321
4337
  opacity: style.opacity
4322
4338
  },
4323
- className: "absolute bg-white z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out",
4339
+ className: cn$1("absolute z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out", menuBg),
4324
4340
  onClick: function onClick(e) {
4325
4341
  return e.stopPropagation();
4326
4342
  }
@@ -4333,14 +4349,14 @@ function ActionMenu(_ref) {
4333
4349
  key: action.name,
4334
4350
  className: "px-1"
4335
4351
  }, action.render ? /*#__PURE__*/React__default.createElement("button", {
4336
- className: "w-full text-left px-3 py-2 text-sm bg-white opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md",
4352
+ className: cn$1("w-full text-left px-3 py-2 text-sm opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md", menuBg, menuItemHover),
4337
4353
  onClick: function onClick(e) {
4338
4354
  e.stopPropagation();
4339
4355
  onAction === null || onAction === void 0 || onAction(action, row);
4340
4356
  onClose === null || onClose === void 0 || onClose();
4341
4357
  }
4342
4358
  }, action.render(row)) : /*#__PURE__*/React__default.createElement("button", {
4343
- className: "w-full text-left px-3 py-2 text-sm bg-white opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md",
4359
+ className: cn$1("w-full text-left px-3 py-2 text-sm opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md", menuBg, menuItemHover),
4344
4360
  onClick: function onClick(e) {
4345
4361
  e.stopPropagation();
4346
4362
  onAction === null || onAction === void 0 || onAction(action, row);
@@ -4356,6 +4372,7 @@ function ActionMenu(_ref) {
4356
4372
  * Desktop table row component
4357
4373
  */
4358
4374
  function TableRow(_ref) {
4375
+ var _theme$accentColor, _theme$rowHover;
4359
4376
  var row = _ref.row,
4360
4377
  rowIndexInPage = _ref.rowIndexInPage,
4361
4378
  startIndex = _ref.startIndex,
@@ -4475,12 +4492,13 @@ function TableRow(_ref) {
4475
4492
  },
4476
4493
  menuRef: actionMenuRef,
4477
4494
  anchorEl: activeAnchorEl,
4478
- onClose: closeActionMenu
4495
+ onClose: closeActionMenu,
4496
+ theme: theme
4479
4497
  })))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
4480
4498
  colSpan: visibleCount,
4481
4499
  className: cn$1(_defineProperty$4(_defineProperty$4({
4482
4500
  "px-6 py-4": true
4483
- }, theme.accentColor, true), theme.rowHover, true))
4501
+ }, (_theme$accentColor = theme === null || theme === void 0 ? void 0 : theme.accentColor) !== null && _theme$accentColor !== void 0 ? _theme$accentColor : "bg-gray-50", true), (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : "bg-gray-50", true))
4484
4502
  }, /*#__PURE__*/React__default.createElement(DetailsComponent, {
4485
4503
  row: row,
4486
4504
  index: globalIndex
@@ -4499,6 +4517,7 @@ function MobileCard(_ref) {
4499
4517
  rowClass = _ref.rowClass,
4500
4518
  stripedRows = _ref.stripedRows,
4501
4519
  stripedColors = _ref.stripedColors,
4520
+ theme = _ref.theme,
4502
4521
  onRowClick = _ref.onRowClick,
4503
4522
  hasDetails = _ref.hasDetails,
4504
4523
  selectable = _ref.selectable,
@@ -4590,7 +4609,8 @@ function MobileCard(_ref) {
4590
4609
  },
4591
4610
  menuRef: actionMenuRef,
4592
4611
  anchorEl: activeAnchorEl,
4593
- onClose: closeActionMenu
4612
+ onClose: closeActionMenu,
4613
+ theme: theme
4594
4614
  }))), /*#__PURE__*/React__default.createElement("div", {
4595
4615
  className: "p-4"
4596
4616
  }, visibleColumns.map(function (column, colIndex) {
@@ -4625,7 +4645,9 @@ var DEFAULT_COLUMNS = [];
4625
4645
  var DEFAULT_THEME = {
4626
4646
  stripedColors: ["bg-[#ffffff]", "bg-[#f7fafc]"],
4627
4647
  rowHover: "bg-gray-50",
4628
- accentColor: "bg-gray-50"
4648
+ accentColor: "bg-gray-50",
4649
+ menuBg: "bg-white",
4650
+ menuItemHover: "hover:bg-gray-50"
4629
4651
  };
4630
4652
  var Table = function Table(_ref) {
4631
4653
  var _ref$data = _ref.data,
@@ -5132,7 +5154,7 @@ var Table = function Table(_ref) {
5132
5154
  currentPage: currentPage,
5133
5155
  totalPages: totalPages,
5134
5156
  onPageChange: handlePageChange,
5135
- theme: theme
5157
+ theme: safeTheme
5136
5158
  }))), globalSearch && /*#__PURE__*/React__default.createElement("div", {
5137
5159
  className: "p-4 border-b"
5138
5160
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -5175,13 +5197,13 @@ var Table = function Table(_ref) {
5175
5197
  columns: columnsState,
5176
5198
  onToggle: toggleColumnVisibility,
5177
5199
  menuRef: columnMenuRef,
5178
- theme: theme
5200
+ theme: safeTheme
5179
5201
  }), !isMobileView && /*#__PURE__*/React__default.createElement("div", {
5180
5202
  className: "overflow-x-auto overflow-y-visible"
5181
5203
  }, /*#__PURE__*/React__default.createElement("table", _extends({
5182
5204
  className: cn$1("min-w-full divide-y divide-gray-200", className)
5183
5205
  }, props), /*#__PURE__*/React__default.createElement("thead", {
5184
- className: theme.accentColor
5206
+ className: safeTheme.accentColor
5185
5207
  }, /*#__PURE__*/React__default.createElement("tr", null, hasDetails && /*#__PURE__*/React__default.createElement("th", {
5186
5208
  className: "w-8 px-4 py-3"
5187
5209
  }), showSerial && /*#__PURE__*/React__default.createElement("th", {
@@ -5321,7 +5343,7 @@ var Table = function Table(_ref) {
5321
5343
  totalPages: totalPages,
5322
5344
  onPageChange: handlePageChange,
5323
5345
  isMobileView: isMobileView,
5324
- theme: theme
5346
+ theme: safeTheme
5325
5347
  }));
5326
5348
  };
5327
5349
 
package/dist/index.js CHANGED
@@ -3987,16 +3987,20 @@ function useClickOutside(refs, isActive, onClickOutside) {
3987
3987
  * Supports both header (icon-only) and footer (with page numbers) variants
3988
3988
  */
3989
3989
 
3990
+ var DEFAULT_ROW_HOVER$1 = "bg-gray-50";
3991
+
3990
3992
  // Header pagination (compact, icon-based)
3991
3993
  function PaginationHeader(_ref) {
3994
+ var _theme$rowHover;
3992
3995
  var currentPage = _ref.currentPage,
3993
3996
  totalPages = _ref.totalPages,
3994
3997
  onPageChange = _ref.onPageChange,
3995
3998
  theme = _ref.theme;
3999
+ var rowHover = (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : DEFAULT_ROW_HOVER$1;
3996
4000
  return /*#__PURE__*/React.createElement("div", {
3997
4001
  className: "flex items-center gap-1"
3998
4002
  }, totalPages >= 4 && /*#__PURE__*/React.createElement("button", {
3999
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4003
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
4000
4004
  disabled: currentPage === 1,
4001
4005
  onClick: function onClick() {
4002
4006
  return onPageChange(1);
@@ -4005,7 +4009,7 @@ function PaginationHeader(_ref) {
4005
4009
  }, /*#__PURE__*/React.createElement(ChevronsLeft, {
4006
4010
  className: "size-4 md:size-5 text-primary-800"
4007
4011
  })), /*#__PURE__*/React.createElement("button", {
4008
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4012
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
4009
4013
  disabled: currentPage === 1,
4010
4014
  onClick: function onClick() {
4011
4015
  return onPageChange(Math.max(1, currentPage - 1));
@@ -4014,7 +4018,7 @@ function PaginationHeader(_ref) {
4014
4018
  }, /*#__PURE__*/React.createElement(ChevronLeft, {
4015
4019
  className: "size-4 md:size-5 text-primary-800"
4016
4020
  })), /*#__PURE__*/React.createElement("button", {
4017
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4021
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
4018
4022
  disabled: currentPage === totalPages,
4019
4023
  onClick: function onClick() {
4020
4024
  return onPageChange(Math.min(totalPages, currentPage + 1));
@@ -4023,7 +4027,7 @@ function PaginationHeader(_ref) {
4023
4027
  }, /*#__PURE__*/React.createElement(ChevronRight, {
4024
4028
  className: "size-4 md:size-5 text-primary-800"
4025
4029
  })), totalPages >= 4 && /*#__PURE__*/React.createElement("button", {
4026
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + theme.rowHover]),
4030
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50", ["hover:" + rowHover]),
4027
4031
  disabled: currentPage === totalPages,
4028
4032
  onClick: function onClick() {
4029
4033
  return onPageChange(totalPages);
@@ -4036,11 +4040,13 @@ function PaginationHeader(_ref) {
4036
4040
 
4037
4041
  // Footer pagination (with page numbers)
4038
4042
  function PaginationFooter(_ref2) {
4043
+ var _theme$rowHover2;
4039
4044
  var currentPage = _ref2.currentPage,
4040
4045
  totalPages = _ref2.totalPages,
4041
4046
  onPageChange = _ref2.onPageChange,
4042
4047
  isMobileView = _ref2.isMobileView,
4043
4048
  theme = _ref2.theme;
4049
+ var rowHover = (_theme$rowHover2 = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover2 !== void 0 ? _theme$rowHover2 : DEFAULT_ROW_HOVER$1;
4044
4050
  var visiblePageCount = isMobileView ? 5 : 3;
4045
4051
  return /*#__PURE__*/React.createElement("div", {
4046
4052
  className: "p-4 border-t"
@@ -4051,7 +4057,7 @@ function PaginationFooter(_ref2) {
4051
4057
  }, "Page ", currentPage, " of ", totalPages), /*#__PURE__*/React.createElement("div", {
4052
4058
  className: "flex items-center gap-1 sm:gap-2"
4053
4059
  }, totalPages >= 4 && /*#__PURE__*/React.createElement("button", {
4054
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4060
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4055
4061
  disabled: currentPage === 1,
4056
4062
  onClick: function onClick() {
4057
4063
  return onPageChange(1);
@@ -4060,7 +4066,7 @@ function PaginationFooter(_ref2) {
4060
4066
  }, isMobileView ? /*#__PURE__*/React.createElement(ChevronsLeft, {
4061
4067
  className: "size-4 text-primary-800"
4062
4068
  }) : "First"), /*#__PURE__*/React.createElement("button", {
4063
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4069
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4064
4070
  disabled: currentPage === 1,
4065
4071
  onClick: function onClick() {
4066
4072
  return onPageChange(Math.max(1, currentPage - 1));
@@ -4088,13 +4094,13 @@ function PaginationFooter(_ref2) {
4088
4094
  className: cn$1("h-8 w-8 rounded-lg md:rounded-md text-sm", _defineProperty$4({
4089
4095
  "bg-primary-600 text-white": pageNum === currentPage,
4090
4096
  "border border-gray-300": pageNum !== currentPage
4091
- }, "hover:" + theme.rowHover, pageNum !== currentPage)),
4097
+ }, "hover:" + rowHover, pageNum !== currentPage)),
4092
4098
  onClick: function onClick() {
4093
4099
  return onPageChange(pageNum);
4094
4100
  }
4095
4101
  }, pageNum);
4096
4102
  })), /*#__PURE__*/React.createElement("button", {
4097
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4103
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4098
4104
  disabled: currentPage === totalPages,
4099
4105
  onClick: function onClick() {
4100
4106
  return onPageChange(Math.min(totalPages, currentPage + 1));
@@ -4103,7 +4109,7 @@ function PaginationFooter(_ref2) {
4103
4109
  }, isMobileView ? /*#__PURE__*/React.createElement(ChevronRight, {
4104
4110
  className: "size-4 text-primary-800"
4105
4111
  }) : "Next"), totalPages >= 4 && /*#__PURE__*/React.createElement("button", {
4106
- className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + theme.rowHover]),
4112
+ className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50", isMobileView ? "p-2" : "px-4 py-2 text-sm", ["hover:" + rowHover]),
4107
4113
  disabled: currentPage === totalPages,
4108
4114
  onClick: function onClick() {
4109
4115
  return onPageChange(totalPages);
@@ -4114,14 +4120,18 @@ function PaginationFooter(_ref2) {
4114
4120
  }) : "Last"))));
4115
4121
  }
4116
4122
 
4123
+ var DEFAULT_ROW_HOVER = "bg-gray-50";
4124
+
4117
4125
  /**
4118
4126
  * Column visibility toggle menu
4119
4127
  */
4120
4128
  function ColumnMenu(_ref) {
4129
+ var _theme$rowHover;
4121
4130
  var columns = _ref.columns,
4122
4131
  onToggle = _ref.onToggle,
4123
4132
  menuRef = _ref.menuRef,
4124
4133
  theme = _ref.theme;
4134
+ var rowHover = (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : DEFAULT_ROW_HOVER;
4125
4135
  return /*#__PURE__*/React.createElement("div", {
4126
4136
  ref: menuRef,
4127
4137
  className: "absolute right-4 mt-2 w-56 z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-3 lg:block sm:block hidden",
@@ -4137,7 +4147,7 @@ function ColumnMenu(_ref) {
4137
4147
  key: col.key,
4138
4148
  className: cn$1(_defineProperty$4({
4139
4149
  "flex cursor-pointer items-center gap-2 px-2 py-1.5 rounded": true
4140
- }, "hover:" + theme.rowHover, true))
4150
+ }, "hover:" + rowHover, true))
4141
4151
  }, /*#__PURE__*/React.createElement("input", {
4142
4152
  type: "checkbox",
4143
4153
  checked: col.isVisible !== false,
@@ -4210,14 +4220,20 @@ function MobileFilters(_ref) {
4210
4220
  })));
4211
4221
  }
4212
4222
 
4223
+ var DEFAULT_MENU_BG = "bg-white";
4224
+ var DEFAULT_MENU_ITEM_HOVER = "hover:bg-gray-50";
4213
4225
  function ActionMenu(_ref) {
4226
+ var _theme$menuBg, _theme$menuItemHover;
4214
4227
  var _ref$actions = _ref.actions,
4215
4228
  actions = _ref$actions === void 0 ? [] : _ref$actions,
4216
4229
  row = _ref.row,
4217
4230
  onAction = _ref.onAction,
4218
4231
  onClose = _ref.onClose,
4219
4232
  menuRef = _ref.menuRef,
4220
- anchorEl = _ref.anchorEl;
4233
+ anchorEl = _ref.anchorEl,
4234
+ theme = _ref.theme;
4235
+ var menuBg = (_theme$menuBg = theme === null || theme === void 0 ? void 0 : theme.menuBg) !== null && _theme$menuBg !== void 0 ? _theme$menuBg : DEFAULT_MENU_BG;
4236
+ var menuItemHover = (_theme$menuItemHover = theme === null || theme === void 0 ? void 0 : theme.menuItemHover) !== null && _theme$menuItemHover !== void 0 ? _theme$menuItemHover : DEFAULT_MENU_ITEM_HOVER;
4221
4237
  var _useState = React.useState({
4222
4238
  left: 0,
4223
4239
  top: 0,
@@ -4340,7 +4356,7 @@ function ActionMenu(_ref) {
4340
4356
  transformOrigin: style.transformOrigin,
4341
4357
  opacity: style.opacity
4342
4358
  },
4343
- className: "absolute bg-white z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out",
4359
+ className: cn$1("absolute z-50 rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out", menuBg),
4344
4360
  onClick: function onClick(e) {
4345
4361
  return e.stopPropagation();
4346
4362
  }
@@ -4353,14 +4369,14 @@ function ActionMenu(_ref) {
4353
4369
  key: action.name,
4354
4370
  className: "px-1"
4355
4371
  }, action.render ? /*#__PURE__*/React.createElement("button", {
4356
- className: "w-full text-left px-3 py-2 text-sm bg-white opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md",
4372
+ className: cn$1("w-full text-left px-3 py-2 text-sm opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md", menuBg, menuItemHover),
4357
4373
  onClick: function onClick(e) {
4358
4374
  e.stopPropagation();
4359
4375
  onAction === null || onAction === void 0 || onAction(action, row);
4360
4376
  onClose === null || onClose === void 0 || onClose();
4361
4377
  }
4362
4378
  }, action.render(row)) : /*#__PURE__*/React.createElement("button", {
4363
- className: "w-full text-left px-3 py-2 text-sm bg-white opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md",
4379
+ className: cn$1("w-full text-left px-3 py-2 text-sm opacity-75 hover:opacity-100 flex items-center gap-2 rounded-md", menuBg, menuItemHover),
4364
4380
  onClick: function onClick(e) {
4365
4381
  e.stopPropagation();
4366
4382
  onAction === null || onAction === void 0 || onAction(action, row);
@@ -4376,6 +4392,7 @@ function ActionMenu(_ref) {
4376
4392
  * Desktop table row component
4377
4393
  */
4378
4394
  function TableRow(_ref) {
4395
+ var _theme$accentColor, _theme$rowHover;
4379
4396
  var row = _ref.row,
4380
4397
  rowIndexInPage = _ref.rowIndexInPage,
4381
4398
  startIndex = _ref.startIndex,
@@ -4495,12 +4512,13 @@ function TableRow(_ref) {
4495
4512
  },
4496
4513
  menuRef: actionMenuRef,
4497
4514
  anchorEl: activeAnchorEl,
4498
- onClose: closeActionMenu
4515
+ onClose: closeActionMenu,
4516
+ theme: theme
4499
4517
  })))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", {
4500
4518
  colSpan: visibleCount,
4501
4519
  className: cn$1(_defineProperty$4(_defineProperty$4({
4502
4520
  "px-6 py-4": true
4503
- }, theme.accentColor, true), theme.rowHover, true))
4521
+ }, (_theme$accentColor = theme === null || theme === void 0 ? void 0 : theme.accentColor) !== null && _theme$accentColor !== void 0 ? _theme$accentColor : "bg-gray-50", true), (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : "bg-gray-50", true))
4504
4522
  }, /*#__PURE__*/React.createElement(DetailsComponent, {
4505
4523
  row: row,
4506
4524
  index: globalIndex
@@ -4519,6 +4537,7 @@ function MobileCard(_ref) {
4519
4537
  rowClass = _ref.rowClass,
4520
4538
  stripedRows = _ref.stripedRows,
4521
4539
  stripedColors = _ref.stripedColors,
4540
+ theme = _ref.theme,
4522
4541
  onRowClick = _ref.onRowClick,
4523
4542
  hasDetails = _ref.hasDetails,
4524
4543
  selectable = _ref.selectable,
@@ -4610,7 +4629,8 @@ function MobileCard(_ref) {
4610
4629
  },
4611
4630
  menuRef: actionMenuRef,
4612
4631
  anchorEl: activeAnchorEl,
4613
- onClose: closeActionMenu
4632
+ onClose: closeActionMenu,
4633
+ theme: theme
4614
4634
  }))), /*#__PURE__*/React.createElement("div", {
4615
4635
  className: "p-4"
4616
4636
  }, visibleColumns.map(function (column, colIndex) {
@@ -4645,7 +4665,9 @@ var DEFAULT_COLUMNS = [];
4645
4665
  var DEFAULT_THEME = {
4646
4666
  stripedColors: ["bg-[#ffffff]", "bg-[#f7fafc]"],
4647
4667
  rowHover: "bg-gray-50",
4648
- accentColor: "bg-gray-50"
4668
+ accentColor: "bg-gray-50",
4669
+ menuBg: "bg-white",
4670
+ menuItemHover: "hover:bg-gray-50"
4649
4671
  };
4650
4672
  var Table = function Table(_ref) {
4651
4673
  var _ref$data = _ref.data,
@@ -5152,7 +5174,7 @@ var Table = function Table(_ref) {
5152
5174
  currentPage: currentPage,
5153
5175
  totalPages: totalPages,
5154
5176
  onPageChange: handlePageChange,
5155
- theme: theme
5177
+ theme: safeTheme
5156
5178
  }))), globalSearch && /*#__PURE__*/React.createElement("div", {
5157
5179
  className: "p-4 border-b"
5158
5180
  }, /*#__PURE__*/React.createElement("div", {
@@ -5195,13 +5217,13 @@ var Table = function Table(_ref) {
5195
5217
  columns: columnsState,
5196
5218
  onToggle: toggleColumnVisibility,
5197
5219
  menuRef: columnMenuRef,
5198
- theme: theme
5220
+ theme: safeTheme
5199
5221
  }), !isMobileView && /*#__PURE__*/React.createElement("div", {
5200
5222
  className: "overflow-x-auto overflow-y-visible"
5201
5223
  }, /*#__PURE__*/React.createElement("table", _extends({
5202
5224
  className: cn$1("min-w-full divide-y divide-gray-200", className)
5203
5225
  }, props), /*#__PURE__*/React.createElement("thead", {
5204
- className: theme.accentColor
5226
+ className: safeTheme.accentColor
5205
5227
  }, /*#__PURE__*/React.createElement("tr", null, hasDetails && /*#__PURE__*/React.createElement("th", {
5206
5228
  className: "w-8 px-4 py-3"
5207
5229
  }), showSerial && /*#__PURE__*/React.createElement("th", {
@@ -5341,7 +5363,7 @@ var Table = function Table(_ref) {
5341
5363
  totalPages: totalPages,
5342
5364
  onPageChange: handlePageChange,
5343
5365
  isMobileView: isMobileView,
5344
- theme: theme
5366
+ theme: safeTheme
5345
5367
  }));
5346
5368
  };
5347
5369
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamtree-org/twreact-ui",
3
- "version": "1.1.25",
3
+ "version": "1.1.26",
4
4
  "description": "A comprehensive React + Tailwind components library for building modern web apps",
5
5
  "author": {
6
6
  "name": "Partha Preetham Krishna",