@rufous/ui 0.2.81 → 0.2.83

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/main.cjs CHANGED
@@ -4022,8 +4022,235 @@ var RufousLogoLoader = ({ size = 80, sx, className }) => {
4022
4022
  };
4023
4023
 
4024
4024
  // lib/DataGrid/DataGrid.tsx
4025
- var import_react22 = __toESM(require("react"), 1);
4025
+ var import_react23 = __toESM(require("react"), 1);
4026
4026
  var import_lucide_react2 = require("lucide-react");
4027
+
4028
+ // lib/Tooltip/Tooltip.tsx
4029
+ var import_react22 = __toESM(require("react"), 1);
4030
+ var import_react_dom4 = __toESM(require("react-dom"), 1);
4031
+ var GAP = 8;
4032
+ function computePosition(anchor, tooltip, placement) {
4033
+ const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
4034
+ const { width: tW, height: tH } = tooltip;
4035
+ let top = 0;
4036
+ let left = 0;
4037
+ let arrowLeft;
4038
+ let arrowTop;
4039
+ switch (placement) {
4040
+ case "top":
4041
+ top = aTop - tH - GAP;
4042
+ left = aLeft + aW / 2 - tW / 2;
4043
+ arrowLeft = tW / 2 - 4;
4044
+ break;
4045
+ case "top-start":
4046
+ top = aTop - tH - GAP;
4047
+ left = aLeft;
4048
+ arrowLeft = Math.min(aW / 2, tW - 16);
4049
+ break;
4050
+ case "top-end":
4051
+ top = aTop - tH - GAP;
4052
+ left = aLeft + aW - tW;
4053
+ arrowLeft = Math.max(tW - aW / 2 - 4, 8);
4054
+ break;
4055
+ case "bottom":
4056
+ top = aTop + aH + GAP;
4057
+ left = aLeft + aW / 2 - tW / 2;
4058
+ arrowLeft = tW / 2 - 4;
4059
+ break;
4060
+ case "bottom-start":
4061
+ top = aTop + aH + GAP;
4062
+ left = aLeft;
4063
+ arrowLeft = Math.min(aW / 2, tW - 16);
4064
+ break;
4065
+ case "bottom-end":
4066
+ top = aTop + aH + GAP;
4067
+ left = aLeft + aW - tW;
4068
+ arrowLeft = Math.max(tW - aW / 2 - 4, 8);
4069
+ break;
4070
+ case "left":
4071
+ top = aTop + aH / 2 - tH / 2;
4072
+ left = aLeft - tW - GAP;
4073
+ arrowTop = tH / 2 - 4;
4074
+ break;
4075
+ case "left-start":
4076
+ top = aTop;
4077
+ left = aLeft - tW - GAP;
4078
+ arrowTop = Math.min(aH / 2, tH - 16);
4079
+ break;
4080
+ case "left-end":
4081
+ top = aTop + aH - tH;
4082
+ left = aLeft - tW - GAP;
4083
+ arrowTop = Math.max(tH - aH / 2 - 4, 8);
4084
+ break;
4085
+ case "right":
4086
+ top = aTop + aH / 2 - tH / 2;
4087
+ left = aLeft + aW + GAP;
4088
+ arrowTop = tH / 2 - 4;
4089
+ break;
4090
+ case "right-start":
4091
+ top = aTop;
4092
+ left = aLeft + aW + GAP;
4093
+ arrowTop = Math.min(aH / 2, tH - 16);
4094
+ break;
4095
+ case "right-end":
4096
+ top = aTop + aH - tH;
4097
+ left = aLeft + aW + GAP;
4098
+ arrowTop = Math.max(tH - aH / 2 - 4, 8);
4099
+ break;
4100
+ default:
4101
+ top = aTop - tH - GAP;
4102
+ left = aLeft + aW / 2 - tW / 2;
4103
+ }
4104
+ const vw = window.innerWidth;
4105
+ const vh = window.innerHeight;
4106
+ left = Math.max(8, Math.min(left, vw - tW - 8));
4107
+ top = Math.max(8, Math.min(top, vh - tH - 8));
4108
+ return { top, left, arrowLeft, arrowTop };
4109
+ }
4110
+ var Tooltip = ({
4111
+ title,
4112
+ placement = "top",
4113
+ arrow = false,
4114
+ open: controlledOpen,
4115
+ disableHoverListener = false,
4116
+ disableFocusListener = false,
4117
+ enterDelay = 100,
4118
+ leaveDelay = 0,
4119
+ children,
4120
+ followCursor = false,
4121
+ className = "",
4122
+ style,
4123
+ sx
4124
+ }) => {
4125
+ const sxClass = useSx(sx);
4126
+ const [internalOpen, setInternalOpen] = (0, import_react22.useState)(false);
4127
+ const [position, setPosition] = (0, import_react22.useState)({ top: 0, left: 0 });
4128
+ const anchorRef = (0, import_react22.useRef)(null);
4129
+ const tooltipRef = (0, import_react22.useRef)(null);
4130
+ const enterTimer = (0, import_react22.useRef)(null);
4131
+ const leaveTimer = (0, import_react22.useRef)(null);
4132
+ const cursorPos = (0, import_react22.useRef)({ x: 0, y: 0 });
4133
+ const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
4134
+ const clearTimers = (0, import_react22.useCallback)(() => {
4135
+ if (enterTimer.current) clearTimeout(enterTimer.current);
4136
+ if (leaveTimer.current) clearTimeout(leaveTimer.current);
4137
+ }, []);
4138
+ const updatePosition = (0, import_react22.useCallback)(() => {
4139
+ if (!anchorRef.current || !tooltipRef.current) return;
4140
+ const anchorRect = anchorRef.current.getBoundingClientRect();
4141
+ const tooltipRect = tooltipRef.current.getBoundingClientRect();
4142
+ if (followCursor) {
4143
+ const fakeRect = {
4144
+ top: cursorPos.current.y,
4145
+ left: cursorPos.current.x,
4146
+ right: cursorPos.current.x,
4147
+ bottom: cursorPos.current.y,
4148
+ width: 0,
4149
+ height: 0,
4150
+ x: cursorPos.current.x,
4151
+ y: cursorPos.current.y,
4152
+ toJSON: () => ({})
4153
+ };
4154
+ setPosition(computePosition(fakeRect, tooltipRect, placement));
4155
+ } else {
4156
+ setPosition(computePosition(anchorRect, tooltipRect, placement));
4157
+ }
4158
+ }, [placement, followCursor]);
4159
+ (0, import_react22.useEffect)(() => {
4160
+ if (isOpen) {
4161
+ requestAnimationFrame(() => {
4162
+ updatePosition();
4163
+ });
4164
+ }
4165
+ }, [isOpen, updatePosition]);
4166
+ const handleOpen = (0, import_react22.useCallback)(() => {
4167
+ clearTimers();
4168
+ if (enterDelay > 0) {
4169
+ enterTimer.current = setTimeout(() => {
4170
+ setInternalOpen(true);
4171
+ }, enterDelay);
4172
+ } else {
4173
+ setInternalOpen(true);
4174
+ }
4175
+ }, [enterDelay, clearTimers]);
4176
+ const handleClose = (0, import_react22.useCallback)(() => {
4177
+ clearTimers();
4178
+ if (leaveDelay > 0) {
4179
+ leaveTimer.current = setTimeout(() => {
4180
+ setInternalOpen(false);
4181
+ }, leaveDelay);
4182
+ } else {
4183
+ setInternalOpen(false);
4184
+ }
4185
+ }, [leaveDelay, clearTimers]);
4186
+ const handleMouseMove = (0, import_react22.useCallback)(
4187
+ (e) => {
4188
+ cursorPos.current = { x: e.clientX, y: e.clientY };
4189
+ if (isOpen && followCursor) {
4190
+ updatePosition();
4191
+ }
4192
+ },
4193
+ [isOpen, followCursor, updatePosition]
4194
+ );
4195
+ (0, import_react22.useEffect)(() => {
4196
+ return () => clearTimers();
4197
+ }, [clearTimers]);
4198
+ const childProps = {};
4199
+ if (!disableHoverListener) {
4200
+ childProps.onMouseEnter = handleOpen;
4201
+ childProps.onMouseLeave = handleClose;
4202
+ childProps.onMouseMove = followCursor ? handleMouseMove : void 0;
4203
+ }
4204
+ if (!disableFocusListener) {
4205
+ childProps.onFocus = handleOpen;
4206
+ childProps.onBlur = handleClose;
4207
+ }
4208
+ const tooltipClasses = [
4209
+ "rf-tooltip",
4210
+ `rf-tooltip--placement-${placement}`,
4211
+ isOpen ? "rf-tooltip--visible" : "",
4212
+ sxClass,
4213
+ className
4214
+ ].filter(Boolean).join(" ");
4215
+ const tooltipElement = /* @__PURE__ */ import_react22.default.createElement(
4216
+ "div",
4217
+ {
4218
+ ref: tooltipRef,
4219
+ className: tooltipClasses,
4220
+ style: {
4221
+ top: position.top,
4222
+ left: position.left,
4223
+ ...style
4224
+ },
4225
+ role: "tooltip",
4226
+ "aria-hidden": !isOpen
4227
+ },
4228
+ title,
4229
+ arrow && /* @__PURE__ */ import_react22.default.createElement(
4230
+ "span",
4231
+ {
4232
+ className: "rf-tooltip__arrow",
4233
+ style: {
4234
+ ...position.arrowLeft !== void 0 ? { left: position.arrowLeft } : {},
4235
+ ...position.arrowTop !== void 0 ? { top: position.arrowTop } : {}
4236
+ }
4237
+ }
4238
+ )
4239
+ );
4240
+ return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
4241
+ "span",
4242
+ {
4243
+ ref: anchorRef,
4244
+ style: { display: "inline-flex", position: "relative" },
4245
+ "aria-describedby": isOpen ? "rf-tooltip" : void 0,
4246
+ ...childProps
4247
+ },
4248
+ import_react22.default.cloneElement(children)
4249
+ ), import_react_dom4.default.createPortal(tooltipElement, document.body));
4250
+ };
4251
+ Tooltip.displayName = "Tooltip";
4252
+
4253
+ // lib/DataGrid/DataGrid.tsx
4027
4254
  var getOperatorsForType = (type) => {
4028
4255
  if (type === "date") return [
4029
4256
  { value: "is", label: "is" },
@@ -4076,11 +4303,13 @@ function DataGrid({
4076
4303
  pageSizeOptions = [5, 10, 25, 50],
4077
4304
  title,
4078
4305
  className,
4079
- sx
4306
+ sx,
4307
+ onRowDoubleClick,
4308
+ onCellDoubleClick
4080
4309
  }) {
4081
4310
  const sxClass = useSx(sx);
4082
- const [columnOverrides, setColumnOverrides] = (0, import_react22.useState)({});
4083
- const resolvedColumns = (0, import_react22.useMemo)(() => {
4311
+ const [columnOverrides, setColumnOverrides] = (0, import_react23.useState)({});
4312
+ const resolvedColumns = (0, import_react23.useMemo)(() => {
4084
4313
  return initialColumnsProp.map((col) => {
4085
4314
  const field = String(col.field || col.key || "");
4086
4315
  const override = columnOverrides[field] || {};
@@ -4093,7 +4322,7 @@ function DataGrid({
4093
4322
  };
4094
4323
  });
4095
4324
  }, [initialColumnsProp, columnOverrides]);
4096
- const [columnWidths, setColumnWidths] = (0, import_react22.useState)(() => {
4325
+ const [columnWidths, setColumnWidths] = (0, import_react23.useState)(() => {
4097
4326
  const widths = {};
4098
4327
  initialColumnsProp.forEach((col) => {
4099
4328
  const field = String(col.field || col.key || "");
@@ -4102,26 +4331,26 @@ function DataGrid({
4102
4331
  });
4103
4332
  return widths;
4104
4333
  });
4105
- const [pageSize, setPageSize] = (0, import_react22.useState)(initialPageSize);
4106
- const [sortField, setSortField] = (0, import_react22.useState)(null);
4107
- const [sortDirection, setSortDirection] = (0, import_react22.useState)(null);
4108
- const [filterText, setFilterText] = (0, import_react22.useState)("");
4109
- const [currentPage, setCurrentPage] = (0, import_react22.useState)(1);
4110
- const [columnFilters, setColumnFilters] = (0, import_react22.useState)({});
4111
- const [resizingColumn, setResizingColumn] = (0, import_react22.useState)(null);
4112
- const [startX, setStartX] = (0, import_react22.useState)(0);
4113
- const [startWidth, setStartWidth] = (0, import_react22.useState)(0);
4114
- const [activeMenu, setActiveMenu] = (0, import_react22.useState)(null);
4115
- const [menuPosition, setMenuPosition] = (0, import_react22.useState)({ top: 0, left: 0 });
4116
- const menuRef = (0, import_react22.useRef)(null);
4117
- const [showManageColumns, setShowManageColumns] = (0, import_react22.useState)(false);
4118
- const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react22.useState)(false);
4334
+ const [pageSize, setPageSize] = (0, import_react23.useState)(initialPageSize);
4335
+ const [sortField, setSortField] = (0, import_react23.useState)(null);
4336
+ const [sortDirection, setSortDirection] = (0, import_react23.useState)(null);
4337
+ const [filterText, setFilterText] = (0, import_react23.useState)("");
4338
+ const [currentPage, setCurrentPage] = (0, import_react23.useState)(1);
4339
+ const [columnFilters, setColumnFilters] = (0, import_react23.useState)({});
4340
+ const [resizingColumn, setResizingColumn] = (0, import_react23.useState)(null);
4341
+ const [startX, setStartX] = (0, import_react23.useState)(0);
4342
+ const [startWidth, setStartWidth] = (0, import_react23.useState)(0);
4343
+ const [activeMenu, setActiveMenu] = (0, import_react23.useState)(null);
4344
+ const [menuPosition, setMenuPosition] = (0, import_react23.useState)({ top: 0, left: 0 });
4345
+ const menuRef = (0, import_react23.useRef)(null);
4346
+ const [showManageColumns, setShowManageColumns] = (0, import_react23.useState)(false);
4347
+ const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react23.useState)(false);
4119
4348
  const initialFilterCol = String(initialColumnsProp[0]?.field || initialColumnsProp[0]?.key || "");
4120
- const [advancedFilters, setAdvancedFilters] = (0, import_react22.useState)([
4349
+ const [advancedFilters, setAdvancedFilters] = (0, import_react23.useState)([
4121
4350
  { column: initialFilterCol, operator: getDefaultOperator(initialColumnsProp[0]?.type), value: "", logic: "AND" }
4122
4351
  ]);
4123
- const [colSearch, setColSearch] = (0, import_react22.useState)("");
4124
- (0, import_react22.useEffect)(() => {
4352
+ const [colSearch, setColSearch] = (0, import_react23.useState)("");
4353
+ (0, import_react23.useEffect)(() => {
4125
4354
  const handleMouseMove = (e) => {
4126
4355
  if (!resizingColumn) return;
4127
4356
  const col = resolvedColumns.find((c) => String(c.field) === resizingColumn);
@@ -4141,7 +4370,7 @@ function DataGrid({
4141
4370
  document.removeEventListener("mouseup", handleMouseUp);
4142
4371
  };
4143
4372
  }, [resizingColumn, startX, startWidth, resolvedColumns]);
4144
- (0, import_react22.useEffect)(() => {
4373
+ (0, import_react23.useEffect)(() => {
4145
4374
  const handleClickOutside = (e) => {
4146
4375
  if (menuRef.current && !menuRef.current.contains(e.target)) {
4147
4376
  setActiveMenu(null);
@@ -4150,7 +4379,7 @@ function DataGrid({
4150
4379
  document.addEventListener("mousedown", handleClickOutside);
4151
4380
  return () => document.removeEventListener("mousedown", handleClickOutside);
4152
4381
  }, []);
4153
- (0, import_react22.useEffect)(() => {
4382
+ (0, import_react23.useEffect)(() => {
4154
4383
  setColumnWidths((prev) => {
4155
4384
  const next = { ...prev };
4156
4385
  initialColumnsProp.forEach((col) => {
@@ -4201,7 +4430,7 @@ function DataGrid({
4201
4430
  });
4202
4431
  setActiveMenu(null);
4203
4432
  };
4204
- const filteredData = (0, import_react22.useMemo)(() => {
4433
+ const filteredData = (0, import_react23.useMemo)(() => {
4205
4434
  return data.filter((item) => {
4206
4435
  const matchesGlobal = !filterText || Object.values(item).some(
4207
4436
  (val) => String(val).toLowerCase().includes(filterText.toLowerCase())
@@ -4305,7 +4534,7 @@ function DataGrid({
4305
4534
  return matchesGlobal && matchesAdvanced;
4306
4535
  });
4307
4536
  }, [data, filterText, advancedFilters]);
4308
- const sortedData = (0, import_react22.useMemo)(() => {
4537
+ const sortedData = (0, import_react23.useMemo)(() => {
4309
4538
  if (!sortField || !sortDirection) return filteredData;
4310
4539
  const col = resolvedColumns.find((c) => c.field === sortField);
4311
4540
  return [...filteredData].sort((a, b) => {
@@ -4321,7 +4550,7 @@ function DataGrid({
4321
4550
  });
4322
4551
  }, [filteredData, sortField, sortDirection, resolvedColumns]);
4323
4552
  const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));
4324
- const paginatedData = (0, import_react22.useMemo)(() => {
4553
+ const paginatedData = (0, import_react23.useMemo)(() => {
4325
4554
  const start = (currentPage - 1) * pageSize;
4326
4555
  return sortedData.slice(start, start + pageSize);
4327
4556
  }, [sortedData, currentPage, pageSize]);
@@ -4360,7 +4589,7 @@ function DataGrid({
4360
4589
  setMenuPosition(position);
4361
4590
  setActiveMenu(keyStr);
4362
4591
  };
4363
- const visibleColumns = (0, import_react22.useMemo)(() => {
4592
+ const visibleColumns = (0, import_react23.useMemo)(() => {
4364
4593
  const left = resolvedColumns.filter((c) => !c.hidden && c.pinned === "left");
4365
4594
  const mid = resolvedColumns.filter((c) => !c.hidden && !c.pinned);
4366
4595
  const right = resolvedColumns.filter((c) => !c.hidden && c.pinned === "right");
@@ -4387,7 +4616,7 @@ function DataGrid({
4387
4616
  return offset2;
4388
4617
  };
4389
4618
  const hasActiveFilters = advancedFilters.some((f) => f.value);
4390
- return /* @__PURE__ */ import_react22.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react22.default.createElement("h2", null, title), /* @__PURE__ */ import_react22.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react22.default.createElement(
4619
+ return /* @__PURE__ */ import_react23.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react23.default.createElement("h2", null, title), /* @__PURE__ */ import_react23.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react23.default.createElement(
4391
4620
  "input",
4392
4621
  {
4393
4622
  className: "dg-search",
@@ -4398,52 +4627,50 @@ function DataGrid({
4398
4627
  setCurrentPage(1);
4399
4628
  }
4400
4629
  }
4401
- )), /* @__PURE__ */ import_react22.default.createElement(
4630
+ )), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
4402
4631
  "button",
4403
4632
  {
4404
4633
  className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
4405
- onClick: () => setShowAdvancedFilter(true),
4406
- title: "Filters"
4634
+ onClick: () => setShowAdvancedFilter(true)
4407
4635
  },
4408
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Filter, { size: 16 })
4409
- ), /* @__PURE__ */ import_react22.default.createElement(
4636
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 16 })
4637
+ )), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Manage Columns", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
4410
4638
  "button",
4411
4639
  {
4412
4640
  className: "dg-icon-btn",
4413
- onClick: () => setShowManageColumns(true),
4414
- title: "Manage Columns"
4641
+ onClick: () => setShowManageColumns(true)
4415
4642
  },
4416
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Columns, { size: 16 })
4417
- ), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ import_react22.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react22.default.createElement("thead", null, /* @__PURE__ */ import_react22.default.createElement("tr", null, visibleColumns.map((col, idx) => {
4643
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 16 })
4644
+ )), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ import_react23.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react23.default.createElement("thead", null, /* @__PURE__ */ import_react23.default.createElement("tr", null, visibleColumns.map((col, idx) => {
4418
4645
  const colField = String(col.field);
4419
4646
  const width = columnWidths[colField] || 200;
4420
4647
  const leftOffset = getLeftOffset(col, idx);
4421
4648
  const rightOffset = getRightOffset(col, idx);
4422
4649
  const isSorted = sortField === col.field;
4423
- return /* @__PURE__ */ import_react22.default.createElement(
4650
+ return /* @__PURE__ */ import_react23.default.createElement(
4424
4651
  "th",
4425
4652
  {
4426
4653
  key: colField,
4427
4654
  className: `dg-thead-cell${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.headerClassName || ""}`,
4428
4655
  style: { width, minWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
4429
4656
  },
4430
- /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react22.default.createElement(
4657
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react23.default.createElement(
4431
4658
  "div",
4432
4659
  {
4433
4660
  className: `dg-th-label${col.sortable === false ? " no-sort" : ""}`,
4434
4661
  onClick: () => col.sortable !== false && handleSort(col.field || "")
4435
4662
  },
4436
4663
  col.headerName,
4437
- isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ChevronUp, { size: 12 }),
4438
- isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ChevronDown, { size: 12 })
4439
- ), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react22.default.createElement(
4664
+ isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronUp, { size: 12 }),
4665
+ isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronDown, { size: 12 })
4666
+ ), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react23.default.createElement(
4440
4667
  "button",
4441
4668
  {
4442
4669
  className: "dg-th-menu-btn",
4443
4670
  onClick: (e) => handleMenuOpen(e, colField)
4444
4671
  },
4445
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
4446
- ), /* @__PURE__ */ import_react22.default.createElement(
4672
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
4673
+ ), /* @__PURE__ */ import_react23.default.createElement(
4447
4674
  "div",
4448
4675
  {
4449
4676
  className: `dg-resizer${resizingColumn === colField ? " resizing" : ""}`,
@@ -4456,17 +4683,18 @@ function DataGrid({
4456
4683
  }
4457
4684
  )))
4458
4685
  );
4459
- }), actions && /* @__PURE__ */ import_react22.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react22.default.createElement("tbody", null, paginatedData.length === 0 ? /* @__PURE__ */ import_react22.default.createElement("tr", null, /* @__PURE__ */ import_react22.default.createElement("td", { colSpan: visibleColumns.length + (actions ? 1 : 0), className: "dg-empty" }, "No records found")) : paginatedData.map((item) => /* @__PURE__ */ import_react22.default.createElement("tr", { key: item.id, className: "dg-tbody-row" }, visibleColumns.map((col, idx) => {
4686
+ }), actions && /* @__PURE__ */ import_react23.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react23.default.createElement("tbody", null, paginatedData.length === 0 ? /* @__PURE__ */ import_react23.default.createElement("tr", null, /* @__PURE__ */ import_react23.default.createElement("td", { colSpan: visibleColumns.length + (actions ? 1 : 0), className: "dg-empty" }, "No records found")) : paginatedData.map((item) => /* @__PURE__ */ import_react23.default.createElement("tr", { key: item.id, className: "dg-tbody-row", onDoubleClick: () => onRowDoubleClick?.(item) }, visibleColumns.map((col, idx) => {
4460
4687
  const colField = String(col.field);
4461
4688
  const width = columnWidths[colField] || 200;
4462
4689
  const leftOffset = getLeftOffset(col, idx);
4463
4690
  const rightOffset = getRightOffset(col, idx);
4464
- return /* @__PURE__ */ import_react22.default.createElement(
4691
+ return /* @__PURE__ */ import_react23.default.createElement(
4465
4692
  "td",
4466
4693
  {
4467
4694
  key: `${item.id}-${colField}`,
4468
4695
  className: `dg-td${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.cellClassName || ""}`,
4469
- style: { width, minWidth: width, maxWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
4696
+ style: { width, minWidth: width, maxWidth: width, left: leftOffset, right: rightOffset, flex: col.flex },
4697
+ onDoubleClick: () => onCellDoubleClick?.({ row: item, field: colField, value: item[col.field || ""] })
4470
4698
  },
4471
4699
  (() => {
4472
4700
  const field = String(col.field);
@@ -4482,22 +4710,20 @@ function DataGrid({
4482
4710
  return String(formattedValue ?? "");
4483
4711
  })()
4484
4712
  );
4485
- }), actions && /* @__PURE__ */ import_react22.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
4713
+ }), actions && /* @__PURE__ */ import_react23.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
4486
4714
  const resolvedActions = typeof actions === "function" ? actions(item) : actions;
4487
4715
  const visibleActions = resolvedActions.filter((a) => !a.show || a.show(item));
4488
4716
  if (visibleActions.length === 0) return null;
4489
- return /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-row-actions" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-action-group" }, visibleActions.map((action, i) => /* @__PURE__ */ import_react22.default.createElement(
4717
+ return /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-row-actions" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-action-group" }, visibleActions.map((action, i) => /* @__PURE__ */ import_react23.default.createElement(Tooltip, { key: i, title: action.label, placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
4490
4718
  "button",
4491
4719
  {
4492
- key: i,
4493
4720
  className: "dg-row-action-btn",
4494
4721
  style: { color: action.color || "var(--text-secondary)" },
4495
- onClick: () => action.onClick(item),
4496
- title: action.label
4722
+ onClick: () => action.onClick(item)
4497
4723
  },
4498
4724
  action.icon
4499
- ))));
4500
- })())))))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ import_react22.default.createElement("span", null, "Rows per page:"), /* @__PURE__ */ import_react22.default.createElement(
4725
+ )))));
4726
+ })())))))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ import_react23.default.createElement("span", null, "Rows per page:"), /* @__PURE__ */ import_react23.default.createElement(
4501
4727
  "select",
4502
4728
  {
4503
4729
  value: pageSize,
@@ -4506,8 +4732,8 @@ function DataGrid({
4506
4732
  setCurrentPage(1);
4507
4733
  }
4508
4734
  },
4509
- pageSizeOptions.map((o) => /* @__PURE__ */ import_react22.default.createElement("option", { key: o, value: o }, o))
4510
- )), /* @__PURE__ */ import_react22.default.createElement("span", null, (currentPage - 1) * pageSize + 1, "\u2013", Math.min(currentPage * pageSize, filteredData.length), " of ", filteredData.length)), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-page-nav" }, /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === 1, onClick: () => setCurrentPage((p) => p - 1) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ChevronLeft, { size: 15 })), /* @__PURE__ */ import_react22.default.createElement("span", { className: "dg-page-fraction" }, currentPage, " / ", totalPages), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === totalPages, onClick: () => setCurrentPage((p) => p + 1) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ChevronRight, { size: 15 })))), activeMenu && /* @__PURE__ */ import_react22.default.createElement(
4735
+ pageSizeOptions.map((o) => /* @__PURE__ */ import_react23.default.createElement("option", { key: o, value: o }, o))
4736
+ )), /* @__PURE__ */ import_react23.default.createElement("span", null, (currentPage - 1) * pageSize + 1, "\u2013", Math.min(currentPage * pageSize, filteredData.length), " of ", filteredData.length)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-nav" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === 1, onClick: () => setCurrentPage((p) => p - 1) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronLeft, { size: 15 })), /* @__PURE__ */ import_react23.default.createElement("span", { className: "dg-page-fraction" }, currentPage, " / ", totalPages), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-page-btn", disabled: currentPage === totalPages, onClick: () => setCurrentPage((p) => p + 1) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronRight, { size: 15 })))), activeMenu && /* @__PURE__ */ import_react23.default.createElement(
4511
4737
  "div",
4512
4738
  {
4513
4739
  ref: menuRef,
@@ -4518,25 +4744,25 @@ function DataGrid({
4518
4744
  ...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
4519
4745
  }
4520
4746
  },
4521
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ArrowUp, { size: 14 }), " Sort ascending"),
4522
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.ArrowDown, { size: 14 }), " Sort descending"),
4523
- /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-menu-divider" }),
4747
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowUp, { size: 14 }), " Sort ascending"),
4748
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowDown, { size: 14 }), " Sort descending"),
4749
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
4524
4750
  (() => {
4525
4751
  const col = resolvedColumns.find((c) => c.field === activeMenu);
4526
4752
  if (!col) return null;
4527
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, col.pinned === "left" ? /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(45deg)" } }), " Pin left"), col.pinned === "right" ? /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(-45deg)" } }), " Pin right"));
4753
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, col.pinned === "left" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(45deg)" } }), " Pin left"), col.pinned === "right" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(-45deg)" } }), " Pin right"));
4528
4754
  })(),
4529
- /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-menu-divider" }),
4530
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4755
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
4756
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4531
4757
  setShowAdvancedFilter(true);
4532
4758
  setActiveMenu(null);
4533
- } }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
4534
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => toggleHide(activeMenu) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.EyeOff, { size: 14 }), " Hide column"),
4535
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4759
+ } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
4760
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => toggleHide(activeMenu) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14 }), " Hide column"),
4761
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4536
4762
  setShowManageColumns(true);
4537
4763
  setActiveMenu(null);
4538
- } }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Columns, { size: 14 }), " Manage columns")
4539
- ), showManageColumns && /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react22.default.createElement("h3", null, "Manage Columns"), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-body" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-search-wrap", style: { marginBottom: 8 } }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Search, { size: 14 }), /* @__PURE__ */ import_react22.default.createElement(
4764
+ } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 14 }), " Manage columns")
4765
+ ), showManageColumns && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react23.default.createElement("h3", null, "Manage Columns"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowManageColumns(false) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-body" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-search-wrap", style: { marginBottom: 8 } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Search, { size: 14 }), /* @__PURE__ */ import_react23.default.createElement(
4540
4766
  "input",
4541
4767
  {
4542
4768
  className: "dg-search",
@@ -4548,15 +4774,15 @@ function DataGrid({
4548
4774
  )), resolvedColumns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase())).map((col) => {
4549
4775
  const key = String(col.key);
4550
4776
  const isUnhideable = col.hideable === false;
4551
- return /* @__PURE__ */ import_react22.default.createElement("div", { key, className: `dg-col-row${isUnhideable ? " disabled" : ""}` }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-col-label" }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-col-dot", style: { background: col.hidden ? "var(--border-color)" : "var(--primary-color)" } }), col.header), !isUnhideable && /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-icon-btn", onClick: () => toggleHide(key) }, col.hidden ? /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.EyeOff, { size: 14 }) : /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.EyeOff, { size: 14, style: { opacity: 0.4 } })));
4552
- })), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
4777
+ return /* @__PURE__ */ import_react23.default.createElement("div", { key, className: `dg-col-row${isUnhideable ? " disabled" : ""}` }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-col-label" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-col-dot", style: { background: col.hidden ? "var(--border-color)" : "var(--primary-color)" } }), col.header), !isUnhideable && /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => toggleHide(key) }, col.hidden ? /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14 }) : /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.EyeOff, { size: 14, style: { opacity: 0.4 } })));
4778
+ })), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
4553
4779
  const next = { ...prev };
4554
4780
  resolvedColumns.forEach((c) => {
4555
4781
  const k = String(c.key);
4556
4782
  next[k] = { ...next[k], hidden: false };
4557
4783
  });
4558
4784
  return next;
4559
- }) }, "Show All"), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-action-btn", onClick: () => {
4785
+ }) }, "Show All"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => {
4560
4786
  const newOverrides = { ...columnOverrides };
4561
4787
  resolvedColumns.forEach((c) => {
4562
4788
  if (c.hideable !== false) {
@@ -4565,21 +4791,21 @@ function DataGrid({
4565
4791
  }
4566
4792
  });
4567
4793
  setColumnOverrides(newOverrides);
4568
- } }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal dg-modal-wide dg-filter-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react22.default.createElement("h3", null, "Filters"), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-body" }, advancedFilters.map((f, idx) => /* @__PURE__ */ import_react22.default.createElement("div", { key: idx }, idx > 0 && /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-filter-logic" }, /* @__PURE__ */ import_react22.default.createElement(
4794
+ } }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal dg-modal-wide dg-filter-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react23.default.createElement("h3", null, "Filters"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-body" }, advancedFilters.map((f, idx) => /* @__PURE__ */ import_react23.default.createElement("div", { key: idx }, idx > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-logic" }, /* @__PURE__ */ import_react23.default.createElement(
4569
4795
  "button",
4570
4796
  {
4571
4797
  className: `dg-logic-btn${f.logic === "AND" ? " active" : ""}`,
4572
4798
  onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "AND" } : fi))
4573
4799
  },
4574
4800
  "AND"
4575
- ), /* @__PURE__ */ import_react22.default.createElement(
4801
+ ), /* @__PURE__ */ import_react23.default.createElement(
4576
4802
  "button",
4577
4803
  {
4578
4804
  className: `dg-logic-btn${f.logic === "OR" ? " active" : ""}`,
4579
4805
  onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "OR" } : fi))
4580
4806
  },
4581
4807
  "OR"
4582
- )), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-filter-row" }, advancedFilters.length > 1 && /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-icon-btn", onClick: () => setAdvancedFilters((p) => p.filter((_, i) => i !== idx)) }, /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.X, { size: 14 })), /* @__PURE__ */ import_react22.default.createElement(
4808
+ )), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-row" }, advancedFilters.length > 1 && /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-icon-btn", onClick: () => setAdvancedFilters((p) => p.filter((_, i) => i !== idx)) }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.X, { size: 14 })), /* @__PURE__ */ import_react23.default.createElement(
4583
4809
  "select",
4584
4810
  {
4585
4811
  className: "dg-filter-select",
@@ -4591,20 +4817,20 @@ function DataGrid({
4591
4817
  setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
4592
4818
  }
4593
4819
  },
4594
- resolvedColumns.map((c) => /* @__PURE__ */ import_react22.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
4820
+ resolvedColumns.map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
4595
4821
  ), (() => {
4596
4822
  const col = resolvedColumns.find((c) => String(c.key) === f.column);
4597
4823
  const operators = getOperatorsForType(col?.type);
4598
4824
  const hideValue = f.operator === "is empty" || f.operator === "is not empty";
4599
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
4825
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
4600
4826
  "select",
4601
4827
  {
4602
4828
  className: "dg-filter-select dg-filter-select-sm",
4603
4829
  value: f.operator,
4604
4830
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, operator: e.target.value, value: "" } : fi))
4605
4831
  },
4606
- operators.map((op) => /* @__PURE__ */ import_react22.default.createElement("option", { key: op.value, value: op.value }, op.label))
4607
- ), !hideValue && col?.type === "date" && /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-filter-datefield" }, /* @__PURE__ */ import_react22.default.createElement(
4832
+ operators.map((op) => /* @__PURE__ */ import_react23.default.createElement("option", { key: op.value, value: op.value }, op.label))
4833
+ ), !hideValue && col?.type === "date" && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-datefield" }, /* @__PURE__ */ import_react23.default.createElement(
4608
4834
  DateField,
4609
4835
  {
4610
4836
  value: f.value,
@@ -4613,17 +4839,17 @@ function DataGrid({
4613
4839
  }
4614
4840
  )), !hideValue && col?.type === "status" && (() => {
4615
4841
  const options = col.statusOptions || [...new Set(data.map((item) => String(item[col.field || col.key || ""])))].filter((v) => v && v !== "undefined" && v !== "null").sort();
4616
- return /* @__PURE__ */ import_react22.default.createElement(
4842
+ return /* @__PURE__ */ import_react23.default.createElement(
4617
4843
  "select",
4618
4844
  {
4619
4845
  className: "dg-filter-select",
4620
4846
  value: f.value,
4621
4847
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
4622
4848
  },
4623
- /* @__PURE__ */ import_react22.default.createElement("option", { value: "" }, "Select\u2026"),
4624
- options.map((opt) => /* @__PURE__ */ import_react22.default.createElement("option", { key: opt, value: opt }, opt))
4849
+ /* @__PURE__ */ import_react23.default.createElement("option", { value: "" }, "Select\u2026"),
4850
+ options.map((opt) => /* @__PURE__ */ import_react23.default.createElement("option", { key: opt, value: opt }, opt))
4625
4851
  );
4626
- })(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react22.default.createElement(
4852
+ })(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react23.default.createElement(
4627
4853
  "input",
4628
4854
  {
4629
4855
  type: col?.type === "number" ? "number" : "text",
@@ -4633,7 +4859,7 @@ function DataGrid({
4633
4859
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
4634
4860
  }
4635
4861
  ));
4636
- })()))), /* @__PURE__ */ import_react22.default.createElement(
4862
+ })()))), /* @__PURE__ */ import_react23.default.createElement(
4637
4863
  "button",
4638
4864
  {
4639
4865
  className: "dg-action-btn",
@@ -4644,9 +4870,9 @@ function DataGrid({
4644
4870
  setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
4645
4871
  }
4646
4872
  },
4647
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Plus, { size: 14 }),
4873
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Plus, { size: 14 }),
4648
4874
  " Add Filter"
4649
- )), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react22.default.createElement(
4875
+ )), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement(
4650
4876
  "button",
4651
4877
  {
4652
4878
  className: "dg-action-btn",
@@ -4655,20 +4881,20 @@ function DataGrid({
4655
4881
  setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
4656
4882
  }
4657
4883
  },
4658
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
4884
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
4659
4885
  " Reset"
4660
- ), /* @__PURE__ */ import_react22.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
4886
+ ), /* @__PURE__ */ import_react23.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
4661
4887
  }
4662
4888
 
4663
4889
  // lib/Select/Select.tsx
4664
- var import_react23 = __toESM(require("react"), 1);
4665
- var import_react_dom4 = __toESM(require("react-dom"), 1);
4666
- var ChevronDownIcon2 = () => /* @__PURE__ */ import_react23.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react23.default.createElement("polyline", { points: "6 9 12 15 18 9" }));
4667
- var CheckIcon2 = () => /* @__PURE__ */ import_react23.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react23.default.createElement("polyline", { points: "20 6 9 17 4 12" }));
4890
+ var import_react24 = __toESM(require("react"), 1);
4891
+ var import_react_dom5 = __toESM(require("react-dom"), 1);
4892
+ var ChevronDownIcon2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "6 9 12 15 18 9" }));
4893
+ var CheckIcon2 = () => /* @__PURE__ */ import_react24.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "20 6 9 17 4 12" }));
4668
4894
  function normaliseOptions(options) {
4669
4895
  return options.map((o) => typeof o === "string" ? { value: o, label: o } : o);
4670
4896
  }
4671
- var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4897
+ var Select = import_react24.default.forwardRef(function Select2(props, ref) {
4672
4898
  const {
4673
4899
  options: rawOptions,
4674
4900
  value,
@@ -4687,14 +4913,14 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4687
4913
  style,
4688
4914
  sx
4689
4915
  } = props;
4690
- const [open, setOpen] = (0, import_react23.useState)(false);
4691
- const [focusedIdx, setFocusedIdx] = (0, import_react23.useState)(-1);
4692
- const [popupStyle, setPopupStyle] = (0, import_react23.useState)({});
4693
- const containerRef = (0, import_react23.useRef)(null);
4694
- const listRef = (0, import_react23.useRef)(null);
4695
- const inputId = (0, import_react23.useRef)(`rf-sel-${Math.random().toString(36).slice(2, 9)}`).current;
4916
+ const [open, setOpen] = (0, import_react24.useState)(false);
4917
+ const [focusedIdx, setFocusedIdx] = (0, import_react24.useState)(-1);
4918
+ const [popupStyle, setPopupStyle] = (0, import_react24.useState)({});
4919
+ const containerRef = (0, import_react24.useRef)(null);
4920
+ const listRef = (0, import_react24.useRef)(null);
4921
+ const inputId = (0, import_react24.useRef)(`rf-sel-${Math.random().toString(36).slice(2, 9)}`).current;
4696
4922
  const sxClass = useSx(sx);
4697
- const calcPopupStyle = (0, import_react23.useCallback)(() => {
4923
+ const calcPopupStyle = (0, import_react24.useCallback)(() => {
4698
4924
  if (!containerRef.current) return;
4699
4925
  const rect = containerRef.current.getBoundingClientRect();
4700
4926
  setPopupStyle({
@@ -4705,28 +4931,28 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4705
4931
  }, []);
4706
4932
  const options = normaliseOptions(rawOptions);
4707
4933
  const selectedValues = multiple ? Array.isArray(value) ? value : value != null ? [value] : [] : value != null ? [value] : [];
4708
- const isSelected = (0, import_react23.useCallback)(
4934
+ const isSelected = (0, import_react24.useCallback)(
4709
4935
  (optValue) => selectedValues.includes(optValue),
4710
4936
  [selectedValues]
4711
4937
  );
4712
4938
  const getSelectedLabels = () => options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label);
4713
4939
  const hasValue = selectedValues.length > 0;
4714
4940
  const isFloating = Boolean(open || hasValue);
4715
- const openPopup = (0, import_react23.useCallback)(() => {
4941
+ const openPopup = (0, import_react24.useCallback)(() => {
4716
4942
  if (disabled) return;
4717
4943
  calcPopupStyle();
4718
4944
  setOpen(true);
4719
4945
  setFocusedIdx(-1);
4720
4946
  }, [disabled, calcPopupStyle]);
4721
- const closePopup = (0, import_react23.useCallback)(() => {
4947
+ const closePopup = (0, import_react24.useCallback)(() => {
4722
4948
  setOpen(false);
4723
4949
  setFocusedIdx(-1);
4724
4950
  }, []);
4725
- const togglePopup = (0, import_react23.useCallback)(() => {
4951
+ const togglePopup = (0, import_react24.useCallback)(() => {
4726
4952
  if (open) closePopup();
4727
4953
  else openPopup();
4728
4954
  }, [open, openPopup, closePopup]);
4729
- (0, import_react23.useEffect)(() => {
4955
+ (0, import_react24.useEffect)(() => {
4730
4956
  if (!open) return;
4731
4957
  const handleOutside = (e) => {
4732
4958
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -4742,7 +4968,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4742
4968
  window.removeEventListener("resize", calcPopupStyle);
4743
4969
  };
4744
4970
  }, [open, closePopup, calcPopupStyle]);
4745
- const selectOption = (0, import_react23.useCallback)((opt) => {
4971
+ const selectOption = (0, import_react24.useCallback)((opt) => {
4746
4972
  if (opt.disabled) return;
4747
4973
  if (multiple) {
4748
4974
  const already = isSelected(opt.value);
@@ -4817,20 +5043,20 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4817
5043
  if (multiple) {
4818
5044
  const labels = getSelectedLabels();
4819
5045
  if (labels.length === 0) {
4820
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__chips" }, placeholder && /* @__PURE__ */ import_react23.default.createElement("span", { className: "rf-select__display rf-select__display--placeholder" }, placeholder));
5046
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, placeholder && /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__display rf-select__display--placeholder" }, placeholder));
4821
5047
  }
4822
5048
  if (labels.length <= 2) {
4823
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__chips" }, labels.map((l, i) => /* @__PURE__ */ import_react23.default.createElement("span", { key: i, className: "rf-select__chip" }, l)));
5049
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, labels.map((l, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, className: "rf-select__chip" }, l)));
4824
5050
  }
4825
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__chips" }, labels.slice(0, 2).map((l, i) => /* @__PURE__ */ import_react23.default.createElement("span", { key: i, className: "rf-select__chip" }, l)), /* @__PURE__ */ import_react23.default.createElement("span", { className: "rf-select__count" }, "+", labels.length - 2));
5051
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__chips" }, labels.slice(0, 2).map((l, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, className: "rf-select__chip" }, l)), /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__count" }, "+", labels.length - 2));
4826
5052
  }
4827
5053
  const selectedOpt = options.find((o) => o.value === value);
4828
5054
  if (selectedOpt) {
4829
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
5055
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
4830
5056
  }
4831
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
5057
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
4832
5058
  };
4833
- return /* @__PURE__ */ import_react23.default.createElement(
5059
+ return /* @__PURE__ */ import_react24.default.createElement(
4834
5060
  "div",
4835
5061
  {
4836
5062
  ref: (node) => {
@@ -4841,7 +5067,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4841
5067
  className: rootClasses,
4842
5068
  style
4843
5069
  },
4844
- /* @__PURE__ */ import_react23.default.createElement(
5070
+ /* @__PURE__ */ import_react24.default.createElement(
4845
5071
  "div",
4846
5072
  {
4847
5073
  className: "rf-text-field__wrapper",
@@ -4855,16 +5081,16 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4855
5081
  onKeyDown: handleKeyDown
4856
5082
  },
4857
5083
  renderDisplay(),
4858
- label && /* @__PURE__ */ import_react23.default.createElement("label", { id: inputId, className: "rf-text-field__label" }, label, required && /* @__PURE__ */ import_react23.default.createElement("span", { className: "rf-text-field__asterisk" }, " *")),
4859
- variant === "outlined" && /* @__PURE__ */ import_react23.default.createElement("fieldset", { className: "rf-text-field__notch" }, label ? /* @__PURE__ */ import_react23.default.createElement("legend", { className: "rf-text-field__legend" }, /* @__PURE__ */ import_react23.default.createElement("span", null, label, required ? " *" : "")) : /* @__PURE__ */ import_react23.default.createElement("legend", { className: "rf-text-field__legend--empty" })),
4860
- /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement(ChevronDownIcon2, null))
5084
+ label && /* @__PURE__ */ import_react24.default.createElement("label", { id: inputId, className: "rf-text-field__label" }, label, required && /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-text-field__asterisk" }, " *")),
5085
+ variant === "outlined" && /* @__PURE__ */ import_react24.default.createElement("fieldset", { className: "rf-text-field__notch" }, label ? /* @__PURE__ */ import_react24.default.createElement("legend", { className: "rf-text-field__legend" }, /* @__PURE__ */ import_react24.default.createElement("span", null, label, required ? " *" : "")) : /* @__PURE__ */ import_react24.default.createElement("legend", { className: "rf-text-field__legend--empty" })),
5086
+ /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(ChevronDownIcon2, null))
4861
5087
  ),
4862
- helperText && /* @__PURE__ */ import_react23.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
4863
- open && !disabled && import_react_dom4.default.createPortal(
4864
- /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__popup", role: "presentation", style: popupStyle }, /* @__PURE__ */ import_react23.default.createElement("ul", { ref: listRef, className: "rf-select__listbox", role: "listbox", "aria-multiselectable": multiple }, options.map((opt, idx) => {
5088
+ helperText && /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
5089
+ open && !disabled && import_react_dom5.default.createPortal(
5090
+ /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__popup", role: "presentation", style: popupStyle }, /* @__PURE__ */ import_react24.default.createElement("ul", { ref: listRef, className: "rf-select__listbox", role: "listbox", "aria-multiselectable": multiple }, options.map((opt, idx) => {
4865
5091
  const selected = isSelected(opt.value);
4866
5092
  const focused = focusedIdx === idx;
4867
- return /* @__PURE__ */ import_react23.default.createElement(
5093
+ return /* @__PURE__ */ import_react24.default.createElement(
4868
5094
  "li",
4869
5095
  {
4870
5096
  key: opt.value,
@@ -4883,8 +5109,8 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4883
5109
  onMouseDown: (e) => e.preventDefault(),
4884
5110
  onClick: () => selectOption(opt)
4885
5111
  },
4886
- /* @__PURE__ */ import_react23.default.createElement("span", { className: "rf-select__option-label" }, opt.label),
4887
- /* @__PURE__ */ import_react23.default.createElement("span", { className: "rf-select__option-check", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement(CheckIcon2, null))
5112
+ /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-label" }, opt.label),
5113
+ /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-check", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(CheckIcon2, null))
4888
5114
  );
4889
5115
  }))),
4890
5116
  document.body
@@ -4894,7 +5120,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4894
5120
  Select.displayName = "Select";
4895
5121
 
4896
5122
  // lib/Slider/Slider.tsx
4897
- var import_react24 = __toESM(require("react"), 1);
5123
+ var import_react25 = __toESM(require("react"), 1);
4898
5124
  function clamp(val, min, max) {
4899
5125
  return Math.max(min, Math.min(max, val));
4900
5126
  }
@@ -4904,7 +5130,7 @@ function snapToStep(val, min, step) {
4904
5130
  function pct(val, min, max) {
4905
5131
  return (val - min) / (max - min) * 100;
4906
5132
  }
4907
- var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5133
+ var Slider = import_react25.default.forwardRef(function Slider2(props, ref) {
4908
5134
  const {
4909
5135
  value,
4910
5136
  onChange,
@@ -4924,9 +5150,9 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4924
5150
  sx
4925
5151
  } = props;
4926
5152
  const sxClass = useSx(sx);
4927
- const trackRef = (0, import_react24.useRef)(null);
4928
- const draggingThumb = (0, import_react24.useRef)(null);
4929
- const [dragging, setDragging] = (0, import_react24.useState)(null);
5153
+ const trackRef = (0, import_react25.useRef)(null);
5154
+ const draggingThumb = (0, import_react25.useRef)(null);
5155
+ const [dragging, setDragging] = (0, import_react25.useState)(null);
4930
5156
  const isRange = range || Array.isArray(value);
4931
5157
  const rawVal = value ?? (isRange ? [min, max] : min);
4932
5158
  const vals = isRange ? Array.isArray(rawVal) ? [rawVal[0], rawVal[1]] : [rawVal, rawVal] : [rawVal, rawVal];
@@ -4937,7 +5163,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4937
5163
  computedMarks.push(...marks);
4938
5164
  }
4939
5165
  const hasLabelledMarks = computedMarks.some((m) => m.label);
4940
- const getValueFromPointer = (0, import_react24.useCallback)((e) => {
5166
+ const getValueFromPointer = (0, import_react25.useCallback)((e) => {
4941
5167
  const track = trackRef.current;
4942
5168
  if (!track) return min;
4943
5169
  const rect = track.getBoundingClientRect();
@@ -4951,7 +5177,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4951
5177
  const raw = min + ratio * (max - min);
4952
5178
  return clamp(snapToStep(raw, min, step), min, max);
4953
5179
  }, [min, max, step, orientation]);
4954
- (0, import_react24.useEffect)(() => {
5180
+ (0, import_react25.useEffect)(() => {
4955
5181
  if (dragging === null) return;
4956
5182
  const onMove = (e) => {
4957
5183
  const newVal = getValueFromPointer(e);
@@ -5044,7 +5270,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5044
5270
  const val = vals[thumb];
5045
5271
  const p = pct(val, min, max);
5046
5272
  const thumbStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
5047
- return /* @__PURE__ */ import_react24.default.createElement(
5273
+ return /* @__PURE__ */ import_react25.default.createElement(
5048
5274
  "div",
5049
5275
  {
5050
5276
  key: thumb,
@@ -5060,30 +5286,30 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5060
5286
  onPointerDown: (e) => handleThumbPointerDown(e, thumb),
5061
5287
  onKeyDown: (e) => handleThumbKeyDown(e, thumb)
5062
5288
  },
5063
- valueLabelDisplay !== "off" && /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
5289
+ valueLabelDisplay !== "off" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
5064
5290
  );
5065
5291
  };
5066
- return /* @__PURE__ */ import_react24.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__label" }, label), /* @__PURE__ */ import_react24.default.createElement(
5292
+ return /* @__PURE__ */ import_react25.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__label" }, label), /* @__PURE__ */ import_react25.default.createElement(
5067
5293
  "div",
5068
5294
  {
5069
5295
  ref: trackRef,
5070
5296
  className: "rf-slider__track-container",
5071
5297
  onPointerDown: handleTrackPointerDown
5072
5298
  },
5073
- /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__rail", "aria-hidden": "true" }),
5074
- /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__track", style: trackStyle, "aria-hidden": "true" }),
5299
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__rail", "aria-hidden": "true" }),
5300
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__track", style: trackStyle, "aria-hidden": "true" }),
5075
5301
  computedMarks.map((mark) => {
5076
5302
  const p = pct(mark.value, min, max);
5077
5303
  const isActive = isRange ? mark.value >= vals[0] && mark.value <= vals[1] : mark.value <= vals[0];
5078
5304
  const markStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
5079
- return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, { key: mark.value }, /* @__PURE__ */ import_react24.default.createElement(
5305
+ return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: mark.value }, /* @__PURE__ */ import_react25.default.createElement(
5080
5306
  "div",
5081
5307
  {
5082
5308
  className: `rf-slider__mark${isActive ? " rf-slider__mark--active" : ""}`,
5083
5309
  style: markStyle,
5084
5310
  "aria-hidden": "true"
5085
5311
  }
5086
- ), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react24.default.createElement(
5312
+ ), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement(
5087
5313
  "div",
5088
5314
  {
5089
5315
  className: "rf-slider__mark-label",
@@ -5095,13 +5321,13 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5095
5321
  }),
5096
5322
  renderThumb(0),
5097
5323
  isRange && renderThumb(1)
5098
- ), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
5324
+ ), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
5099
5325
  });
5100
5326
  Slider.displayName = "Slider";
5101
5327
 
5102
5328
  // lib/Switch/Switch.tsx
5103
- var import_react25 = __toESM(require("react"), 1);
5104
- var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5329
+ var import_react26 = __toESM(require("react"), 1);
5330
+ var Switch = import_react26.default.forwardRef(function Switch2(props, ref) {
5105
5331
  const {
5106
5332
  checked = false,
5107
5333
  onChange,
@@ -5116,8 +5342,8 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5116
5342
  sx
5117
5343
  } = props;
5118
5344
  const sxClass = useSx(sx);
5119
- const inputRef = (0, import_react25.useRef)(null);
5120
- const inputId = (0, import_react25.useRef)(`rf-sw-${Math.random().toString(36).slice(2, 9)}`).current;
5345
+ const inputRef = (0, import_react26.useRef)(null);
5346
+ const inputId = (0, import_react26.useRef)(`rf-sw-${Math.random().toString(36).slice(2, 9)}`).current;
5121
5347
  const handleChange = (e) => {
5122
5348
  if (!disabled) onChange?.(e.target.checked);
5123
5349
  };
@@ -5131,7 +5357,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5131
5357
  sxClass,
5132
5358
  className
5133
5359
  ].filter(Boolean).join(" ");
5134
- return /* @__PURE__ */ import_react25.default.createElement(
5360
+ return /* @__PURE__ */ import_react26.default.createElement(
5135
5361
  "label",
5136
5362
  {
5137
5363
  ref,
@@ -5139,7 +5365,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5139
5365
  style,
5140
5366
  htmlFor: inputId
5141
5367
  },
5142
- /* @__PURE__ */ import_react25.default.createElement(
5368
+ /* @__PURE__ */ import_react26.default.createElement(
5143
5369
  "input",
5144
5370
  {
5145
5371
  ref: inputRef,
@@ -5154,17 +5380,17 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5154
5380
  "aria-checked": checked
5155
5381
  }
5156
5382
  ),
5157
- /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-switch__track", "aria-hidden": "true" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-switch__thumb" })),
5158
- label && /* @__PURE__ */ import_react25.default.createElement("span", { className: "rf-switch__label" }, label, required && /* @__PURE__ */ import_react25.default.createElement("span", { style: { color: "var(--tf-error-color, #d32f2f)" } }, " *"))
5383
+ /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__track", "aria-hidden": "true" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__thumb" })),
5384
+ label && /* @__PURE__ */ import_react26.default.createElement("span", { className: "rf-switch__label" }, label, required && /* @__PURE__ */ import_react26.default.createElement("span", { style: { color: "var(--tf-error-color, #d32f2f)" } }, " *"))
5159
5385
  );
5160
5386
  });
5161
5387
  Switch.displayName = "Switch";
5162
5388
 
5163
5389
  // lib/RadioGroup/RadioGroup.tsx
5164
- var import_react26 = __toESM(require("react"), 1);
5165
- var RadioGroupContext = (0, import_react26.createContext)({});
5166
- var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5167
- const ctx = (0, import_react26.useContext)(RadioGroupContext);
5390
+ var import_react27 = __toESM(require("react"), 1);
5391
+ var RadioGroupContext = (0, import_react27.createContext)({});
5392
+ var Radio = import_react27.default.forwardRef(function Radio2(props, ref) {
5393
+ const ctx = (0, import_react27.useContext)(RadioGroupContext);
5168
5394
  const {
5169
5395
  value,
5170
5396
  label,
@@ -5176,7 +5402,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5176
5402
  sx
5177
5403
  } = props;
5178
5404
  const sxClass = useSx(sx);
5179
- const inputId = (0, import_react26.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
5405
+ const inputId = (0, import_react27.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
5180
5406
  const isChecked = checkedProp !== void 0 ? checkedProp : ctx.value === value;
5181
5407
  const isDisabled = disabledProp !== void 0 ? disabledProp : ctx.disabled ?? false;
5182
5408
  const size = sizeProp ?? ctx.size ?? "medium";
@@ -5194,7 +5420,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5194
5420
  isDisabled ? "rf-radio--disabled" : "",
5195
5421
  sxClass
5196
5422
  ].filter(Boolean).join(" ");
5197
- return /* @__PURE__ */ import_react26.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react26.default.createElement(
5423
+ return /* @__PURE__ */ import_react27.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react27.default.createElement(
5198
5424
  "input",
5199
5425
  {
5200
5426
  id: inputId,
@@ -5207,10 +5433,10 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5207
5433
  name,
5208
5434
  "aria-checked": isChecked
5209
5435
  }
5210
- ), /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio__control", "aria-hidden": "true" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio__ripple" }), /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio__outer" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio__inner" }))), label && /* @__PURE__ */ import_react26.default.createElement("span", { className: "rf-radio__label" }, label));
5436
+ ), /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__control", "aria-hidden": "true" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__ripple" }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__outer" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio__inner" }))), label && /* @__PURE__ */ import_react27.default.createElement("span", { className: "rf-radio__label" }, label));
5211
5437
  });
5212
5438
  Radio.displayName = "Radio";
5213
- var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, ref) {
5439
+ var RadioGroup = import_react27.default.forwardRef(function RadioGroup2(props, ref) {
5214
5440
  const {
5215
5441
  value,
5216
5442
  onChange,
@@ -5226,7 +5452,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5226
5452
  sx
5227
5453
  } = props;
5228
5454
  const sxClass = useSx(sx);
5229
- const groupName = (0, import_react26.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
5455
+ const groupName = (0, import_react27.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
5230
5456
  const rootClasses = [
5231
5457
  "rf-radio-group",
5232
5458
  row ? "rf-radio-group--row" : "",
@@ -5234,7 +5460,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5234
5460
  sxClass,
5235
5461
  className
5236
5462
  ].filter(Boolean).join(" ");
5237
- return /* @__PURE__ */ import_react26.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react26.default.createElement(
5463
+ return /* @__PURE__ */ import_react27.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react27.default.createElement(
5238
5464
  "div",
5239
5465
  {
5240
5466
  ref,
@@ -5243,8 +5469,8 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5243
5469
  role: "radiogroup",
5244
5470
  "aria-label": label
5245
5471
  },
5246
- label && /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio-group__label" }, label),
5247
- options ? options.map((opt) => /* @__PURE__ */ import_react26.default.createElement(
5472
+ label && /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio-group__label" }, label),
5473
+ options ? options.map((opt) => /* @__PURE__ */ import_react27.default.createElement(
5248
5474
  Radio,
5249
5475
  {
5250
5476
  key: opt.value,
@@ -5258,9 +5484,9 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5258
5484
  RadioGroup.displayName = "RadioGroup";
5259
5485
 
5260
5486
  // lib/Rating/Rating.tsx
5261
- var import_react27 = __toESM(require("react"), 1);
5487
+ var import_react28 = __toESM(require("react"), 1);
5262
5488
  var starSize = { small: 18, medium: 24, large: 32 };
5263
- var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createElement(
5489
+ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
5264
5490
  "svg",
5265
5491
  {
5266
5492
  width: size,
@@ -5269,9 +5495,9 @@ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.create
5269
5495
  fill: "currentColor",
5270
5496
  "aria-hidden": "true"
5271
5497
  },
5272
- /* @__PURE__ */ import_react27.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
5498
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
5273
5499
  );
5274
- var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createElement(
5500
+ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
5275
5501
  "svg",
5276
5502
  {
5277
5503
  width: size,
@@ -5282,9 +5508,9 @@ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createE
5282
5508
  strokeWidth: "1.6",
5283
5509
  "aria-hidden": "true"
5284
5510
  },
5285
- /* @__PURE__ */ import_react27.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
5511
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
5286
5512
  );
5287
- var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5513
+ var Rating = import_react28.default.forwardRef(function Rating2(props, ref) {
5288
5514
  const {
5289
5515
  value,
5290
5516
  onChange,
@@ -5302,13 +5528,13 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5302
5528
  sx
5303
5529
  } = props;
5304
5530
  const sxClass = useSx(sx);
5305
- const [hoverValue, setHoverValue] = (0, import_react27.useState)(null);
5306
- const starsRef = (0, import_react27.useRef)(null);
5531
+ const [hoverValue, setHoverValue] = (0, import_react28.useState)(null);
5532
+ const starsRef = (0, import_react28.useRef)(null);
5307
5533
  const currentValue = value ?? 0;
5308
5534
  const displayValue = hoverValue !== null ? hoverValue : currentValue;
5309
5535
  const iconSize = starSize[size] ?? 24;
5310
- const renderedFilledIcon = icon ?? /* @__PURE__ */ import_react27.default.createElement(FilledStarIcon, { size: iconSize });
5311
- const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */ import_react27.default.createElement(EmptyStarIcon, { size: iconSize });
5536
+ const renderedFilledIcon = icon ?? /* @__PURE__ */ import_react28.default.createElement(FilledStarIcon, { size: iconSize });
5537
+ const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */ import_react28.default.createElement(EmptyStarIcon, { size: iconSize });
5312
5538
  const isFilled = (pos) => {
5313
5539
  if (highlightSelectedOnly) return displayValue === pos;
5314
5540
  return displayValue >= pos - (precision < 1 ? 0.25 : 0);
@@ -5369,7 +5595,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5369
5595
  sxClass,
5370
5596
  className
5371
5597
  ].filter(Boolean).join(" ");
5372
- return /* @__PURE__ */ import_react27.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-rating__label" }, label), /* @__PURE__ */ import_react27.default.createElement(
5598
+ return /* @__PURE__ */ import_react28.default.createElement("div", { ref, className: rootClasses, style }, label && /* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__label" }, label), /* @__PURE__ */ import_react28.default.createElement(
5373
5599
  "div",
5374
5600
  {
5375
5601
  ref: starsRef,
@@ -5386,7 +5612,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5386
5612
  "rf-rating__item",
5387
5613
  isHovered ? "rf-rating__item--hovered" : ""
5388
5614
  ].filter(Boolean).join(" ");
5389
- return /* @__PURE__ */ import_react27.default.createElement(
5615
+ return /* @__PURE__ */ import_react28.default.createElement(
5390
5616
  "button",
5391
5617
  {
5392
5618
  key: pos,
@@ -5401,15 +5627,15 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5401
5627
  },
5402
5628
  halfFilled ? (
5403
5629
  // Half-star: show half filled + half empty
5404
- /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-rating__icon-container", style: { position: "relative" } }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "rf-rating__icon--empty" }, renderedEmptyIcon), /* @__PURE__ */ import_react27.default.createElement(
5630
+ /* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__icon-container", style: { position: "relative" } }, /* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--empty" }, renderedEmptyIcon), /* @__PURE__ */ import_react28.default.createElement(
5405
5631
  "span",
5406
5632
  {
5407
5633
  className: "rf-rating__half-left",
5408
5634
  style: { position: "absolute", inset: 0, width: "50%", overflow: "hidden" }
5409
5635
  },
5410
- /* @__PURE__ */ import_react27.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
5636
+ /* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
5411
5637
  ))
5412
- ) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-rating__icon-container" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: filled ? "rf-rating__icon--filled" : "rf-rating__icon--empty" }, filled ? renderedFilledIcon : renderedEmptyIcon))
5638
+ ) : /* @__PURE__ */ import_react28.default.createElement("div", { className: "rf-rating__icon-container" }, /* @__PURE__ */ import_react28.default.createElement("span", { className: filled ? "rf-rating__icon--filled" : "rf-rating__icon--empty" }, filled ? renderedFilledIcon : renderedEmptyIcon))
5413
5639
  );
5414
5640
  })
5415
5641
  ));
@@ -5417,11 +5643,11 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5417
5643
  Rating.displayName = "Rating";
5418
5644
 
5419
5645
  // lib/ToggleButton/ToggleButton.tsx
5420
- var import_react28 = __toESM(require("react"), 1);
5421
- var ToggleGroupContext = (0, import_react28.createContext)({});
5422
- var ToggleButton = import_react28.default.forwardRef(
5646
+ var import_react29 = __toESM(require("react"), 1);
5647
+ var ToggleGroupContext = (0, import_react29.createContext)({});
5648
+ var ToggleButton = import_react29.default.forwardRef(
5423
5649
  function ToggleButton2(props, ref) {
5424
- const ctx = (0, import_react28.useContext)(ToggleGroupContext);
5650
+ const ctx = (0, import_react29.useContext)(ToggleGroupContext);
5425
5651
  const { value, children, disabled: disabledProp, selected: selectedProp, sx } = props;
5426
5652
  const sxClass = useSx(sx);
5427
5653
  let isSelected = false;
@@ -5452,7 +5678,7 @@ var ToggleButton = import_react28.default.forwardRef(
5452
5678
  }
5453
5679
  }
5454
5680
  };
5455
- const isIconOnly = import_react28.default.Children.count(children) === 1 && import_react28.default.isValidElement(children) && children.type === "svg";
5681
+ const isIconOnly = import_react29.default.Children.count(children) === 1 && import_react29.default.isValidElement(children) && children.type === "svg";
5456
5682
  const btnClasses = [
5457
5683
  "rf-toggle-btn",
5458
5684
  isSelected ? "rf-toggle-btn--selected" : "",
@@ -5460,7 +5686,7 @@ var ToggleButton = import_react28.default.forwardRef(
5460
5686
  isIconOnly ? "rf-toggle-btn--icon-only" : "",
5461
5687
  sxClass
5462
5688
  ].filter(Boolean).join(" ");
5463
- return /* @__PURE__ */ import_react28.default.createElement(
5689
+ return /* @__PURE__ */ import_react29.default.createElement(
5464
5690
  "button",
5465
5691
  {
5466
5692
  ref,
@@ -5475,7 +5701,7 @@ var ToggleButton = import_react28.default.forwardRef(
5475
5701
  }
5476
5702
  );
5477
5703
  ToggleButton.displayName = "ToggleButton";
5478
- var ToggleButtonGroup = import_react28.default.forwardRef(
5704
+ var ToggleButtonGroup = import_react29.default.forwardRef(
5479
5705
  function ToggleButtonGroup2(props, ref) {
5480
5706
  const {
5481
5707
  value,
@@ -5502,7 +5728,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
5502
5728
  sxClass,
5503
5729
  className
5504
5730
  ].filter(Boolean).join(" ");
5505
- return /* @__PURE__ */ import_react28.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react28.default.createElement(
5731
+ return /* @__PURE__ */ import_react29.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react29.default.createElement(
5506
5732
  "div",
5507
5733
  {
5508
5734
  ref,
@@ -5518,7 +5744,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
5518
5744
  ToggleButtonGroup.displayName = "ToggleButtonGroup";
5519
5745
 
5520
5746
  // lib/Avatar/Avatar.tsx
5521
- var import_react29 = __toESM(require("react"), 1);
5747
+ var import_react30 = __toESM(require("react"), 1);
5522
5748
  var DEFAULT_PALETTE = [
5523
5749
  "#a41b06",
5524
5750
  "#8b1605",
@@ -5553,7 +5779,7 @@ function getInitials(alt) {
5553
5779
  }
5554
5780
  return words[0][0].toUpperCase();
5555
5781
  }
5556
- var Avatar = import_react29.default.forwardRef(
5782
+ var Avatar = import_react30.default.forwardRef(
5557
5783
  ({
5558
5784
  src,
5559
5785
  alt,
@@ -5568,7 +5794,7 @@ var Avatar = import_react29.default.forwardRef(
5568
5794
  sx
5569
5795
  }, ref) => {
5570
5796
  const sxClass = useSx(sx);
5571
- const [imgError, setImgError] = (0, import_react29.useState)(false);
5797
+ const [imgError, setImgError] = (0, import_react30.useState)(false);
5572
5798
  const { className: sizeClass, style: sizeStyle } = getSizeStyle(size);
5573
5799
  const bgColor = color || DEFAULT_PALETTE[_avatarColorIndex % DEFAULT_PALETTE.length];
5574
5800
  const classes = [
@@ -5588,7 +5814,7 @@ var Avatar = import_react29.default.forwardRef(
5588
5814
  inlineStyle.backgroundColor = bgColor;
5589
5815
  inlineStyle.color = "#ffffff";
5590
5816
  }
5591
- return /* @__PURE__ */ import_react29.default.createElement("div", { ref, className: classes, style: inlineStyle, "aria-label": alt, role: alt ? "img" : void 0, onClick, tabIndex: onClick ? 0 : void 0 }, showImage ? /* @__PURE__ */ import_react29.default.createElement(
5817
+ return /* @__PURE__ */ import_react30.default.createElement("div", { ref, className: classes, style: inlineStyle, "aria-label": alt, role: alt ? "img" : void 0, onClick, tabIndex: onClick ? 0 : void 0 }, showImage ? /* @__PURE__ */ import_react30.default.createElement(
5592
5818
  "img",
5593
5819
  {
5594
5820
  src,
@@ -5597,7 +5823,7 @@ var Avatar = import_react29.default.forwardRef(
5597
5823
  onError: () => setImgError(true),
5598
5824
  ...imgProps
5599
5825
  }
5600
- ) : /* @__PURE__ */ import_react29.default.createElement("span", { className: "rf-avatar__initials" }, content));
5826
+ ) : /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-avatar__initials" }, content));
5601
5827
  }
5602
5828
  );
5603
5829
  Avatar.displayName = "Avatar";
@@ -5610,7 +5836,7 @@ var AvatarGroup = ({
5610
5836
  sx
5611
5837
  }) => {
5612
5838
  const sxClass = useSx(sx);
5613
- const childArray = import_react29.default.Children.toArray(children);
5839
+ const childArray = import_react30.default.Children.toArray(children);
5614
5840
  const totalCount = childArray.length;
5615
5841
  const overflowCount = totalCount > max ? totalCount - (max - 1) : 0;
5616
5842
  const visibleChildren = overflowCount > 0 ? childArray.slice(0, max - 1) : childArray;
@@ -5624,7 +5850,7 @@ var AvatarGroup = ({
5624
5850
  }
5625
5851
  const classes = ["rf-avatar-group", spacingClass, sxClass, className].filter(Boolean).join(" ");
5626
5852
  const avatarsToRender = [...visibleChildren].reverse();
5627
- return /* @__PURE__ */ import_react29.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react29.default.createElement(
5853
+ return /* @__PURE__ */ import_react30.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react30.default.createElement(
5628
5854
  Avatar,
5629
5855
  {
5630
5856
  className: "rf-avatar-group__overflow",
@@ -5636,7 +5862,7 @@ var AvatarGroup = ({
5636
5862
  ), avatarsToRender.map((child, i) => {
5637
5863
  if (typeof spacing === "number") {
5638
5864
  const typedChild = child;
5639
- return import_react29.default.cloneElement(typedChild, {
5865
+ return import_react30.default.cloneElement(typedChild, {
5640
5866
  key: i,
5641
5867
  style: {
5642
5868
  marginLeft: i < avatarsToRender.length - 1 ? -spacing : 0,
@@ -5650,7 +5876,7 @@ var AvatarGroup = ({
5650
5876
  AvatarGroup.displayName = "AvatarGroup";
5651
5877
 
5652
5878
  // lib/Chip/Chip.tsx
5653
- var import_react30 = __toESM(require("react"), 1);
5879
+ var import_react31 = __toESM(require("react"), 1);
5654
5880
  var Chip = ({
5655
5881
  label,
5656
5882
  onDelete,
@@ -5688,7 +5914,7 @@ var Chip = ({
5688
5914
  onDelete();
5689
5915
  }
5690
5916
  };
5691
- return /* @__PURE__ */ import_react30.default.createElement(
5917
+ return /* @__PURE__ */ import_react31.default.createElement(
5692
5918
  "div",
5693
5919
  {
5694
5920
  className: classes,
@@ -5699,10 +5925,10 @@ var Chip = ({
5699
5925
  onKeyDown: !disabled ? handleKeyDown : void 0,
5700
5926
  "aria-disabled": disabled || void 0
5701
5927
  },
5702
- avatar && /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-chip__avatar" }, avatar),
5703
- !avatar && icon && /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-chip__icon", "aria-hidden": "true" }, icon),
5704
- /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-chip__label" }, label),
5705
- onDelete && /* @__PURE__ */ import_react30.default.createElement(
5928
+ avatar && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__avatar" }, avatar),
5929
+ !avatar && icon && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__icon", "aria-hidden": "true" }, icon),
5930
+ /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__label" }, label),
5931
+ onDelete && /* @__PURE__ */ import_react31.default.createElement(
5706
5932
  "button",
5707
5933
  {
5708
5934
  className: "rf-chip__delete",
@@ -5723,7 +5949,7 @@ var Chip = ({
5723
5949
  Chip.displayName = "Chip";
5724
5950
 
5725
5951
  // lib/Divider/Divider.tsx
5726
- var import_react31 = __toESM(require("react"), 1);
5952
+ var import_react32 = __toESM(require("react"), 1);
5727
5953
  var Divider = ({
5728
5954
  orientation = "horizontal",
5729
5955
  variant = "fullWidth",
@@ -5737,7 +5963,7 @@ var Divider = ({
5737
5963
  sx
5738
5964
  }) => {
5739
5965
  const sxClass = useSx(sx);
5740
- const hasChildren = import_react31.default.Children.count(children) > 0;
5966
+ const hasChildren = import_react32.default.Children.count(children) > 0;
5741
5967
  const variantClass = variant === "inset" ? "rf-divider--inset" : variant === "middle" ? "rf-divider--middle" : "";
5742
5968
  const classes = [
5743
5969
  "rf-divider",
@@ -5753,7 +5979,7 @@ var Divider = ({
5753
5979
  ].filter(Boolean).join(" ");
5754
5980
  const Tag = component || (hasChildren ? "div" : "hr");
5755
5981
  if (!hasChildren) {
5756
- return /* @__PURE__ */ import_react31.default.createElement(
5982
+ return /* @__PURE__ */ import_react32.default.createElement(
5757
5983
  Tag,
5758
5984
  {
5759
5985
  className: classes,
@@ -5762,7 +5988,7 @@ var Divider = ({
5762
5988
  }
5763
5989
  );
5764
5990
  }
5765
- return /* @__PURE__ */ import_react31.default.createElement(
5991
+ return /* @__PURE__ */ import_react32.default.createElement(
5766
5992
  Tag,
5767
5993
  {
5768
5994
  className: classes,
@@ -5770,13 +5996,13 @@ var Divider = ({
5770
5996
  role: "separator",
5771
5997
  "aria-orientation": orientation
5772
5998
  },
5773
- /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-divider__text" }, children)
5999
+ /* @__PURE__ */ import_react32.default.createElement("span", { className: "rf-divider__text" }, children)
5774
6000
  );
5775
6001
  };
5776
6002
  Divider.displayName = "Divider";
5777
6003
 
5778
6004
  // lib/List/List.tsx
5779
- var import_react32 = __toESM(require("react"), 1);
6005
+ var import_react33 = __toESM(require("react"), 1);
5780
6006
  var List = ({
5781
6007
  dense = false,
5782
6008
  disablePadding = false,
@@ -5794,7 +6020,7 @@ var List = ({
5794
6020
  sxClass,
5795
6021
  className
5796
6022
  ].filter(Boolean).join(" ");
5797
- return /* @__PURE__ */ import_react32.default.createElement("ul", { className: classes, style }, subheader, children);
6023
+ return /* @__PURE__ */ import_react33.default.createElement("ul", { className: classes, style }, subheader, children);
5798
6024
  };
5799
6025
  List.displayName = "List";
5800
6026
  var ListItem = ({
@@ -5818,7 +6044,7 @@ var ListItem = ({
5818
6044
  sxClass,
5819
6045
  className
5820
6046
  ].filter(Boolean).join(" ");
5821
- return /* @__PURE__ */ import_react32.default.createElement("li", { className: classes, style }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "rf-list-item__content" }, children), secondaryAction && /* @__PURE__ */ import_react32.default.createElement("div", { className: "rf-list-item__secondary-action" }, secondaryAction));
6047
+ return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, style }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "rf-list-item__content" }, children), secondaryAction && /* @__PURE__ */ import_react33.default.createElement("div", { className: "rf-list-item__secondary-action" }, secondaryAction));
5822
6048
  };
5823
6049
  ListItem.displayName = "ListItem";
5824
6050
  var ListItemText = ({
@@ -5835,12 +6061,12 @@ var ListItemText = ({
5835
6061
  inset ? "rf-list-item-text--inset" : "",
5836
6062
  sxClass
5837
6063
  ].filter(Boolean).join(" ");
5838
- return /* @__PURE__ */ import_react32.default.createElement("div", { className: classes }, /* @__PURE__ */ import_react32.default.createElement("p", { className: "rf-list-item-text__primary", ...primaryTypographyProps }, primary), secondary && /* @__PURE__ */ import_react32.default.createElement("p", { className: "rf-list-item-text__secondary", ...secondaryTypographyProps }, secondary));
6064
+ return /* @__PURE__ */ import_react33.default.createElement("div", { className: classes }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "rf-list-item-text__primary", ...primaryTypographyProps }, primary), secondary && /* @__PURE__ */ import_react33.default.createElement("p", { className: "rf-list-item-text__secondary", ...secondaryTypographyProps }, secondary));
5839
6065
  };
5840
6066
  ListItemText.displayName = "ListItemText";
5841
6067
  var ListItemIcon = ({ children, sx }) => {
5842
6068
  const sxClass = useSx(sx);
5843
- return /* @__PURE__ */ import_react32.default.createElement("div", { className: ["rf-list-item-icon", sxClass].filter(Boolean).join(" "), "aria-hidden": "true" }, children);
6069
+ return /* @__PURE__ */ import_react33.default.createElement("div", { className: ["rf-list-item-icon", sxClass].filter(Boolean).join(" "), "aria-hidden": "true" }, children);
5844
6070
  };
5845
6071
  ListItemIcon.displayName = "ListItemIcon";
5846
6072
  var ListItemButton = ({
@@ -5872,7 +6098,7 @@ var ListItemButton = ({
5872
6098
  "aria-disabled": disabled || void 0
5873
6099
  };
5874
6100
  if (href) {
5875
- return /* @__PURE__ */ import_react32.default.createElement(
6101
+ return /* @__PURE__ */ import_react33.default.createElement(
5876
6102
  "a",
5877
6103
  {
5878
6104
  href,
@@ -5883,7 +6109,7 @@ var ListItemButton = ({
5883
6109
  children
5884
6110
  );
5885
6111
  }
5886
- return /* @__PURE__ */ import_react32.default.createElement(
6112
+ return /* @__PURE__ */ import_react33.default.createElement(
5887
6113
  "button",
5888
6114
  {
5889
6115
  type: "button",
@@ -5912,12 +6138,12 @@ var ListSubheader = ({
5912
6138
  color !== "default" ? `rf-list-subheader--color-${color}` : "",
5913
6139
  sxClass
5914
6140
  ].filter(Boolean).join(" ");
5915
- return /* @__PURE__ */ import_react32.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
6141
+ return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
5916
6142
  };
5917
6143
  ListSubheader.displayName = "ListSubheader";
5918
6144
 
5919
6145
  // lib/Typography/Typography.tsx
5920
- var import_react33 = __toESM(require("react"), 1);
6146
+ var import_react34 = __toESM(require("react"), 1);
5921
6147
  var VARIANT_ELEMENT_MAP = {
5922
6148
  h1: "h1",
5923
6149
  h2: "h2",
@@ -5925,349 +6151,124 @@ var VARIANT_ELEMENT_MAP = {
5925
6151
  h4: "h4",
5926
6152
  h5: "h5",
5927
6153
  h6: "h6",
5928
- subtitle1: "h6",
5929
- subtitle2: "h6",
5930
- body1: "p",
5931
- body2: "p",
5932
- caption: "span",
5933
- overline: "span",
5934
- button: "span"
5935
- };
5936
- var COLOR_CLASSES = {
5937
- primary: "rf-typography--color-primary",
5938
- secondary: "rf-typography--color-secondary",
5939
- textPrimary: "rf-typography--color-textPrimary",
5940
- textSecondary: "rf-typography--color-textSecondary",
5941
- error: "rf-typography--color-error"
5942
- };
5943
- var WEIGHT_CLASSES = {
5944
- light: "rf-typography--weight-light",
5945
- regular: "rf-typography--weight-regular",
5946
- medium: "rf-typography--weight-medium",
5947
- bold: "rf-typography--weight-bold"
5948
- };
5949
- var Typography = ({
5950
- variant = "body1",
5951
- component,
5952
- align = "inherit",
5953
- color,
5954
- noWrap = false,
5955
- gutterBottom = false,
5956
- paragraph = false,
5957
- fontWeight,
5958
- children,
5959
- className = "",
5960
- style,
5961
- sx
5962
- }) => {
5963
- const sxClass = useSx(sx);
5964
- const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
5965
- const colorClass = color ? COLOR_CLASSES[color] : "";
5966
- const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
5967
- let weightClass = "";
5968
- let weightStyle = {};
5969
- if (fontWeight !== void 0) {
5970
- if (typeof fontWeight === "string") {
5971
- weightClass = WEIGHT_CLASSES[fontWeight] || "";
5972
- } else {
5973
- weightStyle = { fontWeight };
5974
- }
5975
- }
5976
- const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
5977
- const classes = [
5978
- "rf-typography",
5979
- `rf-typography--${variant}`,
5980
- alignClass,
5981
- colorClass,
5982
- weightClass,
5983
- noWrap ? "rf-typography--no-wrap" : "",
5984
- gutterBottom ? "rf-typography--gutter-bottom" : "",
5985
- paragraph ? "rf-typography--paragraph" : "",
5986
- sxClass,
5987
- className
5988
- ].filter(Boolean).join(" ");
5989
- const inlineStyle = {
5990
- ...colorStyle,
5991
- ...weightStyle,
5992
- ...style
5993
- };
5994
- return /* @__PURE__ */ import_react33.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
5995
- };
5996
- Typography.displayName = "Typography";
5997
-
5998
- // lib/Skeleton/Skeleton.tsx
5999
- var import_react34 = __toESM(require("react"), 1);
6000
- var Skeleton = ({
6001
- variant = "text",
6002
- width,
6003
- height,
6004
- animation = "pulse",
6005
- className = "",
6006
- style,
6007
- sx
6008
- }) => {
6009
- const sxClass = useSx(sx);
6010
- const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
6011
- const classes = [
6012
- "rf-skeleton",
6013
- `rf-skeleton--${variant}`,
6014
- animationClass,
6015
- sxClass,
6016
- className
6017
- ].filter(Boolean).join(" ");
6018
- const inlineStyle = {
6019
- ...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
6020
- ...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
6021
- ...style
6022
- };
6023
- if (variant === "text" && !height) {
6024
- }
6025
- if (variant === "circular" && !width && !height) {
6026
- inlineStyle.width = 40;
6027
- inlineStyle.height = 40;
6028
- }
6029
- if (variant === "rectangular" && !height) {
6030
- inlineStyle.height = 140;
6031
- }
6032
- if (variant === "rounded" && !height) {
6033
- inlineStyle.height = 140;
6034
- }
6035
- return /* @__PURE__ */ import_react34.default.createElement(
6036
- "span",
6037
- {
6038
- className: classes,
6039
- style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
6040
- "aria-busy": "true",
6041
- "aria-live": "polite"
6042
- }
6043
- );
6044
- };
6045
- Skeleton.displayName = "Skeleton";
6046
-
6047
- // lib/Tooltip/Tooltip.tsx
6048
- var import_react35 = __toESM(require("react"), 1);
6049
- var import_react_dom5 = __toESM(require("react-dom"), 1);
6050
- var GAP = 8;
6051
- function computePosition(anchor, tooltip, placement) {
6052
- const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
6053
- const { width: tW, height: tH } = tooltip;
6054
- let top = 0;
6055
- let left = 0;
6056
- let arrowLeft;
6057
- let arrowTop;
6058
- switch (placement) {
6059
- case "top":
6060
- top = aTop - tH - GAP;
6061
- left = aLeft + aW / 2 - tW / 2;
6062
- arrowLeft = tW / 2 - 4;
6063
- break;
6064
- case "top-start":
6065
- top = aTop - tH - GAP;
6066
- left = aLeft;
6067
- arrowLeft = Math.min(aW / 2, tW - 16);
6068
- break;
6069
- case "top-end":
6070
- top = aTop - tH - GAP;
6071
- left = aLeft + aW - tW;
6072
- arrowLeft = Math.max(tW - aW / 2 - 4, 8);
6073
- break;
6074
- case "bottom":
6075
- top = aTop + aH + GAP;
6076
- left = aLeft + aW / 2 - tW / 2;
6077
- arrowLeft = tW / 2 - 4;
6078
- break;
6079
- case "bottom-start":
6080
- top = aTop + aH + GAP;
6081
- left = aLeft;
6082
- arrowLeft = Math.min(aW / 2, tW - 16);
6083
- break;
6084
- case "bottom-end":
6085
- top = aTop + aH + GAP;
6086
- left = aLeft + aW - tW;
6087
- arrowLeft = Math.max(tW - aW / 2 - 4, 8);
6088
- break;
6089
- case "left":
6090
- top = aTop + aH / 2 - tH / 2;
6091
- left = aLeft - tW - GAP;
6092
- arrowTop = tH / 2 - 4;
6093
- break;
6094
- case "left-start":
6095
- top = aTop;
6096
- left = aLeft - tW - GAP;
6097
- arrowTop = Math.min(aH / 2, tH - 16);
6098
- break;
6099
- case "left-end":
6100
- top = aTop + aH - tH;
6101
- left = aLeft - tW - GAP;
6102
- arrowTop = Math.max(tH - aH / 2 - 4, 8);
6103
- break;
6104
- case "right":
6105
- top = aTop + aH / 2 - tH / 2;
6106
- left = aLeft + aW + GAP;
6107
- arrowTop = tH / 2 - 4;
6108
- break;
6109
- case "right-start":
6110
- top = aTop;
6111
- left = aLeft + aW + GAP;
6112
- arrowTop = Math.min(aH / 2, tH - 16);
6113
- break;
6114
- case "right-end":
6115
- top = aTop + aH - tH;
6116
- left = aLeft + aW + GAP;
6117
- arrowTop = Math.max(tH - aH / 2 - 4, 8);
6118
- break;
6119
- default:
6120
- top = aTop - tH - GAP;
6121
- left = aLeft + aW / 2 - tW / 2;
6122
- }
6123
- const vw = window.innerWidth;
6124
- const vh = window.innerHeight;
6125
- left = Math.max(8, Math.min(left, vw - tW - 8));
6126
- top = Math.max(8, Math.min(top, vh - tH - 8));
6127
- return { top, left, arrowLeft, arrowTop };
6128
- }
6129
- var Tooltip = ({
6130
- title,
6131
- placement = "top",
6132
- arrow = false,
6133
- open: controlledOpen,
6134
- disableHoverListener = false,
6135
- disableFocusListener = false,
6136
- enterDelay = 100,
6137
- leaveDelay = 0,
6154
+ subtitle1: "h6",
6155
+ subtitle2: "h6",
6156
+ body1: "p",
6157
+ body2: "p",
6158
+ caption: "span",
6159
+ overline: "span",
6160
+ button: "span"
6161
+ };
6162
+ var COLOR_CLASSES = {
6163
+ primary: "rf-typography--color-primary",
6164
+ secondary: "rf-typography--color-secondary",
6165
+ textPrimary: "rf-typography--color-textPrimary",
6166
+ textSecondary: "rf-typography--color-textSecondary",
6167
+ error: "rf-typography--color-error"
6168
+ };
6169
+ var WEIGHT_CLASSES = {
6170
+ light: "rf-typography--weight-light",
6171
+ regular: "rf-typography--weight-regular",
6172
+ medium: "rf-typography--weight-medium",
6173
+ bold: "rf-typography--weight-bold"
6174
+ };
6175
+ var Typography = ({
6176
+ variant = "body1",
6177
+ component,
6178
+ align = "inherit",
6179
+ color,
6180
+ noWrap = false,
6181
+ gutterBottom = false,
6182
+ paragraph = false,
6183
+ fontWeight,
6138
6184
  children,
6139
- followCursor = false,
6140
6185
  className = "",
6141
6186
  style,
6142
6187
  sx
6143
6188
  }) => {
6144
6189
  const sxClass = useSx(sx);
6145
- const [internalOpen, setInternalOpen] = (0, import_react35.useState)(false);
6146
- const [position, setPosition] = (0, import_react35.useState)({ top: 0, left: 0 });
6147
- const anchorRef = (0, import_react35.useRef)(null);
6148
- const tooltipRef = (0, import_react35.useRef)(null);
6149
- const enterTimer = (0, import_react35.useRef)(null);
6150
- const leaveTimer = (0, import_react35.useRef)(null);
6151
- const cursorPos = (0, import_react35.useRef)({ x: 0, y: 0 });
6152
- const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
6153
- const clearTimers = (0, import_react35.useCallback)(() => {
6154
- if (enterTimer.current) clearTimeout(enterTimer.current);
6155
- if (leaveTimer.current) clearTimeout(leaveTimer.current);
6156
- }, []);
6157
- const updatePosition = (0, import_react35.useCallback)(() => {
6158
- if (!anchorRef.current || !tooltipRef.current) return;
6159
- const anchorRect = anchorRef.current.getBoundingClientRect();
6160
- const tooltipRect = tooltipRef.current.getBoundingClientRect();
6161
- if (followCursor) {
6162
- const fakeRect = {
6163
- top: cursorPos.current.y,
6164
- left: cursorPos.current.x,
6165
- right: cursorPos.current.x,
6166
- bottom: cursorPos.current.y,
6167
- width: 0,
6168
- height: 0,
6169
- x: cursorPos.current.x,
6170
- y: cursorPos.current.y,
6171
- toJSON: () => ({})
6172
- };
6173
- setPosition(computePosition(fakeRect, tooltipRect, placement));
6174
- } else {
6175
- setPosition(computePosition(anchorRect, tooltipRect, placement));
6176
- }
6177
- }, [placement, followCursor]);
6178
- (0, import_react35.useEffect)(() => {
6179
- if (isOpen) {
6180
- requestAnimationFrame(() => {
6181
- updatePosition();
6182
- });
6183
- }
6184
- }, [isOpen, updatePosition]);
6185
- const handleOpen = (0, import_react35.useCallback)(() => {
6186
- clearTimers();
6187
- if (enterDelay > 0) {
6188
- enterTimer.current = setTimeout(() => {
6189
- setInternalOpen(true);
6190
- }, enterDelay);
6191
- } else {
6192
- setInternalOpen(true);
6193
- }
6194
- }, [enterDelay, clearTimers]);
6195
- const handleClose = (0, import_react35.useCallback)(() => {
6196
- clearTimers();
6197
- if (leaveDelay > 0) {
6198
- leaveTimer.current = setTimeout(() => {
6199
- setInternalOpen(false);
6200
- }, leaveDelay);
6190
+ const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
6191
+ const colorClass = color ? COLOR_CLASSES[color] : "";
6192
+ const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
6193
+ let weightClass = "";
6194
+ let weightStyle = {};
6195
+ if (fontWeight !== void 0) {
6196
+ if (typeof fontWeight === "string") {
6197
+ weightClass = WEIGHT_CLASSES[fontWeight] || "";
6201
6198
  } else {
6202
- setInternalOpen(false);
6199
+ weightStyle = { fontWeight };
6203
6200
  }
6204
- }, [leaveDelay, clearTimers]);
6205
- const handleMouseMove = (0, import_react35.useCallback)(
6206
- (e) => {
6207
- cursorPos.current = { x: e.clientX, y: e.clientY };
6208
- if (isOpen && followCursor) {
6209
- updatePosition();
6210
- }
6211
- },
6212
- [isOpen, followCursor, updatePosition]
6213
- );
6214
- (0, import_react35.useEffect)(() => {
6215
- return () => clearTimers();
6216
- }, [clearTimers]);
6217
- const childProps = {};
6218
- if (!disableHoverListener) {
6219
- childProps.onMouseEnter = handleOpen;
6220
- childProps.onMouseLeave = handleClose;
6221
- childProps.onMouseMove = followCursor ? handleMouseMove : void 0;
6222
- }
6223
- if (!disableFocusListener) {
6224
- childProps.onFocus = handleOpen;
6225
- childProps.onBlur = handleClose;
6226
6201
  }
6227
- const tooltipClasses = [
6228
- "rf-tooltip",
6229
- `rf-tooltip--placement-${placement}`,
6230
- isOpen ? "rf-tooltip--visible" : "",
6202
+ const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
6203
+ const classes = [
6204
+ "rf-typography",
6205
+ `rf-typography--${variant}`,
6206
+ alignClass,
6207
+ colorClass,
6208
+ weightClass,
6209
+ noWrap ? "rf-typography--no-wrap" : "",
6210
+ gutterBottom ? "rf-typography--gutter-bottom" : "",
6211
+ paragraph ? "rf-typography--paragraph" : "",
6231
6212
  sxClass,
6232
6213
  className
6233
6214
  ].filter(Boolean).join(" ");
6234
- const tooltipElement = /* @__PURE__ */ import_react35.default.createElement(
6235
- "div",
6236
- {
6237
- ref: tooltipRef,
6238
- className: tooltipClasses,
6239
- style: {
6240
- top: position.top,
6241
- left: position.left,
6242
- ...style
6243
- },
6244
- role: "tooltip",
6245
- "aria-hidden": !isOpen
6246
- },
6247
- title,
6248
- arrow && /* @__PURE__ */ import_react35.default.createElement(
6249
- "span",
6250
- {
6251
- className: "rf-tooltip__arrow",
6252
- style: {
6253
- ...position.arrowLeft !== void 0 ? { left: position.arrowLeft } : {},
6254
- ...position.arrowTop !== void 0 ? { top: position.arrowTop } : {}
6255
- }
6256
- }
6257
- )
6258
- );
6259
- return /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, /* @__PURE__ */ import_react35.default.createElement(
6215
+ const inlineStyle = {
6216
+ ...colorStyle,
6217
+ ...weightStyle,
6218
+ ...style
6219
+ };
6220
+ return /* @__PURE__ */ import_react34.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
6221
+ };
6222
+ Typography.displayName = "Typography";
6223
+
6224
+ // lib/Skeleton/Skeleton.tsx
6225
+ var import_react35 = __toESM(require("react"), 1);
6226
+ var Skeleton = ({
6227
+ variant = "text",
6228
+ width,
6229
+ height,
6230
+ animation = "pulse",
6231
+ className = "",
6232
+ style,
6233
+ sx
6234
+ }) => {
6235
+ const sxClass = useSx(sx);
6236
+ const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
6237
+ const classes = [
6238
+ "rf-skeleton",
6239
+ `rf-skeleton--${variant}`,
6240
+ animationClass,
6241
+ sxClass,
6242
+ className
6243
+ ].filter(Boolean).join(" ");
6244
+ const inlineStyle = {
6245
+ ...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
6246
+ ...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
6247
+ ...style
6248
+ };
6249
+ if (variant === "text" && !height) {
6250
+ }
6251
+ if (variant === "circular" && !width && !height) {
6252
+ inlineStyle.width = 40;
6253
+ inlineStyle.height = 40;
6254
+ }
6255
+ if (variant === "rectangular" && !height) {
6256
+ inlineStyle.height = 140;
6257
+ }
6258
+ if (variant === "rounded" && !height) {
6259
+ inlineStyle.height = 140;
6260
+ }
6261
+ return /* @__PURE__ */ import_react35.default.createElement(
6260
6262
  "span",
6261
6263
  {
6262
- ref: anchorRef,
6263
- style: { display: "inline-flex", position: "relative" },
6264
- "aria-describedby": isOpen ? "rf-tooltip" : void 0,
6265
- ...childProps
6266
- },
6267
- import_react35.default.cloneElement(children)
6268
- ), import_react_dom5.default.createPortal(tooltipElement, document.body));
6264
+ className: classes,
6265
+ style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
6266
+ "aria-busy": "true",
6267
+ "aria-live": "polite"
6268
+ }
6269
+ );
6269
6270
  };
6270
- Tooltip.displayName = "Tooltip";
6271
+ Skeleton.displayName = "Skeleton";
6271
6272
 
6272
6273
  // lib/Box/Box.tsx
6273
6274
  var React88 = __toESM(require("react"), 1);
@@ -8712,7 +8713,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8712
8713
  setPaused(false);
8713
8714
  }, []);
8714
8715
  (0, import_react51.useImperativeHandle)(ref, () => ({ stop: handleStop }), [handleStop]);
8715
- return /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-wrapper", ref: panelRef }, /* @__PURE__ */ import_react51.default.createElement(
8716
+ return /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-wrapper", ref: panelRef }, /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Text to Speech", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement(
8716
8717
  "button",
8717
8718
  {
8718
8719
  className: `toolbar-btn ${speaking ? "is-active" : ""}`,
@@ -8722,11 +8723,10 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8722
8723
  } else {
8723
8724
  setShowPanel(!showPanel);
8724
8725
  }
8725
- },
8726
- title: "Text to Speech"
8726
+ }
8727
8727
  },
8728
8728
  speaking ? "\u23F9" : "\u{1F50A}"
8729
- ), showPanel && !speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel-header" }, "Text to Speech"), /* @__PURE__ */ import_react51.default.createElement("label", { className: "tts-label" }, "Voice"), /* @__PURE__ */ import_react51.default.createElement(
8729
+ )), showPanel && !speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-panel-header" }, "Text to Speech"), /* @__PURE__ */ import_react51.default.createElement("label", { className: "tts-label" }, "Voice"), /* @__PURE__ */ import_react51.default.createElement(
8730
8730
  "select",
8731
8731
  {
8732
8732
  className: "tts-select",
@@ -8748,7 +8748,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8748
8748
  ), /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-info" }, editor && !editor.state.selection.empty ? "Will read selected text" : "Will read all editor text"), /* @__PURE__ */ import_react51.default.createElement("button", { className: "tts-speak-btn", onClick: () => {
8749
8749
  handleSpeak();
8750
8750
  setShowPanel(false);
8751
- } }, "\u25B6 Speak")), speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-controls" }, paused ? /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleResume, title: "Resume" }, "\u25B6") : /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handlePause, title: "Pause" }, "\u275A\u275A"), /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleStop, title: "Stop" }, "\u25A0")));
8751
+ } }, "\u25B6 Speak")), speaking && /* @__PURE__ */ import_react51.default.createElement("div", { className: "tts-controls" }, paused ? /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Resume", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleResume }, "\u25B6")) : /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Pause", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handlePause }, "\u275A\u275A")), /* @__PURE__ */ import_react51.default.createElement(Tooltip, { title: "Stop", placement: "top" }, /* @__PURE__ */ import_react51.default.createElement("button", { className: "toolbar-btn", onClick: handleStop }, "\u25A0"))));
8752
8752
  });
8753
8753
  var TextToSpeech_default = TextToSpeech;
8754
8754
 
@@ -8867,7 +8867,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8867
8867
  }, []);
8868
8868
  (0, import_react52.useImperativeHandle)(ref, () => ({ stop: stopListening }), [stopListening]);
8869
8869
  if (!supported) {
8870
- return /* @__PURE__ */ import_react52.default.createElement("button", { className: "toolbar-btn", disabled: true, title: "Speech recognition not supported in this browser" }, "\u{1F3A4}");
8870
+ return /* @__PURE__ */ import_react52.default.createElement(Tooltip, { title: "Speech recognition not supported in this browser", placement: "top" }, /* @__PURE__ */ import_react52.default.createElement("button", { className: "toolbar-btn", disabled: true }, "\u{1F3A4}"));
8871
8871
  }
8872
8872
  const LANGUAGES2 = [
8873
8873
  { code: "en-US", label: "English (US)" },
@@ -8889,7 +8889,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8889
8889
  { code: "kn-IN", label: "Kannada" },
8890
8890
  { code: "ml-IN", label: "Malayalam" }
8891
8891
  ];
8892
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(
8892
+ return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(Tooltip, { title: listening ? "Stop recording" : "Speech to Text", placement: "top" }, /* @__PURE__ */ import_react52.default.createElement(
8893
8893
  "button",
8894
8894
  {
8895
8895
  className: `toolbar-btn ${listening ? "is-active stt-recording" : ""}`,
@@ -8899,11 +8899,10 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8899
8899
  } else {
8900
8900
  setShowPanel(!showPanel);
8901
8901
  }
8902
- },
8903
- title: listening ? "Stop recording" : "Speech to Text"
8902
+ }
8904
8903
  },
8905
8904
  "\u{1F3A4}"
8906
- ), showPanel && !listening && /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel-header" }, "Speech to Text"), /* @__PURE__ */ import_react52.default.createElement("label", { className: "stt-label" }, "Language"), /* @__PURE__ */ import_react52.default.createElement(
8905
+ )), showPanel && !listening && /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-panel-header" }, "Speech to Text"), /* @__PURE__ */ import_react52.default.createElement("label", { className: "stt-label" }, "Language"), /* @__PURE__ */ import_react52.default.createElement(
8907
8906
  "select",
8908
8907
  {
8909
8908
  className: "stt-select",
@@ -9057,16 +9056,15 @@ var AICommands = ({ editor, onAICommand }) => {
9057
9056
  setPreviousResults([]);
9058
9057
  }, []);
9059
9058
  if (!editor) return null;
9060
- return /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-wrapper", ref: panelRef }, /* @__PURE__ */ import_react53.default.createElement(
9059
+ return /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-wrapper", ref: panelRef }, /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "AI Commands", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
9061
9060
  "button",
9062
9061
  {
9063
9062
  className: `toolbar-btn ${open ? "is-active" : ""}`,
9064
- onClick: () => setOpen(!open),
9065
- title: "AI Commands"
9063
+ onClick: () => setOpen(!open)
9066
9064
  },
9067
9065
  /* @__PURE__ */ import_react53.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", stroke: "none" }, /* @__PURE__ */ import_react53.default.createElement("path", { d: "M9 2l1.5 3L14 6.5 10.5 8 9 11 7.5 8 4 6.5 7.5 5zM18 10l1 2 2 1-2 1-1 2-1-2-2-1 2-1zM5 17l1.5 3L10 21.5 6.5 23 5 26 3.5 23 0 21.5 3.5 20z" })),
9068
9066
  /* @__PURE__ */ import_react53.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
9069
- ), open && /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-panel" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-header" }, "AI Commands"), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-list" }, AI_COMMANDS.map((cmd) => /* @__PURE__ */ import_react53.default.createElement(
9067
+ )), open && /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-panel" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-header" }, "AI Commands"), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-list" }, AI_COMMANDS.map((cmd) => /* @__PURE__ */ import_react53.default.createElement(
9070
9068
  "button",
9071
9069
  {
9072
9070
  key: cmd.id,
@@ -9083,16 +9081,15 @@ var AICommands = ({ editor, onAICommand }) => {
9083
9081
  onChange: (e) => setPromptText(e.target.value),
9084
9082
  rows: 3
9085
9083
  }
9086
- ), /* @__PURE__ */ import_react53.default.createElement(
9084
+ ), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Run with custom prompt", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
9087
9085
  "button",
9088
9086
  {
9089
9087
  className: "ai-modal-robot-btn",
9090
9088
  onClick: () => fetchAIResult(promptText, originalText),
9091
- disabled: loading,
9092
- title: "Run with custom prompt"
9089
+ disabled: loading
9093
9090
  },
9094
9091
  /* @__PURE__ */ import_react53.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react53.default.createElement("rect", { x: "3", y: "11", width: "18", height: "10", rx: "2" }), /* @__PURE__ */ import_react53.default.createElement("circle", { cx: "9", cy: "16", r: "1" }), /* @__PURE__ */ import_react53.default.createElement("circle", { cx: "15", cy: "16", r: "1" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M12 2v4" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M8 7h8" }))
9095
- ))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
9092
+ )))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
9096
9093
  "button",
9097
9094
  {
9098
9095
  className: "ai-modal-action-btn ai-modal-insert-btn",
@@ -9108,16 +9105,15 @@ var AICommands = ({ editor, onAICommand }) => {
9108
9105
  disabled: loading || !resultText
9109
9106
  },
9110
9107
  "Insert After"
9111
- ), /* @__PURE__ */ import_react53.default.createElement(
9108
+ ), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Generate another response", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
9112
9109
  "button",
9113
9110
  {
9114
9111
  className: "ai-modal-action-btn ai-modal-refresh-btn",
9115
9112
  onClick: handleRefresh,
9116
- disabled: loading,
9117
- title: "Generate another response"
9113
+ disabled: loading
9118
9114
  },
9119
9115
  /* @__PURE__ */ import_react53.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react53.default.createElement("path", { d: "M21 2v6h-6" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M3 12a9 9 0 0 1 15-6.7L21 8" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M3 22v-6h6" }), /* @__PURE__ */ import_react53.default.createElement("path", { d: "M21 12a9 9 0 0 1-15 6.7L3 16" }))
9120
- )), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result-section" }, loading ? /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-loading" }, /* @__PURE__ */ import_react53.default.createElement("span", { className: "ai-spinner" }), /* @__PURE__ */ import_react53.default.createElement("span", null, "Generating response...")) : /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result" }, resultText)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-footer" }, /* @__PURE__ */ import_react53.default.createElement("button", { className: "ai-modal-cancel-btn", onClick: handleCancel }, "CANCEL")))),
9116
+ ))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result-section" }, loading ? /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-loading" }, /* @__PURE__ */ import_react53.default.createElement("span", { className: "ai-spinner" }), /* @__PURE__ */ import_react53.default.createElement("span", null, "Generating response...")) : /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-result" }, resultText)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-footer" }, /* @__PURE__ */ import_react53.default.createElement("button", { className: "ai-modal-cancel-btn", onClick: handleCancel }, "CANCEL")))),
9121
9117
  document.body
9122
9118
  ));
9123
9119
  };
@@ -9335,7 +9331,7 @@ var TranslateModal = ({ editor, onClose, onTranslate, initialSource, initialTarg
9335
9331
  },
9336
9332
  /* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-code" }, lang.code),
9337
9333
  /* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-name" }, lang.name)
9338
- )))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-swap" }, /* @__PURE__ */ import_react54.default.createElement("button", { className: "translate-swap-btn", onClick: handleSwap, title: "Swap languages" }, "\u21C4")), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-col" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-filter" }, /* @__PURE__ */ import_react54.default.createElement(
9334
+ )))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-swap" }, /* @__PURE__ */ import_react54.default.createElement(Tooltip, { title: "Swap languages", placement: "top" }, /* @__PURE__ */ import_react54.default.createElement("button", { className: "translate-swap-btn", onClick: handleSwap }, "\u21C4"))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-col" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-filter" }, /* @__PURE__ */ import_react54.default.createElement(
9339
9335
  "input",
9340
9336
  {
9341
9337
  type: "text",
@@ -10217,16 +10213,15 @@ var Dropdown = ({ trigger, children, className = "", keepOpen = false }) => {
10217
10213
  };
10218
10214
  position();
10219
10215
  }, [open]);
10220
- return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(
10216
+ return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: trigger.title || "", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10221
10217
  "button",
10222
10218
  {
10223
10219
  className: `toolbar-btn ${trigger.className || ""}`,
10224
- onClick: () => setOpen(!open),
10225
- title: trigger.title
10220
+ onClick: () => setOpen(!open)
10226
10221
  },
10227
10222
  trigger.label,
10228
10223
  /* @__PURE__ */ import_react55.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
10229
- ), open && (0, import_react_dom13.createPortal)(
10224
+ )), open && (0, import_react_dom13.createPortal)(
10230
10225
  /* @__PURE__ */ import_react55.default.createElement("div", { className: "rf-rte-wrapper rf-rte-dropdown-portal" }, /* @__PURE__ */ import_react55.default.createElement("div", { ref: menuRef, className: "dropdown-menu dropdown-menu-fixed", onClick: keepOpen ? void 0 : () => setOpen(false) }, typeof children === "function" ? children(() => setOpen(false)) : children)),
10231
10226
  document.body
10232
10227
  ));
@@ -10472,16 +10467,14 @@ var ColorPickerPanel = ({ editor, onClose }) => {
10472
10467
  onClick: () => setTab("text")
10473
10468
  },
10474
10469
  "Text"
10475
- )), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(
10470
+ )), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(Tooltip, { key: i, title: color, placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10476
10471
  "button",
10477
10472
  {
10478
- key: i,
10479
10473
  className: `color-picker-swatch ${color === "#ffffff" ? "white-swatch" : ""}${activeColor && activeColor.toLowerCase() === color.toLowerCase() ? " swatch-active" : ""}`,
10480
10474
  style: { background: color },
10481
- onClick: () => applyColor(color),
10482
- title: color
10475
+ onClick: () => applyColor(color)
10483
10476
  }
10484
- ))), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-footer" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-preview", style: { background: activeColor || "#000" } }), /* @__PURE__ */ import_react55.default.createElement("button", { className: "color-picker-remove", onClick: removeColor, title: "Remove color" }, "\u2713")));
10477
+ )))), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-footer" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-preview", style: { background: activeColor || "#000" } }), /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Remove color", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "color-picker-remove", onClick: removeColor }, "\u2713"))));
10485
10478
  };
10486
10479
  var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTextToSpeech, onClose, onImageUpload, visibleButtons, isFullscreen, onToggleFullscreen }) => {
10487
10480
  const [, setEditorState] = (0, import_react55.useState)(0);
@@ -10562,25 +10555,23 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10562
10555
  setTimeout(() => setTranslateStatus(""), 2e3);
10563
10556
  }, [editor, translateSource, translateTarget, onTranslate]);
10564
10557
  if (!editor) return null;
10565
- return /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: `toolbar-row ${onClose ? "with-close" : ""}` }, (show("undo") || show("redo")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("undo") && /* @__PURE__ */ import_react55.default.createElement(
10558
+ return /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: `toolbar-row ${onClose ? "with-close" : ""}` }, (show("undo") || show("redo")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("undo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Undo (Ctrl+Z)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10566
10559
  "button",
10567
10560
  {
10568
10561
  className: "toolbar-btn",
10569
10562
  onClick: () => editor.chain().focus().undo().run(),
10570
- disabled: !editor.can().undo(),
10571
- title: "Undo (Ctrl+Z)"
10563
+ disabled: !editor.can().undo()
10572
10564
  },
10573
10565
  /* @__PURE__ */ import_react55.default.createElement(IconUndo, null)
10574
- ), show("redo") && /* @__PURE__ */ import_react55.default.createElement(
10566
+ )), show("redo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Redo (Ctrl+Y)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10575
10567
  "button",
10576
10568
  {
10577
10569
  className: "toolbar-btn",
10578
10570
  onClick: () => editor.chain().focus().redo().run(),
10579
- disabled: !editor.can().redo(),
10580
- title: "Redo (Ctrl+Y)"
10571
+ disabled: !editor.can().redo()
10581
10572
  },
10582
10573
  /* @__PURE__ */ import_react55.default.createElement(IconRedo, null)
10583
- )), show("ai") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, /* @__PURE__ */ import_react55.default.createElement(AICommands_default, { editor, onAICommand })), /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("paragraph") && /* @__PURE__ */ import_react55.default.createElement(
10574
+ ))), show("ai") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, /* @__PURE__ */ import_react55.default.createElement(AICommands_default, { editor, onAICommand })), /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("paragraph") && /* @__PURE__ */ import_react55.default.createElement(
10584
10575
  Dropdown,
10585
10576
  {
10586
10577
  trigger: {
@@ -10711,23 +10702,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10711
10702
  keepOpen: true
10712
10703
  },
10713
10704
  (close) => /* @__PURE__ */ import_react55.default.createElement(ColorPickerPanel, { editor, onClose: close })
10714
- ), show("bold") && /* @__PURE__ */ import_react55.default.createElement(
10705
+ ), show("bold") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Bold (Ctrl+B)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10715
10706
  "button",
10716
10707
  {
10717
10708
  className: `toolbar-btn ${editor.isActive("bold") ? "is-active" : ""}`,
10718
- onClick: () => editor.chain().focus().toggleBold().run(),
10719
- title: "Bold (Ctrl+B)"
10709
+ onClick: () => editor.chain().focus().toggleBold().run()
10720
10710
  },
10721
10711
  /* @__PURE__ */ import_react55.default.createElement(IconBold, null)
10722
- ), show("italic") && /* @__PURE__ */ import_react55.default.createElement(
10712
+ )), show("italic") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Italic (Ctrl+I)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10723
10713
  "button",
10724
10714
  {
10725
10715
  className: `toolbar-btn ${editor.isActive("italic") ? "is-active" : ""}`,
10726
- onClick: () => editor.chain().focus().toggleItalic().run(),
10727
- title: "Italic (Ctrl+I)"
10716
+ onClick: () => editor.chain().focus().toggleItalic().run()
10728
10717
  },
10729
10718
  /* @__PURE__ */ import_react55.default.createElement(IconItalic, null)
10730
- ), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
10719
+ )), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
10731
10720
  Dropdown,
10732
10721
  {
10733
10722
  trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconStrike, null), title: "Text decoration", className: editor.isActive("strike") ? "is-active" : "" }
@@ -10752,15 +10741,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10752
10741
  c.run();
10753
10742
  }
10754
10743
  } }, "\u2715 Clear formatting")
10755
- ), show("link") && /* @__PURE__ */ import_react55.default.createElement(
10744
+ ), show("link") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Insert Link", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10756
10745
  "button",
10757
10746
  {
10758
10747
  className: `toolbar-btn ${editor.isActive("link") ? "is-active" : ""}`,
10759
- onClick: setLink,
10760
- title: "Insert Link"
10748
+ onClick: setLink
10761
10749
  },
10762
10750
  /* @__PURE__ */ import_react55.default.createElement(IconLink, null)
10763
- ), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
10751
+ )), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
10764
10752
  Dropdown,
10765
10753
  {
10766
10754
  trigger: {
@@ -10787,15 +10775,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10787
10775
  lh
10788
10776
  );
10789
10777
  })
10790
- )), (show("ul") || show("ol")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("ul") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
10778
+ )), (show("ul") || show("ol")) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-group" }, show("ul") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: editor.isActive("bulletList") ? "Disable Bullet List" : "Enable Bullet List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10791
10779
  "button",
10792
10780
  {
10793
10781
  className: `toolbar-btn ${editor.isActive("bulletList") ? "is-active" : ""}`,
10794
- onClick: () => editor.chain().focus().toggleBulletList().run(),
10795
- title: editor.isActive("bulletList") ? "Disable Bullet List" : "Enable Bullet List"
10782
+ onClick: () => editor.chain().focus().toggleBulletList().run()
10796
10783
  },
10797
10784
  /* @__PURE__ */ import_react55.default.createElement(IconBulletList, null)
10798
- ), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10785
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10799
10786
  { label: "Default", style: null, icon: "\u2022" },
10800
10787
  { label: "Circle", style: "circle", icon: "\u25CB" },
10801
10788
  { label: "Dot", style: "disc", icon: "\u2219" },
@@ -10828,15 +10815,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10828
10815
  /* @__PURE__ */ import_react55.default.createElement("span", { className: "bullet-style-icon" }, item.icon),
10829
10816
  " ",
10830
10817
  item.label
10831
- )))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
10818
+ )))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: editor.isActive("orderedList") ? "Disable Ordered List" : "Enable Ordered List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10832
10819
  "button",
10833
10820
  {
10834
10821
  className: `toolbar-btn ${editor.isActive("orderedList") ? "is-active" : ""}`,
10835
- onClick: () => editor.chain().focus().toggleOrderedList().run(),
10836
- title: editor.isActive("orderedList") ? "Disable Ordered List" : "Enable Ordered List"
10822
+ onClick: () => editor.chain().focus().toggleOrderedList().run()
10837
10823
  },
10838
10824
  /* @__PURE__ */ import_react55.default.createElement(IconOrderedList, null)
10839
- ), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10825
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10840
10826
  { label: "Default", style: "decimal", icon: "1." },
10841
10827
  { label: "Lower Alpha", style: "lower-alpha", icon: "a." },
10842
10828
  { label: "Lower Greek", style: "lower-greek", icon: "\u03B1." },
@@ -10896,7 +10882,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10896
10882
  " ",
10897
10883
  item.label
10898
10884
  ))
10899
- ), show("indent") && /* @__PURE__ */ import_react55.default.createElement(
10885
+ ), show("indent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Increase Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10900
10886
  "button",
10901
10887
  {
10902
10888
  className: "toolbar-btn",
@@ -10913,11 +10899,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10913
10899
  });
10914
10900
  return true;
10915
10901
  }).run();
10916
- },
10917
- title: "Increase Indent"
10902
+ }
10918
10903
  },
10919
10904
  /* @__PURE__ */ import_react55.default.createElement(IconIndentIncrease, null)
10920
- ), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(
10905
+ )), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Decrease Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10921
10906
  "button",
10922
10907
  {
10923
10908
  className: "toolbar-btn",
@@ -10934,35 +10919,31 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10934
10919
  });
10935
10920
  return true;
10936
10921
  }).run();
10937
- },
10938
- title: "Decrease Indent"
10922
+ }
10939
10923
  },
10940
10924
  /* @__PURE__ */ import_react55.default.createElement(IconIndentDecrease, null)
10941
- )), show("table") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconTable, null), title: "Insert Table" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(TableGridSelector, { editor, onClose: close })), show("image") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconImage, null), title: "Insert Image" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(ImagePanel, { editor, onClose: close, onImageUpload })), show("video") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconVideo, null), title: "Insert Video" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(InsertPanel, { editor, onClose: close, mode: "video" })), show("cut") && /* @__PURE__ */ import_react55.default.createElement(
10925
+ ))), show("table") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconTable, null), title: "Insert Table" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(TableGridSelector, { editor, onClose: close })), show("image") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconImage, null), title: "Insert Image" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(ImagePanel, { editor, onClose: close, onImageUpload })), show("video") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconVideo, null), title: "Insert Video" }, keepOpen: true }, (close) => /* @__PURE__ */ import_react55.default.createElement(InsertPanel, { editor, onClose: close, mode: "video" })), show("cut") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Cut (Ctrl+X)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10942
10926
  "button",
10943
10927
  {
10944
10928
  className: "toolbar-btn",
10945
- onClick: () => document.execCommand("cut"),
10946
- title: "Cut (Ctrl+X)"
10929
+ onClick: () => document.execCommand("cut")
10947
10930
  },
10948
10931
  /* @__PURE__ */ import_react55.default.createElement(IconCut, null)
10949
- ), show("copy") && /* @__PURE__ */ import_react55.default.createElement(
10932
+ )), show("copy") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Copy selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10950
10933
  "button",
10951
10934
  {
10952
10935
  className: "toolbar-btn",
10953
- onClick: handleCopy,
10954
- title: "Copy selected text"
10936
+ onClick: handleCopy
10955
10937
  },
10956
10938
  copySuccess ? /* @__PURE__ */ import_react55.default.createElement(IconCheck, null) : /* @__PURE__ */ import_react55.default.createElement(IconCopy, null)
10957
- ), show("paste") && /* @__PURE__ */ import_react55.default.createElement(
10939
+ )), show("paste") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Paste (Ctrl+V)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10958
10940
  "button",
10959
10941
  {
10960
10942
  className: "toolbar-btn",
10961
- onClick: handlePaste,
10962
- title: "Paste (Ctrl+V)"
10943
+ onClick: handlePaste
10963
10944
  },
10964
10945
  /* @__PURE__ */ import_react55.default.createElement(IconPaste, null)
10965
- ), show("specialchars") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "\u03A9", title: "Special characters", className: "special-characters-btn" } }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "char-grid" }, SPECIAL_CHARS.map((char) => /* @__PURE__ */ import_react55.default.createElement(
10946
+ )), show("specialchars") && /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "\u03A9", title: "Special characters", className: "special-characters-btn" } }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "char-grid" }, SPECIAL_CHARS.map((char) => /* @__PURE__ */ import_react55.default.createElement(
10966
10947
  "button",
10967
10948
  {
10968
10949
  key: char,
@@ -10994,23 +10975,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10994
10975
  }
10995
10976
  } }, "</>", " Inline Code"),
10996
10977
  /* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => editor.chain().focus().toggleCodeBlock().run() }, "{ }", " Code Block")
10997
- ), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(
10978
+ ), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Toggle Fullscreen", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10998
10979
  "button",
10999
10980
  {
11000
10981
  className: `toolbar-btn ${isFullscreen ? "is-active" : ""}`,
11001
- onClick: onToggleFullscreen,
11002
- title: "Toggle Fullscreen"
10982
+ onClick: onToggleFullscreen
11003
10983
  },
11004
10984
  /* @__PURE__ */ import_react55.default.createElement(IconFullscreen, null)
11005
- ), show("tts") && /* @__PURE__ */ import_react55.default.createElement(TextToSpeech_default, { ref: ttsRef, editor, onTextToSpeech }), show("stt") && /* @__PURE__ */ import_react55.default.createElement(SpeechToText_default, { ref: sttRef, editor, onSpeechToText }), show("translate") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "translate-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
10985
+ )), show("tts") && /* @__PURE__ */ import_react55.default.createElement(TextToSpeech_default, { ref: ttsRef, editor, onTextToSpeech }), show("stt") && /* @__PURE__ */ import_react55.default.createElement(SpeechToText_default, { ref: sttRef, editor, onSpeechToText }), show("translate") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "translate-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Translate selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
11006
10986
  "button",
11007
10987
  {
11008
10988
  className: "toolbar-btn",
11009
- onClick: handleQuickTranslate,
11010
- title: "Translate selected text"
10989
+ onClick: handleQuickTranslate
11011
10990
  },
11012
10991
  /* @__PURE__ */ import_react55.default.createElement(IconTranslate, null)
11013
- ), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Translate options", className: "translate-arrow-btn" } }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => setShowTranslateModal(true) }, "Options")), translateStatus && /* @__PURE__ */ import_react55.default.createElement("span", { className: `translate-toast-popup ${translateStatus === "Please select the text" || translateStatus === "Translation failed" ? "error" : ""}` }, translateStatus)), show("todo") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "todo-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
10992
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Translate options", className: "translate-arrow-btn" } }, /* @__PURE__ */ import_react55.default.createElement("button", { className: "dropdown-item", onClick: () => setShowTranslateModal(true) }, "Options")), translateStatus && /* @__PURE__ */ import_react55.default.createElement("span", { className: `translate-toast-popup ${translateStatus === "Please select the text" || translateStatus === "Translation failed" ? "error" : ""}` }, translateStatus)), show("todo") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "todo-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: todoEnabled ? "Disable Task List" : "Enable Task List", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
11014
10993
  "button",
11015
10994
  {
11016
10995
  className: `toolbar-btn ${todoEnabled ? "is-active" : ""}`,
@@ -11051,11 +11030,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11051
11030
  }).run();
11052
11031
  }
11053
11032
  }
11054
- },
11055
- title: todoEnabled ? "Disable Task List" : "Enable Task List"
11033
+ }
11056
11034
  },
11057
11035
  /* @__PURE__ */ import_react55.default.createElement(IconTaskList, null)
11058
- ), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
11036
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
11059
11037
  const images = { todo: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/todo-blank.svg", working: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/working.svg", blocked: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/blocked.svg", resolved: "https://storage.googleapis.com/rufous-com-bucket-1/static/images/closed.svg" };
11060
11038
  const labels = { todo: "Todo", working: "Working", blocked: "Blocked", resolved: "Resolved" };
11061
11039
  return /* @__PURE__ */ import_react55.default.createElement("button", { key: status, className: "dropdown-item task-status-item", onClick: () => {
@@ -11092,7 +11070,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11092
11070
  return true;
11093
11071
  }).run();
11094
11072
  } }, /* @__PURE__ */ import_react55.default.createElement("span", { className: `task-icon task-${status}` }, /* @__PURE__ */ import_react55.default.createElement("img", { src: images[status], alt: status })), " ", labels[status]);
11095
- })))), onClose && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-row-right" }, /* @__PURE__ */ import_react55.default.createElement(
11073
+ })))), onClose && /* @__PURE__ */ import_react55.default.createElement("div", { className: "toolbar-row-right" }, /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Close", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
11096
11074
  "button",
11097
11075
  {
11098
11076
  className: "toolbar-btn btn-cross",
@@ -11106,11 +11084,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11106
11084
  } catch {
11107
11085
  }
11108
11086
  onClose();
11109
- },
11110
- title: "Close"
11087
+ }
11111
11088
  },
11112
11089
  /* @__PURE__ */ import_react55.default.createElement(closeIcon_default, { color: "#a81c08" })
11113
- )), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
11090
+ ))), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
11114
11091
  TranslateModal_default,
11115
11092
  {
11116
11093
  editor,
@@ -11194,15 +11171,14 @@ var ImagePropertiesModal = ({ editor, node, onClose }) => {
11194
11171
  value: width,
11195
11172
  onChange: (e) => handleWidthChange(e.target.value)
11196
11173
  }
11197
- ), /* @__PURE__ */ import_react56.default.createElement(
11174
+ ), /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement(
11198
11175
  "button",
11199
11176
  {
11200
11177
  className: `lock-btn ${lockRatio ? "locked" : ""}`,
11201
- onClick: () => setLockRatio(!lockRatio),
11202
- title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
11178
+ onClick: () => setLockRatio(!lockRatio)
11203
11179
  },
11204
11180
  lockRatio ? "\u{1F512}" : "\u{1F513}"
11205
- ), /* @__PURE__ */ import_react56.default.createElement(
11181
+ )), /* @__PURE__ */ import_react56.default.createElement(
11206
11182
  "input",
11207
11183
  {
11208
11184
  type: "number",
@@ -11387,13 +11363,13 @@ var ImageToolbar = ({ editor }) => {
11387
11363
  style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
11388
11364
  onMouseDown: (e) => e.preventDefault()
11389
11365
  },
11390
- /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete, title: "Delete" }, "\u{1F5D1}"),
11391
- /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true), title: "Edit properties" }, "\u270E"),
11392
- /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy, title: "Copy image" }, copyStatus ? "\u2713" : "\u{1F4CB}"), copyStatus && /* @__PURE__ */ import_react56.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
11393
- /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11366
+ /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
11367
+ /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Edit properties", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true) }, "\u270E")),
11368
+ /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Copy image", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy }, copyStatus ? "\u2713" : "\u{1F4CB}")), copyStatus && /* @__PURE__ */ import_react56.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
11369
+ /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Horizontal alignment", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11394
11370
  setShowAlign(!showAlign);
11395
11371
  setShowVAlign(false);
11396
- }, title: "Horizontal alignment" }, "\u2630 ", /* @__PURE__ */ import_react56.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")), showAlign && /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS.map((a) => /* @__PURE__ */ import_react56.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
11372
+ } }, "\u2630 ", /* @__PURE__ */ import_react56.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showAlign && /* @__PURE__ */ import_react56.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS.map((a) => /* @__PURE__ */ import_react56.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
11397
11373
  ), showModal && /* @__PURE__ */ import_react56.default.createElement(
11398
11374
  ImagePropertiesModal,
11399
11375
  {
@@ -11476,15 +11452,14 @@ var VideoPropertiesModal = ({ editor, node, nodeType, onClose }) => {
11476
11452
  value: width,
11477
11453
  onChange: (e) => handleWidthChange(e.target.value)
11478
11454
  }
11479
- ), /* @__PURE__ */ import_react57.default.createElement(
11455
+ ), /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement(
11480
11456
  "button",
11481
11457
  {
11482
11458
  className: `lock-btn ${lockRatio ? "locked" : ""}`,
11483
- onClick: () => setLockRatio(!lockRatio),
11484
- title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
11459
+ onClick: () => setLockRatio(!lockRatio)
11485
11460
  },
11486
11461
  lockRatio ? "\u{1F512}" : "\u{1F513}"
11487
- ), /* @__PURE__ */ import_react57.default.createElement(
11462
+ )), /* @__PURE__ */ import_react57.default.createElement(
11488
11463
  "input",
11489
11464
  {
11490
11465
  type: "number",
@@ -11611,13 +11586,13 @@ var VideoToolbar = ({ editor }) => {
11611
11586
  style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
11612
11587
  onMouseDown: (e) => e.preventDefault()
11613
11588
  },
11614
- /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete, title: "Delete" }, "\u{1F5D1}"),
11615
- /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true), title: "Edit properties" }, "\u270E"),
11616
- /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy, title: "Copy URL" }, copyStatus ? "\u2713" : "\u{1F4CB}"), copyStatus && /* @__PURE__ */ import_react57.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
11617
- /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11589
+ /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
11590
+ /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Edit properties", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => setShowModal(true) }, "\u270E")),
11591
+ /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-copy-wrapper" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Copy URL", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleCopy }, copyStatus ? "\u2713" : "\u{1F4CB}")), copyStatus && /* @__PURE__ */ import_react57.default.createElement("span", { className: "img-copy-toast" }, copyStatus)),
11592
+ /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Size presets", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11618
11593
  setShowSize(!showSize);
11619
11594
  setShowAlign(false);
11620
- }, title: "Size presets" }, /* @__PURE__ */ import_react57.default.createElement("span", { style: { fontSize: "11px" } }, node.attrs.width || 640, "x", node.attrs.height || 360), /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")), showSize && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
11595
+ } }, /* @__PURE__ */ import_react57.default.createElement("span", { style: { fontSize: "11px" } }, node.attrs.width || 640, "x", node.attrs.height || 360), /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showSize && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
11621
11596
  handleResize("small");
11622
11597
  setShowSize(false);
11623
11598
  } }, "Small (320x180)"), /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
@@ -11630,10 +11605,10 @@ var VideoToolbar = ({ editor }) => {
11630
11605
  handleResize("full");
11631
11606
  setShowSize(false);
11632
11607
  } }, "Full (854x480)"))),
11633
- /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11608
+ /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Horizontal alignment", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11634
11609
  setShowAlign(!showAlign);
11635
11610
  setShowSize(false);
11636
- }, title: "Horizontal alignment" }, "\u2630 ", /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")), showAlign && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS2.map((a) => /* @__PURE__ */ import_react57.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
11611
+ } }, "\u2630 ", /* @__PURE__ */ import_react57.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE"))), showAlign && /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-menu" }, ALIGNMENTS2.map((a) => /* @__PURE__ */ import_react57.default.createElement("button", { key: a.value, className: "dropdown-item", onClick: () => setAlignmentVal(a.value) }, a.icon, " ", a.label))))
11637
11612
  ), showModal && /* @__PURE__ */ import_react57.default.createElement(
11638
11613
  VideoPropertiesModal,
11639
11614
  {
@@ -11716,101 +11691,19 @@ var TableToolbar = ({ editor }) => {
11716
11691
  style: { top: pos.top, left: pos.left },
11717
11692
  onMouseDown: prevent
11718
11693
  },
11719
- /* @__PURE__ */ import_react58.default.createElement(
11720
- "button",
11721
- {
11722
- className: "rf-table-toolbar-btn",
11723
- onClick: () => editor.chain().focus().addRowBefore().run(),
11724
- title: "Insert row above"
11725
- },
11726
- /* @__PURE__ */ import_react58.default.createElement(IconAddRowBefore, null)
11727
- ),
11728
- /* @__PURE__ */ import_react58.default.createElement(
11729
- "button",
11730
- {
11731
- className: "rf-table-toolbar-btn",
11732
- onClick: () => editor.chain().focus().addRowAfter().run(),
11733
- title: "Insert row below"
11734
- },
11735
- /* @__PURE__ */ import_react58.default.createElement(IconAddRowAfter, null)
11736
- ),
11737
- /* @__PURE__ */ import_react58.default.createElement(
11738
- "button",
11739
- {
11740
- className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
11741
- onClick: () => editor.chain().focus().deleteRow().run(),
11742
- title: "Delete row"
11743
- },
11744
- /* @__PURE__ */ import_react58.default.createElement(IconDeleteRow, null)
11745
- ),
11694
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert row above", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addRowBefore().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddRowBefore, null))),
11695
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert row below", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addRowAfter().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddRowAfter, null))),
11696
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete row", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteRow().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteRow, null))),
11746
11697
  /* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
11747
- /* @__PURE__ */ import_react58.default.createElement(
11748
- "button",
11749
- {
11750
- className: "rf-table-toolbar-btn",
11751
- onClick: () => editor.chain().focus().addColumnBefore().run(),
11752
- title: "Insert column left"
11753
- },
11754
- /* @__PURE__ */ import_react58.default.createElement(IconAddColBefore, null)
11755
- ),
11756
- /* @__PURE__ */ import_react58.default.createElement(
11757
- "button",
11758
- {
11759
- className: "rf-table-toolbar-btn",
11760
- onClick: () => editor.chain().focus().addColumnAfter().run(),
11761
- title: "Insert column right"
11762
- },
11763
- /* @__PURE__ */ import_react58.default.createElement(IconAddColAfter, null)
11764
- ),
11765
- /* @__PURE__ */ import_react58.default.createElement(
11766
- "button",
11767
- {
11768
- className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
11769
- onClick: () => editor.chain().focus().deleteColumn().run(),
11770
- title: "Delete column"
11771
- },
11772
- /* @__PURE__ */ import_react58.default.createElement(IconDeleteCol, null)
11773
- ),
11698
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert column left", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addColumnBefore().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddColBefore, null))),
11699
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Insert column right", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().addColumnAfter().run() }, /* @__PURE__ */ import_react58.default.createElement(IconAddColAfter, null))),
11700
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete column", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteColumn().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteCol, null))),
11774
11701
  /* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
11775
- /* @__PURE__ */ import_react58.default.createElement(
11776
- "button",
11777
- {
11778
- className: "rf-table-toolbar-btn",
11779
- onClick: () => editor.chain().focus().mergeCells().run(),
11780
- disabled: !canMerge,
11781
- title: "Merge cells"
11782
- },
11783
- /* @__PURE__ */ import_react58.default.createElement(IconMergeCells, null)
11784
- ),
11785
- /* @__PURE__ */ import_react58.default.createElement(
11786
- "button",
11787
- {
11788
- className: "rf-table-toolbar-btn",
11789
- onClick: () => editor.chain().focus().splitCell().run(),
11790
- disabled: !canSplit,
11791
- title: "Split cell"
11792
- },
11793
- /* @__PURE__ */ import_react58.default.createElement(IconSplitCell, null)
11794
- ),
11702
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Merge cells", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().mergeCells().run(), disabled: !canMerge }, /* @__PURE__ */ import_react58.default.createElement(IconMergeCells, null))),
11703
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Split cell", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn", onClick: () => editor.chain().focus().splitCell().run(), disabled: !canSplit }, /* @__PURE__ */ import_react58.default.createElement(IconSplitCell, null))),
11795
11704
  /* @__PURE__ */ import_react58.default.createElement("span", { className: "rf-table-toolbar-sep" }),
11796
- /* @__PURE__ */ import_react58.default.createElement(
11797
- "button",
11798
- {
11799
- className: `rf-table-toolbar-btn ${editor.isActive("tableHeader") ? "active" : ""}`,
11800
- onClick: () => editor.chain().focus().toggleHeaderRow().run(),
11801
- title: "Toggle header row"
11802
- },
11803
- /* @__PURE__ */ import_react58.default.createElement(IconToggleHeader, null)
11804
- ),
11805
- /* @__PURE__ */ import_react58.default.createElement(
11806
- "button",
11807
- {
11808
- className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger",
11809
- onClick: () => editor.chain().focus().deleteTable().run(),
11810
- title: "Delete table"
11811
- },
11812
- /* @__PURE__ */ import_react58.default.createElement(IconDeleteTable, null)
11813
- )
11705
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Toggle header row", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: `rf-table-toolbar-btn ${editor.isActive("tableHeader") ? "active" : ""}`, onClick: () => editor.chain().focus().toggleHeaderRow().run() }, /* @__PURE__ */ import_react58.default.createElement(IconToggleHeader, null))),
11706
+ /* @__PURE__ */ import_react58.default.createElement(Tooltip, { title: "Delete table", placement: "top" }, /* @__PURE__ */ import_react58.default.createElement("button", { className: "rf-table-toolbar-btn rf-table-toolbar-btn-danger", onClick: () => editor.chain().focus().deleteTable().run() }, /* @__PURE__ */ import_react58.default.createElement(IconDeleteTable, null)))
11814
11707
  ),
11815
11708
  document.body
11816
11709
  );