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

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 +68 -67
  2. package/dist/index.mjs +152 -151
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3676,7 +3676,7 @@ function createTimelineEntry(actorId, description, type = "comment", extras = {}
3676
3676
  // src/components/CustomPropertyDisplay.jsx
3677
3677
  var import_react4 = __toESM(require("react"));
3678
3678
  var import_fi2 = require("react-icons/fi");
3679
- function CustomPropertyDisplay2({
3679
+ function CustomPropertyDisplay({
3680
3680
  prop,
3681
3681
  onUpdate,
3682
3682
  onRemove,
@@ -4447,7 +4447,7 @@ var normalizeText = (text) => {
4447
4447
  if (!text) return "";
4448
4448
  return text.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
4449
4449
  };
4450
- function DescriptionEditModal2({
4450
+ function DescriptionEditModal({
4451
4451
  isOpen,
4452
4452
  title,
4453
4453
  initialValue,
@@ -5131,7 +5131,7 @@ var formatLineContent2 = (line, availableNodes, onMentionClick, activeMentionInd
5131
5131
  }
5132
5132
  return /* @__PURE__ */ import_react7.default.createElement("span", { className: "break-words" }, processContent(line));
5133
5133
  };
5134
- function DescriptionDisplay2({
5134
+ function DescriptionDisplay({
5135
5135
  description,
5136
5136
  savedSections,
5137
5137
  availableNodes = [],
@@ -5672,7 +5672,7 @@ function DescriptionReadModePanel({
5672
5672
  targetRenderNodeId
5673
5673
  }
5674
5674
  ))) : showProperties ? /* @__PURE__ */ import_react8.default.createElement("div", { className: "space-y-4 animate-in fade-in slide-in-from-bottom-2 duration-300" }, customProperties.map((prop) => /* @__PURE__ */ import_react8.default.createElement(
5675
- CustomPropertyDisplay2,
5675
+ CustomPropertyDisplay,
5676
5676
  {
5677
5677
  key: prop.id,
5678
5678
  prop,
@@ -5684,7 +5684,7 @@ function DescriptionReadModePanel({
5684
5684
  onOpenImageViewer: null
5685
5685
  }
5686
5686
  ))) : /* @__PURE__ */ import_react8.default.createElement(
5687
- DescriptionDisplay2,
5687
+ DescriptionDisplay,
5688
5688
  {
5689
5689
  description,
5690
5690
  savedSections,
@@ -5833,7 +5833,7 @@ function AncestryRelationshipPanel({
5833
5833
  onSaveDescription: handleSaveDescriptionInline
5834
5834
  }
5835
5835
  ) : /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("div", { className: "h-[2px] bg-gradient-to-r from-cyan-400/0 via-cyan-400/70 to-cyan-400/0" }), /* @__PURE__ */ import_react9.default.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o de Ancestralidade")), /* @__PURE__ */ import_react9.default.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Editar Rela\xE7\xE3o")), /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.createElement("div", { className: "px-6 pb-4 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react9.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o da Rela\xE7\xE3o"), /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.createElement(
5836
- DescriptionDisplay2,
5836
+ DescriptionDisplay,
5837
5837
  {
5838
5838
  description,
5839
5839
  savedSections: existingSections,
@@ -5870,7 +5870,7 @@ function AncestryRelationshipPanel({
5870
5870
  },
5871
5871
  "Adicionar descri\xE7\xE3o..."
5872
5872
  )), /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react9.default.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.createElement(import_fi7.FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex flex-col gap-3 p-3 rounded-lg bg-black/20 border border-white/5" }, customProps.length === 0 && /* @__PURE__ */ import_react9.default.createElement("p", { className: "text-center text-sm text-slate-400 py-4" }, "Nenhuma propriedade adicional."), customProps.map((prop, idx) => /* @__PURE__ */ import_react9.default.createElement(
5873
- CustomPropertyDisplay2,
5873
+ CustomPropertyDisplay,
5874
5874
  {
5875
5875
  key: prop.id,
5876
5876
  prop,
@@ -5883,7 +5883,7 @@ function AncestryRelationshipPanel({
5883
5883
  )), /* @__PURE__ */ import_react9.default.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ import_react9.default.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__ */ import_react9.default.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__ */ import_react9.default.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")))
5884
5884
  )
5885
5885
  ), isDescriptionModalOpen && /* @__PURE__ */ import_react9.default.createElement(
5886
- DescriptionEditModal2,
5886
+ DescriptionEditModal,
5887
5887
  {
5888
5888
  isOpen: isDescriptionModalOpen,
5889
5889
  title: "Editar Descri\xE7\xE3o da Rela\xE7\xE3o",
@@ -7356,7 +7356,7 @@ function CreateAncestryPanel({
7356
7356
  /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-4 h-4 border border-slate-500 rounded flex items-center justify-center" }),
7357
7357
  "Usar Ancestralidade Existente como Branch"
7358
7358
  ))), isContextLinked ? /* @__PURE__ */ import_react11.default.createElement("div", { className: "text-center py-8 text-slate-500 text-sm border-t border-white/5" }, /* @__PURE__ */ import_react11.default.createElement("p", null, "O conte\xFAdo desta ramifica\xE7\xE3o \xE9 provido por outra ancestralidade."), /* @__PURE__ */ import_react11.default.createElement("p", { className: "mt-1 text-xs" }, "Para editar, navegue at\xE9 a ancestralidade original ou desvincule.")) : /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement("div", { className: "mb-4 space-y-1.5 relative" }, /* @__PURE__ */ import_react11.default.createElement("label", { className: "text-xs text-slate-400 font-medium ml-1" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react11.default.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__ */ import_react11.default.createElement(
7359
- DescriptionDisplay2,
7359
+ DescriptionDisplay,
7360
7360
  {
7361
7361
  key: branchStack.length > 0 ? branchStack[branchStack.length - 1].branchId : currentAncestryId || "root",
7362
7362
  description,
@@ -7435,7 +7435,7 @@ function CreateAncestryPanel({
7435
7435
  /* @__PURE__ */ import_react11.default.createElement(import_fi9.FiPlus, { size: 14 }),
7436
7436
  " Adicionar"
7437
7437
  )), /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react11.default.createElement(
7438
- CustomPropertyDisplay2,
7438
+ CustomPropertyDisplay,
7439
7439
  {
7440
7440
  key: prop.id,
7441
7441
  prop,
@@ -7575,7 +7575,7 @@ function CreateAncestryPanel({
7575
7575
  availableNodes
7576
7576
  }
7577
7577
  ), isDescriptionModalOpen && /* @__PURE__ */ import_react11.default.createElement(
7578
- DescriptionEditModal2,
7578
+ DescriptionEditModal,
7579
7579
  {
7580
7580
  isOpen: isDescriptionModalOpen,
7581
7581
  title: branchStack.length > 0 ? "Editar Descri\xE7\xE3o da Ramifica\xE7\xE3o" : "Editar Descri\xE7\xE3o da Ancestralidade",
@@ -8137,7 +8137,7 @@ function InSceneCreationForm({
8137
8137
  },
8138
8138
  ds.name
8139
8139
  )))), /* @__PURE__ */ import_react14.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react14.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react14.default.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__ */ import_react14.default.createElement(
8140
- DescriptionDisplay2,
8140
+ DescriptionDisplay,
8141
8141
  {
8142
8142
  description,
8143
8143
  savedSections: [],
@@ -8243,7 +8243,7 @@ function InSceneCreationForm({
8243
8243
  /* @__PURE__ */ import_react14.default.createElement(import_fi12.FiPlus, { size: 14 }),
8244
8244
  " Adicionar"
8245
8245
  )), /* @__PURE__ */ import_react14.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ import_react14.default.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__ */ import_react14.default.createElement(
8278
- DescriptionEditModal2,
8278
+ DescriptionEditModal,
8279
8279
  {
8280
8280
  isOpen: isDescriptionModalOpen,
8281
8281
  title: "Editar Descri\xE7\xE3o do Node",
@@ -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__ */ import_react15.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react15.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react15.default.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__ */ import_react15.default.createElement(
8467
- DescriptionDisplay2,
8467
+ DescriptionDisplay,
8468
8468
  {
8469
8469
  description,
8470
8470
  savedSections: [],
@@ -8558,7 +8558,7 @@ function InSceneVersionForm({
8558
8558
  /* @__PURE__ */ import_react15.default.createElement(import_fi13.FiPlus, { size: 14 }),
8559
8559
  " Adicionar"
8560
8560
  )), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ import_react15.default.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__ */ import_react15.default.createElement(
8593
- DescriptionEditModal2,
8593
+ DescriptionEditModal,
8594
8594
  {
8595
8595
  isOpen: isDescriptionModalOpen,
8596
8596
  title: "Editar Descri\xE7\xE3o da Vers\xE3o",
@@ -9059,7 +9059,7 @@ function InSceneQuestForm({
9059
9059
  viewMembers
9060
9060
  }
9061
9061
  )), /* @__PURE__ */ import_react17.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react17.default.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react17.default.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__ */ import_react17.default.createElement(
9062
- DescriptionDisplay2,
9062
+ DescriptionDisplay,
9063
9063
  {
9064
9064
  description,
9065
9065
  savedSections: [],
@@ -9093,7 +9093,7 @@ function InSceneQuestForm({
9093
9093
  /* @__PURE__ */ import_react17.default.createElement(import_fi15.FiPlus, { size: 14 }),
9094
9094
  " Adicionar"
9095
9095
  )), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ import_react17.default.createElement(
9096
- CustomPropertyDisplay2,
9096
+ CustomPropertyDisplay,
9097
9097
  {
9098
9098
  key: prop.id,
9099
9099
  prop,
@@ -9176,7 +9176,7 @@ function InSceneQuestForm({
9176
9176
  "Salvar Quest"
9177
9177
  )))
9178
9178
  ), isDescriptionModalOpen && /* @__PURE__ */ import_react17.default.createElement(
9179
- DescriptionEditModal2,
9179
+ DescriptionEditModal,
9180
9180
  {
9181
9181
  isOpen: isDescriptionModalOpen,
9182
9182
  title: "Editar Descri\xE7\xE3o da Quest",
@@ -9580,7 +9580,7 @@ function NodeDetailsPanel({
9580
9580
  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"}`
9581
9581
  }
9582
9582
  )), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react18.default.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__ */ import_react18.default.createElement(
9583
- DescriptionDisplay2,
9583
+ DescriptionDisplay,
9584
9584
  {
9585
9585
  description,
9586
9586
  savedSections: existingSections,
@@ -9658,7 +9658,7 @@ function NodeDetailsPanel({
9658
9658
  title: `Intensidade do brilho: ${intensity}`
9659
9659
  }
9660
9660
  ), /* @__PURE__ */ import_react18.default.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ import_react18.default.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__ */ import_react18.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react18.default.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ import_react18.default.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__ */ import_react18.default.createElement(import_fi16.FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react18.default.createElement(
9661
- CustomPropertyDisplay2,
9661
+ CustomPropertyDisplay,
9662
9662
  {
9663
9663
  key: prop.id,
9664
9664
  prop,
@@ -9685,7 +9685,7 @@ function NodeDetailsPanel({
9685
9685
  isSaving ? "Salvando..." : "Salvar"
9686
9686
  )))
9687
9687
  ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ import_react18.default.createElement(
9688
- DescriptionEditModal2,
9688
+ DescriptionEditModal,
9689
9689
  {
9690
9690
  isOpen: isDescriptionModalOpen,
9691
9691
  title: "Editar Descri\xE7\xE3o do Node",
@@ -9706,6 +9706,7 @@ function NodeDetailsPanel({
9706
9706
 
9707
9707
  // src/components/QuestDetailsPanel.jsx
9708
9708
  var import_react20 = __toESM(require("react"));
9709
+ var import_fi18 = require("react-icons/fi");
9709
9710
 
9710
9711
  // src/components/QuestTimeline.jsx
9711
9712
  var import_react19 = __toESM(require("react"));
@@ -10148,7 +10149,7 @@ function QuestDetailsPanel({
10148
10149
  onImageClick: handleImageClickFromText,
10149
10150
  onSaveDescription: handleSaveDescriptionInline
10150
10151
  }
10151
- ) : /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ import_react20.default.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ import_react20.default.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ import_react20.default.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(FiCheck, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(FiLink, { size: 12 }))), /* @__PURE__ */ import_react20.default.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ import_react20.default.createElement(
10152
+ ) : /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ import_react20.default.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ import_react20.default.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiCheck, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiLink, { size: 12 }))), /* @__PURE__ */ import_react20.default.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ import_react20.default.createElement(
10152
10153
  "input",
10153
10154
  {
10154
10155
  type: "text",
@@ -10166,7 +10167,7 @@ function QuestDetailsPanel({
10166
10167
  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"}`
10167
10168
  },
10168
10169
  /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10169
- canEdit && /* @__PURE__ */ import_react20.default.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
10170
+ canEdit && /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
10170
10171
  ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(
10171
10172
  "li",
10172
10173
  {
@@ -10186,12 +10187,12 @@ function QuestDetailsPanel({
10186
10187
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
10187
10188
  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"
10188
10189
  },
10189
- /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
10190
- /* @__PURE__ */ import_react20.default.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
10190
+ /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
10191
+ /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
10191
10192
  ), isAssigneeDropdownOpen && /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
10192
10193
  setIsAssigneeDropdownOpen(false);
10193
10194
  setAssigneeSearchQuery("");
10194
- } }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react20.default.createElement(
10195
+ } }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react20.default.createElement(
10195
10196
  "input",
10196
10197
  {
10197
10198
  type: "text",
@@ -10259,7 +10260,7 @@ function QuestDetailsPanel({
10259
10260
  )), viewMembers.filter((member) => {
10260
10261
  const search = assigneeSearchQuery.toLowerCase();
10261
10262
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10262
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react20.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ import_react20.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react20.default.createElement(
10263
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react20.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ import_react20.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react20.default.createElement(
10263
10264
  QuestReviewStackEditor,
10264
10265
  {
10265
10266
  reviewStack,
@@ -10277,12 +10278,12 @@ function QuestDetailsPanel({
10277
10278
  onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
10278
10279
  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"
10279
10280
  },
10280
- /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(FiUser, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ import_react20.default.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...")),
10281
- /* @__PURE__ */ import_react20.default.createElement(FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
10281
+ /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiUser, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ import_react20.default.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...")),
10282
+ /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
10282
10283
  ), isReturnDropdownOpen && /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
10283
10284
  setIsReturnDropdownOpen(false);
10284
10285
  setReturnSearchQuery("");
10285
- } }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(FiSearch, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ import_react20.default.createElement(
10286
+ } }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiSearch, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ import_react20.default.createElement(
10286
10287
  "input",
10287
10288
  {
10288
10289
  type: "text",
@@ -10321,14 +10322,14 @@ function QuestDetailsPanel({
10321
10322
  },
10322
10323
  /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
10323
10324
  "Retornar para Opera\xE7\xE3o"
10324
- ))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(FiBookOpen, { size: 14 })), canEdit && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(FiEdit2, { size: 14 }))), canEdit && !description && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react20.default.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ import_react20.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ import_react20.default.createElement(
10325
+ ))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiBookOpen, { size: 14 })), canEdit && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiEdit2, { size: 14 }))), canEdit && !description && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ import_react20.default.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiPlus, { size: 14 }), " Adicionar")), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ import_react20.default.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ import_react20.default.createElement(
10325
10326
  "button",
10326
10327
  {
10327
10328
  type: "button",
10328
10329
  onClick: () => setIsNoteFormOpen(!isNoteFormOpen),
10329
10330
  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"
10330
10331
  },
10331
- isNoteFormOpen ? /* @__PURE__ */ import_react20.default.createElement(FiX, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(FiPlus, { size: 12 }),
10332
+ isNoteFormOpen ? /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiX, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiPlus, { size: 12 }),
10332
10333
  isNoteFormOpen ? "Cancelar" : "Nova Nota"
10333
10334
  )), isNoteFormOpen && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement(
10334
10335
  "textarea",
@@ -10356,8 +10357,8 @@ function QuestDetailsPanel({
10356
10357
  }
10357
10358
  )), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
10358
10359
  const isSelected = size === s;
10359
- return /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(FiCheck, { size: 12, className: "text-white" })), /* @__PURE__ */ import_react20.default.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
10360
- }))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ import_react20.default.createElement(FiX, { size: 12 })))), canEdit && /* @__PURE__ */ import_react20.default.createElement(
10360
+ return /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiCheck, { size: 12, className: "text-white" })), /* @__PURE__ */ import_react20.default.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
10361
+ }))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react20.default.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiX, { size: 12 })))), canEdit && /* @__PURE__ */ import_react20.default.createElement(
10361
10362
  "input",
10362
10363
  {
10363
10364
  type: "text",
@@ -10381,7 +10382,7 @@ function QuestDetailsPanel({
10381
10382
  ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
10382
10383
  e.preventDefault();
10383
10384
  handleAddType(suggestedType);
10384
- } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(FiLoader, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
10385
+ } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.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__ */ import_react20.default.createElement(import_fi18.FiLoader, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
10385
10386
  ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ import_react20.default.createElement(
10386
10387
  DescriptionEditModal,
10387
10388
  {
@@ -10479,7 +10480,7 @@ function MultiNodeContextMenu({
10479
10480
 
10480
10481
  // src/components/RelationshipDetailsPanel.jsx
10481
10482
  var import_react22 = __toESM(require("react"));
10482
- var import_fi18 = require("react-icons/fi");
10483
+ var import_fi19 = require("react-icons/fi");
10483
10484
  function RelationshipDetailsPanel({
10484
10485
  link,
10485
10486
  onClose,
@@ -10720,7 +10721,7 @@ function RelationshipDetailsPanel({
10720
10721
  `
10721
10722
  }
10722
10723
  )))), /* @__PURE__ */ import_react22.default.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ import_react22.default.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ import_react22.default.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__ */ import_react22.default.createElement(
10723
- DescriptionDisplay2,
10724
+ DescriptionDisplay,
10724
10725
  {
10725
10726
  description,
10726
10727
  savedSections: existingSections,
@@ -10739,7 +10740,7 @@ function RelationshipDetailsPanel({
10739
10740
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
10740
10741
  title: "Modo de Leitura"
10741
10742
  },
10742
- /* @__PURE__ */ import_react22.default.createElement(import_fi18.FiBookOpen, { size: 14 })
10743
+ /* @__PURE__ */ import_react22.default.createElement(import_fi19.FiBookOpen, { size: 14 })
10743
10744
  ), canEdit && /* @__PURE__ */ import_react22.default.createElement(
10744
10745
  "button",
10745
10746
  {
@@ -10748,7 +10749,7 @@ function RelationshipDetailsPanel({
10748
10749
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
10749
10750
  title: "Editar descri\xE7\xE3o"
10750
10751
  },
10751
- /* @__PURE__ */ import_react22.default.createElement(import_fi18.FiEdit2, { size: 14 })
10752
+ /* @__PURE__ */ import_react22.default.createElement(import_fi19.FiEdit2, { size: 14 })
10752
10753
  )), !description && canEdit && /* @__PURE__ */ import_react22.default.createElement(
10753
10754
  "div",
10754
10755
  {
@@ -10763,10 +10764,10 @@ function RelationshipDetailsPanel({
10763
10764
  onClick: handleAddProp,
10764
10765
  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"
10765
10766
  },
10766
- /* @__PURE__ */ import_react22.default.createElement(import_fi18.FiPlus, { size: 14 }),
10767
+ /* @__PURE__ */ import_react22.default.createElement(import_fi19.FiPlus, { size: 14 }),
10767
10768
  " Adicionar"
10768
10769
  )), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react22.default.createElement(
10769
- CustomPropertyDisplay2,
10770
+ CustomPropertyDisplay,
10770
10771
  {
10771
10772
  key: prop.id,
10772
10773
  prop,
@@ -10796,11 +10797,11 @@ function RelationshipDetailsPanel({
10796
10797
  ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-teal-600 to-teal-400 hover:from-teal-500 hover:to-teal-300 text-white"}
10797
10798
  `
10798
10799
  },
10799
- isSaving && /* @__PURE__ */ import_react22.default.createElement(import_fi18.FiLoader, { className: "animate-spin" }),
10800
+ isSaving && /* @__PURE__ */ import_react22.default.createElement(import_fi19.FiLoader, { className: "animate-spin" }),
10800
10801
  isSaving ? "Salvando..." : "Salvar"
10801
10802
  )))
10802
10803
  ), isDescriptionModalOpen && /* @__PURE__ */ import_react22.default.createElement(
10803
- DescriptionEditModal2,
10804
+ DescriptionEditModal,
10804
10805
  {
10805
10806
  isOpen: isDescriptionModalOpen,
10806
10807
  title: "Editar Descri\xE7\xE3o da Rela\xE7\xE3o",
@@ -11213,7 +11214,7 @@ function ImportParentFileModal({
11213
11214
 
11214
11215
  // src/components/AncestryLinkDetailsPanel.jsx
11215
11216
  var import_react26 = __toESM(require("react"));
11216
- var import_fi19 = require("react-icons/fi");
11217
+ var import_fi20 = require("react-icons/fi");
11217
11218
  function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenReference, onMentionClick, onUploadFile }) {
11218
11219
  var _a, _b, _c, _d;
11219
11220
  const relationshipData = data.relationship || {};
@@ -11263,9 +11264,9 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
11263
11264
  className: "p-1 text-slate-400 hover:text-white transition-colors",
11264
11265
  title: "Modo de Leitura"
11265
11266
  },
11266
- /* @__PURE__ */ import_react26.default.createElement(import_fi19.FiBookOpen, { size: 14 })
11267
+ /* @__PURE__ */ import_react26.default.createElement(import_fi20.FiBookOpen, { size: 14 })
11267
11268
  )), /* @__PURE__ */ import_react26.default.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ import_react26.default.createElement(
11268
- DescriptionDisplay2,
11269
+ DescriptionDisplay,
11269
11270
  {
11270
11271
  description,
11271
11272
  savedSections,
@@ -11274,7 +11275,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
11274
11275
  onImageClick: handleImageClickFromText
11275
11276
  }
11276
11277
  ))), customProps.length > 0 && /* @__PURE__ */ import_react26.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react26.default.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ import_react26.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ import_react26.default.createElement(
11277
- CustomPropertyDisplay2,
11278
+ CustomPropertyDisplay,
11278
11279
  {
11279
11280
  key: prop.id,
11280
11281
  prop,
@@ -11289,7 +11290,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
11289
11290
 
11290
11291
  // src/components/AncestryBoard.jsx
11291
11292
  var import_react27 = __toESM(require("react"));
11292
- var import_fi20 = require("react-icons/fi");
11293
+ var import_fi21 = require("react-icons/fi");
11293
11294
  var GroupItem = ({
11294
11295
  group,
11295
11296
  index,
@@ -11366,9 +11367,9 @@ var GroupItem = ({
11366
11367
  className: "text-indigo-400 hover:text-white hover:bg-indigo-500 p-1 rounded-full transition-colors",
11367
11368
  title: "Renderizar no cen\xE1rio"
11368
11369
  },
11369
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiPlay, { size: 10, className: "ml-0.5 fill-current" })
11370
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlay, { size: 10, className: "ml-0.5 fill-current" })
11370
11371
  )
11371
- ) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "p-1 text-red-500 cursor-not-allowed" }, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiAlertTriangle, { size: 10 })),
11372
+ ) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "p-1 text-red-500 cursor-not-allowed" }, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiAlertTriangle, { size: 10 })),
11372
11373
  /* @__PURE__ */ import_react27.default.createElement(
11373
11374
  "span",
11374
11375
  {
@@ -11388,7 +11389,7 @@ var GroupItem = ({
11388
11389
  className: `${isValid ? "text-slate-500 hover:text-red-400" : "text-red-400 hover:text-red-200"} p-0.5 rounded transition-colors`,
11389
11390
  title: "Remover men\xE7\xE3o"
11390
11391
  },
11391
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiX, { size: 12 })
11392
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiX, { size: 12 })
11392
11393
  ))
11393
11394
  );
11394
11395
  })),
@@ -11402,7 +11403,7 @@ var GroupItem = ({
11402
11403
  `,
11403
11404
  title: "Adicionar Ancestralidade a este grupo"
11404
11405
  },
11405
- isPickingForThisGroup ? /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiCheckCircle, { size: 12 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiSearch, { size: 12 }),
11406
+ isPickingForThisGroup ? /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiCheckCircle, { size: 12 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiSearch, { size: 12 }),
11406
11407
  isPickingForThisGroup ? "Selecionando..." : "Adicionar"
11407
11408
  ), /* @__PURE__ */ import_react27.default.createElement(
11408
11409
  "button",
@@ -11411,7 +11412,7 @@ var GroupItem = ({
11411
11412
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
11412
11413
  title: "Criar Subgrupo"
11413
11414
  },
11414
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiPlus, { size: 14 })
11415
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 14 })
11415
11416
  )), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ import_react27.default.createElement(
11416
11417
  "button",
11417
11418
  {
@@ -11420,7 +11421,7 @@ var GroupItem = ({
11420
11421
  className: `p-1.5 rounded transition-colors ${!canIndent ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`,
11421
11422
  title: "Aninhar no grupo acima"
11422
11423
  },
11423
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiArrowRight, { size: 14 })
11424
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiArrowRight, { size: 14 })
11424
11425
  ), /* @__PURE__ */ import_react27.default.createElement(
11425
11426
  "button",
11426
11427
  {
@@ -11428,7 +11429,7 @@ var GroupItem = ({
11428
11429
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
11429
11430
  title: "Desaninhar"
11430
11431
  },
11431
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiArrowLeft, { size: 14 })
11432
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiArrowLeft, { size: 14 })
11432
11433
  ), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ import_react27.default.createElement(
11433
11434
  "button",
11434
11435
  {
@@ -11436,7 +11437,7 @@ var GroupItem = ({
11436
11437
  className: "p-1.5 text-slate-600 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors",
11437
11438
  title: "Remover Grupo"
11438
11439
  },
11439
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiTrash2, { size: 14 })
11440
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiTrash2, { size: 14 })
11440
11441
  )))
11441
11442
  ), group.children && group.children.length > 0 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "ml-2" }, group.children.map((childGroup, idx) => /* @__PURE__ */ import_react27.default.createElement(
11442
11443
  GroupItem,
@@ -11705,19 +11706,19 @@ function AncestryBoard({
11705
11706
  className: "bg-slate-950 border border-white/10 rounded-xl w-[98vw] h-[97vh] flex flex-col shadow-2xl overflow-hidden animate-in fade-in zoom-in-95 duration-200",
11706
11707
  onClick: (e) => e.stopPropagation()
11707
11708
  },
11708
- /* @__PURE__ */ import_react27.default.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiLayers, { className: "text-indigo-400" }), "Ancestry Board"), saveStatus !== "idle" && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-slate-900/50 border border-white/5" }, saveStatus === "saving" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(
11709
- import_fi20.FiLoader,
11709
+ /* @__PURE__ */ import_react27.default.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiLayers, { className: "text-indigo-400" }), "Ancestry Board"), saveStatus !== "idle" && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-slate-900/50 border border-white/5" }, saveStatus === "saving" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(
11710
+ import_fi21.FiLoader,
11710
11711
  {
11711
11712
  className: "animate-spin text-indigo-400",
11712
11713
  size: 12
11713
11714
  }
11714
- ), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-3" }, pickingGroupId && /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-xs text-indigo-300 font-medium animate-pulse hidden sm:inline-block mr-2" }, "Selecione na lateral..."), canEdit && /* @__PURE__ */ import_react27.default.createElement(
11715
+ ), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-3" }, pickingGroupId && /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-xs text-indigo-300 font-medium animate-pulse hidden sm:inline-block mr-2" }, "Selecione na lateral..."), canEdit && /* @__PURE__ */ import_react27.default.createElement(
11715
11716
  "button",
11716
11717
  {
11717
11718
  onClick: handleAddRootGroup,
11718
11719
  className: "\n flex items-center gap-2 px-3 py-1.5 \n bg-white/5 hover:bg-white/10 \n border border-white/10 hover:border-white/20\n backdrop-blur-sm\n text-slate-200 hover:text-white\n rounded-md transition-all duration-200\n text-xs font-medium shadow-sm\n "
11719
11720
  },
11720
- /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiPlus, { size: 14, className: "text-indigo-400" }),
11721
+ /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 14, className: "text-indigo-400" }),
11721
11722
  /* @__PURE__ */ import_react27.default.createElement("span", { className: "hidden sm:inline" }, "Novo Grupo")
11722
11723
  ), /* @__PURE__ */ import_react27.default.createElement(
11723
11724
  "button",
@@ -11737,7 +11738,7 @@ function AncestryBoard({
11737
11738
  `
11738
11739
  },
11739
11740
  /* @__PURE__ */ import_react27.default.createElement("div", { className: "p-3 border-b border-white/5 bg-slate-900/50" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative group" }, /* @__PURE__ */ import_react27.default.createElement(
11740
- import_fi20.FiSearch,
11741
+ import_fi21.FiSearch,
11741
11742
  {
11742
11743
  className: `absolute left-3 top-1/2 -translate-y-1/2 transition-colors ${pickingGroupId ? "text-indigo-400" : "text-slate-500 group-focus-within:text-indigo-400"}`
11743
11744
  }
@@ -11778,9 +11779,9 @@ function AncestryBoard({
11778
11779
  ${isPicking ? "bg-indigo-500 text-white border-indigo-400" : "bg-slate-800 text-indigo-400 border-white/5 group-hover:bg-indigo-500 group-hover:text-white"}
11779
11780
  `
11780
11781
  },
11781
- isPicking ? /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiPlus, { size: 16 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiLayers, { size: 14 })
11782
+ isPicking ? /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 16 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiLayers, { size: 14 })
11782
11783
  ),
11783
- /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 min-w-0 pb-2" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react27.default.createElement("h4", { className: "text-sm font-medium text-slate-200 group-hover:text-white truncate transition-colors" }, anc.name || "Sem Nome"), anc.is_private && /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[9px] px-1 py-0.5 rounded bg-amber-500/10 text-amber-300 border border-amber-500/20" }, "Priv")), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1.5 mt-0.5 text-[11px] text-slate-500 group-hover:text-indigo-200/70 transition-colors" }, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiCornerUpRight, { size: 10 }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "truncate max-w-[120px]" }, parentNodeName)), anc.description && /* @__PURE__ */ import_react27.default.createElement("p", { className: "mt-1.5 text-[11px] text-slate-400 line-clamp-2 leading-relaxed opacity-80" }, anc.description)),
11784
+ /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 min-w-0 pb-2" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react27.default.createElement("h4", { className: "text-sm font-medium text-slate-200 group-hover:text-white truncate transition-colors" }, anc.name || "Sem Nome"), anc.is_private && /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[9px] px-1 py-0.5 rounded bg-amber-500/10 text-amber-300 border border-amber-500/20" }, "Priv")), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1.5 mt-0.5 text-[11px] text-slate-500 group-hover:text-indigo-200/70 transition-colors" }, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiCornerUpRight, { size: 10 }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "truncate max-w-[120px]" }, parentNodeName)), anc.description && /* @__PURE__ */ import_react27.default.createElement("p", { className: "mt-1.5 text-[11px] text-slate-400 line-clamp-2 leading-relaxed opacity-80" }, anc.description)),
11784
11785
  !isPicking && /* @__PURE__ */ import_react27.default.createElement(
11785
11786
  "button",
11786
11787
  {
@@ -11791,11 +11792,11 @@ function AncestryBoard({
11791
11792
  className: "absolute right-2 bottom-2 opacity-0 group-hover:opacity-100 transition-all duration-300 transform translate-y-2 group-hover:translate-y-0 z-10",
11792
11793
  title: "Renderizar Ancestralidade"
11793
11794
  },
11794
- /* @__PURE__ */ import_react27.default.createElement("div", { className: "bg-indigo-500 text-white p-2 rounded-full shadow-lg hover:bg-indigo-400 hover:scale-110 transition-all" }, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiPlay, { size: 14, className: "ml-0.5" }))
11795
+ /* @__PURE__ */ import_react27.default.createElement("div", { className: "bg-indigo-500 text-white p-2 rounded-full shadow-lg hover:bg-indigo-400 hover:scale-110 transition-all" }, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlay, { size: 14, className: "ml-0.5" }))
11795
11796
  )
11796
11797
  );
11797
11798
  }))
11798
- ), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col flex-1 bg-slate-950/30" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ import_react27.default.createElement(import_fi20.FiLayers, { size: 24, className: "opacity-20" }), /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ import_react27.default.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ import_react27.default.createElement(
11799
+ ), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col flex-1 bg-slate-950/30" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiLayers, { size: 24, className: "opacity-20" }), /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ import_react27.default.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ import_react27.default.createElement(
11799
11800
  GroupItem,
11800
11801
  {
11801
11802
  key: group.id,