@rufous/ui 0.2.81 → 0.2.82

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.
Files changed (3) hide show
  1. package/dist/main.cjs +623 -733
  2. package/dist/main.js +628 -738
  3. package/package.json +1 -1
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" },
@@ -4079,8 +4306,8 @@ function DataGrid({
4079
4306
  sx
4080
4307
  }) {
4081
4308
  const sxClass = useSx(sx);
4082
- const [columnOverrides, setColumnOverrides] = (0, import_react22.useState)({});
4083
- const resolvedColumns = (0, import_react22.useMemo)(() => {
4309
+ const [columnOverrides, setColumnOverrides] = (0, import_react23.useState)({});
4310
+ const resolvedColumns = (0, import_react23.useMemo)(() => {
4084
4311
  return initialColumnsProp.map((col) => {
4085
4312
  const field = String(col.field || col.key || "");
4086
4313
  const override = columnOverrides[field] || {};
@@ -4093,7 +4320,7 @@ function DataGrid({
4093
4320
  };
4094
4321
  });
4095
4322
  }, [initialColumnsProp, columnOverrides]);
4096
- const [columnWidths, setColumnWidths] = (0, import_react22.useState)(() => {
4323
+ const [columnWidths, setColumnWidths] = (0, import_react23.useState)(() => {
4097
4324
  const widths = {};
4098
4325
  initialColumnsProp.forEach((col) => {
4099
4326
  const field = String(col.field || col.key || "");
@@ -4102,26 +4329,26 @@ function DataGrid({
4102
4329
  });
4103
4330
  return widths;
4104
4331
  });
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);
4332
+ const [pageSize, setPageSize] = (0, import_react23.useState)(initialPageSize);
4333
+ const [sortField, setSortField] = (0, import_react23.useState)(null);
4334
+ const [sortDirection, setSortDirection] = (0, import_react23.useState)(null);
4335
+ const [filterText, setFilterText] = (0, import_react23.useState)("");
4336
+ const [currentPage, setCurrentPage] = (0, import_react23.useState)(1);
4337
+ const [columnFilters, setColumnFilters] = (0, import_react23.useState)({});
4338
+ const [resizingColumn, setResizingColumn] = (0, import_react23.useState)(null);
4339
+ const [startX, setStartX] = (0, import_react23.useState)(0);
4340
+ const [startWidth, setStartWidth] = (0, import_react23.useState)(0);
4341
+ const [activeMenu, setActiveMenu] = (0, import_react23.useState)(null);
4342
+ const [menuPosition, setMenuPosition] = (0, import_react23.useState)({ top: 0, left: 0 });
4343
+ const menuRef = (0, import_react23.useRef)(null);
4344
+ const [showManageColumns, setShowManageColumns] = (0, import_react23.useState)(false);
4345
+ const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react23.useState)(false);
4119
4346
  const initialFilterCol = String(initialColumnsProp[0]?.field || initialColumnsProp[0]?.key || "");
4120
- const [advancedFilters, setAdvancedFilters] = (0, import_react22.useState)([
4347
+ const [advancedFilters, setAdvancedFilters] = (0, import_react23.useState)([
4121
4348
  { column: initialFilterCol, operator: getDefaultOperator(initialColumnsProp[0]?.type), value: "", logic: "AND" }
4122
4349
  ]);
4123
- const [colSearch, setColSearch] = (0, import_react22.useState)("");
4124
- (0, import_react22.useEffect)(() => {
4350
+ const [colSearch, setColSearch] = (0, import_react23.useState)("");
4351
+ (0, import_react23.useEffect)(() => {
4125
4352
  const handleMouseMove = (e) => {
4126
4353
  if (!resizingColumn) return;
4127
4354
  const col = resolvedColumns.find((c) => String(c.field) === resizingColumn);
@@ -4141,7 +4368,7 @@ function DataGrid({
4141
4368
  document.removeEventListener("mouseup", handleMouseUp);
4142
4369
  };
4143
4370
  }, [resizingColumn, startX, startWidth, resolvedColumns]);
4144
- (0, import_react22.useEffect)(() => {
4371
+ (0, import_react23.useEffect)(() => {
4145
4372
  const handleClickOutside = (e) => {
4146
4373
  if (menuRef.current && !menuRef.current.contains(e.target)) {
4147
4374
  setActiveMenu(null);
@@ -4150,7 +4377,7 @@ function DataGrid({
4150
4377
  document.addEventListener("mousedown", handleClickOutside);
4151
4378
  return () => document.removeEventListener("mousedown", handleClickOutside);
4152
4379
  }, []);
4153
- (0, import_react22.useEffect)(() => {
4380
+ (0, import_react23.useEffect)(() => {
4154
4381
  setColumnWidths((prev) => {
4155
4382
  const next = { ...prev };
4156
4383
  initialColumnsProp.forEach((col) => {
@@ -4201,7 +4428,7 @@ function DataGrid({
4201
4428
  });
4202
4429
  setActiveMenu(null);
4203
4430
  };
4204
- const filteredData = (0, import_react22.useMemo)(() => {
4431
+ const filteredData = (0, import_react23.useMemo)(() => {
4205
4432
  return data.filter((item) => {
4206
4433
  const matchesGlobal = !filterText || Object.values(item).some(
4207
4434
  (val) => String(val).toLowerCase().includes(filterText.toLowerCase())
@@ -4305,7 +4532,7 @@ function DataGrid({
4305
4532
  return matchesGlobal && matchesAdvanced;
4306
4533
  });
4307
4534
  }, [data, filterText, advancedFilters]);
4308
- const sortedData = (0, import_react22.useMemo)(() => {
4535
+ const sortedData = (0, import_react23.useMemo)(() => {
4309
4536
  if (!sortField || !sortDirection) return filteredData;
4310
4537
  const col = resolvedColumns.find((c) => c.field === sortField);
4311
4538
  return [...filteredData].sort((a, b) => {
@@ -4321,7 +4548,7 @@ function DataGrid({
4321
4548
  });
4322
4549
  }, [filteredData, sortField, sortDirection, resolvedColumns]);
4323
4550
  const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));
4324
- const paginatedData = (0, import_react22.useMemo)(() => {
4551
+ const paginatedData = (0, import_react23.useMemo)(() => {
4325
4552
  const start = (currentPage - 1) * pageSize;
4326
4553
  return sortedData.slice(start, start + pageSize);
4327
4554
  }, [sortedData, currentPage, pageSize]);
@@ -4360,7 +4587,7 @@ function DataGrid({
4360
4587
  setMenuPosition(position);
4361
4588
  setActiveMenu(keyStr);
4362
4589
  };
4363
- const visibleColumns = (0, import_react22.useMemo)(() => {
4590
+ const visibleColumns = (0, import_react23.useMemo)(() => {
4364
4591
  const left = resolvedColumns.filter((c) => !c.hidden && c.pinned === "left");
4365
4592
  const mid = resolvedColumns.filter((c) => !c.hidden && !c.pinned);
4366
4593
  const right = resolvedColumns.filter((c) => !c.hidden && c.pinned === "right");
@@ -4387,7 +4614,7 @@ function DataGrid({
4387
4614
  return offset2;
4388
4615
  };
4389
4616
  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(
4617
+ 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
4618
  "input",
4392
4619
  {
4393
4620
  className: "dg-search",
@@ -4398,52 +4625,50 @@ function DataGrid({
4398
4625
  setCurrentPage(1);
4399
4626
  }
4400
4627
  }
4401
- )), /* @__PURE__ */ import_react22.default.createElement(
4628
+ )), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
4402
4629
  "button",
4403
4630
  {
4404
4631
  className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
4405
- onClick: () => setShowAdvancedFilter(true),
4406
- title: "Filters"
4632
+ onClick: () => setShowAdvancedFilter(true)
4407
4633
  },
4408
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Filter, { size: 16 })
4409
- ), /* @__PURE__ */ import_react22.default.createElement(
4634
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 16 })
4635
+ )), /* @__PURE__ */ import_react23.default.createElement(Tooltip, { title: "Manage Columns", placement: "top" }, /* @__PURE__ */ import_react23.default.createElement(
4410
4636
  "button",
4411
4637
  {
4412
4638
  className: "dg-icon-btn",
4413
- onClick: () => setShowManageColumns(true),
4414
- title: "Manage Columns"
4639
+ onClick: () => setShowManageColumns(true)
4415
4640
  },
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) => {
4641
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 16 })
4642
+ )), /* @__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
4643
  const colField = String(col.field);
4419
4644
  const width = columnWidths[colField] || 200;
4420
4645
  const leftOffset = getLeftOffset(col, idx);
4421
4646
  const rightOffset = getRightOffset(col, idx);
4422
4647
  const isSorted = sortField === col.field;
4423
- return /* @__PURE__ */ import_react22.default.createElement(
4648
+ return /* @__PURE__ */ import_react23.default.createElement(
4424
4649
  "th",
4425
4650
  {
4426
4651
  key: colField,
4427
4652
  className: `dg-thead-cell${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.headerClassName || ""}`,
4428
4653
  style: { width, minWidth: width, left: leftOffset, right: rightOffset, flex: col.flex }
4429
4654
  },
4430
- /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react22.default.createElement(
4655
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-inner" }, /* @__PURE__ */ import_react23.default.createElement(
4431
4656
  "div",
4432
4657
  {
4433
4658
  className: `dg-th-label${col.sortable === false ? " no-sort" : ""}`,
4434
4659
  onClick: () => col.sortable !== false && handleSort(col.field || "")
4435
4660
  },
4436
4661
  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(
4662
+ isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronUp, { size: 12 }),
4663
+ isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ChevronDown, { size: 12 })
4664
+ ), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react23.default.createElement(
4440
4665
  "button",
4441
4666
  {
4442
4667
  className: "dg-th-menu-btn",
4443
4668
  onClick: (e) => handleMenuOpen(e, colField)
4444
4669
  },
4445
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
4446
- ), /* @__PURE__ */ import_react22.default.createElement(
4670
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.MoreVertical, { size: 13 })
4671
+ ), /* @__PURE__ */ import_react23.default.createElement(
4447
4672
  "div",
4448
4673
  {
4449
4674
  className: `dg-resizer${resizingColumn === colField ? " resizing" : ""}`,
@@ -4456,12 +4681,12 @@ function DataGrid({
4456
4681
  }
4457
4682
  )))
4458
4683
  );
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) => {
4684
+ }), 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" }, visibleColumns.map((col, idx) => {
4460
4685
  const colField = String(col.field);
4461
4686
  const width = columnWidths[colField] || 200;
4462
4687
  const leftOffset = getLeftOffset(col, idx);
4463
4688
  const rightOffset = getRightOffset(col, idx);
4464
- return /* @__PURE__ */ import_react22.default.createElement(
4689
+ return /* @__PURE__ */ import_react23.default.createElement(
4465
4690
  "td",
4466
4691
  {
4467
4692
  key: `${item.id}-${colField}`,
@@ -4482,22 +4707,20 @@ function DataGrid({
4482
4707
  return String(formattedValue ?? "");
4483
4708
  })()
4484
4709
  );
4485
- }), actions && /* @__PURE__ */ import_react22.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
4710
+ }), actions && /* @__PURE__ */ import_react23.default.createElement("td", { className: "dg-row-actions-cell" }, (() => {
4486
4711
  const resolvedActions = typeof actions === "function" ? actions(item) : actions;
4487
4712
  const visibleActions = resolvedActions.filter((a) => !a.show || a.show(item));
4488
4713
  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(
4714
+ 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
4715
  "button",
4491
4716
  {
4492
- key: i,
4493
4717
  className: "dg-row-action-btn",
4494
4718
  style: { color: action.color || "var(--text-secondary)" },
4495
- onClick: () => action.onClick(item),
4496
- title: action.label
4719
+ onClick: () => action.onClick(item)
4497
4720
  },
4498
4721
  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(
4722
+ )))));
4723
+ })())))))), /* @__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
4724
  "select",
4502
4725
  {
4503
4726
  value: pageSize,
@@ -4506,8 +4729,8 @@ function DataGrid({
4506
4729
  setCurrentPage(1);
4507
4730
  }
4508
4731
  },
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(
4732
+ pageSizeOptions.map((o) => /* @__PURE__ */ import_react23.default.createElement("option", { key: o, value: o }, o))
4733
+ )), /* @__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
4734
  "div",
4512
4735
  {
4513
4736
  ref: menuRef,
@@ -4518,25 +4741,25 @@ function DataGrid({
4518
4741
  ...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
4519
4742
  }
4520
4743
  },
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" }),
4744
+ /* @__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"),
4745
+ /* @__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"),
4746
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
4524
4747
  (() => {
4525
4748
  const col = resolvedColumns.find((c) => c.field === activeMenu);
4526
4749
  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"));
4750
+ 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
4751
  })(),
4529
- /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-menu-divider" }),
4530
- /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4752
+ /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
4753
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4531
4754
  setShowAdvancedFilter(true);
4532
4755
  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: () => {
4756
+ } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
4757
+ /* @__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"),
4758
+ /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
4536
4759
  setShowManageColumns(true);
4537
4760
  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(
4761
+ } }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 14 }), " Manage columns")
4762
+ ), 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
4763
  "input",
4541
4764
  {
4542
4765
  className: "dg-search",
@@ -4548,15 +4771,15 @@ function DataGrid({
4548
4771
  )), resolvedColumns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase())).map((col) => {
4549
4772
  const key = String(col.key);
4550
4773
  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) => {
4774
+ 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 } })));
4775
+ })), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
4553
4776
  const next = { ...prev };
4554
4777
  resolvedColumns.forEach((c) => {
4555
4778
  const k = String(c.key);
4556
4779
  next[k] = { ...next[k], hidden: false };
4557
4780
  });
4558
4781
  return next;
4559
- }) }, "Show All"), /* @__PURE__ */ import_react22.default.createElement("button", { className: "dg-action-btn", onClick: () => {
4782
+ }) }, "Show All"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: () => {
4560
4783
  const newOverrides = { ...columnOverrides };
4561
4784
  resolvedColumns.forEach((c) => {
4562
4785
  if (c.hideable !== false) {
@@ -4565,21 +4788,21 @@ function DataGrid({
4565
4788
  }
4566
4789
  });
4567
4790
  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(
4791
+ } }, "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
4792
  "button",
4570
4793
  {
4571
4794
  className: `dg-logic-btn${f.logic === "AND" ? " active" : ""}`,
4572
4795
  onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "AND" } : fi))
4573
4796
  },
4574
4797
  "AND"
4575
- ), /* @__PURE__ */ import_react22.default.createElement(
4798
+ ), /* @__PURE__ */ import_react23.default.createElement(
4576
4799
  "button",
4577
4800
  {
4578
4801
  className: `dg-logic-btn${f.logic === "OR" ? " active" : ""}`,
4579
4802
  onClick: () => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, logic: "OR" } : fi))
4580
4803
  },
4581
4804
  "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(
4805
+ )), /* @__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
4806
  "select",
4584
4807
  {
4585
4808
  className: "dg-filter-select",
@@ -4591,20 +4814,20 @@ function DataGrid({
4591
4814
  setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
4592
4815
  }
4593
4816
  },
4594
- resolvedColumns.map((c) => /* @__PURE__ */ import_react22.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
4817
+ resolvedColumns.map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
4595
4818
  ), (() => {
4596
4819
  const col = resolvedColumns.find((c) => String(c.key) === f.column);
4597
4820
  const operators = getOperatorsForType(col?.type);
4598
4821
  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(
4822
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement(
4600
4823
  "select",
4601
4824
  {
4602
4825
  className: "dg-filter-select dg-filter-select-sm",
4603
4826
  value: f.operator,
4604
4827
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, operator: e.target.value, value: "" } : fi))
4605
4828
  },
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(
4829
+ operators.map((op) => /* @__PURE__ */ import_react23.default.createElement("option", { key: op.value, value: op.value }, op.label))
4830
+ ), !hideValue && col?.type === "date" && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-filter-datefield" }, /* @__PURE__ */ import_react23.default.createElement(
4608
4831
  DateField,
4609
4832
  {
4610
4833
  value: f.value,
@@ -4613,17 +4836,17 @@ function DataGrid({
4613
4836
  }
4614
4837
  )), !hideValue && col?.type === "status" && (() => {
4615
4838
  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(
4839
+ return /* @__PURE__ */ import_react23.default.createElement(
4617
4840
  "select",
4618
4841
  {
4619
4842
  className: "dg-filter-select",
4620
4843
  value: f.value,
4621
4844
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
4622
4845
  },
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))
4846
+ /* @__PURE__ */ import_react23.default.createElement("option", { value: "" }, "Select\u2026"),
4847
+ options.map((opt) => /* @__PURE__ */ import_react23.default.createElement("option", { key: opt, value: opt }, opt))
4625
4848
  );
4626
- })(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react22.default.createElement(
4849
+ })(), !hideValue && col?.type !== "date" && col?.type !== "status" && /* @__PURE__ */ import_react23.default.createElement(
4627
4850
  "input",
4628
4851
  {
4629
4852
  type: col?.type === "number" ? "number" : "text",
@@ -4633,7 +4856,7 @@ function DataGrid({
4633
4856
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, value: e.target.value } : fi))
4634
4857
  }
4635
4858
  ));
4636
- })()))), /* @__PURE__ */ import_react22.default.createElement(
4859
+ })()))), /* @__PURE__ */ import_react23.default.createElement(
4637
4860
  "button",
4638
4861
  {
4639
4862
  className: "dg-action-btn",
@@ -4644,9 +4867,9 @@ function DataGrid({
4644
4867
  setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
4645
4868
  }
4646
4869
  },
4647
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Plus, { size: 14 }),
4870
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Plus, { size: 14 }),
4648
4871
  " Add Filter"
4649
- )), /* @__PURE__ */ import_react22.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react22.default.createElement(
4872
+ )), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react23.default.createElement(
4650
4873
  "button",
4651
4874
  {
4652
4875
  className: "dg-action-btn",
@@ -4655,20 +4878,20 @@ function DataGrid({
4655
4878
  setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
4656
4879
  }
4657
4880
  },
4658
- /* @__PURE__ */ import_react22.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
4881
+ /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Trash2, { size: 14 }),
4659
4882
  " Reset"
4660
- ), /* @__PURE__ */ import_react22.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
4883
+ ), /* @__PURE__ */ import_react23.default.createElement("button", { className: "submit-btn", onClick: () => setShowAdvancedFilter(false) }, "Apply")))));
4661
4884
  }
4662
4885
 
4663
4886
  // 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" }));
4887
+ var import_react24 = __toESM(require("react"), 1);
4888
+ var import_react_dom5 = __toESM(require("react-dom"), 1);
4889
+ 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" }));
4890
+ 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
4891
  function normaliseOptions(options) {
4669
4892
  return options.map((o) => typeof o === "string" ? { value: o, label: o } : o);
4670
4893
  }
4671
- var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4894
+ var Select = import_react24.default.forwardRef(function Select2(props, ref) {
4672
4895
  const {
4673
4896
  options: rawOptions,
4674
4897
  value,
@@ -4687,14 +4910,14 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4687
4910
  style,
4688
4911
  sx
4689
4912
  } = 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;
4913
+ const [open, setOpen] = (0, import_react24.useState)(false);
4914
+ const [focusedIdx, setFocusedIdx] = (0, import_react24.useState)(-1);
4915
+ const [popupStyle, setPopupStyle] = (0, import_react24.useState)({});
4916
+ const containerRef = (0, import_react24.useRef)(null);
4917
+ const listRef = (0, import_react24.useRef)(null);
4918
+ const inputId = (0, import_react24.useRef)(`rf-sel-${Math.random().toString(36).slice(2, 9)}`).current;
4696
4919
  const sxClass = useSx(sx);
4697
- const calcPopupStyle = (0, import_react23.useCallback)(() => {
4920
+ const calcPopupStyle = (0, import_react24.useCallback)(() => {
4698
4921
  if (!containerRef.current) return;
4699
4922
  const rect = containerRef.current.getBoundingClientRect();
4700
4923
  setPopupStyle({
@@ -4705,28 +4928,28 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4705
4928
  }, []);
4706
4929
  const options = normaliseOptions(rawOptions);
4707
4930
  const selectedValues = multiple ? Array.isArray(value) ? value : value != null ? [value] : [] : value != null ? [value] : [];
4708
- const isSelected = (0, import_react23.useCallback)(
4931
+ const isSelected = (0, import_react24.useCallback)(
4709
4932
  (optValue) => selectedValues.includes(optValue),
4710
4933
  [selectedValues]
4711
4934
  );
4712
4935
  const getSelectedLabels = () => options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label);
4713
4936
  const hasValue = selectedValues.length > 0;
4714
4937
  const isFloating = Boolean(open || hasValue);
4715
- const openPopup = (0, import_react23.useCallback)(() => {
4938
+ const openPopup = (0, import_react24.useCallback)(() => {
4716
4939
  if (disabled) return;
4717
4940
  calcPopupStyle();
4718
4941
  setOpen(true);
4719
4942
  setFocusedIdx(-1);
4720
4943
  }, [disabled, calcPopupStyle]);
4721
- const closePopup = (0, import_react23.useCallback)(() => {
4944
+ const closePopup = (0, import_react24.useCallback)(() => {
4722
4945
  setOpen(false);
4723
4946
  setFocusedIdx(-1);
4724
4947
  }, []);
4725
- const togglePopup = (0, import_react23.useCallback)(() => {
4948
+ const togglePopup = (0, import_react24.useCallback)(() => {
4726
4949
  if (open) closePopup();
4727
4950
  else openPopup();
4728
4951
  }, [open, openPopup, closePopup]);
4729
- (0, import_react23.useEffect)(() => {
4952
+ (0, import_react24.useEffect)(() => {
4730
4953
  if (!open) return;
4731
4954
  const handleOutside = (e) => {
4732
4955
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -4742,7 +4965,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4742
4965
  window.removeEventListener("resize", calcPopupStyle);
4743
4966
  };
4744
4967
  }, [open, closePopup, calcPopupStyle]);
4745
- const selectOption = (0, import_react23.useCallback)((opt) => {
4968
+ const selectOption = (0, import_react24.useCallback)((opt) => {
4746
4969
  if (opt.disabled) return;
4747
4970
  if (multiple) {
4748
4971
  const already = isSelected(opt.value);
@@ -4817,20 +5040,20 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4817
5040
  if (multiple) {
4818
5041
  const labels = getSelectedLabels();
4819
5042
  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));
5043
+ 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
5044
  }
4822
5045
  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)));
5046
+ 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
5047
  }
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));
5048
+ 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
5049
  }
4827
5050
  const selectedOpt = options.find((o) => o.value === value);
4828
5051
  if (selectedOpt) {
4829
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
5052
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__display" }, selectedOpt.label);
4830
5053
  }
4831
- return /* @__PURE__ */ import_react23.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
5054
+ return /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-select__display${placeholder ? " rf-select__display--placeholder" : ""}` }, placeholder || "\xA0");
4832
5055
  };
4833
- return /* @__PURE__ */ import_react23.default.createElement(
5056
+ return /* @__PURE__ */ import_react24.default.createElement(
4834
5057
  "div",
4835
5058
  {
4836
5059
  ref: (node) => {
@@ -4841,7 +5064,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4841
5064
  className: rootClasses,
4842
5065
  style
4843
5066
  },
4844
- /* @__PURE__ */ import_react23.default.createElement(
5067
+ /* @__PURE__ */ import_react24.default.createElement(
4845
5068
  "div",
4846
5069
  {
4847
5070
  className: "rf-text-field__wrapper",
@@ -4855,16 +5078,16 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4855
5078
  onKeyDown: handleKeyDown
4856
5079
  },
4857
5080
  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))
5081
+ 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" }, " *")),
5082
+ 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" })),
5083
+ /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(ChevronDownIcon2, null))
4861
5084
  ),
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) => {
5085
+ helperText && /* @__PURE__ */ import_react24.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
5086
+ open && !disabled && import_react_dom5.default.createPortal(
5087
+ /* @__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
5088
  const selected = isSelected(opt.value);
4866
5089
  const focused = focusedIdx === idx;
4867
- return /* @__PURE__ */ import_react23.default.createElement(
5090
+ return /* @__PURE__ */ import_react24.default.createElement(
4868
5091
  "li",
4869
5092
  {
4870
5093
  key: opt.value,
@@ -4883,8 +5106,8 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4883
5106
  onMouseDown: (e) => e.preventDefault(),
4884
5107
  onClick: () => selectOption(opt)
4885
5108
  },
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))
5109
+ /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-label" }, opt.label),
5110
+ /* @__PURE__ */ import_react24.default.createElement("span", { className: "rf-select__option-check", "aria-hidden": "true" }, /* @__PURE__ */ import_react24.default.createElement(CheckIcon2, null))
4888
5111
  );
4889
5112
  }))),
4890
5113
  document.body
@@ -4894,7 +5117,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4894
5117
  Select.displayName = "Select";
4895
5118
 
4896
5119
  // lib/Slider/Slider.tsx
4897
- var import_react24 = __toESM(require("react"), 1);
5120
+ var import_react25 = __toESM(require("react"), 1);
4898
5121
  function clamp(val, min, max) {
4899
5122
  return Math.max(min, Math.min(max, val));
4900
5123
  }
@@ -4904,7 +5127,7 @@ function snapToStep(val, min, step) {
4904
5127
  function pct(val, min, max) {
4905
5128
  return (val - min) / (max - min) * 100;
4906
5129
  }
4907
- var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5130
+ var Slider = import_react25.default.forwardRef(function Slider2(props, ref) {
4908
5131
  const {
4909
5132
  value,
4910
5133
  onChange,
@@ -4924,9 +5147,9 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4924
5147
  sx
4925
5148
  } = props;
4926
5149
  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);
5150
+ const trackRef = (0, import_react25.useRef)(null);
5151
+ const draggingThumb = (0, import_react25.useRef)(null);
5152
+ const [dragging, setDragging] = (0, import_react25.useState)(null);
4930
5153
  const isRange = range || Array.isArray(value);
4931
5154
  const rawVal = value ?? (isRange ? [min, max] : min);
4932
5155
  const vals = isRange ? Array.isArray(rawVal) ? [rawVal[0], rawVal[1]] : [rawVal, rawVal] : [rawVal, rawVal];
@@ -4937,7 +5160,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4937
5160
  computedMarks.push(...marks);
4938
5161
  }
4939
5162
  const hasLabelledMarks = computedMarks.some((m) => m.label);
4940
- const getValueFromPointer = (0, import_react24.useCallback)((e) => {
5163
+ const getValueFromPointer = (0, import_react25.useCallback)((e) => {
4941
5164
  const track = trackRef.current;
4942
5165
  if (!track) return min;
4943
5166
  const rect = track.getBoundingClientRect();
@@ -4951,7 +5174,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
4951
5174
  const raw = min + ratio * (max - min);
4952
5175
  return clamp(snapToStep(raw, min, step), min, max);
4953
5176
  }, [min, max, step, orientation]);
4954
- (0, import_react24.useEffect)(() => {
5177
+ (0, import_react25.useEffect)(() => {
4955
5178
  if (dragging === null) return;
4956
5179
  const onMove = (e) => {
4957
5180
  const newVal = getValueFromPointer(e);
@@ -5044,7 +5267,7 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5044
5267
  const val = vals[thumb];
5045
5268
  const p = pct(val, min, max);
5046
5269
  const thumbStyle = orientation === "vertical" ? { bottom: `${p}%`, transform: "translate(-50%, 50%)" } : { left: `${p}%` };
5047
- return /* @__PURE__ */ import_react24.default.createElement(
5270
+ return /* @__PURE__ */ import_react25.default.createElement(
5048
5271
  "div",
5049
5272
  {
5050
5273
  key: thumb,
@@ -5060,30 +5283,30 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5060
5283
  onPointerDown: (e) => handleThumbPointerDown(e, thumb),
5061
5284
  onKeyDown: (e) => handleThumbKeyDown(e, thumb)
5062
5285
  },
5063
- valueLabelDisplay !== "off" && /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
5286
+ valueLabelDisplay !== "off" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__value-label", "aria-hidden": "true" }, val)
5064
5287
  );
5065
5288
  };
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(
5289
+ 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
5290
  "div",
5068
5291
  {
5069
5292
  ref: trackRef,
5070
5293
  className: "rf-slider__track-container",
5071
5294
  onPointerDown: handleTrackPointerDown
5072
5295
  },
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" }),
5296
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__rail", "aria-hidden": "true" }),
5297
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__track", style: trackStyle, "aria-hidden": "true" }),
5075
5298
  computedMarks.map((mark) => {
5076
5299
  const p = pct(mark.value, min, max);
5077
5300
  const isActive = isRange ? mark.value >= vals[0] && mark.value <= vals[1] : mark.value <= vals[0];
5078
5301
  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(
5302
+ return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: mark.value }, /* @__PURE__ */ import_react25.default.createElement(
5080
5303
  "div",
5081
5304
  {
5082
5305
  className: `rf-slider__mark${isActive ? " rf-slider__mark--active" : ""}`,
5083
5306
  style: markStyle,
5084
5307
  "aria-hidden": "true"
5085
5308
  }
5086
- ), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react24.default.createElement(
5309
+ ), mark.label && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement(
5087
5310
  "div",
5088
5311
  {
5089
5312
  className: "rf-slider__mark-label",
@@ -5095,13 +5318,13 @@ var Slider = import_react24.default.forwardRef(function Slider2(props, ref) {
5095
5318
  }),
5096
5319
  renderThumb(0),
5097
5320
  isRange && renderThumb(1)
5098
- ), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react24.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
5321
+ ), hasLabelledMarks && orientation === "horizontal" && /* @__PURE__ */ import_react25.default.createElement("div", { className: "rf-slider__marks-labels", "aria-hidden": "true" }));
5099
5322
  });
5100
5323
  Slider.displayName = "Slider";
5101
5324
 
5102
5325
  // lib/Switch/Switch.tsx
5103
- var import_react25 = __toESM(require("react"), 1);
5104
- var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5326
+ var import_react26 = __toESM(require("react"), 1);
5327
+ var Switch = import_react26.default.forwardRef(function Switch2(props, ref) {
5105
5328
  const {
5106
5329
  checked = false,
5107
5330
  onChange,
@@ -5116,8 +5339,8 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5116
5339
  sx
5117
5340
  } = props;
5118
5341
  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;
5342
+ const inputRef = (0, import_react26.useRef)(null);
5343
+ const inputId = (0, import_react26.useRef)(`rf-sw-${Math.random().toString(36).slice(2, 9)}`).current;
5121
5344
  const handleChange = (e) => {
5122
5345
  if (!disabled) onChange?.(e.target.checked);
5123
5346
  };
@@ -5131,7 +5354,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5131
5354
  sxClass,
5132
5355
  className
5133
5356
  ].filter(Boolean).join(" ");
5134
- return /* @__PURE__ */ import_react25.default.createElement(
5357
+ return /* @__PURE__ */ import_react26.default.createElement(
5135
5358
  "label",
5136
5359
  {
5137
5360
  ref,
@@ -5139,7 +5362,7 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5139
5362
  style,
5140
5363
  htmlFor: inputId
5141
5364
  },
5142
- /* @__PURE__ */ import_react25.default.createElement(
5365
+ /* @__PURE__ */ import_react26.default.createElement(
5143
5366
  "input",
5144
5367
  {
5145
5368
  ref: inputRef,
@@ -5154,17 +5377,17 @@ var Switch = import_react25.default.forwardRef(function Switch2(props, ref) {
5154
5377
  "aria-checked": checked
5155
5378
  }
5156
5379
  ),
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)" } }, " *"))
5380
+ /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__track", "aria-hidden": "true" }, /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-switch__thumb" })),
5381
+ 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
5382
  );
5160
5383
  });
5161
5384
  Switch.displayName = "Switch";
5162
5385
 
5163
5386
  // 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);
5387
+ var import_react27 = __toESM(require("react"), 1);
5388
+ var RadioGroupContext = (0, import_react27.createContext)({});
5389
+ var Radio = import_react27.default.forwardRef(function Radio2(props, ref) {
5390
+ const ctx = (0, import_react27.useContext)(RadioGroupContext);
5168
5391
  const {
5169
5392
  value,
5170
5393
  label,
@@ -5176,7 +5399,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5176
5399
  sx
5177
5400
  } = props;
5178
5401
  const sxClass = useSx(sx);
5179
- const inputId = (0, import_react26.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
5402
+ const inputId = (0, import_react27.useRef)(`rf-radio-${Math.random().toString(36).slice(2, 9)}`).current;
5180
5403
  const isChecked = checkedProp !== void 0 ? checkedProp : ctx.value === value;
5181
5404
  const isDisabled = disabledProp !== void 0 ? disabledProp : ctx.disabled ?? false;
5182
5405
  const size = sizeProp ?? ctx.size ?? "medium";
@@ -5194,7 +5417,7 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5194
5417
  isDisabled ? "rf-radio--disabled" : "",
5195
5418
  sxClass
5196
5419
  ].filter(Boolean).join(" ");
5197
- return /* @__PURE__ */ import_react26.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react26.default.createElement(
5420
+ return /* @__PURE__ */ import_react27.default.createElement("label", { ref, className: rootClasses, htmlFor: inputId }, /* @__PURE__ */ import_react27.default.createElement(
5198
5421
  "input",
5199
5422
  {
5200
5423
  id: inputId,
@@ -5207,10 +5430,10 @@ var Radio = import_react26.default.forwardRef(function Radio2(props, ref) {
5207
5430
  name,
5208
5431
  "aria-checked": isChecked
5209
5432
  }
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));
5433
+ ), /* @__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
5434
  });
5212
5435
  Radio.displayName = "Radio";
5213
- var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, ref) {
5436
+ var RadioGroup = import_react27.default.forwardRef(function RadioGroup2(props, ref) {
5214
5437
  const {
5215
5438
  value,
5216
5439
  onChange,
@@ -5226,7 +5449,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5226
5449
  sx
5227
5450
  } = props;
5228
5451
  const sxClass = useSx(sx);
5229
- const groupName = (0, import_react26.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
5452
+ const groupName = (0, import_react27.useRef)(name ?? `rf-rg-${Math.random().toString(36).slice(2, 9)}`).current;
5230
5453
  const rootClasses = [
5231
5454
  "rf-radio-group",
5232
5455
  row ? "rf-radio-group--row" : "",
@@ -5234,7 +5457,7 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5234
5457
  sxClass,
5235
5458
  className
5236
5459
  ].filter(Boolean).join(" ");
5237
- return /* @__PURE__ */ import_react26.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react26.default.createElement(
5460
+ return /* @__PURE__ */ import_react27.default.createElement(RadioGroupContext.Provider, { value: { value, onChange, name: groupName, disabled, size } }, /* @__PURE__ */ import_react27.default.createElement(
5238
5461
  "div",
5239
5462
  {
5240
5463
  ref,
@@ -5243,8 +5466,8 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5243
5466
  role: "radiogroup",
5244
5467
  "aria-label": label
5245
5468
  },
5246
- label && /* @__PURE__ */ import_react26.default.createElement("div", { className: "rf-radio-group__label" }, label),
5247
- options ? options.map((opt) => /* @__PURE__ */ import_react26.default.createElement(
5469
+ label && /* @__PURE__ */ import_react27.default.createElement("div", { className: "rf-radio-group__label" }, label),
5470
+ options ? options.map((opt) => /* @__PURE__ */ import_react27.default.createElement(
5248
5471
  Radio,
5249
5472
  {
5250
5473
  key: opt.value,
@@ -5258,9 +5481,9 @@ var RadioGroup = import_react26.default.forwardRef(function RadioGroup2(props, r
5258
5481
  RadioGroup.displayName = "RadioGroup";
5259
5482
 
5260
5483
  // lib/Rating/Rating.tsx
5261
- var import_react27 = __toESM(require("react"), 1);
5484
+ var import_react28 = __toESM(require("react"), 1);
5262
5485
  var starSize = { small: 18, medium: 24, large: 32 };
5263
- var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createElement(
5486
+ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
5264
5487
  "svg",
5265
5488
  {
5266
5489
  width: size,
@@ -5269,9 +5492,9 @@ var FilledStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.create
5269
5492
  fill: "currentColor",
5270
5493
  "aria-hidden": "true"
5271
5494
  },
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" })
5495
+ /* @__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
5496
  );
5274
- var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createElement(
5497
+ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react28.default.createElement(
5275
5498
  "svg",
5276
5499
  {
5277
5500
  width: size,
@@ -5282,9 +5505,9 @@ var EmptyStarIcon = ({ size }) => /* @__PURE__ */ import_react27.default.createE
5282
5505
  strokeWidth: "1.6",
5283
5506
  "aria-hidden": "true"
5284
5507
  },
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" })
5508
+ /* @__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
5509
  );
5287
- var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5510
+ var Rating = import_react28.default.forwardRef(function Rating2(props, ref) {
5288
5511
  const {
5289
5512
  value,
5290
5513
  onChange,
@@ -5302,13 +5525,13 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5302
5525
  sx
5303
5526
  } = props;
5304
5527
  const sxClass = useSx(sx);
5305
- const [hoverValue, setHoverValue] = (0, import_react27.useState)(null);
5306
- const starsRef = (0, import_react27.useRef)(null);
5528
+ const [hoverValue, setHoverValue] = (0, import_react28.useState)(null);
5529
+ const starsRef = (0, import_react28.useRef)(null);
5307
5530
  const currentValue = value ?? 0;
5308
5531
  const displayValue = hoverValue !== null ? hoverValue : currentValue;
5309
5532
  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 });
5533
+ const renderedFilledIcon = icon ?? /* @__PURE__ */ import_react28.default.createElement(FilledStarIcon, { size: iconSize });
5534
+ const renderedEmptyIcon = emptyIcon ?? /* @__PURE__ */ import_react28.default.createElement(EmptyStarIcon, { size: iconSize });
5312
5535
  const isFilled = (pos) => {
5313
5536
  if (highlightSelectedOnly) return displayValue === pos;
5314
5537
  return displayValue >= pos - (precision < 1 ? 0.25 : 0);
@@ -5369,7 +5592,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5369
5592
  sxClass,
5370
5593
  className
5371
5594
  ].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(
5595
+ 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
5596
  "div",
5374
5597
  {
5375
5598
  ref: starsRef,
@@ -5386,7 +5609,7 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5386
5609
  "rf-rating__item",
5387
5610
  isHovered ? "rf-rating__item--hovered" : ""
5388
5611
  ].filter(Boolean).join(" ");
5389
- return /* @__PURE__ */ import_react27.default.createElement(
5612
+ return /* @__PURE__ */ import_react28.default.createElement(
5390
5613
  "button",
5391
5614
  {
5392
5615
  key: pos,
@@ -5401,15 +5624,15 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5401
5624
  },
5402
5625
  halfFilled ? (
5403
5626
  // 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(
5627
+ /* @__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
5628
  "span",
5406
5629
  {
5407
5630
  className: "rf-rating__half-left",
5408
5631
  style: { position: "absolute", inset: 0, width: "50%", overflow: "hidden" }
5409
5632
  },
5410
- /* @__PURE__ */ import_react27.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
5633
+ /* @__PURE__ */ import_react28.default.createElement("span", { className: "rf-rating__icon--filled" }, renderedFilledIcon)
5411
5634
  ))
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))
5635
+ ) : /* @__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
5636
  );
5414
5637
  })
5415
5638
  ));
@@ -5417,11 +5640,11 @@ var Rating = import_react27.default.forwardRef(function Rating2(props, ref) {
5417
5640
  Rating.displayName = "Rating";
5418
5641
 
5419
5642
  // 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(
5643
+ var import_react29 = __toESM(require("react"), 1);
5644
+ var ToggleGroupContext = (0, import_react29.createContext)({});
5645
+ var ToggleButton = import_react29.default.forwardRef(
5423
5646
  function ToggleButton2(props, ref) {
5424
- const ctx = (0, import_react28.useContext)(ToggleGroupContext);
5647
+ const ctx = (0, import_react29.useContext)(ToggleGroupContext);
5425
5648
  const { value, children, disabled: disabledProp, selected: selectedProp, sx } = props;
5426
5649
  const sxClass = useSx(sx);
5427
5650
  let isSelected = false;
@@ -5452,7 +5675,7 @@ var ToggleButton = import_react28.default.forwardRef(
5452
5675
  }
5453
5676
  }
5454
5677
  };
5455
- const isIconOnly = import_react28.default.Children.count(children) === 1 && import_react28.default.isValidElement(children) && children.type === "svg";
5678
+ const isIconOnly = import_react29.default.Children.count(children) === 1 && import_react29.default.isValidElement(children) && children.type === "svg";
5456
5679
  const btnClasses = [
5457
5680
  "rf-toggle-btn",
5458
5681
  isSelected ? "rf-toggle-btn--selected" : "",
@@ -5460,7 +5683,7 @@ var ToggleButton = import_react28.default.forwardRef(
5460
5683
  isIconOnly ? "rf-toggle-btn--icon-only" : "",
5461
5684
  sxClass
5462
5685
  ].filter(Boolean).join(" ");
5463
- return /* @__PURE__ */ import_react28.default.createElement(
5686
+ return /* @__PURE__ */ import_react29.default.createElement(
5464
5687
  "button",
5465
5688
  {
5466
5689
  ref,
@@ -5475,7 +5698,7 @@ var ToggleButton = import_react28.default.forwardRef(
5475
5698
  }
5476
5699
  );
5477
5700
  ToggleButton.displayName = "ToggleButton";
5478
- var ToggleButtonGroup = import_react28.default.forwardRef(
5701
+ var ToggleButtonGroup = import_react29.default.forwardRef(
5479
5702
  function ToggleButtonGroup2(props, ref) {
5480
5703
  const {
5481
5704
  value,
@@ -5502,7 +5725,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
5502
5725
  sxClass,
5503
5726
  className
5504
5727
  ].filter(Boolean).join(" ");
5505
- return /* @__PURE__ */ import_react28.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react28.default.createElement(
5728
+ return /* @__PURE__ */ import_react29.default.createElement(ToggleGroupContext.Provider, { value: { value, onChange, exclusive, size, disabled, color } }, /* @__PURE__ */ import_react29.default.createElement(
5506
5729
  "div",
5507
5730
  {
5508
5731
  ref,
@@ -5518,7 +5741,7 @@ var ToggleButtonGroup = import_react28.default.forwardRef(
5518
5741
  ToggleButtonGroup.displayName = "ToggleButtonGroup";
5519
5742
 
5520
5743
  // lib/Avatar/Avatar.tsx
5521
- var import_react29 = __toESM(require("react"), 1);
5744
+ var import_react30 = __toESM(require("react"), 1);
5522
5745
  var DEFAULT_PALETTE = [
5523
5746
  "#a41b06",
5524
5747
  "#8b1605",
@@ -5553,7 +5776,7 @@ function getInitials(alt) {
5553
5776
  }
5554
5777
  return words[0][0].toUpperCase();
5555
5778
  }
5556
- var Avatar = import_react29.default.forwardRef(
5779
+ var Avatar = import_react30.default.forwardRef(
5557
5780
  ({
5558
5781
  src,
5559
5782
  alt,
@@ -5568,7 +5791,7 @@ var Avatar = import_react29.default.forwardRef(
5568
5791
  sx
5569
5792
  }, ref) => {
5570
5793
  const sxClass = useSx(sx);
5571
- const [imgError, setImgError] = (0, import_react29.useState)(false);
5794
+ const [imgError, setImgError] = (0, import_react30.useState)(false);
5572
5795
  const { className: sizeClass, style: sizeStyle } = getSizeStyle(size);
5573
5796
  const bgColor = color || DEFAULT_PALETTE[_avatarColorIndex % DEFAULT_PALETTE.length];
5574
5797
  const classes = [
@@ -5588,7 +5811,7 @@ var Avatar = import_react29.default.forwardRef(
5588
5811
  inlineStyle.backgroundColor = bgColor;
5589
5812
  inlineStyle.color = "#ffffff";
5590
5813
  }
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(
5814
+ 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
5815
  "img",
5593
5816
  {
5594
5817
  src,
@@ -5597,7 +5820,7 @@ var Avatar = import_react29.default.forwardRef(
5597
5820
  onError: () => setImgError(true),
5598
5821
  ...imgProps
5599
5822
  }
5600
- ) : /* @__PURE__ */ import_react29.default.createElement("span", { className: "rf-avatar__initials" }, content));
5823
+ ) : /* @__PURE__ */ import_react30.default.createElement("span", { className: "rf-avatar__initials" }, content));
5601
5824
  }
5602
5825
  );
5603
5826
  Avatar.displayName = "Avatar";
@@ -5610,7 +5833,7 @@ var AvatarGroup = ({
5610
5833
  sx
5611
5834
  }) => {
5612
5835
  const sxClass = useSx(sx);
5613
- const childArray = import_react29.default.Children.toArray(children);
5836
+ const childArray = import_react30.default.Children.toArray(children);
5614
5837
  const totalCount = childArray.length;
5615
5838
  const overflowCount = totalCount > max ? totalCount - (max - 1) : 0;
5616
5839
  const visibleChildren = overflowCount > 0 ? childArray.slice(0, max - 1) : childArray;
@@ -5624,7 +5847,7 @@ var AvatarGroup = ({
5624
5847
  }
5625
5848
  const classes = ["rf-avatar-group", spacingClass, sxClass, className].filter(Boolean).join(" ");
5626
5849
  const avatarsToRender = [...visibleChildren].reverse();
5627
- return /* @__PURE__ */ import_react29.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react29.default.createElement(
5850
+ return /* @__PURE__ */ import_react30.default.createElement("div", { className: classes, style, role: "group" }, overflowCount > 0 && /* @__PURE__ */ import_react30.default.createElement(
5628
5851
  Avatar,
5629
5852
  {
5630
5853
  className: "rf-avatar-group__overflow",
@@ -5636,7 +5859,7 @@ var AvatarGroup = ({
5636
5859
  ), avatarsToRender.map((child, i) => {
5637
5860
  if (typeof spacing === "number") {
5638
5861
  const typedChild = child;
5639
- return import_react29.default.cloneElement(typedChild, {
5862
+ return import_react30.default.cloneElement(typedChild, {
5640
5863
  key: i,
5641
5864
  style: {
5642
5865
  marginLeft: i < avatarsToRender.length - 1 ? -spacing : 0,
@@ -5650,7 +5873,7 @@ var AvatarGroup = ({
5650
5873
  AvatarGroup.displayName = "AvatarGroup";
5651
5874
 
5652
5875
  // lib/Chip/Chip.tsx
5653
- var import_react30 = __toESM(require("react"), 1);
5876
+ var import_react31 = __toESM(require("react"), 1);
5654
5877
  var Chip = ({
5655
5878
  label,
5656
5879
  onDelete,
@@ -5688,7 +5911,7 @@ var Chip = ({
5688
5911
  onDelete();
5689
5912
  }
5690
5913
  };
5691
- return /* @__PURE__ */ import_react30.default.createElement(
5914
+ return /* @__PURE__ */ import_react31.default.createElement(
5692
5915
  "div",
5693
5916
  {
5694
5917
  className: classes,
@@ -5699,10 +5922,10 @@ var Chip = ({
5699
5922
  onKeyDown: !disabled ? handleKeyDown : void 0,
5700
5923
  "aria-disabled": disabled || void 0
5701
5924
  },
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(
5925
+ avatar && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__avatar" }, avatar),
5926
+ !avatar && icon && /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__icon", "aria-hidden": "true" }, icon),
5927
+ /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-chip__label" }, label),
5928
+ onDelete && /* @__PURE__ */ import_react31.default.createElement(
5706
5929
  "button",
5707
5930
  {
5708
5931
  className: "rf-chip__delete",
@@ -5723,7 +5946,7 @@ var Chip = ({
5723
5946
  Chip.displayName = "Chip";
5724
5947
 
5725
5948
  // lib/Divider/Divider.tsx
5726
- var import_react31 = __toESM(require("react"), 1);
5949
+ var import_react32 = __toESM(require("react"), 1);
5727
5950
  var Divider = ({
5728
5951
  orientation = "horizontal",
5729
5952
  variant = "fullWidth",
@@ -5737,7 +5960,7 @@ var Divider = ({
5737
5960
  sx
5738
5961
  }) => {
5739
5962
  const sxClass = useSx(sx);
5740
- const hasChildren = import_react31.default.Children.count(children) > 0;
5963
+ const hasChildren = import_react32.default.Children.count(children) > 0;
5741
5964
  const variantClass = variant === "inset" ? "rf-divider--inset" : variant === "middle" ? "rf-divider--middle" : "";
5742
5965
  const classes = [
5743
5966
  "rf-divider",
@@ -5753,7 +5976,7 @@ var Divider = ({
5753
5976
  ].filter(Boolean).join(" ");
5754
5977
  const Tag = component || (hasChildren ? "div" : "hr");
5755
5978
  if (!hasChildren) {
5756
- return /* @__PURE__ */ import_react31.default.createElement(
5979
+ return /* @__PURE__ */ import_react32.default.createElement(
5757
5980
  Tag,
5758
5981
  {
5759
5982
  className: classes,
@@ -5762,7 +5985,7 @@ var Divider = ({
5762
5985
  }
5763
5986
  );
5764
5987
  }
5765
- return /* @__PURE__ */ import_react31.default.createElement(
5988
+ return /* @__PURE__ */ import_react32.default.createElement(
5766
5989
  Tag,
5767
5990
  {
5768
5991
  className: classes,
@@ -5770,13 +5993,13 @@ var Divider = ({
5770
5993
  role: "separator",
5771
5994
  "aria-orientation": orientation
5772
5995
  },
5773
- /* @__PURE__ */ import_react31.default.createElement("span", { className: "rf-divider__text" }, children)
5996
+ /* @__PURE__ */ import_react32.default.createElement("span", { className: "rf-divider__text" }, children)
5774
5997
  );
5775
5998
  };
5776
5999
  Divider.displayName = "Divider";
5777
6000
 
5778
6001
  // lib/List/List.tsx
5779
- var import_react32 = __toESM(require("react"), 1);
6002
+ var import_react33 = __toESM(require("react"), 1);
5780
6003
  var List = ({
5781
6004
  dense = false,
5782
6005
  disablePadding = false,
@@ -5794,7 +6017,7 @@ var List = ({
5794
6017
  sxClass,
5795
6018
  className
5796
6019
  ].filter(Boolean).join(" ");
5797
- return /* @__PURE__ */ import_react32.default.createElement("ul", { className: classes, style }, subheader, children);
6020
+ return /* @__PURE__ */ import_react33.default.createElement("ul", { className: classes, style }, subheader, children);
5798
6021
  };
5799
6022
  List.displayName = "List";
5800
6023
  var ListItem = ({
@@ -5818,7 +6041,7 @@ var ListItem = ({
5818
6041
  sxClass,
5819
6042
  className
5820
6043
  ].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));
6044
+ 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
6045
  };
5823
6046
  ListItem.displayName = "ListItem";
5824
6047
  var ListItemText = ({
@@ -5835,12 +6058,12 @@ var ListItemText = ({
5835
6058
  inset ? "rf-list-item-text--inset" : "",
5836
6059
  sxClass
5837
6060
  ].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));
6061
+ 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
6062
  };
5840
6063
  ListItemText.displayName = "ListItemText";
5841
6064
  var ListItemIcon = ({ children, sx }) => {
5842
6065
  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);
6066
+ return /* @__PURE__ */ import_react33.default.createElement("div", { className: ["rf-list-item-icon", sxClass].filter(Boolean).join(" "), "aria-hidden": "true" }, children);
5844
6067
  };
5845
6068
  ListItemIcon.displayName = "ListItemIcon";
5846
6069
  var ListItemButton = ({
@@ -5872,7 +6095,7 @@ var ListItemButton = ({
5872
6095
  "aria-disabled": disabled || void 0
5873
6096
  };
5874
6097
  if (href) {
5875
- return /* @__PURE__ */ import_react32.default.createElement(
6098
+ return /* @__PURE__ */ import_react33.default.createElement(
5876
6099
  "a",
5877
6100
  {
5878
6101
  href,
@@ -5883,7 +6106,7 @@ var ListItemButton = ({
5883
6106
  children
5884
6107
  );
5885
6108
  }
5886
- return /* @__PURE__ */ import_react32.default.createElement(
6109
+ return /* @__PURE__ */ import_react33.default.createElement(
5887
6110
  "button",
5888
6111
  {
5889
6112
  type: "button",
@@ -5912,12 +6135,12 @@ var ListSubheader = ({
5912
6135
  color !== "default" ? `rf-list-subheader--color-${color}` : "",
5913
6136
  sxClass
5914
6137
  ].filter(Boolean).join(" ");
5915
- return /* @__PURE__ */ import_react32.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
6138
+ return /* @__PURE__ */ import_react33.default.createElement("li", { className: classes, role: "presentation", "aria-label": typeof children === "string" ? children : void 0 }, children);
5916
6139
  };
5917
6140
  ListSubheader.displayName = "ListSubheader";
5918
6141
 
5919
6142
  // lib/Typography/Typography.tsx
5920
- var import_react33 = __toESM(require("react"), 1);
6143
+ var import_react34 = __toESM(require("react"), 1);
5921
6144
  var VARIANT_ELEMENT_MAP = {
5922
6145
  h1: "h1",
5923
6146
  h2: "h2",
@@ -5925,349 +6148,124 @@ var VARIANT_ELEMENT_MAP = {
5925
6148
  h4: "h4",
5926
6149
  h5: "h5",
5927
6150
  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,
6151
+ subtitle1: "h6",
6152
+ subtitle2: "h6",
6153
+ body1: "p",
6154
+ body2: "p",
6155
+ caption: "span",
6156
+ overline: "span",
6157
+ button: "span"
6158
+ };
6159
+ var COLOR_CLASSES = {
6160
+ primary: "rf-typography--color-primary",
6161
+ secondary: "rf-typography--color-secondary",
6162
+ textPrimary: "rf-typography--color-textPrimary",
6163
+ textSecondary: "rf-typography--color-textSecondary",
6164
+ error: "rf-typography--color-error"
6165
+ };
6166
+ var WEIGHT_CLASSES = {
6167
+ light: "rf-typography--weight-light",
6168
+ regular: "rf-typography--weight-regular",
6169
+ medium: "rf-typography--weight-medium",
6170
+ bold: "rf-typography--weight-bold"
6171
+ };
6172
+ var Typography = ({
6173
+ variant = "body1",
6174
+ component,
6175
+ align = "inherit",
6176
+ color,
6177
+ noWrap = false,
6178
+ gutterBottom = false,
6179
+ paragraph = false,
6180
+ fontWeight,
6138
6181
  children,
6139
- followCursor = false,
6140
6182
  className = "",
6141
6183
  style,
6142
6184
  sx
6143
6185
  }) => {
6144
6186
  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);
6187
+ const Tag = component || (paragraph ? "p" : VARIANT_ELEMENT_MAP[variant] || "span");
6188
+ const colorClass = color ? COLOR_CLASSES[color] : "";
6189
+ const colorStyle = color && !COLOR_CLASSES[color] ? { color } : {};
6190
+ let weightClass = "";
6191
+ let weightStyle = {};
6192
+ if (fontWeight !== void 0) {
6193
+ if (typeof fontWeight === "string") {
6194
+ weightClass = WEIGHT_CLASSES[fontWeight] || "";
6201
6195
  } else {
6202
- setInternalOpen(false);
6196
+ weightStyle = { fontWeight };
6203
6197
  }
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
6198
  }
6227
- const tooltipClasses = [
6228
- "rf-tooltip",
6229
- `rf-tooltip--placement-${placement}`,
6230
- isOpen ? "rf-tooltip--visible" : "",
6199
+ const alignClass = align !== "inherit" ? `rf-typography--align-${align}` : "";
6200
+ const classes = [
6201
+ "rf-typography",
6202
+ `rf-typography--${variant}`,
6203
+ alignClass,
6204
+ colorClass,
6205
+ weightClass,
6206
+ noWrap ? "rf-typography--no-wrap" : "",
6207
+ gutterBottom ? "rf-typography--gutter-bottom" : "",
6208
+ paragraph ? "rf-typography--paragraph" : "",
6231
6209
  sxClass,
6232
6210
  className
6233
6211
  ].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(
6212
+ const inlineStyle = {
6213
+ ...colorStyle,
6214
+ ...weightStyle,
6215
+ ...style
6216
+ };
6217
+ return /* @__PURE__ */ import_react34.default.createElement(Tag, { className: classes, style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0 }, children);
6218
+ };
6219
+ Typography.displayName = "Typography";
6220
+
6221
+ // lib/Skeleton/Skeleton.tsx
6222
+ var import_react35 = __toESM(require("react"), 1);
6223
+ var Skeleton = ({
6224
+ variant = "text",
6225
+ width,
6226
+ height,
6227
+ animation = "pulse",
6228
+ className = "",
6229
+ style,
6230
+ sx
6231
+ }) => {
6232
+ const sxClass = useSx(sx);
6233
+ const animationClass = animation === "pulse" ? "rf-skeleton--pulse" : animation === "wave" ? "rf-skeleton--wave" : "rf-skeleton--no-animation";
6234
+ const classes = [
6235
+ "rf-skeleton",
6236
+ `rf-skeleton--${variant}`,
6237
+ animationClass,
6238
+ sxClass,
6239
+ className
6240
+ ].filter(Boolean).join(" ");
6241
+ const inlineStyle = {
6242
+ ...width !== void 0 ? { width: typeof width === "number" ? width : width } : {},
6243
+ ...height !== void 0 ? { height: typeof height === "number" ? height : height } : {},
6244
+ ...style
6245
+ };
6246
+ if (variant === "text" && !height) {
6247
+ }
6248
+ if (variant === "circular" && !width && !height) {
6249
+ inlineStyle.width = 40;
6250
+ inlineStyle.height = 40;
6251
+ }
6252
+ if (variant === "rectangular" && !height) {
6253
+ inlineStyle.height = 140;
6254
+ }
6255
+ if (variant === "rounded" && !height) {
6256
+ inlineStyle.height = 140;
6257
+ }
6258
+ return /* @__PURE__ */ import_react35.default.createElement(
6260
6259
  "span",
6261
6260
  {
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));
6261
+ className: classes,
6262
+ style: Object.keys(inlineStyle).length > 0 ? inlineStyle : void 0,
6263
+ "aria-busy": "true",
6264
+ "aria-live": "polite"
6265
+ }
6266
+ );
6269
6267
  };
6270
- Tooltip.displayName = "Tooltip";
6268
+ Skeleton.displayName = "Skeleton";
6271
6269
 
6272
6270
  // lib/Box/Box.tsx
6273
6271
  var React88 = __toESM(require("react"), 1);
@@ -8712,7 +8710,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8712
8710
  setPaused(false);
8713
8711
  }, []);
8714
8712
  (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(
8713
+ 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
8714
  "button",
8717
8715
  {
8718
8716
  className: `toolbar-btn ${speaking ? "is-active" : ""}`,
@@ -8722,11 +8720,10 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8722
8720
  } else {
8723
8721
  setShowPanel(!showPanel);
8724
8722
  }
8725
- },
8726
- title: "Text to Speech"
8723
+ }
8727
8724
  },
8728
8725
  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(
8726
+ )), 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
8727
  "select",
8731
8728
  {
8732
8729
  className: "tts-select",
@@ -8748,7 +8745,7 @@ var TextToSpeech = (0, import_react51.forwardRef)(({ editor, onTextToSpeech }, r
8748
8745
  ), /* @__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
8746
  handleSpeak();
8750
8747
  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")));
8748
+ } }, "\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
8749
  });
8753
8750
  var TextToSpeech_default = TextToSpeech;
8754
8751
 
@@ -8867,7 +8864,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8867
8864
  }, []);
8868
8865
  (0, import_react52.useImperativeHandle)(ref, () => ({ stop: stopListening }), [stopListening]);
8869
8866
  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}");
8867
+ 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
8868
  }
8872
8869
  const LANGUAGES2 = [
8873
8870
  { code: "en-US", label: "English (US)" },
@@ -8889,7 +8886,7 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8889
8886
  { code: "kn-IN", label: "Kannada" },
8890
8887
  { code: "ml-IN", label: "Malayalam" }
8891
8888
  ];
8892
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "stt-wrapper", ref: panelRef }, /* @__PURE__ */ import_react52.default.createElement(
8889
+ 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
8890
  "button",
8894
8891
  {
8895
8892
  className: `toolbar-btn ${listening ? "is-active stt-recording" : ""}`,
@@ -8899,11 +8896,10 @@ var SpeechToText = (0, import_react52.forwardRef)(({ editor, onSpeechToText }, r
8899
8896
  } else {
8900
8897
  setShowPanel(!showPanel);
8901
8898
  }
8902
- },
8903
- title: listening ? "Stop recording" : "Speech to Text"
8899
+ }
8904
8900
  },
8905
8901
  "\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(
8902
+ )), 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
8903
  "select",
8908
8904
  {
8909
8905
  className: "stt-select",
@@ -9057,16 +9053,15 @@ var AICommands = ({ editor, onAICommand }) => {
9057
9053
  setPreviousResults([]);
9058
9054
  }, []);
9059
9055
  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(
9056
+ 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
9057
  "button",
9062
9058
  {
9063
9059
  className: `toolbar-btn ${open ? "is-active" : ""}`,
9064
- onClick: () => setOpen(!open),
9065
- title: "AI Commands"
9060
+ onClick: () => setOpen(!open)
9066
9061
  },
9067
9062
  /* @__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
9063
  /* @__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(
9064
+ )), 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
9065
  "button",
9071
9066
  {
9072
9067
  key: cmd.id,
@@ -9083,16 +9078,15 @@ var AICommands = ({ editor, onAICommand }) => {
9083
9078
  onChange: (e) => setPromptText(e.target.value),
9084
9079
  rows: 3
9085
9080
  }
9086
- ), /* @__PURE__ */ import_react53.default.createElement(
9081
+ ), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Run with custom prompt", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
9087
9082
  "button",
9088
9083
  {
9089
9084
  className: "ai-modal-robot-btn",
9090
9085
  onClick: () => fetchAIResult(promptText, originalText),
9091
- disabled: loading,
9092
- title: "Run with custom prompt"
9086
+ disabled: loading
9093
9087
  },
9094
9088
  /* @__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(
9089
+ )))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ import_react53.default.createElement(
9096
9090
  "button",
9097
9091
  {
9098
9092
  className: "ai-modal-action-btn ai-modal-insert-btn",
@@ -9108,16 +9102,15 @@ var AICommands = ({ editor, onAICommand }) => {
9108
9102
  disabled: loading || !resultText
9109
9103
  },
9110
9104
  "Insert After"
9111
- ), /* @__PURE__ */ import_react53.default.createElement(
9105
+ ), /* @__PURE__ */ import_react53.default.createElement(Tooltip, { title: "Generate another response", placement: "top" }, /* @__PURE__ */ import_react53.default.createElement(
9112
9106
  "button",
9113
9107
  {
9114
9108
  className: "ai-modal-action-btn ai-modal-refresh-btn",
9115
9109
  onClick: handleRefresh,
9116
- disabled: loading,
9117
- title: "Generate another response"
9110
+ disabled: loading
9118
9111
  },
9119
9112
  /* @__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")))),
9113
+ ))), /* @__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
9114
  document.body
9122
9115
  ));
9123
9116
  };
@@ -9335,7 +9328,7 @@ var TranslateModal = ({ editor, onClose, onTranslate, initialSource, initialTarg
9335
9328
  },
9336
9329
  /* @__PURE__ */ import_react54.default.createElement("span", { className: "translate-code" }, lang.code),
9337
9330
  /* @__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(
9331
+ )))), /* @__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
9332
  "input",
9340
9333
  {
9341
9334
  type: "text",
@@ -10217,16 +10210,15 @@ var Dropdown = ({ trigger, children, className = "", keepOpen = false }) => {
10217
10210
  };
10218
10211
  position();
10219
10212
  }, [open]);
10220
- return /* @__PURE__ */ import_react55.default.createElement("div", { className: `dropdown ${className}`, ref }, /* @__PURE__ */ import_react55.default.createElement(
10213
+ 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
10214
  "button",
10222
10215
  {
10223
10216
  className: `toolbar-btn ${trigger.className || ""}`,
10224
- onClick: () => setOpen(!open),
10225
- title: trigger.title
10217
+ onClick: () => setOpen(!open)
10226
10218
  },
10227
10219
  trigger.label,
10228
10220
  /* @__PURE__ */ import_react55.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
10229
- ), open && (0, import_react_dom13.createPortal)(
10221
+ )), open && (0, import_react_dom13.createPortal)(
10230
10222
  /* @__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
10223
  document.body
10232
10224
  ));
@@ -10472,16 +10464,14 @@ var ColorPickerPanel = ({ editor, onClose }) => {
10472
10464
  onClick: () => setTab("text")
10473
10465
  },
10474
10466
  "Text"
10475
- )), /* @__PURE__ */ import_react55.default.createElement("div", { className: "color-picker-grid" }, COLOR_PALETTE.map((color, i) => /* @__PURE__ */ import_react55.default.createElement(
10467
+ )), /* @__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
10468
  "button",
10477
10469
  {
10478
- key: i,
10479
10470
  className: `color-picker-swatch ${color === "#ffffff" ? "white-swatch" : ""}${activeColor && activeColor.toLowerCase() === color.toLowerCase() ? " swatch-active" : ""}`,
10480
10471
  style: { background: color },
10481
- onClick: () => applyColor(color),
10482
- title: color
10472
+ onClick: () => applyColor(color)
10483
10473
  }
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")));
10474
+ )))), /* @__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
10475
  };
10486
10476
  var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTextToSpeech, onClose, onImageUpload, visibleButtons, isFullscreen, onToggleFullscreen }) => {
10487
10477
  const [, setEditorState] = (0, import_react55.useState)(0);
@@ -10562,25 +10552,23 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10562
10552
  setTimeout(() => setTranslateStatus(""), 2e3);
10563
10553
  }, [editor, translateSource, translateTarget, onTranslate]);
10564
10554
  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(
10555
+ 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
10556
  "button",
10567
10557
  {
10568
10558
  className: "toolbar-btn",
10569
10559
  onClick: () => editor.chain().focus().undo().run(),
10570
- disabled: !editor.can().undo(),
10571
- title: "Undo (Ctrl+Z)"
10560
+ disabled: !editor.can().undo()
10572
10561
  },
10573
10562
  /* @__PURE__ */ import_react55.default.createElement(IconUndo, null)
10574
- ), show("redo") && /* @__PURE__ */ import_react55.default.createElement(
10563
+ )), show("redo") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Redo (Ctrl+Y)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10575
10564
  "button",
10576
10565
  {
10577
10566
  className: "toolbar-btn",
10578
10567
  onClick: () => editor.chain().focus().redo().run(),
10579
- disabled: !editor.can().redo(),
10580
- title: "Redo (Ctrl+Y)"
10568
+ disabled: !editor.can().redo()
10581
10569
  },
10582
10570
  /* @__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(
10571
+ ))), 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
10572
  Dropdown,
10585
10573
  {
10586
10574
  trigger: {
@@ -10711,23 +10699,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10711
10699
  keepOpen: true
10712
10700
  },
10713
10701
  (close) => /* @__PURE__ */ import_react55.default.createElement(ColorPickerPanel, { editor, onClose: close })
10714
- ), show("bold") && /* @__PURE__ */ import_react55.default.createElement(
10702
+ ), show("bold") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Bold (Ctrl+B)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10715
10703
  "button",
10716
10704
  {
10717
10705
  className: `toolbar-btn ${editor.isActive("bold") ? "is-active" : ""}`,
10718
- onClick: () => editor.chain().focus().toggleBold().run(),
10719
- title: "Bold (Ctrl+B)"
10706
+ onClick: () => editor.chain().focus().toggleBold().run()
10720
10707
  },
10721
10708
  /* @__PURE__ */ import_react55.default.createElement(IconBold, null)
10722
- ), show("italic") && /* @__PURE__ */ import_react55.default.createElement(
10709
+ )), show("italic") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Italic (Ctrl+I)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10723
10710
  "button",
10724
10711
  {
10725
10712
  className: `toolbar-btn ${editor.isActive("italic") ? "is-active" : ""}`,
10726
- onClick: () => editor.chain().focus().toggleItalic().run(),
10727
- title: "Italic (Ctrl+I)"
10713
+ onClick: () => editor.chain().focus().toggleItalic().run()
10728
10714
  },
10729
10715
  /* @__PURE__ */ import_react55.default.createElement(IconItalic, null)
10730
- ), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
10716
+ )), show("strike") && /* @__PURE__ */ import_react55.default.createElement(
10731
10717
  Dropdown,
10732
10718
  {
10733
10719
  trigger: { label: /* @__PURE__ */ import_react55.default.createElement(IconStrike, null), title: "Text decoration", className: editor.isActive("strike") ? "is-active" : "" }
@@ -10752,15 +10738,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10752
10738
  c.run();
10753
10739
  }
10754
10740
  } }, "\u2715 Clear formatting")
10755
- ), show("link") && /* @__PURE__ */ import_react55.default.createElement(
10741
+ ), show("link") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Insert Link", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10756
10742
  "button",
10757
10743
  {
10758
10744
  className: `toolbar-btn ${editor.isActive("link") ? "is-active" : ""}`,
10759
- onClick: setLink,
10760
- title: "Insert Link"
10745
+ onClick: setLink
10761
10746
  },
10762
10747
  /* @__PURE__ */ import_react55.default.createElement(IconLink, null)
10763
- ), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
10748
+ )), show("lineheight") && /* @__PURE__ */ import_react55.default.createElement(
10764
10749
  Dropdown,
10765
10750
  {
10766
10751
  trigger: {
@@ -10787,15 +10772,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10787
10772
  lh
10788
10773
  );
10789
10774
  })
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(
10775
+ )), (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
10776
  "button",
10792
10777
  {
10793
10778
  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"
10779
+ onClick: () => editor.chain().focus().toggleBulletList().run()
10796
10780
  },
10797
10781
  /* @__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 }, [
10782
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10799
10783
  { label: "Default", style: null, icon: "\u2022" },
10800
10784
  { label: "Circle", style: "circle", icon: "\u25CB" },
10801
10785
  { label: "Dot", style: "disc", icon: "\u2219" },
@@ -10828,15 +10812,14 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10828
10812
  /* @__PURE__ */ import_react55.default.createElement("span", { className: "bullet-style-icon" }, item.icon),
10829
10813
  " ",
10830
10814
  item.label
10831
- )))), show("ol") && /* @__PURE__ */ import_react55.default.createElement("div", { className: "list-split-btn" }, /* @__PURE__ */ import_react55.default.createElement(
10815
+ )))), 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
10816
  "button",
10833
10817
  {
10834
10818
  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"
10819
+ onClick: () => editor.chain().focus().toggleOrderedList().run()
10837
10820
  },
10838
10821
  /* @__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 }, [
10822
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "List style", className: "list-arrow-btn" }, keepOpen: true }, [
10840
10823
  { label: "Default", style: "decimal", icon: "1." },
10841
10824
  { label: "Lower Alpha", style: "lower-alpha", icon: "a." },
10842
10825
  { label: "Lower Greek", style: "lower-greek", icon: "\u03B1." },
@@ -10896,7 +10879,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10896
10879
  " ",
10897
10880
  item.label
10898
10881
  ))
10899
- ), show("indent") && /* @__PURE__ */ import_react55.default.createElement(
10882
+ ), show("indent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Increase Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10900
10883
  "button",
10901
10884
  {
10902
10885
  className: "toolbar-btn",
@@ -10913,11 +10896,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10913
10896
  });
10914
10897
  return true;
10915
10898
  }).run();
10916
- },
10917
- title: "Increase Indent"
10899
+ }
10918
10900
  },
10919
10901
  /* @__PURE__ */ import_react55.default.createElement(IconIndentIncrease, null)
10920
- ), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(
10902
+ )), show("outdent") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Decrease Indent", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10921
10903
  "button",
10922
10904
  {
10923
10905
  className: "toolbar-btn",
@@ -10934,35 +10916,31 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10934
10916
  });
10935
10917
  return true;
10936
10918
  }).run();
10937
- },
10938
- title: "Decrease Indent"
10919
+ }
10939
10920
  },
10940
10921
  /* @__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(
10922
+ ))), 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
10923
  "button",
10943
10924
  {
10944
10925
  className: "toolbar-btn",
10945
- onClick: () => document.execCommand("cut"),
10946
- title: "Cut (Ctrl+X)"
10926
+ onClick: () => document.execCommand("cut")
10947
10927
  },
10948
10928
  /* @__PURE__ */ import_react55.default.createElement(IconCut, null)
10949
- ), show("copy") && /* @__PURE__ */ import_react55.default.createElement(
10929
+ )), show("copy") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Copy selected text", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10950
10930
  "button",
10951
10931
  {
10952
10932
  className: "toolbar-btn",
10953
- onClick: handleCopy,
10954
- title: "Copy selected text"
10933
+ onClick: handleCopy
10955
10934
  },
10956
10935
  copySuccess ? /* @__PURE__ */ import_react55.default.createElement(IconCheck, null) : /* @__PURE__ */ import_react55.default.createElement(IconCopy, null)
10957
- ), show("paste") && /* @__PURE__ */ import_react55.default.createElement(
10936
+ )), show("paste") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Paste (Ctrl+V)", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10958
10937
  "button",
10959
10938
  {
10960
10939
  className: "toolbar-btn",
10961
- onClick: handlePaste,
10962
- title: "Paste (Ctrl+V)"
10940
+ onClick: handlePaste
10963
10941
  },
10964
10942
  /* @__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(
10943
+ )), 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
10944
  "button",
10967
10945
  {
10968
10946
  key: char,
@@ -10994,23 +10972,21 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
10994
10972
  }
10995
10973
  } }, "</>", " Inline Code"),
10996
10974
  /* @__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(
10975
+ ), show("fullscreen") && /* @__PURE__ */ import_react55.default.createElement(Tooltip, { title: "Toggle Fullscreen", placement: "top" }, /* @__PURE__ */ import_react55.default.createElement(
10998
10976
  "button",
10999
10977
  {
11000
10978
  className: `toolbar-btn ${isFullscreen ? "is-active" : ""}`,
11001
- onClick: onToggleFullscreen,
11002
- title: "Toggle Fullscreen"
10979
+ onClick: onToggleFullscreen
11003
10980
  },
11004
10981
  /* @__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(
10982
+ )), 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
10983
  "button",
11007
10984
  {
11008
10985
  className: "toolbar-btn",
11009
- onClick: handleQuickTranslate,
11010
- title: "Translate selected text"
10986
+ onClick: handleQuickTranslate
11011
10987
  },
11012
10988
  /* @__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(
10989
+ )), /* @__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
10990
  "button",
11015
10991
  {
11016
10992
  className: `toolbar-btn ${todoEnabled ? "is-active" : ""}`,
@@ -11051,11 +11027,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11051
11027
  }).run();
11052
11028
  }
11053
11029
  }
11054
- },
11055
- title: todoEnabled ? "Disable Task List" : "Enable Task List"
11030
+ }
11056
11031
  },
11057
11032
  /* @__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) => {
11033
+ )), /* @__PURE__ */ import_react55.default.createElement(Dropdown, { trigger: { label: "", title: "Task status", className: "todo-arrow-btn" }, keepOpen: true }, ["todo", "working", "blocked", "resolved"].map((status) => {
11059
11034
  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
11035
  const labels = { todo: "Todo", working: "Working", blocked: "Blocked", resolved: "Resolved" };
11061
11036
  return /* @__PURE__ */ import_react55.default.createElement("button", { key: status, className: "dropdown-item task-status-item", onClick: () => {
@@ -11092,7 +11067,7 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11092
11067
  return true;
11093
11068
  }).run();
11094
11069
  } }, /* @__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(
11070
+ })))), 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
11071
  "button",
11097
11072
  {
11098
11073
  className: "toolbar-btn btn-cross",
@@ -11106,11 +11081,10 @@ var Toolbar = ({ editor, setLink, onAICommand, onTranslate, onSpeechToText, onTe
11106
11081
  } catch {
11107
11082
  }
11108
11083
  onClose();
11109
- },
11110
- title: "Close"
11084
+ }
11111
11085
  },
11112
11086
  /* @__PURE__ */ import_react55.default.createElement(closeIcon_default, { color: "#a81c08" })
11113
- )), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
11087
+ ))), showTranslateModal && /* @__PURE__ */ import_react55.default.createElement(
11114
11088
  TranslateModal_default,
11115
11089
  {
11116
11090
  editor,
@@ -11194,15 +11168,14 @@ var ImagePropertiesModal = ({ editor, node, onClose }) => {
11194
11168
  value: width,
11195
11169
  onChange: (e) => handleWidthChange(e.target.value)
11196
11170
  }
11197
- ), /* @__PURE__ */ import_react56.default.createElement(
11171
+ ), /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement(
11198
11172
  "button",
11199
11173
  {
11200
11174
  className: `lock-btn ${lockRatio ? "locked" : ""}`,
11201
- onClick: () => setLockRatio(!lockRatio),
11202
- title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
11175
+ onClick: () => setLockRatio(!lockRatio)
11203
11176
  },
11204
11177
  lockRatio ? "\u{1F512}" : "\u{1F513}"
11205
- ), /* @__PURE__ */ import_react56.default.createElement(
11178
+ )), /* @__PURE__ */ import_react56.default.createElement(
11206
11179
  "input",
11207
11180
  {
11208
11181
  type: "number",
@@ -11387,13 +11360,13 @@ var ImageToolbar = ({ editor }) => {
11387
11360
  style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
11388
11361
  onMouseDown: (e) => e.preventDefault()
11389
11362
  },
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: () => {
11363
+ /* @__PURE__ */ import_react56.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react56.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
11364
+ /* @__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")),
11365
+ /* @__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)),
11366
+ /* @__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
11367
  setShowAlign(!showAlign);
11395
11368
  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))))
11369
+ } }, "\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
11370
  ), showModal && /* @__PURE__ */ import_react56.default.createElement(
11398
11371
  ImagePropertiesModal,
11399
11372
  {
@@ -11476,15 +11449,14 @@ var VideoPropertiesModal = ({ editor, node, nodeType, onClose }) => {
11476
11449
  value: width,
11477
11450
  onChange: (e) => handleWidthChange(e.target.value)
11478
11451
  }
11479
- ), /* @__PURE__ */ import_react57.default.createElement(
11452
+ ), /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement(
11480
11453
  "button",
11481
11454
  {
11482
11455
  className: `lock-btn ${lockRatio ? "locked" : ""}`,
11483
- onClick: () => setLockRatio(!lockRatio),
11484
- title: lockRatio ? "Unlock aspect ratio" : "Lock aspect ratio"
11456
+ onClick: () => setLockRatio(!lockRatio)
11485
11457
  },
11486
11458
  lockRatio ? "\u{1F512}" : "\u{1F513}"
11487
- ), /* @__PURE__ */ import_react57.default.createElement(
11459
+ )), /* @__PURE__ */ import_react57.default.createElement(
11488
11460
  "input",
11489
11461
  {
11490
11462
  type: "number",
@@ -11611,13 +11583,13 @@ var VideoToolbar = ({ editor }) => {
11611
11583
  style: { position: "absolute", top: pos.top, left: pos.left, zIndex: 1e3 },
11612
11584
  onMouseDown: (e) => e.preventDefault()
11613
11585
  },
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: () => {
11586
+ /* @__PURE__ */ import_react57.default.createElement(Tooltip, { title: "Delete", placement: "top" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: handleDelete }, "\u{1F5D1}")),
11587
+ /* @__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")),
11588
+ /* @__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)),
11589
+ /* @__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
11590
  setShowSize(!showSize);
11619
11591
  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: () => {
11592
+ } }, /* @__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
11593
  handleResize("small");
11622
11594
  setShowSize(false);
11623
11595
  } }, "Small (320x180)"), /* @__PURE__ */ import_react57.default.createElement("button", { className: "dropdown-item", onClick: () => {
@@ -11630,10 +11602,10 @@ var VideoToolbar = ({ editor }) => {
11630
11602
  handleResize("full");
11631
11603
  setShowSize(false);
11632
11604
  } }, "Full (854x480)"))),
11633
- /* @__PURE__ */ import_react57.default.createElement("div", { className: "img-tool-dropdown" }, /* @__PURE__ */ import_react57.default.createElement("button", { className: "img-tool-btn", onClick: () => {
11605
+ /* @__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
11606
  setShowAlign(!showAlign);
11635
11607
  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))))
11608
+ } }, "\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
11609
  ), showModal && /* @__PURE__ */ import_react57.default.createElement(
11638
11610
  VideoPropertiesModal,
11639
11611
  {
@@ -11716,101 +11688,19 @@ var TableToolbar = ({ editor }) => {
11716
11688
  style: { top: pos.top, left: pos.left },
11717
11689
  onMouseDown: prevent
11718
11690
  },
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
- ),
11691
+ /* @__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))),
11692
+ /* @__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))),
11693
+ /* @__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
11694
  /* @__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
- ),
11695
+ /* @__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))),
11696
+ /* @__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))),
11697
+ /* @__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
11698
  /* @__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
- ),
11699
+ /* @__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))),
11700
+ /* @__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
11701
  /* @__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
- )
11702
+ /* @__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))),
11703
+ /* @__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
11704
  ),
11815
11705
  document.body
11816
11706
  );