@lv-x-software-house/x_view 1.2.5-dev.30 → 1.2.5-dev.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +124 -71
- package/dist/index.mjs +210 -157
- 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"));
|
|
@@ -9742,11 +9743,11 @@ function QuestTimeline({
|
|
|
9742
9743
|
if (timeline.length === 0) {
|
|
9743
9744
|
return /* @__PURE__ */ import_react19.default.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ import_react19.default.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
|
|
9744
9745
|
}
|
|
9745
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react19.default.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "relative pl-
|
|
9746
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react19.default.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
|
|
9746
9747
|
const config = EVENT_ICONS[event.type] || EVENT_ICONS.default;
|
|
9747
9748
|
const Icon = config.icon;
|
|
9748
9749
|
const actorName = getMemberName(event.actorId);
|
|
9749
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", { key: index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ import_react19.default.createElement("div", { className: `absolute -left-[
|
|
9750
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", { key: index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ import_react19.default.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ import_react19.default.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ import_react19.default.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), (event.from_status || event.to_status) && /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ import_react19.default.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => /* @__PURE__ */ import_react19.default.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-slate-300 truncate font-mono" }, typeof value === "string" ? value : JSON.stringify(value))))), event.links && event.links.length > 0 && /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ import_react19.default.createElement(
|
|
9750
9751
|
"a",
|
|
9751
9752
|
{
|
|
9752
9753
|
key: lIdx,
|
|
@@ -9829,6 +9830,8 @@ function QuestDetailsPanel({
|
|
|
9829
9830
|
const [isLinkCopied, setIsLinkCopied] = (0, import_react20.useState)(false);
|
|
9830
9831
|
const [hasUnsavedChanges, setHasUnsavedChanges] = (0, import_react20.useState)(false);
|
|
9831
9832
|
const [noteText, setNoteText] = (0, import_react20.useState)("");
|
|
9833
|
+
const [noteLinks, setNoteLinks] = (0, import_react20.useState)([]);
|
|
9834
|
+
const [noteImages, setNoteImages] = (0, import_react20.useState)([]);
|
|
9832
9835
|
const [isNoteFormOpen, setIsNoteFormOpen] = (0, import_react20.useState)(false);
|
|
9833
9836
|
const maxPanelW = typeof window !== "undefined" ? window.innerWidth * 0.92 : 1200;
|
|
9834
9837
|
const { width: panelWidth, isResizing, handlePointerDown: handleResize, setWidth } = useResizablePanel({
|
|
@@ -9964,7 +9967,10 @@ function QuestDetailsPanel({
|
|
|
9964
9967
|
if (!noteText.trim() || isSaving) return;
|
|
9965
9968
|
setIsSaving(true);
|
|
9966
9969
|
const actorId = (currentUser == null ? void 0 : currentUser.id) || "unknown";
|
|
9967
|
-
const newEntry = createTimelineEntry(actorId, noteText, "comment"
|
|
9970
|
+
const newEntry = createTimelineEntry(actorId, noteText, "comment", {
|
|
9971
|
+
links: noteLinks,
|
|
9972
|
+
images: noteImages
|
|
9973
|
+
});
|
|
9968
9974
|
const updatedTimeline = [...timeline, newEntry];
|
|
9969
9975
|
try {
|
|
9970
9976
|
const nodeToSave = {
|
|
@@ -9975,6 +9981,8 @@ function QuestDetailsPanel({
|
|
|
9975
9981
|
setTimeline(updatedTimeline);
|
|
9976
9982
|
onDataUpdate(nodeToSave);
|
|
9977
9983
|
setNoteText("");
|
|
9984
|
+
setNoteLinks([]);
|
|
9985
|
+
setNoteImages([]);
|
|
9978
9986
|
setIsNoteFormOpen(false);
|
|
9979
9987
|
} catch (error) {
|
|
9980
9988
|
console.error("Erro ao adicionar nota:", error);
|
|
@@ -9982,6 +9990,24 @@ function QuestDetailsPanel({
|
|
|
9982
9990
|
setIsSaving(false);
|
|
9983
9991
|
}
|
|
9984
9992
|
};
|
|
9993
|
+
const addLinkToNote = () => {
|
|
9994
|
+
setNoteLinks([...noteLinks, { id: v4_default(), name: "", value: "" }]);
|
|
9995
|
+
};
|
|
9996
|
+
const removeLinkFromNote = (id) => {
|
|
9997
|
+
setNoteLinks(noteLinks.filter((l) => l.id !== id));
|
|
9998
|
+
};
|
|
9999
|
+
const updateLinkInNote = (id, field, val) => {
|
|
10000
|
+
setNoteLinks(noteLinks.map((l) => l.id === id ? { ...l, [field]: val } : l));
|
|
10001
|
+
};
|
|
10002
|
+
const addImageToNote = () => {
|
|
10003
|
+
setNoteImages([...noteImages, { id: v4_default(), name: "Image", value: "" }]);
|
|
10004
|
+
};
|
|
10005
|
+
const removeImageFromNote = (id) => {
|
|
10006
|
+
setNoteImages(noteImages.filter((img) => img.id !== id));
|
|
10007
|
+
};
|
|
10008
|
+
const updateImageInNote = (id, val) => {
|
|
10009
|
+
setNoteImages(noteImages.map((img) => img.id === id ? { ...img, value: val } : img));
|
|
10010
|
+
};
|
|
9985
10011
|
const handleStatusChange = (newStatus) => {
|
|
9986
10012
|
setStatus(newStatus);
|
|
9987
10013
|
const newColor = QUEST_STATUS_COLORS3[newStatus];
|
|
@@ -10148,7 +10174,7 @@ function QuestDetailsPanel({
|
|
|
10148
10174
|
onImageClick: handleImageClickFromText,
|
|
10149
10175
|
onSaveDescription: handleSaveDescriptionInline
|
|
10150
10176
|
}
|
|
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(
|
|
10177
|
+
) : /* @__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
10178
|
"input",
|
|
10153
10179
|
{
|
|
10154
10180
|
type: "text",
|
|
@@ -10166,7 +10192,7 @@ function QuestDetailsPanel({
|
|
|
10166
10192
|
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
10193
|
},
|
|
10168
10194
|
/* @__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" : ""}` })
|
|
10195
|
+
canEdit && /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
|
|
10170
10196
|
), 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
10197
|
"li",
|
|
10172
10198
|
{
|
|
@@ -10186,12 +10212,12 @@ function QuestDetailsPanel({
|
|
|
10186
10212
|
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
10187
10213
|
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
10214
|
},
|
|
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" : ""}` })
|
|
10215
|
+
/* @__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")),
|
|
10216
|
+
/* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
10191
10217
|
), 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
10218
|
setIsAssigneeDropdownOpen(false);
|
|
10193
10219
|
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(
|
|
10220
|
+
} }), /* @__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
10221
|
"input",
|
|
10196
10222
|
{
|
|
10197
10223
|
type: "text",
|
|
@@ -10259,7 +10285,7 @@ function QuestDetailsPanel({
|
|
|
10259
10285
|
)), viewMembers.filter((member) => {
|
|
10260
10286
|
const search = assigneeSearchQuery.toLowerCase();
|
|
10261
10287
|
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(
|
|
10288
|
+
}).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
10289
|
QuestReviewStackEditor,
|
|
10264
10290
|
{
|
|
10265
10291
|
reviewStack,
|
|
@@ -10277,12 +10303,12 @@ function QuestDetailsPanel({
|
|
|
10277
10303
|
onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
|
|
10278
10304
|
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
10305
|
},
|
|
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 })
|
|
10306
|
+
/* @__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...")),
|
|
10307
|
+
/* @__PURE__ */ import_react20.default.createElement(import_fi18.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
|
|
10282
10308
|
), 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
10309
|
setIsReturnDropdownOpen(false);
|
|
10284
10310
|
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(
|
|
10311
|
+
} }), /* @__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
10312
|
"input",
|
|
10287
10313
|
{
|
|
10288
10314
|
type: "text",
|
|
@@ -10321,14 +10347,14 @@ function QuestDetailsPanel({
|
|
|
10321
10347
|
},
|
|
10322
10348
|
/* @__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
10349
|
"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(
|
|
10350
|
+
))), /* @__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
10351
|
"button",
|
|
10326
10352
|
{
|
|
10327
10353
|
type: "button",
|
|
10328
10354
|
onClick: () => setIsNoteFormOpen(!isNoteFormOpen),
|
|
10329
10355
|
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
10356
|
},
|
|
10331
|
-
isNoteFormOpen ? /* @__PURE__ */ import_react20.default.createElement(FiX, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(FiPlus, { size: 12 }),
|
|
10357
|
+
isNoteFormOpen ? /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiX, { size: 12 }) : /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiPlus, { size: 12 }),
|
|
10332
10358
|
isNoteFormOpen ? "Cancelar" : "Nova Nota"
|
|
10333
10359
|
)), 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
10360
|
"textarea",
|
|
@@ -10338,7 +10364,34 @@ function QuestDetailsPanel({
|
|
|
10338
10364
|
placeholder: "Escreva uma observa\xE7\xE3o no hist\xF3rico...",
|
|
10339
10365
|
className: "w-full bg-slate-900/50 p-3 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-500/50 min-h-[80px] resize-none"
|
|
10340
10366
|
}
|
|
10341
|
-
), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex justify-
|
|
10367
|
+
), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ import_react20.default.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiPlus, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ import_react20.default.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ import_react20.default.createElement(
|
|
10368
|
+
"input",
|
|
10369
|
+
{
|
|
10370
|
+
type: "text",
|
|
10371
|
+
placeholder: "T\xEDtulo",
|
|
10372
|
+
value: link.name,
|
|
10373
|
+
onChange: (e) => updateLinkInNote(link.id, "name", e.target.value),
|
|
10374
|
+
className: "w-1/3 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
|
|
10375
|
+
}
|
|
10376
|
+
), /* @__PURE__ */ import_react20.default.createElement(
|
|
10377
|
+
"input",
|
|
10378
|
+
{
|
|
10379
|
+
type: "text",
|
|
10380
|
+
placeholder: "URL (https://...)",
|
|
10381
|
+
value: link.value,
|
|
10382
|
+
onChange: (e) => updateLinkInNote(link.id, "value", e.target.value),
|
|
10383
|
+
className: "flex-1 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
|
|
10384
|
+
}
|
|
10385
|
+
), /* @__PURE__ */ import_react20.default.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiX, { size: 12 })))))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ import_react20.default.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiPlus, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ import_react20.default.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ import_react20.default.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ import_react20.default.createElement(FiImage, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ import_react20.default.createElement(
|
|
10386
|
+
"input",
|
|
10387
|
+
{
|
|
10388
|
+
type: "text",
|
|
10389
|
+
placeholder: "URL da Imagem (https://...)",
|
|
10390
|
+
value: img.value,
|
|
10391
|
+
onChange: (e) => updateImageInNote(img.id, e.target.value),
|
|
10392
|
+
className: "flex-1 bg-transparent text-[10px] focus:outline-none"
|
|
10393
|
+
}
|
|
10394
|
+
)), /* @__PURE__ */ import_react20.default.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ import_react20.default.createElement(import_fi18.FiX, { size: 12 })))))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ import_react20.default.createElement(
|
|
10342
10395
|
"button",
|
|
10343
10396
|
{
|
|
10344
10397
|
type: "button",
|
|
@@ -10356,8 +10409,8 @@ function QuestDetailsPanel({
|
|
|
10356
10409
|
}
|
|
10357
10410
|
)), /* @__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
10411
|
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(
|
|
10412
|
+
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));
|
|
10413
|
+
}))), /* @__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
10414
|
"input",
|
|
10362
10415
|
{
|
|
10363
10416
|
type: "text",
|
|
@@ -10381,7 +10434,7 @@ function QuestDetailsPanel({
|
|
|
10381
10434
|
), 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
10435
|
e.preventDefault();
|
|
10383
10436
|
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")))
|
|
10437
|
+
} }, 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
10438
|
), isDescriptionModalOpen && canEdit && /* @__PURE__ */ import_react20.default.createElement(
|
|
10386
10439
|
DescriptionEditModal,
|
|
10387
10440
|
{
|
|
@@ -10479,7 +10532,7 @@ function MultiNodeContextMenu({
|
|
|
10479
10532
|
|
|
10480
10533
|
// src/components/RelationshipDetailsPanel.jsx
|
|
10481
10534
|
var import_react22 = __toESM(require("react"));
|
|
10482
|
-
var
|
|
10535
|
+
var import_fi19 = require("react-icons/fi");
|
|
10483
10536
|
function RelationshipDetailsPanel({
|
|
10484
10537
|
link,
|
|
10485
10538
|
onClose,
|
|
@@ -10720,7 +10773,7 @@ function RelationshipDetailsPanel({
|
|
|
10720
10773
|
`
|
|
10721
10774
|
}
|
|
10722
10775
|
)))), /* @__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
|
-
|
|
10776
|
+
DescriptionDisplay,
|
|
10724
10777
|
{
|
|
10725
10778
|
description,
|
|
10726
10779
|
savedSections: existingSections,
|
|
@@ -10739,7 +10792,7 @@ function RelationshipDetailsPanel({
|
|
|
10739
10792
|
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
|
|
10740
10793
|
title: "Modo de Leitura"
|
|
10741
10794
|
},
|
|
10742
|
-
/* @__PURE__ */ import_react22.default.createElement(
|
|
10795
|
+
/* @__PURE__ */ import_react22.default.createElement(import_fi19.FiBookOpen, { size: 14 })
|
|
10743
10796
|
), canEdit && /* @__PURE__ */ import_react22.default.createElement(
|
|
10744
10797
|
"button",
|
|
10745
10798
|
{
|
|
@@ -10748,7 +10801,7 @@ function RelationshipDetailsPanel({
|
|
|
10748
10801
|
className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
|
|
10749
10802
|
title: "Editar descri\xE7\xE3o"
|
|
10750
10803
|
},
|
|
10751
|
-
/* @__PURE__ */ import_react22.default.createElement(
|
|
10804
|
+
/* @__PURE__ */ import_react22.default.createElement(import_fi19.FiEdit2, { size: 14 })
|
|
10752
10805
|
)), !description && canEdit && /* @__PURE__ */ import_react22.default.createElement(
|
|
10753
10806
|
"div",
|
|
10754
10807
|
{
|
|
@@ -10763,10 +10816,10 @@ function RelationshipDetailsPanel({
|
|
|
10763
10816
|
onClick: handleAddProp,
|
|
10764
10817
|
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
10818
|
},
|
|
10766
|
-
/* @__PURE__ */ import_react22.default.createElement(
|
|
10819
|
+
/* @__PURE__ */ import_react22.default.createElement(import_fi19.FiPlus, { size: 14 }),
|
|
10767
10820
|
" Adicionar"
|
|
10768
10821
|
)), /* @__PURE__ */ import_react22.default.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ import_react22.default.createElement(
|
|
10769
|
-
|
|
10822
|
+
CustomPropertyDisplay,
|
|
10770
10823
|
{
|
|
10771
10824
|
key: prop.id,
|
|
10772
10825
|
prop,
|
|
@@ -10796,11 +10849,11 @@ function RelationshipDetailsPanel({
|
|
|
10796
10849
|
${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
10850
|
`
|
|
10798
10851
|
},
|
|
10799
|
-
isSaving && /* @__PURE__ */ import_react22.default.createElement(
|
|
10852
|
+
isSaving && /* @__PURE__ */ import_react22.default.createElement(import_fi19.FiLoader, { className: "animate-spin" }),
|
|
10800
10853
|
isSaving ? "Salvando..." : "Salvar"
|
|
10801
10854
|
)))
|
|
10802
10855
|
), isDescriptionModalOpen && /* @__PURE__ */ import_react22.default.createElement(
|
|
10803
|
-
|
|
10856
|
+
DescriptionEditModal,
|
|
10804
10857
|
{
|
|
10805
10858
|
isOpen: isDescriptionModalOpen,
|
|
10806
10859
|
title: "Editar Descri\xE7\xE3o da Rela\xE7\xE3o",
|
|
@@ -11213,7 +11266,7 @@ function ImportParentFileModal({
|
|
|
11213
11266
|
|
|
11214
11267
|
// src/components/AncestryLinkDetailsPanel.jsx
|
|
11215
11268
|
var import_react26 = __toESM(require("react"));
|
|
11216
|
-
var
|
|
11269
|
+
var import_fi20 = require("react-icons/fi");
|
|
11217
11270
|
function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenReference, onMentionClick, onUploadFile }) {
|
|
11218
11271
|
var _a, _b, _c, _d;
|
|
11219
11272
|
const relationshipData = data.relationship || {};
|
|
@@ -11263,9 +11316,9 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
|
|
|
11263
11316
|
className: "p-1 text-slate-400 hover:text-white transition-colors",
|
|
11264
11317
|
title: "Modo de Leitura"
|
|
11265
11318
|
},
|
|
11266
|
-
/* @__PURE__ */ import_react26.default.createElement(
|
|
11319
|
+
/* @__PURE__ */ import_react26.default.createElement(import_fi20.FiBookOpen, { size: 14 })
|
|
11267
11320
|
)), /* @__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
|
-
|
|
11321
|
+
DescriptionDisplay,
|
|
11269
11322
|
{
|
|
11270
11323
|
description,
|
|
11271
11324
|
savedSections,
|
|
@@ -11274,7 +11327,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
|
|
|
11274
11327
|
onImageClick: handleImageClickFromText
|
|
11275
11328
|
}
|
|
11276
11329
|
))), 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
|
-
|
|
11330
|
+
CustomPropertyDisplay,
|
|
11278
11331
|
{
|
|
11279
11332
|
key: prop.id,
|
|
11280
11333
|
prop,
|
|
@@ -11289,7 +11342,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
|
|
|
11289
11342
|
|
|
11290
11343
|
// src/components/AncestryBoard.jsx
|
|
11291
11344
|
var import_react27 = __toESM(require("react"));
|
|
11292
|
-
var
|
|
11345
|
+
var import_fi21 = require("react-icons/fi");
|
|
11293
11346
|
var GroupItem = ({
|
|
11294
11347
|
group,
|
|
11295
11348
|
index,
|
|
@@ -11366,9 +11419,9 @@ var GroupItem = ({
|
|
|
11366
11419
|
className: "text-indigo-400 hover:text-white hover:bg-indigo-500 p-1 rounded-full transition-colors",
|
|
11367
11420
|
title: "Renderizar no cen\xE1rio"
|
|
11368
11421
|
},
|
|
11369
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11422
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlay, { size: 10, className: "ml-0.5 fill-current" })
|
|
11370
11423
|
)
|
|
11371
|
-
) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "p-1 text-red-500 cursor-not-allowed" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
11424
|
+
) : /* @__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
11425
|
/* @__PURE__ */ import_react27.default.createElement(
|
|
11373
11426
|
"span",
|
|
11374
11427
|
{
|
|
@@ -11388,7 +11441,7 @@ var GroupItem = ({
|
|
|
11388
11441
|
className: `${isValid ? "text-slate-500 hover:text-red-400" : "text-red-400 hover:text-red-200"} p-0.5 rounded transition-colors`,
|
|
11389
11442
|
title: "Remover men\xE7\xE3o"
|
|
11390
11443
|
},
|
|
11391
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11444
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiX, { size: 12 })
|
|
11392
11445
|
))
|
|
11393
11446
|
);
|
|
11394
11447
|
})),
|
|
@@ -11402,7 +11455,7 @@ var GroupItem = ({
|
|
|
11402
11455
|
`,
|
|
11403
11456
|
title: "Adicionar Ancestralidade a este grupo"
|
|
11404
11457
|
},
|
|
11405
|
-
isPickingForThisGroup ? /* @__PURE__ */ import_react27.default.createElement(
|
|
11458
|
+
isPickingForThisGroup ? /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiCheckCircle, { size: 12 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiSearch, { size: 12 }),
|
|
11406
11459
|
isPickingForThisGroup ? "Selecionando..." : "Adicionar"
|
|
11407
11460
|
), /* @__PURE__ */ import_react27.default.createElement(
|
|
11408
11461
|
"button",
|
|
@@ -11411,7 +11464,7 @@ var GroupItem = ({
|
|
|
11411
11464
|
className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
|
|
11412
11465
|
title: "Criar Subgrupo"
|
|
11413
11466
|
},
|
|
11414
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11467
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 14 })
|
|
11415
11468
|
)), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
11416
11469
|
"button",
|
|
11417
11470
|
{
|
|
@@ -11420,7 +11473,7 @@ var GroupItem = ({
|
|
|
11420
11473
|
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
11474
|
title: "Aninhar no grupo acima"
|
|
11422
11475
|
},
|
|
11423
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11476
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiArrowRight, { size: 14 })
|
|
11424
11477
|
), /* @__PURE__ */ import_react27.default.createElement(
|
|
11425
11478
|
"button",
|
|
11426
11479
|
{
|
|
@@ -11428,7 +11481,7 @@ var GroupItem = ({
|
|
|
11428
11481
|
className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
|
|
11429
11482
|
title: "Desaninhar"
|
|
11430
11483
|
},
|
|
11431
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11484
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiArrowLeft, { size: 14 })
|
|
11432
11485
|
), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ import_react27.default.createElement(
|
|
11433
11486
|
"button",
|
|
11434
11487
|
{
|
|
@@ -11436,7 +11489,7 @@ var GroupItem = ({
|
|
|
11436
11489
|
className: "p-1.5 text-slate-600 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors",
|
|
11437
11490
|
title: "Remover Grupo"
|
|
11438
11491
|
},
|
|
11439
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11492
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiTrash2, { size: 14 })
|
|
11440
11493
|
)))
|
|
11441
11494
|
), 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
11495
|
GroupItem,
|
|
@@ -11705,19 +11758,19 @@ function AncestryBoard({
|
|
|
11705
11758
|
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
11759
|
onClick: (e) => e.stopPropagation()
|
|
11707
11760
|
},
|
|
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
|
-
|
|
11761
|
+
/* @__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(
|
|
11762
|
+
import_fi21.FiLoader,
|
|
11710
11763
|
{
|
|
11711
11764
|
className: "animate-spin text-indigo-400",
|
|
11712
11765
|
size: 12
|
|
11713
11766
|
}
|
|
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(
|
|
11767
|
+
), /* @__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
11768
|
"button",
|
|
11716
11769
|
{
|
|
11717
11770
|
onClick: handleAddRootGroup,
|
|
11718
11771
|
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
11772
|
},
|
|
11720
|
-
/* @__PURE__ */ import_react27.default.createElement(
|
|
11773
|
+
/* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 14, className: "text-indigo-400" }),
|
|
11721
11774
|
/* @__PURE__ */ import_react27.default.createElement("span", { className: "hidden sm:inline" }, "Novo Grupo")
|
|
11722
11775
|
), /* @__PURE__ */ import_react27.default.createElement(
|
|
11723
11776
|
"button",
|
|
@@ -11737,7 +11790,7 @@ function AncestryBoard({
|
|
|
11737
11790
|
`
|
|
11738
11791
|
},
|
|
11739
11792
|
/* @__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
|
-
|
|
11793
|
+
import_fi21.FiSearch,
|
|
11741
11794
|
{
|
|
11742
11795
|
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
11796
|
}
|
|
@@ -11778,9 +11831,9 @@ function AncestryBoard({
|
|
|
11778
11831
|
${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
11832
|
`
|
|
11780
11833
|
},
|
|
11781
|
-
isPicking ? /* @__PURE__ */ import_react27.default.createElement(
|
|
11834
|
+
isPicking ? /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiPlus, { size: 16 }) : /* @__PURE__ */ import_react27.default.createElement(import_fi21.FiLayers, { size: 14 })
|
|
11782
11835
|
),
|
|
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(
|
|
11836
|
+
/* @__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
11837
|
!isPicking && /* @__PURE__ */ import_react27.default.createElement(
|
|
11785
11838
|
"button",
|
|
11786
11839
|
{
|
|
@@ -11791,11 +11844,11 @@ function AncestryBoard({
|
|
|
11791
11844
|
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
11845
|
title: "Renderizar Ancestralidade"
|
|
11793
11846
|
},
|
|
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(
|
|
11847
|
+
/* @__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
11848
|
)
|
|
11796
11849
|
);
|
|
11797
11850
|
}))
|
|
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(
|
|
11851
|
+
), /* @__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
11852
|
GroupItem,
|
|
11800
11853
|
{
|
|
11801
11854
|
key: group.id,
|