@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.
- package/dist/index.js +68 -67
- package/dist/index.mjs +152 -151
- 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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
11709
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|