@lv-x-software-house/x_view 1.2.6-dev.61 → 1.2.6-dev.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +886 -856
  2. package/dist/index.mjs +569 -539
  3. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/XViewScene.jsx
2
- import React30, {
2
+ import React31, {
3
3
  useCallback as useCallback6,
4
4
  useEffect as useEffect24,
5
5
  useRef as useRef21,
@@ -8757,7 +8757,7 @@ function ImageViewer({ data, onClose }) {
8757
8757
  }
8758
8758
 
8759
8759
  // src/components/InSceneCreationForm.jsx
8760
- import React13, { useState as useState14, useEffect as useEffect13, useRef as useRef10 } from "react";
8760
+ import React14, { useState as useState14, useEffect as useEffect13, useRef as useRef10 } from "react";
8761
8761
  import { v4 as uuidv45 } from "uuid";
8762
8762
 
8763
8763
  // src/components/ColorPicker.jsx
@@ -8943,8 +8943,29 @@ import {
8943
8943
  FiSun,
8944
8944
  FiChevronDown as FiChevronDown4
8945
8945
  } from "react-icons/fi";
8946
- import { SiGoogledocs } from "react-icons/si";
8947
8946
  import { AiOutlineLoading3Quarters } from "react-icons/ai";
8947
+
8948
+ // src/components/GoogleDocsIcon.jsx
8949
+ import React13 from "react";
8950
+ var GoogleDocsIcon = ({ size = 16, className = "" }) => /* @__PURE__ */ React13.createElement(
8951
+ "svg",
8952
+ {
8953
+ width: size,
8954
+ height: size,
8955
+ viewBox: "0 0 24 24",
8956
+ fill: "none",
8957
+ xmlns: "http://www.w3.org/2000/svg",
8958
+ className
8959
+ },
8960
+ /* @__PURE__ */ React13.createElement("path", { d: "M14.5 2H6C5.17157 2 4.5 2.67157 4.5 3.5V20.5C4.5 21.3284 5.17157 22 6 22H18C18.8284 22 19.5 21.3284 19.5 20.5V7L14.5 2Z", fill: "#4285F4" }),
8961
+ /* @__PURE__ */ React13.createElement("path", { d: "M14.5 2V7H19.5L14.5 2Z", fill: "#A1C2FA" }),
8962
+ /* @__PURE__ */ React13.createElement("path", { d: "M7.5 13H16.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
8963
+ /* @__PURE__ */ React13.createElement("path", { d: "M7.5 10H16.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
8964
+ /* @__PURE__ */ React13.createElement("path", { d: "M7.5 16H13.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })
8965
+ );
8966
+ var GoogleDocsIcon_default = GoogleDocsIcon;
8967
+
8968
+ // src/components/InSceneCreationForm.jsx
8948
8969
  function InSceneCreationForm({
8949
8970
  onSave,
8950
8971
  onCancel,
@@ -9142,6 +9163,9 @@ function InSceneCreationForm({
9142
9163
  value: [{ id: uuidv45(), name: "Abrir Documento", value: res.link }]
9143
9164
  };
9144
9165
  setCustomProps((prev) => [...prev, newProp]);
9166
+ if (res.link) {
9167
+ window.open(res.link, "_blank");
9168
+ }
9145
9169
  } else {
9146
9170
  alert("Erro ao criar documento: " + res.error);
9147
9171
  }
@@ -9194,7 +9218,7 @@ function InSceneCreationForm({
9194
9218
  }
9195
9219
  };
9196
9220
  const selectedDatasetName = ((_a = availableDatasets.find((ds) => ds.id === targetDatasetId)) == null ? void 0 : _a.name) || "Selecione um Dataset...";
9197
- return /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(
9221
+ return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9198
9222
  "div",
9199
9223
  {
9200
9224
  ref: refEl,
@@ -9208,25 +9232,25 @@ function InSceneCreationForm({
9208
9232
  onContextMenu: swallow,
9209
9233
  onDoubleClick: swallow
9210
9234
  },
9211
- /* @__PURE__ */ React13.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9212
- /* @__PURE__ */ React13.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React13.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React13.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React13.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar & Conectar")), /* @__PURE__ */ React13.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Novo Node")),
9213
- /* @__PURE__ */ React13.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React13.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Tipo(s) do Node"), /* @__PURE__ */ React13.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 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React13.createElement(
9235
+ /* @__PURE__ */ React14.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9236
+ /* @__PURE__ */ React14.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React14.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React14.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar & Conectar")), /* @__PURE__ */ React14.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Novo Node")),
9237
+ /* @__PURE__ */ React14.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React14.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Tipo(s) do Node"), /* @__PURE__ */ React14.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 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React14.createElement(
9214
9238
  "span",
9215
9239
  {
9216
9240
  key: index,
9217
9241
  className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20"
9218
9242
  },
9219
9243
  t,
9220
- /* @__PURE__ */ React13.createElement(
9244
+ /* @__PURE__ */ React14.createElement(
9221
9245
  "button",
9222
9246
  {
9223
9247
  type: "button",
9224
9248
  onClick: () => handleRemoveType(index),
9225
9249
  className: "hover:text-white transition-colors"
9226
9250
  },
9227
- /* @__PURE__ */ React13.createElement(FiX3, { size: 12 })
9251
+ /* @__PURE__ */ React14.createElement(FiX3, { size: 12 })
9228
9252
  )
9229
- )), /* @__PURE__ */ React13.createElement(
9253
+ )), /* @__PURE__ */ React14.createElement(
9230
9254
  "input",
9231
9255
  {
9232
9256
  type: "text",
@@ -9248,7 +9272,7 @@ function InSceneCreationForm({
9248
9272
  autoComplete: "off",
9249
9273
  autoFocus: true
9250
9274
  }
9251
- ), showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React13.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__ */ React13.createElement(
9275
+ ), showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React14.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__ */ React14.createElement(
9252
9276
  "li",
9253
9277
  {
9254
9278
  key: index,
@@ -9259,7 +9283,7 @@ function InSceneCreationForm({
9259
9283
  }
9260
9284
  },
9261
9285
  suggestedType
9262
- ))))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React13.createElement(
9286
+ ))))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React14.createElement(
9263
9287
  "input",
9264
9288
  {
9265
9289
  required: true,
@@ -9269,21 +9293,21 @@ function InSceneCreationForm({
9269
9293
  onChange: handleNameInputChange,
9270
9294
  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"
9271
9295
  }
9272
- )), viewType === "view" && availableDatasets.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5 relative", ref: datasetDropdownRef }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Criar Node no Dataset:"), /* @__PURE__ */ React13.createElement(
9296
+ )), viewType === "view" && availableDatasets.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative", ref: datasetDropdownRef }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Criar Node no Dataset:"), /* @__PURE__ */ React14.createElement(
9273
9297
  "button",
9274
9298
  {
9275
9299
  type: "button",
9276
9300
  onClick: () => setIsDatasetDropdownOpen(!isDatasetDropdownOpen),
9277
9301
  className: "w-full flex items-center justify-between 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 hover:bg-slate-700/70 transition-colors text-slate-200 text-left"
9278
9302
  },
9279
- /* @__PURE__ */ React13.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9280
- /* @__PURE__ */ React13.createElement(
9303
+ /* @__PURE__ */ React14.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9304
+ /* @__PURE__ */ React14.createElement(
9281
9305
  FiChevronDown4,
9282
9306
  {
9283
9307
  className: `flex-shrink-0 text-slate-400 transition-transform ${isDatasetDropdownOpen ? "rotate-180" : ""}`
9284
9308
  }
9285
9309
  )
9286
- ), isDatasetDropdownOpen && /* @__PURE__ */ React13.createElement("ul", { className: "custom-scrollbar absolute top-[66px] left-0 z-20 w-full max-h-48 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-xl py-1" }, availableDatasets.map((ds) => /* @__PURE__ */ React13.createElement(
9310
+ ), isDatasetDropdownOpen && /* @__PURE__ */ React14.createElement("ul", { className: "custom-scrollbar absolute top-[66px] left-0 z-20 w-full max-h-48 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-xl py-1" }, availableDatasets.map((ds) => /* @__PURE__ */ React14.createElement(
9287
9311
  "li",
9288
9312
  {
9289
9313
  key: ds.id,
@@ -9294,7 +9318,7 @@ function InSceneCreationForm({
9294
9318
  className: `px-3 py-2 text-sm cursor-pointer transition-colors ${targetDatasetId === ds.id ? "bg-indigo-600/40 text-indigo-200 font-medium" : "text-slate-300 hover:bg-white/5"}`
9295
9319
  },
9296
9320
  ds.name
9297
- )))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React13.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React13.createElement(
9321
+ )))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React14.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React14.createElement(
9298
9322
  DescriptionDisplay,
9299
9323
  {
9300
9324
  description,
@@ -9305,7 +9329,7 @@ function InSceneCreationForm({
9305
9329
  onImageClick: handleImageClickFromText,
9306
9330
  onSaveDescription: (newDesc) => setDescription(newDesc)
9307
9331
  }
9308
- ), /* @__PURE__ */ React13.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React13.createElement(
9332
+ ), /* @__PURE__ */ React14.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React14.createElement(
9309
9333
  "button",
9310
9334
  {
9311
9335
  type: "button",
@@ -9313,17 +9337,17 @@ function InSceneCreationForm({
9313
9337
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9314
9338
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9315
9339
  },
9316
- /* @__PURE__ */ React13.createElement(FiEdit24, { size: 14 })
9317
- )), !description && /* @__PURE__ */ React13.createElement(
9340
+ /* @__PURE__ */ React14.createElement(FiEdit24, { size: 14 })
9341
+ )), !description && /* @__PURE__ */ React14.createElement(
9318
9342
  "div",
9319
9343
  {
9320
9344
  onClick: () => setIsDescriptionModalOpen(true),
9321
9345
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9322
9346
  },
9323
9347
  "Adicionar descri\xE7\xE3o..."
9324
- ))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React13.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9348
+ ))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9325
9349
  const isSelected = size === s;
9326
- return /* @__PURE__ */ React13.createElement(
9350
+ return /* @__PURE__ */ React14.createElement(
9327
9351
  "button",
9328
9352
  {
9329
9353
  key: s,
@@ -9331,14 +9355,14 @@ function InSceneCreationForm({
9331
9355
  onClick: () => handleSizeChange(s),
9332
9356
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9333
9357
  },
9334
- /* @__PURE__ */ React13.createElement(
9358
+ /* @__PURE__ */ React14.createElement(
9335
9359
  "div",
9336
9360
  {
9337
9361
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
9338
9362
  },
9339
- isSelected && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9363
+ isSelected && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9340
9364
  ),
9341
- /* @__PURE__ */ React13.createElement(
9365
+ /* @__PURE__ */ React14.createElement(
9342
9366
  "span",
9343
9367
  {
9344
9368
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9346,13 +9370,13 @@ function InSceneCreationForm({
9346
9370
  s
9347
9371
  )
9348
9372
  );
9349
- }))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), hasImages && /* @__PURE__ */ React13.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React13.createElement(
9373
+ }))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), hasImages && /* @__PURE__ */ React14.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React14.createElement(
9350
9374
  "div",
9351
9375
  {
9352
9376
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
9353
9377
  },
9354
- useImageAsTexture && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9355
- ), /* @__PURE__ */ React13.createElement(
9378
+ useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9379
+ ), /* @__PURE__ */ React14.createElement(
9356
9380
  "input",
9357
9381
  {
9358
9382
  type: "checkbox",
@@ -9360,20 +9384,20 @@ function InSceneCreationForm({
9360
9384
  onChange: handleToggleImageMode,
9361
9385
  className: "hidden"
9362
9386
  }
9363
- ), /* @__PURE__ */ React13.createElement(
9387
+ ), /* @__PURE__ */ React14.createElement(
9364
9388
  "span",
9365
9389
  {
9366
9390
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9367
9391
  },
9368
9392
  "Usar imagem para representar o node"
9369
- ))), /* @__PURE__ */ React13.createElement(
9393
+ ))), /* @__PURE__ */ React14.createElement(
9370
9394
  ColorPicker,
9371
9395
  {
9372
9396
  color,
9373
9397
  onChange: handleColorInputChange,
9374
9398
  disabled: useImageAsTexture
9375
9399
  }
9376
- ), /* @__PURE__ */ React13.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React13.createElement(FiSun, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React13.createElement(
9400
+ ), /* @__PURE__ */ React14.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React14.createElement(FiSun, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React14.createElement(
9377
9401
  "input",
9378
9402
  {
9379
9403
  type: "range",
@@ -9385,33 +9409,33 @@ function InSceneCreationForm({
9385
9409
  className: "w-full h-1.5 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-indigo-500 hover:accent-indigo-400",
9386
9410
  title: `Intensidade do brilho: ${intensity}`
9387
9411
  }
9388
- ), /* @__PURE__ */ React13.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React13.createElement(
9412
+ ), /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React14.createElement(
9389
9413
  "span",
9390
9414
  {
9391
9415
  className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}`
9392
9416
  },
9393
9417
  useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Selecione a cor e ajuste o brilho."
9394
- )), /* @__PURE__ */ React13.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React13.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React13.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React13.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React13.createElement(
9418
+ )), /* @__PURE__ */ React14.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React14.createElement(
9395
9419
  "button",
9396
9420
  {
9397
9421
  type: "button",
9398
9422
  onClick: handleCreateGoogleDoc,
9399
9423
  disabled: isLoadingDocs,
9400
- className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-indigo-600/20 hover:bg-indigo-600/30 text-indigo-300 border border-indigo-500/30 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
9424
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
9401
9425
  title: "Criar Documento no Google Docs"
9402
9426
  },
9403
- isLoadingDocs ? /* @__PURE__ */ React13.createElement(AiOutlineLoading3Quarters, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React13.createElement(SiGoogledocs, { size: 14, className: "group-hover:scale-110 transition-transform" }),
9427
+ isLoadingDocs ? /* @__PURE__ */ React14.createElement(AiOutlineLoading3Quarters, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React14.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
9404
9428
  isLoadingDocs ? "Criando..." : "Google Doc"
9405
- ), /* @__PURE__ */ React13.createElement(
9429
+ ), /* @__PURE__ */ React14.createElement(
9406
9430
  "button",
9407
9431
  {
9408
9432
  type: "button",
9409
9433
  onClick: handleAddProp,
9410
9434
  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"
9411
9435
  },
9412
- /* @__PURE__ */ React13.createElement(FiPlus3, { size: 14 }),
9436
+ /* @__PURE__ */ React14.createElement(FiPlus3, { size: 14 }),
9413
9437
  " Adicionar"
9414
- ))), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React13.createElement(
9438
+ ))), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9415
9439
  CustomPropertyDisplay,
9416
9440
  {
9417
9441
  key: prop.id,
@@ -9427,7 +9451,7 @@ function InSceneCreationForm({
9427
9451
  onSelectTexture: handleSelectTexture,
9428
9452
  onUploadFile
9429
9453
  }
9430
- )), /* @__PURE__ */ React13.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React13.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__ */ React13.createElement(
9454
+ )), /* @__PURE__ */ React14.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React14.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__ */ React14.createElement(
9431
9455
  "button",
9432
9456
  {
9433
9457
  type: "button",
@@ -9435,7 +9459,7 @@ function InSceneCreationForm({
9435
9459
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9436
9460
  },
9437
9461
  "Cancelar"
9438
- ), /* @__PURE__ */ React13.createElement(
9462
+ ), /* @__PURE__ */ React14.createElement(
9439
9463
  "button",
9440
9464
  {
9441
9465
  type: "submit",
@@ -9443,7 +9467,7 @@ function InSceneCreationForm({
9443
9467
  },
9444
9468
  "Salvar"
9445
9469
  )))
9446
- ), isDescriptionModalOpen && /* @__PURE__ */ React13.createElement(
9470
+ ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9447
9471
  DescriptionEditModal,
9448
9472
  {
9449
9473
  isOpen: isDescriptionModalOpen,
@@ -9461,7 +9485,7 @@ function InSceneCreationForm({
9461
9485
  }
9462
9486
 
9463
9487
  // src/components/InSceneVersionForm.jsx
9464
- import React14, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9488
+ import React15, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9465
9489
  import { v4 as uuidv46 } from "uuid";
9466
9490
  import { FiPlus as FiPlus4, FiMaximize2 as FiMaximize22, FiCheck as FiCheck8, FiEdit2 as FiEdit25 } from "react-icons/fi";
9467
9491
  function InSceneVersionForm({
@@ -9599,7 +9623,7 @@ function InSceneVersionForm({
9599
9623
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
9600
9624
  }
9601
9625
  };
9602
- return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9626
+ return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
9603
9627
  "div",
9604
9628
  {
9605
9629
  ref: refEl,
@@ -9613,9 +9637,9 @@ function InSceneVersionForm({
9613
9637
  onContextMenu: swallow,
9614
9638
  onDoubleClick: swallow
9615
9639
  },
9616
- /* @__PURE__ */ React14.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9617
- /* @__PURE__ */ React14.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React14.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React14.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar Versionamento")), /* @__PURE__ */ React14.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Nova Vers\xE3o")),
9618
- /* @__PURE__ */ React14.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React14.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Tipo do Node (Fixo)"), /* @__PURE__ */ React14.createElement(
9640
+ /* @__PURE__ */ React15.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9641
+ /* @__PURE__ */ React15.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React15.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React15.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar Versionamento")), /* @__PURE__ */ React15.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Nova Vers\xE3o")),
9642
+ /* @__PURE__ */ React15.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React15.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Tipo do Node (Fixo)"), /* @__PURE__ */ React15.createElement(
9619
9643
  "input",
9620
9644
  {
9621
9645
  type: "text",
@@ -9623,7 +9647,7 @@ function InSceneVersionForm({
9623
9647
  disabled: true,
9624
9648
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 cursor-not-allowed"
9625
9649
  }
9626
- )), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React14.createElement(
9650
+ )), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React15.createElement(
9627
9651
  "input",
9628
9652
  {
9629
9653
  required: true,
@@ -9633,7 +9657,7 @@ function InSceneVersionForm({
9633
9657
  onChange: handleNameInputChange,
9634
9658
  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"
9635
9659
  }
9636
- )), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React14.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React14.createElement(
9660
+ )), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React15.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__ */ React15.createElement(
9637
9661
  DescriptionDisplay,
9638
9662
  {
9639
9663
  description,
@@ -9644,7 +9668,7 @@ function InSceneVersionForm({
9644
9668
  onImageClick: handleImageClickFromText,
9645
9669
  onSaveDescription: (newDesc) => setDescription(newDesc)
9646
9670
  }
9647
- ), /* @__PURE__ */ React14.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React14.createElement(
9671
+ ), /* @__PURE__ */ React15.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React15.createElement(
9648
9672
  "button",
9649
9673
  {
9650
9674
  type: "button",
@@ -9652,17 +9676,17 @@ function InSceneVersionForm({
9652
9676
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9653
9677
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9654
9678
  },
9655
- /* @__PURE__ */ React14.createElement(FiEdit25, { size: 14 })
9656
- )), !description && /* @__PURE__ */ React14.createElement(
9679
+ /* @__PURE__ */ React15.createElement(FiEdit25, { size: 14 })
9680
+ )), !description && /* @__PURE__ */ React15.createElement(
9657
9681
  "div",
9658
9682
  {
9659
9683
  onClick: () => setIsDescriptionModalOpen(true),
9660
9684
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9661
9685
  },
9662
9686
  "Adicionar descri\xE7\xE3o..."
9663
- ))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9687
+ ))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9664
9688
  const isSelected = size === s;
9665
- return /* @__PURE__ */ React14.createElement(
9689
+ return /* @__PURE__ */ React15.createElement(
9666
9690
  "button",
9667
9691
  {
9668
9692
  key: s,
@@ -9670,14 +9694,14 @@ function InSceneVersionForm({
9670
9694
  onClick: () => handleSizeChange(s),
9671
9695
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9672
9696
  },
9673
- /* @__PURE__ */ React14.createElement(
9697
+ /* @__PURE__ */ React15.createElement(
9674
9698
  "div",
9675
9699
  {
9676
9700
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
9677
9701
  },
9678
- isSelected && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9702
+ isSelected && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9679
9703
  ),
9680
- /* @__PURE__ */ React14.createElement(
9704
+ /* @__PURE__ */ React15.createElement(
9681
9705
  "span",
9682
9706
  {
9683
9707
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9685,13 +9709,13 @@ function InSceneVersionForm({
9685
9709
  s
9686
9710
  )
9687
9711
  );
9688
- }))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Cor do Node (Fixa)"), hasImages && /* @__PURE__ */ React14.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React14.createElement(
9712
+ }))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Cor do Node (Fixa)"), hasImages && /* @__PURE__ */ React15.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React15.createElement(
9689
9713
  "div",
9690
9714
  {
9691
9715
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
9692
9716
  },
9693
- useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9694
- ), /* @__PURE__ */ React14.createElement(
9717
+ useImageAsTexture && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9718
+ ), /* @__PURE__ */ React15.createElement(
9695
9719
  "input",
9696
9720
  {
9697
9721
  type: "checkbox",
@@ -9699,35 +9723,35 @@ function InSceneVersionForm({
9699
9723
  onChange: handleToggleImageMode,
9700
9724
  className: "hidden"
9701
9725
  }
9702
- ), /* @__PURE__ */ React14.createElement(
9726
+ ), /* @__PURE__ */ React15.createElement(
9703
9727
  "span",
9704
9728
  {
9705
9729
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9706
9730
  },
9707
9731
  "Usar imagem"
9708
- ))), /* @__PURE__ */ React14.createElement(
9732
+ ))), /* @__PURE__ */ React15.createElement(
9709
9733
  "div",
9710
9734
  {
9711
9735
  className: `flex items-center gap-3 bg-slate-900/60 p-2.5 rounded-lg border border-white/10 transition-opacity duration-200 ${useImageAsTexture ? "opacity-40 pointer-events-none grayscale" : "opacity-100"}`
9712
9736
  },
9713
- /* @__PURE__ */ React14.createElement(
9737
+ /* @__PURE__ */ React15.createElement(
9714
9738
  "div",
9715
9739
  {
9716
9740
  className: "h-8 w-12 rounded-md border border-white/10",
9717
9741
  style: { backgroundColor: fixedColor }
9718
9742
  }
9719
9743
  ),
9720
- /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-slate-300" }, useImageAsTexture ? "Cor definida pela imagem." : "Cor herdada do node original.")
9721
- )), /* @__PURE__ */ React14.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais (*Date obrigat\xF3rio)"), /* @__PURE__ */ React14.createElement(
9744
+ /* @__PURE__ */ React15.createElement("span", { className: "text-xs text-slate-300" }, useImageAsTexture ? "Cor definida pela imagem." : "Cor herdada do node original.")
9745
+ )), /* @__PURE__ */ React15.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React15.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais (*Date obrigat\xF3rio)"), /* @__PURE__ */ React15.createElement(
9722
9746
  "button",
9723
9747
  {
9724
9748
  type: "button",
9725
9749
  onClick: handleAddProp,
9726
9750
  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"
9727
9751
  },
9728
- /* @__PURE__ */ React14.createElement(FiPlus4, { size: 14 }),
9752
+ /* @__PURE__ */ React15.createElement(FiPlus4, { size: 14 }),
9729
9753
  " Adicionar"
9730
- )), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9754
+ )), /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React15.createElement(
9731
9755
  CustomPropertyDisplay,
9732
9756
  {
9733
9757
  key: prop.id,
@@ -9743,7 +9767,7 @@ function InSceneVersionForm({
9743
9767
  onSelectTexture: handleSelectTexture,
9744
9768
  onUploadFile
9745
9769
  }
9746
- )), /* @__PURE__ */ React14.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React14.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__ */ React14.createElement(
9770
+ )), /* @__PURE__ */ React15.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React15.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__ */ React15.createElement(
9747
9771
  "button",
9748
9772
  {
9749
9773
  type: "button",
@@ -9751,7 +9775,7 @@ function InSceneVersionForm({
9751
9775
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9752
9776
  },
9753
9777
  "Cancelar"
9754
- ), /* @__PURE__ */ React14.createElement(
9778
+ ), /* @__PURE__ */ React15.createElement(
9755
9779
  "button",
9756
9780
  {
9757
9781
  type: "submit",
@@ -9759,7 +9783,7 @@ function InSceneVersionForm({
9759
9783
  },
9760
9784
  "Salvar"
9761
9785
  )))
9762
- ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9786
+ ), isDescriptionModalOpen && /* @__PURE__ */ React15.createElement(
9763
9787
  DescriptionEditModal,
9764
9788
  {
9765
9789
  isOpen: isDescriptionModalOpen,
@@ -9777,7 +9801,7 @@ function InSceneVersionForm({
9777
9801
  }
9778
9802
 
9779
9803
  // src/components/InSceneQuestForm.jsx
9780
- import React16, { useState as useState17, useRef as useRef12 } from "react";
9804
+ import React17, { useState as useState17, useRef as useRef12 } from "react";
9781
9805
  import { v4 as uuidv47 } from "uuid";
9782
9806
  import {
9783
9807
  FiPlus as FiPlus6,
@@ -9792,11 +9816,10 @@ import {
9792
9816
  FiRepeat,
9793
9817
  FiCopy as FiCopy3
9794
9818
  } from "react-icons/fi";
9795
- import { SiGoogledocs as SiGoogledocs2 } from "react-icons/si";
9796
9819
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters2 } from "react-icons/ai";
9797
9820
 
9798
9821
  // src/components/QuestReviewStackEditor.jsx
9799
- import React15, { useState as useState16 } from "react";
9822
+ import React16, { useState as useState16 } from "react";
9800
9823
  import {
9801
9824
  FiPlus as FiPlus5,
9802
9825
  FiX as FiX4,
@@ -9849,22 +9872,22 @@ function QuestReviewStackEditor({
9849
9872
  const search = searchQuery.toLowerCase();
9850
9873
  return (m.name || "").toLowerCase().includes(search) || (m.email || "").toLowerCase().includes(search);
9851
9874
  });
9852
- return /* @__PURE__ */ React15.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Review Stack"), !readOnly && !isAdding && /* @__PURE__ */ React15.createElement(
9875
+ return /* @__PURE__ */ React16.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Review Stack"), !readOnly && !isAdding && /* @__PURE__ */ React16.createElement(
9853
9876
  "button",
9854
9877
  {
9855
9878
  type: "button",
9856
9879
  onClick: () => setIsAdding(true),
9857
9880
  className: "flex items-center gap-1 px-2 py-1 text-[10px] bg-sky-500/20 text-sky-300 border border-sky-500/30 rounded hover:bg-sky-500/30 transition-colors"
9858
9881
  },
9859
- /* @__PURE__ */ React15.createElement(FiPlus5, { size: 10 }),
9882
+ /* @__PURE__ */ React16.createElement(FiPlus5, { size: 10 }),
9860
9883
  " Adicionar Camada"
9861
- )), isAdding && /* @__PURE__ */ React15.createElement("div", { className: "bg-slate-900/50 border border-sky-500/30 rounded-lg p-2 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200" }, /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
9884
+ )), isAdding && /* @__PURE__ */ React16.createElement("div", { className: "bg-slate-900/50 border border-sky-500/30 rounded-lg p-2 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200" }, /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
9862
9885
  FiSearch4,
9863
9886
  {
9864
9887
  className: "absolute left-2 top-1/2 -translate-y-1/2 text-slate-500",
9865
9888
  size: 12
9866
9889
  }
9867
- ), /* @__PURE__ */ React15.createElement(
9890
+ ), /* @__PURE__ */ React16.createElement(
9868
9891
  "input",
9869
9892
  {
9870
9893
  autoFocus: true,
@@ -9874,32 +9897,32 @@ function QuestReviewStackEditor({
9874
9897
  onChange: (e) => setSearchQuery(e.target.value),
9875
9898
  className: "w-full bg-slate-800 border border-white/10 rounded p-1.5 pl-7 text-xs focus:outline-none focus:ring-1 focus:ring-sky-400"
9876
9899
  }
9877
- ), /* @__PURE__ */ React15.createElement(
9900
+ ), /* @__PURE__ */ React16.createElement(
9878
9901
  "button",
9879
9902
  {
9880
9903
  onClick: () => setIsAdding(false),
9881
9904
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-500 hover:text-white"
9882
9905
  },
9883
- /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
9884
- )), /* @__PURE__ */ React15.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React15.createElement(
9906
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9907
+ )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React16.createElement(
9885
9908
  "li",
9886
9909
  {
9887
9910
  key: m.id,
9888
9911
  onClick: () => handleAddReviewer(m.id),
9889
9912
  className: "px-2 py-1.5 hover:bg-white/5 rounded cursor-pointer text-xs flex items-center gap-2"
9890
9913
  },
9891
- /* @__PURE__ */ React15.createElement(FiUser, { size: 12, className: "text-slate-400" }),
9892
- /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, m.name || m.email)
9893
- )), filteredMembers.length === 0 && /* @__PURE__ */ React15.createElement("li", { className: "text-[10px] text-slate-500 text-center py-2 italic font-light" }, "Nenhum membro encontrado"))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, reviewStack.map((item, index) => {
9914
+ /* @__PURE__ */ React16.createElement(FiUser, { size: 12, className: "text-slate-400" }),
9915
+ /* @__PURE__ */ React16.createElement("span", { className: "truncate" }, m.name || m.email)
9916
+ )), filteredMembers.length === 0 && /* @__PURE__ */ React16.createElement("li", { className: "text-[10px] text-slate-500 text-center py-2 italic font-light" }, "Nenhum membro encontrado"))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, reviewStack.map((item, index) => {
9894
9917
  const member = viewMembers.find((m) => m.id === item.userId);
9895
9918
  const isCompleted = item.status === "completed";
9896
- return /* @__PURE__ */ React15.createElement(
9919
+ return /* @__PURE__ */ React16.createElement(
9897
9920
  "div",
9898
9921
  {
9899
9922
  key: index,
9900
9923
  className: `group relative flex items-center gap-3 p-2 rounded-lg border ${isCompleted ? "bg-green-500/5 border-green-500/20" : "bg-white/5 border-white/10"} hover:border-white/20 transition-all`
9901
9924
  },
9902
- /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col items-center gap-0.5 text-slate-500" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[10px] font-bold opacity-50" }, index + 1), !readOnly && /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
9925
+ /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col items-center gap-0.5 text-slate-500" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] font-bold opacity-50" }, index + 1), !readOnly && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
9903
9926
  "button",
9904
9927
  {
9905
9928
  type: "button",
@@ -9907,8 +9930,8 @@ function QuestReviewStackEditor({
9907
9930
  disabled: index === 0,
9908
9931
  className: "hover:text-sky-400 disabled:opacity-20"
9909
9932
  },
9910
- /* @__PURE__ */ React15.createElement(FiChevronUp, { size: 12 })
9911
- ), /* @__PURE__ */ React15.createElement(
9933
+ /* @__PURE__ */ React16.createElement(FiChevronUp, { size: 12 })
9934
+ ), /* @__PURE__ */ React16.createElement(
9912
9935
  "button",
9913
9936
  {
9914
9937
  type: "button",
@@ -9916,16 +9939,16 @@ function QuestReviewStackEditor({
9916
9939
  disabled: index === reviewStack.length - 1,
9917
9940
  className: "hover:text-sky-400 disabled:opacity-20"
9918
9941
  },
9919
- /* @__PURE__ */ React15.createElement(FiChevronDown5, { size: 12 })
9942
+ /* @__PURE__ */ React16.createElement(FiChevronDown5, { size: 12 })
9920
9943
  ))),
9921
- /* @__PURE__ */ React15.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
9944
+ /* @__PURE__ */ React16.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
9922
9945
  "span",
9923
9946
  {
9924
9947
  className: `truncate text-sm font-medium ${isCompleted ? "text-green-300" : "text-slate-200"}`
9925
9948
  },
9926
9949
  (member == null ? void 0 : member.name) || (member == null ? void 0 : member.email) || "Unknown User"
9927
- ), item.mandatory && /* @__PURE__ */ React15.createElement("span", { className: "flex-shrink-0 px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-300 text-[8px] font-bold uppercase tracking-tighter border border-amber-500/30" }, "Obrigat\xF3rio")), /* @__PURE__ */ React15.createElement("p", { className: "text-[10px] text-slate-500 flex items-center gap-1" }, isCompleted ? "\u2713 Review Conclu\xEDda" : "\u23F3 Pendente")),
9928
- !readOnly && /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React15.createElement(
9950
+ ), item.mandatory && /* @__PURE__ */ React16.createElement("span", { className: "flex-shrink-0 px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-300 text-[8px] font-bold uppercase tracking-tighter border border-amber-500/30" }, "Obrigat\xF3rio")), /* @__PURE__ */ React16.createElement("p", { className: "text-[10px] text-slate-500 flex items-center gap-1" }, isCompleted ? "\u2713 Review Conclu\xEDda" : "\u23F3 Pendente")),
9951
+ !readOnly && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React16.createElement(
9929
9952
  "button",
9930
9953
  {
9931
9954
  type: "button",
@@ -9933,18 +9956,18 @@ function QuestReviewStackEditor({
9933
9956
  title: item.mandatory ? "Remover obrigatoriedade" : "Tornar obrigat\xF3rio",
9934
9957
  className: `p-1.5 rounded hover:bg-white/10 transition-colors ${item.mandatory ? "text-amber-400" : "text-slate-500"}`
9935
9958
  },
9936
- /* @__PURE__ */ React15.createElement(FiStar, { size: 14 })
9937
- ), /* @__PURE__ */ React15.createElement(
9959
+ /* @__PURE__ */ React16.createElement(FiStar, { size: 14 })
9960
+ ), /* @__PURE__ */ React16.createElement(
9938
9961
  "button",
9939
9962
  {
9940
9963
  type: "button",
9941
9964
  onClick: () => handleRemoveReviewer(index),
9942
9965
  className: "p-1.5 rounded hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-colors"
9943
9966
  },
9944
- /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
9967
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9945
9968
  ))
9946
9969
  );
9947
- }), reviewStack.length === 0 && !isAdding && /* @__PURE__ */ React15.createElement("div", { className: "py-6 border-2 border-dashed border-white/5 rounded-xl flex flex-col items-center justify-center gap-2" }, /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-slate-500 font-light italic" }, "Nenhum revisor definido"), !readOnly && /* @__PURE__ */ React15.createElement(
9970
+ }), reviewStack.length === 0 && !isAdding && /* @__PURE__ */ React16.createElement("div", { className: "py-6 border-2 border-dashed border-white/5 rounded-xl flex flex-col items-center justify-center gap-2" }, /* @__PURE__ */ React16.createElement("p", { className: "text-xs text-slate-500 font-light italic" }, "Nenhum revisor definido"), !readOnly && /* @__PURE__ */ React16.createElement(
9948
9971
  "button",
9949
9972
  {
9950
9973
  type: "button",
@@ -10018,11 +10041,11 @@ function InSceneQuestForm({
10018
10041
  const propsEndRef = useRef12(null);
10019
10042
  const [milestoneInput, setMilestoneInput] = useState17("");
10020
10043
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState17(false);
10021
- const activeMilestones = React16.useMemo(
10044
+ const activeMilestones = React17.useMemo(
10022
10045
  () => (milestones || []).filter((ms) => ms.status === "active"),
10023
10046
  [milestones]
10024
10047
  );
10025
- const filteredMilestones = React16.useMemo(() => {
10048
+ const filteredMilestones = React17.useMemo(() => {
10026
10049
  const search = milestoneInput.toLowerCase().trim();
10027
10050
  return activeMilestones.filter(
10028
10051
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -10059,11 +10082,11 @@ function InSceneQuestForm({
10059
10082
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
10060
10083
  }
10061
10084
  };
10062
- const dependencyQuests = React16.useMemo(
10085
+ const dependencyQuests = React17.useMemo(
10063
10086
  () => availableNodes.filter((n) => n.is_quest),
10064
10087
  [availableNodes]
10065
10088
  );
10066
- const filteredDependencies = React16.useMemo(() => {
10089
+ const filteredDependencies = React17.useMemo(() => {
10067
10090
  const search = dependencyInput.toLowerCase().trim();
10068
10091
  return dependencyQuests.filter((q) => {
10069
10092
  var _a2;
@@ -10117,6 +10140,9 @@ function InSceneQuestForm({
10117
10140
  value: [{ id: uuidv47(), name: "Abrir Documento", value: res.link }]
10118
10141
  };
10119
10142
  setCustomProps((prev) => [...prev, newProp]);
10143
+ if (res.link) {
10144
+ window.open(res.link, "_blank");
10145
+ }
10120
10146
  } else {
10121
10147
  alert("Erro ao criar documento: " + res.error);
10122
10148
  }
@@ -10201,7 +10227,7 @@ function InSceneQuestForm({
10201
10227
  const swallow = (e) => e.stopPropagation();
10202
10228
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
10203
10229
  const availableImages = customProps.filter((p) => p.type === "images").flatMap((p) => Array.isArray(p.value) ? p.value : []).filter((img) => img.value && img.value.trim() !== "");
10204
- return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10230
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10205
10231
  "div",
10206
10232
  {
10207
10233
  ref: refEl,
@@ -10213,7 +10239,7 @@ function InSceneQuestForm({
10213
10239
  onContextMenu: swallow,
10214
10240
  onDoubleClick: swallow
10215
10241
  },
10216
- /* @__PURE__ */ React16.createElement(
10242
+ /* @__PURE__ */ React17.createElement(
10217
10243
  "div",
10218
10244
  {
10219
10245
  className: "h-[2px]",
@@ -10222,7 +10248,7 @@ function InSceneQuestForm({
10222
10248
  }
10223
10249
  }
10224
10250
  ),
10225
- /* @__PURE__ */ React16.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React16.createElement("div", null, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React16.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React16.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React16.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React16.createElement(
10251
+ /* @__PURE__ */ React17.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React17.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React17.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React17.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React17.createElement(
10226
10252
  "button",
10227
10253
  {
10228
10254
  type: "button",
@@ -10232,7 +10258,7 @@ function InSceneQuestForm({
10232
10258
  },
10233
10259
  "\xD7"
10234
10260
  )),
10235
- /* @__PURE__ */ React16.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React16.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React16.createElement(
10261
+ /* @__PURE__ */ React17.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React17.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React17.createElement(
10236
10262
  "input",
10237
10263
  {
10238
10264
  required: true,
@@ -10246,14 +10272,14 @@ function InSceneQuestForm({
10246
10272
  },
10247
10273
  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"
10248
10274
  }
10249
- ), /* @__PURE__ */ React16.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React16.createElement(
10275
+ ), /* @__PURE__ */ React17.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React17.createElement(
10250
10276
  "p",
10251
10277
  {
10252
10278
  className: "text-xs text-indigo-300 font-medium truncate",
10253
10279
  title: standardizedName
10254
10280
  },
10255
10281
  standardizedName
10256
- ), /* @__PURE__ */ React16.createElement(
10282
+ ), /* @__PURE__ */ React17.createElement(
10257
10283
  "button",
10258
10284
  {
10259
10285
  type: "button",
@@ -10261,34 +10287,34 @@ function InSceneQuestForm({
10261
10287
  className: `p-1 rounded-md transition-all hover:bg-white/5 ${isNameCopied ? "text-green-400 scale-110" : "text-slate-500 hover:text-indigo-400"} flex-shrink-0`,
10262
10288
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
10263
10289
  },
10264
- isNameCopied ? /* @__PURE__ */ React16.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React16.createElement(FiCopy3, { size: 10 })
10265
- ))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10290
+ isNameCopied ? /* @__PURE__ */ React17.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React17.createElement(FiCopy3, { size: 10 })
10291
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10266
10292
  "button",
10267
10293
  {
10268
10294
  type: "button",
10269
10295
  onClick: () => setIsStatusDropdownOpen(!isStatusDropdownOpen),
10270
10296
  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"
10271
10297
  },
10272
- /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10298
+ /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10273
10299
  "span",
10274
10300
  {
10275
10301
  className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]",
10276
10302
  style: { backgroundColor: QUEST_STATUS_COLORS2[status] }
10277
10303
  }
10278
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10279
- /* @__PURE__ */ React16.createElement(
10304
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10305
+ /* @__PURE__ */ React17.createElement(
10280
10306
  FiChevronDown6,
10281
10307
  {
10282
10308
  className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}`
10283
10309
  }
10284
10310
  )
10285
- ), isStatusDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10311
+ ), isStatusDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10286
10312
  "div",
10287
10313
  {
10288
10314
  className: "fixed inset-0 z-40",
10289
10315
  onClick: () => setIsStatusDropdownOpen(false)
10290
10316
  }
10291
- ), /* @__PURE__ */ React16.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_COLORS2).map((s) => /* @__PURE__ */ React16.createElement(
10317
+ ), /* @__PURE__ */ React17.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_COLORS2).map((s) => /* @__PURE__ */ React17.createElement(
10292
10318
  "li",
10293
10319
  {
10294
10320
  key: s,
@@ -10299,7 +10325,7 @@ function InSceneQuestForm({
10299
10325
  },
10300
10326
  className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${status === s ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
10301
10327
  },
10302
- /* @__PURE__ */ React16.createElement(
10328
+ /* @__PURE__ */ React17.createElement(
10303
10329
  "span",
10304
10330
  {
10305
10331
  className: "w-3 h-3 rounded-full",
@@ -10307,11 +10333,11 @@ function InSceneQuestForm({
10307
10333
  }
10308
10334
  ),
10309
10335
  s
10310
- )))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Milestones"), /* @__PURE__ */ React16.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 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, milestoneIds.map((id) => {
10336
+ )))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Milestones"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, milestoneIds.map((id) => {
10311
10337
  const ms = (milestones || []).find((m) => m.id === id);
10312
10338
  if (!ms) return null;
10313
- return /* @__PURE__ */ React16.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, /* @__PURE__ */ React16.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })));
10314
- }), /* @__PURE__ */ React16.createElement(
10339
+ return /* @__PURE__ */ React17.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })));
10340
+ }), /* @__PURE__ */ React17.createElement(
10315
10341
  "input",
10316
10342
  {
10317
10343
  type: "text",
@@ -10330,7 +10356,7 @@ function InSceneQuestForm({
10330
10356
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
10331
10357
  autoComplete: "off"
10332
10358
  }
10333
- ), showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React16.createElement(
10359
+ ), showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React17.createElement(
10334
10360
  "li",
10335
10361
  {
10336
10362
  key: ms.id,
@@ -10341,7 +10367,7 @@ function InSceneQuestForm({
10341
10367
  }
10342
10368
  },
10343
10369
  ms.name
10344
- ))), showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React16.createElement(
10370
+ ))), showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React17.createElement(
10345
10371
  "li",
10346
10372
  {
10347
10373
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -10350,13 +10376,13 @@ function InSceneQuestForm({
10350
10376
  handleAddMilestone({ name: milestoneInput });
10351
10377
  }
10352
10378
  },
10353
- /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
10354
- /* @__PURE__ */ React16.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
10355
- )))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ React16.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 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
10379
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
10380
+ /* @__PURE__ */ React17.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
10381
+ )))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
10356
10382
  const depNode = availableNodes.find((n) => String(n.id) === String(id));
10357
10383
  if (!depNode) return null;
10358
- return /* @__PURE__ */ React16.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-amber-500/20 text-amber-200 border-amber-500/30" }, depNode.raw_title || depNode.name, /* @__PURE__ */ React16.createElement("button", { type: "button", onClick: () => handleRemoveDependency(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })));
10359
- }), /* @__PURE__ */ React16.createElement(
10384
+ return /* @__PURE__ */ React17.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-amber-500/20 text-amber-200 border-amber-500/30" }, depNode.raw_title || depNode.name, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleRemoveDependency(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })));
10385
+ }), /* @__PURE__ */ React17.createElement(
10360
10386
  "input",
10361
10387
  {
10362
10388
  type: "text",
@@ -10375,7 +10401,7 @@ function InSceneQuestForm({
10375
10401
  placeholder: dependencyIds.length === 0 ? "Adicionar quest pr\xE9-requisito..." : "",
10376
10402
  autoComplete: "off"
10377
10403
  }
10378
- ), showDependencySuggestions && filteredDependencies.length > 0 && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredDependencies.map((q) => /* @__PURE__ */ React16.createElement(
10404
+ ), showDependencySuggestions && filteredDependencies.length > 0 && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredDependencies.map((q) => /* @__PURE__ */ React17.createElement(
10379
10405
  "li",
10380
10406
  {
10381
10407
  key: q.id,
@@ -10385,23 +10411,23 @@ function InSceneQuestForm({
10385
10411
  handleAddDependency(q);
10386
10412
  }
10387
10413
  },
10388
- /* @__PURE__ */ React16.createElement("span", { className: "truncate" }, q.raw_title || q.name),
10389
- /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
10390
- ))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10414
+ /* @__PURE__ */ React17.createElement("span", { className: "truncate" }, q.raw_title || q.name),
10415
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
10416
+ ))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10391
10417
  "button",
10392
10418
  {
10393
10419
  type: "button",
10394
10420
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
10395
10421
  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"
10396
10422
  },
10397
- /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
10398
- /* @__PURE__ */ React16.createElement(
10423
+ /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
10424
+ /* @__PURE__ */ React17.createElement(
10399
10425
  FiChevronDown6,
10400
10426
  {
10401
10427
  className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
10402
10428
  }
10403
10429
  )
10404
- ), isAssigneeDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10430
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10405
10431
  "div",
10406
10432
  {
10407
10433
  className: "fixed inset-0 z-40",
@@ -10410,7 +10436,7 @@ function InSceneQuestForm({
10410
10436
  setAssigneeSearchQuery("");
10411
10437
  }
10412
10438
  }
10413
- ), /* @__PURE__ */ React16.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React16.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React16.createElement(
10439
+ ), /* @__PURE__ */ React17.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__ */ React17.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React17.createElement(
10414
10440
  "input",
10415
10441
  {
10416
10442
  type: "text",
@@ -10421,7 +10447,7 @@ function InSceneQuestForm({
10421
10447
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
10422
10448
  onClick: (e) => e.stopPropagation()
10423
10449
  }
10424
- )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React16.createElement(
10450
+ )), /* @__PURE__ */ React17.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React17.createElement(
10425
10451
  "li",
10426
10452
  {
10427
10453
  onClick: () => {
@@ -10435,7 +10461,7 @@ function InSceneQuestForm({
10435
10461
  ), viewMembers.filter((member) => {
10436
10462
  const search = assigneeSearchQuery.toLowerCase();
10437
10463
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10438
- }).map((member) => /* @__PURE__ */ React16.createElement(
10464
+ }).map((member) => /* @__PURE__ */ React17.createElement(
10439
10465
  "li",
10440
10466
  {
10441
10467
  key: member.id,
@@ -10450,7 +10476,7 @@ function InSceneQuestForm({
10450
10476
  )), viewMembers.filter((member) => {
10451
10477
  const search = assigneeSearchQuery.toLowerCase();
10452
10478
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10453
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React16.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React16.createElement(
10479
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React17.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React17.createElement(
10454
10480
  "button",
10455
10481
  {
10456
10482
  type: "button",
@@ -10458,7 +10484,7 @@ function InSceneQuestForm({
10458
10484
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
10459
10485
  },
10460
10486
  "+ Adicionar"
10461
- )), questDate && /* @__PURE__ */ React16.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1" }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React16.createElement(
10487
+ )), questDate && /* @__PURE__ */ React17.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1" }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React17.createElement(
10462
10488
  "button",
10463
10489
  {
10464
10490
  key: t,
@@ -10476,7 +10502,7 @@ function InSceneQuestForm({
10476
10502
  className: `flex-1 text-[10px] px-2 py-1.5 rounded-md transition-colors ${questDate.type === t ? "bg-indigo-600 text-white font-semibold shadow" : "text-slate-400 hover:bg-slate-700/50"}`
10477
10503
  },
10478
10504
  t === "Date Interval" ? "Intervalo" : t
10479
- )) : /* @__PURE__ */ React16.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React16.createElement(FiCalendar, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React16.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React16.createElement(
10505
+ )) : /* @__PURE__ */ React17.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React17.createElement(FiCalendar, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React17.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React17.createElement(
10480
10506
  "button",
10481
10507
  {
10482
10508
  type: "button",
@@ -10484,8 +10510,8 @@ function InSceneQuestForm({
10484
10510
  className: "w-8 h-8 grid place-items-center rounded-lg bg-green-500/10 text-green-400 hover:bg-green-500/20 transition-colors",
10485
10511
  title: "Confirmar data"
10486
10512
  },
10487
- /* @__PURE__ */ React16.createElement(FiCheck9, { size: 14 })
10488
- ) : /* @__PURE__ */ React16.createElement(
10513
+ /* @__PURE__ */ React17.createElement(FiCheck9, { size: 14 })
10514
+ ) : /* @__PURE__ */ React17.createElement(
10489
10515
  "button",
10490
10516
  {
10491
10517
  type: "button",
@@ -10493,8 +10519,8 @@ function InSceneQuestForm({
10493
10519
  className: "w-8 h-8 grid place-items-center rounded-lg bg-indigo-500/10 text-indigo-400 hover:bg-indigo-500/20 transition-colors",
10494
10520
  title: "Editar data"
10495
10521
  },
10496
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10497
- ), /* @__PURE__ */ React16.createElement(
10522
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10523
+ ), /* @__PURE__ */ React17.createElement(
10498
10524
  "button",
10499
10525
  {
10500
10526
  type: "button",
@@ -10502,8 +10528,8 @@ function InSceneQuestForm({
10502
10528
  className: "w-8 h-8 grid place-items-center rounded-lg bg-red-500/10 text-red-400 hover:bg-red-500/20 transition-colors",
10503
10529
  title: "Remover data"
10504
10530
  },
10505
- /* @__PURE__ */ React16.createElement(FiX5, { size: 14 })
10506
- ))), !questDate.confirmed && /* @__PURE__ */ React16.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React16.createElement(
10531
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 14 })
10532
+ ))), !questDate.confirmed && /* @__PURE__ */ React17.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React17.createElement(
10507
10533
  "input",
10508
10534
  {
10509
10535
  type: "text",
@@ -10523,7 +10549,7 @@ function InSceneQuestForm({
10523
10549
  maxLength: "10",
10524
10550
  className: "w-full bg-slate-800/70 p-2 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10525
10551
  }
10526
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10552
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10527
10553
  "input",
10528
10554
  {
10529
10555
  type: "text",
@@ -10543,7 +10569,7 @@ function InSceneQuestForm({
10543
10569
  maxLength: "10",
10544
10570
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10545
10571
  }
10546
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React16.createElement(
10572
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React17.createElement(
10547
10573
  "input",
10548
10574
  {
10549
10575
  type: "text",
@@ -10563,39 +10589,39 @@ function InSceneQuestForm({
10563
10589
  maxLength: "10",
10564
10590
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10565
10591
  }
10566
- ))))), /* @__PURE__ */ React16.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React16.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React16.createElement(
10592
+ ))))), /* @__PURE__ */ React17.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React17.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React17.createElement(
10567
10593
  "button",
10568
10594
  {
10569
10595
  type: "button",
10570
10596
  onClick: () => setRecurrenceConfig((prev) => ({ ...prev, enabled: !prev.enabled })),
10571
10597
  className: `relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${recurrenceConfig.enabled ? "bg-indigo-600" : "bg-slate-700"} cursor-pointer`
10572
10598
  },
10573
- /* @__PURE__ */ React16.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
10574
- )), recurrenceConfig.enabled && /* @__PURE__ */ React16.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React16.createElement(
10599
+ /* @__PURE__ */ React17.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
10600
+ )), recurrenceConfig.enabled && /* @__PURE__ */ React17.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React17.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React17.createElement(
10575
10601
  "select",
10576
10602
  {
10577
10603
  value: recurrenceConfig.type,
10578
10604
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, type: e.target.value })),
10579
10605
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10580
10606
  },
10581
- /* @__PURE__ */ React16.createElement("option", { value: "daily" }, "Di\xE1ria"),
10582
- /* @__PURE__ */ React16.createElement("option", { value: "weekly" }, "Semanal"),
10583
- /* @__PURE__ */ React16.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
10584
- )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React16.createElement(
10607
+ /* @__PURE__ */ React17.createElement("option", { value: "daily" }, "Di\xE1ria"),
10608
+ /* @__PURE__ */ React17.createElement("option", { value: "weekly" }, "Semanal"),
10609
+ /* @__PURE__ */ React17.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
10610
+ )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React17.createElement(
10585
10611
  "select",
10586
10612
  {
10587
10613
  value: recurrenceConfig.day_of_week,
10588
10614
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, day_of_week: parseInt(e.target.value, 10) })),
10589
10615
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10590
10616
  },
10591
- /* @__PURE__ */ React16.createElement("option", { value: 1 }, "Segunda-feira"),
10592
- /* @__PURE__ */ React16.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
10593
- /* @__PURE__ */ React16.createElement("option", { value: 3 }, "Quarta-feira"),
10594
- /* @__PURE__ */ React16.createElement("option", { value: 4 }, "Quinta-feira"),
10595
- /* @__PURE__ */ React16.createElement("option", { value: 5 }, "Sexta-feira"),
10596
- /* @__PURE__ */ React16.createElement("option", { value: 6 }, "S\xE1bado"),
10597
- /* @__PURE__ */ React16.createElement("option", { value: 0 }, "Domingo")
10598
- )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React16.createElement(
10617
+ /* @__PURE__ */ React17.createElement("option", { value: 1 }, "Segunda-feira"),
10618
+ /* @__PURE__ */ React17.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
10619
+ /* @__PURE__ */ React17.createElement("option", { value: 3 }, "Quarta-feira"),
10620
+ /* @__PURE__ */ React17.createElement("option", { value: 4 }, "Quinta-feira"),
10621
+ /* @__PURE__ */ React17.createElement("option", { value: 5 }, "Sexta-feira"),
10622
+ /* @__PURE__ */ React17.createElement("option", { value: 6 }, "S\xE1bado"),
10623
+ /* @__PURE__ */ React17.createElement("option", { value: 0 }, "Domingo")
10624
+ )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React17.createElement(
10599
10625
  "input",
10600
10626
  {
10601
10627
  type: "text",
@@ -10604,23 +10630,23 @@ function InSceneQuestForm({
10604
10630
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, custom_date: e.target.value })),
10605
10631
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10606
10632
  }
10607
- ))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10633
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10608
10634
  "select",
10609
10635
  {
10610
10636
  value: recurrenceConfig.next_assignee_id,
10611
10637
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, next_assignee_id: e.target.value })),
10612
10638
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg pl-8 pr-2 py-1.5 text-xs text-slate-200 appearance-none focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10613
10639
  },
10614
- /* @__PURE__ */ React16.createElement("option", { value: "" }, "Sem respons\xE1vel"),
10615
- viewMembers.map((member) => /* @__PURE__ */ React16.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
10616
- ), /* @__PURE__ */ React16.createElement(FiUser2, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React16.createElement(FiChevronDown6, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React16.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React16.createElement(
10640
+ /* @__PURE__ */ React17.createElement("option", { value: "" }, "Sem respons\xE1vel"),
10641
+ viewMembers.map((member) => /* @__PURE__ */ React17.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
10642
+ ), /* @__PURE__ */ React17.createElement(FiUser2, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React17.createElement(FiChevronDown6, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement(
10617
10643
  QuestReviewStackEditor,
10618
10644
  {
10619
10645
  reviewStack,
10620
10646
  onChange: setReviewStack,
10621
10647
  viewMembers
10622
10648
  }
10623
- )), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React16.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React16.createElement(
10649
+ )), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React17.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__ */ React17.createElement(
10624
10650
  DescriptionDisplay,
10625
10651
  {
10626
10652
  description,
@@ -10630,42 +10656,42 @@ function InSceneQuestForm({
10630
10656
  onMentionClick,
10631
10657
  onSaveDescription: (newDesc) => setDescription(newDesc)
10632
10658
  }
10633
- ), /* @__PURE__ */ React16.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React16.createElement(
10659
+ ), /* @__PURE__ */ React17.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 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React17.createElement(
10634
10660
  "button",
10635
10661
  {
10636
10662
  type: "button",
10637
10663
  onClick: () => setIsDescriptionModalOpen(true),
10638
10664
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
10639
10665
  },
10640
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10641
- )), !description && /* @__PURE__ */ React16.createElement(
10666
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10667
+ )), !description && /* @__PURE__ */ React17.createElement(
10642
10668
  "div",
10643
10669
  {
10644
10670
  onClick: () => setIsDescriptionModalOpen(true),
10645
10671
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
10646
10672
  },
10647
10673
  "Adicionar descri\xE7\xE3o..."
10648
- ))), /* @__PURE__ */ React16.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React16.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React16.createElement(
10674
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React17.createElement(
10649
10675
  "button",
10650
10676
  {
10651
10677
  type: "button",
10652
10678
  onClick: handleCreateGoogleDoc,
10653
10679
  disabled: isLoadingDocs,
10654
- className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-indigo-600/20 hover:bg-indigo-600/30 text-indigo-300 border border-indigo-500/30 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
10680
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
10655
10681
  title: "Criar Documento no Google Docs"
10656
10682
  },
10657
- isLoadingDocs ? /* @__PURE__ */ React16.createElement(AiOutlineLoading3Quarters2, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React16.createElement(SiGoogledocs2, { size: 14, className: "group-hover:scale-110 transition-transform" }),
10683
+ isLoadingDocs ? /* @__PURE__ */ React17.createElement(AiOutlineLoading3Quarters2, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React17.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
10658
10684
  isLoadingDocs ? "Criando..." : "Google Doc"
10659
- ), /* @__PURE__ */ React16.createElement(
10685
+ ), /* @__PURE__ */ React17.createElement(
10660
10686
  "button",
10661
10687
  {
10662
10688
  type: "button",
10663
10689
  onClick: handleAddProp,
10664
10690
  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"
10665
10691
  },
10666
- /* @__PURE__ */ React16.createElement(FiPlus6, { size: 14 }),
10692
+ /* @__PURE__ */ React17.createElement(FiPlus6, { size: 14 }),
10667
10693
  " Adicionar"
10668
- ))), /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React16.createElement(
10694
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React17.createElement(
10669
10695
  CustomPropertyDisplay,
10670
10696
  {
10671
10697
  key: prop.id,
@@ -10678,7 +10704,7 @@ function InSceneQuestForm({
10678
10704
  ),
10679
10705
  onUploadFile
10680
10706
  }
10681
- )), /* @__PURE__ */ React16.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React16.createElement(
10707
+ )), /* @__PURE__ */ React17.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React17.createElement(
10682
10708
  "button",
10683
10709
  {
10684
10710
  key: s,
@@ -10689,37 +10715,37 @@ function InSceneQuestForm({
10689
10715
  },
10690
10716
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
10691
10717
  },
10692
- /* @__PURE__ */ React16.createElement(
10718
+ /* @__PURE__ */ React17.createElement(
10693
10719
  "div",
10694
10720
  {
10695
10721
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${size === s ? "bg-indigo-500 border-indigo-500" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
10696
10722
  },
10697
- size === s && /* @__PURE__ */ React16.createElement(FiCheck9, { size: 12, className: "text-white" })
10723
+ size === s && /* @__PURE__ */ React17.createElement(FiCheck9, { size: 12, className: "text-white" })
10698
10724
  ),
10699
- /* @__PURE__ */ React16.createElement(
10725
+ /* @__PURE__ */ React17.createElement(
10700
10726
  "span",
10701
10727
  {
10702
10728
  className: `text-sm capitalize transition-colors ${size === s ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
10703
10729
  },
10704
10730
  s
10705
10731
  )
10706
- )))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tipos Adicionais"), /* @__PURE__ */ React16.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 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React16.createElement(
10732
+ )))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tipos Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React17.createElement(
10707
10733
  "span",
10708
10734
  {
10709
10735
  key: index,
10710
10736
  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"}`
10711
10737
  },
10712
10738
  t,
10713
- t !== "quest" && /* @__PURE__ */ React16.createElement(
10739
+ t !== "quest" && /* @__PURE__ */ React17.createElement(
10714
10740
  "button",
10715
10741
  {
10716
10742
  type: "button",
10717
10743
  onClick: () => handleRemoveType(index),
10718
10744
  className: "hover:text-white transition-colors"
10719
10745
  },
10720
- /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })
10746
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })
10721
10747
  )
10722
- )), /* @__PURE__ */ React16.createElement(
10748
+ )), /* @__PURE__ */ React17.createElement(
10723
10749
  "input",
10724
10750
  {
10725
10751
  type: "text",
@@ -10732,7 +10758,7 @@ function InSceneQuestForm({
10732
10758
  className: "flex-1 bg-transparent text-sm min-w-[80px] focus:outline-none text-slate-200",
10733
10759
  autoComplete: "off"
10734
10760
  }
10735
- )))), /* @__PURE__ */ React16.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__ */ React16.createElement(
10761
+ )))), /* @__PURE__ */ React17.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__ */ React17.createElement(
10736
10762
  "button",
10737
10763
  {
10738
10764
  type: "button",
@@ -10740,7 +10766,7 @@ function InSceneQuestForm({
10740
10766
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
10741
10767
  },
10742
10768
  "Cancelar"
10743
- ), /* @__PURE__ */ React16.createElement(
10769
+ ), /* @__PURE__ */ React17.createElement(
10744
10770
  "button",
10745
10771
  {
10746
10772
  type: "submit",
@@ -10748,7 +10774,7 @@ function InSceneQuestForm({
10748
10774
  },
10749
10775
  "Salvar Quest"
10750
10776
  )))
10751
- ), isDescriptionModalOpen && /* @__PURE__ */ React16.createElement(
10777
+ ), isDescriptionModalOpen && /* @__PURE__ */ React17.createElement(
10752
10778
  DescriptionEditModal,
10753
10779
  {
10754
10780
  isOpen: isDescriptionModalOpen,
@@ -10764,10 +10790,9 @@ function InSceneQuestForm({
10764
10790
  }
10765
10791
 
10766
10792
  // src/components/NodeDetailsPanel.jsx
10767
- import React17, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10793
+ import React18, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10768
10794
  import { v4 as uuidv48 } from "uuid";
10769
10795
  import { FiPlus as FiPlus7, FiMaximize2 as FiMaximize23, FiX as FiX6, FiCheck as FiCheck10, FiImage as FiImage3, FiEdit2 as FiEdit27, FiLoader as FiLoader2, FiBookOpen as FiBookOpen3, FiSun as FiSun2, FiLink as FiLink5, FiDatabase } from "react-icons/fi";
10770
- import { SiGoogledocs as SiGoogledocs3 } from "react-icons/si";
10771
10796
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters3 } from "react-icons/ai";
10772
10797
  function NodeDetailsPanel({
10773
10798
  node,
@@ -10979,6 +11004,9 @@ function NodeDetailsPanel({
10979
11004
  setCustomProps(updatedProps);
10980
11005
  setHasUnsavedChanges(true);
10981
11006
  triggerAutoSave({ customProps: updatedProps });
11007
+ if (res.link) {
11008
+ window.open(res.link, "_blank");
11009
+ }
10982
11010
  } else {
10983
11011
  alert("Erro ao criar documento: " + res.error);
10984
11012
  }
@@ -11085,7 +11113,7 @@ function NodeDetailsPanel({
11085
11113
  onClose();
11086
11114
  };
11087
11115
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
11088
- return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
11116
+ return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
11089
11117
  "div",
11090
11118
  {
11091
11119
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -11098,7 +11126,7 @@ function NodeDetailsPanel({
11098
11126
  onContextMenu: swallow,
11099
11127
  onDoubleClick: swallow
11100
11128
  },
11101
- /* @__PURE__ */ React17.createElement(
11129
+ /* @__PURE__ */ React18.createElement(
11102
11130
  "div",
11103
11131
  {
11104
11132
  onPointerDown: (e) => {
@@ -11109,7 +11137,7 @@ function NodeDetailsPanel({
11109
11137
  title: "Arraste para redimensionar"
11110
11138
  }
11111
11139
  ),
11112
- isReadMode ? /* @__PURE__ */ React17.createElement(
11140
+ isReadMode ? /* @__PURE__ */ React18.createElement(
11113
11141
  DescriptionReadModePanel,
11114
11142
  {
11115
11143
  title: name || (node == null ? void 0 : node.name),
@@ -11130,23 +11158,23 @@ function NodeDetailsPanel({
11130
11158
  onImageClick: handleImageClickFromText,
11131
11159
  onSaveDescription: handleSaveDescriptionInline
11132
11160
  }
11133
- ) : /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }), /* @__PURE__ */ React17.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React17.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React17.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes do Node"), /* @__PURE__ */ React17.createElement(
11161
+ ) : /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }), /* @__PURE__ */ React18.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React18.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React18.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes do Node"), /* @__PURE__ */ React18.createElement(
11134
11162
  "button",
11135
11163
  {
11136
11164
  onClick: handleCopyLink,
11137
11165
  className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
11138
11166
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para este Node"
11139
11167
  },
11140
- isLinkCopied ? /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React17.createElement(FiLink5, { size: 12 })
11141
- )), /* @__PURE__ */ React17.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || (node == null ? void 0 : node.name))), /* @__PURE__ */ React17.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React17.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Tipos"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React17.createElement("span", { key: index, className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20" }, t, canEdit && /* @__PURE__ */ React17.createElement(
11168
+ isLinkCopied ? /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React18.createElement(FiLink5, { size: 12 })
11169
+ )), /* @__PURE__ */ React18.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || (node == null ? void 0 : node.name))), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Tipos"), /* @__PURE__ */ React18.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__ */ React18.createElement("span", { key: index, className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20" }, t, canEdit && /* @__PURE__ */ React18.createElement(
11142
11170
  "button",
11143
11171
  {
11144
11172
  type: "button",
11145
11173
  onClick: () => handleRemoveType(index),
11146
11174
  className: "hover:text-white transition-colors"
11147
11175
  },
11148
- /* @__PURE__ */ React17.createElement(FiX6, { size: 12 })
11149
- ))), canEdit && /* @__PURE__ */ React17.createElement(
11176
+ /* @__PURE__ */ React18.createElement(FiX6, { size: 12 })
11177
+ ))), canEdit && /* @__PURE__ */ React18.createElement(
11150
11178
  "input",
11151
11179
  {
11152
11180
  type: "text",
@@ -11167,7 +11195,7 @@ function NodeDetailsPanel({
11167
11195
  placeholder: types.length === 0 ? "Ex.: Cliente" : "",
11168
11196
  autoComplete: "off"
11169
11197
  }
11170
- ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React17.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__ */ React17.createElement(
11198
+ ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React18.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__ */ React18.createElement(
11171
11199
  "li",
11172
11200
  {
11173
11201
  key: index,
@@ -11178,7 +11206,7 @@ function NodeDetailsPanel({
11178
11206
  }
11179
11207
  },
11180
11208
  suggestedType
11181
- ))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Nome"), /* @__PURE__ */ React17.createElement(
11209
+ ))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Nome"), /* @__PURE__ */ React18.createElement(
11182
11210
  "input",
11183
11211
  {
11184
11212
  type: "text",
@@ -11187,7 +11215,7 @@ function NodeDetailsPanel({
11187
11215
  readOnly: !canEdit,
11188
11216
  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"}`
11189
11217
  }
11190
- )), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React17.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React17.createElement(
11218
+ )), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React18.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__ */ React18.createElement(
11191
11219
  DescriptionDisplay,
11192
11220
  {
11193
11221
  description,
@@ -11199,7 +11227,7 @@ function NodeDetailsPanel({
11199
11227
  onImageClick: handleImageClickFromText,
11200
11228
  onSaveDescription: handleSaveDescriptionInline
11201
11229
  }
11202
- ), /* @__PURE__ */ React17.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__ */ React17.createElement(
11230
+ ), /* @__PURE__ */ React18.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__ */ React18.createElement(
11203
11231
  "button",
11204
11232
  {
11205
11233
  type: "button",
@@ -11207,8 +11235,8 @@ function NodeDetailsPanel({
11207
11235
  className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`,
11208
11236
  title: "Modo de Leitura"
11209
11237
  },
11210
- /* @__PURE__ */ React17.createElement(FiBookOpen3, { size: 14 })
11211
- ), canEdit && /* @__PURE__ */ React17.createElement(
11238
+ /* @__PURE__ */ React18.createElement(FiBookOpen3, { size: 14 })
11239
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11212
11240
  "button",
11213
11241
  {
11214
11242
  type: "button",
@@ -11216,17 +11244,17 @@ function NodeDetailsPanel({
11216
11244
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
11217
11245
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
11218
11246
  },
11219
- /* @__PURE__ */ React17.createElement(FiEdit27, { size: 14 })
11220
- )), canEdit && !description && /* @__PURE__ */ React17.createElement(
11247
+ /* @__PURE__ */ React18.createElement(FiEdit27, { size: 14 })
11248
+ )), canEdit && !description && /* @__PURE__ */ React18.createElement(
11221
11249
  "div",
11222
11250
  {
11223
11251
  onClick: () => setIsDescriptionModalOpen(true),
11224
11252
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
11225
11253
  },
11226
11254
  "Adicionar descri\xE7\xE3o..."
11227
- ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
11255
+ ))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
11228
11256
  const isSelected = size === s;
11229
- return /* @__PURE__ */ React17.createElement(
11257
+ return /* @__PURE__ */ React18.createElement(
11230
11258
  "button",
11231
11259
  {
11232
11260
  key: s,
@@ -11234,10 +11262,10 @@ function NodeDetailsPanel({
11234
11262
  onClick: () => canEdit && handleSizeChange(s),
11235
11263
  className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}`
11236
11264
  },
11237
- /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12, className: "text-white" })),
11238
- /* @__PURE__ */ React17.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s)
11265
+ /* @__PURE__ */ React18.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__ */ React18.createElement(FiCheck10, { size: 12, className: "text-white" })),
11266
+ /* @__PURE__ */ React18.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s)
11239
11267
  );
11240
- }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React17.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12, className: "text-white" })), /* @__PURE__ */ React17.createElement(
11268
+ }))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React18.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React18.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12, className: "text-white" })), /* @__PURE__ */ React18.createElement(
11241
11269
  "input",
11242
11270
  {
11243
11271
  type: "checkbox",
@@ -11245,14 +11273,14 @@ function NodeDetailsPanel({
11245
11273
  onChange: handleToggleImageMode,
11246
11274
  className: "hidden"
11247
11275
  }
11248
- ), /* @__PURE__ */ React17.createElement("span", { className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}` }, "Usar imagem para representar o node"))), /* @__PURE__ */ React17.createElement(
11276
+ ), /* @__PURE__ */ React18.createElement("span", { className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}` }, "Usar imagem para representar o node"))), /* @__PURE__ */ React18.createElement(
11249
11277
  ColorPicker,
11250
11278
  {
11251
11279
  color,
11252
11280
  onChange: handleColorChange,
11253
11281
  disabled: !canEdit || useImageAsTexture
11254
11282
  }
11255
- ), /* @__PURE__ */ React17.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React17.createElement(FiSun2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React17.createElement(
11283
+ ), /* @__PURE__ */ React18.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React18.createElement(FiSun2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React18.createElement(
11256
11284
  "input",
11257
11285
  {
11258
11286
  type: "range",
@@ -11265,27 +11293,27 @@ function NodeDetailsPanel({
11265
11293
  className: `w-full h-1.5 bg-slate-700 rounded-lg appearance-none ${canEdit ? "cursor-pointer accent-indigo-500 hover:accent-indigo-400" : "cursor-default accent-slate-500"}`,
11266
11294
  title: `Intensidade do brilho: ${intensity}`
11267
11295
  }
11268
- ), /* @__PURE__ */ React17.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React17.createElement("span", { className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}` }, useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Ajuste a cor e a intensidade do brilho.")), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React17.createElement(
11296
+ ), /* @__PURE__ */ React18.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React18.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__ */ React18.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React18.createElement(
11269
11297
  "button",
11270
11298
  {
11271
11299
  type: "button",
11272
11300
  onClick: handleCreateGoogleDoc,
11273
11301
  disabled: isLoadingDocs,
11274
- className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-indigo-600/20 hover:bg-indigo-600/30 text-indigo-300 border border-indigo-500/30 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
11302
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
11275
11303
  title: "Criar Documento no Google Docs"
11276
11304
  },
11277
- isLoadingDocs ? /* @__PURE__ */ React17.createElement(AiOutlineLoading3Quarters3, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React17.createElement(SiGoogledocs3, { size: 14, className: "group-hover:scale-110 transition-transform" }),
11305
+ isLoadingDocs ? /* @__PURE__ */ React18.createElement(AiOutlineLoading3Quarters3, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React18.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
11278
11306
  isLoadingDocs ? "Criando..." : "Google Doc"
11279
- ), canEdit && /* @__PURE__ */ React17.createElement(
11307
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11280
11308
  "button",
11281
11309
  {
11282
11310
  type: "button",
11283
11311
  onClick: handleAddProp,
11284
11312
  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"
11285
11313
  },
11286
- /* @__PURE__ */ React17.createElement(FiPlus7, { size: 14 }),
11314
+ /* @__PURE__ */ React18.createElement(FiPlus7, { size: 14 }),
11287
11315
  " Adicionar"
11288
- ))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React17.createElement(
11316
+ ))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React18.createElement(
11289
11317
  CustomPropertyDisplay,
11290
11318
  {
11291
11319
  key: prop.id,
@@ -11300,7 +11328,7 @@ function NodeDetailsPanel({
11300
11328
  onUploadFile: canEdit ? onUploadFile : void 0,
11301
11329
  readOnly: !canEdit
11302
11330
  }
11303
- )), /* @__PURE__ */ React17.createElement("div", { ref: propsEndRef }))), currentDatasetName && /* @__PURE__ */ React17.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__ */ React17.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React17.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__ */ React17.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__ */ React17.createElement(
11331
+ )), /* @__PURE__ */ React18.createElement("div", { ref: propsEndRef }))), currentDatasetName && /* @__PURE__ */ React18.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__ */ React18.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React18.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React18.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__ */ React18.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__ */ React18.createElement(
11304
11332
  "button",
11305
11333
  {
11306
11334
  onClick: () => handleSave(false),
@@ -11309,10 +11337,10 @@ function NodeDetailsPanel({
11309
11337
  ${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"}
11310
11338
  `
11311
11339
  },
11312
- isSaving && /* @__PURE__ */ React17.createElement(FiLoader2, { className: "animate-spin" }),
11340
+ isSaving && /* @__PURE__ */ React18.createElement(FiLoader2, { className: "animate-spin" }),
11313
11341
  isSaving ? "Salvando..." : "Salvar"
11314
11342
  )))
11315
- ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React17.createElement(
11343
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React18.createElement(
11316
11344
  DescriptionEditModal,
11317
11345
  {
11318
11346
  isOpen: isDescriptionModalOpen,
@@ -11333,12 +11361,12 @@ function NodeDetailsPanel({
11333
11361
  }
11334
11362
 
11335
11363
  // src/components/QuestDetailsPanel.jsx
11336
- import React19, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11364
+ import React20, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11337
11365
  import { v4 as uuidv49 } from "uuid";
11338
11366
  import { FiPlus as FiPlus8, FiX as FiX7, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink7, FiTarget as FiTarget3, FiChevronDown as FiChevronDown7, FiUser as FiUser3, FiSearch as FiSearch7, FiRepeat as FiRepeat2, FiCalendar as FiCalendar2, FiImage as FiImage4, FiCopy as FiCopy4 } from "react-icons/fi";
11339
11367
 
11340
11368
  // src/components/QuestTimeline.jsx
11341
- import React18 from "react";
11369
+ import React19 from "react";
11342
11370
  import {
11343
11371
  FiGitCommit,
11344
11372
  FiUserPlus,
@@ -11377,25 +11405,25 @@ function QuestTimeline({
11377
11405
  }).format(date);
11378
11406
  };
11379
11407
  if (timeline.length === 0) {
11380
- return /* @__PURE__ */ React18.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React18.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React18.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
11408
+ return /* @__PURE__ */ React19.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React19.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React19.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
11381
11409
  }
11382
- return /* @__PURE__ */ React18.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React18.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
11410
+ return /* @__PURE__ */ React19.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React19.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) => {
11383
11411
  const config = DEFAULT_ICON_CONFIG;
11384
11412
  const Icon = config.icon;
11385
11413
  const actorName = getMemberName(event.actorId);
11386
- return /* @__PURE__ */ React18.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React18.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React18.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React18.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ React18.createElement(
11414
+ return /* @__PURE__ */ React19.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React19.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__ */ React19.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React19.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ React19.createElement(
11387
11415
  "button",
11388
11416
  {
11389
11417
  onClick: () => onAddNote(event),
11390
11418
  className: "opacity-0 group-hover:opacity-100 p-1 rounded-md hover:bg-white/5 text-slate-500 hover:text-indigo-400 transition-all",
11391
11419
  title: "Adicionar detalhe/anexo a esta etapa"
11392
11420
  },
11393
- /* @__PURE__ */ React18.createElement(FiPlusCircle, { size: 12 })
11394
- )), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), event.notes && /* @__PURE__ */ React18.createElement("div", { className: "mt-1 py-1 px-2 rounded bg-indigo-500/5 border-l-2 border-indigo-500/30" }, /* @__PURE__ */ React18.createElement("p", { className: "text-[11px] text-slate-300 italic whitespace-pre-wrap" }, event.notes)), (event.from_status || event.to_status) && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React18.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => {
11421
+ /* @__PURE__ */ React19.createElement(FiPlusCircle, { size: 12 })
11422
+ )), /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React19.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), event.notes && /* @__PURE__ */ React19.createElement("div", { className: "mt-1 py-1 px-2 rounded bg-indigo-500/5 border-l-2 border-indigo-500/30" }, /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] text-slate-300 italic whitespace-pre-wrap" }, event.notes)), (event.from_status || event.to_status) && /* @__PURE__ */ React19.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__ */ React19.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React19.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React19.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]) => {
11395
11423
  const isAssigneeId = key.toLowerCase().includes("assignee_id") || key.toLowerCase().includes("respons\xE1vel") || key.toLowerCase().includes("assignee id");
11396
11424
  const displayValue = isAssigneeId && typeof value === "string" ? getMemberName(value) : typeof value === "string" ? value : JSON.stringify(value);
11397
- return /* @__PURE__ */ React18.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React18.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ React18.createElement("span", { className: `${isAssigneeId ? "text-indigo-300 font-medium" : "text-slate-300"} truncate font-mono` }, displayValue));
11398
- })), event.links && event.links.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React18.createElement(
11425
+ return /* @__PURE__ */ React19.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React19.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ React19.createElement("span", { className: `${isAssigneeId ? "text-indigo-300 font-medium" : "text-slate-300"} truncate font-mono` }, displayValue));
11426
+ })), event.links && event.links.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React19.createElement(
11399
11427
  "a",
11400
11428
  {
11401
11429
  key: lIdx,
@@ -11404,9 +11432,9 @@ function QuestTimeline({
11404
11432
  rel: "noopener noreferrer",
11405
11433
  className: "flex items-center gap-1.5 px-2 py-1 rounded bg-white/5 border border-white/5 hover:bg-white/10 transition-colors text-[10px] text-sky-400 font-medium"
11406
11434
  },
11407
- /* @__PURE__ */ React18.createElement(FiLink6, { size: 10 }),
11435
+ /* @__PURE__ */ React19.createElement(FiLink6, { size: 10 }),
11408
11436
  link.name || "Link"
11409
- ))), event.images && event.images.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.images.map((img, iIdx) => /* @__PURE__ */ React18.createElement(
11437
+ ))), event.images && event.images.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.images.map((img, iIdx) => /* @__PURE__ */ React19.createElement(
11410
11438
  "button",
11411
11439
  {
11412
11440
  key: iIdx,
@@ -11414,14 +11442,13 @@ function QuestTimeline({
11414
11442
  onClick: () => onOpenImageViewer == null ? void 0 : onOpenImageViewer(event.images, iIdx),
11415
11443
  className: "relative w-12 h-12 rounded border border-white/10 overflow-hidden hover:border-sky-500/50 transition-colors group/img"
11416
11444
  },
11417
- /* @__PURE__ */ React18.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
11418
- /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover/img:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React18.createElement(FiSearch6, { size: 12, className: "text-white" }))
11445
+ /* @__PURE__ */ React19.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
11446
+ /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover/img:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React19.createElement(FiSearch6, { size: 12, className: "text-white" }))
11419
11447
  )))));
11420
11448
  })));
11421
11449
  }
11422
11450
 
11423
11451
  // src/components/QuestDetailsPanel.jsx
11424
- import { SiGoogledocs as SiGoogledocs4 } from "react-icons/si";
11425
11452
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters4 } from "react-icons/ai";
11426
11453
  var QUEST_STATUS_COLORS3 = {
11427
11454
  "Backlog": "#64748b",
@@ -11512,11 +11539,11 @@ function QuestDetailsPanel({
11512
11539
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState19(false);
11513
11540
  const [dependencyInput, setDependencyInput] = useState19("");
11514
11541
  const [showDependencySuggestions, setShowDependencySuggestions] = useState19(false);
11515
- const activeMilestones = React19.useMemo(
11542
+ const activeMilestones = React20.useMemo(
11516
11543
  () => (milestones || []).filter((ms) => ms.status === "active"),
11517
11544
  [milestones]
11518
11545
  );
11519
- const filteredMilestones = React19.useMemo(() => {
11546
+ const filteredMilestones = React20.useMemo(() => {
11520
11547
  const search = milestoneInput.toLowerCase().trim();
11521
11548
  return activeMilestones.filter(
11522
11549
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -11555,11 +11582,11 @@ function QuestDetailsPanel({
11555
11582
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
11556
11583
  }
11557
11584
  };
11558
- const dependencyQuests = React19.useMemo(
11585
+ const dependencyQuests = React20.useMemo(
11559
11586
  () => availableNodes.filter((n) => n.is_quest && String(n.id) !== String(node == null ? void 0 : node.id)),
11560
11587
  [availableNodes, node == null ? void 0 : node.id]
11561
11588
  );
11562
- const filteredDependencies = React19.useMemo(() => {
11589
+ const filteredDependencies = React20.useMemo(() => {
11563
11590
  const search = dependencyInput.toLowerCase().trim();
11564
11591
  return dependencyQuests.filter((q) => {
11565
11592
  var _a2;
@@ -11589,7 +11616,7 @@ function QuestDetailsPanel({
11589
11616
  handleRemoveDependency(dependencyIds[dependencyIds.length - 1]);
11590
11617
  }
11591
11618
  };
11592
- const blockedStatus = React19.useMemo(
11619
+ const blockedStatus = React20.useMemo(
11593
11620
  () => isQuestBlocked({ ...node, dependency_ids: dependencyIds }, availableNodes),
11594
11621
  [node, dependencyIds, availableNodes]
11595
11622
  );
@@ -11907,6 +11934,9 @@ ${noteText}` : noteText : entry.notes,
11907
11934
  setCustomProps(updatedProps);
11908
11935
  setHasUnsavedChanges(true);
11909
11936
  triggerAutoSave({ customProps: updatedProps });
11937
+ if (res.link) {
11938
+ window.open(res.link, "_blank");
11939
+ }
11910
11940
  } else {
11911
11941
  alert("Erro ao criar documento: " + res.error);
11912
11942
  }
@@ -11997,7 +12027,7 @@ ${noteText}` : noteText : entry.notes,
11997
12027
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
11998
12028
  const assigneeMember = viewMembers.find((m) => m.id === assigneeId);
11999
12029
  const isAssigneeUndefined = assigneeId && !assigneeMember;
12000
- return /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
12030
+ return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
12001
12031
  "div",
12002
12032
  {
12003
12033
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -12010,11 +12040,11 @@ ${noteText}` : noteText : entry.notes,
12010
12040
  onContextMenu: swallow,
12011
12041
  onDoubleClick: swallow
12012
12042
  },
12013
- /* @__PURE__ */ React19.createElement("div", { onPointerDown: (e) => {
12043
+ /* @__PURE__ */ React20.createElement("div", { onPointerDown: (e) => {
12014
12044
  e.stopPropagation();
12015
12045
  handleResize(e);
12016
12046
  }, className: "absolute left-0 top-0 bottom-0 w-2 cursor-col-resize hover:bg-indigo-500/50 z-[2000] transition-colors", title: "Arraste para redimensionar" }),
12017
- isReadMode ? /* @__PURE__ */ React19.createElement(
12047
+ isReadMode ? /* @__PURE__ */ React20.createElement(
12018
12048
  DescriptionReadModePanel,
12019
12049
  {
12020
12050
  title: standardizedName || (node == null ? void 0 : node.name),
@@ -12035,7 +12065,7 @@ ${noteText}` : noteText : entry.notes,
12035
12065
  onImageClick: handleImageClickFromText,
12036
12066
  onSaveDescription: handleSaveDescriptionInline
12037
12067
  }
12038
- ) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React19.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React19.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React19.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React19.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React19.createElement(
12068
+ ) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React20.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React20.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React20.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React20.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__ */ React20.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React20.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React20.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React20.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__ */ React20.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React20.createElement(
12039
12069
  "input",
12040
12070
  {
12041
12071
  type: "text",
@@ -12044,7 +12074,7 @@ ${noteText}` : noteText : entry.notes,
12044
12074
  readOnly: !canEdit,
12045
12075
  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"}`
12046
12076
  }
12047
- ), /* @__PURE__ */ React19.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ React19.createElement(
12077
+ ), /* @__PURE__ */ React20.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React20.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ React20.createElement(
12048
12078
  "button",
12049
12079
  {
12050
12080
  type: "button",
@@ -12052,8 +12082,8 @@ ${noteText}` : noteText : entry.notes,
12052
12082
  className: `p-1 rounded-md transition-all hover:bg-white/5 ${isNameCopied ? "text-green-400 scale-110" : "text-slate-500 hover:text-indigo-400"} flex-shrink-0`,
12053
12083
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
12054
12084
  },
12055
- isNameCopied ? /* @__PURE__ */ React19.createElement(FiCheck11, { size: 10 }) : /* @__PURE__ */ React19.createElement(FiCopy4, { size: 10 })
12056
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), canEdit && !questDate && /* @__PURE__ */ React19.createElement(
12085
+ isNameCopied ? /* @__PURE__ */ React20.createElement(FiCheck11, { size: 10 }) : /* @__PURE__ */ React20.createElement(FiCopy4, { size: 10 })
12086
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), canEdit && !questDate && /* @__PURE__ */ React20.createElement(
12057
12087
  "button",
12058
12088
  {
12059
12089
  type: "button",
@@ -12064,7 +12094,7 @@ ${noteText}` : noteText : entry.notes,
12064
12094
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
12065
12095
  },
12066
12096
  "+ Adicionar"
12067
- )), questDate && /* @__PURE__ */ React19.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React19.createElement("div", { className: `flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1 ${!canEdit ? "opacity-70 pointer-events-none" : ""}` }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React19.createElement(
12097
+ )), questDate && /* @__PURE__ */ React20.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React20.createElement("div", { className: `flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1 ${!canEdit ? "opacity-70 pointer-events-none" : ""}` }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React20.createElement(
12068
12098
  "button",
12069
12099
  {
12070
12100
  key: t,
@@ -12083,7 +12113,7 @@ ${noteText}` : noteText : entry.notes,
12083
12113
  className: `flex-1 text-[10px] px-2 py-1.5 rounded-md transition-colors ${questDate.type === t ? "bg-indigo-600 text-white font-semibold shadow" : "text-slate-400 hover:bg-slate-700/50"}`
12084
12114
  },
12085
12115
  t === "Date Interval" ? "Intervalo" : t
12086
- )) : /* @__PURE__ */ React19.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React19.createElement(FiCalendar2, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React19.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React19.createElement(
12116
+ )) : /* @__PURE__ */ React20.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React20.createElement(FiCalendar2, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React20.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), canEdit && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React20.createElement(
12087
12117
  "button",
12088
12118
  {
12089
12119
  type: "button",
@@ -12094,8 +12124,8 @@ ${noteText}` : noteText : entry.notes,
12094
12124
  className: "w-8 h-8 grid place-items-center rounded-lg bg-green-500/10 text-green-400 hover:bg-green-500/20 transition-colors",
12095
12125
  title: "Confirmar data"
12096
12126
  },
12097
- /* @__PURE__ */ React19.createElement(FiCheck11, { size: 14 })
12098
- ) : /* @__PURE__ */ React19.createElement(
12127
+ /* @__PURE__ */ React20.createElement(FiCheck11, { size: 14 })
12128
+ ) : /* @__PURE__ */ React20.createElement(
12099
12129
  "button",
12100
12130
  {
12101
12131
  type: "button",
@@ -12106,8 +12136,8 @@ ${noteText}` : noteText : entry.notes,
12106
12136
  className: "w-8 h-8 grid place-items-center rounded-lg bg-indigo-500/10 text-indigo-400 hover:bg-indigo-500/20 transition-colors",
12107
12137
  title: "Editar data"
12108
12138
  },
12109
- /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 })
12110
- ), /* @__PURE__ */ React19.createElement(
12139
+ /* @__PURE__ */ React20.createElement(FiEdit28, { size: 14 })
12140
+ ), /* @__PURE__ */ React20.createElement(
12111
12141
  "button",
12112
12142
  {
12113
12143
  type: "button",
@@ -12118,8 +12148,8 @@ ${noteText}` : noteText : entry.notes,
12118
12148
  className: "w-8 h-8 grid place-items-center rounded-lg bg-red-500/10 text-red-400 hover:bg-red-500/20 transition-colors",
12119
12149
  title: "Remover data"
12120
12150
  },
12121
- /* @__PURE__ */ React19.createElement(FiX7, { size: 14 })
12122
- ))), !questDate.confirmed && canEdit && /* @__PURE__ */ React19.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React19.createElement(
12151
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 14 })
12152
+ ))), !questDate.confirmed && canEdit && /* @__PURE__ */ React20.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React20.createElement(
12123
12153
  "input",
12124
12154
  {
12125
12155
  type: "text",
@@ -12140,7 +12170,7 @@ ${noteText}` : noteText : entry.notes,
12140
12170
  maxLength: "10",
12141
12171
  className: "w-full bg-slate-800/70 p-2 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
12142
12172
  }
12143
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(
12173
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(
12144
12174
  "input",
12145
12175
  {
12146
12176
  type: "text",
@@ -12161,7 +12191,7 @@ ${noteText}` : noteText : entry.notes,
12161
12191
  maxLength: "10",
12162
12192
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
12163
12193
  }
12164
- ), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React19.createElement(
12194
+ ), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React20.createElement(
12165
12195
  "input",
12166
12196
  {
12167
12197
  type: "text",
@@ -12182,11 +12212,11 @@ ${noteText}` : noteText : entry.notes,
12182
12212
  maxLength: "10",
12183
12213
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
12184
12214
  }
12185
- ))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Milestones"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, milestoneIds.map((id) => {
12215
+ ))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Milestones"), /* @__PURE__ */ React20.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` }, milestoneIds.map((id) => {
12186
12216
  const ms = (milestones || []).find((m) => m.id === id);
12187
12217
  if (!ms) return null;
12188
- return /* @__PURE__ */ React19.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })));
12189
- }), canEdit && /* @__PURE__ */ React19.createElement(
12218
+ return /* @__PURE__ */ React20.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, canEdit && /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })));
12219
+ }), canEdit && /* @__PURE__ */ React20.createElement(
12190
12220
  "input",
12191
12221
  {
12192
12222
  type: "text",
@@ -12207,7 +12237,7 @@ ${noteText}` : noteText : entry.notes,
12207
12237
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
12208
12238
  autoComplete: "off"
12209
12239
  }
12210
- ), canEdit && showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React19.createElement(
12240
+ ), canEdit && showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React20.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React20.createElement(
12211
12241
  "li",
12212
12242
  {
12213
12243
  key: ms.id,
@@ -12218,7 +12248,7 @@ ${noteText}` : noteText : entry.notes,
12218
12248
  }
12219
12249
  },
12220
12250
  ms.name
12221
- ))), canEdit && showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React19.createElement(
12251
+ ))), canEdit && showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React20.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React20.createElement(
12222
12252
  "li",
12223
12253
  {
12224
12254
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -12227,9 +12257,9 @@ ${noteText}` : noteText : entry.notes,
12227
12257
  handleAddMilestone({ name: milestoneInput });
12228
12258
  }
12229
12259
  },
12230
- /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
12231
- /* @__PURE__ */ React19.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
12232
- )))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12260
+ /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
12261
+ /* @__PURE__ */ React20.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
12262
+ )))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12233
12263
  "button",
12234
12264
  {
12235
12265
  type: "button",
@@ -12237,12 +12267,12 @@ ${noteText}` : noteText : entry.notes,
12237
12267
  disabled: !canEdit,
12238
12268
  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"}`
12239
12269
  },
12240
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement("span", { className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]", style: { backgroundColor: QUEST_STATUS_COLORS3[status] } }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, status)),
12241
- canEdit && /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
12242
- ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS3).map((s) => {
12270
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.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__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, status)),
12271
+ canEdit && /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
12272
+ ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ React20.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) => {
12243
12273
  const isBacklog = s === "Backlog";
12244
12274
  const isDisabled = !isBacklog && blockedStatus.isBlocked;
12245
- return /* @__PURE__ */ React19.createElement(
12275
+ return /* @__PURE__ */ React20.createElement(
12246
12276
  "li",
12247
12277
  {
12248
12278
  key: s,
@@ -12255,22 +12285,22 @@ ${noteText}` : noteText : entry.notes,
12255
12285
  className: `px-3 py-2.5 text-sm transition-colors flex items-center justify-between ${status === s ? "bg-indigo-500/20 text-white" : "text-slate-300"} ${isDisabled ? "opacity-40 cursor-not-allowed grayscale" : "cursor-pointer hover:bg-white/5 hover:text-white"}`,
12256
12286
  title: isDisabled ? `Bloqueado por depend\xEAncias: ${blockedStatus.pendingDependencies.map((d) => d.raw_title || d.name).join(", ")}` : ""
12257
12287
  },
12258
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }), s),
12259
- isDisabled && /* @__PURE__ */ React19.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
12288
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }), s),
12289
+ isDisabled && /* @__PURE__ */ React20.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
12260
12290
  );
12261
- }))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12291
+ }))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12262
12292
  "button",
12263
12293
  {
12264
12294
  type: "button",
12265
12295
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
12266
12296
  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"
12267
12297
  },
12268
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
12269
- /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
12270
- ), isAssigneeDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12298
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
12299
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
12300
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12271
12301
  setIsAssigneeDropdownOpen(false);
12272
12302
  setAssigneeSearchQuery("");
12273
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React19.createElement(
12303
+ } }), /* @__PURE__ */ React20.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__ */ React20.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React20.createElement(
12274
12304
  "input",
12275
12305
  {
12276
12306
  type: "text",
@@ -12281,7 +12311,7 @@ ${noteText}` : noteText : entry.notes,
12281
12311
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
12282
12312
  onClick: (e) => e.stopPropagation()
12283
12313
  }
12284
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React19.createElement(
12314
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React20.createElement(
12285
12315
  "li",
12286
12316
  {
12287
12317
  onClick: () => {
@@ -12299,7 +12329,7 @@ ${noteText}` : noteText : entry.notes,
12299
12329
  className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
12300
12330
  },
12301
12331
  "Nenhum"
12302
- ), isAssigneeUndefined && /* @__PURE__ */ React19.createElement(
12332
+ ), isAssigneeUndefined && /* @__PURE__ */ React20.createElement(
12303
12333
  "li",
12304
12334
  {
12305
12335
  onClick: () => {
@@ -12312,7 +12342,7 @@ ${noteText}` : noteText : entry.notes,
12312
12342
  ), viewMembers.filter((member) => {
12313
12343
  const search = assigneeSearchQuery.toLowerCase();
12314
12344
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12315
- }).map((member) => /* @__PURE__ */ React19.createElement(
12345
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12316
12346
  "li",
12317
12347
  {
12318
12348
  key: member.id,
@@ -12334,7 +12364,7 @@ ${noteText}` : noteText : entry.notes,
12334
12364
  )), viewMembers.filter((member) => {
12335
12365
  const search = assigneeSearchQuery.toLowerCase();
12336
12366
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12337
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React19.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React19.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React19.createElement(
12367
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React20.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__ */ React20.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React20.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React20.createElement(
12338
12368
  "button",
12339
12369
  {
12340
12370
  type: "button",
@@ -12345,8 +12375,8 @@ ${noteText}` : noteText : entry.notes,
12345
12375
  },
12346
12376
  className: `relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${recurrenceConfig.enabled ? "bg-indigo-600" : "bg-slate-700"} ${canEdit ? "cursor-pointer" : "cursor-default opacity-60"}`
12347
12377
  },
12348
- /* @__PURE__ */ React19.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
12349
- )), recurrenceConfig.enabled && /* @__PURE__ */ React19.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React19.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React19.createElement(
12378
+ /* @__PURE__ */ React20.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
12379
+ )), recurrenceConfig.enabled && /* @__PURE__ */ React20.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React20.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React20.createElement(
12350
12380
  "select",
12351
12381
  {
12352
12382
  disabled: !canEdit,
@@ -12357,10 +12387,10 @@ ${noteText}` : noteText : entry.notes,
12357
12387
  },
12358
12388
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12359
12389
  },
12360
- /* @__PURE__ */ React19.createElement("option", { value: "daily" }, "Di\xE1ria"),
12361
- /* @__PURE__ */ React19.createElement("option", { value: "weekly" }, "Semanal"),
12362
- /* @__PURE__ */ React19.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
12363
- )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React19.createElement(
12390
+ /* @__PURE__ */ React20.createElement("option", { value: "daily" }, "Di\xE1ria"),
12391
+ /* @__PURE__ */ React20.createElement("option", { value: "weekly" }, "Semanal"),
12392
+ /* @__PURE__ */ React20.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
12393
+ )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React20.createElement(
12364
12394
  "select",
12365
12395
  {
12366
12396
  disabled: !canEdit,
@@ -12371,14 +12401,14 @@ ${noteText}` : noteText : entry.notes,
12371
12401
  },
12372
12402
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12373
12403
  },
12374
- /* @__PURE__ */ React19.createElement("option", { value: 1 }, "Segunda-feira"),
12375
- /* @__PURE__ */ React19.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
12376
- /* @__PURE__ */ React19.createElement("option", { value: 3 }, "Quarta-feira"),
12377
- /* @__PURE__ */ React19.createElement("option", { value: 4 }, "Quinta-feira"),
12378
- /* @__PURE__ */ React19.createElement("option", { value: 5 }, "Sexta-feira"),
12379
- /* @__PURE__ */ React19.createElement("option", { value: 6 }, "S\xE1bado"),
12380
- /* @__PURE__ */ React19.createElement("option", { value: 0 }, "Domingo")
12381
- )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React19.createElement(
12404
+ /* @__PURE__ */ React20.createElement("option", { value: 1 }, "Segunda-feira"),
12405
+ /* @__PURE__ */ React20.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
12406
+ /* @__PURE__ */ React20.createElement("option", { value: 3 }, "Quarta-feira"),
12407
+ /* @__PURE__ */ React20.createElement("option", { value: 4 }, "Quinta-feira"),
12408
+ /* @__PURE__ */ React20.createElement("option", { value: 5 }, "Sexta-feira"),
12409
+ /* @__PURE__ */ React20.createElement("option", { value: 6 }, "S\xE1bado"),
12410
+ /* @__PURE__ */ React20.createElement("option", { value: 0 }, "Domingo")
12411
+ )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React20.createElement(
12382
12412
  "input",
12383
12413
  {
12384
12414
  readOnly: !canEdit,
@@ -12391,7 +12421,7 @@ ${noteText}` : noteText : entry.notes,
12391
12421
  },
12392
12422
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "text-slate-400"}`
12393
12423
  }
12394
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12424
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12395
12425
  "select",
12396
12426
  {
12397
12427
  disabled: !canEdit,
@@ -12402,9 +12432,9 @@ ${noteText}` : noteText : entry.notes,
12402
12432
  },
12403
12433
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg pl-8 pr-2 py-1.5 text-xs text-slate-200 appearance-none focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12404
12434
  },
12405
- /* @__PURE__ */ React19.createElement("option", { value: "" }, "Sem respons\xE1vel"),
12406
- viewMembers.map((member) => /* @__PURE__ */ React19.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
12407
- ), /* @__PURE__ */ React19.createElement(FiUser3, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement(
12435
+ /* @__PURE__ */ React20.createElement("option", { value: "" }, "Sem respons\xE1vel"),
12436
+ viewMembers.map((member) => /* @__PURE__ */ React20.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
12437
+ ), /* @__PURE__ */ React20.createElement(FiUser3, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement(
12408
12438
  QuestReviewStackEditor,
12409
12439
  {
12410
12440
  reviewStack,
@@ -12415,19 +12445,19 @@ ${noteText}` : noteText : entry.notes,
12415
12445
  viewMembers,
12416
12446
  readOnly: !canEdit
12417
12447
  }
12418
- )), status === "Review" && canEdit && /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "bg-slate-900/40 rounded-xl p-4 border border-white/5 space-y-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "A\xE7\xF5es de Review"), /* @__PURE__ */ React19.createElement("span", { className: "px-2 py-0.5 rounded-full bg-purple-500/10 text-purple-300 text-[10px] font-medium border border-purple-500/20" }, "Em Revis\xE3o")), /* @__PURE__ */ React19.createElement("p", { className: "text-xs text-slate-400 leading-relaxed" }, "Selecione o respons\xE1vel abaixo para retornar o ciclo para opera\xE7\xE3o."), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 flex flex-col" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-400 font-medium ml-0.5" }, "Retornar para:"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12448
+ )), status === "Review" && canEdit && /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "bg-slate-900/40 rounded-xl p-4 border border-white/5 space-y-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "A\xE7\xF5es de Review"), /* @__PURE__ */ React20.createElement("span", { className: "px-2 py-0.5 rounded-full bg-purple-500/10 text-purple-300 text-[10px] font-medium border border-purple-500/20" }, "Em Revis\xE3o")), /* @__PURE__ */ React20.createElement("p", { className: "text-xs text-slate-400 leading-relaxed" }, "Selecione o respons\xE1vel abaixo para retornar o ciclo para opera\xE7\xE3o."), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 flex flex-col" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-400 font-medium ml-0.5" }, "Retornar para:"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12419
12449
  "button",
12420
12450
  {
12421
12451
  type: "button",
12422
12452
  onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
12423
12453
  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"
12424
12454
  },
12425
- /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, ((_b = viewMembers.find((m) => String(m.id) === String(returnAssigneeId))) == null ? void 0 : _b.name) || "Selecionar respons\xE1vel...")),
12426
- /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
12427
- ), isReturnDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12455
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React20.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...")),
12456
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
12457
+ ), isReturnDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12428
12458
  setIsReturnDropdownOpen(false);
12429
12459
  setReturnSearchQuery("");
12430
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute bottom-full left-0 mb-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React19.createElement(
12460
+ } }), /* @__PURE__ */ React20.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__ */ React20.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiSearch7, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React20.createElement(
12431
12461
  "input",
12432
12462
  {
12433
12463
  type: "text",
@@ -12438,10 +12468,10 @@ ${noteText}` : noteText : entry.notes,
12438
12468
  className: "bg-transparent border-none outline-none text-[10px] text-white placeholder-slate-500 w-full",
12439
12469
  onClick: (e) => e.stopPropagation()
12440
12470
  }
12441
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12471
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12442
12472
  const search = returnSearchQuery.toLowerCase();
12443
12473
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12444
- }).map((member) => /* @__PURE__ */ React19.createElement(
12474
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12445
12475
  "li",
12446
12476
  {
12447
12477
  key: member.id,
@@ -12456,7 +12486,7 @@ ${noteText}` : noteText : entry.notes,
12456
12486
  )), viewMembers.filter((member) => {
12457
12487
  const search = returnSearchQuery.toLowerCase();
12458
12488
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12459
- }).length === 0 && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-[10px] text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React19.createElement(
12489
+ }).length === 0 && /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-4 text-[10px] text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React20.createElement(
12460
12490
  "button",
12461
12491
  {
12462
12492
  type: "button",
@@ -12464,13 +12494,13 @@ ${noteText}` : noteText : entry.notes,
12464
12494
  disabled: isSaving || !returnAssigneeId,
12465
12495
  className: `w-full h-10 flex items-center justify-center gap-2 rounded-lg text-xs font-semibold border transition-all active:scale-[0.98] disabled:opacity-40 disabled:grayscale-[0.5] disabled:cursor-not-allowed ${!returnAssigneeId ? "bg-slate-800 text-slate-500 border-white/5" : "bg-slate-800 hover:bg-slate-700 text-purple-300 border-purple-500/20 hover:border-purple-500/40"}`
12466
12496
  },
12467
- /* @__PURE__ */ React19.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React19.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
12497
+ /* @__PURE__ */ React20.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__ */ React20.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
12468
12498
  "Retornar para Opera\xE7\xE3o"
12469
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React19.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React19.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React19.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React19.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
12499
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React20.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__ */ React20.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React20.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__ */ React20.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React20.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__ */ React20.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
12470
12500
  const depNode = availableNodes.find((n) => String(n.id) === String(depId));
12471
12501
  if (!depNode) return null;
12472
12502
  const isDone = depNode.status === "Done";
12473
- return /* @__PURE__ */ React19.createElement(
12503
+ return /* @__PURE__ */ React20.createElement(
12474
12504
  "span",
12475
12505
  {
12476
12506
  key: depId,
@@ -12478,9 +12508,9 @@ ${noteText}` : noteText : entry.notes,
12478
12508
  className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border cursor-pointer hover:brightness-110 transition-all ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
12479
12509
  title: isDone ? `Pronta - Clique para focar` : `Pendente - Clique para focar`
12480
12510
  },
12481
- /* @__PURE__ */ React19.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12511
+ /* @__PURE__ */ React20.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12482
12512
  depNode.raw_title || depNode.name,
12483
- canEdit && /* @__PURE__ */ React19.createElement(
12513
+ canEdit && /* @__PURE__ */ React20.createElement(
12484
12514
  "button",
12485
12515
  {
12486
12516
  type: "button",
@@ -12490,10 +12520,10 @@ ${noteText}` : noteText : entry.notes,
12490
12520
  },
12491
12521
  className: "hover:text-white transition-colors opacity-60 hover:opacity-100 Ml-1"
12492
12522
  },
12493
- /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })
12523
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })
12494
12524
  )
12495
12525
  );
12496
- }), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React19.createElement(
12526
+ }), canEdit && /* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React20.createElement(
12497
12527
  "input",
12498
12528
  {
12499
12529
  type: "text",
@@ -12510,7 +12540,7 @@ ${noteText}` : noteText : entry.notes,
12510
12540
  placeholder: dependencyIds.length === 0 ? "Adicionar Quest de Origem..." : "",
12511
12541
  autoComplete: "off"
12512
12542
  }
12513
- ), showDependencySuggestions && /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React19.createElement(
12543
+ ), showDependencySuggestions && /* @__PURE__ */ React20.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React20.createElement(
12514
12544
  "li",
12515
12545
  {
12516
12546
  key: q.id,
@@ -12520,20 +12550,20 @@ ${noteText}` : noteText : entry.notes,
12520
12550
  handleAddDependency(q);
12521
12551
  }
12522
12552
  },
12523
- /* @__PURE__ */ React19.createElement("span", { className: "truncate" }, q.raw_title || q.name),
12524
- /* @__PURE__ */ React19.createElement("span", { className: `text-[10px] px-1.5 py-0.5 rounded border ${q.status === "Done" ? "text-green-400 border-green-500/30" : "text-slate-500 border-white/5"}` }, q.status || "Backlog")
12525
- )) : /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-amber-500/5 rounded-lg border border-amber-500/10 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React19.createElement(FiRepeat2, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ React19.createElement("p", { className: "text-[10px] text-amber-200/80 font-medium" }, "Esta quest est\xE1 bloqueada por ", blockedStatus.pendingDependencies.length, " tarefa(s) pendente(s)."))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React19.createElement(
12553
+ /* @__PURE__ */ React20.createElement("span", { className: "truncate" }, q.raw_title || q.name),
12554
+ /* @__PURE__ */ React20.createElement("span", { className: `text-[10px] px-1.5 py-0.5 rounded border ${q.status === "Done" ? "text-green-400 border-green-500/30" : "text-slate-500 border-white/5"}` }, q.status || "Backlog")
12555
+ )) : /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-amber-500/5 rounded-lg border border-amber-500/10 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React20.createElement(FiRepeat2, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ React20.createElement("p", { className: "text-[10px] text-amber-200/80 font-medium" }, "Esta quest est\xE1 bloqueada por ", blockedStatus.pendingDependencies.length, " tarefa(s) pendente(s)."))), /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React20.createElement(
12526
12556
  "button",
12527
12557
  {
12528
12558
  type: "button",
12529
12559
  onClick: handleCreateGoogleDoc,
12530
12560
  disabled: isLoadingDocs,
12531
- className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-indigo-600/20 hover:bg-indigo-600/30 text-indigo-300 border border-indigo-500/30 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
12561
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
12532
12562
  title: "Criar Documento no Google Docs"
12533
12563
  },
12534
- isLoadingDocs ? /* @__PURE__ */ React19.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React19.createElement(SiGoogledocs4, { size: 14, className: "group-hover:scale-110 transition-transform" }),
12564
+ isLoadingDocs ? /* @__PURE__ */ React20.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React20.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
12535
12565
  isLoadingDocs ? "Criando..." : "Google Doc"
12536
- ), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 14 }), " Adicionar"))), /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React19.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React19.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React19.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React19.createElement(
12566
+ ), canEdit && /* @__PURE__ */ React20.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__ */ React20.createElement(FiPlus8, { size: 14 }), " Adicionar"))), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React20.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__ */ React20.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React20.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React20.createElement(
12537
12567
  "button",
12538
12568
  {
12539
12569
  type: "button",
@@ -12552,12 +12582,12 @@ ${noteText}` : noteText : entry.notes,
12552
12582
  },
12553
12583
  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"
12554
12584
  },
12555
- isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React19.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiPlus8, { size: 12 }),
12585
+ isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React20.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React20.createElement(FiPlus8, { size: 12 }),
12556
12586
  isNoteFormOpen && !editingEntryId ? "Cancelar" : "Nova Nota"
12557
- )), isNoteFormOpen && /* @__PURE__ */ React19.createElement("div", { id: "quest-note-form", 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 border-l-4 border-l-indigo-500/40" }, editingEntryId && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-2 pb-2 border-b border-white/5" }, /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-indigo-400 font-bold uppercase tracking-wider" }, "Adicionando \xE0 etapa:"), /* @__PURE__ */ React19.createElement("span", { className: "text-xs text-slate-300 italic truncate max-w-[250px]" }, editingEntryLabel)), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => {
12587
+ )), isNoteFormOpen && /* @__PURE__ */ React20.createElement("div", { id: "quest-note-form", 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 border-l-4 border-l-indigo-500/40" }, editingEntryId && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-2 pb-2 border-b border-white/5" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-indigo-400 font-bold uppercase tracking-wider" }, "Adicionando \xE0 etapa:"), /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-slate-300 italic truncate max-w-[250px]" }, editingEntryLabel)), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => {
12558
12588
  setIsNoteFormOpen(false);
12559
12589
  setEditingEntryId(null);
12560
- }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React19.createElement(
12590
+ }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React20.createElement(
12561
12591
  "textarea",
12562
12592
  {
12563
12593
  value: noteText,
@@ -12565,7 +12595,7 @@ ${noteText}` : noteText : entry.notes,
12565
12595
  placeholder: editingEntryId ? "Adicione uma observa\xE7\xE3o a esta etapa..." : "Escreva uma observa\xE7\xE3o no hist\xF3rico...",
12566
12596
  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"
12567
12597
  }
12568
- ), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ React19.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement(
12598
+ ), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React20.createElement(FiPlus8, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ React20.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React20.createElement(
12569
12599
  "input",
12570
12600
  {
12571
12601
  type: "text",
@@ -12574,7 +12604,7 @@ ${noteText}` : noteText : entry.notes,
12574
12604
  onChange: (e) => updateLinkInNote(link.id, "name", e.target.value),
12575
12605
  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"
12576
12606
  }
12577
- ), /* @__PURE__ */ React19.createElement(
12607
+ ), /* @__PURE__ */ React20.createElement(
12578
12608
  "input",
12579
12609
  {
12580
12610
  type: "text",
@@ -12583,7 +12613,7 @@ ${noteText}` : noteText : entry.notes,
12583
12613
  onChange: (e) => updateLinkInNote(link.id, "value", e.target.value),
12584
12614
  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"
12585
12615
  }
12586
- ), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ React19.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ React19.createElement(FiImage4, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React19.createElement(
12616
+ ), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React20.createElement(FiPlus8, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ React20.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React20.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ React20.createElement(FiImage4, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React20.createElement(
12587
12617
  "input",
12588
12618
  {
12589
12619
  type: "text",
@@ -12592,7 +12622,7 @@ ${noteText}` : noteText : entry.notes,
12592
12622
  onChange: (e) => updateImageInNote(img.id, e.target.value),
12593
12623
  className: "flex-1 bg-transparent text-[10px] focus:outline-none"
12594
12624
  }
12595
- )), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ React19.createElement(
12625
+ )), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ React20.createElement(
12596
12626
  "button",
12597
12627
  {
12598
12628
  type: "button",
@@ -12601,7 +12631,7 @@ ${noteText}` : noteText : entry.notes,
12601
12631
  className: "px-3 py-1.5 rounded-lg bg-indigo-600 hover:bg-indigo-500 text-white text-xs font-semibold transition-colors disabled:opacity-50"
12602
12632
  },
12603
12633
  editingEntryId ? "Salvar nesta Etapa" : "Adicionar ao Hist\xF3rico"
12604
- ))), /* @__PURE__ */ React19.createElement(
12634
+ ))), /* @__PURE__ */ React20.createElement(
12605
12635
  QuestTimeline,
12606
12636
  {
12607
12637
  timeline,
@@ -12610,10 +12640,10 @@ ${noteText}` : noteText : entry.notes,
12610
12640
  canEdit,
12611
12641
  onAddNote: handleOpenNoteForEntry
12612
12642
  }
12613
- )), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
12643
+ )), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
12614
12644
  const isSelected = size === s;
12615
- return /* @__PURE__ */ React19.createElement("button", { key: s, type: "button", onClick: () => canEdit && handleSizeChange(s), className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}` }, /* @__PURE__ */ React19.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React19.createElement(FiCheck11, { size: 12, className: "text-white" })), /* @__PURE__ */ React19.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
12616
- }))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React19.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))), canEdit && /* @__PURE__ */ React19.createElement(
12645
+ return /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.createElement(FiCheck11, { size: 12, className: "text-white" })), /* @__PURE__ */ React20.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
12646
+ }))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))), canEdit && /* @__PURE__ */ React20.createElement(
12617
12647
  "input",
12618
12648
  {
12619
12649
  type: "text",
@@ -12634,11 +12664,11 @@ ${noteText}` : noteText : entry.notes,
12634
12664
  placeholder: "",
12635
12665
  autoComplete: "off"
12636
12666
  }
12637
- ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React19.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
12667
+ ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React20.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__ */ React20.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
12638
12668
  e.preventDefault();
12639
12669
  handleAddType(suggestedType);
12640
- } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ React19.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React19.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React19.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React19.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React19.createElement("button", { onClick: () => handleSave(false), disabled: isSaving, className: `px-4 py-2 rounded-lg transition-all font-semibold text-sm shadow-[0_8px_24px_rgba(99,102,241,0.35)] flex items-center gap-2 ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}` }, isSaving && /* @__PURE__ */ React19.createElement(FiLoader3, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
12641
- ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React19.createElement(
12670
+ } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ React20.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__ */ React20.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.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__ */ React20.createElement(FiLoader3, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
12671
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React20.createElement(
12642
12672
  DescriptionEditModal,
12643
12673
  {
12644
12674
  isOpen: isDescriptionModalOpen,
@@ -12658,7 +12688,7 @@ ${noteText}` : noteText : entry.notes,
12658
12688
  }
12659
12689
 
12660
12690
  // src/components/MultiNodeContextMenu.jsx
12661
- import React20, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12691
+ import React21, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12662
12692
  function MultiNodeContextMenu({
12663
12693
  data,
12664
12694
  userRole,
@@ -12700,7 +12730,7 @@ function MultiNodeContextMenu({
12700
12730
  const baseButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-indigo-500/20 text-slate-200 hover:text-white transition-colors duration-150 truncate";
12701
12731
  const deleteButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-red-500/25 text-red-400 hover:text-red-300 transition-colors duration-150 truncate";
12702
12732
  const nodeCount = data.nodeIds.size;
12703
- return /* @__PURE__ */ React20.createElement(
12733
+ return /* @__PURE__ */ React21.createElement(
12704
12734
  "div",
12705
12735
  {
12706
12736
  ref: menuRef,
@@ -12714,27 +12744,27 @@ function MultiNodeContextMenu({
12714
12744
  onContextMenu: swallow,
12715
12745
  onDoubleClick: swallow
12716
12746
  },
12717
- /* @__PURE__ */ React20.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
12718
- /* @__PURE__ */ React20.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React20.createElement("div", { className: "w-10 h-10 rounded-full bg-red-500/20 flex items-center justify-center text-red-400 mb-1" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React20.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React20.createElement("p", { className: "text-sm text-slate-200" }, "Excluir ", /* @__PURE__ */ React20.createElement("strong", null, nodeCount, " Nodes"), "?"), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] text-slate-400 leading-tight" }, "Esta a\xE7\xE3o \xE9 irrevers\xEDvel. Todas as conex\xF5es associadas a eles ser\xE3o apagadas.")), /* @__PURE__ */ React20.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React20.createElement(
12747
+ /* @__PURE__ */ React21.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
12748
+ /* @__PURE__ */ React21.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "w-10 h-10 rounded-full bg-red-500/20 flex items-center justify-center text-red-400 mb-1" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React21.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-200" }, "Excluir ", /* @__PURE__ */ React21.createElement("strong", null, nodeCount, " Nodes"), "?"), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-slate-400 leading-tight" }, "Esta a\xE7\xE3o \xE9 irrevers\xEDvel. Todas as conex\xF5es associadas a eles ser\xE3o apagadas.")), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React21.createElement(
12719
12749
  "button",
12720
12750
  {
12721
12751
  onClick: () => setIsConfirmingDelete(false),
12722
12752
  className: "flex-1 px-2 py-2 text-xs font-medium bg-white/10 hover:bg-white/20 rounded-md text-white transition-colors"
12723
12753
  },
12724
12754
  "Cancelar"
12725
- ), /* @__PURE__ */ React20.createElement(
12755
+ ), /* @__PURE__ */ React21.createElement(
12726
12756
  "button",
12727
12757
  {
12728
12758
  onClick: () => onDeleteNodes(data.nodeIds),
12729
12759
  className: "flex-1 px-2 py-2 text-xs font-medium bg-red-500 hover:bg-red-600 rounded-md text-white transition-colors"
12730
12760
  },
12731
12761
  "Excluir"
12732
- ))) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React20.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-indigo-400/80 shadow-[0_0_12px_1px_rgba(99,102,241,0.5)]" }), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "A\xE7\xF5es em Grupo (", nodeCount, " Nodes)")), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("button", { onClick: () => onDismissNodes(data.nodeIds), className: baseButtonClass, title: "Remover da visualiza\xE7\xE3o" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }), /* @__PURE__ */ React20.createElement("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }), /* @__PURE__ */ React20.createElement("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }), /* @__PURE__ */ React20.createElement("line", { x1: "2", y1: "2", x2: "22", y2: "22" })), /* @__PURE__ */ React20.createElement("span", null, "Dismiss (", nodeCount, ")")), /* @__PURE__ */ React20.createElement("button", { onClick: () => onDismissOtherNodes(data.nodeIds), className: baseButtonClass, title: "Remover outros da visualiza\xE7\xE3o" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("circle", { cx: "12", cy: "12", r: "3" }), /* @__PURE__ */ React20.createElement("path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }), /* @__PURE__ */ React20.createElement("path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React20.createElement("path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }), /* @__PURE__ */ React20.createElement("path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" })), /* @__PURE__ */ React20.createElement("span", null, "Dismiss other nodes")), canDelete && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "my-1 h-px w-full bg-white/10" }), /* @__PURE__ */ React20.createElement("button", { onClick: () => setIsConfirmingDelete(true), className: deleteButtonClass, title: "Excluir Nodes" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React20.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React20.createElement("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), /* @__PURE__ */ React20.createElement("line", { x1: "14", y1: "11", x2: "14", y2: "17" })), /* @__PURE__ */ React20.createElement("span", null, "Excluir Nodes (", nodeCount, ")"))))))
12762
+ ))) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-indigo-400/80 shadow-[0_0_12px_1px_rgba(99,102,241,0.5)]" }), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "A\xE7\xF5es em Grupo (", nodeCount, " Nodes)")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React21.createElement("button", { onClick: () => onDismissNodes(data.nodeIds), className: baseButtonClass, title: "Remover da visualiza\xE7\xE3o" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }), /* @__PURE__ */ React21.createElement("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }), /* @__PURE__ */ React21.createElement("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }), /* @__PURE__ */ React21.createElement("line", { x1: "2", y1: "2", x2: "22", y2: "22" })), /* @__PURE__ */ React21.createElement("span", null, "Dismiss (", nodeCount, ")")), /* @__PURE__ */ React21.createElement("button", { onClick: () => onDismissOtherNodes(data.nodeIds), className: baseButtonClass, title: "Remover outros da visualiza\xE7\xE3o" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("circle", { cx: "12", cy: "12", r: "3" }), /* @__PURE__ */ React21.createElement("path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }), /* @__PURE__ */ React21.createElement("path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React21.createElement("path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }), /* @__PURE__ */ React21.createElement("path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" })), /* @__PURE__ */ React21.createElement("span", null, "Dismiss other nodes")), canDelete && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "my-1 h-px w-full bg-white/10" }), /* @__PURE__ */ React21.createElement("button", { onClick: () => setIsConfirmingDelete(true), className: deleteButtonClass, title: "Excluir Nodes" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React21.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React21.createElement("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), /* @__PURE__ */ React21.createElement("line", { x1: "14", y1: "11", x2: "14", y2: "17" })), /* @__PURE__ */ React21.createElement("span", null, "Excluir Nodes (", nodeCount, ")"))))))
12733
12763
  );
12734
12764
  }
12735
12765
 
12736
12766
  // src/components/RelationshipDetailsPanel.jsx
12737
- import React21, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12767
+ import React22, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12738
12768
  import { v4 as uuidv410 } from "uuid";
12739
12769
  import { FiPlus as FiPlus9, FiEdit2 as FiEdit29, FiLoader as FiLoader4, FiBookOpen as FiBookOpen5 } from "react-icons/fi";
12740
12770
  function RelationshipDetailsPanel({
@@ -12874,7 +12904,7 @@ function RelationshipDetailsPanel({
12874
12904
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
12875
12905
  }
12876
12906
  };
12877
- return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(
12907
+ return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
12878
12908
  "div",
12879
12909
  {
12880
12910
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden transition-all duration-300 ease-out
@@ -12889,7 +12919,7 @@ function RelationshipDetailsPanel({
12889
12919
  onContextMenu: swallow,
12890
12920
  onDoubleClick: swallow
12891
12921
  },
12892
- isReadMode ? /* @__PURE__ */ React21.createElement(
12922
+ isReadMode ? /* @__PURE__ */ React22.createElement(
12893
12923
  DescriptionReadModePanel,
12894
12924
  {
12895
12925
  title: name || "Rela\xE7\xE3o",
@@ -12910,7 +12940,7 @@ function RelationshipDetailsPanel({
12910
12940
  onImageClick: handleImageClickFromText,
12911
12941
  onSaveDescription: handleSaveDescriptionInline
12912
12942
  }
12913
- ) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-teal-400/80 shadow-[0_0_18px_2px_rgba(45,212,191,0.55)]" }), /* @__PURE__ */ React21.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o")), /* @__PURE__ */ React21.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || "Rela\xE7\xE3o")), /* @__PURE__ */ React21.createElement(
12943
+ ) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }), /* @__PURE__ */ React22.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React22.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React22.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-teal-400/80 shadow-[0_0_18px_2px_rgba(45,212,191,0.55)]" }), /* @__PURE__ */ React22.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || "Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement(
12914
12944
  "button",
12915
12945
  {
12916
12946
  onClick: onClose,
@@ -12919,7 +12949,7 @@ function RelationshipDetailsPanel({
12919
12949
  title: "Fechar"
12920
12950
  },
12921
12951
  "\xD7"
12922
- )), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Nome da Rela\xE7\xE3o"), /* @__PURE__ */ React21.createElement(
12952
+ )), /* @__PURE__ */ React22.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React22.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React22.createElement("label", { className: "text-xs text-slate-300" }, "Nome da Rela\xE7\xE3o"), /* @__PURE__ */ React22.createElement(
12923
12953
  "input",
12924
12954
  {
12925
12955
  type: "text",
@@ -12934,7 +12964,7 @@ function RelationshipDetailsPanel({
12934
12964
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12935
12965
  `
12936
12966
  }
12937
- )), /* @__PURE__ */ React21.createElement("div", { className: "rounded-xl border border-white/8 bg-slate-800/30 p-3 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(
12967
+ )), /* @__PURE__ */ React22.createElement("div", { className: "rounded-xl border border-white/8 bg-slate-800/30 p-3 space-y-3" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React22.createElement(
12938
12968
  "svg",
12939
12969
  {
12940
12970
  xmlns: "http://www.w3.org/2000/svg",
@@ -12948,9 +12978,9 @@ function RelationshipDetailsPanel({
12948
12978
  strokeLinejoin: "round",
12949
12979
  className: "text-violet-400 flex-shrink-0"
12950
12980
  },
12951
- /* @__PURE__ */ React21.createElement("path", { d: "M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z" }),
12952
- /* @__PURE__ */ React21.createElement("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })
12953
- ), /* @__PURE__ */ React21.createElement("p", { className: "text-xs font-medium text-violet-300/80 uppercase tracking-wider" }, "Labels de Agrupamento")), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-slate-400 leading-relaxed" }, "Labels agrupam conex\xF5es no menu de Conex\xF5es. Cada lado da conex\xE3o pode ter sua pr\xF3pria label."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React21.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Source"), /* @__PURE__ */ React21.createElement(
12981
+ /* @__PURE__ */ React22.createElement("path", { d: "M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z" }),
12982
+ /* @__PURE__ */ React22.createElement("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })
12983
+ ), /* @__PURE__ */ React22.createElement("p", { className: "text-xs font-medium text-violet-300/80 uppercase tracking-wider" }, "Labels de Agrupamento")), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-slate-400 leading-relaxed" }, "Labels agrupam conex\xF5es no menu de Conex\xF5es. Cada lado da conex\xE3o pode ter sua pr\xF3pria label."), /* @__PURE__ */ React22.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React22.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React22.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Source"), /* @__PURE__ */ React22.createElement(
12954
12984
  "input",
12955
12985
  {
12956
12986
  type: "text",
@@ -12967,7 +12997,7 @@ function RelationshipDetailsPanel({
12967
12997
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12968
12998
  `
12969
12999
  }
12970
- )), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React21.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Target"), /* @__PURE__ */ React21.createElement(
13000
+ )), /* @__PURE__ */ React22.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React22.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Target"), /* @__PURE__ */ React22.createElement(
12971
13001
  "input",
12972
13002
  {
12973
13003
  type: "text",
@@ -12984,7 +13014,7 @@ function RelationshipDetailsPanel({
12984
13014
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12985
13015
  `
12986
13016
  }
12987
- )))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(
13017
+ )))), /* @__PURE__ */ React22.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React22.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React22.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__ */ React22.createElement(
12988
13018
  DescriptionDisplay,
12989
13019
  {
12990
13020
  description,
@@ -12996,7 +13026,7 @@ function RelationshipDetailsPanel({
12996
13026
  onImageClick: handleImageClickFromText,
12997
13027
  onSaveDescription: handleSaveDescriptionInline
12998
13028
  }
12999
- ), /* @__PURE__ */ React21.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__ */ React21.createElement(
13029
+ ), /* @__PURE__ */ React22.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__ */ React22.createElement(
13000
13030
  "button",
13001
13031
  {
13002
13032
  type: "button",
@@ -13004,8 +13034,8 @@ function RelationshipDetailsPanel({
13004
13034
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
13005
13035
  title: "Modo de Leitura"
13006
13036
  },
13007
- /* @__PURE__ */ React21.createElement(FiBookOpen5, { size: 14 })
13008
- ), canEdit && /* @__PURE__ */ React21.createElement(
13037
+ /* @__PURE__ */ React22.createElement(FiBookOpen5, { size: 14 })
13038
+ ), canEdit && /* @__PURE__ */ React22.createElement(
13009
13039
  "button",
13010
13040
  {
13011
13041
  type: "button",
@@ -13013,24 +13043,24 @@ function RelationshipDetailsPanel({
13013
13043
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
13014
13044
  title: "Editar descri\xE7\xE3o"
13015
13045
  },
13016
- /* @__PURE__ */ React21.createElement(FiEdit29, { size: 14 })
13017
- )), !description && canEdit && /* @__PURE__ */ React21.createElement(
13046
+ /* @__PURE__ */ React22.createElement(FiEdit29, { size: 14 })
13047
+ )), !description && canEdit && /* @__PURE__ */ React22.createElement(
13018
13048
  "div",
13019
13049
  {
13020
13050
  onClick: () => setIsDescriptionModalOpen(true),
13021
13051
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
13022
13052
  },
13023
13053
  "Adicionar descri\xE7\xE3o..."
13024
- ))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React21.createElement(
13054
+ ))), /* @__PURE__ */ React22.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React22.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React22.createElement(
13025
13055
  "button",
13026
13056
  {
13027
13057
  type: "button",
13028
13058
  onClick: handleAddProp,
13029
13059
  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"
13030
13060
  },
13031
- /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }),
13061
+ /* @__PURE__ */ React22.createElement(FiPlus9, { size: 14 }),
13032
13062
  " Adicionar"
13033
- )), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(
13063
+ )), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React22.createElement(
13034
13064
  CustomPropertyDisplay,
13035
13065
  {
13036
13066
  key: prop.id,
@@ -13044,7 +13074,7 @@ function RelationshipDetailsPanel({
13044
13074
  onUploadFile,
13045
13075
  disabled: !canEdit
13046
13076
  }
13047
- )), /* @__PURE__ */ React21.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React21.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__ */ React21.createElement(
13077
+ )), /* @__PURE__ */ React22.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React22.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__ */ React22.createElement(
13048
13078
  "button",
13049
13079
  {
13050
13080
  onClick: onClose,
@@ -13052,7 +13082,7 @@ function RelationshipDetailsPanel({
13052
13082
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50"
13053
13083
  },
13054
13084
  canEdit ? "Cancelar" : "Fechar"
13055
- ), canEdit && /* @__PURE__ */ React21.createElement(
13085
+ ), canEdit && /* @__PURE__ */ React22.createElement(
13056
13086
  "button",
13057
13087
  {
13058
13088
  onClick: () => handleSave(false),
@@ -13061,10 +13091,10 @@ function RelationshipDetailsPanel({
13061
13091
  ${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"}
13062
13092
  `
13063
13093
  },
13064
- isSaving && /* @__PURE__ */ React21.createElement(FiLoader4, { className: "animate-spin" }),
13094
+ isSaving && /* @__PURE__ */ React22.createElement(FiLoader4, { className: "animate-spin" }),
13065
13095
  isSaving ? "Salvando..." : "Salvar"
13066
13096
  )))
13067
- ), isDescriptionModalOpen && /* @__PURE__ */ React21.createElement(
13097
+ ), isDescriptionModalOpen && /* @__PURE__ */ React22.createElement(
13068
13098
  DescriptionEditModal,
13069
13099
  {
13070
13100
  isOpen: isDescriptionModalOpen,
@@ -13086,7 +13116,7 @@ function RelationshipDetailsPanel({
13086
13116
  }
13087
13117
 
13088
13118
  // src/components/RelationshipContextMenu.jsx
13089
- import React22, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
13119
+ import React23, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
13090
13120
  function RelationshipContextMenu({
13091
13121
  data,
13092
13122
  userRole,
@@ -13143,7 +13173,7 @@ function RelationshipContextMenu({
13143
13173
  const dangerButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-rose-500/20 text-rose-300 hover:text-rose-100 transition-colors duration-150 truncate";
13144
13174
  const canUpdate = ability.can("update", "Connection");
13145
13175
  const canDelete = ability.can("delete", "Connection");
13146
- return /* @__PURE__ */ React22.createElement(
13176
+ return /* @__PURE__ */ React23.createElement(
13147
13177
  "div",
13148
13178
  {
13149
13179
  ref: menuRef,
@@ -13157,29 +13187,29 @@ function RelationshipContextMenu({
13157
13187
  onContextMenu: swallow,
13158
13188
  onDoubleClick: swallow
13159
13189
  },
13160
- /* @__PURE__ */ React22.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }),
13161
- /* @__PURE__ */ React22.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React22.createElement("div", { className: "w-10 h-10 rounded-full bg-rose-500/20 flex items-center justify-center text-rose-400 mb-1" }, /* @__PURE__ */ React22.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React22.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }), /* @__PURE__ */ React22.createElement("path", { d: "M10 11v6" }), /* @__PURE__ */ React22.createElement("path", { d: "M14 11v6" }), /* @__PURE__ */ React22.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React22.createElement("p", { className: "text-sm text-slate-200" }, "Excluir rela\xE7\xE3o?"), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-slate-400 leading-tight break-words" }, "Desconectar ", /* @__PURE__ */ React22.createElement("strong", null, sourceName), " de ", /* @__PURE__ */ React22.createElement("strong", null, targetName), ".")), /* @__PURE__ */ React22.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React22.createElement(
13190
+ /* @__PURE__ */ React23.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }),
13191
+ /* @__PURE__ */ React23.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 rounded-full bg-rose-500/20 flex items-center justify-center text-rose-400 mb-1" }, /* @__PURE__ */ React23.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React23.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }), /* @__PURE__ */ React23.createElement("path", { d: "M10 11v6" }), /* @__PURE__ */ React23.createElement("path", { d: "M14 11v6" }), /* @__PURE__ */ React23.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-200" }, "Excluir rela\xE7\xE3o?"), /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] text-slate-400 leading-tight break-words" }, "Desconectar ", /* @__PURE__ */ React23.createElement("strong", null, sourceName), " de ", /* @__PURE__ */ React23.createElement("strong", null, targetName), ".")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React23.createElement(
13162
13192
  "button",
13163
13193
  {
13164
13194
  onClick: () => setIsConfirmingDelete(false),
13165
13195
  className: "flex-1 px-2 py-2 text-xs font-medium bg-white/10 hover:bg-white/20 rounded-md text-white transition-colors"
13166
13196
  },
13167
13197
  "Cancelar"
13168
- ), /* @__PURE__ */ React22.createElement(
13198
+ ), /* @__PURE__ */ React23.createElement(
13169
13199
  "button",
13170
13200
  {
13171
13201
  onClick: () => onDelete == null ? void 0 : onDelete(data.linkObject),
13172
13202
  className: "flex-1 px-2 py-2 text-xs font-medium bg-rose-600 hover:bg-rose-500 rounded-md text-white transition-colors"
13173
13203
  },
13174
13204
  "Excluir"
13175
- ))) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React22.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-teal-400/80 shadow-[0_0_12px_1px_rgba(45,212,191,0.5)]" }), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-1" }, canUpdate && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
13205
+ ))) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React23.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-teal-400/80 shadow-[0_0_12px_1px_rgba(45,212,191,0.5)]" }), /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Rela\xE7\xE3o")), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-1" }, canUpdate && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
13176
13206
  "button",
13177
13207
  {
13178
13208
  onClick: () => onRelinkSource == null ? void 0 : onRelinkSource(data.linkObject),
13179
13209
  className: baseButtonClass,
13180
13210
  title: "Desconectar ponta ligada ao Source"
13181
13211
  },
13182
- /* @__PURE__ */ React22.createElement(
13212
+ /* @__PURE__ */ React23.createElement(
13183
13213
  "svg",
13184
13214
  {
13185
13215
  xmlns: "http://www.w3.org/2000/svg",
@@ -13192,18 +13222,18 @@ function RelationshipContextMenu({
13192
13222
  strokeLinecap: "round",
13193
13223
  strokeLinejoin: "round"
13194
13224
  },
13195
- /* @__PURE__ */ React22.createElement("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.72" }),
13196
- /* @__PURE__ */ React22.createElement("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.72" })
13225
+ /* @__PURE__ */ React23.createElement("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.72" }),
13226
+ /* @__PURE__ */ React23.createElement("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.72" })
13197
13227
  ),
13198
- /* @__PURE__ */ React22.createElement("span", null, "Desconectar Source (", sourceName, ")")
13199
- ), /* @__PURE__ */ React22.createElement(
13228
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Source (", sourceName, ")")
13229
+ ), /* @__PURE__ */ React23.createElement(
13200
13230
  "button",
13201
13231
  {
13202
13232
  onClick: () => onRelinkTarget == null ? void 0 : onRelinkTarget(data.linkObject),
13203
13233
  className: baseButtonClass,
13204
13234
  title: "Desconectar ponta ligada ao Target"
13205
13235
  },
13206
- /* @__PURE__ */ React22.createElement(
13236
+ /* @__PURE__ */ React23.createElement(
13207
13237
  "svg",
13208
13238
  {
13209
13239
  xmlns: "http://www.w3.org/2000/svg",
@@ -13216,21 +13246,21 @@ function RelationshipContextMenu({
13216
13246
  strokeLinecap: "round",
13217
13247
  strokeLinejoin: "round"
13218
13248
  },
13219
- /* @__PURE__ */ React22.createElement("polyline", { points: "16 3 21 3 21 8" }),
13220
- /* @__PURE__ */ React22.createElement("line", { x1: "4", y1: "20", x2: "21", y2: "3" }),
13221
- /* @__PURE__ */ React22.createElement("polyline", { points: "21 16 21 21 16 21" }),
13222
- /* @__PURE__ */ React22.createElement("line", { x1: "15", y1: "15", x2: "21", y2: "21" }),
13223
- /* @__PURE__ */ React22.createElement("line", { x1: "4", y1: "4", x2: "9", y2: "9" })
13249
+ /* @__PURE__ */ React23.createElement("polyline", { points: "16 3 21 3 21 8" }),
13250
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "20", x2: "21", y2: "3" }),
13251
+ /* @__PURE__ */ React23.createElement("polyline", { points: "21 16 21 21 16 21" }),
13252
+ /* @__PURE__ */ React23.createElement("line", { x1: "15", y1: "15", x2: "21", y2: "21" }),
13253
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "4", x2: "9", y2: "9" })
13224
13254
  ),
13225
- /* @__PURE__ */ React22.createElement("span", null, "Desconectar Target (", targetName, ")")
13226
- ), /* @__PURE__ */ React22.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" })), /* @__PURE__ */ React22.createElement(
13255
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Target (", targetName, ")")
13256
+ ), /* @__PURE__ */ React23.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" })), /* @__PURE__ */ React23.createElement(
13227
13257
  "button",
13228
13258
  {
13229
13259
  onClick: () => onOpenDetails == null ? void 0 : onOpenDetails(data.linkObject),
13230
13260
  className: baseButtonClass,
13231
13261
  title: "Abrir detalhes da rela\xE7\xE3o"
13232
13262
  },
13233
- /* @__PURE__ */ React22.createElement(
13263
+ /* @__PURE__ */ React23.createElement(
13234
13264
  "svg",
13235
13265
  {
13236
13266
  xmlns: "http://www.w3.org/2000/svg",
@@ -13243,19 +13273,19 @@ function RelationshipContextMenu({
13243
13273
  strokeLinecap: "round",
13244
13274
  strokeLinejoin: "round"
13245
13275
  },
13246
- /* @__PURE__ */ React22.createElement("circle", { cx: "12", cy: "12", r: "10" }),
13247
- /* @__PURE__ */ React22.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
13248
- /* @__PURE__ */ React22.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "8" })
13276
+ /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "12", r: "10" }),
13277
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
13278
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "8" })
13249
13279
  ),
13250
- /* @__PURE__ */ React22.createElement("span", null, "Abrir Detalhes")
13251
- ), canDelete && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" }), /* @__PURE__ */ React22.createElement(
13280
+ /* @__PURE__ */ React23.createElement("span", null, "Abrir Detalhes")
13281
+ ), canDelete && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" }), /* @__PURE__ */ React23.createElement(
13252
13282
  "button",
13253
13283
  {
13254
13284
  onClick: () => setIsConfirmingDelete(true),
13255
13285
  className: dangerButtonClass,
13256
13286
  title: "Excluir esta conex\xE3o"
13257
13287
  },
13258
- /* @__PURE__ */ React22.createElement(
13288
+ /* @__PURE__ */ React23.createElement(
13259
13289
  "svg",
13260
13290
  {
13261
13291
  xmlns: "http://www.w3.org/2000/svg",
@@ -13268,19 +13298,19 @@ function RelationshipContextMenu({
13268
13298
  strokeLinecap: "round",
13269
13299
  strokeLinejoin: "round"
13270
13300
  },
13271
- /* @__PURE__ */ React22.createElement("polyline", { points: "3 6 5 6 21 6" }),
13272
- /* @__PURE__ */ React22.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
13273
- /* @__PURE__ */ React22.createElement("path", { d: "M10 11v6" }),
13274
- /* @__PURE__ */ React22.createElement("path", { d: "M14 11v6" }),
13275
- /* @__PURE__ */ React22.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" })
13301
+ /* @__PURE__ */ React23.createElement("polyline", { points: "3 6 5 6 21 6" }),
13302
+ /* @__PURE__ */ React23.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
13303
+ /* @__PURE__ */ React23.createElement("path", { d: "M10 11v6" }),
13304
+ /* @__PURE__ */ React23.createElement("path", { d: "M14 11v6" }),
13305
+ /* @__PURE__ */ React23.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" })
13276
13306
  ),
13277
- /* @__PURE__ */ React22.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13307
+ /* @__PURE__ */ React23.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13278
13308
  )))))
13279
13309
  );
13280
13310
  }
13281
13311
 
13282
13312
  // src/components/LoadingScreen.jsx
13283
- import React23 from "react";
13313
+ import React24 from "react";
13284
13314
  var styles = {
13285
13315
  loadingOverlay: {
13286
13316
  position: "fixed",
@@ -13312,11 +13342,11 @@ var styles = {
13312
13342
  `
13313
13343
  };
13314
13344
  function LoadingScreen() {
13315
- return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("style", null, styles.keyframes), /* @__PURE__ */ React23.createElement("div", { style: styles.loadingOverlay }, /* @__PURE__ */ React23.createElement("div", { style: styles.spinner })));
13345
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("style", null, styles.keyframes), /* @__PURE__ */ React24.createElement("div", { style: styles.loadingOverlay }, /* @__PURE__ */ React24.createElement("div", { style: styles.spinner })));
13316
13346
  }
13317
13347
 
13318
13348
  // src/components/ImportParentFileModal.jsx
13319
- import React24, { useEffect as useEffect20, useState as useState23 } from "react";
13349
+ import React25, { useEffect as useEffect20, useState as useState23 } from "react";
13320
13350
  function ImportParentFileModal({
13321
13351
  isOpen,
13322
13352
  onClose,
@@ -13397,13 +13427,13 @@ function ImportParentFileModal({
13397
13427
  const swallow = (e) => e.stopPropagation();
13398
13428
  const currentList = activeTab === "databases" ? availableDbs : availableViews;
13399
13429
  const emptyMessage = activeTab === "databases" ? "Nenhum novo arquivo parent dispon\xEDvel." : "Nenhuma view dispon\xEDvel para importa\xE7\xE3o.";
13400
- return /* @__PURE__ */ React24.createElement(
13430
+ return /* @__PURE__ */ React25.createElement(
13401
13431
  "div",
13402
13432
  {
13403
13433
  className: "ui-overlay fixed inset-0 z-[1200] flex items-center justify-center bg-black/60 backdrop-blur-sm",
13404
13434
  onClick: onClose
13405
13435
  },
13406
- /* @__PURE__ */ React24.createElement(
13436
+ /* @__PURE__ */ React25.createElement(
13407
13437
  "div",
13408
13438
  {
13409
13439
  className: "ui-overlay relative rounded-2xl border border-white/10 bg-slate-950/80 shadow-[0_20px_80px_rgba(0,0,0,0.6)] text-white w-[min(92vw,500px)] flex flex-col max-h-[85vh]",
@@ -13415,14 +13445,14 @@ function ImportParentFileModal({
13415
13445
  onContextMenu: swallow,
13416
13446
  onDoubleClick: swallow
13417
13447
  },
13418
- /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-white/10 flex-shrink-0" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-lg font-semibold" }, "Importar"), /* @__PURE__ */ React24.createElement(
13448
+ /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-white/10 flex-shrink-0" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-lg font-semibold" }, "Importar"), /* @__PURE__ */ React25.createElement(
13419
13449
  "button",
13420
13450
  {
13421
13451
  onClick: onClose,
13422
13452
  className: "p-2 rounded-md text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
13423
13453
  title: "Fechar"
13424
13454
  },
13425
- /* @__PURE__ */ React24.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React24.createElement(
13455
+ /* @__PURE__ */ React25.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React25.createElement(
13426
13456
  "path",
13427
13457
  {
13428
13458
  fillRule: "evenodd",
@@ -13431,14 +13461,14 @@ function ImportParentFileModal({
13431
13461
  }
13432
13462
  ))
13433
13463
  )),
13434
- /* @__PURE__ */ React24.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React24.createElement(
13464
+ /* @__PURE__ */ React25.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React25.createElement(
13435
13465
  "button",
13436
13466
  {
13437
13467
  onClick: () => setActiveTab("databases"),
13438
13468
  className: `flex-1 py-3 text-sm font-medium border-b-2 transition-colors ${activeTab === "databases" ? "border-indigo-500 text-white" : "border-transparent text-slate-400 hover:text-slate-200"}`
13439
13469
  },
13440
13470
  "Arquivos Parent"
13441
- ), /* @__PURE__ */ React24.createElement(
13471
+ ), /* @__PURE__ */ React25.createElement(
13442
13472
  "button",
13443
13473
  {
13444
13474
  onClick: () => setActiveTab("views"),
@@ -13446,24 +13476,24 @@ function ImportParentFileModal({
13446
13476
  },
13447
13477
  "Views (Ancestralidades)"
13448
13478
  )),
13449
- /* @__PURE__ */ React24.createElement("div", { className: "p-6 overflow-y-auto custom-scrollbar flex-grow min-h-[200px]" }, isLoading ? /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-center h-40" }, /* @__PURE__ */ React24.createElement("div", { className: "w-8 h-8 border-4 border-t-indigo-500 border-slate-700 rounded-full animate-spin" })) : /* @__PURE__ */ React24.createElement("div", { className: "space-y-2" }, currentList.length > 0 ? currentList.map((item) => /* @__PURE__ */ React24.createElement(
13479
+ /* @__PURE__ */ React25.createElement("div", { className: "p-6 overflow-y-auto custom-scrollbar flex-grow min-h-[200px]" }, isLoading ? /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-center h-40" }, /* @__PURE__ */ React25.createElement("div", { className: "w-8 h-8 border-4 border-t-indigo-500 border-slate-700 rounded-full animate-spin" })) : /* @__PURE__ */ React25.createElement("div", { className: "space-y-2" }, currentList.length > 0 ? currentList.map((item) => /* @__PURE__ */ React25.createElement(
13450
13480
  "div",
13451
13481
  {
13452
13482
  key: item.id,
13453
13483
  onClick: () => setSelectedItem(item),
13454
13484
  className: `px-4 py-3 rounded-lg border cursor-pointer transition-all duration-150 flex flex-col gap-1 ${(selectedItem == null ? void 0 : selectedItem.id) === item.id ? "bg-indigo-600 border-indigo-500 shadow-lg" : "bg-slate-800/60 border-white/10 hover:border-white/20 hover:bg-slate-800"}`
13455
13485
  },
13456
- /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React24.createElement("span", { className: "font-medium text-slate-100" }, item.name), activeTab === "views" && /* @__PURE__ */ React24.createElement("span", { className: "text-[10px] px-1.5 py-0.5 rounded bg-black/30 text-indigo-300 border border-indigo-500/30" }, "VIEW")),
13457
- item.description && /* @__PURE__ */ React24.createElement("p", { className: `text-xs ${(selectedItem == null ? void 0 : selectedItem.id) === item.id ? "text-indigo-200" : "text-slate-400"}` }, item.description)
13458
- )) : /* @__PURE__ */ React24.createElement("p", { className: "text-slate-400 text-center py-10" }, emptyMessage))),
13459
- /* @__PURE__ */ React24.createElement("div", { className: "px-6 py-4 border-t border-white/10 flex justify-end gap-3 flex-shrink-0 bg-slate-900/50" }, /* @__PURE__ */ React24.createElement(
13486
+ /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React25.createElement("span", { className: "font-medium text-slate-100" }, item.name), activeTab === "views" && /* @__PURE__ */ React25.createElement("span", { className: "text-[10px] px-1.5 py-0.5 rounded bg-black/30 text-indigo-300 border border-indigo-500/30" }, "VIEW")),
13487
+ item.description && /* @__PURE__ */ React25.createElement("p", { className: `text-xs ${(selectedItem == null ? void 0 : selectedItem.id) === item.id ? "text-indigo-200" : "text-slate-400"}` }, item.description)
13488
+ )) : /* @__PURE__ */ React25.createElement("p", { className: "text-slate-400 text-center py-10" }, emptyMessage))),
13489
+ /* @__PURE__ */ React25.createElement("div", { className: "px-6 py-4 border-t border-white/10 flex justify-end gap-3 flex-shrink-0 bg-slate-900/50" }, /* @__PURE__ */ React25.createElement(
13460
13490
  "button",
13461
13491
  {
13462
13492
  onClick: onClose,
13463
13493
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm text-slate-300"
13464
13494
  },
13465
13495
  "Cancelar"
13466
- ), /* @__PURE__ */ React24.createElement(
13496
+ ), /* @__PURE__ */ React25.createElement(
13467
13497
  "button",
13468
13498
  {
13469
13499
  onClick: handleConfirm,
@@ -13477,7 +13507,7 @@ function ImportParentFileModal({
13477
13507
  }
13478
13508
 
13479
13509
  // src/components/AncestryLinkDetailsPanel.jsx
13480
- import React25, { useState as useState24 } from "react";
13510
+ import React26, { useState as useState24 } from "react";
13481
13511
  import { FiBookOpen as FiBookOpen6 } from "react-icons/fi";
13482
13512
  function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenReference, onMentionClick, onUploadFile, onHighlight }) {
13483
13513
  var _a, _b, _c, _d;
@@ -13488,7 +13518,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13488
13518
  const sourceName = ((_b = (_a = data.sourceNode) == null ? void 0 : _a.userData) == null ? void 0 : _b.name) || "Origem";
13489
13519
  const targetName = ((_d = (_c = data.targetNode) == null ? void 0 : _c.userData) == null ? void 0 : _d.name) || "Destino";
13490
13520
  const [isReadMode, setIsReadMode] = useState24(false);
13491
- React25.useEffect(() => {
13521
+ React26.useEffect(() => {
13492
13522
  return () => {
13493
13523
  if (onHighlight) onHighlight(null);
13494
13524
  };
@@ -13499,14 +13529,14 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13499
13529
  onOpenImageViewer([{ name: name || "Imagem", value: url }], 0);
13500
13530
  }
13501
13531
  };
13502
- return /* @__PURE__ */ React25.createElement(
13532
+ return /* @__PURE__ */ React26.createElement(
13503
13533
  "div",
13504
13534
  {
13505
13535
  className: "ui-overlay fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[1200]",
13506
13536
  onClick: onClose,
13507
13537
  onPointerDown: swallow
13508
13538
  },
13509
- /* @__PURE__ */ React25.createElement(
13539
+ /* @__PURE__ */ React26.createElement(
13510
13540
  "div",
13511
13541
  {
13512
13542
  className: `relative group rounded-2xl border border-white/10 bg-slate-950/80 shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col max-h-[calc(100vh-4rem)] transition-all duration-300 ease-out
@@ -13514,7 +13544,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13514
13544
  `,
13515
13545
  onClick: swallow
13516
13546
  },
13517
- isReadMode ? /* @__PURE__ */ React25.createElement(
13547
+ isReadMode ? /* @__PURE__ */ React26.createElement(
13518
13548
  DescriptionReadModePanel,
13519
13549
  {
13520
13550
  title: `${sourceName} \u2794 ${targetName}`,
@@ -13526,7 +13556,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13526
13556
  onMentionClick,
13527
13557
  onImageClick: handleImageClickFromText
13528
13558
  }
13529
- ) : /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("div", { className: "h-[2px] bg-gradient-to-r from-blue-500/0 via-blue-500/70 to-blue-500/0" }), /* @__PURE__ */ React25.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React25.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React25.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-blue-500/80 shadow-[0_0_18px_2px_rgba(59,130,246,0.55)]" }), /* @__PURE__ */ React25.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Ancestralidade")), /* @__PURE__ */ React25.createElement("h2", { className: "text-lg font-semibold tracking-tight flex items-center gap-2" }, /* @__PURE__ */ React25.createElement(
13559
+ ) : /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", { className: "h-[2px] bg-gradient-to-r from-blue-500/0 via-blue-500/70 to-blue-500/0" }), /* @__PURE__ */ React26.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React26.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-blue-500/80 shadow-[0_0_18px_2px_rgba(59,130,246,0.55)]" }), /* @__PURE__ */ React26.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Ancestralidade")), /* @__PURE__ */ React26.createElement("h2", { className: "text-lg font-semibold tracking-tight flex items-center gap-2" }, /* @__PURE__ */ React26.createElement(
13530
13560
  "span",
13531
13561
  {
13532
13562
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13534,7 +13564,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13534
13564
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13535
13565
  },
13536
13566
  sourceName
13537
- ), /* @__PURE__ */ React25.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React25.createElement(
13567
+ ), /* @__PURE__ */ React26.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React26.createElement(
13538
13568
  "span",
13539
13569
  {
13540
13570
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13542,15 +13572,15 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13542
13572
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13543
13573
  },
13544
13574
  targetName
13545
- ))), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "px-6 pb-6 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, description && /* @__PURE__ */ React25.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React25.createElement("label", { className: "text-xs text-slate-300 font-medium" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React25.createElement(
13575
+ ))), /* @__PURE__ */ React26.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__ */ React26.createElement("div", { className: "px-6 pb-6 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, description && /* @__PURE__ */ React26.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React26.createElement("label", { className: "text-xs text-slate-300 font-medium" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React26.createElement(
13546
13576
  "button",
13547
13577
  {
13548
13578
  onClick: () => setIsReadMode(true),
13549
13579
  className: "p-1 text-slate-400 hover:text-white transition-colors",
13550
13580
  title: "Modo de Leitura"
13551
13581
  },
13552
- /* @__PURE__ */ React25.createElement(FiBookOpen6, { size: 14 })
13553
- )), /* @__PURE__ */ React25.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React25.createElement(
13582
+ /* @__PURE__ */ React26.createElement(FiBookOpen6, { size: 14 })
13583
+ )), /* @__PURE__ */ React26.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React26.createElement(
13554
13584
  DescriptionDisplay,
13555
13585
  {
13556
13586
  description,
@@ -13559,7 +13589,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13559
13589
  onMentionClick,
13560
13590
  onImageClick: handleImageClickFromText
13561
13591
  }
13562
- ))), customProps.length > 0 && /* @__PURE__ */ React25.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React25.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ React25.createElement(
13592
+ ))), customProps.length > 0 && /* @__PURE__ */ React26.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React26.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ React26.createElement(
13563
13593
  CustomPropertyDisplay,
13564
13594
  {
13565
13595
  key: prop.id,
@@ -13568,13 +13598,13 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13568
13598
  onOpenImageViewer,
13569
13599
  onUploadFile
13570
13600
  }
13571
- )))), !description && customProps.length === 0 && /* @__PURE__ */ React25.createElement("div", { className: "py-8 text-center text-slate-500 text-sm italic border border-dashed border-white/10 rounded-lg" }, "Nenhum detalhe adicional dispon\xEDvel para esta conex\xE3o."), /* @__PURE__ */ React25.createElement("div", { className: "mt-4 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg text-xs text-blue-200/80 text-center" }, 'Para editar esta conex\xE3o, utilize o menu "Editar Ancestralidade".')))
13601
+ )))), !description && customProps.length === 0 && /* @__PURE__ */ React26.createElement("div", { className: "py-8 text-center text-slate-500 text-sm italic border border-dashed border-white/10 rounded-lg" }, "Nenhum detalhe adicional dispon\xEDvel para esta conex\xE3o."), /* @__PURE__ */ React26.createElement("div", { className: "mt-4 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg text-xs text-blue-200/80 text-center" }, 'Para editar esta conex\xE3o, utilize o menu "Editar Ancestralidade".')))
13572
13602
  )
13573
13603
  );
13574
13604
  }
13575
13605
 
13576
13606
  // src/components/Boards.jsx
13577
- import React28, {
13607
+ import React29, {
13578
13608
  useState as useState27,
13579
13609
  useMemo as useMemo12,
13580
13610
  useEffect as useEffect23,
@@ -13604,10 +13634,10 @@ import {
13604
13634
  import { v4 as uuidv411 } from "uuid";
13605
13635
 
13606
13636
  // src/components/RichGroupEditor.jsx
13607
- import React27, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13637
+ import React28, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13608
13638
 
13609
13639
  // src/components/MentionPopover.jsx
13610
- import React26, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13640
+ import React27, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13611
13641
  import { FiLayers as FiLayers6, FiCheckSquare as FiCheckSquare3, FiGitBranch as FiGitBranch3, FiBox } from "react-icons/fi";
13612
13642
  var TYPE_CONFIG = {
13613
13643
  ancestry: { Icon: FiLayers6, color: "text-indigo-400", label: "Ancestralidade" },
@@ -13655,7 +13685,7 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13655
13685
  if (el) el.scrollIntoView({ block: "nearest" });
13656
13686
  }
13657
13687
  }, [activeIndex]);
13658
- return /* @__PURE__ */ React26.createElement(
13688
+ return /* @__PURE__ */ React27.createElement(
13659
13689
  "div",
13660
13690
  {
13661
13691
  style: { top: position.top, left: position.left, position: "fixed", zIndex: 9999 },
@@ -13663,10 +13693,10 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13663
13693
  ref: listRef,
13664
13694
  onMouseDown: (e) => e.preventDefault()
13665
13695
  },
13666
- filtered.length === 0 ? /* @__PURE__ */ React26.createElement("div", { className: "px-4 py-3 text-xs text-slate-500" }, "Nenhum resultado para", " ", /* @__PURE__ */ React26.createElement("span", { className: "text-slate-300 font-medium" }, '"', query, '"')) : filtered.map((item, idx) => {
13696
+ filtered.length === 0 ? /* @__PURE__ */ React27.createElement("div", { className: "px-4 py-3 text-xs text-slate-500" }, "Nenhum resultado para", " ", /* @__PURE__ */ React27.createElement("span", { className: "text-slate-300 font-medium" }, '"', query, '"')) : filtered.map((item, idx) => {
13667
13697
  const config = TYPE_CONFIG[item.type] || TYPE_CONFIG.node;
13668
13698
  const { Icon } = config;
13669
- return /* @__PURE__ */ React26.createElement(
13699
+ return /* @__PURE__ */ React27.createElement(
13670
13700
  "div",
13671
13701
  {
13672
13702
  key: item.id,
@@ -13677,9 +13707,9 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13677
13707
  onMouseEnter: () => setActiveIndex(idx),
13678
13708
  className: `flex items-center gap-2.5 px-3 py-2 cursor-pointer text-sm transition-colors duration-100 ${idx === activeIndex ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5"}`
13679
13709
  },
13680
- /* @__PURE__ */ React26.createElement(Icon, { size: 13, className: config.color }),
13681
- /* @__PURE__ */ React26.createElement("span", { className: "flex-1 truncate font-medium" }, item.searchLabel || "Sem Nome"),
13682
- /* @__PURE__ */ React26.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-wide shrink-0" }, config.label)
13710
+ /* @__PURE__ */ React27.createElement(Icon, { size: 13, className: config.color }),
13711
+ /* @__PURE__ */ React27.createElement("span", { className: "flex-1 truncate font-medium" }, item.searchLabel || "Sem Nome"),
13712
+ /* @__PURE__ */ React27.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-wide shrink-0" }, config.label)
13683
13713
  );
13684
13714
  })
13685
13715
  );
@@ -13749,7 +13779,7 @@ function domToContent(el) {
13749
13779
  el.childNodes.forEach(walk);
13750
13780
  return segments;
13751
13781
  }
13752
- var RichGroupEditor = React27.memo(function RichGroupEditor2({
13782
+ var RichGroupEditor = React28.memo(function RichGroupEditor2({
13753
13783
  content,
13754
13784
  onChange,
13755
13785
  onMentionClick,
@@ -13935,7 +13965,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13935
13965
  }
13936
13966
  setMentionState(null);
13937
13967
  }, []);
13938
- return /* @__PURE__ */ React27.createElement("div", { className: "relative" }, isEmpty && !readOnly && /* @__PURE__ */ React27.createElement("div", { className: "absolute top-0 left-0 text-sm text-slate-600 pointer-events-none select-none" }, placeholder || "Escreva sobre este grupo\u2026 ou digite @ para mencionar"), /* @__PURE__ */ React27.createElement(
13968
+ return /* @__PURE__ */ React28.createElement("div", { className: "relative" }, isEmpty && !readOnly && /* @__PURE__ */ React28.createElement("div", { className: "absolute top-0 left-0 text-sm text-slate-600 pointer-events-none select-none" }, placeholder || "Escreva sobre este grupo\u2026 ou digite @ para mencionar"), /* @__PURE__ */ React28.createElement(
13939
13969
  "div",
13940
13970
  {
13941
13971
  ref: editorRef,
@@ -13949,7 +13979,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13949
13979
  className: `w-full min-h-[1.5rem] max-h-[250px] overflow-y-auto text-sm text-slate-200 focus:outline-none leading-relaxed ${!readOnly ? "cursor-text" : "cursor-default"}`,
13950
13980
  style: { overflowWrap: "break-word", wordBreak: "break-word" }
13951
13981
  }
13952
- ), mentionState && !readOnly && /* @__PURE__ */ React27.createElement(
13982
+ ), mentionState && !readOnly && /* @__PURE__ */ React28.createElement(
13953
13983
  MentionPopover,
13954
13984
  {
13955
13985
  query: mentionState.query,
@@ -13967,9 +13997,9 @@ var RichGroupEditor_default = RichGroupEditor;
13967
13997
  // src/components/Boards.jsx
13968
13998
  var Tooltip = ({ text, children }) => {
13969
13999
  if (!text) return children;
13970
- return /* @__PURE__ */ React28.createElement("div", { className: "relative group/tooltip" }, children, /* @__PURE__ */ React28.createElement("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-900 border border-white/10 text-white text-[10px] rounded opacity-0 group-hover/tooltip:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-[3000] shadow-2xl" }, text));
14000
+ return /* @__PURE__ */ React29.createElement("div", { className: "relative group/tooltip" }, children, /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-900 border border-white/10 text-white text-[10px] rounded opacity-0 group-hover/tooltip:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-[3000] shadow-2xl" }, text));
13971
14001
  };
13972
- var BoardItem = React28.memo(
14002
+ var BoardItem = React29.memo(
13973
14003
  ({
13974
14004
  item,
13975
14005
  index,
@@ -14015,20 +14045,20 @@ var BoardItem = React28.memo(
14015
14045
  onUpdate(item.id, { ...item, color: newColor });
14016
14046
  };
14017
14047
  if (isFolder) {
14018
- return /* @__PURE__ */ React28.createElement("div", { className: "relative group/item animate-in fade-in zoom-in duration-300 w-[calc(16.66%-14px)] min-w-[160px] h-14 flex-shrink-0" }, /* @__PURE__ */ React28.createElement(
14048
+ return /* @__PURE__ */ React29.createElement("div", { className: "relative group/item animate-in fade-in zoom-in duration-300 w-[calc(16.66%-14px)] min-w-[160px] h-14 flex-shrink-0" }, /* @__PURE__ */ React29.createElement(
14019
14049
  "div",
14020
14050
  {
14021
14051
  onClick: () => onEnterFolder(item.id),
14022
14052
  className: "h-full flex items-center gap-3 px-3 py-2 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 rounded-xl cursor-pointer transition-all duration-300 group/folder relative"
14023
14053
  },
14024
- /* @__PURE__ */ React28.createElement(
14054
+ /* @__PURE__ */ React29.createElement(
14025
14055
  "div",
14026
14056
  {
14027
14057
  className: "absolute inset-y-0 left-0 w-1 opacity-0 group-hover/folder:opacity-100 transition-opacity rounded-l-xl",
14028
14058
  style: { background: `linear-gradient(to right, ${item.color || "#6366f1"}33, transparent)` }
14029
14059
  }
14030
14060
  ),
14031
- /* @__PURE__ */ React28.createElement(
14061
+ /* @__PURE__ */ React29.createElement(
14032
14062
  "div",
14033
14063
  {
14034
14064
  className: "w-9 h-9 rounded-lg flex items-center justify-center group-hover/folder:scale-105 transition-all duration-300 shadow-inner shrink-0",
@@ -14038,9 +14068,9 @@ var BoardItem = React28.memo(
14038
14068
  color: item.color || "#6366f1"
14039
14069
  }
14040
14070
  },
14041
- /* @__PURE__ */ React28.createElement(FiFolder3, { size: 18 })
14071
+ /* @__PURE__ */ React29.createElement(FiFolder3, { size: 18 })
14042
14072
  ),
14043
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React28.createElement(
14073
+ /* @__PURE__ */ React29.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React29.createElement(
14044
14074
  "input",
14045
14075
  {
14046
14076
  type: "text",
@@ -14050,8 +14080,8 @@ var BoardItem = React28.memo(
14050
14080
  className: "bg-transparent border-none outline-none text-xs font-semibold text-slate-200 w-full focus:text-white placeholder:text-slate-600 truncate",
14051
14081
  placeholder: "Nome..."
14052
14082
  }
14053
- ) : /* @__PURE__ */ React28.createElement("span", { className: "text-xs font-semibold text-slate-200 block truncate" }, item.name), /* @__PURE__ */ React28.createElement("span", { className: "text-[9px] text-slate-500 uppercase tracking-widest font-bold" }, ((_a = item.children) == null ? void 0 : _a.length) || 0, " itens")),
14054
- canEdit && /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-y-0 right-1.5 opacity-0 group-hover/folder:opacity-100 transition-all duration-300 z-10 flex items-center" }, /* @__PURE__ */ React28.createElement("div", { className: "flex bg-slate-950/90 backdrop-blur-md p-1 rounded-lg border border-white/10 shadow-2xl items-center" }, /* @__PURE__ */ React28.createElement("div", { className: "px-1", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React28.createElement(
14083
+ ) : /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-semibold text-slate-200 block truncate" }, item.name), /* @__PURE__ */ React29.createElement("span", { className: "text-[9px] text-slate-500 uppercase tracking-widest font-bold" }, ((_a = item.children) == null ? void 0 : _a.length) || 0, " itens")),
14084
+ canEdit && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-y-0 right-1.5 opacity-0 group-hover/folder:opacity-100 transition-all duration-300 z-10 flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "flex bg-slate-950/90 backdrop-blur-md p-1 rounded-lg border border-white/10 shadow-2xl items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "px-1", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React29.createElement(
14055
14085
  ColorPicker,
14056
14086
  {
14057
14087
  isCompact: true,
@@ -14059,7 +14089,7 @@ var BoardItem = React28.memo(
14059
14089
  onChange: handleColorChange,
14060
14090
  disabled: !canEdit
14061
14091
  }
14062
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React28.createElement(
14092
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React29.createElement(
14063
14093
  "button",
14064
14094
  {
14065
14095
  onClick: (e) => {
@@ -14069,8 +14099,8 @@ var BoardItem = React28.memo(
14069
14099
  disabled: !canMoveUp,
14070
14100
  className: `p-1 rounded transition-colors ${!canMoveUp ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
14071
14101
  },
14072
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
14073
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14102
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14103
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
14074
14104
  "button",
14075
14105
  {
14076
14106
  onClick: (e) => {
@@ -14080,8 +14110,8 @@ var BoardItem = React28.memo(
14080
14110
  disabled: !canMoveDown,
14081
14111
  className: `p-1 rounded transition-colors ${!canMoveDown ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
14082
14112
  },
14083
- /* @__PURE__ */ React28.createElement(FiArrowDown, { size: 14 })
14084
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), showIndentUp && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React28.createElement(
14113
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14114
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), showIndentUp && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React29.createElement(
14085
14115
  "button",
14086
14116
  {
14087
14117
  onClick: (e) => {
@@ -14090,8 +14120,8 @@ var BoardItem = React28.memo(
14090
14120
  },
14091
14121
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
14092
14122
  },
14093
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
14094
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14123
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14124
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
14095
14125
  "button",
14096
14126
  {
14097
14127
  onClick: (e) => {
@@ -14100,8 +14130,8 @@ var BoardItem = React28.memo(
14100
14130
  },
14101
14131
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
14102
14132
  },
14103
- /* @__PURE__ */ React28.createElement(FiArrowRight2, { size: 14 })
14104
- )), !isAtRoot && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React28.createElement(
14133
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14134
+ )), !isAtRoot && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React29.createElement(
14105
14135
  "button",
14106
14136
  {
14107
14137
  onClick: (e) => {
@@ -14110,8 +14140,8 @@ var BoardItem = React28.memo(
14110
14140
  },
14111
14141
  className: `p-1 rounded text-slate-400 hover:text-white hover:bg-white/10 transition-colors`
14112
14142
  },
14113
- /* @__PURE__ */ React28.createElement(FiCornerUpLeft3, { size: 14 })
14114
- ))), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Remover Pasta" }, /* @__PURE__ */ React28.createElement(
14143
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14144
+ ))), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Remover Pasta" }, /* @__PURE__ */ React29.createElement(
14115
14145
  "button",
14116
14146
  {
14117
14147
  onClick: (e) => {
@@ -14120,11 +14150,11 @@ var BoardItem = React28.memo(
14120
14150
  },
14121
14151
  className: "p-1 text-slate-500 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
14122
14152
  },
14123
- /* @__PURE__ */ React28.createElement(FiTrash23, { size: 14 })
14153
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
14124
14154
  ))))
14125
14155
  ));
14126
14156
  }
14127
- return /* @__PURE__ */ React28.createElement("div", { className: "w-full flex flex-col gap-2 mb-3 pl-4 border-l border-white/10 relative group/item animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute -left-[1px] top-4 w-2 h-px bg-white/20" }), /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col gap-2 py-2 px-3 transition-all duration-200 hover:bg-white/5 border-l-2 border-transparent hover:border-white/20" }, /* @__PURE__ */ React28.createElement(
14157
+ return /* @__PURE__ */ React29.createElement("div", { className: "w-full flex flex-col gap-2 mb-3 pl-4 border-l border-white/10 relative group/item animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React29.createElement("div", { className: "absolute -left-[1px] top-4 w-2 h-px bg-white/20" }), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-2 py-2 px-3 transition-all duration-200 hover:bg-white/5 border-l-2 border-transparent hover:border-white/20" }, /* @__PURE__ */ React29.createElement(
14128
14158
  RichGroupEditor_default,
14129
14159
  {
14130
14160
  content: item.content,
@@ -14134,61 +14164,61 @@ var BoardItem = React28.memo(
14134
14164
  readOnly: !canEdit,
14135
14165
  placeholder: "Escreva sobre este grupo de texto\u2026 ou @ para mencionar"
14136
14166
  }
14137
- ), canEdit && /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between pt-2 mt-1 border-t border-white/5 opacity-40 group-hover/item:opacity-100 transition-opacity" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React28.createElement(
14167
+ ), canEdit && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between pt-2 mt-1 border-t border-white/5 opacity-40 group-hover/item:opacity-100 transition-opacity" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React29.createElement(
14138
14168
  "button",
14139
14169
  {
14140
14170
  onClick: () => onAddSubgroup(item.id, "text_group"),
14141
14171
  className: "flex items-center gap-1 px-1.5 py-1 text-[10px] uppercase font-bold tracking-wider text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
14142
14172
  title: "Criar Subgrupo de Texto"
14143
14173
  },
14144
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 12 }),
14145
- /* @__PURE__ */ React28.createElement("span", null, "Subgrupo")
14146
- )), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React28.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React28.createElement(
14174
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 12 }),
14175
+ /* @__PURE__ */ React29.createElement("span", null, "Subgrupo")
14176
+ )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React29.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React29.createElement(
14147
14177
  "button",
14148
14178
  {
14149
14179
  onClick: () => onMoveUp(item.id),
14150
14180
  disabled: !canMoveUp,
14151
14181
  className: `p-1.5 rounded transition-colors ${!canMoveUp ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
14152
14182
  },
14153
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
14154
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14183
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14184
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
14155
14185
  "button",
14156
14186
  {
14157
14187
  onClick: () => onMoveDown(item.id),
14158
14188
  disabled: !canMoveDown,
14159
14189
  className: `p-1.5 rounded transition-colors ${!canMoveDown ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
14160
14190
  },
14161
- /* @__PURE__ */ React28.createElement(FiArrowDown, { size: 14 })
14162
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), showIndentUp && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React28.createElement(
14191
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14192
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), showIndentUp && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React29.createElement(
14163
14193
  "button",
14164
14194
  {
14165
14195
  onClick: () => onIndent(item.id),
14166
14196
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
14167
14197
  },
14168
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
14169
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14198
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14199
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
14170
14200
  "button",
14171
14201
  {
14172
14202
  onClick: () => onIndentDown(item.id),
14173
14203
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
14174
14204
  },
14175
- /* @__PURE__ */ React28.createElement(FiArrowRight2, { size: 14 })
14176
- )), !isAtRoot && /* @__PURE__ */ React28.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React28.createElement(
14205
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14206
+ )), !isAtRoot && /* @__PURE__ */ React29.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React29.createElement(
14177
14207
  "button",
14178
14208
  {
14179
14209
  onClick: () => onOutdent(item.id),
14180
14210
  disabled: !onOutdent,
14181
14211
  className: `p-1.5 rounded transition-colors ${!onOutdent ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
14182
14212
  },
14183
- /* @__PURE__ */ React28.createElement(FiCornerUpLeft3, { size: 14 })
14184
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Remover Grupo de Texto" }, /* @__PURE__ */ React28.createElement(
14213
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14214
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Remover Grupo de Texto" }, /* @__PURE__ */ React29.createElement(
14185
14215
  "button",
14186
14216
  {
14187
14217
  onClick: () => onDelete(item.id),
14188
14218
  className: "p-1.5 text-slate-600 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
14189
14219
  },
14190
- /* @__PURE__ */ React28.createElement(FiTrash23, { size: 14 })
14191
- ))))), item.children && item.children.length > 0 && /* @__PURE__ */ React28.createElement("div", { className: "ml-2" }, item.children.map((child, idx) => /* @__PURE__ */ React28.createElement(
14220
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
14221
+ ))))), item.children && item.children.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-2" }, item.children.map((child, idx) => /* @__PURE__ */ React29.createElement(
14192
14222
  BoardItem,
14193
14223
  {
14194
14224
  key: child.id,
@@ -14514,72 +14544,72 @@ function Boards({
14514
14544
  setNavigationStack([]);
14515
14545
  }, []);
14516
14546
  if (!isOpen) return null;
14517
- return /* @__PURE__ */ React28.createElement(
14547
+ return /* @__PURE__ */ React29.createElement(
14518
14548
  "div",
14519
14549
  {
14520
14550
  className: "fixed inset-0 z-[2200] bg-black/80 backdrop-blur-sm flex items-center justify-center p-2",
14521
14551
  onClick: onClose
14522
14552
  },
14523
- /* @__PURE__ */ React28.createElement(
14553
+ /* @__PURE__ */ React29.createElement(
14524
14554
  "div",
14525
14555
  {
14526
14556
  className: "bg-slate-950 border border-white/10 rounded-xl w-full max-w-[calc(100vw-32px)] h-[97vh] flex flex-col shadow-2xl overflow-hidden animate-in fade-in zoom-in-95 duration-200",
14527
14557
  onClick: (e) => e.stopPropagation()
14528
14558
  },
14529
- /* @__PURE__ */ React28.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ React28.createElement(FiLayers7, { className: "text-indigo-400" }), "Boards"), saveStatus !== "idle" && /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ React28.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__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
14559
+ /* @__PURE__ */ React29.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement(FiLayers7, { className: "text-indigo-400" }), "Boards"), saveStatus !== "idle" && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ React29.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__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
14530
14560
  FiLoader5,
14531
14561
  {
14532
14562
  className: "animate-spin text-indigo-400",
14533
14563
  size: 12
14534
14564
  }
14535
- ), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-3" }, canEdit && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
14565
+ ), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, canEdit && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
14536
14566
  "button",
14537
14567
  {
14538
14568
  onClick: () => handleAddItem("folder"),
14539
14569
  className: "flex items-center gap-2 px-3 py-1.5 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 backdrop-blur-sm text-slate-200 hover:text-white rounded-md transition-all duration-200 text-xs font-medium shadow-sm"
14540
14570
  },
14541
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 14, className: "text-amber-400" }),
14542
- /* @__PURE__ */ React28.createElement("span", { className: "hidden sm:inline" }, "Pasta")
14543
- ), /* @__PURE__ */ React28.createElement(
14571
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-amber-400" }),
14572
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Pasta")
14573
+ ), /* @__PURE__ */ React29.createElement(
14544
14574
  "button",
14545
14575
  {
14546
14576
  onClick: () => handleAddItem("text_group"),
14547
14577
  className: "flex items-center gap-2 px-3 py-1.5 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 backdrop-blur-sm text-slate-200 hover:text-white rounded-md transition-all duration-200 text-xs font-medium shadow-sm"
14548
14578
  },
14549
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 14, className: "text-indigo-400" }),
14550
- /* @__PURE__ */ React28.createElement("span", { className: "hidden sm:inline" }, "Texto")
14551
- )), /* @__PURE__ */ React28.createElement(
14579
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-indigo-400" }),
14580
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Texto")
14581
+ )), /* @__PURE__ */ React29.createElement(
14552
14582
  "button",
14553
14583
  {
14554
14584
  onClick: onClose,
14555
14585
  className: "w-8 h-8 rounded-lg flex items-center justify-center text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
14556
14586
  },
14557
- /* @__PURE__ */ React28.createElement(FiX8, { size: 16 })
14587
+ /* @__PURE__ */ React29.createElement(FiX8, { size: 16 })
14558
14588
  ))),
14559
- /* @__PURE__ */ React28.createElement("div", { className: "h-10 px-6 bg-slate-900/40 border-b border-white/5 flex items-center gap-2 text-[10px] uppercase font-bold tracking-widest text-slate-500 overflow-x-auto no-scrollbar whitespace-nowrap" }, /* @__PURE__ */ React28.createElement(
14589
+ /* @__PURE__ */ React29.createElement("div", { className: "h-10 px-6 bg-slate-900/40 border-b border-white/5 flex items-center gap-2 text-[10px] uppercase font-bold tracking-widest text-slate-500 overflow-x-auto no-scrollbar whitespace-nowrap" }, /* @__PURE__ */ React29.createElement(
14560
14590
  "button",
14561
14591
  {
14562
14592
  onClick: navigateHome,
14563
14593
  className: `hover:text-white transition-colors flex items-center gap-1 ${navigationStack.length === 0 ? "text-indigo-400" : ""}`
14564
14594
  },
14565
14595
  "Home"
14566
- ), currentPath.map((folder, idx) => /* @__PURE__ */ React28.createElement(React28.Fragment, { key: folder.id }, /* @__PURE__ */ React28.createElement(FiChevronRight7, { size: 10, className: "shrink-0" }), /* @__PURE__ */ React28.createElement(
14596
+ ), currentPath.map((folder, idx) => /* @__PURE__ */ React29.createElement(React29.Fragment, { key: folder.id }, /* @__PURE__ */ React29.createElement(FiChevronRight7, { size: 10, className: "shrink-0" }), /* @__PURE__ */ React29.createElement(
14567
14597
  "button",
14568
14598
  {
14569
14599
  onClick: () => navigateToBreadcrumb(idx),
14570
14600
  className: `hover:text-white transition-colors ${idx === currentPath.length - 1 ? "text-indigo-400" : ""}`
14571
14601
  },
14572
14602
  folder.name || "Sem Nome"
14573
- ))), navigationStack.length > 0 && /* @__PURE__ */ React28.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React28.createElement(
14603
+ ))), navigationStack.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React29.createElement(
14574
14604
  "button",
14575
14605
  {
14576
14606
  onClick: navigateUp,
14577
14607
  className: "flex items-center gap-1 px-2 py-1 rounded bg-white/5 hover:bg-white/10 text-slate-400 hover:text-white transition-all"
14578
14608
  },
14579
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 10 }),
14580
- /* @__PURE__ */ React28.createElement("span", null, "Voltar")
14609
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 10 }),
14610
+ /* @__PURE__ */ React29.createElement("span", null, "Voltar")
14581
14611
  ))),
14582
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto overflow-x-hidden custom-scrollbar bg-slate-950/30 p-6 flex flex-wrap gap-4 items-start content-start" }, currentBoardItems.length === 0 ? /* @__PURE__ */ React28.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 bg-slate-900/20" }, /* @__PURE__ */ React28.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React28.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Esta pasta est\xE1 vazia.", /* @__PURE__ */ React28.createElement("br", null), "Use os bot\xF5es acima para criar conte\xFAdo.") : /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum conte\xFAdo dispon\xEDvel nesta pasta."))) : currentBoardItems.map((item, index) => /* @__PURE__ */ React28.createElement(
14612
+ /* @__PURE__ */ React29.createElement("div", { className: "flex-1 overflow-y-auto overflow-x-hidden custom-scrollbar bg-slate-950/30 p-6 flex flex-wrap gap-4 items-start content-start" }, currentBoardItems.length === 0 ? /* @__PURE__ */ React29.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 bg-slate-900/20" }, /* @__PURE__ */ React29.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, "Esta pasta est\xE1 vazia.", /* @__PURE__ */ React29.createElement("br", null), "Use os bot\xF5es acima para criar conte\xFAdo.") : /* @__PURE__ */ React29.createElement(React29.Fragment, null, "Nenhum conte\xFAdo dispon\xEDvel nesta pasta."))) : currentBoardItems.map((item, index) => /* @__PURE__ */ React29.createElement(
14583
14613
  BoardItem,
14584
14614
  {
14585
14615
  key: item.id,
@@ -14602,13 +14632,13 @@ function Boards({
14602
14632
  isAtRoot: navigationStack.length === 0
14603
14633
  }
14604
14634
  ))),
14605
- /* @__PURE__ */ React28.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ React28.createElement("span", null, currentBoardItems.length, " itens nesta visualiza\xE7\xE3o"))
14635
+ /* @__PURE__ */ React29.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ React29.createElement("span", null, currentBoardItems.length, " itens nesta visualiza\xE7\xE3o"))
14606
14636
  )
14607
14637
  );
14608
14638
  }
14609
14639
 
14610
14640
  // src/components/MilestoneManager.jsx
14611
- import React29, { useState as useState28 } from "react";
14641
+ import React30, { useState as useState28 } from "react";
14612
14642
  import { FiTarget as FiTarget4, FiPlus as FiPlus11, FiTrash2 as FiTrash24, FiX as FiX9, FiCheck as FiCheck12, FiPauseCircle, FiPlayCircle } from "react-icons/fi";
14613
14643
  function MilestoneManager({
14614
14644
  isOpen,
@@ -14642,27 +14672,27 @@ function MilestoneManager({
14642
14672
  };
14643
14673
  if (!isOpen) return null;
14644
14674
  const swallow = (e) => e.stopPropagation();
14645
- return /* @__PURE__ */ React29.createElement(
14675
+ return /* @__PURE__ */ React30.createElement(
14646
14676
  "div",
14647
14677
  {
14648
14678
  className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-slate-950/40 backdrop-blur-sm animate-in fade-in duration-300",
14649
14679
  onClick: onClose
14650
14680
  },
14651
- /* @__PURE__ */ React29.createElement(
14681
+ /* @__PURE__ */ React30.createElement(
14652
14682
  "div",
14653
14683
  {
14654
14684
  className: "w-full max-w-lg bg-slate-900/90 backdrop-blur-xl border border-white/10 rounded-2xl shadow-2xl flex flex-col max-h-[85vh] animate-in zoom-in-95 duration-300",
14655
14685
  onClick: swallow
14656
14686
  },
14657
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-4 border-b border-white/10 flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 rounded-lg bg-indigo-500/20 text-indigo-400" }, /* @__PURE__ */ React29.createElement(FiTarget4, { size: 20 })), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: "text-lg font-semibold text-slate-100" }, "Milestones"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-400" }, "Gerencie os marcos do seu cen\xE1rio"))), /* @__PURE__ */ React29.createElement(
14687
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-4 border-b border-white/10 flex items-center justify-between" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React30.createElement("div", { className: "p-2 rounded-lg bg-indigo-500/20 text-indigo-400" }, /* @__PURE__ */ React30.createElement(FiTarget4, { size: 20 })), /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("h2", { className: "text-lg font-semibold text-slate-100" }, "Milestones"), /* @__PURE__ */ React30.createElement("p", { className: "text-xs text-slate-400" }, "Gerencie os marcos do seu cen\xE1rio"))), /* @__PURE__ */ React30.createElement(
14658
14688
  "button",
14659
14689
  {
14660
14690
  onClick: onClose,
14661
14691
  className: "p-2 rounded-full hover:bg-white/10 text-slate-400 hover:text-white transition-colors"
14662
14692
  },
14663
- /* @__PURE__ */ React29.createElement(FiX9, { size: 20 })
14693
+ /* @__PURE__ */ React30.createElement(FiX9, { size: 20 })
14664
14694
  )),
14665
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-5 bg-white/5 border-b border-white/5" }, /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
14695
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-5 bg-white/5 border-b border-white/5" }, /* @__PURE__ */ React30.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React30.createElement(
14666
14696
  "input",
14667
14697
  {
14668
14698
  type: "text",
@@ -14672,47 +14702,47 @@ function MilestoneManager({
14672
14702
  placeholder: "Adicionar novo milestone...",
14673
14703
  className: "flex-1 bg-slate-800/50 border border-white/10 rounded-xl px-4 py-2.5 text-sm text-slate-100 placeholder:text-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/40 focus:border-indigo-500/50 transition-all shadow-inner"
14674
14704
  }
14675
- ), /* @__PURE__ */ React29.createElement(
14705
+ ), /* @__PURE__ */ React30.createElement(
14676
14706
  "button",
14677
14707
  {
14678
14708
  onClick: handleAddMilestone,
14679
14709
  disabled: !newMilestoneName.trim(),
14680
14710
  className: "px-4 py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 disabled:opacity-30 disabled:cursor-not-allowed text-white text-sm font-medium transition-all flex items-center gap-2 shadow-lg shadow-indigo-500/20 active:scale-95"
14681
14711
  },
14682
- /* @__PURE__ */ React29.createElement(FiPlus11, { size: 18 }),
14712
+ /* @__PURE__ */ React30.createElement(FiPlus11, { size: 18 }),
14683
14713
  "Adicionar"
14684
14714
  ))),
14685
- /* @__PURE__ */ React29.createElement("div", { className: "flex-1 overflow-y-auto px-6 py-4 custom-scrollbar" }, milestones.length > 0 ? /* @__PURE__ */ React29.createElement("div", { className: "space-y-3" }, milestones.map((ms) => /* @__PURE__ */ React29.createElement(
14715
+ /* @__PURE__ */ React30.createElement("div", { className: "flex-1 overflow-y-auto px-6 py-4 custom-scrollbar" }, milestones.length > 0 ? /* @__PURE__ */ React30.createElement("div", { className: "space-y-3" }, milestones.map((ms) => /* @__PURE__ */ React30.createElement(
14686
14716
  "div",
14687
14717
  {
14688
14718
  key: ms.id,
14689
14719
  className: `group flex items-center justify-between p-4 rounded-xl border transition-all duration-200 ${ms.status === "active" ? "bg-slate-800/40 border-indigo-500/20 hover:border-indigo-500/40" : "bg-slate-900/40 border-white/5 opacity-60 grayscale-[0.3]"}`
14690
14720
  },
14691
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React29.createElement(
14721
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React30.createElement(
14692
14722
  "div",
14693
14723
  {
14694
14724
  className: `w-2 h-2 rounded-full shrink-0 ${ms.status === "active" ? "bg-indigo-400 shadow-[0_0_8px_rgba(129,140,248,0.6)]" : "bg-slate-600"}`
14695
14725
  }
14696
- ), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React29.createElement("span", { className: `text-sm font-medium truncate ${ms.status === "active" ? "text-slate-100" : "text-slate-400 line-through"}` }, ms.name), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-wider" }, ms.status === "active" ? "Ativo" : "Inativo"))),
14697
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
14726
+ ), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: `text-sm font-medium truncate ${ms.status === "active" ? "text-slate-100" : "text-slate-400 line-through"}` }, ms.name), /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-wider" }, ms.status === "active" ? "Ativo" : "Inativo"))),
14727
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React30.createElement(
14698
14728
  "button",
14699
14729
  {
14700
14730
  onClick: () => handleToggleMilestoneStatus(ms.id),
14701
14731
  className: `p-2 rounded-lg transition-all ${ms.status === "active" ? "hover:bg-slate-700 text-slate-400" : "hover:bg-indigo-500/20 text-indigo-400"}`,
14702
14732
  title: ms.status === "active" ? "Inativar" : "Ativar"
14703
14733
  },
14704
- ms.status === "active" ? /* @__PURE__ */ React29.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React29.createElement(FiPlayCircle, { size: 18 })
14705
- ), /* @__PURE__ */ React29.createElement(
14734
+ ms.status === "active" ? /* @__PURE__ */ React30.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React30.createElement(FiPlayCircle, { size: 18 })
14735
+ ), /* @__PURE__ */ React30.createElement(
14706
14736
  "button",
14707
14737
  {
14708
14738
  onClick: () => handleRemoveMilestone(ms.id),
14709
14739
  className: "p-2 rounded-lg hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-all",
14710
14740
  title: "Remover"
14711
14741
  },
14712
- /* @__PURE__ */ React29.createElement(FiTrash24, { size: 18 })
14742
+ /* @__PURE__ */ React30.createElement(FiTrash24, { size: 18 })
14713
14743
  ))
14714
- ))) : /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center py-12 text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "p-4 rounded-full bg-slate-800/30 text-slate-600 mb-4" }, /* @__PURE__ */ React29.createElement(FiTarget4, { size: 40 })), /* @__PURE__ */ React29.createElement("h3", { className: "text-slate-400 font-medium" }, "Nenhum milestone definido"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-600 max-w-[200px] mt-1 italic" }, "Defina marcos importantes para orientar o progresso do projeto."))),
14715
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-4 border-t border-white/5 bg-slate-900/50 flex items-center justify-between rounded-b-2xl" }, /* @__PURE__ */ React29.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Total:"), /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-bold text-slate-300" }, milestones.length)), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Ativos:"), /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-bold text-indigo-400" }, milestones.filter((m) => m.status === "active").length))))
14744
+ ))) : /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center py-12 text-center" }, /* @__PURE__ */ React30.createElement("div", { className: "p-4 rounded-full bg-slate-800/30 text-slate-600 mb-4" }, /* @__PURE__ */ React30.createElement(FiTarget4, { size: 40 })), /* @__PURE__ */ React30.createElement("h3", { className: "text-slate-400 font-medium" }, "Nenhum milestone definido"), /* @__PURE__ */ React30.createElement("p", { className: "text-xs text-slate-600 max-w-[200px] mt-1 italic" }, "Defina marcos importantes para orientar o progresso do projeto."))),
14745
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-4 border-t border-white/5 bg-slate-900/50 flex items-center justify-between rounded-b-2xl" }, /* @__PURE__ */ React30.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Total:"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs font-bold text-slate-300" }, milestones.length)), /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Ativos:"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs font-bold text-indigo-400" }, milestones.filter((m) => m.status === "active").length))))
14716
14746
  )
14717
14747
  );
14718
14748
  }
@@ -19402,10 +19432,10 @@ function XViewScene({
19402
19432
  // <-- handleCancelQuest adicionado aqui
19403
19433
  ]);
19404
19434
  if (isLoading || status === "loading" || permissionStatus === "loading") {
19405
- return /* @__PURE__ */ React30.createElement(LoadingScreen, null);
19435
+ return /* @__PURE__ */ React31.createElement(LoadingScreen, null);
19406
19436
  }
19407
19437
  if (permissionStatus === "denied") {
19408
- return /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React30.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React30.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React30.createElement(
19438
+ return /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React31.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React31.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React31.createElement(
19409
19439
  "svg",
19410
19440
  {
19411
19441
  xmlns: "http://www.w3.org/2000/svg",
@@ -19415,7 +19445,7 @@ function XViewScene({
19415
19445
  stroke: "currentColor",
19416
19446
  className: "w-16 h-16 mx-auto"
19417
19447
  },
19418
- /* @__PURE__ */ React30.createElement(
19448
+ /* @__PURE__ */ React31.createElement(
19419
19449
  "path",
19420
19450
  {
19421
19451
  strokeLinecap: "round",
@@ -19423,13 +19453,13 @@ function XViewScene({
19423
19453
  d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
19424
19454
  }
19425
19455
  )
19426
- )), /* @__PURE__ */ React30.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React30.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React30.createElement(
19456
+ )), /* @__PURE__ */ React31.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React31.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React31.createElement(
19427
19457
  "button",
19428
19458
  {
19429
19459
  onClick: handleNavigateBack,
19430
19460
  className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium"
19431
19461
  },
19432
- /* @__PURE__ */ React30.createElement(
19462
+ /* @__PURE__ */ React31.createElement(
19433
19463
  "svg",
19434
19464
  {
19435
19465
  xmlns: "http://www.w3.org/2000/svg",
@@ -19439,7 +19469,7 @@ function XViewScene({
19439
19469
  stroke: "currentColor",
19440
19470
  className: "w-5 h-5"
19441
19471
  },
19442
- /* @__PURE__ */ React30.createElement(
19472
+ /* @__PURE__ */ React31.createElement(
19443
19473
  "path",
19444
19474
  {
19445
19475
  strokeLinecap: "round",
@@ -19451,7 +19481,7 @@ function XViewScene({
19451
19481
  "Voltar para o X.View"
19452
19482
  )));
19453
19483
  }
19454
- return /* @__PURE__ */ React30.createElement(
19484
+ return /* @__PURE__ */ React31.createElement(
19455
19485
  "div",
19456
19486
  {
19457
19487
  ref: mountRef,
@@ -19463,7 +19493,7 @@ function XViewScene({
19463
19493
  cursor: stateRef.current.connection.isActive || stateRef.current.relink.isActive || ancestryMode.isActive ? "crosshair" : creationMode.isActive ? "default" : "grab"
19464
19494
  }
19465
19495
  },
19466
- userPermissionRole !== "link_viewer" && /* @__PURE__ */ React30.createElement(
19496
+ userPermissionRole !== "link_viewer" && /* @__PURE__ */ React31.createElement(
19467
19497
  XViewSidebar,
19468
19498
  {
19469
19499
  dbNodes: searchableDbNodes,
@@ -19488,7 +19518,7 @@ function XViewScene({
19488
19518
  onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true)
19489
19519
  }
19490
19520
  ),
19491
- creationMode.isActive && /* @__PURE__ */ React30.createElement(
19521
+ creationMode.isActive && /* @__PURE__ */ React31.createElement(
19492
19522
  InSceneCreationForm,
19493
19523
  {
19494
19524
  onSave: (data) => userActionHandlers.handleSaveNode(actionHandlerContext, data),
@@ -19521,7 +19551,7 @@ function XViewScene({
19521
19551
  create_google_doc_action
19522
19552
  }
19523
19553
  ),
19524
- versionMode.isActive && /* @__PURE__ */ React30.createElement(
19554
+ versionMode.isActive && /* @__PURE__ */ React31.createElement(
19525
19555
  InSceneVersionForm,
19526
19556
  {
19527
19557
  onSave: (data) => userActionHandlers.handleSaveVersionNode(actionHandlerContext, data),
@@ -19547,7 +19577,7 @@ function XViewScene({
19547
19577
  availableAncestries: allAvailableAncestries
19548
19578
  }
19549
19579
  ),
19550
- questMode.isActive && /* @__PURE__ */ React30.createElement(
19580
+ questMode.isActive && /* @__PURE__ */ React31.createElement(
19551
19581
  InSceneQuestForm,
19552
19582
  {
19553
19583
  onSave: (data) => handleSaveQuestNode(actionHandlerContext, data),
@@ -19576,7 +19606,7 @@ function XViewScene({
19576
19606
  create_google_doc_action
19577
19607
  }
19578
19608
  ),
19579
- readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React30.createElement(
19609
+ readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React31.createElement(
19580
19610
  "div",
19581
19611
  {
19582
19612
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isReadModeResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -19589,7 +19619,7 @@ function XViewScene({
19589
19619
  maxWidth: "92vw"
19590
19620
  }
19591
19621
  },
19592
- /* @__PURE__ */ React30.createElement(
19622
+ /* @__PURE__ */ React31.createElement(
19593
19623
  "div",
19594
19624
  {
19595
19625
  onPointerDown: (e) => {
@@ -19600,7 +19630,7 @@ function XViewScene({
19600
19630
  title: "Arraste para redimensionar"
19601
19631
  }
19602
19632
  ),
19603
- /* @__PURE__ */ React30.createElement(
19633
+ /* @__PURE__ */ React31.createElement(
19604
19634
  DescriptionReadModePanel,
19605
19635
  {
19606
19636
  key: readingMode.branchStack.length > 0 ? readingMode.branchStack[readingMode.branchStack.length - 1].branchId : readingMode.ancestry.ancestry_id,
@@ -19635,7 +19665,7 @@ function XViewScene({
19635
19665
  }
19636
19666
  )
19637
19667
  ),
19638
- ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React30.createElement(
19668
+ ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React31.createElement(
19639
19669
  CreateAncestryPanel,
19640
19670
  {
19641
19671
  ancestryMode,
@@ -19671,7 +19701,7 @@ function XViewScene({
19671
19701
  onRenderAbstractionTree: (data, targetId) => handleRenderAbstractionTree(data, targetId)
19672
19702
  }
19673
19703
  ),
19674
- editingAncestryRel.visible && /* @__PURE__ */ React30.createElement(
19704
+ editingAncestryRel.visible && /* @__PURE__ */ React31.createElement(
19675
19705
  AncestryRelationshipPanel,
19676
19706
  {
19677
19707
  data: editingAncestryRel.data,
@@ -19685,7 +19715,7 @@ function XViewScene({
19685
19715
  onUploadFile: upload_file_action
19686
19716
  }
19687
19717
  ),
19688
- detailsNode && detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19718
+ detailsNode && detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19689
19719
  QuestDetailsPanel,
19690
19720
  {
19691
19721
  node: detailsNode,
@@ -19712,7 +19742,7 @@ function XViewScene({
19712
19742
  create_google_doc_action
19713
19743
  }
19714
19744
  ),
19715
- detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19745
+ detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19716
19746
  NodeDetailsPanel,
19717
19747
  {
19718
19748
  node: detailsNode,
@@ -19745,7 +19775,7 @@ function XViewScene({
19745
19775
  create_google_doc_action
19746
19776
  }
19747
19777
  ),
19748
- detailsLink && /* @__PURE__ */ React30.createElement(
19778
+ detailsLink && /* @__PURE__ */ React31.createElement(
19749
19779
  RelationshipDetailsPanel,
19750
19780
  {
19751
19781
  link: detailsLink,
@@ -19760,7 +19790,7 @@ function XViewScene({
19760
19790
  onHighlight: handleReadModeHighlight
19761
19791
  }
19762
19792
  ),
19763
- ancestryLinkDetails && /* @__PURE__ */ React30.createElement(
19793
+ ancestryLinkDetails && /* @__PURE__ */ React31.createElement(
19764
19794
  AncestryLinkDetailsPanel,
19765
19795
  {
19766
19796
  data: ancestryLinkDetails,
@@ -19772,7 +19802,7 @@ function XViewScene({
19772
19802
  onHighlight: handleReadModeHighlight
19773
19803
  }
19774
19804
  ),
19775
- /* @__PURE__ */ React30.createElement(
19805
+ /* @__PURE__ */ React31.createElement(
19776
19806
  "div",
19777
19807
  {
19778
19808
  ref: tooltipRef,
@@ -19799,7 +19829,7 @@ function XViewScene({
19799
19829
  }
19800
19830
  }
19801
19831
  ),
19802
- /* @__PURE__ */ React30.createElement(
19832
+ /* @__PURE__ */ React31.createElement(
19803
19833
  ContextMenu,
19804
19834
  {
19805
19835
  data: contextMenu,
@@ -19837,7 +19867,7 @@ function XViewScene({
19837
19867
  onFinishQuest: handleFinishQuestQuick
19838
19868
  }
19839
19869
  ),
19840
- /* @__PURE__ */ React30.createElement(
19870
+ /* @__PURE__ */ React31.createElement(
19841
19871
  MultiNodeContextMenu,
19842
19872
  {
19843
19873
  data: multiContextMenu,
@@ -19857,7 +19887,7 @@ function XViewScene({
19857
19887
  )
19858
19888
  }
19859
19889
  ),
19860
- /* @__PURE__ */ React30.createElement(
19890
+ /* @__PURE__ */ React31.createElement(
19861
19891
  RelationshipContextMenu,
19862
19892
  {
19863
19893
  data: relationshipMenu,
@@ -19875,14 +19905,14 @@ function XViewScene({
19875
19905
  onDelete: (data) => userActionHandlers.handleDeleteLink(actionHandlerContext, data)
19876
19906
  }
19877
19907
  ),
19878
- /* @__PURE__ */ React30.createElement(
19908
+ /* @__PURE__ */ React31.createElement(
19879
19909
  ImageViewer,
19880
19910
  {
19881
19911
  data: imageViewer,
19882
19912
  onClose: () => setImageViewer({ ...imageViewer, visible: false })
19883
19913
  }
19884
19914
  ),
19885
- /* @__PURE__ */ React30.createElement(
19915
+ /* @__PURE__ */ React31.createElement(
19886
19916
  Boards,
19887
19917
  {
19888
19918
  isOpen: isBoardsOpen,
@@ -19895,7 +19925,7 @@ function XViewScene({
19895
19925
  userRole: userPermissionRole
19896
19926
  }
19897
19927
  ),
19898
- /* @__PURE__ */ React30.createElement(
19928
+ /* @__PURE__ */ React31.createElement(
19899
19929
  MilestoneManager,
19900
19930
  {
19901
19931
  isOpen: isMilestoneManagerOpen,
@@ -19904,7 +19934,7 @@ function XViewScene({
19904
19934
  onUpdateMilestones: handleUpdateMilestones
19905
19935
  }
19906
19936
  ),
19907
- /* @__PURE__ */ React30.createElement(
19937
+ /* @__PURE__ */ React31.createElement(
19908
19938
  ImportParentFileModal,
19909
19939
  {
19910
19940
  isOpen: isImportModalOpen,
@@ -19917,7 +19947,7 @@ function XViewScene({
19917
19947
  currentAncestries: ancestryDataRef.current || []
19918
19948
  }
19919
19949
  ),
19920
- invalidTargetError && /* @__PURE__ */ React30.createElement(
19950
+ invalidTargetError && /* @__PURE__ */ React31.createElement(
19921
19951
  "div",
19922
19952
  {
19923
19953
  className: "ui-overlay",
@@ -19942,13 +19972,13 @@ function XViewScene({
19942
19972
  animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
19943
19973
  }
19944
19974
  },
19945
- /* @__PURE__ */ React30.createElement("style", null, `
19975
+ /* @__PURE__ */ React31.createElement("style", null, `
19946
19976
  @keyframes fadeInDown {
19947
19977
  from { opacity: 0; transform: translate(-50%, -20px); }
19948
19978
  to { opacity: 1; transform: translate(-50%, 0); }
19949
19979
  }
19950
19980
  `),
19951
- /* @__PURE__ */ React30.createElement(
19981
+ /* @__PURE__ */ React31.createElement(
19952
19982
  "svg",
19953
19983
  {
19954
19984
  width: "20",
@@ -19960,12 +19990,12 @@ function XViewScene({
19960
19990
  strokeLinecap: "round",
19961
19991
  strokeLinejoin: "round"
19962
19992
  },
19963
- /* @__PURE__ */ React30.createElement("circle", { cx: "12", cy: "12", r: "10" }),
19964
- /* @__PURE__ */ React30.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
19965
- /* @__PURE__ */ React30.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
19993
+ /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }),
19994
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
19995
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
19966
19996
  ),
19967
- /* @__PURE__ */ React30.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
19968
- /* @__PURE__ */ React30.createElement(
19997
+ /* @__PURE__ */ React31.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
19998
+ /* @__PURE__ */ React31.createElement(
19969
19999
  "button",
19970
20000
  {
19971
20001
  onClick: () => setInvalidTargetError(null),