@lv-x-software-house/x_view 1.2.5-dev.30 → 1.2.5-dev.32

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/index.js +124 -71
  2. package/dist/index.mjs +210 -157
  3. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -3636,8 +3636,8 @@ function createTimelineEntry(actorId, description, type = "comment", extras = {}
3636
3636
 
3637
3637
  // src/components/CustomPropertyDisplay.jsx
3638
3638
  import React3, { useState as useState4, useRef as useRef3, useEffect as useEffect3 } from "react";
3639
- import { FiCheck as FiCheck2, FiX as FiX2, FiEdit3, FiTrash2, FiExternalLink, FiFileText, FiChevronDown as FiChevronDown2, FiUpload, FiLoader as FiLoader2 } from "react-icons/fi";
3640
- function CustomPropertyDisplay2({
3639
+ import { FiCheck, FiX, FiEdit3, FiTrash2, FiExternalLink, FiFileText, FiChevronDown, FiUpload, FiLoader } from "react-icons/fi";
3640
+ function CustomPropertyDisplay({
3641
3641
  prop,
3642
3642
  onUpdate,
3643
3643
  onRemove,
@@ -3803,7 +3803,7 @@ function CustomPropertyDisplay2({
3803
3803
  className: "w-full flex items-center justify-between gap-2 bg-slate-800/70 p-2 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60 hover:bg-slate-700/70 transition-colors"
3804
3804
  },
3805
3805
  /* @__PURE__ */ React3.createElement("span", { className: "truncate" }, currentTypeLabel),
3806
- /* @__PURE__ */ React3.createElement(FiChevronDown2, { className: `text-slate-400 transition-transform ${isTypeDropdownOpen ? "rotate-180" : ""}` })
3806
+ /* @__PURE__ */ React3.createElement(FiChevronDown, { className: `text-slate-400 transition-transform ${isTypeDropdownOpen ? "rotate-180" : ""}` })
3807
3807
  ), isTypeDropdownOpen && /* @__PURE__ */ React3.createElement("ul", { className: "absolute right-0 top-full mt-1 z-50 w-32 bg-slate-800 border border-white/10 rounded-lg shadow-xl overflow-y-auto max-h-48 custom-scrollbar py-1" }, availableOptions.map((opt) => /* @__PURE__ */ React3.createElement("li", { key: opt.value }, /* @__PURE__ */ React3.createElement(
3808
3808
  "button",
3809
3809
  {
@@ -3922,12 +3922,12 @@ function CustomPropertyDisplay2({
3922
3922
  className: "flex-shrink-0 w-7 h-7 grid place-items-center bg-indigo-600/60 hover:bg-indigo-600 rounded-lg text-white text-xs transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
3923
3923
  title: "Upload de Arquivo"
3924
3924
  },
3925
- uploadingItemIndex === itemIndex ? /* @__PURE__ */ React3.createElement(FiLoader2, { className: "animate-spin" }) : /* @__PURE__ */ React3.createElement(FiUpload, { size: 12 })
3925
+ uploadingItemIndex === itemIndex ? /* @__PURE__ */ React3.createElement(FiLoader, { className: "animate-spin" }) : /* @__PURE__ */ React3.createElement(FiUpload, { size: 12 })
3926
3926
  ), /* @__PURE__ */ React3.createElement("button", { type: "button", onClick: () => handleRemoveListItem(itemIndex), className: "flex-shrink-0 w-7 h-7 grid place-items-center bg-red-600/60 hover:bg-red-600 rounded-full text-xs font-bold transition-colors", "aria-label": "Remover item" }, "\xD7"))), /* @__PURE__ */ React3.createElement("button", { type: "button", onClick: () => handleAddListItem(), className: "mt-1 w-full px-2 py-1.5 bg-slate-700/70 hover:bg-slate-600 rounded-md transition-colors text-xs" }, "Adicionar Item"));
3927
3927
  default:
3928
3928
  return /* @__PURE__ */ React3.createElement("input", { type: "text", placeholder: "Valor", value: tempProp.value, onChange: (e) => handlePropChange("value", e.target.value), className: baseInput });
3929
3929
  }
3930
- })()), /* @__PURE__ */ React3.createElement("div", { className: "flex justify-end items-center gap-2 pt-1" }, /* @__PURE__ */ React3.createElement("button", { onClick: handleCancel, type: "button", className: "w-8 h-8 grid place-items-center rounded-lg hover:bg-white/10 transition-colors" }, /* @__PURE__ */ React3.createElement(FiX2, { className: "text-red-400" })), /* @__PURE__ */ React3.createElement("button", { onClick: handleSave, type: "button", className: "w-8 h-8 grid place-items-center rounded-lg hover:bg-white/10 transition-colors" }, /* @__PURE__ */ React3.createElement(FiCheck2, { className: "text-green-400" }))));
3930
+ })()), /* @__PURE__ */ React3.createElement("div", { className: "flex justify-end items-center gap-2 pt-1" }, /* @__PURE__ */ React3.createElement("button", { onClick: handleCancel, type: "button", className: "w-8 h-8 grid place-items-center rounded-lg hover:bg-white/10 transition-colors" }, /* @__PURE__ */ React3.createElement(FiX, { className: "text-red-400" })), /* @__PURE__ */ React3.createElement("button", { onClick: handleSave, type: "button", className: "w-8 h-8 grid place-items-center rounded-lg hover:bg-white/10 transition-colors" }, /* @__PURE__ */ React3.createElement(FiCheck, { className: "text-green-400" }))));
3931
3931
  };
3932
3932
  const renderDisplayView = () => /* @__PURE__ */ React3.createElement("div", { className: "w-full space-y-2 text-sm" }, /* @__PURE__ */ React3.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React3.createElement("p", { className: "font-semibold text-slate-200" }, prop.key), /* @__PURE__ */ React3.createElement("span", { className: "text-xs capitalize bg-slate-700/50 px-2 py-0.5 rounded text-slate-400" }, prop.type)), /* @__PURE__ */ React3.createElement("div", { className: "text-slate-300 pl-1" }, (() => {
3933
3933
  switch (prop.type) {
@@ -3962,7 +3962,7 @@ function CustomPropertyDisplay2({
3962
3962
  style: { backgroundImage: `url(${item.value})` },
3963
3963
  title: isTextureMode ? "Usar esta imagem no node" : `Ver imagem: ${item.name}`
3964
3964
  }
3965
- ), isSelected && /* @__PURE__ */ React3.createElement("div", { className: "absolute -top-2 -right-2 bg-green-500 text-white rounded-full p-0.5 shadow-sm" }, /* @__PURE__ */ React3.createElement(FiCheck2, { size: 12 })));
3965
+ ), isSelected && /* @__PURE__ */ React3.createElement("div", { className: "absolute -top-2 -right-2 bg-green-500 text-white rounded-full p-0.5 shadow-sm" }, /* @__PURE__ */ React3.createElement(FiCheck, { size: 12 })));
3966
3966
  }));
3967
3967
  case "links":
3968
3968
  return /* @__PURE__ */ React3.createElement("ul", { className: "space-y-1.5 max-h-40 overflow-y-auto custom-scrollbar" }, Array.isArray(prop.value) && prop.value.map((item) => /* @__PURE__ */ React3.createElement("li", { key: item.id }, /* @__PURE__ */ React3.createElement("a", { href: item.value, target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-2 text-indigo-400 hover:text-indigo-300 hover:underline transition-colors" }, item.name, /* @__PURE__ */ React3.createElement(FiExternalLink, { className: "opacity-60", size: 12 })))));
@@ -3998,15 +3998,15 @@ function CustomPropertyDisplay2({
3998
3998
  }
3999
3999
 
4000
4000
  // src/components/AncestryRelationshipPanel.jsx
4001
- import { FiPlus as FiPlus2, FiEdit2 as FiEdit23, FiBookOpen as FiBookOpen2 } from "react-icons/fi";
4001
+ import { FiPlus, FiEdit2 as FiEdit22, FiBookOpen } from "react-icons/fi";
4002
4002
 
4003
4003
  // src/components/DescriptionEditModal.jsx
4004
4004
  import React5, { useState as useState6, useEffect as useEffect5, useRef as useRef5, useMemo as useMemo4 } from "react";
4005
- import { FiType, FiList, FiCode, FiLink as FiLink3, FiAtSign, FiSearch as FiSearch3, FiHexagon as FiHexagon2, FiGlobe, FiImage, FiCheckSquare } from "react-icons/fi";
4005
+ import { FiType, FiList, FiCode, FiLink as FiLink2, FiAtSign, FiSearch as FiSearch2, FiHexagon as FiHexagon2, FiGlobe, FiImage as FiImage2, FiCheckSquare } from "react-icons/fi";
4006
4006
 
4007
4007
  // src/components/SectionImportModal.jsx
4008
4008
  import React4, { useState as useState5, useMemo as useMemo3, useRef as useRef4, useEffect as useEffect4 } from "react";
4009
- import { FiSearch as FiSearch2, FiLayers as FiLayers2, FiHexagon, FiClock, FiCheck as FiCheck3, FiCopy, FiTerminal, FiChevronDown as FiChevronDown3, FiChevronRight, FiDownload, FiLink as FiLink2 } from "react-icons/fi";
4009
+ import { FiSearch, FiLayers as FiLayers2, FiHexagon, FiClock, FiCheck as FiCheck2, FiCopy, FiTerminal, FiChevronDown as FiChevronDown2, FiChevronRight, FiDownload, FiLink } from "react-icons/fi";
4010
4010
  var CodeBlock = ({ content, isActive, onClick }) => {
4011
4011
  const [isExpanded, setIsExpanded] = useState5(false);
4012
4012
  const [copied, setCopied] = useState5(false);
@@ -4037,7 +4037,7 @@ var CodeBlock = ({ content, isActive, onClick }) => {
4037
4037
  className: "flex items-center gap-2 cursor-pointer opacity-80 hover:opacity-100 transition-opacity",
4038
4038
  onClick: toggleExpand
4039
4039
  },
4040
- isLongCode ? isExpanded ? /* @__PURE__ */ React4.createElement(FiChevronDown3, { size: 14 }) : /* @__PURE__ */ React4.createElement(FiChevronRight, { size: 14 }) : /* @__PURE__ */ React4.createElement(FiTerminal, { size: 14 }),
4040
+ isLongCode ? isExpanded ? /* @__PURE__ */ React4.createElement(FiChevronDown2, { size: 14 }) : /* @__PURE__ */ React4.createElement(FiChevronRight, { size: 14 }) : /* @__PURE__ */ React4.createElement(FiTerminal, { size: 14 }),
4041
4041
  /* @__PURE__ */ React4.createElement("span", { className: "text-xs font-mono font-medium text-slate-400" }, "Code")
4042
4042
  ), /* @__PURE__ */ React4.createElement(
4043
4043
  "button",
@@ -4046,7 +4046,7 @@ var CodeBlock = ({ content, isActive, onClick }) => {
4046
4046
  className: "flex items-center gap-1.5 px-2 py-1 rounded hover:bg-white/10 transition-colors text-xs text-slate-400 hover:text-white",
4047
4047
  title: "Copiar c\xF3digo"
4048
4048
  },
4049
- copied ? /* @__PURE__ */ React4.createElement(FiCheck3, { size: 12, className: "text-emerald-400" }) : /* @__PURE__ */ React4.createElement(FiCopy, { size: 12 }),
4049
+ copied ? /* @__PURE__ */ React4.createElement(FiCheck2, { size: 12, className: "text-emerald-400" }) : /* @__PURE__ */ React4.createElement(FiCopy, { size: 12 }),
4050
4050
  copied ? /* @__PURE__ */ React4.createElement("span", { className: "text-emerald-400" }, "Copiado") : /* @__PURE__ */ React4.createElement("span", null, "Copiar")
4051
4051
  )),
4052
4052
  /* @__PURE__ */ React4.createElement("div", { className: `relative ${!isExpanded && isLongCode ? "max-h-24 overflow-hidden" : ""}` }, /* @__PURE__ */ React4.createElement("pre", { className: "p-3 text-xs sm:text-sm font-mono text-slate-300 overflow-x-auto custom-scrollbar" }, /* @__PURE__ */ React4.createElement("code", null, cleanContent)), !isExpanded && isLongCode && /* @__PURE__ */ React4.createElement(
@@ -4239,10 +4239,10 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
4239
4239
  if (isRef) {
4240
4240
  const resolved = resolveDescriptionReference(trimmed, availableNodes, availableAncestries);
4241
4241
  if (resolved == null ? void 0 : resolved.error) {
4242
- return /* @__PURE__ */ React4.createElement("div", { className: "my-2 p-3 rounded border border-red-500/30 bg-red-500/10 text-red-200 text-xs flex gap-2 items-center" }, /* @__PURE__ */ React4.createElement(FiLink2, null), " Erro na refer\xEAncia: ", resolved.error);
4242
+ return /* @__PURE__ */ React4.createElement("div", { className: "my-2 p-3 rounded border border-red-500/30 bg-red-500/10 text-red-200 text-xs flex gap-2 items-center" }, /* @__PURE__ */ React4.createElement(FiLink, null), " Erro na refer\xEAncia: ", resolved.error);
4243
4243
  }
4244
4244
  if (resolved) {
4245
- return /* @__PURE__ */ React4.createElement("div", { className: "my-2 relative group" }, /* @__PURE__ */ React4.createElement("div", { className: "absolute -left-3 top-0 bottom-0 w-1 bg-emerald-500/50 rounded-full" }), /* @__PURE__ */ React4.createElement("div", { className: "pl-2" }, /* @__PURE__ */ React4.createElement("div", { className: "text-[10px] text-emerald-400 mb-1 flex items-center gap-1 opacity-70 select-none" }, /* @__PURE__ */ React4.createElement(FiLink2, null), " Vinculado de: ", /* @__PURE__ */ React4.createElement("span", { className: "font-semibold" }, resolved.sourceName)), /* @__PURE__ */ React4.createElement("div", { className: "text-slate-300 opacity-90" }, resolved.content.split("\n").map((line, i) => /* @__PURE__ */ React4.createElement("div", { key: i }, formatLineContent(line))))));
4245
+ return /* @__PURE__ */ React4.createElement("div", { className: "my-2 relative group" }, /* @__PURE__ */ React4.createElement("div", { className: "absolute -left-3 top-0 bottom-0 w-1 bg-emerald-500/50 rounded-full" }), /* @__PURE__ */ React4.createElement("div", { className: "pl-2" }, /* @__PURE__ */ React4.createElement("div", { className: "text-[10px] text-emerald-400 mb-1 flex items-center gap-1 opacity-70 select-none" }, /* @__PURE__ */ React4.createElement(FiLink, null), " Vinculado de: ", /* @__PURE__ */ React4.createElement("span", { className: "font-semibold" }, resolved.sourceName)), /* @__PURE__ */ React4.createElement("div", { className: "text-slate-300 opacity-90" }, resolved.content.split("\n").map((line, i) => /* @__PURE__ */ React4.createElement("div", { key: i }, formatLineContent(line))))));
4246
4246
  }
4247
4247
  }
4248
4248
  return null;
@@ -4256,7 +4256,7 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
4256
4256
  onClick: swallow
4257
4257
  },
4258
4258
  /* @__PURE__ */ React4.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4 border-b border-white/5 bg-white/5" }, /* @__PURE__ */ React4.createElement("div", null, /* @__PURE__ */ React4.createElement("h2", { className: "text-xl font-semibold tracking-tight" }, "Biblioteca de Se\xE7\xF5es"), /* @__PURE__ */ React4.createElement("p", { className: "text-xs text-slate-400" }, "Navegue e importe conte\xFAdo de outros Nodes ou Ancestralidades.")), /* @__PURE__ */ React4.createElement("button", { onClick: onClose, className: "w-9 h-9 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl" }, "\xD7")),
4259
- /* @__PURE__ */ React4.createElement("div", { className: "flex flex-1 overflow-hidden relative" }, /* @__PURE__ */ React4.createElement("div", { className: "w-1/3 min-w-[280px] border-r border-white/10 flex flex-col bg-slate-900/50 relative z-20" }, /* @__PURE__ */ React4.createElement("div", { className: "p-3 border-b border-white/5" }, /* @__PURE__ */ React4.createElement("div", { className: "relative" }, /* @__PURE__ */ React4.createElement(FiSearch2, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500" }), /* @__PURE__ */ React4.createElement(
4259
+ /* @__PURE__ */ React4.createElement("div", { className: "flex flex-1 overflow-hidden relative" }, /* @__PURE__ */ React4.createElement("div", { className: "w-1/3 min-w-[280px] border-r border-white/10 flex flex-col bg-slate-900/50 relative z-20" }, /* @__PURE__ */ React4.createElement("div", { className: "p-3 border-b border-white/5" }, /* @__PURE__ */ React4.createElement("div", { className: "relative" }, /* @__PURE__ */ React4.createElement(FiSearch, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500" }), /* @__PURE__ */ React4.createElement(
4260
4260
  "input",
4261
4261
  {
4262
4262
  ref: inputRef,
@@ -4387,7 +4387,7 @@ function SectionImportModal({ isOpen, onClose, onSelect, availableNodes = [], av
4387
4387
  /* @__PURE__ */ React4.createElement(FiDownload, { className: "text-indigo-200" }),
4388
4388
  "Importar ",
4389
4389
  selectedIndices.size > 1 ? `${selectedIndices.size} Se\xE7\xF5es` : "Se\xE7\xE3o"
4390
- ))) : /* @__PURE__ */ React4.createElement("div", { className: "flex-1 flex flex-col items-center justify-center text-slate-500" }, /* @__PURE__ */ React4.createElement("div", { className: "w-16 h-16 rounded-full bg-white/5 flex items-center justify-center mb-4" }, /* @__PURE__ */ React4.createElement(FiSearch2, { size: 24, className: "opacity-50" })), /* @__PURE__ */ React4.createElement("p", null, "Selecione um item \xE0 esquerda para visualizar suas se\xE7\xF5es."))))
4390
+ ))) : /* @__PURE__ */ React4.createElement("div", { className: "flex-1 flex flex-col items-center justify-center text-slate-500" }, /* @__PURE__ */ React4.createElement("div", { className: "w-16 h-16 rounded-full bg-white/5 flex items-center justify-center mb-4" }, /* @__PURE__ */ React4.createElement(FiSearch, { size: 24, className: "opacity-50" })), /* @__PURE__ */ React4.createElement("p", null, "Selecione um item \xE0 esquerda para visualizar suas se\xE7\xF5es."))))
4391
4391
  ));
4392
4392
  }
4393
4393
 
@@ -4408,7 +4408,7 @@ var normalizeText = (text) => {
4408
4408
  if (!text) return "";
4409
4409
  return text.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
4410
4410
  };
4411
- function DescriptionEditModal2({
4411
+ function DescriptionEditModal({
4412
4412
  isOpen,
4413
4413
  title,
4414
4414
  initialValue,
@@ -4749,7 +4749,7 @@ ${space}${bullet} `);
4749
4749
  className: "flex items-center gap-1 px-3 py-1.5 rounded bg-indigo-600/30 hover:bg-indigo-600/50 border border-indigo-500/30 text-indigo-200 text-xs font-medium transition-colors whitespace-nowrap",
4750
4750
  title: "Inserir Imagem (Propriedade ou URL)"
4751
4751
  },
4752
- /* @__PURE__ */ React5.createElement(FiImage, { size: 12 }),
4752
+ /* @__PURE__ */ React5.createElement(FiImage2, { size: 12 }),
4753
4753
  " Imagem"
4754
4754
  ), /* @__PURE__ */ React5.createElement(
4755
4755
  "button",
@@ -4767,7 +4767,7 @@ ${space}${bullet} `);
4767
4767
  className: "flex items-center gap-1 px-3 py-1.5 rounded bg-indigo-600/30 hover:bg-indigo-600/50 border border-indigo-500/30 text-indigo-200 text-xs font-medium transition-colors whitespace-nowrap",
4768
4768
  title: "Importar Se\xE7\xE3o de outro Node"
4769
4769
  },
4770
- /* @__PURE__ */ React5.createElement(FiLink3, { size: 12 }),
4770
+ /* @__PURE__ */ React5.createElement(FiLink2, { size: 12 }),
4771
4771
  " Importar Se\xE7\xE3o"
4772
4772
  ), /* @__PURE__ */ React5.createElement(
4773
4773
  "button",
@@ -4789,7 +4789,7 @@ ${space}${bullet} `);
4789
4789
  autoFocus: true,
4790
4790
  className: "w-full flex-1 h-full bg-slate-800/70 p-4 text-sm leading-relaxed rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 custom-scrollbar font-mono resize-none"
4791
4791
  }
4792
- ), isMentionModalOpen && /* @__PURE__ */ React5.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm rounded-lg" }, /* @__PURE__ */ React5.createElement("div", { className: "w-[90%] max-w-[400px] max-h-[80%] flex flex-col bg-slate-900 border border-white/20 rounded-xl shadow-2xl overflow-hidden animate-in fade-in zoom-in-95 duration-150 relative" }, /* @__PURE__ */ React5.createElement("div", { className: "p-3 border-b border-white/10 flex items-center gap-2 bg-slate-950/50" }, /* @__PURE__ */ React5.createElement(FiSearch3, { className: "text-slate-400" }), /* @__PURE__ */ React5.createElement(
4792
+ ), isMentionModalOpen && /* @__PURE__ */ React5.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm rounded-lg" }, /* @__PURE__ */ React5.createElement("div", { className: "w-[90%] max-w-[400px] max-h-[80%] flex flex-col bg-slate-900 border border-white/20 rounded-xl shadow-2xl overflow-hidden animate-in fade-in zoom-in-95 duration-150 relative" }, /* @__PURE__ */ React5.createElement("div", { className: "p-3 border-b border-white/10 flex items-center gap-2 bg-slate-950/50" }, /* @__PURE__ */ React5.createElement(FiSearch2, { className: "text-slate-400" }), /* @__PURE__ */ React5.createElement(
4793
4793
  "input",
4794
4794
  {
4795
4795
  type: "text",
@@ -4888,7 +4888,7 @@ ${space}${bullet} `);
4888
4888
 
4889
4889
  // src/components/DescriptionDisplay.jsx
4890
4890
  import React6, { useMemo as useMemo5, useState as useState7, useEffect as useEffect6, useRef as useRef6 } from "react";
4891
- import { FiCopy as FiCopy2, FiCheck as FiCheck4, FiChevronDown as FiChevronDown4, FiChevronRight as FiChevronRight2, FiTerminal as FiTerminal2, FiCornerDownRight, FiExternalLink as FiExternalLink2, FiImage as FiImage2, FiSave } from "react-icons/fi";
4891
+ import { FiCopy as FiCopy2, FiCheck as FiCheck3, FiChevronDown as FiChevronDown3, FiChevronRight as FiChevronRight2, FiTerminal as FiTerminal2, FiCornerDownRight, FiExternalLink as FiExternalLink2, FiImage as FiImage3, FiSave } from "react-icons/fi";
4892
4892
  var CodeBlock2 = ({ content, isActive, onClick }) => {
4893
4893
  const [isExpanded, setIsExpanded] = useState7(false);
4894
4894
  const [copied, setCopied] = useState7(false);
@@ -4919,7 +4919,7 @@ var CodeBlock2 = ({ content, isActive, onClick }) => {
4919
4919
  className: "flex items-center gap-2 cursor-pointer opacity-80 hover:opacity-100 transition-opacity",
4920
4920
  onClick: toggleExpand
4921
4921
  },
4922
- isLongCode ? isExpanded ? /* @__PURE__ */ React6.createElement(FiChevronDown4, { size: 14 }) : /* @__PURE__ */ React6.createElement(FiChevronRight2, { size: 14 }) : /* @__PURE__ */ React6.createElement(FiTerminal2, { size: 14 }),
4922
+ isLongCode ? isExpanded ? /* @__PURE__ */ React6.createElement(FiChevronDown3, { size: 14 }) : /* @__PURE__ */ React6.createElement(FiChevronRight2, { size: 14 }) : /* @__PURE__ */ React6.createElement(FiTerminal2, { size: 14 }),
4923
4923
  /* @__PURE__ */ React6.createElement("span", { className: "text-xs font-mono font-medium text-slate-400" }, "Code")
4924
4924
  ), /* @__PURE__ */ React6.createElement(
4925
4925
  "button",
@@ -4927,7 +4927,7 @@ var CodeBlock2 = ({ content, isActive, onClick }) => {
4927
4927
  onClick: handleCopy,
4928
4928
  className: "flex items-center gap-1.5 px-2 py-1 rounded hover:bg-white/10 transition-colors text-xs text-slate-400 hover:text-white"
4929
4929
  },
4930
- copied ? /* @__PURE__ */ React6.createElement(FiCheck4, { size: 12, className: "text-emerald-400" }) : /* @__PURE__ */ React6.createElement(FiCopy2, { size: 12 }),
4930
+ copied ? /* @__PURE__ */ React6.createElement(FiCheck3, { size: 12, className: "text-emerald-400" }) : /* @__PURE__ */ React6.createElement(FiCopy2, { size: 12 }),
4931
4931
  copied ? /* @__PURE__ */ React6.createElement("span", { className: "text-emerald-400" }, "Copiado") : /* @__PURE__ */ React6.createElement("span", null, "Copiar")
4932
4932
  )),
4933
4933
  /* @__PURE__ */ React6.createElement("div", { className: `relative ${!isExpanded && isLongCode ? "max-h-24 overflow-hidden" : ""}` }, /* @__PURE__ */ React6.createElement("pre", { className: "p-3 text-xs sm:text-sm font-mono text-slate-300 overflow-x-auto custom-scrollbar" }, /* @__PURE__ */ React6.createElement("code", null, cleanContent)), !isExpanded && isLongCode && /* @__PURE__ */ React6.createElement(
@@ -4985,7 +4985,7 @@ var renderTextWithImages = (text, onImageClick) => {
4985
4985
  },
4986
4986
  className: "inline-flex items-center gap-1 text-emerald-400 hover:text-emerald-300 hover:underline decoration-emerald-500/50 underline-offset-2 transition-colors cursor-pointer align-baseline mx-0.5"
4987
4987
  },
4988
- /* @__PURE__ */ React6.createElement(FiImage2, { size: 11 }),
4988
+ /* @__PURE__ */ React6.createElement(FiImage3, { size: 11 }),
4989
4989
  /* @__PURE__ */ React6.createElement("span", null, name)
4990
4990
  );
4991
4991
  }
@@ -5066,7 +5066,7 @@ var formatLineContent2 = (line, availableNodes, onMentionClick, activeMentionInd
5066
5066
  ${isChecked ? "bg-indigo-500 border-indigo-500 shadow-[0_0_8px_rgba(99,102,241,0.4)]" : "border-slate-500 bg-slate-900/50 hover:border-slate-400 group-hover/checkbox:border-slate-400"}
5067
5067
  `
5068
5068
  },
5069
- isChecked && /* @__PURE__ */ React6.createElement(FiCheck4, { size: 12, className: "text-white" })
5069
+ isChecked && /* @__PURE__ */ React6.createElement(FiCheck3, { size: 12, className: "text-white" })
5070
5070
  ), /* @__PURE__ */ React6.createElement(
5071
5071
  "span",
5072
5072
  {
@@ -5092,7 +5092,7 @@ var formatLineContent2 = (line, availableNodes, onMentionClick, activeMentionInd
5092
5092
  }
5093
5093
  return /* @__PURE__ */ React6.createElement("span", { className: "break-words" }, processContent(line));
5094
5094
  };
5095
- function DescriptionDisplay2({
5095
+ function DescriptionDisplay({
5096
5096
  description,
5097
5097
  savedSections,
5098
5098
  availableNodes = [],
@@ -5355,7 +5355,7 @@ function DescriptionDisplay2({
5355
5355
  import React7, { useState as useState8, useMemo as useMemo6, useEffect as useEffect7 } from "react";
5356
5356
  import {
5357
5357
  FiArrowLeft,
5358
- FiEdit2 as FiEdit22,
5358
+ FiEdit2,
5359
5359
  FiLayers as FiLayers3,
5360
5360
  FiChevronLeft,
5361
5361
  FiChevronRight as FiChevronRight3,
@@ -5365,8 +5365,8 @@ import {
5365
5365
  FiAlignLeft,
5366
5366
  FiGitBranch,
5367
5367
  FiFolder,
5368
- FiLink as FiLink4,
5369
- FiCheck as FiCheck5
5368
+ FiLink as FiLink3,
5369
+ FiCheck as FiCheck4
5370
5370
  } from "react-icons/fi";
5371
5371
  var findNodePath = (tree, targetNodeId, currentPath = []) => {
5372
5372
  var _a;
@@ -5568,7 +5568,7 @@ function DescriptionReadModePanel({
5568
5568
  className: `p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
5569
5569
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Ancestralidade"
5570
5570
  },
5571
- isLinkCopied ? /* @__PURE__ */ React7.createElement(FiCheck5, { size: 12 }) : /* @__PURE__ */ React7.createElement(FiLink4, { size: 12 })
5571
+ isLinkCopied ? /* @__PURE__ */ React7.createElement(FiCheck4, { size: 12 }) : /* @__PURE__ */ React7.createElement(FiLink3, { size: 12 })
5572
5572
  )), /* @__PURE__ */ React7.createElement("h2", { className: "text-lg sm:text-xl font-semibold tracking-tight text-white truncate", title }, title || "Sem T\xEDtulo"))), /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-2 flex-shrink-0" }, hasCustomProps && /* @__PURE__ */ React7.createElement(
5573
5573
  "button",
5574
5574
  {
@@ -5603,7 +5603,7 @@ function DescriptionReadModePanel({
5603
5603
  className: "w-9 h-9 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-slate-300 hover:text-white",
5604
5604
  title: "Editar Descri\xE7\xE3o / Estrutura"
5605
5605
  },
5606
- /* @__PURE__ */ React7.createElement(FiEdit22, { size: 16 })
5606
+ /* @__PURE__ */ React7.createElement(FiEdit2, { size: 16 })
5607
5607
  ), /* @__PURE__ */ React7.createElement(
5608
5608
  "button",
5609
5609
  {
@@ -5647,7 +5647,7 @@ function DescriptionReadModePanel({
5647
5647
  targetRenderNodeId
5648
5648
  }
5649
5649
  ))) : showProperties ? /* @__PURE__ */ React7.createElement("div", { className: "space-y-4 animate-in fade-in slide-in-from-bottom-2 duration-300" }, customProperties.map((prop) => /* @__PURE__ */ React7.createElement(
5650
- CustomPropertyDisplay2,
5650
+ CustomPropertyDisplay,
5651
5651
  {
5652
5652
  key: prop.id,
5653
5653
  prop,
@@ -5659,7 +5659,7 @@ function DescriptionReadModePanel({
5659
5659
  onOpenImageViewer: null
5660
5660
  }
5661
5661
  ))) : /* @__PURE__ */ React7.createElement(
5662
- DescriptionDisplay2,
5662
+ DescriptionDisplay,
5663
5663
  {
5664
5664
  description,
5665
5665
  savedSections,
@@ -5808,7 +5808,7 @@ function AncestryRelationshipPanel({
5808
5808
  onSaveDescription: handleSaveDescriptionInline
5809
5809
  }
5810
5810
  ) : /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("div", { className: "h-[2px] bg-gradient-to-r from-cyan-400/0 via-cyan-400/70 to-cyan-400/0" }), /* @__PURE__ */ React8.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React8.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React8.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React8.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-cyan-400/80 shadow-[0_0_18px_2px_rgba(45,212,191,0.55)]" }), /* @__PURE__ */ React8.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o de Ancestralidade")), /* @__PURE__ */ React8.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Editar Rela\xE7\xE3o")), /* @__PURE__ */ React8.createElement("button", { onClick: onClose, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl", title: "Fechar" }, "\xD7")), /* @__PURE__ */ React8.createElement("div", { className: "px-6 pb-4 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React8.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React8.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o da Rela\xE7\xE3o"), /* @__PURE__ */ React8.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React8.createElement(
5811
- DescriptionDisplay2,
5811
+ DescriptionDisplay,
5812
5812
  {
5813
5813
  description,
5814
5814
  savedSections: existingSections,
@@ -5827,7 +5827,7 @@ function AncestryRelationshipPanel({
5827
5827
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
5828
5828
  title: "Modo de Leitura"
5829
5829
  },
5830
- /* @__PURE__ */ React8.createElement(FiBookOpen2, { size: 14 })
5830
+ /* @__PURE__ */ React8.createElement(FiBookOpen, { size: 14 })
5831
5831
  ), /* @__PURE__ */ React8.createElement(
5832
5832
  "button",
5833
5833
  {
@@ -5836,7 +5836,7 @@ function AncestryRelationshipPanel({
5836
5836
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
5837
5837
  title: "Editar descri\xE7\xE3o"
5838
5838
  },
5839
- /* @__PURE__ */ React8.createElement(FiEdit23, { size: 14 })
5839
+ /* @__PURE__ */ React8.createElement(FiEdit22, { size: 14 })
5840
5840
  )), !description && /* @__PURE__ */ React8.createElement(
5841
5841
  "div",
5842
5842
  {
@@ -5844,8 +5844,8 @@ function AncestryRelationshipPanel({
5844
5844
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
5845
5845
  },
5846
5846
  "Adicionar descri\xE7\xE3o..."
5847
- )), /* @__PURE__ */ React8.createElement("p", { className: "text-xs text-slate-400 italic" }, "Esta descri\xE7\xE3o aparecer\xE1 ao passar o mouse sobre a linha de conex\xE3o na cena 3D.")), /* @__PURE__ */ React8.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React8.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React8.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React8.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React8.createElement(FiPlus2, { size: 14 }), " Adicionar")), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col gap-3 p-3 rounded-lg bg-black/20 border border-white/5" }, customProps.length === 0 && /* @__PURE__ */ React8.createElement("p", { className: "text-center text-sm text-slate-400 py-4" }, "Nenhuma propriedade adicional."), customProps.map((prop, idx) => /* @__PURE__ */ React8.createElement(
5848
- CustomPropertyDisplay2,
5847
+ )), /* @__PURE__ */ React8.createElement("p", { className: "text-xs text-slate-400 italic" }, "Esta descri\xE7\xE3o aparecer\xE1 ao passar o mouse sobre a linha de conex\xE3o na cena 3D.")), /* @__PURE__ */ React8.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React8.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React8.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React8.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React8.createElement(FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col gap-3 p-3 rounded-lg bg-black/20 border border-white/5" }, customProps.length === 0 && /* @__PURE__ */ React8.createElement("p", { className: "text-center text-sm text-slate-400 py-4" }, "Nenhuma propriedade adicional."), customProps.map((prop, idx) => /* @__PURE__ */ React8.createElement(
5848
+ CustomPropertyDisplay,
5849
5849
  {
5850
5850
  key: prop.id,
5851
5851
  prop,
@@ -5858,7 +5858,7 @@ function AncestryRelationshipPanel({
5858
5858
  )), /* @__PURE__ */ React8.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React8.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React8.createElement("button", { onClick: onClose, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm" }, "Cancelar"), /* @__PURE__ */ React8.createElement("button", { onClick: handleSave, className: "px-4 py-2 rounded-lg bg-gradient-to-tr from-cyan-600 to-cyan-400 hover:from-cyan-500 hover:to-cyan-300 transition-colors font-semibold text-sm shadow-[0_8px_24px_rgba(45,212,191,0.35)]" }, "Salvar Altera\xE7\xF5es")))
5859
5859
  )
5860
5860
  ), isDescriptionModalOpen && /* @__PURE__ */ React8.createElement(
5861
- DescriptionEditModal2,
5861
+ DescriptionEditModal,
5862
5862
  {
5863
5863
  isOpen: isDescriptionModalOpen,
5864
5864
  title: "Editar Descri\xE7\xE3o da Rela\xE7\xE3o",
@@ -5877,11 +5877,11 @@ function AncestryRelationshipPanel({
5877
5877
  // src/components/CreateAncestryPanel.jsx
5878
5878
  import React10, { useState as useState11, useEffect as useEffect10, useMemo as useMemo8, useRef as useRef8, useCallback as useCallback2 } from "react";
5879
5879
  import {
5880
- FiEdit2 as FiEdit24,
5881
- FiBookOpen as FiBookOpen3,
5880
+ FiEdit2 as FiEdit23,
5881
+ FiBookOpen as FiBookOpen2,
5882
5882
  FiFolder as FiFolder2,
5883
5883
  FiMousePointer,
5884
- FiCheck as FiCheck6,
5884
+ FiCheck as FiCheck5,
5885
5885
  FiLayers as FiLayers5,
5886
5886
  FiArrowLeft as FiArrowLeft2,
5887
5887
  FiChevronLeft as FiChevronLeft2,
@@ -5889,15 +5889,15 @@ import {
5889
5889
  FiCornerUpLeft as FiCornerUpLeft2,
5890
5890
  FiCornerUpRight as FiCornerUpRight3,
5891
5891
  FiGitBranch as FiGitBranch2,
5892
- FiPlus as FiPlus3,
5892
+ FiPlus as FiPlus2,
5893
5893
  FiLock,
5894
- FiLink as FiLink5,
5894
+ FiLink as FiLink4,
5895
5895
  FiTrash2 as FiTrash22
5896
5896
  } from "react-icons/fi";
5897
5897
 
5898
5898
  // src/components/AncestryPickerModal.jsx
5899
5899
  import React9, { useState as useState10, useMemo as useMemo7, useEffect as useEffect9 } from "react";
5900
- import { FiSearch as FiSearch4, FiLayers as FiLayers4, FiCornerUpRight as FiCornerUpRight2 } from "react-icons/fi";
5900
+ import { FiSearch as FiSearch3, FiLayers as FiLayers4, FiCornerUpRight as FiCornerUpRight2 } from "react-icons/fi";
5901
5901
  function AncestryPickerModal({
5902
5902
  isOpen,
5903
5903
  onClose,
@@ -5946,7 +5946,7 @@ function AncestryPickerModal({
5946
5946
  });
5947
5947
  }, [availableAncestries, searchTerm, currentAncestryId, nodeNamesMap]);
5948
5948
  if (!isOpen) return null;
5949
- return /* @__PURE__ */ React9.createElement("div", { className: "fixed inset-0 z-[2200] bg-black/80 backdrop-blur-sm flex items-center justify-center p-4", onClick: onClose }, /* @__PURE__ */ React9.createElement("div", { className: "bg-slate-900 border border-white/10 rounded-xl w-full max-w-md flex flex-col shadow-2xl overflow-hidden max-h-[80vh]", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React9.createElement("div", { className: "p-4 border-b border-white/10 bg-white/5" }, /* @__PURE__ */ React9.createElement("h3", { className: "text-lg font-semibold text-white mb-1" }, "Importar Ancestralidade"), /* @__PURE__ */ React9.createElement("p", { className: "text-xs text-slate-400" }, "Esta ancestralidade ser\xE1 carregada dinamicamente como uma ramifica\xE7\xE3o.")), /* @__PURE__ */ React9.createElement("div", { className: "p-3 border-b border-white/5" }, /* @__PURE__ */ React9.createElement("div", { className: "relative" }, /* @__PURE__ */ React9.createElement(FiSearch4, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500" }), /* @__PURE__ */ React9.createElement(
5949
+ return /* @__PURE__ */ React9.createElement("div", { className: "fixed inset-0 z-[2200] bg-black/80 backdrop-blur-sm flex items-center justify-center p-4", onClick: onClose }, /* @__PURE__ */ React9.createElement("div", { className: "bg-slate-900 border border-white/10 rounded-xl w-full max-w-md flex flex-col shadow-2xl overflow-hidden max-h-[80vh]", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React9.createElement("div", { className: "p-4 border-b border-white/10 bg-white/5" }, /* @__PURE__ */ React9.createElement("h3", { className: "text-lg font-semibold text-white mb-1" }, "Importar Ancestralidade"), /* @__PURE__ */ React9.createElement("p", { className: "text-xs text-slate-400" }, "Esta ancestralidade ser\xE1 carregada dinamicamente como uma ramifica\xE7\xE3o.")), /* @__PURE__ */ React9.createElement("div", { className: "p-3 border-b border-white/5" }, /* @__PURE__ */ React9.createElement("div", { className: "relative" }, /* @__PURE__ */ React9.createElement(FiSearch3, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500" }), /* @__PURE__ */ React9.createElement(
5950
5950
  "input",
5951
5951
  {
5952
5952
  type: "text",
@@ -6071,7 +6071,7 @@ var NodeItem = ({ nodeData, onSelectParent, onViewSelect, highlightedPathIds = [
6071
6071
  level > 0 && isEditable && /* @__PURE__ */ React10.createElement("div", { className: "flex items-center gap-1 animate-in fade-in duration-200" }, !nodeData.is_section && /* @__PURE__ */ React10.createElement("button", { onClick: (e) => {
6072
6072
  e.stopPropagation();
6073
6073
  onEditRelationship(path, nodeData.relationship || {});
6074
- }, className: "w-6 h-6 grid place-content-center rounded-full hover:bg-cyan-500/20 text-cyan-400 transition-colors flex-shrink-0", title: "Editar detalhes da rela\xE7\xE3o" }, /* @__PURE__ */ React10.createElement(FiEdit24, { size: 12 })), /* @__PURE__ */ React10.createElement("button", { onClick: (e) => {
6074
+ }, className: "w-6 h-6 grid place-content-center rounded-full hover:bg-cyan-500/20 text-cyan-400 transition-colors flex-shrink-0", title: "Editar detalhes da rela\xE7\xE3o" }, /* @__PURE__ */ React10.createElement(FiEdit23, { size: 12 })), /* @__PURE__ */ React10.createElement("button", { onClick: (e) => {
6075
6075
  e.stopPropagation();
6076
6076
  onRemoveNode(path);
6077
6077
  }, className: "w-6 h-6 grid place-content-center rounded-full hover:bg-red-500/20 text-red-400 text-lg transition-colors flex-shrink-0", title: "Remover Node" }, "\xD7"))
@@ -7284,7 +7284,7 @@ function CreateAncestryPanel({
7284
7284
  className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
7285
7285
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Ancestralidade"
7286
7286
  },
7287
- isLinkCopied ? /* @__PURE__ */ React10.createElement(FiCheck6, { size: 12 }) : /* @__PURE__ */ React10.createElement(FiLink5, { size: 12 })
7287
+ isLinkCopied ? /* @__PURE__ */ React10.createElement(FiCheck5, { size: 12 }) : /* @__PURE__ */ React10.createElement(FiLink4, { size: 12 })
7288
7288
  )), /* @__PURE__ */ React10.createElement(
7289
7289
  "input",
7290
7290
  {
@@ -7348,7 +7348,7 @@ function CreateAncestryPanel({
7348
7348
  /* @__PURE__ */ React10.createElement("div", { className: "w-4 h-4 border border-slate-500 rounded flex items-center justify-center" }),
7349
7349
  "Usar Ancestralidade Existente como Branch"
7350
7350
  ))), isContextLinked ? /* @__PURE__ */ React10.createElement("div", { className: "text-center py-8 text-slate-500 text-sm border-t border-white/5" }, /* @__PURE__ */ React10.createElement("p", null, "O conte\xFAdo desta ramifica\xE7\xE3o \xE9 provido por outra ancestralidade."), /* @__PURE__ */ React10.createElement("p", { className: "mt-1 text-xs" }, "Para editar, navegue at\xE9 a ancestralidade original ou desvincule.")) : /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("div", { className: "mb-4 space-y-1.5 relative" }, /* @__PURE__ */ React10.createElement("label", { className: "text-xs text-slate-400 font-medium ml-1" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React10.createElement("div", { className: "relative" }, /* @__PURE__ */ React10.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors z-10" }, /* @__PURE__ */ React10.createElement(
7351
- DescriptionDisplay2,
7351
+ DescriptionDisplay,
7352
7352
  {
7353
7353
  key: branchStack.length > 0 ? branchStack[branchStack.length - 1].branchId : currentAncestryId || "root",
7354
7354
  description,
@@ -7374,7 +7374,7 @@ function CreateAncestryPanel({
7374
7374
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
7375
7375
  title: "Modo de Leitura"
7376
7376
  },
7377
- /* @__PURE__ */ React10.createElement(FiBookOpen3, { size: 14 })
7377
+ /* @__PURE__ */ React10.createElement(FiBookOpen2, { size: 14 })
7378
7378
  ), /* @__PURE__ */ React10.createElement(
7379
7379
  "button",
7380
7380
  {
@@ -7383,7 +7383,7 @@ function CreateAncestryPanel({
7383
7383
  className: "p-2 text-slate-400 hover:text-white transition-colors",
7384
7384
  title: "Editar descri\xE7\xE3o"
7385
7385
  },
7386
- /* @__PURE__ */ React10.createElement(FiEdit24, { size: 14 })
7386
+ /* @__PURE__ */ React10.createElement(FiEdit23, { size: 14 })
7387
7387
  )), !description && /* @__PURE__ */ React10.createElement(
7388
7388
  "div",
7389
7389
  {
@@ -7401,7 +7401,7 @@ function CreateAncestryPanel({
7401
7401
  `,
7402
7402
  title: sideActions.left.label
7403
7403
  },
7404
- sideActions.left.type === "create" && /* @__PURE__ */ React10.createElement(FiPlus3, { size: 20 }),
7404
+ sideActions.left.type === "create" && /* @__PURE__ */ React10.createElement(FiPlus2, { size: 20 }),
7405
7405
  sideActions.left.type === "open" && /* @__PURE__ */ React10.createElement(FiChevronLeft2, { size: 20 }),
7406
7406
  sideActions.left.type === "back" && /* @__PURE__ */ React10.createElement(FiCornerUpLeft2, { size: 18 })
7407
7407
  )), sideActions.right && /* @__PURE__ */ React10.createElement("div", { className: "absolute top-1/2 -translate-y-1/2 -right-6 z-20" }, /* @__PURE__ */ React10.createElement(
@@ -7414,7 +7414,7 @@ function CreateAncestryPanel({
7414
7414
  `,
7415
7415
  title: sideActions.right.label
7416
7416
  },
7417
- sideActions.right.type === "create" && /* @__PURE__ */ React10.createElement(FiPlus3, { size: 18 }),
7417
+ sideActions.right.type === "create" && /* @__PURE__ */ React10.createElement(FiPlus2, { size: 18 }),
7418
7418
  sideActions.right.type === "open" && /* @__PURE__ */ React10.createElement(FiChevronRight4, { size: 18 }),
7419
7419
  sideActions.right.type === "back" && /* @__PURE__ */ React10.createElement(FiCornerUpRight3, { size: 16 })
7420
7420
  )))), /* @__PURE__ */ React10.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React10.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React10.createElement("h3", { className: "text-sm font-medium text-slate-300" }, "Propriedades Adicionais"), /* @__PURE__ */ React10.createElement(
@@ -7424,10 +7424,10 @@ function CreateAncestryPanel({
7424
7424
  onClick: handleAddProp,
7425
7425
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
7426
7426
  },
7427
- /* @__PURE__ */ React10.createElement(FiPlus3, { size: 14 }),
7427
+ /* @__PURE__ */ React10.createElement(FiPlus2, { size: 14 }),
7428
7428
  " Adicionar"
7429
7429
  )), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React10.createElement(
7430
- CustomPropertyDisplay2,
7430
+ CustomPropertyDisplay,
7431
7431
  {
7432
7432
  key: prop.id,
7433
7433
  prop,
@@ -7452,7 +7452,7 @@ function CreateAncestryPanel({
7452
7452
  className: `p-1.5 rounded-md transition-colors ${isAddingNodes ? "bg-cyan-500 text-white shadow-lg shadow-cyan-500/30" : "bg-slate-700 text-slate-400 hover:text-white hover:bg-slate-600"}`,
7453
7453
  title: isAddingNodes ? "Concluir edi\xE7\xE3o da estrutura" : "Editar estrutura e adicionar nodes"
7454
7454
  },
7455
- isAddingNodes ? /* @__PURE__ */ React10.createElement(FiCheck6, { size: 14 }) : /* @__PURE__ */ React10.createElement(FiEdit24, { size: 14 })
7455
+ isAddingNodes ? /* @__PURE__ */ React10.createElement(FiCheck5, { size: 14 }) : /* @__PURE__ */ React10.createElement(FiEdit23, { size: 14 })
7456
7456
  ))), /* @__PURE__ */ React10.createElement("div", { className: "p-4 space-y-2" }, isAddingNodes && /* @__PURE__ */ React10.createElement("div", { className: "mb-3 p-2 rounded bg-cyan-900/20 border border-cyan-500/20 text-xs text-cyan-200 flex items-start gap-2" }, /* @__PURE__ */ React10.createElement(FiMousePointer, { className: "mt-0.5 flex-shrink-0" }), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React10.createElement("span", null, "Clique nos nodes do cen\xE1rio para adicion\xE1-los como filhos de: ", /* @__PURE__ */ React10.createElement("strong", { className: "text-white underline decoration-dashed" }, getSelectedParentName())), /* @__PURE__ */ React10.createElement("span", { className: "opacity-75" }, "Arraste e solte itens na lista para reorganizar a hierarquia."))), activeTree && /* @__PURE__ */ React10.createElement(
7457
7457
  NodeItem,
7458
7458
  {
@@ -7517,7 +7517,7 @@ function CreateAncestryPanel({
7517
7517
  className: `p-1.5 rounded-md transition-colors ${ancestryMode.isAddingAbstractionNodes ? "bg-purple-500 text-white shadow-lg shadow-purple-500/30" : "bg-slate-700 text-slate-400 hover:text-white hover:bg-slate-600"}`,
7518
7518
  title: "Editar estrutura da abstra\xE7\xE3o"
7519
7519
  },
7520
- ancestryMode.isAddingAbstractionNodes ? /* @__PURE__ */ React10.createElement(FiCheck6, { size: 14 }) : /* @__PURE__ */ React10.createElement(FiEdit24, { size: 14 })
7520
+ ancestryMode.isAddingAbstractionNodes ? /* @__PURE__ */ React10.createElement(FiCheck5, { size: 14 }) : /* @__PURE__ */ React10.createElement(FiEdit23, { size: 14 })
7521
7521
  ))),
7522
7522
  /* @__PURE__ */ React10.createElement("div", { className: "p-4 space-y-2" }, ancestryMode.isAddingAbstractionNodes && /* @__PURE__ */ React10.createElement("div", { className: "mb-3 p-2 rounded bg-purple-900/20 border border-purple-500/20 text-xs text-purple-200 flex items-start gap-2" }, /* @__PURE__ */ React10.createElement(FiMousePointer, { className: "mt-0.5 flex-shrink-0" }), /* @__PURE__ */ React10.createElement("span", null, "Clique nos nodes do cen\xE1rio para adicion\xE1-los. Arraste e solte para organizar a hierarquia.")), /* @__PURE__ */ React10.createElement(
7523
7523
  NodeItem,
@@ -7537,7 +7537,7 @@ function CreateAncestryPanel({
7537
7537
  isEditable: ancestryMode.isAddingAbstractionNodes
7538
7538
  }
7539
7539
  ))
7540
- ), branchStack.length === 0 && /* @__PURE__ */ React10.createElement("div", { className: "mt-3 flex items-center justify-end px-1" }, /* @__PURE__ */ React10.createElement("label", { className: "flex items-center gap-2 cursor-pointer group select-none" }, /* @__PURE__ */ React10.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${isPrivate ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, isPrivate && /* @__PURE__ */ React10.createElement(FiCheck6, { size: 12, className: "text-white" })), /* @__PURE__ */ React10.createElement(
7540
+ ), branchStack.length === 0 && /* @__PURE__ */ React10.createElement("div", { className: "mt-3 flex items-center justify-end px-1" }, /* @__PURE__ */ React10.createElement("label", { className: "flex items-center gap-2 cursor-pointer group select-none" }, /* @__PURE__ */ React10.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${isPrivate ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, isPrivate && /* @__PURE__ */ React10.createElement(FiCheck5, { size: 12, className: "text-white" })), /* @__PURE__ */ React10.createElement(
7541
7541
  "input",
7542
7542
  {
7543
7543
  type: "checkbox",
@@ -7567,7 +7567,7 @@ function CreateAncestryPanel({
7567
7567
  availableNodes
7568
7568
  }
7569
7569
  ), isDescriptionModalOpen && /* @__PURE__ */ React10.createElement(
7570
- DescriptionEditModal2,
7570
+ DescriptionEditModal,
7571
7571
  {
7572
7572
  isOpen: isDescriptionModalOpen,
7573
7573
  title: branchStack.length > 0 ? "Editar Descri\xE7\xE3o da Ramifica\xE7\xE3o" : "Editar Descri\xE7\xE3o da Ancestralidade",
@@ -7586,7 +7586,7 @@ function CreateAncestryPanel({
7586
7586
 
7587
7587
  // src/components/ImageViewer.jsx
7588
7588
  import React11, { useState as useState12, useEffect as useEffect11, useLayoutEffect as useLayoutEffect2, useCallback as useCallback3 } from "react";
7589
- import { FiX as FiX3, FiChevronLeft as FiChevronLeft3, FiChevronRight as FiChevronRight5 } from "react-icons/fi";
7589
+ import { FiX as FiX2, FiChevronLeft as FiChevronLeft3, FiChevronRight as FiChevronRight5 } from "react-icons/fi";
7590
7590
  function ImageViewer({ data, onClose }) {
7591
7591
  var _a;
7592
7592
  const { images = [], startIndex = 0, visible } = data;
@@ -7671,7 +7671,7 @@ function ImageViewer({ data, onClose }) {
7671
7671
  className: "absolute top-4 right-4 z-10 w-10 h-10 flex items-center justify-center bg-white/10 hover:bg-white/20 rounded-full text-white text-2xl transition-colors",
7672
7672
  "aria-label": "Fechar"
7673
7673
  },
7674
- /* @__PURE__ */ React11.createElement(FiX3, null)
7674
+ /* @__PURE__ */ React11.createElement(FiX2, null)
7675
7675
  ),
7676
7676
  /* @__PURE__ */ React11.createElement("div", { className: "relative max-w-full max-h-full flex items-center justify-center" }, isLoading && /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React11.createElement("div", { className: "h-10 w-10 border-2 border-white/40 border-t-white rounded-full animate-spin" })), loadedSrc && /* @__PURE__ */ React11.createElement(
7677
7677
  "img",
@@ -7713,7 +7713,7 @@ import React13, { useState as useState14, useEffect as useEffect13, useRef as us
7713
7713
  // src/components/ColorPicker.jsx
7714
7714
  import React12, { useState as useState13, useEffect as useEffect12, useRef as useRef9 } from "react";
7715
7715
  import { HexColorPicker } from "react-colorful";
7716
- import { FiHash, FiCheck as FiCheck7 } from "react-icons/fi";
7716
+ import { FiHash, FiCheck as FiCheck6 } from "react-icons/fi";
7717
7717
  var PRESET_COLORS = [
7718
7718
  "#ef4444",
7719
7719
  "#f97316",
@@ -7782,7 +7782,7 @@ function ColorPicker({ color, onChange, disabled }) {
7782
7782
  style: { backgroundColor: preset },
7783
7783
  title: preset
7784
7784
  },
7785
- (color || "").toLowerCase() === (preset || "").toLowerCase() && /* @__PURE__ */ React12.createElement(FiCheck7, { className: `drop-shadow-md ${["#ffffff", "#4df5cb", "#84cc16", "#f59e0b"].includes(preset) ? "text-black" : "text-white"}`, size: 12 })
7785
+ (color || "").toLowerCase() === (preset || "").toLowerCase() && /* @__PURE__ */ React12.createElement(FiCheck6, { className: `drop-shadow-md ${["#ffffff", "#4df5cb", "#84cc16", "#f59e0b"].includes(preset) ? "text-black" : "text-white"}`, size: 12 })
7786
7786
  )))), /* @__PURE__ */ React12.createElement("style", null, `
7787
7787
  .custom-react-colorful .react-colorful {
7788
7788
  width: 100%;
@@ -7808,13 +7808,13 @@ function ColorPicker({ color, onChange, disabled }) {
7808
7808
 
7809
7809
  // src/components/InSceneCreationForm.jsx
7810
7810
  import {
7811
- FiPlus as FiPlus4,
7811
+ FiPlus as FiPlus3,
7812
7812
  FiMaximize2,
7813
- FiX as FiX4,
7814
- FiCheck as FiCheck8,
7815
- FiEdit2 as FiEdit25,
7813
+ FiX as FiX3,
7814
+ FiCheck as FiCheck7,
7815
+ FiEdit2 as FiEdit24,
7816
7816
  FiSun,
7817
- FiChevronDown as FiChevronDown5
7817
+ FiChevronDown as FiChevronDown4
7818
7818
  } from "react-icons/fi";
7819
7819
  function InSceneCreationForm({
7820
7820
  onSave,
@@ -8066,7 +8066,7 @@ function InSceneCreationForm({
8066
8066
  onClick: () => handleRemoveType(index),
8067
8067
  className: "hover:text-white transition-colors"
8068
8068
  },
8069
- /* @__PURE__ */ React13.createElement(FiX4, { size: 12 })
8069
+ /* @__PURE__ */ React13.createElement(FiX3, { size: 12 })
8070
8070
  )
8071
8071
  )), /* @__PURE__ */ React13.createElement(
8072
8072
  "input",
@@ -8120,7 +8120,7 @@ function InSceneCreationForm({
8120
8120
  },
8121
8121
  /* @__PURE__ */ React13.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
8122
8122
  /* @__PURE__ */ React13.createElement(
8123
- FiChevronDown5,
8123
+ FiChevronDown4,
8124
8124
  {
8125
8125
  className: `flex-shrink-0 text-slate-400 transition-transform ${isDatasetDropdownOpen ? "rotate-180" : ""}`
8126
8126
  }
@@ -8137,7 +8137,7 @@ function InSceneCreationForm({
8137
8137
  },
8138
8138
  ds.name
8139
8139
  )))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React13.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React13.createElement(
8140
- DescriptionDisplay2,
8140
+ DescriptionDisplay,
8141
8141
  {
8142
8142
  description,
8143
8143
  savedSections: [],
@@ -8155,7 +8155,7 @@ function InSceneCreationForm({
8155
8155
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
8156
8156
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
8157
8157
  },
8158
- /* @__PURE__ */ React13.createElement(FiEdit25, { size: 14 })
8158
+ /* @__PURE__ */ React13.createElement(FiEdit24, { size: 14 })
8159
8159
  )), !description && /* @__PURE__ */ React13.createElement(
8160
8160
  "div",
8161
8161
  {
@@ -8178,7 +8178,7 @@ function InSceneCreationForm({
8178
8178
  {
8179
8179
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
8180
8180
  },
8181
- isSelected && /* @__PURE__ */ React13.createElement(FiCheck8, { size: 12, className: "text-white" })
8181
+ isSelected && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
8182
8182
  ),
8183
8183
  /* @__PURE__ */ React13.createElement(
8184
8184
  "span",
@@ -8193,7 +8193,7 @@ function InSceneCreationForm({
8193
8193
  {
8194
8194
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
8195
8195
  },
8196
- useImageAsTexture && /* @__PURE__ */ React13.createElement(FiCheck8, { size: 12, className: "text-white" })
8196
+ useImageAsTexture && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
8197
8197
  ), /* @__PURE__ */ React13.createElement(
8198
8198
  "input",
8199
8199
  {
@@ -8240,10 +8240,10 @@ function InSceneCreationForm({
8240
8240
  onClick: handleAddProp,
8241
8241
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
8242
8242
  },
8243
- /* @__PURE__ */ React13.createElement(FiPlus4, { size: 14 }),
8243
+ /* @__PURE__ */ React13.createElement(FiPlus3, { size: 14 }),
8244
8244
  " Adicionar"
8245
8245
  )), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React13.createElement(
8246
- CustomPropertyDisplay2,
8246
+ CustomPropertyDisplay,
8247
8247
  {
8248
8248
  key: prop.id,
8249
8249
  prop,
@@ -8275,7 +8275,7 @@ function InSceneCreationForm({
8275
8275
  "Salvar"
8276
8276
  )))
8277
8277
  ), isDescriptionModalOpen && /* @__PURE__ */ React13.createElement(
8278
- DescriptionEditModal2,
8278
+ DescriptionEditModal,
8279
8279
  {
8280
8280
  isOpen: isDescriptionModalOpen,
8281
8281
  title: "Editar Descri\xE7\xE3o do Node",
@@ -8293,7 +8293,7 @@ function InSceneCreationForm({
8293
8293
 
8294
8294
  // src/components/InSceneVersionForm.jsx
8295
8295
  import React14, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
8296
- import { FiPlus as FiPlus5, FiMaximize2 as FiMaximize22, FiCheck as FiCheck9, FiEdit2 as FiEdit26 } from "react-icons/fi";
8296
+ import { FiPlus as FiPlus4, FiMaximize2 as FiMaximize22, FiCheck as FiCheck8, FiEdit2 as FiEdit25 } from "react-icons/fi";
8297
8297
  function InSceneVersionForm({
8298
8298
  onSave,
8299
8299
  onCancel,
@@ -8464,7 +8464,7 @@ function InSceneVersionForm({
8464
8464
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
8465
8465
  }
8466
8466
  )), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React14.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React14.createElement(
8467
- DescriptionDisplay2,
8467
+ DescriptionDisplay,
8468
8468
  {
8469
8469
  description,
8470
8470
  savedSections: [],
@@ -8482,7 +8482,7 @@ function InSceneVersionForm({
8482
8482
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
8483
8483
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
8484
8484
  },
8485
- /* @__PURE__ */ React14.createElement(FiEdit26, { size: 14 })
8485
+ /* @__PURE__ */ React14.createElement(FiEdit25, { size: 14 })
8486
8486
  )), !description && /* @__PURE__ */ React14.createElement(
8487
8487
  "div",
8488
8488
  {
@@ -8505,7 +8505,7 @@ function InSceneVersionForm({
8505
8505
  {
8506
8506
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
8507
8507
  },
8508
- isSelected && /* @__PURE__ */ React14.createElement(FiCheck9, { size: 12, className: "text-white" })
8508
+ isSelected && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
8509
8509
  ),
8510
8510
  /* @__PURE__ */ React14.createElement(
8511
8511
  "span",
@@ -8520,7 +8520,7 @@ function InSceneVersionForm({
8520
8520
  {
8521
8521
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
8522
8522
  },
8523
- useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck9, { size: 12, className: "text-white" })
8523
+ useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
8524
8524
  ), /* @__PURE__ */ React14.createElement(
8525
8525
  "input",
8526
8526
  {
@@ -8555,10 +8555,10 @@ function InSceneVersionForm({
8555
8555
  onClick: handleAddProp,
8556
8556
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
8557
8557
  },
8558
- /* @__PURE__ */ React14.createElement(FiPlus5, { size: 14 }),
8558
+ /* @__PURE__ */ React14.createElement(FiPlus4, { size: 14 }),
8559
8559
  " Adicionar"
8560
8560
  )), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
8561
- CustomPropertyDisplay2,
8561
+ CustomPropertyDisplay,
8562
8562
  {
8563
8563
  key: prop.id,
8564
8564
  prop,
@@ -8590,7 +8590,7 @@ function InSceneVersionForm({
8590
8590
  "Salvar"
8591
8591
  )))
8592
8592
  ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
8593
- DescriptionEditModal2,
8593
+ DescriptionEditModal,
8594
8594
  {
8595
8595
  isOpen: isDescriptionModalOpen,
8596
8596
  title: "Editar Descri\xE7\xE3o da Vers\xE3o",
@@ -8609,25 +8609,25 @@ function InSceneVersionForm({
8609
8609
  // src/components/InSceneQuestForm.jsx
8610
8610
  import React16, { useState as useState17, useRef as useRef12 } from "react";
8611
8611
  import {
8612
- FiPlus as FiPlus7,
8613
- FiCheck as FiCheck10,
8614
- FiEdit2 as FiEdit27,
8615
- FiTarget as FiTarget2,
8616
- FiX as FiX6,
8617
- FiChevronDown as FiChevronDown7,
8618
- FiUser as FiUser3,
8619
- FiSearch as FiSearch6
8612
+ FiPlus as FiPlus6,
8613
+ FiCheck as FiCheck9,
8614
+ FiEdit2 as FiEdit26,
8615
+ FiTarget,
8616
+ FiX as FiX5,
8617
+ FiChevronDown as FiChevronDown6,
8618
+ FiUser as FiUser2,
8619
+ FiSearch as FiSearch5
8620
8620
  } from "react-icons/fi";
8621
8621
 
8622
8622
  // src/components/QuestReviewStackEditor.jsx
8623
8623
  import React15, { useState as useState16 } from "react";
8624
8624
  import {
8625
- FiPlus as FiPlus6,
8626
- FiX as FiX5,
8627
- FiUser as FiUser2,
8628
- FiSearch as FiSearch5,
8625
+ FiPlus as FiPlus5,
8626
+ FiX as FiX4,
8627
+ FiUser,
8628
+ FiSearch as FiSearch4,
8629
8629
  FiChevronUp,
8630
- FiChevronDown as FiChevronDown6,
8630
+ FiChevronDown as FiChevronDown5,
8631
8631
  FiStar
8632
8632
  } from "react-icons/fi";
8633
8633
  function QuestReviewStackEditor({
@@ -8680,10 +8680,10 @@ function QuestReviewStackEditor({
8680
8680
  onClick: () => setIsAdding(true),
8681
8681
  className: "flex items-center gap-1 px-2 py-1 text-[10px] bg-sky-500/20 text-sky-300 border border-sky-500/30 rounded hover:bg-sky-500/30 transition-colors"
8682
8682
  },
8683
- /* @__PURE__ */ React15.createElement(FiPlus6, { size: 10 }),
8683
+ /* @__PURE__ */ React15.createElement(FiPlus5, { size: 10 }),
8684
8684
  " Adicionar Camada"
8685
8685
  )), isAdding && /* @__PURE__ */ React15.createElement("div", { className: "bg-slate-900/50 border border-sky-500/30 rounded-lg p-2 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200" }, /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
8686
- FiSearch5,
8686
+ FiSearch4,
8687
8687
  {
8688
8688
  className: "absolute left-2 top-1/2 -translate-y-1/2 text-slate-500",
8689
8689
  size: 12
@@ -8704,7 +8704,7 @@ function QuestReviewStackEditor({
8704
8704
  onClick: () => setIsAdding(false),
8705
8705
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-500 hover:text-white"
8706
8706
  },
8707
- /* @__PURE__ */ React15.createElement(FiX5, { size: 14 })
8707
+ /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
8708
8708
  )), /* @__PURE__ */ React15.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React15.createElement(
8709
8709
  "li",
8710
8710
  {
@@ -8712,7 +8712,7 @@ function QuestReviewStackEditor({
8712
8712
  onClick: () => handleAddReviewer(m.id),
8713
8713
  className: "px-2 py-1.5 hover:bg-white/5 rounded cursor-pointer text-xs flex items-center gap-2"
8714
8714
  },
8715
- /* @__PURE__ */ React15.createElement(FiUser2, { size: 12, className: "text-slate-400" }),
8715
+ /* @__PURE__ */ React15.createElement(FiUser, { size: 12, className: "text-slate-400" }),
8716
8716
  /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, m.name || m.email)
8717
8717
  )), filteredMembers.length === 0 && /* @__PURE__ */ React15.createElement("li", { className: "text-[10px] text-slate-500 text-center py-2 italic font-light" }, "Nenhum membro encontrado"))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, reviewStack.map((item, index) => {
8718
8718
  const member = viewMembers.find((m) => m.id === item.userId);
@@ -8740,7 +8740,7 @@ function QuestReviewStackEditor({
8740
8740
  disabled: index === reviewStack.length - 1,
8741
8741
  className: "hover:text-sky-400 disabled:opacity-20"
8742
8742
  },
8743
- /* @__PURE__ */ React15.createElement(FiChevronDown6, { size: 12 })
8743
+ /* @__PURE__ */ React15.createElement(FiChevronDown5, { size: 12 })
8744
8744
  ))),
8745
8745
  /* @__PURE__ */ React15.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
8746
8746
  "span",
@@ -8765,7 +8765,7 @@ function QuestReviewStackEditor({
8765
8765
  onClick: () => handleRemoveReviewer(index),
8766
8766
  className: "p-1.5 rounded hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-colors"
8767
8767
  },
8768
- /* @__PURE__ */ React15.createElement(FiX5, { size: 14 })
8768
+ /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
8769
8769
  ))
8770
8770
  );
8771
8771
  }), reviewStack.length === 0 && !isAdding && /* @__PURE__ */ React15.createElement("div", { className: "py-6 border-2 border-dashed border-white/5 rounded-xl flex flex-col items-center justify-center gap-2" }, /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-slate-500 font-light italic" }, "Nenhum revisor definido"), !readOnly && /* @__PURE__ */ React15.createElement(
@@ -8929,7 +8929,7 @@ function InSceneQuestForm({
8929
8929
  }
8930
8930
  }
8931
8931
  ),
8932
- /* @__PURE__ */ React16.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React16.createElement("div", null, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React16.createElement(FiTarget2, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React16.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React16.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React16.createElement(
8932
+ /* @__PURE__ */ React16.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React16.createElement("div", null, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React16.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React16.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React16.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React16.createElement(
8933
8933
  "button",
8934
8934
  {
8935
8935
  type: "button",
@@ -8975,7 +8975,7 @@ function InSceneQuestForm({
8975
8975
  }
8976
8976
  ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, status)),
8977
8977
  /* @__PURE__ */ React16.createElement(
8978
- FiChevronDown7,
8978
+ FiChevronDown6,
8979
8979
  {
8980
8980
  className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}`
8981
8981
  }
@@ -9012,9 +9012,9 @@ function InSceneQuestForm({
9012
9012
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
9013
9013
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
9014
9014
  },
9015
- /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
9015
+ /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
9016
9016
  /* @__PURE__ */ React16.createElement(
9017
- FiChevronDown7,
9017
+ FiChevronDown6,
9018
9018
  {
9019
9019
  className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
9020
9020
  }
@@ -9028,7 +9028,7 @@ function InSceneQuestForm({
9028
9028
  setAssigneeSearchQuery("");
9029
9029
  }
9030
9030
  }
9031
- ), /* @__PURE__ */ React16.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React16.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiSearch6, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React16.createElement(
9031
+ ), /* @__PURE__ */ React16.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React16.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React16.createElement(
9032
9032
  "input",
9033
9033
  {
9034
9034
  type: "text",
@@ -9076,7 +9076,7 @@ function InSceneQuestForm({
9076
9076
  viewMembers
9077
9077
  }
9078
9078
  )), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React16.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React16.createElement(
9079
- DescriptionDisplay2,
9079
+ DescriptionDisplay,
9080
9080
  {
9081
9081
  description,
9082
9082
  savedSections: [],
@@ -9092,7 +9092,7 @@ function InSceneQuestForm({
9092
9092
  onClick: () => setIsDescriptionModalOpen(true),
9093
9093
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
9094
9094
  },
9095
- /* @__PURE__ */ React16.createElement(FiEdit27, { size: 14 })
9095
+ /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
9096
9096
  )), !description && /* @__PURE__ */ React16.createElement(
9097
9097
  "div",
9098
9098
  {
@@ -9107,10 +9107,10 @@ function InSceneQuestForm({
9107
9107
  onClick: handleAddProp,
9108
9108
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
9109
9109
  },
9110
- /* @__PURE__ */ React16.createElement(FiPlus7, { size: 14 }),
9110
+ /* @__PURE__ */ React16.createElement(FiPlus6, { size: 14 }),
9111
9111
  " Adicionar"
9112
9112
  )), /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React16.createElement(
9113
- CustomPropertyDisplay2,
9113
+ CustomPropertyDisplay,
9114
9114
  {
9115
9115
  key: prop.id,
9116
9116
  prop,
@@ -9138,7 +9138,7 @@ function InSceneQuestForm({
9138
9138
  {
9139
9139
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${size === s ? "bg-indigo-500 border-indigo-500" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
9140
9140
  },
9141
- size === s && /* @__PURE__ */ React16.createElement(FiCheck10, { size: 12, className: "text-white" })
9141
+ size === s && /* @__PURE__ */ React16.createElement(FiCheck9, { size: 12, className: "text-white" })
9142
9142
  ),
9143
9143
  /* @__PURE__ */ React16.createElement(
9144
9144
  "span",
@@ -9161,7 +9161,7 @@ function InSceneQuestForm({
9161
9161
  onClick: () => handleRemoveType(index),
9162
9162
  className: "hover:text-white transition-colors"
9163
9163
  },
9164
- /* @__PURE__ */ React16.createElement(FiX6, { size: 12 })
9164
+ /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })
9165
9165
  )
9166
9166
  )), /* @__PURE__ */ React16.createElement(
9167
9167
  "input",
@@ -9193,7 +9193,7 @@ function InSceneQuestForm({
9193
9193
  "Salvar Quest"
9194
9194
  )))
9195
9195
  ), isDescriptionModalOpen && /* @__PURE__ */ React16.createElement(
9196
- DescriptionEditModal2,
9196
+ DescriptionEditModal,
9197
9197
  {
9198
9198
  isOpen: isDescriptionModalOpen,
9199
9199
  title: "Editar Descri\xE7\xE3o da Quest",
@@ -9209,7 +9209,7 @@ function InSceneQuestForm({
9209
9209
 
9210
9210
  // src/components/NodeDetailsPanel.jsx
9211
9211
  import React17, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
9212
- import { FiPlus as FiPlus8, FiMaximize2 as FiMaximize23, FiX as FiX7, FiCheck as FiCheck11, FiImage as FiImage3, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiSun as FiSun2, FiLink as FiLink6, FiDatabase } from "react-icons/fi";
9212
+ import { FiPlus as FiPlus7, FiMaximize2 as FiMaximize23, FiX as FiX6, FiCheck as FiCheck10, FiImage as FiImage4, FiEdit2 as FiEdit27, FiLoader as FiLoader2, FiBookOpen as FiBookOpen3, FiSun as FiSun2, FiLink as FiLink5, FiDatabase } from "react-icons/fi";
9213
9213
  function NodeDetailsPanel({
9214
9214
  node,
9215
9215
  onClose,
@@ -9546,7 +9546,7 @@ function NodeDetailsPanel({
9546
9546
  className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
9547
9547
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para este Node"
9548
9548
  },
9549
- isLinkCopied ? /* @__PURE__ */ React17.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React17.createElement(FiLink6, { size: 12 })
9549
+ isLinkCopied ? /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React17.createElement(FiLink5, { size: 12 })
9550
9550
  )), /* @__PURE__ */ React17.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || (node == null ? void 0 : node.name))), /* @__PURE__ */ React17.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React17.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Tipos"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React17.createElement("span", { key: index, className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20" }, t, canEdit && /* @__PURE__ */ React17.createElement(
9551
9551
  "button",
9552
9552
  {
@@ -9554,7 +9554,7 @@ function NodeDetailsPanel({
9554
9554
  onClick: () => handleRemoveType(index),
9555
9555
  className: "hover:text-white transition-colors"
9556
9556
  },
9557
- /* @__PURE__ */ React17.createElement(FiX7, { size: 12 })
9557
+ /* @__PURE__ */ React17.createElement(FiX6, { size: 12 })
9558
9558
  ))), canEdit && /* @__PURE__ */ React17.createElement(
9559
9559
  "input",
9560
9560
  {
@@ -9597,7 +9597,7 @@ function NodeDetailsPanel({
9597
9597
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none ${canEdit ? "focus:ring-2 focus:ring-indigo-400/60" : "cursor-default text-slate-400"}`
9598
9598
  }
9599
9599
  )), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React17.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React17.createElement(
9600
- DescriptionDisplay2,
9600
+ DescriptionDisplay,
9601
9601
  {
9602
9602
  description,
9603
9603
  savedSections: existingSections,
@@ -9616,7 +9616,7 @@ function NodeDetailsPanel({
9616
9616
  className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`,
9617
9617
  title: "Modo de Leitura"
9618
9618
  },
9619
- /* @__PURE__ */ React17.createElement(FiBookOpen4, { size: 14 })
9619
+ /* @__PURE__ */ React17.createElement(FiBookOpen3, { size: 14 })
9620
9620
  ), canEdit && /* @__PURE__ */ React17.createElement(
9621
9621
  "button",
9622
9622
  {
@@ -9625,7 +9625,7 @@ function NodeDetailsPanel({
9625
9625
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9626
9626
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9627
9627
  },
9628
- /* @__PURE__ */ React17.createElement(FiEdit28, { size: 14 })
9628
+ /* @__PURE__ */ React17.createElement(FiEdit27, { size: 14 })
9629
9629
  )), canEdit && !description && /* @__PURE__ */ React17.createElement(
9630
9630
  "div",
9631
9631
  {
@@ -9643,10 +9643,10 @@ function NodeDetailsPanel({
9643
9643
  onClick: () => canEdit && handleSizeChange(s),
9644
9644
  className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}`
9645
9645
  },
9646
- /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React17.createElement(FiCheck11, { size: 12, className: "text-white" })),
9646
+ /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12, className: "text-white" })),
9647
9647
  /* @__PURE__ */ React17.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s)
9648
9648
  );
9649
- }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React17.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React17.createElement(FiCheck11, { size: 12, className: "text-white" })), /* @__PURE__ */ React17.createElement(
9649
+ }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React17.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12, className: "text-white" })), /* @__PURE__ */ React17.createElement(
9650
9650
  "input",
9651
9651
  {
9652
9652
  type: "checkbox",
@@ -9674,8 +9674,8 @@ function NodeDetailsPanel({
9674
9674
  className: `w-full h-1.5 bg-slate-700 rounded-lg appearance-none ${canEdit ? "cursor-pointer accent-indigo-500 hover:accent-indigo-400" : "cursor-default accent-slate-500"}`,
9675
9675
  title: `Intensidade do brilho: ${intensity}`
9676
9676
  }
9677
- ), /* @__PURE__ */ React17.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React17.createElement("span", { className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}` }, useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Ajuste a cor e a intensidade do brilho.")), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React17.createElement(FiPlus8, { size: 14 }), " Adicionar")), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React17.createElement(
9678
- CustomPropertyDisplay2,
9677
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React17.createElement("span", { className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}` }, useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Ajuste a cor e a intensidade do brilho.")), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React17.createElement(FiPlus7, { size: 14 }), " Adicionar")), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React17.createElement(
9678
+ CustomPropertyDisplay,
9679
9679
  {
9680
9680
  key: prop.id,
9681
9681
  prop,
@@ -9698,11 +9698,11 @@ function NodeDetailsPanel({
9698
9698
  ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}
9699
9699
  `
9700
9700
  },
9701
- isSaving && /* @__PURE__ */ React17.createElement(FiLoader3, { className: "animate-spin" }),
9701
+ isSaving && /* @__PURE__ */ React17.createElement(FiLoader2, { className: "animate-spin" }),
9702
9702
  isSaving ? "Salvando..." : "Salvar"
9703
9703
  )))
9704
9704
  ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React17.createElement(
9705
- DescriptionEditModal2,
9705
+ DescriptionEditModal,
9706
9706
  {
9707
9707
  isOpen: isDescriptionModalOpen,
9708
9708
  title: "Editar Descri\xE7\xE3o do Node",
@@ -9723,6 +9723,7 @@ function NodeDetailsPanel({
9723
9723
 
9724
9724
  // src/components/QuestDetailsPanel.jsx
9725
9725
  import React19, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
9726
+ import { FiPlus as FiPlus8, FiX as FiX7, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink7, FiTarget as FiTarget3, FiChevronDown as FiChevronDown7, FiUser as FiUser3, FiSearch as FiSearch7 } from "react-icons/fi";
9726
9727
 
9727
9728
  // src/components/QuestTimeline.jsx
9728
9729
  import React18 from "react";
@@ -9734,19 +9735,19 @@ import {
9734
9735
  FiMessageSquare,
9735
9736
  FiAlertCircle,
9736
9737
  FiArrowRight,
9737
- FiTarget as FiTarget3,
9738
+ FiTarget as FiTarget2,
9738
9739
  FiPlusCircle,
9739
- FiSearch as FiSearch7,
9740
- FiLink as FiLink7
9740
+ FiSearch as FiSearch6,
9741
+ FiLink as FiLink6
9741
9742
  } from "react-icons/fi";
9742
9743
  var EVENT_ICONS = {
9743
9744
  "quest_created": { icon: FiPlusCircle, color: "text-sky-400", bg: "bg-sky-400/10" },
9744
9745
  "assignee_changed": { icon: FiUserPlus, color: "text-indigo-400", bg: "bg-indigo-400/10" },
9745
9746
  "status_changed": { icon: FiRotateCcw, color: "text-amber-400", bg: "bg-amber-400/10" },
9746
- "review_cycle_started": { icon: FiSearch7, color: "text-purple-400", bg: "bg-purple-400/10" },
9747
+ "review_cycle_started": { icon: FiSearch6, color: "text-purple-400", bg: "bg-purple-400/10" },
9747
9748
  "review_completed": { icon: FiCheckSquare2, color: "text-emerald-400", bg: "bg-emerald-400/10" },
9748
9749
  "comment": { icon: FiMessageSquare, color: "text-slate-400", bg: "bg-slate-400/10" },
9749
- "quest_finished": { icon: FiTarget3, color: "text-green-400", bg: "bg-green-400/10" },
9750
+ "quest_finished": { icon: FiTarget2, color: "text-green-400", bg: "bg-green-400/10" },
9750
9751
  "default": { icon: FiGitCommit, color: "text-slate-500", bg: "bg-slate-500/10" }
9751
9752
  };
9752
9753
  function QuestTimeline({
@@ -9771,11 +9772,11 @@ function QuestTimeline({
9771
9772
  if (timeline.length === 0) {
9772
9773
  return /* @__PURE__ */ React18.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React18.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React18.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
9773
9774
  }
9774
- return /* @__PURE__ */ React18.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React18.createElement("div", { className: "relative pl-6 space-y-6 before:content-[''] before:absolute before:left-[11px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
9775
+ return /* @__PURE__ */ React18.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React18.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
9775
9776
  const config = EVENT_ICONS[event.type] || EVENT_ICONS.default;
9776
9777
  const Icon = config.icon;
9777
9778
  const actorName = getMemberName(event.actorId);
9778
- return /* @__PURE__ */ React18.createElement("div", { key: index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React18.createElement("div", { className: `absolute -left-[27px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React18.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React18.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), (event.from_status || event.to_status) && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React18.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => /* @__PURE__ */ React18.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React18.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ React18.createElement("span", { className: "text-slate-300 truncate font-mono" }, typeof value === "string" ? value : JSON.stringify(value))))), event.links && event.links.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React18.createElement(
9779
+ return /* @__PURE__ */ React18.createElement("div", { key: index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React18.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React18.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React18.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), (event.from_status || event.to_status) && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React18.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => /* @__PURE__ */ React18.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React18.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ React18.createElement("span", { className: "text-slate-300 truncate font-mono" }, typeof value === "string" ? value : JSON.stringify(value))))), event.links && event.links.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React18.createElement(
9779
9780
  "a",
9780
9781
  {
9781
9782
  key: lIdx,
@@ -9784,7 +9785,7 @@ function QuestTimeline({
9784
9785
  rel: "noopener noreferrer",
9785
9786
  className: "flex items-center gap-1.5 px-2 py-1 rounded bg-white/5 border border-white/5 hover:bg-white/10 transition-colors text-[10px] text-sky-400 font-medium"
9786
9787
  },
9787
- /* @__PURE__ */ React18.createElement(FiLink7, { size: 10 }),
9788
+ /* @__PURE__ */ React18.createElement(FiLink6, { size: 10 }),
9788
9789
  link.name || "Link"
9789
9790
  ))), event.images && event.images.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.images.map((img, iIdx) => /* @__PURE__ */ React18.createElement(
9790
9791
  "button",
@@ -9795,7 +9796,7 @@ function QuestTimeline({
9795
9796
  className: "relative w-12 h-12 rounded border border-white/10 overflow-hidden hover:border-sky-500/50 transition-colors group"
9796
9797
  },
9797
9798
  /* @__PURE__ */ React18.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
9798
- /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React18.createElement(FiSearch7, { size: 12, className: "text-white" }))
9799
+ /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React18.createElement(FiSearch6, { size: 12, className: "text-white" }))
9799
9800
  )))));
9800
9801
  })));
9801
9802
  }
@@ -9858,6 +9859,8 @@ function QuestDetailsPanel({
9858
9859
  const [isLinkCopied, setIsLinkCopied] = useState19(false);
9859
9860
  const [hasUnsavedChanges, setHasUnsavedChanges] = useState19(false);
9860
9861
  const [noteText, setNoteText] = useState19("");
9862
+ const [noteLinks, setNoteLinks] = useState19([]);
9863
+ const [noteImages, setNoteImages] = useState19([]);
9861
9864
  const [isNoteFormOpen, setIsNoteFormOpen] = useState19(false);
9862
9865
  const maxPanelW = typeof window !== "undefined" ? window.innerWidth * 0.92 : 1200;
9863
9866
  const { width: panelWidth, isResizing, handlePointerDown: handleResize, setWidth } = useResizablePanel({
@@ -9993,7 +9996,10 @@ function QuestDetailsPanel({
9993
9996
  if (!noteText.trim() || isSaving) return;
9994
9997
  setIsSaving(true);
9995
9998
  const actorId = (currentUser == null ? void 0 : currentUser.id) || "unknown";
9996
- const newEntry = createTimelineEntry(actorId, noteText, "comment");
9999
+ const newEntry = createTimelineEntry(actorId, noteText, "comment", {
10000
+ links: noteLinks,
10001
+ images: noteImages
10002
+ });
9997
10003
  const updatedTimeline = [...timeline, newEntry];
9998
10004
  try {
9999
10005
  const nodeToSave = {
@@ -10004,6 +10010,8 @@ function QuestDetailsPanel({
10004
10010
  setTimeline(updatedTimeline);
10005
10011
  onDataUpdate(nodeToSave);
10006
10012
  setNoteText("");
10013
+ setNoteLinks([]);
10014
+ setNoteImages([]);
10007
10015
  setIsNoteFormOpen(false);
10008
10016
  } catch (error) {
10009
10017
  console.error("Erro ao adicionar nota:", error);
@@ -10011,6 +10019,24 @@ function QuestDetailsPanel({
10011
10019
  setIsSaving(false);
10012
10020
  }
10013
10021
  };
10022
+ const addLinkToNote = () => {
10023
+ setNoteLinks([...noteLinks, { id: v4_default(), name: "", value: "" }]);
10024
+ };
10025
+ const removeLinkFromNote = (id) => {
10026
+ setNoteLinks(noteLinks.filter((l) => l.id !== id));
10027
+ };
10028
+ const updateLinkInNote = (id, field, val) => {
10029
+ setNoteLinks(noteLinks.map((l) => l.id === id ? { ...l, [field]: val } : l));
10030
+ };
10031
+ const addImageToNote = () => {
10032
+ setNoteImages([...noteImages, { id: v4_default(), name: "Image", value: "" }]);
10033
+ };
10034
+ const removeImageFromNote = (id) => {
10035
+ setNoteImages(noteImages.filter((img) => img.id !== id));
10036
+ };
10037
+ const updateImageInNote = (id, val) => {
10038
+ setNoteImages(noteImages.map((img) => img.id === id ? { ...img, value: val } : img));
10039
+ };
10014
10040
  const handleStatusChange = (newStatus) => {
10015
10041
  setStatus(newStatus);
10016
10042
  const newColor = QUEST_STATUS_COLORS3[newStatus];
@@ -10177,7 +10203,7 @@ function QuestDetailsPanel({
10177
10203
  onImageClick: handleImageClickFromText,
10178
10204
  onSaveDescription: handleSaveDescriptionInline
10179
10205
  }
10180
- ) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React19.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React19.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React19.createElement(FiCheck, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiLink, { size: 12 }))), /* @__PURE__ */ React19.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React19.createElement(
10206
+ ) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React19.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React19.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React19.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React19.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React19.createElement(
10181
10207
  "input",
10182
10208
  {
10183
10209
  type: "text",
@@ -10195,7 +10221,7 @@ function QuestDetailsPanel({
10195
10221
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 transition-colors flex items-center justify-between ${canEdit ? "hover:border-white/20 focus:ring-2 focus:ring-indigo-400/60 cursor-pointer" : "cursor-default opacity-80"}`
10196
10222
  },
10197
10223
  /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement("span", { className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]", style: { backgroundColor: QUEST_STATUS_COLORS3[status] } }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10198
- canEdit && /* @__PURE__ */ React19.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
10224
+ canEdit && /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
10199
10225
  ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS3).map((s) => /* @__PURE__ */ React19.createElement(
10200
10226
  "li",
10201
10227
  {
@@ -10215,12 +10241,12 @@ function QuestDetailsPanel({
10215
10241
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
10216
10242
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
10217
10243
  },
10218
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
10219
- /* @__PURE__ */ React19.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
10244
+ /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
10245
+ /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
10220
10246
  ), isAssigneeDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
10221
10247
  setIsAssigneeDropdownOpen(false);
10222
10248
  setAssigneeSearchQuery("");
10223
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React19.createElement(
10249
+ } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React19.createElement(
10224
10250
  "input",
10225
10251
  {
10226
10252
  type: "text",
@@ -10288,7 +10314,7 @@ function QuestDetailsPanel({
10288
10314
  )), viewMembers.filter((member) => {
10289
10315
  const search = assigneeSearchQuery.toLowerCase();
10290
10316
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10291
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement(
10317
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement(
10292
10318
  QuestReviewStackEditor,
10293
10319
  {
10294
10320
  reviewStack,
@@ -10306,12 +10332,12 @@ function QuestDetailsPanel({
10306
10332
  onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
10307
10333
  className: "w-full bg-slate-800/80 p-2 text-xs rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-1 focus:ring-purple-400/50 transition-colors flex items-center justify-between"
10308
10334
  },
10309
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, ((_b = viewMembers.find((m) => String(m.id) === String(returnAssigneeId))) == null ? void 0 : _b.name) || "Selecionar respons\xE1vel...")),
10310
- /* @__PURE__ */ React19.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
10335
+ /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, ((_b = viewMembers.find((m) => String(m.id) === String(returnAssigneeId))) == null ? void 0 : _b.name) || "Selecionar respons\xE1vel...")),
10336
+ /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
10311
10337
  ), isReturnDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
10312
10338
  setIsReturnDropdownOpen(false);
10313
10339
  setReturnSearchQuery("");
10314
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute bottom-full left-0 mb-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React19.createElement(
10340
+ } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute bottom-full left-0 mb-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React19.createElement(
10315
10341
  "input",
10316
10342
  {
10317
10343
  type: "text",
@@ -10350,14 +10376,14 @@ function QuestDetailsPanel({
10350
10376
  },
10351
10377
  /* @__PURE__ */ React19.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React19.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
10352
10378
  "Retornar para Opera\xE7\xE3o"
10353
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React19.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React19.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React19.createElement(FiBookOpen, { size: 14 })), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React19.createElement(FiEdit2, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React19.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React19.createElement(FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React19.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React19.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React19.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React19.createElement(
10379
+ ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React19.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React19.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React19.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React19.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 14 }), " Adicionar")), /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React19.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React19.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React19.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React19.createElement(
10354
10380
  "button",
10355
10381
  {
10356
10382
  type: "button",
10357
10383
  onClick: () => setIsNoteFormOpen(!isNoteFormOpen),
10358
10384
  className: "flex items-center gap-1.5 px-2 py-1 text-[10px] rounded-md bg-white/5 hover:bg-white/10 border border-white/10 transition-colors text-slate-300"
10359
10385
  },
10360
- isNoteFormOpen ? /* @__PURE__ */ React19.createElement(FiX, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiPlus, { size: 12 }),
10386
+ isNoteFormOpen ? /* @__PURE__ */ React19.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiPlus8, { size: 12 }),
10361
10387
  isNoteFormOpen ? "Cancelar" : "Nova Nota"
10362
10388
  )), isNoteFormOpen && /* @__PURE__ */ React19.createElement("div", { className: "mb-6 p-4 rounded-xl bg-white/5 border border-white/5 space-y-3 animate-in fade-in slide-in-from-top-2" }, /* @__PURE__ */ React19.createElement(
10363
10389
  "textarea",
@@ -10367,7 +10393,34 @@ function QuestDetailsPanel({
10367
10393
  placeholder: "Escreva uma observa\xE7\xE3o no hist\xF3rico...",
10368
10394
  className: "w-full bg-slate-900/50 p-3 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-500/50 min-h-[80px] resize-none"
10369
10395
  }
10370
- ), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-end gap-2" }, /* @__PURE__ */ React19.createElement(
10396
+ ), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ React19.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement(
10397
+ "input",
10398
+ {
10399
+ type: "text",
10400
+ placeholder: "T\xEDtulo",
10401
+ value: link.name,
10402
+ onChange: (e) => updateLinkInNote(link.id, "name", e.target.value),
10403
+ className: "w-1/3 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
10404
+ }
10405
+ ), /* @__PURE__ */ React19.createElement(
10406
+ "input",
10407
+ {
10408
+ type: "text",
10409
+ placeholder: "URL (https://...)",
10410
+ value: link.value,
10411
+ onChange: (e) => updateLinkInNote(link.id, "value", e.target.value),
10412
+ className: "flex-1 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
10413
+ }
10414
+ ), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ React19.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ React19.createElement(FiImage, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React19.createElement(
10415
+ "input",
10416
+ {
10417
+ type: "text",
10418
+ placeholder: "URL da Imagem (https://...)",
10419
+ value: img.value,
10420
+ onChange: (e) => updateImageInNote(img.id, e.target.value),
10421
+ className: "flex-1 bg-transparent text-[10px] focus:outline-none"
10422
+ }
10423
+ )), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ React19.createElement(
10371
10424
  "button",
10372
10425
  {
10373
10426
  type: "button",
@@ -10385,8 +10438,8 @@ function QuestDetailsPanel({
10385
10438
  }
10386
10439
  )), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
10387
10440
  const isSelected = size === s;
10388
- return /* @__PURE__ */ React19.createElement("button", { key: s, type: "button", onClick: () => canEdit && handleSizeChange(s), className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}` }, /* @__PURE__ */ React19.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React19.createElement(FiCheck, { size: 12, className: "text-white" })), /* @__PURE__ */ React19.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
10389
- }))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React19.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React19.createElement(FiX, { size: 12 })))), canEdit && /* @__PURE__ */ React19.createElement(
10441
+ return /* @__PURE__ */ React19.createElement("button", { key: s, type: "button", onClick: () => canEdit && handleSizeChange(s), className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}` }, /* @__PURE__ */ React19.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React19.createElement(FiCheck11, { size: 12, className: "text-white" })), /* @__PURE__ */ React19.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
10442
+ }))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React19.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))), canEdit && /* @__PURE__ */ React19.createElement(
10390
10443
  "input",
10391
10444
  {
10392
10445
  type: "text",
@@ -10410,7 +10463,7 @@ function QuestDetailsPanel({
10410
10463
  ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React19.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
10411
10464
  e.preventDefault();
10412
10465
  handleAddType(suggestedType);
10413
- } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ React19.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React19.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React19.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React19.createElement("button", { onClick: () => handleSave(false), disabled: isSaving, className: `px-4 py-2 rounded-lg transition-all font-semibold text-sm shadow-[0_8px_24px_rgba(99,102,241,0.35)] flex items-center gap-2 ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}` }, isSaving && /* @__PURE__ */ React19.createElement(FiLoader, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
10466
+ } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ React19.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React19.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React19.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React19.createElement("button", { onClick: () => handleSave(false), disabled: isSaving, className: `px-4 py-2 rounded-lg transition-all font-semibold text-sm shadow-[0_8px_24px_rgba(99,102,241,0.35)] flex items-center gap-2 ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}` }, isSaving && /* @__PURE__ */ React19.createElement(FiLoader3, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
10414
10467
  ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React19.createElement(
10415
10468
  DescriptionEditModal,
10416
10469
  {
@@ -10749,7 +10802,7 @@ function RelationshipDetailsPanel({
10749
10802
  `
10750
10803
  }
10751
10804
  )))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(
10752
- DescriptionDisplay2,
10805
+ DescriptionDisplay,
10753
10806
  {
10754
10807
  description,
10755
10808
  savedSections: existingSections,
@@ -10795,7 +10848,7 @@ function RelationshipDetailsPanel({
10795
10848
  /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }),
10796
10849
  " Adicionar"
10797
10850
  )), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(
10798
- CustomPropertyDisplay2,
10851
+ CustomPropertyDisplay,
10799
10852
  {
10800
10853
  key: prop.id,
10801
10854
  prop,
@@ -10829,7 +10882,7 @@ function RelationshipDetailsPanel({
10829
10882
  isSaving ? "Salvando..." : "Salvar"
10830
10883
  )))
10831
10884
  ), isDescriptionModalOpen && /* @__PURE__ */ React21.createElement(
10832
- DescriptionEditModal2,
10885
+ DescriptionEditModal,
10833
10886
  {
10834
10887
  isOpen: isDescriptionModalOpen,
10835
10888
  title: "Editar Descri\xE7\xE3o da Rela\xE7\xE3o",
@@ -11294,7 +11347,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
11294
11347
  },
11295
11348
  /* @__PURE__ */ React25.createElement(FiBookOpen6, { size: 14 })
11296
11349
  )), /* @__PURE__ */ React25.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React25.createElement(
11297
- DescriptionDisplay2,
11350
+ DescriptionDisplay,
11298
11351
  {
11299
11352
  description,
11300
11353
  savedSections,
@@ -11303,7 +11356,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
11303
11356
  onImageClick: handleImageClickFromText
11304
11357
  }
11305
11358
  ))), customProps.length > 0 && /* @__PURE__ */ React25.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React25.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ React25.createElement(
11306
- CustomPropertyDisplay2,
11359
+ CustomPropertyDisplay,
11307
11360
  {
11308
11361
  key: prop.id,
11309
11362
  prop,