@rufous/ui 0.2.68 → 0.2.69

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 +54 -47
  2. package/dist/main.js +35 -28
  3. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -1526,6 +1526,7 @@ IconButton.displayName = "IconButton";
1526
1526
  // lib/Dialogs/BaseDialog.tsx
1527
1527
  var React65 = __toESM(require("react"), 1);
1528
1528
  var import_react14 = require("react");
1529
+ var import_react_dom = __toESM(require("react-dom"), 1);
1529
1530
  var import_lucide_react = require("lucide-react");
1530
1531
  var BaseDialog = ({
1531
1532
  open = false,
@@ -1629,20 +1630,26 @@ var BaseDialog = ({
1629
1630
  dialogInner
1630
1631
  ) : /* @__PURE__ */ React65.createElement("div", { className: containerClass, style: containerStyle }, dialogInner);
1631
1632
  if (TransitionComponent) {
1632
- return /* @__PURE__ */ React65.createElement(
1633
- TransitionComponent,
1634
- {
1635
- in: open,
1636
- unmountOnExit: true,
1637
- ...TransitionProps,
1638
- onExited: () => {
1639
- TransitionProps?.onExited?.();
1640
- }
1641
- },
1642
- /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent)
1633
+ return import_react_dom.default.createPortal(
1634
+ /* @__PURE__ */ React65.createElement(
1635
+ TransitionComponent,
1636
+ {
1637
+ in: open,
1638
+ unmountOnExit: true,
1639
+ ...TransitionProps,
1640
+ onExited: () => {
1641
+ TransitionProps?.onExited?.();
1642
+ }
1643
+ },
1644
+ /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent)
1645
+ ),
1646
+ document.body
1643
1647
  );
1644
1648
  }
1645
- return /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent);
1649
+ return import_react_dom.default.createPortal(
1650
+ /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent),
1651
+ document.body
1652
+ );
1646
1653
  };
1647
1654
  var BaseDialog_default = BaseDialog;
1648
1655
 
@@ -2148,7 +2155,7 @@ var AddressLookup_default = AddressLookup;
2148
2155
 
2149
2156
  // lib/TextFields/DateField.tsx
2150
2157
  var import_react19 = __toESM(require("react"), 1);
2151
- var import_react_dom = require("react-dom");
2158
+ var import_react_dom2 = require("react-dom");
2152
2159
  var WEEKDAYS = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"];
2153
2160
  var MONTHS = [
2154
2161
  "January",
@@ -2794,7 +2801,7 @@ var DateField = ({
2794
2801
  )),
2795
2802
  label && /* @__PURE__ */ import_react19.default.createElement("label", { htmlFor: inputId, className: "rf-text-field__label" }, label, " ", required && /* @__PURE__ */ import_react19.default.createElement("span", { className: "rf-text-field__asterisk" }, "*")),
2796
2803
  variant === "outlined" && /* @__PURE__ */ import_react19.default.createElement("fieldset", { className: "rf-text-field__notch" }, label && /* @__PURE__ */ import_react19.default.createElement("legend", { className: "rf-text-field__legend" }, /* @__PURE__ */ import_react19.default.createElement("span", null, label, required ? " *" : "")))
2797
- ), open && !disabled && (0, import_react_dom.createPortal)(
2804
+ ), open && !disabled && (0, import_react_dom2.createPortal)(
2798
2805
  /* @__PURE__ */ import_react19.default.createElement(
2799
2806
  "div",
2800
2807
  {
@@ -3540,7 +3547,7 @@ DateRangeField.displayName = "DateRangeField";
3540
3547
 
3541
3548
  // lib/TextFields/Autocomplete.tsx
3542
3549
  var import_react21 = __toESM(require("react"), 1);
3543
- var import_react_dom2 = __toESM(require("react-dom"), 1);
3550
+ var import_react_dom3 = __toESM(require("react-dom"), 1);
3544
3551
  var ChevronDownIcon = () => /* @__PURE__ */ import_react21.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_react21.default.createElement("polyline", { points: "6 9 12 15 18 9" }));
3545
3552
  var CloseSmIcon = ({ size = 16 }) => /* @__PURE__ */ import_react21.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }, /* @__PURE__ */ import_react21.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), /* @__PURE__ */ import_react21.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" }));
3546
3553
  var CheckIcon = () => /* @__PURE__ */ import_react21.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_react21.default.createElement("polyline", { points: "20 6 9 17 4 12" }));
@@ -3858,7 +3865,7 @@ function AutocompleteInner(props, _ref) {
3858
3865
  },
3859
3866
  /* @__PURE__ */ import_react21.default.createElement(ChevronDownIcon, null)
3860
3867
  ))
3861
- ), helperText && /* @__PURE__ */ import_react21.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText), open && !disabled && import_react_dom2.default.createPortal(
3868
+ ), helperText && /* @__PURE__ */ import_react21.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText), open && !disabled && import_react_dom3.default.createPortal(
3862
3869
  /* @__PURE__ */ import_react21.default.createElement("div", { className: "rf-autocomplete__popup", role: "presentation", style: popupStyle }, loading ? /* @__PURE__ */ import_react21.default.createElement("div", { className: "rf-autocomplete__loading" }, /* @__PURE__ */ import_react21.default.createElement("span", { className: "rf-ac-spinner" }), loadingText) : flatEntries.length === 0 ? /* @__PURE__ */ import_react21.default.createElement("div", { className: "rf-autocomplete__no-options" }, noOptionsText) : /* @__PURE__ */ import_react21.default.createElement("ul", { ref: listRef, className: "rf-autocomplete__listbox", role: "listbox" }, groupBy ? (
3863
3870
  // Grouped render
3864
3871
  (() => {
@@ -4579,7 +4586,7 @@ function DataGrid({
4579
4586
 
4580
4587
  // lib/Select/Select.tsx
4581
4588
  var import_react23 = __toESM(require("react"), 1);
4582
- var import_react_dom3 = __toESM(require("react-dom"), 1);
4589
+ var import_react_dom4 = __toESM(require("react-dom"), 1);
4583
4590
  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" }));
4584
4591
  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" }));
4585
4592
  function normaliseOptions(options) {
@@ -4777,7 +4784,7 @@ var Select = import_react23.default.forwardRef(function Select2(props, ref) {
4777
4784
  /* @__PURE__ */ import_react23.default.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement(ChevronDownIcon2, null))
4778
4785
  ),
4779
4786
  helperText && /* @__PURE__ */ import_react23.default.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
4780
- open && !disabled && import_react_dom3.default.createPortal(
4787
+ open && !disabled && import_react_dom4.default.createPortal(
4781
4788
  /* @__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) => {
4782
4789
  const selected = isSelected(opt.value);
4783
4790
  const focused = focusedIdx === idx;
@@ -5963,7 +5970,7 @@ Skeleton.displayName = "Skeleton";
5963
5970
 
5964
5971
  // lib/Tooltip/Tooltip.tsx
5965
5972
  var import_react35 = __toESM(require("react"), 1);
5966
- var import_react_dom4 = __toESM(require("react-dom"), 1);
5973
+ var import_react_dom5 = __toESM(require("react-dom"), 1);
5967
5974
  var GAP = 8;
5968
5975
  function computePosition(anchor, tooltip, placement) {
5969
5976
  const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
@@ -6182,7 +6189,7 @@ var Tooltip = ({
6182
6189
  ...childProps
6183
6190
  },
6184
6191
  import_react35.default.cloneElement(children)
6185
- ), import_react_dom4.default.createPortal(tooltipElement, document.body));
6192
+ ), import_react_dom5.default.createPortal(tooltipElement, document.body));
6186
6193
  };
6187
6194
  Tooltip.displayName = "Tooltip";
6188
6195
 
@@ -7069,7 +7076,7 @@ Stepper.displayName = "Stepper";
7069
7076
 
7070
7077
  // lib/Menu/Menu.tsx
7071
7078
  var import_react40 = __toESM(require("react"), 1);
7072
- var import_react_dom5 = __toESM(require("react-dom"), 1);
7079
+ var import_react_dom6 = __toESM(require("react-dom"), 1);
7073
7080
  var MenuDivider = () => /* @__PURE__ */ import_react40.default.createElement("hr", { className: "rf-menu-divider", "aria-hidden": "true" });
7074
7081
  MenuDivider.displayName = "MenuDivider";
7075
7082
  var MenuItem = ({
@@ -7222,13 +7229,13 @@ var Menu = ({
7222
7229
  },
7223
7230
  children
7224
7231
  ));
7225
- return import_react_dom5.default.createPortal(portal, document.body);
7232
+ return import_react_dom6.default.createPortal(portal, document.body);
7226
7233
  };
7227
7234
  Menu.displayName = "Menu";
7228
7235
 
7229
7236
  // lib/Drawer/Drawer.tsx
7230
7237
  var import_react41 = __toESM(require("react"), 1);
7231
- var import_react_dom6 = __toESM(require("react-dom"), 1);
7238
+ var import_react_dom7 = __toESM(require("react-dom"), 1);
7232
7239
  var Drawer = ({
7233
7240
  open,
7234
7241
  onClose,
@@ -7328,7 +7335,7 @@ var Drawer = ({
7328
7335
  },
7329
7336
  children
7330
7337
  ));
7331
- return import_react_dom6.default.createPortal(
7338
+ return import_react_dom7.default.createPortal(
7332
7339
  /* @__PURE__ */ import_react41.default.createElement("div", { className: rootClasses, style }, drawerContent),
7333
7340
  document.body
7334
7341
  );
@@ -7337,7 +7344,7 @@ Drawer.displayName = "Drawer";
7337
7344
 
7338
7345
  // lib/Snackbar/Snackbar.tsx
7339
7346
  var import_react42 = __toESM(require("react"), 1);
7340
- var import_react_dom7 = __toESM(require("react-dom"), 1);
7347
+ var import_react_dom8 = __toESM(require("react-dom"), 1);
7341
7348
  var SEVERITY_ICONS = {
7342
7349
  success: "\u2713",
7343
7350
  error: "\u2715",
@@ -7442,7 +7449,7 @@ var Snackbar = ({
7442
7449
  "\u2715"
7443
7450
  )
7444
7451
  ));
7445
- return import_react_dom7.default.createPortal(snackbarEl, document.body);
7452
+ return import_react_dom8.default.createPortal(snackbarEl, document.body);
7446
7453
  };
7447
7454
  Snackbar.displayName = "Snackbar";
7448
7455
 
@@ -7496,7 +7503,7 @@ Link.displayName = "Link";
7496
7503
 
7497
7504
  // lib/Popper/Popper.tsx
7498
7505
  var import_react44 = __toESM(require("react"), 1);
7499
- var import_react_dom8 = __toESM(require("react-dom"), 1);
7506
+ var import_react_dom9 = __toESM(require("react-dom"), 1);
7500
7507
  function computePopperPosition(anchorRect, popperRect, placement, offset2 = [0, 8]) {
7501
7508
  const [skid, dist] = offset2;
7502
7509
  let top = 0;
@@ -7639,13 +7646,13 @@ var Popper = ({
7639
7646
  if (disablePortal) {
7640
7647
  return /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, popper);
7641
7648
  }
7642
- return import_react_dom8.default.createPortal(popper, document.body);
7649
+ return import_react_dom9.default.createPortal(popper, document.body);
7643
7650
  };
7644
7651
  Popper.displayName = "Popper";
7645
7652
 
7646
7653
  // lib/Popover/Popover.tsx
7647
7654
  var import_react45 = __toESM(require("react"), 1);
7648
- var import_react_dom9 = __toESM(require("react-dom"), 1);
7655
+ var import_react_dom10 = __toESM(require("react-dom"), 1);
7649
7656
  function getPoint(rect, v, h) {
7650
7657
  const x = h === "left" ? rect.left : h === "center" ? rect.left + rect.width / 2 : rect.right;
7651
7658
  const y = v === "top" ? rect.top : v === "center" ? rect.top + rect.height / 2 : rect.bottom;
@@ -7748,7 +7755,7 @@ var Popover = ({
7748
7755
  if (disablePortal) {
7749
7756
  return /* @__PURE__ */ import_react45.default.createElement("div", { className: `${rootClasses} rf-popover-inline`, style }, content);
7750
7757
  }
7751
- return import_react_dom9.default.createPortal(
7758
+ return import_react_dom10.default.createPortal(
7752
7759
  /* @__PURE__ */ import_react45.default.createElement("div", { className: rootClasses, style }, content),
7753
7760
  document.body
7754
7761
  );
@@ -8399,7 +8406,7 @@ PhoneField.displayName = "PhoneField";
8399
8406
 
8400
8407
  // lib/RufousTextEditor/RufousTextEditor.tsx
8401
8408
  var import_react59 = __toESM(require("react"), 1);
8402
- var import_react_dom16 = require("react-dom");
8409
+ var import_react_dom17 = require("react-dom");
8403
8410
  var import_react60 = require("@tiptap/react");
8404
8411
  var import_starter_kit = __toESM(require("@tiptap/starter-kit"), 1);
8405
8412
  var import_extension_placeholder = __toESM(require("@tiptap/extension-placeholder"), 1);
@@ -8521,7 +8528,7 @@ function createMentionSuggestion(users) {
8521
8528
 
8522
8529
  // lib/RufousTextEditor/Toolbar.tsx
8523
8530
  var import_react55 = __toESM(require("react"), 1);
8524
- var import_react_dom12 = require("react-dom");
8531
+ var import_react_dom13 = require("react-dom");
8525
8532
 
8526
8533
  // lib/RufousTextEditor/TextToSpeech.tsx
8527
8534
  var import_react51 = __toESM(require("react"), 1);
@@ -8834,7 +8841,7 @@ var SpeechToText_default = SpeechToText;
8834
8841
 
8835
8842
  // lib/RufousTextEditor/AICommands.tsx
8836
8843
  var import_react53 = __toESM(require("react"), 1);
8837
- var import_react_dom10 = require("react-dom");
8844
+ var import_react_dom11 = require("react-dom");
8838
8845
  var AI_COMMANDS = [
8839
8846
  { id: "improve", label: "Improve writing", prompt: "Improve the following text to make it clearer, more engaging, and well-structured. Return only the improved text, no explanations." },
8840
8847
  { id: "shorter", label: "Make shorter", prompt: "Make the following text shorter and more concise while keeping the key points. Return only the shortened text, no explanations." },
@@ -8991,7 +8998,7 @@ var AICommands = ({ editor, onAICommand }) => {
8991
8998
  onClick: () => handleCommandSelect(cmd)
8992
8999
  },
8993
9000
  cmd.label
8994
- ))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-hint" }, editor.state.selection.empty ? "Will apply to all text" : "Will apply to selected text"))), showModal && (0, import_react_dom10.createPortal)(
9001
+ ))), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-commands-hint" }, editor.state.selection.empty ? "Will apply to all text" : "Will apply to selected text"))), showModal && (0, import_react_dom11.createPortal)(
8995
9002
  /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-overlay", onMouseDown: handleCancel }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal", onMouseDown: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-header" }, /* @__PURE__ */ import_react53.default.createElement("span", { className: "ai-modal-title" }, "AI Assistant"), /* @__PURE__ */ import_react53.default.createElement("button", { className: "ai-modal-close", onClick: handleCancel }, "\xD7")), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-prompt-section" }, /* @__PURE__ */ import_react53.default.createElement("label", { className: "ai-modal-label" }, "Prompt"), /* @__PURE__ */ import_react53.default.createElement("div", { className: "ai-modal-prompt-row" }, /* @__PURE__ */ import_react53.default.createElement(
8996
9003
  "textarea",
8997
9004
  {
@@ -9042,7 +9049,7 @@ var AICommands_default = AICommands;
9042
9049
 
9043
9050
  // lib/RufousTextEditor/TranslateModal.tsx
9044
9051
  var import_react54 = __toESM(require("react"), 1);
9045
- var import_react_dom11 = require("react-dom");
9052
+ var import_react_dom12 = require("react-dom");
9046
9053
  var LANGUAGES = [
9047
9054
  { code: "af", name: "Afrikaans" },
9048
9055
  { code: "sq", name: "Albanian" },
@@ -9233,7 +9240,7 @@ var TranslateModal = ({ editor, onClose, onTranslate, initialSource, initialTarg
9233
9240
  setTranslating(false);
9234
9241
  }
9235
9242
  };
9236
- return (0, import_react_dom11.createPortal)(
9243
+ return (0, import_react_dom12.createPortal)(
9237
9244
  /* @__PURE__ */ import_react54.default.createElement("div", { className: "modal-overlay", onClick: onClose }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "modal-content translate-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "modal-header" }, /* @__PURE__ */ import_react54.default.createElement("h3", null, "Translate options"), /* @__PURE__ */ import_react54.default.createElement("button", { className: "modal-close", onClick: onClose }, "\xD7")), /* @__PURE__ */ import_react54.default.createElement("div", { className: "modal-body" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-columns" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-col" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "translate-filter" }, /* @__PURE__ */ import_react54.default.createElement(
9238
9245
  "input",
9239
9246
  {
@@ -10143,7 +10150,7 @@ var Dropdown = ({ trigger, children, className = "", keepOpen = false }) => {
10143
10150
  },
10144
10151
  trigger.label,
10145
10152
  /* @__PURE__ */ import_react55.default.createElement("span", { className: "dropdown-arrow" }, "\u25BE")
10146
- ), open && (0, import_react_dom12.createPortal)(
10153
+ ), open && (0, import_react_dom13.createPortal)(
10147
10154
  /* @__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)),
10148
10155
  document.body
10149
10156
  ));
@@ -11046,7 +11053,7 @@ var Toolbar_default = Toolbar;
11046
11053
 
11047
11054
  // lib/RufousTextEditor/ImageToolbar.tsx
11048
11055
  var import_react56 = __toESM(require("react"), 1);
11049
- var import_react_dom13 = require("react-dom");
11056
+ var import_react_dom14 = require("react-dom");
11050
11057
  var ALIGNMENTS = [
11051
11058
  { value: "left", label: "Left", icon: "\u2630" },
11052
11059
  { value: "center", label: "Center", icon: "\u2261" },
@@ -11218,7 +11225,7 @@ var ImageToolbar = ({ editor }) => {
11218
11225
  }, [editor]);
11219
11226
  const node = editor?.state.selection.node;
11220
11227
  const isImage = node && node.type.name === "image";
11221
- if (!editor || !isImage || !pos) return showModal ? (0, import_react_dom13.createPortal)(
11228
+ if (!editor || !isImage || !pos) return showModal ? (0, import_react_dom14.createPortal)(
11222
11229
  /* @__PURE__ */ import_react56.default.createElement(ImagePropertiesModal, { editor, node, onClose: () => setShowModal(false) }),
11223
11230
  document.body
11224
11231
  ) : null;
@@ -11295,7 +11302,7 @@ var ImageToolbar = ({ editor }) => {
11295
11302
  );
11296
11303
  setShowVAlign(false);
11297
11304
  };
11298
- return (0, import_react_dom13.createPortal)(
11305
+ return (0, import_react_dom14.createPortal)(
11299
11306
  /* @__PURE__ */ import_react56.default.createElement(import_react56.default.Fragment, null, /* @__PURE__ */ import_react56.default.createElement(
11300
11307
  "div",
11301
11308
  {
@@ -11326,7 +11333,7 @@ var ImageToolbar_default = ImageToolbar;
11326
11333
 
11327
11334
  // lib/RufousTextEditor/VideoToolbar.tsx
11328
11335
  var import_react57 = __toESM(require("react"), 1);
11329
- var import_react_dom14 = require("react-dom");
11336
+ var import_react_dom15 = require("react-dom");
11330
11337
  var ALIGNMENTS2 = [
11331
11338
  { value: "left", label: "Left", icon: "\u2630" },
11332
11339
  { value: "center", label: "Center", icon: "\u2261" },
@@ -11472,7 +11479,7 @@ var VideoToolbar = ({ editor }) => {
11472
11479
  const node = editor?.state.selection.node;
11473
11480
  const isVideo = node && VIDEO_TYPES.includes(node.type.name);
11474
11481
  const nodeType = node?.type.name;
11475
- if (!editor || !isVideo || !pos) return showModal ? (0, import_react_dom14.createPortal)(
11482
+ if (!editor || !isVideo || !pos) return showModal ? (0, import_react_dom15.createPortal)(
11476
11483
  /* @__PURE__ */ import_react57.default.createElement(VideoPropertiesModal, { editor, node, nodeType, onClose: () => setShowModal(false) }),
11477
11484
  document.body
11478
11485
  ) : null;
@@ -11519,7 +11526,7 @@ var VideoToolbar = ({ editor }) => {
11519
11526
  })
11520
11527
  );
11521
11528
  };
11522
- return (0, import_react_dom14.createPortal)(
11529
+ return (0, import_react_dom15.createPortal)(
11523
11530
  /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(
11524
11531
  "div",
11525
11532
  {
@@ -11567,7 +11574,7 @@ var VideoToolbar_default = VideoToolbar;
11567
11574
 
11568
11575
  // lib/RufousTextEditor/TableToolbar.tsx
11569
11576
  var import_react58 = __toESM(require("react"), 1);
11570
- var import_react_dom15 = require("react-dom");
11577
+ var import_react_dom16 = require("react-dom");
11571
11578
  var IconAddRowBefore = () => /* @__PURE__ */ import_react58.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ import_react58.default.createElement("path", { d: "M20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-1 8H5V5h14v6zm0 8H5v-6h14v6z" }), /* @__PURE__ */ import_react58.default.createElement("path", { d: "M9 6h2v1.5h1.5v2H11V11H9V9.5H7.5v-2H9z" }));
11572
11579
  var IconAddRowAfter = () => /* @__PURE__ */ import_react58.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ import_react58.default.createElement("path", { d: "M20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-1 8H5V5h14v6zm0 8H5v-6h14v6z" }), /* @__PURE__ */ import_react58.default.createElement("path", { d: "M9 14h2v1.5h1.5v2H11V19H9v-1.5H7.5v-2H9z" }));
11573
11580
  var IconAddColBefore = () => /* @__PURE__ */ import_react58.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ import_react58.default.createElement("path", { d: "M20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-9 16H5V5h6v14zm8 0h-6V5h6v14z" }), /* @__PURE__ */ import_react58.default.createElement("path", { d: "M6 10h1.5v2H6v1.5H4v-2h1.5V10H4V8h2z", transform: "translate(2,1)" }));
@@ -11624,7 +11631,7 @@ var TableToolbar = ({ editor }) => {
11624
11631
  const canMerge = editor.can().mergeCells();
11625
11632
  const canSplit = editor.can().splitCell();
11626
11633
  const prevent = (e) => e.preventDefault();
11627
- return (0, import_react_dom15.createPortal)(
11634
+ return (0, import_react_dom16.createPortal)(
11628
11635
  /* @__PURE__ */ import_react58.default.createElement(
11629
11636
  "div",
11630
11637
  {
@@ -12313,7 +12320,7 @@ var RufousTextEditor = ({
12313
12320
  },
12314
12321
  "\u201C Quote"
12315
12322
  )
12316
- ), /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar-left" }, onSaveProp && /* @__PURE__ */ import_react59.default.createElement("button", { onClick: handleSave, className: "status-btn save-btn" }, "Save"), onExportProp && /* @__PURE__ */ import_react59.default.createElement("button", { onClick: handleExport, className: "status-btn export-btn" }, "Export")), /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar-right" }, saveStatus && /* @__PURE__ */ import_react59.default.createElement("span", { className: "save-status" }, saveStatus), editor && /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, /* @__PURE__ */ import_react59.default.createElement("span", { className: "word-count" }, "CHARS: ", editor.storage.characterCount?.characters?.() ?? editor.getText().length), /* @__PURE__ */ import_react59.default.createElement("span", { className: "word-count" }, "WORDS: ", editor.storage.characterCount?.words?.() ?? editor.getText().split(/\s+/).filter(Boolean).length)))), linkModalOpen && (0, import_react_dom16.createPortal)(
12323
+ ), /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar-left" }, onSaveProp && /* @__PURE__ */ import_react59.default.createElement("button", { onClick: handleSave, className: "status-btn save-btn" }, "Save"), onExportProp && /* @__PURE__ */ import_react59.default.createElement("button", { onClick: handleExport, className: "status-btn export-btn" }, "Export")), /* @__PURE__ */ import_react59.default.createElement("div", { className: "status-bar-right" }, saveStatus && /* @__PURE__ */ import_react59.default.createElement("span", { className: "save-status" }, saveStatus), editor && /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, /* @__PURE__ */ import_react59.default.createElement("span", { className: "word-count" }, "CHARS: ", editor.storage.characterCount?.characters?.() ?? editor.getText().length), /* @__PURE__ */ import_react59.default.createElement("span", { className: "word-count" }, "WORDS: ", editor.storage.characterCount?.words?.() ?? editor.getText().split(/\s+/).filter(Boolean).length)))), linkModalOpen && (0, import_react_dom17.createPortal)(
12317
12324
  /* @__PURE__ */ import_react59.default.createElement("div", { className: "link-modal-overlay", onClick: handleLinkCancel }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "link-modal", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "link-modal-body" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "link-modal-field" }, /* @__PURE__ */ import_react59.default.createElement("label", { className: "link-modal-label" }, "URL"), /* @__PURE__ */ import_react59.default.createElement(
12318
12325
  "input",
12319
12326
  {
@@ -12358,7 +12365,7 @@ var RufousTextEditor = ({
12358
12365
  )),
12359
12366
  helperText && /* @__PURE__ */ import_react59.default.createElement("div", { className: `rf-rte-helper-text ${error ? "rf-rte-helper-error" : ""}` }, helperText)
12360
12367
  );
12361
- return isFullscreen ? (0, import_react_dom16.createPortal)(wrapperJsx, document.body) : wrapperJsx;
12368
+ return isFullscreen ? (0, import_react_dom17.createPortal)(wrapperJsx, document.body) : wrapperJsx;
12362
12369
  };
12363
12370
  var RufousTextContent = ({ content, className, style, sx }) => {
12364
12371
  const sxClass = useSx(sx);
package/dist/main.js CHANGED
@@ -1354,6 +1354,7 @@ IconButton.displayName = "IconButton";
1354
1354
  // lib/Dialogs/BaseDialog.tsx
1355
1355
  import * as React65 from "react";
1356
1356
  import { useState as useState2 } from "react";
1357
+ import ReactDOM from "react-dom";
1357
1358
  import { X } from "lucide-react";
1358
1359
  var BaseDialog = ({
1359
1360
  open = false,
@@ -1457,20 +1458,26 @@ var BaseDialog = ({
1457
1458
  dialogInner
1458
1459
  ) : /* @__PURE__ */ React65.createElement("div", { className: containerClass, style: containerStyle }, dialogInner);
1459
1460
  if (TransitionComponent) {
1460
- return /* @__PURE__ */ React65.createElement(
1461
- TransitionComponent,
1462
- {
1463
- in: open,
1464
- unmountOnExit: true,
1465
- ...TransitionProps,
1466
- onExited: () => {
1467
- TransitionProps?.onExited?.();
1468
- }
1469
- },
1470
- /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent)
1461
+ return ReactDOM.createPortal(
1462
+ /* @__PURE__ */ React65.createElement(
1463
+ TransitionComponent,
1464
+ {
1465
+ in: open,
1466
+ unmountOnExit: true,
1467
+ ...TransitionProps,
1468
+ onExited: () => {
1469
+ TransitionProps?.onExited?.();
1470
+ }
1471
+ },
1472
+ /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent)
1473
+ ),
1474
+ document.body
1471
1475
  );
1472
1476
  }
1473
- return /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent);
1477
+ return ReactDOM.createPortal(
1478
+ /* @__PURE__ */ React65.createElement("div", { className: `dialog-overlay ${size === "fullScreen" ? "overlay-fullscreen" : ""}` }, dialogContent),
1479
+ document.body
1480
+ );
1474
1481
  };
1475
1482
  var BaseDialog_default = BaseDialog;
1476
1483
 
@@ -3388,7 +3395,7 @@ import React72, {
3388
3395
  useEffect as useEffect6,
3389
3396
  useCallback as useCallback2
3390
3397
  } from "react";
3391
- import ReactDOM from "react-dom";
3398
+ import ReactDOM2 from "react-dom";
3392
3399
  var ChevronDownIcon = () => /* @__PURE__ */ React72.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React72.createElement("polyline", { points: "6 9 12 15 18 9" }));
3393
3400
  var CloseSmIcon = ({ size = 16 }) => /* @__PURE__ */ React72.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }, /* @__PURE__ */ React72.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), /* @__PURE__ */ React72.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" }));
3394
3401
  var CheckIcon = () => /* @__PURE__ */ React72.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React72.createElement("polyline", { points: "20 6 9 17 4 12" }));
@@ -3706,7 +3713,7 @@ function AutocompleteInner(props, _ref) {
3706
3713
  },
3707
3714
  /* @__PURE__ */ React72.createElement(ChevronDownIcon, null)
3708
3715
  ))
3709
- ), helperText && /* @__PURE__ */ React72.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText), open && !disabled && ReactDOM.createPortal(
3716
+ ), helperText && /* @__PURE__ */ React72.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText), open && !disabled && ReactDOM2.createPortal(
3710
3717
  /* @__PURE__ */ React72.createElement("div", { className: "rf-autocomplete__popup", role: "presentation", style: popupStyle }, loading ? /* @__PURE__ */ React72.createElement("div", { className: "rf-autocomplete__loading" }, /* @__PURE__ */ React72.createElement("span", { className: "rf-ac-spinner" }), loadingText) : flatEntries.length === 0 ? /* @__PURE__ */ React72.createElement("div", { className: "rf-autocomplete__no-options" }, noOptionsText) : /* @__PURE__ */ React72.createElement("ul", { ref: listRef, className: "rf-autocomplete__listbox", role: "listbox" }, groupBy ? (
3711
3718
  // Grouped render
3712
3719
  (() => {
@@ -4449,7 +4456,7 @@ import React75, {
4449
4456
  useEffect as useEffect8,
4450
4457
  useCallback as useCallback3
4451
4458
  } from "react";
4452
- import ReactDOM2 from "react-dom";
4459
+ import ReactDOM3 from "react-dom";
4453
4460
  var ChevronDownIcon2 = () => /* @__PURE__ */ React75.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React75.createElement("polyline", { points: "6 9 12 15 18 9" }));
4454
4461
  var CheckIcon2 = () => /* @__PURE__ */ React75.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React75.createElement("polyline", { points: "20 6 9 17 4 12" }));
4455
4462
  function normaliseOptions(options) {
@@ -4647,7 +4654,7 @@ var Select = React75.forwardRef(function Select2(props, ref) {
4647
4654
  /* @__PURE__ */ React75.createElement("div", { className: "rf-select__arrow", "aria-hidden": "true" }, /* @__PURE__ */ React75.createElement(ChevronDownIcon2, null))
4648
4655
  ),
4649
4656
  helperText && /* @__PURE__ */ React75.createElement("div", { className: `rf-text-field__helper-text${error ? " rf-text-field__helper-text--error" : ""}` }, helperText),
4650
- open && !disabled && ReactDOM2.createPortal(
4657
+ open && !disabled && ReactDOM3.createPortal(
4651
4658
  /* @__PURE__ */ React75.createElement("div", { className: "rf-select__popup", role: "presentation", style: popupStyle }, /* @__PURE__ */ React75.createElement("ul", { ref: listRef, className: "rf-select__listbox", role: "listbox", "aria-multiselectable": multiple }, options.map((opt, idx) => {
4652
4659
  const selected = isSelected(opt.value);
4653
4660
  const focused = focusedIdx === idx;
@@ -5849,7 +5856,7 @@ import React87, {
5849
5856
  useRef as useRef14,
5850
5857
  useState as useState13
5851
5858
  } from "react";
5852
- import ReactDOM3 from "react-dom";
5859
+ import ReactDOM4 from "react-dom";
5853
5860
  var GAP = 8;
5854
5861
  function computePosition(anchor, tooltip, placement) {
5855
5862
  const { top: aTop, left: aLeft, width: aW, height: aH } = anchor;
@@ -6068,7 +6075,7 @@ var Tooltip = ({
6068
6075
  ...childProps
6069
6076
  },
6070
6077
  React87.cloneElement(children)
6071
- ), ReactDOM3.createPortal(tooltipElement, document.body));
6078
+ ), ReactDOM4.createPortal(tooltipElement, document.body));
6072
6079
  };
6073
6080
  Tooltip.displayName = "Tooltip";
6074
6081
 
@@ -6974,7 +6981,7 @@ import React97, {
6974
6981
  useRef as useRef16,
6975
6982
  useState as useState17
6976
6983
  } from "react";
6977
- import ReactDOM4 from "react-dom";
6984
+ import ReactDOM5 from "react-dom";
6978
6985
  var MenuDivider = () => /* @__PURE__ */ React97.createElement("hr", { className: "rf-menu-divider", "aria-hidden": "true" });
6979
6986
  MenuDivider.displayName = "MenuDivider";
6980
6987
  var MenuItem = ({
@@ -7127,7 +7134,7 @@ var Menu = ({
7127
7134
  },
7128
7135
  children
7129
7136
  ));
7130
- return ReactDOM4.createPortal(portal, document.body);
7137
+ return ReactDOM5.createPortal(portal, document.body);
7131
7138
  };
7132
7139
  Menu.displayName = "Menu";
7133
7140
 
@@ -7136,7 +7143,7 @@ import React98, {
7136
7143
  useEffect as useEffect13,
7137
7144
  useState as useState18
7138
7145
  } from "react";
7139
- import ReactDOM5 from "react-dom";
7146
+ import ReactDOM6 from "react-dom";
7140
7147
  var Drawer = ({
7141
7148
  open,
7142
7149
  onClose,
@@ -7236,7 +7243,7 @@ var Drawer = ({
7236
7243
  },
7237
7244
  children
7238
7245
  ));
7239
- return ReactDOM5.createPortal(
7246
+ return ReactDOM6.createPortal(
7240
7247
  /* @__PURE__ */ React98.createElement("div", { className: rootClasses, style }, drawerContent),
7241
7248
  document.body
7242
7249
  );
@@ -7250,7 +7257,7 @@ import React99, {
7250
7257
  useRef as useRef17,
7251
7258
  useState as useState19
7252
7259
  } from "react";
7253
- import ReactDOM6 from "react-dom";
7260
+ import ReactDOM7 from "react-dom";
7254
7261
  var SEVERITY_ICONS = {
7255
7262
  success: "\u2713",
7256
7263
  error: "\u2715",
@@ -7355,7 +7362,7 @@ var Snackbar = ({
7355
7362
  "\u2715"
7356
7363
  )
7357
7364
  ));
7358
- return ReactDOM6.createPortal(snackbarEl, document.body);
7365
+ return ReactDOM7.createPortal(snackbarEl, document.body);
7359
7366
  };
7360
7367
  Snackbar.displayName = "Snackbar";
7361
7368
 
@@ -7414,7 +7421,7 @@ import React101, {
7414
7421
  useRef as useRef18,
7415
7422
  useState as useState20
7416
7423
  } from "react";
7417
- import ReactDOM7 from "react-dom";
7424
+ import ReactDOM8 from "react-dom";
7418
7425
  function computePopperPosition(anchorRect, popperRect, placement, offset2 = [0, 8]) {
7419
7426
  const [skid, dist] = offset2;
7420
7427
  let top = 0;
@@ -7557,7 +7564,7 @@ var Popper = ({
7557
7564
  if (disablePortal) {
7558
7565
  return /* @__PURE__ */ React101.createElement(React101.Fragment, null, popper);
7559
7566
  }
7560
- return ReactDOM7.createPortal(popper, document.body);
7567
+ return ReactDOM8.createPortal(popper, document.body);
7561
7568
  };
7562
7569
  Popper.displayName = "Popper";
7563
7570
 
@@ -7568,7 +7575,7 @@ import React102, {
7568
7575
  useRef as useRef19,
7569
7576
  useState as useState21
7570
7577
  } from "react";
7571
- import ReactDOM8 from "react-dom";
7578
+ import ReactDOM9 from "react-dom";
7572
7579
  function getPoint(rect, v, h) {
7573
7580
  const x = h === "left" ? rect.left : h === "center" ? rect.left + rect.width / 2 : rect.right;
7574
7581
  const y = v === "top" ? rect.top : v === "center" ? rect.top + rect.height / 2 : rect.bottom;
@@ -7671,7 +7678,7 @@ var Popover = ({
7671
7678
  if (disablePortal) {
7672
7679
  return /* @__PURE__ */ React102.createElement("div", { className: `${rootClasses} rf-popover-inline`, style }, content);
7673
7680
  }
7674
- return ReactDOM8.createPortal(
7681
+ return ReactDOM9.createPortal(
7675
7682
  /* @__PURE__ */ React102.createElement("div", { className: rootClasses, style }, content),
7676
7683
  document.body
7677
7684
  );
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rufous/ui",
3
3
  "private": false,
4
- "version": "0.2.68",
4
+ "version": "0.2.69",
5
5
  "type": "module",
6
6
  "description": "Experimental: A lightweight React UI component library (Beta)",
7
7
  "style": "./dist/main.css",