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

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 +974 -892
  2. package/dist/index.mjs +657 -575
  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,
@@ -9135,13 +9156,30 @@ function InSceneCreationForm({
9135
9156
  setIsLoadingDocs(true);
9136
9157
  const res = await create_google_doc_action(name);
9137
9158
  if (res.success) {
9138
- const newProp = {
9139
- id: uuidv45(),
9140
- key: "Google Docs",
9141
- type: "links",
9142
- value: [{ id: uuidv45(), name: "Abrir Documento", value: res.link }]
9143
- };
9144
- setCustomProps((prev) => [...prev, newProp]);
9159
+ const existingLinksPropIndex = customProps.findIndex(
9160
+ (p) => p.type === "links" && p.key === "Links"
9161
+ );
9162
+ if (existingLinksPropIndex !== -1) {
9163
+ const updatedProps = [...customProps];
9164
+ const existingProp = { ...updatedProps[existingLinksPropIndex] };
9165
+ existingProp.value = [
9166
+ ...existingProp.value || [],
9167
+ { id: uuidv45(), name: "Abrir Documento", value: res.link }
9168
+ ];
9169
+ updatedProps[existingLinksPropIndex] = existingProp;
9170
+ setCustomProps(updatedProps);
9171
+ } else {
9172
+ const newProp = {
9173
+ id: uuidv45(),
9174
+ key: "Links",
9175
+ type: "links",
9176
+ value: [{ id: uuidv45(), name: "Abrir Documento", value: res.link }]
9177
+ };
9178
+ setCustomProps((prev) => [...prev, newProp]);
9179
+ }
9180
+ if (res.link) {
9181
+ window.open(res.link, "_blank");
9182
+ }
9145
9183
  } else {
9146
9184
  alert("Erro ao criar documento: " + res.error);
9147
9185
  }
@@ -9194,7 +9232,7 @@ function InSceneCreationForm({
9194
9232
  }
9195
9233
  };
9196
9234
  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(
9235
+ return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9198
9236
  "div",
9199
9237
  {
9200
9238
  ref: refEl,
@@ -9208,25 +9246,25 @@ function InSceneCreationForm({
9208
9246
  onContextMenu: swallow,
9209
9247
  onDoubleClick: swallow
9210
9248
  },
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(
9249
+ /* @__PURE__ */ React14.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9250
+ /* @__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")),
9251
+ /* @__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
9252
  "span",
9215
9253
  {
9216
9254
  key: index,
9217
9255
  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
9256
  },
9219
9257
  t,
9220
- /* @__PURE__ */ React13.createElement(
9258
+ /* @__PURE__ */ React14.createElement(
9221
9259
  "button",
9222
9260
  {
9223
9261
  type: "button",
9224
9262
  onClick: () => handleRemoveType(index),
9225
9263
  className: "hover:text-white transition-colors"
9226
9264
  },
9227
- /* @__PURE__ */ React13.createElement(FiX3, { size: 12 })
9265
+ /* @__PURE__ */ React14.createElement(FiX3, { size: 12 })
9228
9266
  )
9229
- )), /* @__PURE__ */ React13.createElement(
9267
+ )), /* @__PURE__ */ React14.createElement(
9230
9268
  "input",
9231
9269
  {
9232
9270
  type: "text",
@@ -9248,7 +9286,7 @@ function InSceneCreationForm({
9248
9286
  autoComplete: "off",
9249
9287
  autoFocus: true
9250
9288
  }
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(
9289
+ ), 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
9290
  "li",
9253
9291
  {
9254
9292
  key: index,
@@ -9259,7 +9297,7 @@ function InSceneCreationForm({
9259
9297
  }
9260
9298
  },
9261
9299
  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(
9300
+ ))))), /* @__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
9301
  "input",
9264
9302
  {
9265
9303
  required: true,
@@ -9269,21 +9307,21 @@ function InSceneCreationForm({
9269
9307
  onChange: handleNameInputChange,
9270
9308
  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
9309
  }
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(
9310
+ )), 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
9311
  "button",
9274
9312
  {
9275
9313
  type: "button",
9276
9314
  onClick: () => setIsDatasetDropdownOpen(!isDatasetDropdownOpen),
9277
9315
  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
9316
  },
9279
- /* @__PURE__ */ React13.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9280
- /* @__PURE__ */ React13.createElement(
9317
+ /* @__PURE__ */ React14.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9318
+ /* @__PURE__ */ React14.createElement(
9281
9319
  FiChevronDown4,
9282
9320
  {
9283
9321
  className: `flex-shrink-0 text-slate-400 transition-transform ${isDatasetDropdownOpen ? "rotate-180" : ""}`
9284
9322
  }
9285
9323
  )
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(
9324
+ ), 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
9325
  "li",
9288
9326
  {
9289
9327
  key: ds.id,
@@ -9294,7 +9332,7 @@ function InSceneCreationForm({
9294
9332
  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
9333
  },
9296
9334
  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(
9335
+ )))), /* @__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
9336
  DescriptionDisplay,
9299
9337
  {
9300
9338
  description,
@@ -9305,7 +9343,7 @@ function InSceneCreationForm({
9305
9343
  onImageClick: handleImageClickFromText,
9306
9344
  onSaveDescription: (newDesc) => setDescription(newDesc)
9307
9345
  }
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(
9346
+ ), /* @__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
9347
  "button",
9310
9348
  {
9311
9349
  type: "button",
@@ -9313,17 +9351,17 @@ function InSceneCreationForm({
9313
9351
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9314
9352
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9315
9353
  },
9316
- /* @__PURE__ */ React13.createElement(FiEdit24, { size: 14 })
9317
- )), !description && /* @__PURE__ */ React13.createElement(
9354
+ /* @__PURE__ */ React14.createElement(FiEdit24, { size: 14 })
9355
+ )), !description && /* @__PURE__ */ React14.createElement(
9318
9356
  "div",
9319
9357
  {
9320
9358
  onClick: () => setIsDescriptionModalOpen(true),
9321
9359
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9322
9360
  },
9323
9361
  "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) => {
9362
+ ))), /* @__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
9363
  const isSelected = size === s;
9326
- return /* @__PURE__ */ React13.createElement(
9364
+ return /* @__PURE__ */ React14.createElement(
9327
9365
  "button",
9328
9366
  {
9329
9367
  key: s,
@@ -9331,14 +9369,14 @@ function InSceneCreationForm({
9331
9369
  onClick: () => handleSizeChange(s),
9332
9370
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9333
9371
  },
9334
- /* @__PURE__ */ React13.createElement(
9372
+ /* @__PURE__ */ React14.createElement(
9335
9373
  "div",
9336
9374
  {
9337
9375
  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
9376
  },
9339
- isSelected && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9377
+ isSelected && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9340
9378
  ),
9341
- /* @__PURE__ */ React13.createElement(
9379
+ /* @__PURE__ */ React14.createElement(
9342
9380
  "span",
9343
9381
  {
9344
9382
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9346,13 +9384,13 @@ function InSceneCreationForm({
9346
9384
  s
9347
9385
  )
9348
9386
  );
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(
9387
+ }))), /* @__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
9388
  "div",
9351
9389
  {
9352
9390
  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
9391
  },
9354
- useImageAsTexture && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9355
- ), /* @__PURE__ */ React13.createElement(
9392
+ useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9393
+ ), /* @__PURE__ */ React14.createElement(
9356
9394
  "input",
9357
9395
  {
9358
9396
  type: "checkbox",
@@ -9360,20 +9398,20 @@ function InSceneCreationForm({
9360
9398
  onChange: handleToggleImageMode,
9361
9399
  className: "hidden"
9362
9400
  }
9363
- ), /* @__PURE__ */ React13.createElement(
9401
+ ), /* @__PURE__ */ React14.createElement(
9364
9402
  "span",
9365
9403
  {
9366
9404
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9367
9405
  },
9368
9406
  "Usar imagem para representar o node"
9369
- ))), /* @__PURE__ */ React13.createElement(
9407
+ ))), /* @__PURE__ */ React14.createElement(
9370
9408
  ColorPicker,
9371
9409
  {
9372
9410
  color,
9373
9411
  onChange: handleColorInputChange,
9374
9412
  disabled: useImageAsTexture
9375
9413
  }
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(
9414
+ ), /* @__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
9415
  "input",
9378
9416
  {
9379
9417
  type: "range",
@@ -9385,33 +9423,32 @@ function InSceneCreationForm({
9385
9423
  className: "w-full h-1.5 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-indigo-500 hover:accent-indigo-400",
9386
9424
  title: `Intensidade do brilho: ${intensity}`
9387
9425
  }
9388
- ), /* @__PURE__ */ React13.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React13.createElement(
9426
+ ), /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React14.createElement(
9389
9427
  "span",
9390
9428
  {
9391
9429
  className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}`
9392
9430
  },
9393
9431
  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(
9432
+ )), /* @__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
9433
  "button",
9396
9434
  {
9397
9435
  type: "button",
9398
9436
  onClick: handleCreateGoogleDoc,
9399
9437
  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",
9401
- title: "Criar Documento no Google Docs"
9438
+ className: "flex items-center justify-center w-8 h-8 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",
9439
+ title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
9402
9440
  },
9403
- isLoadingDocs ? /* @__PURE__ */ React13.createElement(AiOutlineLoading3Quarters, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React13.createElement(SiGoogledocs, { size: 14, className: "group-hover:scale-110 transition-transform" }),
9404
- isLoadingDocs ? "Criando..." : "Google Doc"
9405
- ), /* @__PURE__ */ React13.createElement(
9441
+ isLoadingDocs ? /* @__PURE__ */ React14.createElement(AiOutlineLoading3Quarters, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React14.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" })
9442
+ ), /* @__PURE__ */ React14.createElement(
9406
9443
  "button",
9407
9444
  {
9408
9445
  type: "button",
9409
9446
  onClick: handleAddProp,
9410
9447
  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
9448
  },
9412
- /* @__PURE__ */ React13.createElement(FiPlus3, { size: 14 }),
9449
+ /* @__PURE__ */ React14.createElement(FiPlus3, { size: 14 }),
9413
9450
  " Adicionar"
9414
- ))), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React13.createElement(
9451
+ ))), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9415
9452
  CustomPropertyDisplay,
9416
9453
  {
9417
9454
  key: prop.id,
@@ -9427,7 +9464,7 @@ function InSceneCreationForm({
9427
9464
  onSelectTexture: handleSelectTexture,
9428
9465
  onUploadFile
9429
9466
  }
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(
9467
+ )), /* @__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
9468
  "button",
9432
9469
  {
9433
9470
  type: "button",
@@ -9435,7 +9472,7 @@ function InSceneCreationForm({
9435
9472
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9436
9473
  },
9437
9474
  "Cancelar"
9438
- ), /* @__PURE__ */ React13.createElement(
9475
+ ), /* @__PURE__ */ React14.createElement(
9439
9476
  "button",
9440
9477
  {
9441
9478
  type: "submit",
@@ -9443,7 +9480,7 @@ function InSceneCreationForm({
9443
9480
  },
9444
9481
  "Salvar"
9445
9482
  )))
9446
- ), isDescriptionModalOpen && /* @__PURE__ */ React13.createElement(
9483
+ ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9447
9484
  DescriptionEditModal,
9448
9485
  {
9449
9486
  isOpen: isDescriptionModalOpen,
@@ -9461,7 +9498,7 @@ function InSceneCreationForm({
9461
9498
  }
9462
9499
 
9463
9500
  // src/components/InSceneVersionForm.jsx
9464
- import React14, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9501
+ import React15, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9465
9502
  import { v4 as uuidv46 } from "uuid";
9466
9503
  import { FiPlus as FiPlus4, FiMaximize2 as FiMaximize22, FiCheck as FiCheck8, FiEdit2 as FiEdit25 } from "react-icons/fi";
9467
9504
  function InSceneVersionForm({
@@ -9599,7 +9636,7 @@ function InSceneVersionForm({
9599
9636
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
9600
9637
  }
9601
9638
  };
9602
- return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9639
+ return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
9603
9640
  "div",
9604
9641
  {
9605
9642
  ref: refEl,
@@ -9613,9 +9650,9 @@ function InSceneVersionForm({
9613
9650
  onContextMenu: swallow,
9614
9651
  onDoubleClick: swallow
9615
9652
  },
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(
9653
+ /* @__PURE__ */ React15.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9654
+ /* @__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")),
9655
+ /* @__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
9656
  "input",
9620
9657
  {
9621
9658
  type: "text",
@@ -9623,7 +9660,7 @@ function InSceneVersionForm({
9623
9660
  disabled: true,
9624
9661
  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
9662
  }
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(
9663
+ )), /* @__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
9664
  "input",
9628
9665
  {
9629
9666
  required: true,
@@ -9633,7 +9670,7 @@ function InSceneVersionForm({
9633
9670
  onChange: handleNameInputChange,
9634
9671
  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
9672
  }
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(
9673
+ )), /* @__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
9674
  DescriptionDisplay,
9638
9675
  {
9639
9676
  description,
@@ -9644,7 +9681,7 @@ function InSceneVersionForm({
9644
9681
  onImageClick: handleImageClickFromText,
9645
9682
  onSaveDescription: (newDesc) => setDescription(newDesc)
9646
9683
  }
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(
9684
+ ), /* @__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
9685
  "button",
9649
9686
  {
9650
9687
  type: "button",
@@ -9652,17 +9689,17 @@ function InSceneVersionForm({
9652
9689
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9653
9690
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9654
9691
  },
9655
- /* @__PURE__ */ React14.createElement(FiEdit25, { size: 14 })
9656
- )), !description && /* @__PURE__ */ React14.createElement(
9692
+ /* @__PURE__ */ React15.createElement(FiEdit25, { size: 14 })
9693
+ )), !description && /* @__PURE__ */ React15.createElement(
9657
9694
  "div",
9658
9695
  {
9659
9696
  onClick: () => setIsDescriptionModalOpen(true),
9660
9697
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9661
9698
  },
9662
9699
  "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) => {
9700
+ ))), /* @__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
9701
  const isSelected = size === s;
9665
- return /* @__PURE__ */ React14.createElement(
9702
+ return /* @__PURE__ */ React15.createElement(
9666
9703
  "button",
9667
9704
  {
9668
9705
  key: s,
@@ -9670,14 +9707,14 @@ function InSceneVersionForm({
9670
9707
  onClick: () => handleSizeChange(s),
9671
9708
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9672
9709
  },
9673
- /* @__PURE__ */ React14.createElement(
9710
+ /* @__PURE__ */ React15.createElement(
9674
9711
  "div",
9675
9712
  {
9676
9713
  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
9714
  },
9678
- isSelected && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9715
+ isSelected && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9679
9716
  ),
9680
- /* @__PURE__ */ React14.createElement(
9717
+ /* @__PURE__ */ React15.createElement(
9681
9718
  "span",
9682
9719
  {
9683
9720
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9685,13 +9722,13 @@ function InSceneVersionForm({
9685
9722
  s
9686
9723
  )
9687
9724
  );
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(
9725
+ }))), /* @__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
9726
  "div",
9690
9727
  {
9691
9728
  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
9729
  },
9693
- useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9694
- ), /* @__PURE__ */ React14.createElement(
9730
+ useImageAsTexture && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9731
+ ), /* @__PURE__ */ React15.createElement(
9695
9732
  "input",
9696
9733
  {
9697
9734
  type: "checkbox",
@@ -9699,35 +9736,35 @@ function InSceneVersionForm({
9699
9736
  onChange: handleToggleImageMode,
9700
9737
  className: "hidden"
9701
9738
  }
9702
- ), /* @__PURE__ */ React14.createElement(
9739
+ ), /* @__PURE__ */ React15.createElement(
9703
9740
  "span",
9704
9741
  {
9705
9742
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9706
9743
  },
9707
9744
  "Usar imagem"
9708
- ))), /* @__PURE__ */ React14.createElement(
9745
+ ))), /* @__PURE__ */ React15.createElement(
9709
9746
  "div",
9710
9747
  {
9711
9748
  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
9749
  },
9713
- /* @__PURE__ */ React14.createElement(
9750
+ /* @__PURE__ */ React15.createElement(
9714
9751
  "div",
9715
9752
  {
9716
9753
  className: "h-8 w-12 rounded-md border border-white/10",
9717
9754
  style: { backgroundColor: fixedColor }
9718
9755
  }
9719
9756
  ),
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(
9757
+ /* @__PURE__ */ React15.createElement("span", { className: "text-xs text-slate-300" }, useImageAsTexture ? "Cor definida pela imagem." : "Cor herdada do node original.")
9758
+ )), /* @__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
9759
  "button",
9723
9760
  {
9724
9761
  type: "button",
9725
9762
  onClick: handleAddProp,
9726
9763
  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
9764
  },
9728
- /* @__PURE__ */ React14.createElement(FiPlus4, { size: 14 }),
9765
+ /* @__PURE__ */ React15.createElement(FiPlus4, { size: 14 }),
9729
9766
  " Adicionar"
9730
- )), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9767
+ )), /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React15.createElement(
9731
9768
  CustomPropertyDisplay,
9732
9769
  {
9733
9770
  key: prop.id,
@@ -9743,7 +9780,7 @@ function InSceneVersionForm({
9743
9780
  onSelectTexture: handleSelectTexture,
9744
9781
  onUploadFile
9745
9782
  }
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(
9783
+ )), /* @__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
9784
  "button",
9748
9785
  {
9749
9786
  type: "button",
@@ -9751,7 +9788,7 @@ function InSceneVersionForm({
9751
9788
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9752
9789
  },
9753
9790
  "Cancelar"
9754
- ), /* @__PURE__ */ React14.createElement(
9791
+ ), /* @__PURE__ */ React15.createElement(
9755
9792
  "button",
9756
9793
  {
9757
9794
  type: "submit",
@@ -9759,7 +9796,7 @@ function InSceneVersionForm({
9759
9796
  },
9760
9797
  "Salvar"
9761
9798
  )))
9762
- ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9799
+ ), isDescriptionModalOpen && /* @__PURE__ */ React15.createElement(
9763
9800
  DescriptionEditModal,
9764
9801
  {
9765
9802
  isOpen: isDescriptionModalOpen,
@@ -9777,7 +9814,7 @@ function InSceneVersionForm({
9777
9814
  }
9778
9815
 
9779
9816
  // src/components/InSceneQuestForm.jsx
9780
- import React16, { useState as useState17, useRef as useRef12 } from "react";
9817
+ import React17, { useState as useState17, useRef as useRef12 } from "react";
9781
9818
  import { v4 as uuidv47 } from "uuid";
9782
9819
  import {
9783
9820
  FiPlus as FiPlus6,
@@ -9792,11 +9829,10 @@ import {
9792
9829
  FiRepeat,
9793
9830
  FiCopy as FiCopy3
9794
9831
  } from "react-icons/fi";
9795
- import { SiGoogledocs as SiGoogledocs2 } from "react-icons/si";
9796
9832
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters2 } from "react-icons/ai";
9797
9833
 
9798
9834
  // src/components/QuestReviewStackEditor.jsx
9799
- import React15, { useState as useState16 } from "react";
9835
+ import React16, { useState as useState16 } from "react";
9800
9836
  import {
9801
9837
  FiPlus as FiPlus5,
9802
9838
  FiX as FiX4,
@@ -9849,22 +9885,22 @@ function QuestReviewStackEditor({
9849
9885
  const search = searchQuery.toLowerCase();
9850
9886
  return (m.name || "").toLowerCase().includes(search) || (m.email || "").toLowerCase().includes(search);
9851
9887
  });
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(
9888
+ 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
9889
  "button",
9854
9890
  {
9855
9891
  type: "button",
9856
9892
  onClick: () => setIsAdding(true),
9857
9893
  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
9894
  },
9859
- /* @__PURE__ */ React15.createElement(FiPlus5, { size: 10 }),
9895
+ /* @__PURE__ */ React16.createElement(FiPlus5, { size: 10 }),
9860
9896
  " 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(
9897
+ )), 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
9898
  FiSearch4,
9863
9899
  {
9864
9900
  className: "absolute left-2 top-1/2 -translate-y-1/2 text-slate-500",
9865
9901
  size: 12
9866
9902
  }
9867
- ), /* @__PURE__ */ React15.createElement(
9903
+ ), /* @__PURE__ */ React16.createElement(
9868
9904
  "input",
9869
9905
  {
9870
9906
  autoFocus: true,
@@ -9874,32 +9910,32 @@ function QuestReviewStackEditor({
9874
9910
  onChange: (e) => setSearchQuery(e.target.value),
9875
9911
  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
9912
  }
9877
- ), /* @__PURE__ */ React15.createElement(
9913
+ ), /* @__PURE__ */ React16.createElement(
9878
9914
  "button",
9879
9915
  {
9880
9916
  onClick: () => setIsAdding(false),
9881
9917
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-500 hover:text-white"
9882
9918
  },
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(
9919
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9920
+ )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React16.createElement(
9885
9921
  "li",
9886
9922
  {
9887
9923
  key: m.id,
9888
9924
  onClick: () => handleAddReviewer(m.id),
9889
9925
  className: "px-2 py-1.5 hover:bg-white/5 rounded cursor-pointer text-xs flex items-center gap-2"
9890
9926
  },
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) => {
9927
+ /* @__PURE__ */ React16.createElement(FiUser, { size: 12, className: "text-slate-400" }),
9928
+ /* @__PURE__ */ React16.createElement("span", { className: "truncate" }, m.name || m.email)
9929
+ )), 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
9930
  const member = viewMembers.find((m) => m.id === item.userId);
9895
9931
  const isCompleted = item.status === "completed";
9896
- return /* @__PURE__ */ React15.createElement(
9932
+ return /* @__PURE__ */ React16.createElement(
9897
9933
  "div",
9898
9934
  {
9899
9935
  key: index,
9900
9936
  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
9937
  },
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(
9938
+ /* @__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
9939
  "button",
9904
9940
  {
9905
9941
  type: "button",
@@ -9907,8 +9943,8 @@ function QuestReviewStackEditor({
9907
9943
  disabled: index === 0,
9908
9944
  className: "hover:text-sky-400 disabled:opacity-20"
9909
9945
  },
9910
- /* @__PURE__ */ React15.createElement(FiChevronUp, { size: 12 })
9911
- ), /* @__PURE__ */ React15.createElement(
9946
+ /* @__PURE__ */ React16.createElement(FiChevronUp, { size: 12 })
9947
+ ), /* @__PURE__ */ React16.createElement(
9912
9948
  "button",
9913
9949
  {
9914
9950
  type: "button",
@@ -9916,16 +9952,16 @@ function QuestReviewStackEditor({
9916
9952
  disabled: index === reviewStack.length - 1,
9917
9953
  className: "hover:text-sky-400 disabled:opacity-20"
9918
9954
  },
9919
- /* @__PURE__ */ React15.createElement(FiChevronDown5, { size: 12 })
9955
+ /* @__PURE__ */ React16.createElement(FiChevronDown5, { size: 12 })
9920
9956
  ))),
9921
- /* @__PURE__ */ React15.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
9957
+ /* @__PURE__ */ React16.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
9922
9958
  "span",
9923
9959
  {
9924
9960
  className: `truncate text-sm font-medium ${isCompleted ? "text-green-300" : "text-slate-200"}`
9925
9961
  },
9926
9962
  (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(
9963
+ ), 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")),
9964
+ !readOnly && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React16.createElement(
9929
9965
  "button",
9930
9966
  {
9931
9967
  type: "button",
@@ -9933,18 +9969,18 @@ function QuestReviewStackEditor({
9933
9969
  title: item.mandatory ? "Remover obrigatoriedade" : "Tornar obrigat\xF3rio",
9934
9970
  className: `p-1.5 rounded hover:bg-white/10 transition-colors ${item.mandatory ? "text-amber-400" : "text-slate-500"}`
9935
9971
  },
9936
- /* @__PURE__ */ React15.createElement(FiStar, { size: 14 })
9937
- ), /* @__PURE__ */ React15.createElement(
9972
+ /* @__PURE__ */ React16.createElement(FiStar, { size: 14 })
9973
+ ), /* @__PURE__ */ React16.createElement(
9938
9974
  "button",
9939
9975
  {
9940
9976
  type: "button",
9941
9977
  onClick: () => handleRemoveReviewer(index),
9942
9978
  className: "p-1.5 rounded hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-colors"
9943
9979
  },
9944
- /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
9980
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9945
9981
  ))
9946
9982
  );
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(
9983
+ }), 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
9984
  "button",
9949
9985
  {
9950
9986
  type: "button",
@@ -10018,11 +10054,11 @@ function InSceneQuestForm({
10018
10054
  const propsEndRef = useRef12(null);
10019
10055
  const [milestoneInput, setMilestoneInput] = useState17("");
10020
10056
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState17(false);
10021
- const activeMilestones = React16.useMemo(
10057
+ const activeMilestones = React17.useMemo(
10022
10058
  () => (milestones || []).filter((ms) => ms.status === "active"),
10023
10059
  [milestones]
10024
10060
  );
10025
- const filteredMilestones = React16.useMemo(() => {
10061
+ const filteredMilestones = React17.useMemo(() => {
10026
10062
  const search = milestoneInput.toLowerCase().trim();
10027
10063
  return activeMilestones.filter(
10028
10064
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -10059,11 +10095,11 @@ function InSceneQuestForm({
10059
10095
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
10060
10096
  }
10061
10097
  };
10062
- const dependencyQuests = React16.useMemo(
10098
+ const dependencyQuests = React17.useMemo(
10063
10099
  () => availableNodes.filter((n) => n.is_quest),
10064
10100
  [availableNodes]
10065
10101
  );
10066
- const filteredDependencies = React16.useMemo(() => {
10102
+ const filteredDependencies = React17.useMemo(() => {
10067
10103
  const search = dependencyInput.toLowerCase().trim();
10068
10104
  return dependencyQuests.filter((q) => {
10069
10105
  var _a2;
@@ -10110,13 +10146,30 @@ function InSceneQuestForm({
10110
10146
  setIsLoadingDocs(true);
10111
10147
  const res = await create_google_doc_action(standardizedName);
10112
10148
  if (res.success) {
10113
- const newProp = {
10114
- id: uuidv47(),
10115
- key: "Google Docs",
10116
- type: "links",
10117
- value: [{ id: uuidv47(), name: "Abrir Documento", value: res.link }]
10118
- };
10119
- setCustomProps((prev) => [...prev, newProp]);
10149
+ const existingLinksPropIndex = customProps.findIndex(
10150
+ (p) => p.type === "links" && p.key === "Links"
10151
+ );
10152
+ if (existingLinksPropIndex !== -1) {
10153
+ const updatedProps = [...customProps];
10154
+ const existingProp = { ...updatedProps[existingLinksPropIndex] };
10155
+ existingProp.value = [
10156
+ ...existingProp.value || [],
10157
+ { id: uuidv47(), name: "Abrir Documento", value: res.link }
10158
+ ];
10159
+ updatedProps[existingLinksPropIndex] = existingProp;
10160
+ setCustomProps(updatedProps);
10161
+ } else {
10162
+ const newProp = {
10163
+ id: uuidv47(),
10164
+ key: "Links",
10165
+ type: "links",
10166
+ value: [{ id: uuidv47(), name: "Abrir Documento", value: res.link }]
10167
+ };
10168
+ setCustomProps((prev) => [...prev, newProp]);
10169
+ }
10170
+ if (res.link) {
10171
+ window.open(res.link, "_blank");
10172
+ }
10120
10173
  } else {
10121
10174
  alert("Erro ao criar documento: " + res.error);
10122
10175
  }
@@ -10201,7 +10254,7 @@ function InSceneQuestForm({
10201
10254
  const swallow = (e) => e.stopPropagation();
10202
10255
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
10203
10256
  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(
10257
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10205
10258
  "div",
10206
10259
  {
10207
10260
  ref: refEl,
@@ -10213,7 +10266,7 @@ function InSceneQuestForm({
10213
10266
  onContextMenu: swallow,
10214
10267
  onDoubleClick: swallow
10215
10268
  },
10216
- /* @__PURE__ */ React16.createElement(
10269
+ /* @__PURE__ */ React17.createElement(
10217
10270
  "div",
10218
10271
  {
10219
10272
  className: "h-[2px]",
@@ -10222,7 +10275,7 @@ function InSceneQuestForm({
10222
10275
  }
10223
10276
  }
10224
10277
  ),
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(
10278
+ /* @__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
10279
  "button",
10227
10280
  {
10228
10281
  type: "button",
@@ -10232,7 +10285,7 @@ function InSceneQuestForm({
10232
10285
  },
10233
10286
  "\xD7"
10234
10287
  )),
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(
10288
+ /* @__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
10289
  "input",
10237
10290
  {
10238
10291
  required: true,
@@ -10246,14 +10299,14 @@ function InSceneQuestForm({
10246
10299
  },
10247
10300
  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
10301
  }
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(
10302
+ ), /* @__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
10303
  "p",
10251
10304
  {
10252
10305
  className: "text-xs text-indigo-300 font-medium truncate",
10253
10306
  title: standardizedName
10254
10307
  },
10255
10308
  standardizedName
10256
- ), /* @__PURE__ */ React16.createElement(
10309
+ ), /* @__PURE__ */ React17.createElement(
10257
10310
  "button",
10258
10311
  {
10259
10312
  type: "button",
@@ -10261,34 +10314,34 @@ function InSceneQuestForm({
10261
10314
  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
10315
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
10263
10316
  },
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(
10317
+ isNameCopied ? /* @__PURE__ */ React17.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React17.createElement(FiCopy3, { size: 10 })
10318
+ ))), /* @__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
10319
  "button",
10267
10320
  {
10268
10321
  type: "button",
10269
10322
  onClick: () => setIsStatusDropdownOpen(!isStatusDropdownOpen),
10270
10323
  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
10324
  },
10272
- /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10325
+ /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10273
10326
  "span",
10274
10327
  {
10275
10328
  className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]",
10276
10329
  style: { backgroundColor: QUEST_STATUS_COLORS2[status] }
10277
10330
  }
10278
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10279
- /* @__PURE__ */ React16.createElement(
10331
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10332
+ /* @__PURE__ */ React17.createElement(
10280
10333
  FiChevronDown6,
10281
10334
  {
10282
10335
  className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}`
10283
10336
  }
10284
10337
  )
10285
- ), isStatusDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10338
+ ), isStatusDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10286
10339
  "div",
10287
10340
  {
10288
10341
  className: "fixed inset-0 z-40",
10289
10342
  onClick: () => setIsStatusDropdownOpen(false)
10290
10343
  }
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(
10344
+ ), /* @__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
10345
  "li",
10293
10346
  {
10294
10347
  key: s,
@@ -10299,7 +10352,7 @@ function InSceneQuestForm({
10299
10352
  },
10300
10353
  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
10354
  },
10302
- /* @__PURE__ */ React16.createElement(
10355
+ /* @__PURE__ */ React17.createElement(
10303
10356
  "span",
10304
10357
  {
10305
10358
  className: "w-3 h-3 rounded-full",
@@ -10307,11 +10360,11 @@ function InSceneQuestForm({
10307
10360
  }
10308
10361
  ),
10309
10362
  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) => {
10363
+ )))))), /* @__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
10364
  const ms = (milestones || []).find((m) => m.id === id);
10312
10365
  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(
10366
+ 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 })));
10367
+ }), /* @__PURE__ */ React17.createElement(
10315
10368
  "input",
10316
10369
  {
10317
10370
  type: "text",
@@ -10330,7 +10383,7 @@ function InSceneQuestForm({
10330
10383
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
10331
10384
  autoComplete: "off"
10332
10385
  }
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(
10386
+ ), 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
10387
  "li",
10335
10388
  {
10336
10389
  key: ms.id,
@@ -10341,7 +10394,7 @@ function InSceneQuestForm({
10341
10394
  }
10342
10395
  },
10343
10396
  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(
10397
+ ))), 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
10398
  "li",
10346
10399
  {
10347
10400
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -10350,13 +10403,13 @@ function InSceneQuestForm({
10350
10403
  handleAddMilestone({ name: milestoneInput });
10351
10404
  }
10352
10405
  },
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) => {
10406
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
10407
+ /* @__PURE__ */ React17.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
10408
+ )))), /* @__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
10409
  const depNode = availableNodes.find((n) => String(n.id) === String(id));
10357
10410
  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(
10411
+ 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 })));
10412
+ }), /* @__PURE__ */ React17.createElement(
10360
10413
  "input",
10361
10414
  {
10362
10415
  type: "text",
@@ -10375,7 +10428,7 @@ function InSceneQuestForm({
10375
10428
  placeholder: dependencyIds.length === 0 ? "Adicionar quest pr\xE9-requisito..." : "",
10376
10429
  autoComplete: "off"
10377
10430
  }
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(
10431
+ ), 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
10432
  "li",
10380
10433
  {
10381
10434
  key: q.id,
@@ -10385,23 +10438,23 @@ function InSceneQuestForm({
10385
10438
  handleAddDependency(q);
10386
10439
  }
10387
10440
  },
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(
10441
+ /* @__PURE__ */ React17.createElement("span", { className: "truncate" }, q.raw_title || q.name),
10442
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
10443
+ ))))), /* @__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
10444
  "button",
10392
10445
  {
10393
10446
  type: "button",
10394
10447
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
10395
10448
  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
10449
  },
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(
10450
+ /* @__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")),
10451
+ /* @__PURE__ */ React17.createElement(
10399
10452
  FiChevronDown6,
10400
10453
  {
10401
10454
  className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
10402
10455
  }
10403
10456
  )
10404
- ), isAssigneeDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10457
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10405
10458
  "div",
10406
10459
  {
10407
10460
  className: "fixed inset-0 z-40",
@@ -10410,7 +10463,7 @@ function InSceneQuestForm({
10410
10463
  setAssigneeSearchQuery("");
10411
10464
  }
10412
10465
  }
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(
10466
+ ), /* @__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
10467
  "input",
10415
10468
  {
10416
10469
  type: "text",
@@ -10421,7 +10474,7 @@ function InSceneQuestForm({
10421
10474
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
10422
10475
  onClick: (e) => e.stopPropagation()
10423
10476
  }
10424
- )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React16.createElement(
10477
+ )), /* @__PURE__ */ React17.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React17.createElement(
10425
10478
  "li",
10426
10479
  {
10427
10480
  onClick: () => {
@@ -10435,7 +10488,7 @@ function InSceneQuestForm({
10435
10488
  ), viewMembers.filter((member) => {
10436
10489
  const search = assigneeSearchQuery.toLowerCase();
10437
10490
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10438
- }).map((member) => /* @__PURE__ */ React16.createElement(
10491
+ }).map((member) => /* @__PURE__ */ React17.createElement(
10439
10492
  "li",
10440
10493
  {
10441
10494
  key: member.id,
@@ -10450,7 +10503,7 @@ function InSceneQuestForm({
10450
10503
  )), viewMembers.filter((member) => {
10451
10504
  const search = assigneeSearchQuery.toLowerCase();
10452
10505
  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(
10506
+ }).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
10507
  "button",
10455
10508
  {
10456
10509
  type: "button",
@@ -10458,7 +10511,7 @@ function InSceneQuestForm({
10458
10511
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
10459
10512
  },
10460
10513
  "+ 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(
10514
+ )), 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
10515
  "button",
10463
10516
  {
10464
10517
  key: t,
@@ -10476,7 +10529,7 @@ function InSceneQuestForm({
10476
10529
  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
10530
  },
10478
10531
  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(
10532
+ )) : /* @__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
10533
  "button",
10481
10534
  {
10482
10535
  type: "button",
@@ -10484,8 +10537,8 @@ function InSceneQuestForm({
10484
10537
  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
10538
  title: "Confirmar data"
10486
10539
  },
10487
- /* @__PURE__ */ React16.createElement(FiCheck9, { size: 14 })
10488
- ) : /* @__PURE__ */ React16.createElement(
10540
+ /* @__PURE__ */ React17.createElement(FiCheck9, { size: 14 })
10541
+ ) : /* @__PURE__ */ React17.createElement(
10489
10542
  "button",
10490
10543
  {
10491
10544
  type: "button",
@@ -10493,8 +10546,8 @@ function InSceneQuestForm({
10493
10546
  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
10547
  title: "Editar data"
10495
10548
  },
10496
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10497
- ), /* @__PURE__ */ React16.createElement(
10549
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10550
+ ), /* @__PURE__ */ React17.createElement(
10498
10551
  "button",
10499
10552
  {
10500
10553
  type: "button",
@@ -10502,8 +10555,8 @@ function InSceneQuestForm({
10502
10555
  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
10556
  title: "Remover data"
10504
10557
  },
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(
10558
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 14 })
10559
+ ))), !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
10560
  "input",
10508
10561
  {
10509
10562
  type: "text",
@@ -10523,7 +10576,7 @@ function InSceneQuestForm({
10523
10576
  maxLength: "10",
10524
10577
  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
10578
  }
10526
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10579
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10527
10580
  "input",
10528
10581
  {
10529
10582
  type: "text",
@@ -10543,7 +10596,7 @@ function InSceneQuestForm({
10543
10596
  maxLength: "10",
10544
10597
  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
10598
  }
10546
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React16.createElement(
10599
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React17.createElement(
10547
10600
  "input",
10548
10601
  {
10549
10602
  type: "text",
@@ -10563,39 +10616,39 @@ function InSceneQuestForm({
10563
10616
  maxLength: "10",
10564
10617
  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
10618
  }
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(
10619
+ ))))), /* @__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
10620
  "button",
10568
10621
  {
10569
10622
  type: "button",
10570
10623
  onClick: () => setRecurrenceConfig((prev) => ({ ...prev, enabled: !prev.enabled })),
10571
10624
  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
10625
  },
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(
10626
+ /* @__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"}` })
10627
+ )), 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
10628
  "select",
10576
10629
  {
10577
10630
  value: recurrenceConfig.type,
10578
10631
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, type: e.target.value })),
10579
10632
  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
10633
  },
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(
10634
+ /* @__PURE__ */ React17.createElement("option", { value: "daily" }, "Di\xE1ria"),
10635
+ /* @__PURE__ */ React17.createElement("option", { value: "weekly" }, "Semanal"),
10636
+ /* @__PURE__ */ React17.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
10637
+ )), 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
10638
  "select",
10586
10639
  {
10587
10640
  value: recurrenceConfig.day_of_week,
10588
10641
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, day_of_week: parseInt(e.target.value, 10) })),
10589
10642
  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
10643
  },
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(
10644
+ /* @__PURE__ */ React17.createElement("option", { value: 1 }, "Segunda-feira"),
10645
+ /* @__PURE__ */ React17.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
10646
+ /* @__PURE__ */ React17.createElement("option", { value: 3 }, "Quarta-feira"),
10647
+ /* @__PURE__ */ React17.createElement("option", { value: 4 }, "Quinta-feira"),
10648
+ /* @__PURE__ */ React17.createElement("option", { value: 5 }, "Sexta-feira"),
10649
+ /* @__PURE__ */ React17.createElement("option", { value: 6 }, "S\xE1bado"),
10650
+ /* @__PURE__ */ React17.createElement("option", { value: 0 }, "Domingo")
10651
+ )), 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
10652
  "input",
10600
10653
  {
10601
10654
  type: "text",
@@ -10604,23 +10657,23 @@ function InSceneQuestForm({
10604
10657
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, custom_date: e.target.value })),
10605
10658
  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
10659
  }
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(
10660
+ ))), /* @__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
10661
  "select",
10609
10662
  {
10610
10663
  value: recurrenceConfig.next_assignee_id,
10611
10664
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, next_assignee_id: e.target.value })),
10612
10665
  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
10666
  },
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(
10667
+ /* @__PURE__ */ React17.createElement("option", { value: "" }, "Sem respons\xE1vel"),
10668
+ viewMembers.map((member) => /* @__PURE__ */ React17.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
10669
+ ), /* @__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
10670
  QuestReviewStackEditor,
10618
10671
  {
10619
10672
  reviewStack,
10620
10673
  onChange: setReviewStack,
10621
10674
  viewMembers
10622
10675
  }
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(
10676
+ )), /* @__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
10677
  DescriptionDisplay,
10625
10678
  {
10626
10679
  description,
@@ -10630,42 +10683,41 @@ function InSceneQuestForm({
10630
10683
  onMentionClick,
10631
10684
  onSaveDescription: (newDesc) => setDescription(newDesc)
10632
10685
  }
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(
10686
+ ), /* @__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
10687
  "button",
10635
10688
  {
10636
10689
  type: "button",
10637
10690
  onClick: () => setIsDescriptionModalOpen(true),
10638
10691
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
10639
10692
  },
10640
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10641
- )), !description && /* @__PURE__ */ React16.createElement(
10693
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10694
+ )), !description && /* @__PURE__ */ React17.createElement(
10642
10695
  "div",
10643
10696
  {
10644
10697
  onClick: () => setIsDescriptionModalOpen(true),
10645
10698
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
10646
10699
  },
10647
10700
  "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(
10701
+ ))), /* @__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
10702
  "button",
10650
10703
  {
10651
10704
  type: "button",
10652
10705
  onClick: handleCreateGoogleDoc,
10653
10706
  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",
10655
- title: "Criar Documento no Google Docs"
10707
+ className: "flex items-center justify-center w-8 h-8 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",
10708
+ title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
10656
10709
  },
10657
- isLoadingDocs ? /* @__PURE__ */ React16.createElement(AiOutlineLoading3Quarters2, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React16.createElement(SiGoogledocs2, { size: 14, className: "group-hover:scale-110 transition-transform" }),
10658
- isLoadingDocs ? "Criando..." : "Google Doc"
10659
- ), /* @__PURE__ */ React16.createElement(
10710
+ isLoadingDocs ? /* @__PURE__ */ React17.createElement(AiOutlineLoading3Quarters2, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React17.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" })
10711
+ ), /* @__PURE__ */ React17.createElement(
10660
10712
  "button",
10661
10713
  {
10662
10714
  type: "button",
10663
10715
  onClick: handleAddProp,
10664
10716
  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
10717
  },
10666
- /* @__PURE__ */ React16.createElement(FiPlus6, { size: 14 }),
10718
+ /* @__PURE__ */ React17.createElement(FiPlus6, { size: 14 }),
10667
10719
  " Adicionar"
10668
- ))), /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React16.createElement(
10720
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React17.createElement(
10669
10721
  CustomPropertyDisplay,
10670
10722
  {
10671
10723
  key: prop.id,
@@ -10678,7 +10730,7 @@ function InSceneQuestForm({
10678
10730
  ),
10679
10731
  onUploadFile
10680
10732
  }
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(
10733
+ )), /* @__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
10734
  "button",
10683
10735
  {
10684
10736
  key: s,
@@ -10689,37 +10741,37 @@ function InSceneQuestForm({
10689
10741
  },
10690
10742
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
10691
10743
  },
10692
- /* @__PURE__ */ React16.createElement(
10744
+ /* @__PURE__ */ React17.createElement(
10693
10745
  "div",
10694
10746
  {
10695
10747
  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
10748
  },
10697
- size === s && /* @__PURE__ */ React16.createElement(FiCheck9, { size: 12, className: "text-white" })
10749
+ size === s && /* @__PURE__ */ React17.createElement(FiCheck9, { size: 12, className: "text-white" })
10698
10750
  ),
10699
- /* @__PURE__ */ React16.createElement(
10751
+ /* @__PURE__ */ React17.createElement(
10700
10752
  "span",
10701
10753
  {
10702
10754
  className: `text-sm capitalize transition-colors ${size === s ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
10703
10755
  },
10704
10756
  s
10705
10757
  )
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(
10758
+ )))), /* @__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
10759
  "span",
10708
10760
  {
10709
10761
  key: index,
10710
10762
  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
10763
  },
10712
10764
  t,
10713
- t !== "quest" && /* @__PURE__ */ React16.createElement(
10765
+ t !== "quest" && /* @__PURE__ */ React17.createElement(
10714
10766
  "button",
10715
10767
  {
10716
10768
  type: "button",
10717
10769
  onClick: () => handleRemoveType(index),
10718
10770
  className: "hover:text-white transition-colors"
10719
10771
  },
10720
- /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })
10772
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })
10721
10773
  )
10722
- )), /* @__PURE__ */ React16.createElement(
10774
+ )), /* @__PURE__ */ React17.createElement(
10723
10775
  "input",
10724
10776
  {
10725
10777
  type: "text",
@@ -10732,7 +10784,7 @@ function InSceneQuestForm({
10732
10784
  className: "flex-1 bg-transparent text-sm min-w-[80px] focus:outline-none text-slate-200",
10733
10785
  autoComplete: "off"
10734
10786
  }
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(
10787
+ )))), /* @__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
10788
  "button",
10737
10789
  {
10738
10790
  type: "button",
@@ -10740,7 +10792,7 @@ function InSceneQuestForm({
10740
10792
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
10741
10793
  },
10742
10794
  "Cancelar"
10743
- ), /* @__PURE__ */ React16.createElement(
10795
+ ), /* @__PURE__ */ React17.createElement(
10744
10796
  "button",
10745
10797
  {
10746
10798
  type: "submit",
@@ -10748,7 +10800,7 @@ function InSceneQuestForm({
10748
10800
  },
10749
10801
  "Salvar Quest"
10750
10802
  )))
10751
- ), isDescriptionModalOpen && /* @__PURE__ */ React16.createElement(
10803
+ ), isDescriptionModalOpen && /* @__PURE__ */ React17.createElement(
10752
10804
  DescriptionEditModal,
10753
10805
  {
10754
10806
  isOpen: isDescriptionModalOpen,
@@ -10764,10 +10816,9 @@ function InSceneQuestForm({
10764
10816
  }
10765
10817
 
10766
10818
  // src/components/NodeDetailsPanel.jsx
10767
- import React17, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10819
+ import React18, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10768
10820
  import { v4 as uuidv48 } from "uuid";
10769
10821
  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
10822
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters3 } from "react-icons/ai";
10772
10823
  function NodeDetailsPanel({
10773
10824
  node,
@@ -10969,16 +11020,33 @@ function NodeDetailsPanel({
10969
11020
  setIsLoadingDocs(true);
10970
11021
  const res = await create_google_doc_action(name);
10971
11022
  if (res.success) {
10972
- const newProp = {
10973
- id: uuidv48(),
10974
- key: "Google Docs",
10975
- type: "links",
10976
- value: [{ id: uuidv48(), name: "Abrir Documento", value: res.link }]
10977
- };
10978
- const updatedProps = [...customProps, newProp];
11023
+ const existingLinksPropIndex = customProps.findIndex(
11024
+ (p) => p.type === "links" && p.key === "Links"
11025
+ );
11026
+ let updatedProps;
11027
+ if (existingLinksPropIndex !== -1) {
11028
+ updatedProps = [...customProps];
11029
+ const existingProp = { ...updatedProps[existingLinksPropIndex] };
11030
+ existingProp.value = [
11031
+ ...existingProp.value || [],
11032
+ { id: uuidv48(), name: "Abrir Documento", value: res.link }
11033
+ ];
11034
+ updatedProps[existingLinksPropIndex] = existingProp;
11035
+ } else {
11036
+ const newProp = {
11037
+ id: uuidv48(),
11038
+ key: "Links",
11039
+ type: "links",
11040
+ value: [{ id: uuidv48(), name: "Abrir Documento", value: res.link }]
11041
+ };
11042
+ updatedProps = [...customProps, newProp];
11043
+ }
10979
11044
  setCustomProps(updatedProps);
10980
11045
  setHasUnsavedChanges(true);
10981
11046
  triggerAutoSave({ customProps: updatedProps });
11047
+ if (res.link) {
11048
+ window.open(res.link, "_blank");
11049
+ }
10982
11050
  } else {
10983
11051
  alert("Erro ao criar documento: " + res.error);
10984
11052
  }
@@ -11085,7 +11153,7 @@ function NodeDetailsPanel({
11085
11153
  onClose();
11086
11154
  };
11087
11155
  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(
11156
+ return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
11089
11157
  "div",
11090
11158
  {
11091
11159
  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 +11166,7 @@ function NodeDetailsPanel({
11098
11166
  onContextMenu: swallow,
11099
11167
  onDoubleClick: swallow
11100
11168
  },
11101
- /* @__PURE__ */ React17.createElement(
11169
+ /* @__PURE__ */ React18.createElement(
11102
11170
  "div",
11103
11171
  {
11104
11172
  onPointerDown: (e) => {
@@ -11109,7 +11177,7 @@ function NodeDetailsPanel({
11109
11177
  title: "Arraste para redimensionar"
11110
11178
  }
11111
11179
  ),
11112
- isReadMode ? /* @__PURE__ */ React17.createElement(
11180
+ isReadMode ? /* @__PURE__ */ React18.createElement(
11113
11181
  DescriptionReadModePanel,
11114
11182
  {
11115
11183
  title: name || (node == null ? void 0 : node.name),
@@ -11130,23 +11198,23 @@ function NodeDetailsPanel({
11130
11198
  onImageClick: handleImageClickFromText,
11131
11199
  onSaveDescription: handleSaveDescriptionInline
11132
11200
  }
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(
11201
+ ) : /* @__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
11202
  "button",
11135
11203
  {
11136
11204
  onClick: handleCopyLink,
11137
11205
  className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
11138
11206
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para este Node"
11139
11207
  },
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(
11208
+ isLinkCopied ? /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React18.createElement(FiLink5, { size: 12 })
11209
+ )), /* @__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
11210
  "button",
11143
11211
  {
11144
11212
  type: "button",
11145
11213
  onClick: () => handleRemoveType(index),
11146
11214
  className: "hover:text-white transition-colors"
11147
11215
  },
11148
- /* @__PURE__ */ React17.createElement(FiX6, { size: 12 })
11149
- ))), canEdit && /* @__PURE__ */ React17.createElement(
11216
+ /* @__PURE__ */ React18.createElement(FiX6, { size: 12 })
11217
+ ))), canEdit && /* @__PURE__ */ React18.createElement(
11150
11218
  "input",
11151
11219
  {
11152
11220
  type: "text",
@@ -11167,7 +11235,7 @@ function NodeDetailsPanel({
11167
11235
  placeholder: types.length === 0 ? "Ex.: Cliente" : "",
11168
11236
  autoComplete: "off"
11169
11237
  }
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(
11238
+ ), 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
11239
  "li",
11172
11240
  {
11173
11241
  key: index,
@@ -11178,7 +11246,7 @@ function NodeDetailsPanel({
11178
11246
  }
11179
11247
  },
11180
11248
  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(
11249
+ ))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Nome"), /* @__PURE__ */ React18.createElement(
11182
11250
  "input",
11183
11251
  {
11184
11252
  type: "text",
@@ -11187,7 +11255,7 @@ function NodeDetailsPanel({
11187
11255
  readOnly: !canEdit,
11188
11256
  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
11257
  }
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(
11258
+ )), /* @__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
11259
  DescriptionDisplay,
11192
11260
  {
11193
11261
  description,
@@ -11199,7 +11267,7 @@ function NodeDetailsPanel({
11199
11267
  onImageClick: handleImageClickFromText,
11200
11268
  onSaveDescription: handleSaveDescriptionInline
11201
11269
  }
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(
11270
+ ), /* @__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
11271
  "button",
11204
11272
  {
11205
11273
  type: "button",
@@ -11207,8 +11275,8 @@ function NodeDetailsPanel({
11207
11275
  className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`,
11208
11276
  title: "Modo de Leitura"
11209
11277
  },
11210
- /* @__PURE__ */ React17.createElement(FiBookOpen3, { size: 14 })
11211
- ), canEdit && /* @__PURE__ */ React17.createElement(
11278
+ /* @__PURE__ */ React18.createElement(FiBookOpen3, { size: 14 })
11279
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11212
11280
  "button",
11213
11281
  {
11214
11282
  type: "button",
@@ -11216,17 +11284,17 @@ function NodeDetailsPanel({
11216
11284
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
11217
11285
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
11218
11286
  },
11219
- /* @__PURE__ */ React17.createElement(FiEdit27, { size: 14 })
11220
- )), canEdit && !description && /* @__PURE__ */ React17.createElement(
11287
+ /* @__PURE__ */ React18.createElement(FiEdit27, { size: 14 })
11288
+ )), canEdit && !description && /* @__PURE__ */ React18.createElement(
11221
11289
  "div",
11222
11290
  {
11223
11291
  onClick: () => setIsDescriptionModalOpen(true),
11224
11292
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
11225
11293
  },
11226
11294
  "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) => {
11295
+ ))), /* @__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
11296
  const isSelected = size === s;
11229
- return /* @__PURE__ */ React17.createElement(
11297
+ return /* @__PURE__ */ React18.createElement(
11230
11298
  "button",
11231
11299
  {
11232
11300
  key: s,
@@ -11234,10 +11302,10 @@ function NodeDetailsPanel({
11234
11302
  onClick: () => canEdit && handleSizeChange(s),
11235
11303
  className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}`
11236
11304
  },
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)
11305
+ /* @__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" })),
11306
+ /* @__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
11307
  );
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(
11308
+ }))), /* @__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
11309
  "input",
11242
11310
  {
11243
11311
  type: "checkbox",
@@ -11245,14 +11313,14 @@ function NodeDetailsPanel({
11245
11313
  onChange: handleToggleImageMode,
11246
11314
  className: "hidden"
11247
11315
  }
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(
11316
+ ), /* @__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
11317
  ColorPicker,
11250
11318
  {
11251
11319
  color,
11252
11320
  onChange: handleColorChange,
11253
11321
  disabled: !canEdit || useImageAsTexture
11254
11322
  }
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(
11323
+ ), /* @__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
11324
  "input",
11257
11325
  {
11258
11326
  type: "range",
@@ -11265,27 +11333,26 @@ function NodeDetailsPanel({
11265
11333
  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
11334
  title: `Intensidade do brilho: ${intensity}`
11267
11335
  }
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(
11336
+ ), /* @__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
11337
  "button",
11270
11338
  {
11271
11339
  type: "button",
11272
11340
  onClick: handleCreateGoogleDoc,
11273
11341
  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",
11275
- title: "Criar Documento no Google Docs"
11342
+ className: "flex items-center justify-center w-8 h-8 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",
11343
+ title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
11276
11344
  },
11277
- isLoadingDocs ? /* @__PURE__ */ React17.createElement(AiOutlineLoading3Quarters3, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React17.createElement(SiGoogledocs3, { size: 14, className: "group-hover:scale-110 transition-transform" }),
11278
- isLoadingDocs ? "Criando..." : "Google Doc"
11279
- ), canEdit && /* @__PURE__ */ React17.createElement(
11345
+ isLoadingDocs ? /* @__PURE__ */ React18.createElement(AiOutlineLoading3Quarters3, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React18.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" })
11346
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11280
11347
  "button",
11281
11348
  {
11282
11349
  type: "button",
11283
11350
  onClick: handleAddProp,
11284
11351
  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
11352
  },
11286
- /* @__PURE__ */ React17.createElement(FiPlus7, { size: 14 }),
11353
+ /* @__PURE__ */ React18.createElement(FiPlus7, { size: 14 }),
11287
11354
  " Adicionar"
11288
- ))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React17.createElement(
11355
+ ))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React18.createElement(
11289
11356
  CustomPropertyDisplay,
11290
11357
  {
11291
11358
  key: prop.id,
@@ -11300,7 +11367,7 @@ function NodeDetailsPanel({
11300
11367
  onUploadFile: canEdit ? onUploadFile : void 0,
11301
11368
  readOnly: !canEdit
11302
11369
  }
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(
11370
+ )), /* @__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
11371
  "button",
11305
11372
  {
11306
11373
  onClick: () => handleSave(false),
@@ -11309,10 +11376,10 @@ function NodeDetailsPanel({
11309
11376
  ${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
11377
  `
11311
11378
  },
11312
- isSaving && /* @__PURE__ */ React17.createElement(FiLoader2, { className: "animate-spin" }),
11379
+ isSaving && /* @__PURE__ */ React18.createElement(FiLoader2, { className: "animate-spin" }),
11313
11380
  isSaving ? "Salvando..." : "Salvar"
11314
11381
  )))
11315
- ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React17.createElement(
11382
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React18.createElement(
11316
11383
  DescriptionEditModal,
11317
11384
  {
11318
11385
  isOpen: isDescriptionModalOpen,
@@ -11333,12 +11400,12 @@ function NodeDetailsPanel({
11333
11400
  }
11334
11401
 
11335
11402
  // src/components/QuestDetailsPanel.jsx
11336
- import React19, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11403
+ import React20, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11337
11404
  import { v4 as uuidv49 } from "uuid";
11338
11405
  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
11406
 
11340
11407
  // src/components/QuestTimeline.jsx
11341
- import React18 from "react";
11408
+ import React19 from "react";
11342
11409
  import {
11343
11410
  FiGitCommit,
11344
11411
  FiUserPlus,
@@ -11377,25 +11444,25 @@ function QuestTimeline({
11377
11444
  }).format(date);
11378
11445
  };
11379
11446
  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"));
11447
+ 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
11448
  }
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) => {
11449
+ 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
11450
  const config = DEFAULT_ICON_CONFIG;
11384
11451
  const Icon = config.icon;
11385
11452
  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(
11453
+ 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
11454
  "button",
11388
11455
  {
11389
11456
  onClick: () => onAddNote(event),
11390
11457
  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
11458
  title: "Adicionar detalhe/anexo a esta etapa"
11392
11459
  },
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]) => {
11460
+ /* @__PURE__ */ React19.createElement(FiPlusCircle, { size: 12 })
11461
+ )), /* @__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
11462
  const isAssigneeId = key.toLowerCase().includes("assignee_id") || key.toLowerCase().includes("respons\xE1vel") || key.toLowerCase().includes("assignee id");
11396
11463
  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(
11464
+ 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));
11465
+ })), 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
11466
  "a",
11400
11467
  {
11401
11468
  key: lIdx,
@@ -11404,9 +11471,9 @@ function QuestTimeline({
11404
11471
  rel: "noopener noreferrer",
11405
11472
  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
11473
  },
11407
- /* @__PURE__ */ React18.createElement(FiLink6, { size: 10 }),
11474
+ /* @__PURE__ */ React19.createElement(FiLink6, { size: 10 }),
11408
11475
  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(
11476
+ ))), 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
11477
  "button",
11411
11478
  {
11412
11479
  key: iIdx,
@@ -11414,14 +11481,13 @@ function QuestTimeline({
11414
11481
  onClick: () => onOpenImageViewer == null ? void 0 : onOpenImageViewer(event.images, iIdx),
11415
11482
  className: "relative w-12 h-12 rounded border border-white/10 overflow-hidden hover:border-sky-500/50 transition-colors group/img"
11416
11483
  },
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" }))
11484
+ /* @__PURE__ */ React19.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
11485
+ /* @__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
11486
  )))));
11420
11487
  })));
11421
11488
  }
11422
11489
 
11423
11490
  // src/components/QuestDetailsPanel.jsx
11424
- import { SiGoogledocs as SiGoogledocs4 } from "react-icons/si";
11425
11491
  import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters4 } from "react-icons/ai";
11426
11492
  var QUEST_STATUS_COLORS3 = {
11427
11493
  "Backlog": "#64748b",
@@ -11512,11 +11578,11 @@ function QuestDetailsPanel({
11512
11578
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState19(false);
11513
11579
  const [dependencyInput, setDependencyInput] = useState19("");
11514
11580
  const [showDependencySuggestions, setShowDependencySuggestions] = useState19(false);
11515
- const activeMilestones = React19.useMemo(
11581
+ const activeMilestones = React20.useMemo(
11516
11582
  () => (milestones || []).filter((ms) => ms.status === "active"),
11517
11583
  [milestones]
11518
11584
  );
11519
- const filteredMilestones = React19.useMemo(() => {
11585
+ const filteredMilestones = React20.useMemo(() => {
11520
11586
  const search = milestoneInput.toLowerCase().trim();
11521
11587
  return activeMilestones.filter(
11522
11588
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -11555,11 +11621,11 @@ function QuestDetailsPanel({
11555
11621
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
11556
11622
  }
11557
11623
  };
11558
- const dependencyQuests = React19.useMemo(
11624
+ const dependencyQuests = React20.useMemo(
11559
11625
  () => availableNodes.filter((n) => n.is_quest && String(n.id) !== String(node == null ? void 0 : node.id)),
11560
11626
  [availableNodes, node == null ? void 0 : node.id]
11561
11627
  );
11562
- const filteredDependencies = React19.useMemo(() => {
11628
+ const filteredDependencies = React20.useMemo(() => {
11563
11629
  const search = dependencyInput.toLowerCase().trim();
11564
11630
  return dependencyQuests.filter((q) => {
11565
11631
  var _a2;
@@ -11589,7 +11655,7 @@ function QuestDetailsPanel({
11589
11655
  handleRemoveDependency(dependencyIds[dependencyIds.length - 1]);
11590
11656
  }
11591
11657
  };
11592
- const blockedStatus = React19.useMemo(
11658
+ const blockedStatus = React20.useMemo(
11593
11659
  () => isQuestBlocked({ ...node, dependency_ids: dependencyIds }, availableNodes),
11594
11660
  [node, dependencyIds, availableNodes]
11595
11661
  );
@@ -11897,16 +11963,33 @@ ${noteText}` : noteText : entry.notes,
11897
11963
  setIsLoadingDocs(true);
11898
11964
  const res = await create_google_doc_action(standardizedName);
11899
11965
  if (res.success) {
11900
- const newProp = {
11901
- id: uuidv49(),
11902
- key: "Google Docs",
11903
- type: "links",
11904
- value: [{ id: uuidv49(), name: "Abrir Documento", value: res.link }]
11905
- };
11906
- const updatedProps = [...customProps, newProp];
11966
+ const existingLinksPropIndex = customProps.findIndex(
11967
+ (p) => p.type === "links" && p.key === "Links"
11968
+ );
11969
+ let updatedProps;
11970
+ if (existingLinksPropIndex !== -1) {
11971
+ updatedProps = [...customProps];
11972
+ const existingProp = { ...updatedProps[existingLinksPropIndex] };
11973
+ existingProp.value = [
11974
+ ...existingProp.value || [],
11975
+ { id: uuidv49(), name: "Abrir Documento", value: res.link }
11976
+ ];
11977
+ updatedProps[existingLinksPropIndex] = existingProp;
11978
+ } else {
11979
+ const newProp = {
11980
+ id: uuidv49(),
11981
+ key: "Links",
11982
+ type: "links",
11983
+ value: [{ id: uuidv49(), name: "Abrir Documento", value: res.link }]
11984
+ };
11985
+ updatedProps = [...customProps, newProp];
11986
+ }
11907
11987
  setCustomProps(updatedProps);
11908
11988
  setHasUnsavedChanges(true);
11909
11989
  triggerAutoSave({ customProps: updatedProps });
11990
+ if (res.link) {
11991
+ window.open(res.link, "_blank");
11992
+ }
11910
11993
  } else {
11911
11994
  alert("Erro ao criar documento: " + res.error);
11912
11995
  }
@@ -11997,7 +12080,7 @@ ${noteText}` : noteText : entry.notes,
11997
12080
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
11998
12081
  const assigneeMember = viewMembers.find((m) => m.id === assigneeId);
11999
12082
  const isAssigneeUndefined = assigneeId && !assigneeMember;
12000
- return /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
12083
+ return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
12001
12084
  "div",
12002
12085
  {
12003
12086
  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 +12093,11 @@ ${noteText}` : noteText : entry.notes,
12010
12093
  onContextMenu: swallow,
12011
12094
  onDoubleClick: swallow
12012
12095
  },
12013
- /* @__PURE__ */ React19.createElement("div", { onPointerDown: (e) => {
12096
+ /* @__PURE__ */ React20.createElement("div", { onPointerDown: (e) => {
12014
12097
  e.stopPropagation();
12015
12098
  handleResize(e);
12016
12099
  }, 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(
12100
+ isReadMode ? /* @__PURE__ */ React20.createElement(
12018
12101
  DescriptionReadModePanel,
12019
12102
  {
12020
12103
  title: standardizedName || (node == null ? void 0 : node.name),
@@ -12035,7 +12118,7 @@ ${noteText}` : noteText : entry.notes,
12035
12118
  onImageClick: handleImageClickFromText,
12036
12119
  onSaveDescription: handleSaveDescriptionInline
12037
12120
  }
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(
12121
+ ) : /* @__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
12122
  "input",
12040
12123
  {
12041
12124
  type: "text",
@@ -12044,7 +12127,7 @@ ${noteText}` : noteText : entry.notes,
12044
12127
  readOnly: !canEdit,
12045
12128
  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
12129
  }
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(
12130
+ ), /* @__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
12131
  "button",
12049
12132
  {
12050
12133
  type: "button",
@@ -12052,8 +12135,8 @@ ${noteText}` : noteText : entry.notes,
12052
12135
  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
12136
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
12054
12137
  },
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(
12138
+ isNameCopied ? /* @__PURE__ */ React20.createElement(FiCheck11, { size: 10 }) : /* @__PURE__ */ React20.createElement(FiCopy4, { size: 10 })
12139
+ ))), /* @__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
12140
  "button",
12058
12141
  {
12059
12142
  type: "button",
@@ -12064,7 +12147,7 @@ ${noteText}` : noteText : entry.notes,
12064
12147
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
12065
12148
  },
12066
12149
  "+ 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(
12150
+ )), 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
12151
  "button",
12069
12152
  {
12070
12153
  key: t,
@@ -12083,7 +12166,7 @@ ${noteText}` : noteText : entry.notes,
12083
12166
  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
12167
  },
12085
12168
  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(
12169
+ )) : /* @__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
12170
  "button",
12088
12171
  {
12089
12172
  type: "button",
@@ -12094,8 +12177,8 @@ ${noteText}` : noteText : entry.notes,
12094
12177
  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
12178
  title: "Confirmar data"
12096
12179
  },
12097
- /* @__PURE__ */ React19.createElement(FiCheck11, { size: 14 })
12098
- ) : /* @__PURE__ */ React19.createElement(
12180
+ /* @__PURE__ */ React20.createElement(FiCheck11, { size: 14 })
12181
+ ) : /* @__PURE__ */ React20.createElement(
12099
12182
  "button",
12100
12183
  {
12101
12184
  type: "button",
@@ -12106,8 +12189,8 @@ ${noteText}` : noteText : entry.notes,
12106
12189
  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
12190
  title: "Editar data"
12108
12191
  },
12109
- /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 })
12110
- ), /* @__PURE__ */ React19.createElement(
12192
+ /* @__PURE__ */ React20.createElement(FiEdit28, { size: 14 })
12193
+ ), /* @__PURE__ */ React20.createElement(
12111
12194
  "button",
12112
12195
  {
12113
12196
  type: "button",
@@ -12118,8 +12201,8 @@ ${noteText}` : noteText : entry.notes,
12118
12201
  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
12202
  title: "Remover data"
12120
12203
  },
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(
12204
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 14 })
12205
+ ))), !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
12206
  "input",
12124
12207
  {
12125
12208
  type: "text",
@@ -12140,7 +12223,7 @@ ${noteText}` : noteText : entry.notes,
12140
12223
  maxLength: "10",
12141
12224
  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
12225
  }
12143
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(
12226
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(
12144
12227
  "input",
12145
12228
  {
12146
12229
  type: "text",
@@ -12161,7 +12244,7 @@ ${noteText}` : noteText : entry.notes,
12161
12244
  maxLength: "10",
12162
12245
  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
12246
  }
12164
- ), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React19.createElement(
12247
+ ), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React20.createElement(
12165
12248
  "input",
12166
12249
  {
12167
12250
  type: "text",
@@ -12182,11 +12265,11 @@ ${noteText}` : noteText : entry.notes,
12182
12265
  maxLength: "10",
12183
12266
  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
12267
  }
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) => {
12268
+ ))))), /* @__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
12269
  const ms = (milestones || []).find((m) => m.id === id);
12187
12270
  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(
12271
+ 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 })));
12272
+ }), canEdit && /* @__PURE__ */ React20.createElement(
12190
12273
  "input",
12191
12274
  {
12192
12275
  type: "text",
@@ -12207,7 +12290,7 @@ ${noteText}` : noteText : entry.notes,
12207
12290
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
12208
12291
  autoComplete: "off"
12209
12292
  }
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(
12293
+ ), 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
12294
  "li",
12212
12295
  {
12213
12296
  key: ms.id,
@@ -12218,7 +12301,7 @@ ${noteText}` : noteText : entry.notes,
12218
12301
  }
12219
12302
  },
12220
12303
  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(
12304
+ ))), 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
12305
  "li",
12223
12306
  {
12224
12307
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -12227,9 +12310,9 @@ ${noteText}` : noteText : entry.notes,
12227
12310
  handleAddMilestone({ name: milestoneInput });
12228
12311
  }
12229
12312
  },
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(
12313
+ /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
12314
+ /* @__PURE__ */ React20.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
12315
+ )))), /* @__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
12316
  "button",
12234
12317
  {
12235
12318
  type: "button",
@@ -12237,12 +12320,12 @@ ${noteText}` : noteText : entry.notes,
12237
12320
  disabled: !canEdit,
12238
12321
  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
12322
  },
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) => {
12323
+ /* @__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)),
12324
+ canEdit && /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
12325
+ ), 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
12326
  const isBacklog = s === "Backlog";
12244
12327
  const isDisabled = !isBacklog && blockedStatus.isBlocked;
12245
- return /* @__PURE__ */ React19.createElement(
12328
+ return /* @__PURE__ */ React20.createElement(
12246
12329
  "li",
12247
12330
  {
12248
12331
  key: s,
@@ -12255,22 +12338,22 @@ ${noteText}` : noteText : entry.notes,
12255
12338
  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
12339
  title: isDisabled ? `Bloqueado por depend\xEAncias: ${blockedStatus.pendingDependencies.map((d) => d.raw_title || d.name).join(", ")}` : ""
12257
12340
  },
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 })
12341
+ /* @__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),
12342
+ isDisabled && /* @__PURE__ */ React20.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
12260
12343
  );
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(
12344
+ }))))), /* @__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
12345
  "button",
12263
12346
  {
12264
12347
  type: "button",
12265
12348
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
12266
12349
  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
12350
  },
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: () => {
12351
+ /* @__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")),
12352
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
12353
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12271
12354
  setIsAssigneeDropdownOpen(false);
12272
12355
  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(
12356
+ } }), /* @__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
12357
  "input",
12275
12358
  {
12276
12359
  type: "text",
@@ -12281,7 +12364,7 @@ ${noteText}` : noteText : entry.notes,
12281
12364
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
12282
12365
  onClick: (e) => e.stopPropagation()
12283
12366
  }
12284
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React19.createElement(
12367
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React20.createElement(
12285
12368
  "li",
12286
12369
  {
12287
12370
  onClick: () => {
@@ -12299,7 +12382,7 @@ ${noteText}` : noteText : entry.notes,
12299
12382
  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
12383
  },
12301
12384
  "Nenhum"
12302
- ), isAssigneeUndefined && /* @__PURE__ */ React19.createElement(
12385
+ ), isAssigneeUndefined && /* @__PURE__ */ React20.createElement(
12303
12386
  "li",
12304
12387
  {
12305
12388
  onClick: () => {
@@ -12312,7 +12395,7 @@ ${noteText}` : noteText : entry.notes,
12312
12395
  ), viewMembers.filter((member) => {
12313
12396
  const search = assigneeSearchQuery.toLowerCase();
12314
12397
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12315
- }).map((member) => /* @__PURE__ */ React19.createElement(
12398
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12316
12399
  "li",
12317
12400
  {
12318
12401
  key: member.id,
@@ -12334,7 +12417,7 @@ ${noteText}` : noteText : entry.notes,
12334
12417
  )), viewMembers.filter((member) => {
12335
12418
  const search = assigneeSearchQuery.toLowerCase();
12336
12419
  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(
12420
+ }).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
12421
  "button",
12339
12422
  {
12340
12423
  type: "button",
@@ -12345,8 +12428,8 @@ ${noteText}` : noteText : entry.notes,
12345
12428
  },
12346
12429
  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
12430
  },
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(
12431
+ /* @__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"}` })
12432
+ )), 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
12433
  "select",
12351
12434
  {
12352
12435
  disabled: !canEdit,
@@ -12357,10 +12440,10 @@ ${noteText}` : noteText : entry.notes,
12357
12440
  },
12358
12441
  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
12442
  },
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(
12443
+ /* @__PURE__ */ React20.createElement("option", { value: "daily" }, "Di\xE1ria"),
12444
+ /* @__PURE__ */ React20.createElement("option", { value: "weekly" }, "Semanal"),
12445
+ /* @__PURE__ */ React20.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
12446
+ )), 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
12447
  "select",
12365
12448
  {
12366
12449
  disabled: !canEdit,
@@ -12371,14 +12454,14 @@ ${noteText}` : noteText : entry.notes,
12371
12454
  },
12372
12455
  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
12456
  },
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(
12457
+ /* @__PURE__ */ React20.createElement("option", { value: 1 }, "Segunda-feira"),
12458
+ /* @__PURE__ */ React20.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
12459
+ /* @__PURE__ */ React20.createElement("option", { value: 3 }, "Quarta-feira"),
12460
+ /* @__PURE__ */ React20.createElement("option", { value: 4 }, "Quinta-feira"),
12461
+ /* @__PURE__ */ React20.createElement("option", { value: 5 }, "Sexta-feira"),
12462
+ /* @__PURE__ */ React20.createElement("option", { value: 6 }, "S\xE1bado"),
12463
+ /* @__PURE__ */ React20.createElement("option", { value: 0 }, "Domingo")
12464
+ )), 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
12465
  "input",
12383
12466
  {
12384
12467
  readOnly: !canEdit,
@@ -12391,7 +12474,7 @@ ${noteText}` : noteText : entry.notes,
12391
12474
  },
12392
12475
  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
12476
  }
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(
12477
+ ))), /* @__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
12478
  "select",
12396
12479
  {
12397
12480
  disabled: !canEdit,
@@ -12402,9 +12485,9 @@ ${noteText}` : noteText : entry.notes,
12402
12485
  },
12403
12486
  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
12487
  },
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(
12488
+ /* @__PURE__ */ React20.createElement("option", { value: "" }, "Sem respons\xE1vel"),
12489
+ viewMembers.map((member) => /* @__PURE__ */ React20.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
12490
+ ), /* @__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
12491
  QuestReviewStackEditor,
12409
12492
  {
12410
12493
  reviewStack,
@@ -12415,19 +12498,19 @@ ${noteText}` : noteText : entry.notes,
12415
12498
  viewMembers,
12416
12499
  readOnly: !canEdit
12417
12500
  }
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(
12501
+ )), 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
12502
  "button",
12420
12503
  {
12421
12504
  type: "button",
12422
12505
  onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
12423
12506
  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
12507
  },
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: () => {
12508
+ /* @__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...")),
12509
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
12510
+ ), isReturnDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12428
12511
  setIsReturnDropdownOpen(false);
12429
12512
  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(
12513
+ } }), /* @__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
12514
  "input",
12432
12515
  {
12433
12516
  type: "text",
@@ -12438,10 +12521,10 @@ ${noteText}` : noteText : entry.notes,
12438
12521
  className: "bg-transparent border-none outline-none text-[10px] text-white placeholder-slate-500 w-full",
12439
12522
  onClick: (e) => e.stopPropagation()
12440
12523
  }
12441
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12524
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12442
12525
  const search = returnSearchQuery.toLowerCase();
12443
12526
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12444
- }).map((member) => /* @__PURE__ */ React19.createElement(
12527
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12445
12528
  "li",
12446
12529
  {
12447
12530
  key: member.id,
@@ -12456,7 +12539,7 @@ ${noteText}` : noteText : entry.notes,
12456
12539
  )), viewMembers.filter((member) => {
12457
12540
  const search = returnSearchQuery.toLowerCase();
12458
12541
  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(
12542
+ }).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
12543
  "button",
12461
12544
  {
12462
12545
  type: "button",
@@ -12464,13 +12547,13 @@ ${noteText}` : noteText : entry.notes,
12464
12547
  disabled: isSaving || !returnAssigneeId,
12465
12548
  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
12549
  },
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" })),
12550
+ /* @__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
12551
  "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) => {
12552
+ ))), /* @__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
12553
  const depNode = availableNodes.find((n) => String(n.id) === String(depId));
12471
12554
  if (!depNode) return null;
12472
12555
  const isDone = depNode.status === "Done";
12473
- return /* @__PURE__ */ React19.createElement(
12556
+ return /* @__PURE__ */ React20.createElement(
12474
12557
  "span",
12475
12558
  {
12476
12559
  key: depId,
@@ -12478,9 +12561,9 @@ ${noteText}` : noteText : entry.notes,
12478
12561
  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
12562
  title: isDone ? `Pronta - Clique para focar` : `Pendente - Clique para focar`
12480
12563
  },
12481
- /* @__PURE__ */ React19.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12564
+ /* @__PURE__ */ React20.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12482
12565
  depNode.raw_title || depNode.name,
12483
- canEdit && /* @__PURE__ */ React19.createElement(
12566
+ canEdit && /* @__PURE__ */ React20.createElement(
12484
12567
  "button",
12485
12568
  {
12486
12569
  type: "button",
@@ -12490,10 +12573,10 @@ ${noteText}` : noteText : entry.notes,
12490
12573
  },
12491
12574
  className: "hover:text-white transition-colors opacity-60 hover:opacity-100 Ml-1"
12492
12575
  },
12493
- /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })
12576
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })
12494
12577
  )
12495
12578
  );
12496
- }), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React19.createElement(
12579
+ }), canEdit && /* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React20.createElement(
12497
12580
  "input",
12498
12581
  {
12499
12582
  type: "text",
@@ -12510,7 +12593,7 @@ ${noteText}` : noteText : entry.notes,
12510
12593
  placeholder: dependencyIds.length === 0 ? "Adicionar Quest de Origem..." : "",
12511
12594
  autoComplete: "off"
12512
12595
  }
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(
12596
+ ), 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
12597
  "li",
12515
12598
  {
12516
12599
  key: q.id,
@@ -12520,20 +12603,19 @@ ${noteText}` : noteText : entry.notes,
12520
12603
  handleAddDependency(q);
12521
12604
  }
12522
12605
  },
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(
12606
+ /* @__PURE__ */ React20.createElement("span", { className: "truncate" }, q.raw_title || q.name),
12607
+ /* @__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")
12608
+ )) : /* @__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
12609
  "button",
12527
12610
  {
12528
12611
  type: "button",
12529
12612
  onClick: handleCreateGoogleDoc,
12530
12613
  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",
12532
- title: "Criar Documento no Google Docs"
12614
+ className: "flex items-center justify-center w-8 h-8 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",
12615
+ title: isLoadingDocs ? "Criando Documento..." : "Criar Documento no Google Docs"
12533
12616
  },
12534
- isLoadingDocs ? /* @__PURE__ */ React19.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React19.createElement(SiGoogledocs4, { size: 14, className: "group-hover:scale-110 transition-transform" }),
12535
- 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(
12617
+ isLoadingDocs ? /* @__PURE__ */ React20.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React20.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" })
12618
+ ), 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
12619
  "button",
12538
12620
  {
12539
12621
  type: "button",
@@ -12552,12 +12634,12 @@ ${noteText}` : noteText : entry.notes,
12552
12634
  },
12553
12635
  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
12636
  },
12555
- isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React19.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiPlus8, { size: 12 }),
12637
+ isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React20.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React20.createElement(FiPlus8, { size: 12 }),
12556
12638
  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: () => {
12639
+ )), 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
12640
  setIsNoteFormOpen(false);
12559
12641
  setEditingEntryId(null);
12560
- }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React19.createElement(
12642
+ }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React20.createElement(
12561
12643
  "textarea",
12562
12644
  {
12563
12645
  value: noteText,
@@ -12565,7 +12647,7 @@ ${noteText}` : noteText : entry.notes,
12565
12647
  placeholder: editingEntryId ? "Adicione uma observa\xE7\xE3o a esta etapa..." : "Escreva uma observa\xE7\xE3o no hist\xF3rico...",
12566
12648
  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
12649
  }
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(
12650
+ ), /* @__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
12651
  "input",
12570
12652
  {
12571
12653
  type: "text",
@@ -12574,7 +12656,7 @@ ${noteText}` : noteText : entry.notes,
12574
12656
  onChange: (e) => updateLinkInNote(link.id, "name", e.target.value),
12575
12657
  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
12658
  }
12577
- ), /* @__PURE__ */ React19.createElement(
12659
+ ), /* @__PURE__ */ React20.createElement(
12578
12660
  "input",
12579
12661
  {
12580
12662
  type: "text",
@@ -12583,7 +12665,7 @@ ${noteText}` : noteText : entry.notes,
12583
12665
  onChange: (e) => updateLinkInNote(link.id, "value", e.target.value),
12584
12666
  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
12667
  }
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(
12668
+ ), /* @__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
12669
  "input",
12588
12670
  {
12589
12671
  type: "text",
@@ -12592,7 +12674,7 @@ ${noteText}` : noteText : entry.notes,
12592
12674
  onChange: (e) => updateImageInNote(img.id, e.target.value),
12593
12675
  className: "flex-1 bg-transparent text-[10px] focus:outline-none"
12594
12676
  }
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(
12677
+ )), /* @__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
12678
  "button",
12597
12679
  {
12598
12680
  type: "button",
@@ -12601,7 +12683,7 @@ ${noteText}` : noteText : entry.notes,
12601
12683
  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
12684
  },
12603
12685
  editingEntryId ? "Salvar nesta Etapa" : "Adicionar ao Hist\xF3rico"
12604
- ))), /* @__PURE__ */ React19.createElement(
12686
+ ))), /* @__PURE__ */ React20.createElement(
12605
12687
  QuestTimeline,
12606
12688
  {
12607
12689
  timeline,
@@ -12610,10 +12692,10 @@ ${noteText}` : noteText : entry.notes,
12610
12692
  canEdit,
12611
12693
  onAddNote: handleOpenNoteForEntry
12612
12694
  }
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) => {
12695
+ )), /* @__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
12696
  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(
12697
+ 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));
12698
+ }))), /* @__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
12699
  "input",
12618
12700
  {
12619
12701
  type: "text",
@@ -12634,11 +12716,11 @@ ${noteText}` : noteText : entry.notes,
12634
12716
  placeholder: "",
12635
12717
  autoComplete: "off"
12636
12718
  }
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) => {
12719
+ ), 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
12720
  e.preventDefault();
12639
12721
  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(
12722
+ } }, 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")))
12723
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React20.createElement(
12642
12724
  DescriptionEditModal,
12643
12725
  {
12644
12726
  isOpen: isDescriptionModalOpen,
@@ -12658,7 +12740,7 @@ ${noteText}` : noteText : entry.notes,
12658
12740
  }
12659
12741
 
12660
12742
  // src/components/MultiNodeContextMenu.jsx
12661
- import React20, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12743
+ import React21, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12662
12744
  function MultiNodeContextMenu({
12663
12745
  data,
12664
12746
  userRole,
@@ -12700,7 +12782,7 @@ function MultiNodeContextMenu({
12700
12782
  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
12783
  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
12784
  const nodeCount = data.nodeIds.size;
12703
- return /* @__PURE__ */ React20.createElement(
12785
+ return /* @__PURE__ */ React21.createElement(
12704
12786
  "div",
12705
12787
  {
12706
12788
  ref: menuRef,
@@ -12714,27 +12796,27 @@ function MultiNodeContextMenu({
12714
12796
  onContextMenu: swallow,
12715
12797
  onDoubleClick: swallow
12716
12798
  },
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(
12799
+ /* @__PURE__ */ React21.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
12800
+ /* @__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
12801
  "button",
12720
12802
  {
12721
12803
  onClick: () => setIsConfirmingDelete(false),
12722
12804
  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
12805
  },
12724
12806
  "Cancelar"
12725
- ), /* @__PURE__ */ React20.createElement(
12807
+ ), /* @__PURE__ */ React21.createElement(
12726
12808
  "button",
12727
12809
  {
12728
12810
  onClick: () => onDeleteNodes(data.nodeIds),
12729
12811
  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
12812
  },
12731
12813
  "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, ")"))))))
12814
+ ))) : /* @__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
12815
  );
12734
12816
  }
12735
12817
 
12736
12818
  // src/components/RelationshipDetailsPanel.jsx
12737
- import React21, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12819
+ import React22, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12738
12820
  import { v4 as uuidv410 } from "uuid";
12739
12821
  import { FiPlus as FiPlus9, FiEdit2 as FiEdit29, FiLoader as FiLoader4, FiBookOpen as FiBookOpen5 } from "react-icons/fi";
12740
12822
  function RelationshipDetailsPanel({
@@ -12874,7 +12956,7 @@ function RelationshipDetailsPanel({
12874
12956
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
12875
12957
  }
12876
12958
  };
12877
- return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(
12959
+ return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
12878
12960
  "div",
12879
12961
  {
12880
12962
  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 +12971,7 @@ function RelationshipDetailsPanel({
12889
12971
  onContextMenu: swallow,
12890
12972
  onDoubleClick: swallow
12891
12973
  },
12892
- isReadMode ? /* @__PURE__ */ React21.createElement(
12974
+ isReadMode ? /* @__PURE__ */ React22.createElement(
12893
12975
  DescriptionReadModePanel,
12894
12976
  {
12895
12977
  title: name || "Rela\xE7\xE3o",
@@ -12910,7 +12992,7 @@ function RelationshipDetailsPanel({
12910
12992
  onImageClick: handleImageClickFromText,
12911
12993
  onSaveDescription: handleSaveDescriptionInline
12912
12994
  }
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(
12995
+ ) : /* @__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
12996
  "button",
12915
12997
  {
12916
12998
  onClick: onClose,
@@ -12919,7 +13001,7 @@ function RelationshipDetailsPanel({
12919
13001
  title: "Fechar"
12920
13002
  },
12921
13003
  "\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(
13004
+ )), /* @__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
13005
  "input",
12924
13006
  {
12925
13007
  type: "text",
@@ -12934,7 +13016,7 @@ function RelationshipDetailsPanel({
12934
13016
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12935
13017
  `
12936
13018
  }
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(
13019
+ )), /* @__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
13020
  "svg",
12939
13021
  {
12940
13022
  xmlns: "http://www.w3.org/2000/svg",
@@ -12948,9 +13030,9 @@ function RelationshipDetailsPanel({
12948
13030
  strokeLinejoin: "round",
12949
13031
  className: "text-violet-400 flex-shrink-0"
12950
13032
  },
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(
13033
+ /* @__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" }),
13034
+ /* @__PURE__ */ React22.createElement("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })
13035
+ ), /* @__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
13036
  "input",
12955
13037
  {
12956
13038
  type: "text",
@@ -12967,7 +13049,7 @@ function RelationshipDetailsPanel({
12967
13049
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12968
13050
  `
12969
13051
  }
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(
13052
+ )), /* @__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
13053
  "input",
12972
13054
  {
12973
13055
  type: "text",
@@ -12984,7 +13066,7 @@ function RelationshipDetailsPanel({
12984
13066
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12985
13067
  `
12986
13068
  }
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(
13069
+ )))), /* @__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
13070
  DescriptionDisplay,
12989
13071
  {
12990
13072
  description,
@@ -12996,7 +13078,7 @@ function RelationshipDetailsPanel({
12996
13078
  onImageClick: handleImageClickFromText,
12997
13079
  onSaveDescription: handleSaveDescriptionInline
12998
13080
  }
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(
13081
+ ), /* @__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
13082
  "button",
13001
13083
  {
13002
13084
  type: "button",
@@ -13004,8 +13086,8 @@ function RelationshipDetailsPanel({
13004
13086
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
13005
13087
  title: "Modo de Leitura"
13006
13088
  },
13007
- /* @__PURE__ */ React21.createElement(FiBookOpen5, { size: 14 })
13008
- ), canEdit && /* @__PURE__ */ React21.createElement(
13089
+ /* @__PURE__ */ React22.createElement(FiBookOpen5, { size: 14 })
13090
+ ), canEdit && /* @__PURE__ */ React22.createElement(
13009
13091
  "button",
13010
13092
  {
13011
13093
  type: "button",
@@ -13013,24 +13095,24 @@ function RelationshipDetailsPanel({
13013
13095
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
13014
13096
  title: "Editar descri\xE7\xE3o"
13015
13097
  },
13016
- /* @__PURE__ */ React21.createElement(FiEdit29, { size: 14 })
13017
- )), !description && canEdit && /* @__PURE__ */ React21.createElement(
13098
+ /* @__PURE__ */ React22.createElement(FiEdit29, { size: 14 })
13099
+ )), !description && canEdit && /* @__PURE__ */ React22.createElement(
13018
13100
  "div",
13019
13101
  {
13020
13102
  onClick: () => setIsDescriptionModalOpen(true),
13021
13103
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
13022
13104
  },
13023
13105
  "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(
13106
+ ))), /* @__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
13107
  "button",
13026
13108
  {
13027
13109
  type: "button",
13028
13110
  onClick: handleAddProp,
13029
13111
  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
13112
  },
13031
- /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }),
13113
+ /* @__PURE__ */ React22.createElement(FiPlus9, { size: 14 }),
13032
13114
  " Adicionar"
13033
- )), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(
13115
+ )), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React22.createElement(
13034
13116
  CustomPropertyDisplay,
13035
13117
  {
13036
13118
  key: prop.id,
@@ -13044,7 +13126,7 @@ function RelationshipDetailsPanel({
13044
13126
  onUploadFile,
13045
13127
  disabled: !canEdit
13046
13128
  }
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(
13129
+ )), /* @__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
13130
  "button",
13049
13131
  {
13050
13132
  onClick: onClose,
@@ -13052,7 +13134,7 @@ function RelationshipDetailsPanel({
13052
13134
  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
13135
  },
13054
13136
  canEdit ? "Cancelar" : "Fechar"
13055
- ), canEdit && /* @__PURE__ */ React21.createElement(
13137
+ ), canEdit && /* @__PURE__ */ React22.createElement(
13056
13138
  "button",
13057
13139
  {
13058
13140
  onClick: () => handleSave(false),
@@ -13061,10 +13143,10 @@ function RelationshipDetailsPanel({
13061
13143
  ${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
13144
  `
13063
13145
  },
13064
- isSaving && /* @__PURE__ */ React21.createElement(FiLoader4, { className: "animate-spin" }),
13146
+ isSaving && /* @__PURE__ */ React22.createElement(FiLoader4, { className: "animate-spin" }),
13065
13147
  isSaving ? "Salvando..." : "Salvar"
13066
13148
  )))
13067
- ), isDescriptionModalOpen && /* @__PURE__ */ React21.createElement(
13149
+ ), isDescriptionModalOpen && /* @__PURE__ */ React22.createElement(
13068
13150
  DescriptionEditModal,
13069
13151
  {
13070
13152
  isOpen: isDescriptionModalOpen,
@@ -13086,7 +13168,7 @@ function RelationshipDetailsPanel({
13086
13168
  }
13087
13169
 
13088
13170
  // src/components/RelationshipContextMenu.jsx
13089
- import React22, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
13171
+ import React23, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
13090
13172
  function RelationshipContextMenu({
13091
13173
  data,
13092
13174
  userRole,
@@ -13143,7 +13225,7 @@ function RelationshipContextMenu({
13143
13225
  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
13226
  const canUpdate = ability.can("update", "Connection");
13145
13227
  const canDelete = ability.can("delete", "Connection");
13146
- return /* @__PURE__ */ React22.createElement(
13228
+ return /* @__PURE__ */ React23.createElement(
13147
13229
  "div",
13148
13230
  {
13149
13231
  ref: menuRef,
@@ -13157,29 +13239,29 @@ function RelationshipContextMenu({
13157
13239
  onContextMenu: swallow,
13158
13240
  onDoubleClick: swallow
13159
13241
  },
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(
13242
+ /* @__PURE__ */ React23.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }),
13243
+ /* @__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
13244
  "button",
13163
13245
  {
13164
13246
  onClick: () => setIsConfirmingDelete(false),
13165
13247
  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
13248
  },
13167
13249
  "Cancelar"
13168
- ), /* @__PURE__ */ React22.createElement(
13250
+ ), /* @__PURE__ */ React23.createElement(
13169
13251
  "button",
13170
13252
  {
13171
13253
  onClick: () => onDelete == null ? void 0 : onDelete(data.linkObject),
13172
13254
  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
13255
  },
13174
13256
  "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(
13257
+ ))) : /* @__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
13258
  "button",
13177
13259
  {
13178
13260
  onClick: () => onRelinkSource == null ? void 0 : onRelinkSource(data.linkObject),
13179
13261
  className: baseButtonClass,
13180
13262
  title: "Desconectar ponta ligada ao Source"
13181
13263
  },
13182
- /* @__PURE__ */ React22.createElement(
13264
+ /* @__PURE__ */ React23.createElement(
13183
13265
  "svg",
13184
13266
  {
13185
13267
  xmlns: "http://www.w3.org/2000/svg",
@@ -13192,18 +13274,18 @@ function RelationshipContextMenu({
13192
13274
  strokeLinecap: "round",
13193
13275
  strokeLinejoin: "round"
13194
13276
  },
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" })
13277
+ /* @__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" }),
13278
+ /* @__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
13279
  ),
13198
- /* @__PURE__ */ React22.createElement("span", null, "Desconectar Source (", sourceName, ")")
13199
- ), /* @__PURE__ */ React22.createElement(
13280
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Source (", sourceName, ")")
13281
+ ), /* @__PURE__ */ React23.createElement(
13200
13282
  "button",
13201
13283
  {
13202
13284
  onClick: () => onRelinkTarget == null ? void 0 : onRelinkTarget(data.linkObject),
13203
13285
  className: baseButtonClass,
13204
13286
  title: "Desconectar ponta ligada ao Target"
13205
13287
  },
13206
- /* @__PURE__ */ React22.createElement(
13288
+ /* @__PURE__ */ React23.createElement(
13207
13289
  "svg",
13208
13290
  {
13209
13291
  xmlns: "http://www.w3.org/2000/svg",
@@ -13216,21 +13298,21 @@ function RelationshipContextMenu({
13216
13298
  strokeLinecap: "round",
13217
13299
  strokeLinejoin: "round"
13218
13300
  },
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" })
13301
+ /* @__PURE__ */ React23.createElement("polyline", { points: "16 3 21 3 21 8" }),
13302
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "20", x2: "21", y2: "3" }),
13303
+ /* @__PURE__ */ React23.createElement("polyline", { points: "21 16 21 21 16 21" }),
13304
+ /* @__PURE__ */ React23.createElement("line", { x1: "15", y1: "15", x2: "21", y2: "21" }),
13305
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "4", x2: "9", y2: "9" })
13224
13306
  ),
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(
13307
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Target (", targetName, ")")
13308
+ ), /* @__PURE__ */ React23.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" })), /* @__PURE__ */ React23.createElement(
13227
13309
  "button",
13228
13310
  {
13229
13311
  onClick: () => onOpenDetails == null ? void 0 : onOpenDetails(data.linkObject),
13230
13312
  className: baseButtonClass,
13231
13313
  title: "Abrir detalhes da rela\xE7\xE3o"
13232
13314
  },
13233
- /* @__PURE__ */ React22.createElement(
13315
+ /* @__PURE__ */ React23.createElement(
13234
13316
  "svg",
13235
13317
  {
13236
13318
  xmlns: "http://www.w3.org/2000/svg",
@@ -13243,19 +13325,19 @@ function RelationshipContextMenu({
13243
13325
  strokeLinecap: "round",
13244
13326
  strokeLinejoin: "round"
13245
13327
  },
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" })
13328
+ /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "12", r: "10" }),
13329
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
13330
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "8" })
13249
13331
  ),
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(
13332
+ /* @__PURE__ */ React23.createElement("span", null, "Abrir Detalhes")
13333
+ ), 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
13334
  "button",
13253
13335
  {
13254
13336
  onClick: () => setIsConfirmingDelete(true),
13255
13337
  className: dangerButtonClass,
13256
13338
  title: "Excluir esta conex\xE3o"
13257
13339
  },
13258
- /* @__PURE__ */ React22.createElement(
13340
+ /* @__PURE__ */ React23.createElement(
13259
13341
  "svg",
13260
13342
  {
13261
13343
  xmlns: "http://www.w3.org/2000/svg",
@@ -13268,19 +13350,19 @@ function RelationshipContextMenu({
13268
13350
  strokeLinecap: "round",
13269
13351
  strokeLinejoin: "round"
13270
13352
  },
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" })
13353
+ /* @__PURE__ */ React23.createElement("polyline", { points: "3 6 5 6 21 6" }),
13354
+ /* @__PURE__ */ React23.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
13355
+ /* @__PURE__ */ React23.createElement("path", { d: "M10 11v6" }),
13356
+ /* @__PURE__ */ React23.createElement("path", { d: "M14 11v6" }),
13357
+ /* @__PURE__ */ React23.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" })
13276
13358
  ),
13277
- /* @__PURE__ */ React22.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13359
+ /* @__PURE__ */ React23.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13278
13360
  )))))
13279
13361
  );
13280
13362
  }
13281
13363
 
13282
13364
  // src/components/LoadingScreen.jsx
13283
- import React23 from "react";
13365
+ import React24 from "react";
13284
13366
  var styles = {
13285
13367
  loadingOverlay: {
13286
13368
  position: "fixed",
@@ -13312,11 +13394,11 @@ var styles = {
13312
13394
  `
13313
13395
  };
13314
13396
  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 })));
13397
+ 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
13398
  }
13317
13399
 
13318
13400
  // src/components/ImportParentFileModal.jsx
13319
- import React24, { useEffect as useEffect20, useState as useState23 } from "react";
13401
+ import React25, { useEffect as useEffect20, useState as useState23 } from "react";
13320
13402
  function ImportParentFileModal({
13321
13403
  isOpen,
13322
13404
  onClose,
@@ -13397,13 +13479,13 @@ function ImportParentFileModal({
13397
13479
  const swallow = (e) => e.stopPropagation();
13398
13480
  const currentList = activeTab === "databases" ? availableDbs : availableViews;
13399
13481
  const emptyMessage = activeTab === "databases" ? "Nenhum novo arquivo parent dispon\xEDvel." : "Nenhuma view dispon\xEDvel para importa\xE7\xE3o.";
13400
- return /* @__PURE__ */ React24.createElement(
13482
+ return /* @__PURE__ */ React25.createElement(
13401
13483
  "div",
13402
13484
  {
13403
13485
  className: "ui-overlay fixed inset-0 z-[1200] flex items-center justify-center bg-black/60 backdrop-blur-sm",
13404
13486
  onClick: onClose
13405
13487
  },
13406
- /* @__PURE__ */ React24.createElement(
13488
+ /* @__PURE__ */ React25.createElement(
13407
13489
  "div",
13408
13490
  {
13409
13491
  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 +13497,14 @@ function ImportParentFileModal({
13415
13497
  onContextMenu: swallow,
13416
13498
  onDoubleClick: swallow
13417
13499
  },
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(
13500
+ /* @__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
13501
  "button",
13420
13502
  {
13421
13503
  onClick: onClose,
13422
13504
  className: "p-2 rounded-md text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
13423
13505
  title: "Fechar"
13424
13506
  },
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(
13507
+ /* @__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
13508
  "path",
13427
13509
  {
13428
13510
  fillRule: "evenodd",
@@ -13431,14 +13513,14 @@ function ImportParentFileModal({
13431
13513
  }
13432
13514
  ))
13433
13515
  )),
13434
- /* @__PURE__ */ React24.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React24.createElement(
13516
+ /* @__PURE__ */ React25.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React25.createElement(
13435
13517
  "button",
13436
13518
  {
13437
13519
  onClick: () => setActiveTab("databases"),
13438
13520
  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
13521
  },
13440
13522
  "Arquivos Parent"
13441
- ), /* @__PURE__ */ React24.createElement(
13523
+ ), /* @__PURE__ */ React25.createElement(
13442
13524
  "button",
13443
13525
  {
13444
13526
  onClick: () => setActiveTab("views"),
@@ -13446,24 +13528,24 @@ function ImportParentFileModal({
13446
13528
  },
13447
13529
  "Views (Ancestralidades)"
13448
13530
  )),
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(
13531
+ /* @__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
13532
  "div",
13451
13533
  {
13452
13534
  key: item.id,
13453
13535
  onClick: () => setSelectedItem(item),
13454
13536
  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
13537
  },
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(
13538
+ /* @__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")),
13539
+ 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)
13540
+ )) : /* @__PURE__ */ React25.createElement("p", { className: "text-slate-400 text-center py-10" }, emptyMessage))),
13541
+ /* @__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
13542
  "button",
13461
13543
  {
13462
13544
  onClick: onClose,
13463
13545
  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
13546
  },
13465
13547
  "Cancelar"
13466
- ), /* @__PURE__ */ React24.createElement(
13548
+ ), /* @__PURE__ */ React25.createElement(
13467
13549
  "button",
13468
13550
  {
13469
13551
  onClick: handleConfirm,
@@ -13477,7 +13559,7 @@ function ImportParentFileModal({
13477
13559
  }
13478
13560
 
13479
13561
  // src/components/AncestryLinkDetailsPanel.jsx
13480
- import React25, { useState as useState24 } from "react";
13562
+ import React26, { useState as useState24 } from "react";
13481
13563
  import { FiBookOpen as FiBookOpen6 } from "react-icons/fi";
13482
13564
  function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenReference, onMentionClick, onUploadFile, onHighlight }) {
13483
13565
  var _a, _b, _c, _d;
@@ -13488,7 +13570,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13488
13570
  const sourceName = ((_b = (_a = data.sourceNode) == null ? void 0 : _a.userData) == null ? void 0 : _b.name) || "Origem";
13489
13571
  const targetName = ((_d = (_c = data.targetNode) == null ? void 0 : _c.userData) == null ? void 0 : _d.name) || "Destino";
13490
13572
  const [isReadMode, setIsReadMode] = useState24(false);
13491
- React25.useEffect(() => {
13573
+ React26.useEffect(() => {
13492
13574
  return () => {
13493
13575
  if (onHighlight) onHighlight(null);
13494
13576
  };
@@ -13499,14 +13581,14 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13499
13581
  onOpenImageViewer([{ name: name || "Imagem", value: url }], 0);
13500
13582
  }
13501
13583
  };
13502
- return /* @__PURE__ */ React25.createElement(
13584
+ return /* @__PURE__ */ React26.createElement(
13503
13585
  "div",
13504
13586
  {
13505
13587
  className: "ui-overlay fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[1200]",
13506
13588
  onClick: onClose,
13507
13589
  onPointerDown: swallow
13508
13590
  },
13509
- /* @__PURE__ */ React25.createElement(
13591
+ /* @__PURE__ */ React26.createElement(
13510
13592
  "div",
13511
13593
  {
13512
13594
  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 +13596,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13514
13596
  `,
13515
13597
  onClick: swallow
13516
13598
  },
13517
- isReadMode ? /* @__PURE__ */ React25.createElement(
13599
+ isReadMode ? /* @__PURE__ */ React26.createElement(
13518
13600
  DescriptionReadModePanel,
13519
13601
  {
13520
13602
  title: `${sourceName} \u2794 ${targetName}`,
@@ -13526,7 +13608,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13526
13608
  onMentionClick,
13527
13609
  onImageClick: handleImageClickFromText
13528
13610
  }
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(
13611
+ ) : /* @__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
13612
  "span",
13531
13613
  {
13532
13614
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13534,7 +13616,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13534
13616
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13535
13617
  },
13536
13618
  sourceName
13537
- ), /* @__PURE__ */ React25.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React25.createElement(
13619
+ ), /* @__PURE__ */ React26.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React26.createElement(
13538
13620
  "span",
13539
13621
  {
13540
13622
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13542,15 +13624,15 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13542
13624
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13543
13625
  },
13544
13626
  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(
13627
+ ))), /* @__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
13628
  "button",
13547
13629
  {
13548
13630
  onClick: () => setIsReadMode(true),
13549
13631
  className: "p-1 text-slate-400 hover:text-white transition-colors",
13550
13632
  title: "Modo de Leitura"
13551
13633
  },
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(
13634
+ /* @__PURE__ */ React26.createElement(FiBookOpen6, { size: 14 })
13635
+ )), /* @__PURE__ */ React26.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React26.createElement(
13554
13636
  DescriptionDisplay,
13555
13637
  {
13556
13638
  description,
@@ -13559,7 +13641,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13559
13641
  onMentionClick,
13560
13642
  onImageClick: handleImageClickFromText
13561
13643
  }
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(
13644
+ ))), 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
13645
  CustomPropertyDisplay,
13564
13646
  {
13565
13647
  key: prop.id,
@@ -13568,13 +13650,13 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13568
13650
  onOpenImageViewer,
13569
13651
  onUploadFile
13570
13652
  }
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".')))
13653
+ )))), !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
13654
  )
13573
13655
  );
13574
13656
  }
13575
13657
 
13576
13658
  // src/components/Boards.jsx
13577
- import React28, {
13659
+ import React29, {
13578
13660
  useState as useState27,
13579
13661
  useMemo as useMemo12,
13580
13662
  useEffect as useEffect23,
@@ -13604,10 +13686,10 @@ import {
13604
13686
  import { v4 as uuidv411 } from "uuid";
13605
13687
 
13606
13688
  // src/components/RichGroupEditor.jsx
13607
- import React27, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13689
+ import React28, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13608
13690
 
13609
13691
  // src/components/MentionPopover.jsx
13610
- import React26, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13692
+ import React27, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13611
13693
  import { FiLayers as FiLayers6, FiCheckSquare as FiCheckSquare3, FiGitBranch as FiGitBranch3, FiBox } from "react-icons/fi";
13612
13694
  var TYPE_CONFIG = {
13613
13695
  ancestry: { Icon: FiLayers6, color: "text-indigo-400", label: "Ancestralidade" },
@@ -13655,7 +13737,7 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13655
13737
  if (el) el.scrollIntoView({ block: "nearest" });
13656
13738
  }
13657
13739
  }, [activeIndex]);
13658
- return /* @__PURE__ */ React26.createElement(
13740
+ return /* @__PURE__ */ React27.createElement(
13659
13741
  "div",
13660
13742
  {
13661
13743
  style: { top: position.top, left: position.left, position: "fixed", zIndex: 9999 },
@@ -13663,10 +13745,10 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13663
13745
  ref: listRef,
13664
13746
  onMouseDown: (e) => e.preventDefault()
13665
13747
  },
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) => {
13748
+ 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
13749
  const config = TYPE_CONFIG[item.type] || TYPE_CONFIG.node;
13668
13750
  const { Icon } = config;
13669
- return /* @__PURE__ */ React26.createElement(
13751
+ return /* @__PURE__ */ React27.createElement(
13670
13752
  "div",
13671
13753
  {
13672
13754
  key: item.id,
@@ -13677,9 +13759,9 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13677
13759
  onMouseEnter: () => setActiveIndex(idx),
13678
13760
  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
13761
  },
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)
13762
+ /* @__PURE__ */ React27.createElement(Icon, { size: 13, className: config.color }),
13763
+ /* @__PURE__ */ React27.createElement("span", { className: "flex-1 truncate font-medium" }, item.searchLabel || "Sem Nome"),
13764
+ /* @__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
13765
  );
13684
13766
  })
13685
13767
  );
@@ -13749,7 +13831,7 @@ function domToContent(el) {
13749
13831
  el.childNodes.forEach(walk);
13750
13832
  return segments;
13751
13833
  }
13752
- var RichGroupEditor = React27.memo(function RichGroupEditor2({
13834
+ var RichGroupEditor = React28.memo(function RichGroupEditor2({
13753
13835
  content,
13754
13836
  onChange,
13755
13837
  onMentionClick,
@@ -13935,7 +14017,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13935
14017
  }
13936
14018
  setMentionState(null);
13937
14019
  }, []);
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(
14020
+ 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
14021
  "div",
13940
14022
  {
13941
14023
  ref: editorRef,
@@ -13949,7 +14031,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13949
14031
  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
14032
  style: { overflowWrap: "break-word", wordBreak: "break-word" }
13951
14033
  }
13952
- ), mentionState && !readOnly && /* @__PURE__ */ React27.createElement(
14034
+ ), mentionState && !readOnly && /* @__PURE__ */ React28.createElement(
13953
14035
  MentionPopover,
13954
14036
  {
13955
14037
  query: mentionState.query,
@@ -13967,9 +14049,9 @@ var RichGroupEditor_default = RichGroupEditor;
13967
14049
  // src/components/Boards.jsx
13968
14050
  var Tooltip = ({ text, children }) => {
13969
14051
  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));
14052
+ 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
14053
  };
13972
- var BoardItem = React28.memo(
14054
+ var BoardItem = React29.memo(
13973
14055
  ({
13974
14056
  item,
13975
14057
  index,
@@ -14015,20 +14097,20 @@ var BoardItem = React28.memo(
14015
14097
  onUpdate(item.id, { ...item, color: newColor });
14016
14098
  };
14017
14099
  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(
14100
+ 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
14101
  "div",
14020
14102
  {
14021
14103
  onClick: () => onEnterFolder(item.id),
14022
14104
  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
14105
  },
14024
- /* @__PURE__ */ React28.createElement(
14106
+ /* @__PURE__ */ React29.createElement(
14025
14107
  "div",
14026
14108
  {
14027
14109
  className: "absolute inset-y-0 left-0 w-1 opacity-0 group-hover/folder:opacity-100 transition-opacity rounded-l-xl",
14028
14110
  style: { background: `linear-gradient(to right, ${item.color || "#6366f1"}33, transparent)` }
14029
14111
  }
14030
14112
  ),
14031
- /* @__PURE__ */ React28.createElement(
14113
+ /* @__PURE__ */ React29.createElement(
14032
14114
  "div",
14033
14115
  {
14034
14116
  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 +14120,9 @@ var BoardItem = React28.memo(
14038
14120
  color: item.color || "#6366f1"
14039
14121
  }
14040
14122
  },
14041
- /* @__PURE__ */ React28.createElement(FiFolder3, { size: 18 })
14123
+ /* @__PURE__ */ React29.createElement(FiFolder3, { size: 18 })
14042
14124
  ),
14043
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React28.createElement(
14125
+ /* @__PURE__ */ React29.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React29.createElement(
14044
14126
  "input",
14045
14127
  {
14046
14128
  type: "text",
@@ -14050,8 +14132,8 @@ var BoardItem = React28.memo(
14050
14132
  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
14133
  placeholder: "Nome..."
14052
14134
  }
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(
14135
+ ) : /* @__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")),
14136
+ 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
14137
  ColorPicker,
14056
14138
  {
14057
14139
  isCompact: true,
@@ -14059,7 +14141,7 @@ var BoardItem = React28.memo(
14059
14141
  onChange: handleColorChange,
14060
14142
  disabled: !canEdit
14061
14143
  }
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(
14144
+ )), /* @__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
14145
  "button",
14064
14146
  {
14065
14147
  onClick: (e) => {
@@ -14069,8 +14151,8 @@ var BoardItem = React28.memo(
14069
14151
  disabled: !canMoveUp,
14070
14152
  className: `p-1 rounded transition-colors ${!canMoveUp ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
14071
14153
  },
14072
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
14073
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14154
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14155
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
14074
14156
  "button",
14075
14157
  {
14076
14158
  onClick: (e) => {
@@ -14080,8 +14162,8 @@ var BoardItem = React28.memo(
14080
14162
  disabled: !canMoveDown,
14081
14163
  className: `p-1 rounded transition-colors ${!canMoveDown ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
14082
14164
  },
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(
14165
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14166
+ )), /* @__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
14167
  "button",
14086
14168
  {
14087
14169
  onClick: (e) => {
@@ -14090,8 +14172,8 @@ var BoardItem = React28.memo(
14090
14172
  },
14091
14173
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
14092
14174
  },
14093
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
14094
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14175
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14176
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
14095
14177
  "button",
14096
14178
  {
14097
14179
  onClick: (e) => {
@@ -14100,8 +14182,8 @@ var BoardItem = React28.memo(
14100
14182
  },
14101
14183
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
14102
14184
  },
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(
14185
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14186
+ )), !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
14187
  "button",
14106
14188
  {
14107
14189
  onClick: (e) => {
@@ -14110,8 +14192,8 @@ var BoardItem = React28.memo(
14110
14192
  },
14111
14193
  className: `p-1 rounded text-slate-400 hover:text-white hover:bg-white/10 transition-colors`
14112
14194
  },
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(
14195
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14196
+ ))), /* @__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
14197
  "button",
14116
14198
  {
14117
14199
  onClick: (e) => {
@@ -14120,11 +14202,11 @@ var BoardItem = React28.memo(
14120
14202
  },
14121
14203
  className: "p-1 text-slate-500 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
14122
14204
  },
14123
- /* @__PURE__ */ React28.createElement(FiTrash23, { size: 14 })
14205
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
14124
14206
  ))))
14125
14207
  ));
14126
14208
  }
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(
14209
+ 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
14210
  RichGroupEditor_default,
14129
14211
  {
14130
14212
  content: item.content,
@@ -14134,61 +14216,61 @@ var BoardItem = React28.memo(
14134
14216
  readOnly: !canEdit,
14135
14217
  placeholder: "Escreva sobre este grupo de texto\u2026 ou @ para mencionar"
14136
14218
  }
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(
14219
+ ), 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
14220
  "button",
14139
14221
  {
14140
14222
  onClick: () => onAddSubgroup(item.id, "text_group"),
14141
14223
  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
14224
  title: "Criar Subgrupo de Texto"
14143
14225
  },
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(
14226
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 12 }),
14227
+ /* @__PURE__ */ React29.createElement("span", null, "Subgrupo")
14228
+ )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React29.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React29.createElement(
14147
14229
  "button",
14148
14230
  {
14149
14231
  onClick: () => onMoveUp(item.id),
14150
14232
  disabled: !canMoveUp,
14151
14233
  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
14234
  },
14153
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
14154
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14235
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14236
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
14155
14237
  "button",
14156
14238
  {
14157
14239
  onClick: () => onMoveDown(item.id),
14158
14240
  disabled: !canMoveDown,
14159
14241
  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
14242
  },
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(
14243
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14244
+ )), /* @__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
14245
  "button",
14164
14246
  {
14165
14247
  onClick: () => onIndent(item.id),
14166
14248
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
14167
14249
  },
14168
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
14169
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14250
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14251
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
14170
14252
  "button",
14171
14253
  {
14172
14254
  onClick: () => onIndentDown(item.id),
14173
14255
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
14174
14256
  },
14175
- /* @__PURE__ */ React28.createElement(FiArrowRight2, { size: 14 })
14176
- )), !isAtRoot && /* @__PURE__ */ React28.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React28.createElement(
14257
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14258
+ )), !isAtRoot && /* @__PURE__ */ React29.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React29.createElement(
14177
14259
  "button",
14178
14260
  {
14179
14261
  onClick: () => onOutdent(item.id),
14180
14262
  disabled: !onOutdent,
14181
14263
  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
14264
  },
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(
14265
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14266
+ )), /* @__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
14267
  "button",
14186
14268
  {
14187
14269
  onClick: () => onDelete(item.id),
14188
14270
  className: "p-1.5 text-slate-600 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
14189
14271
  },
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(
14272
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
14273
+ ))))), item.children && item.children.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-2" }, item.children.map((child, idx) => /* @__PURE__ */ React29.createElement(
14192
14274
  BoardItem,
14193
14275
  {
14194
14276
  key: child.id,
@@ -14514,72 +14596,72 @@ function Boards({
14514
14596
  setNavigationStack([]);
14515
14597
  }, []);
14516
14598
  if (!isOpen) return null;
14517
- return /* @__PURE__ */ React28.createElement(
14599
+ return /* @__PURE__ */ React29.createElement(
14518
14600
  "div",
14519
14601
  {
14520
14602
  className: "fixed inset-0 z-[2200] bg-black/80 backdrop-blur-sm flex items-center justify-center p-2",
14521
14603
  onClick: onClose
14522
14604
  },
14523
- /* @__PURE__ */ React28.createElement(
14605
+ /* @__PURE__ */ React29.createElement(
14524
14606
  "div",
14525
14607
  {
14526
14608
  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
14609
  onClick: (e) => e.stopPropagation()
14528
14610
  },
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(
14611
+ /* @__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
14612
  FiLoader5,
14531
14613
  {
14532
14614
  className: "animate-spin text-indigo-400",
14533
14615
  size: 12
14534
14616
  }
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(
14617
+ ), /* @__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
14618
  "button",
14537
14619
  {
14538
14620
  onClick: () => handleAddItem("folder"),
14539
14621
  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
14622
  },
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(
14623
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-amber-400" }),
14624
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Pasta")
14625
+ ), /* @__PURE__ */ React29.createElement(
14544
14626
  "button",
14545
14627
  {
14546
14628
  onClick: () => handleAddItem("text_group"),
14547
14629
  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
14630
  },
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(
14631
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-indigo-400" }),
14632
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Texto")
14633
+ )), /* @__PURE__ */ React29.createElement(
14552
14634
  "button",
14553
14635
  {
14554
14636
  onClick: onClose,
14555
14637
  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
14638
  },
14557
- /* @__PURE__ */ React28.createElement(FiX8, { size: 16 })
14639
+ /* @__PURE__ */ React29.createElement(FiX8, { size: 16 })
14558
14640
  ))),
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(
14641
+ /* @__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
14642
  "button",
14561
14643
  {
14562
14644
  onClick: navigateHome,
14563
14645
  className: `hover:text-white transition-colors flex items-center gap-1 ${navigationStack.length === 0 ? "text-indigo-400" : ""}`
14564
14646
  },
14565
14647
  "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(
14648
+ ), 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
14649
  "button",
14568
14650
  {
14569
14651
  onClick: () => navigateToBreadcrumb(idx),
14570
14652
  className: `hover:text-white transition-colors ${idx === currentPath.length - 1 ? "text-indigo-400" : ""}`
14571
14653
  },
14572
14654
  folder.name || "Sem Nome"
14573
- ))), navigationStack.length > 0 && /* @__PURE__ */ React28.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React28.createElement(
14655
+ ))), navigationStack.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React29.createElement(
14574
14656
  "button",
14575
14657
  {
14576
14658
  onClick: navigateUp,
14577
14659
  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
14660
  },
14579
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 10 }),
14580
- /* @__PURE__ */ React28.createElement("span", null, "Voltar")
14661
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 10 }),
14662
+ /* @__PURE__ */ React29.createElement("span", null, "Voltar")
14581
14663
  ))),
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(
14664
+ /* @__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
14665
  BoardItem,
14584
14666
  {
14585
14667
  key: item.id,
@@ -14602,13 +14684,13 @@ function Boards({
14602
14684
  isAtRoot: navigationStack.length === 0
14603
14685
  }
14604
14686
  ))),
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"))
14687
+ /* @__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
14688
  )
14607
14689
  );
14608
14690
  }
14609
14691
 
14610
14692
  // src/components/MilestoneManager.jsx
14611
- import React29, { useState as useState28 } from "react";
14693
+ import React30, { useState as useState28 } from "react";
14612
14694
  import { FiTarget as FiTarget4, FiPlus as FiPlus11, FiTrash2 as FiTrash24, FiX as FiX9, FiCheck as FiCheck12, FiPauseCircle, FiPlayCircle } from "react-icons/fi";
14613
14695
  function MilestoneManager({
14614
14696
  isOpen,
@@ -14642,27 +14724,27 @@ function MilestoneManager({
14642
14724
  };
14643
14725
  if (!isOpen) return null;
14644
14726
  const swallow = (e) => e.stopPropagation();
14645
- return /* @__PURE__ */ React29.createElement(
14727
+ return /* @__PURE__ */ React30.createElement(
14646
14728
  "div",
14647
14729
  {
14648
14730
  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
14731
  onClick: onClose
14650
14732
  },
14651
- /* @__PURE__ */ React29.createElement(
14733
+ /* @__PURE__ */ React30.createElement(
14652
14734
  "div",
14653
14735
  {
14654
14736
  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
14737
  onClick: swallow
14656
14738
  },
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(
14739
+ /* @__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
14740
  "button",
14659
14741
  {
14660
14742
  onClick: onClose,
14661
14743
  className: "p-2 rounded-full hover:bg-white/10 text-slate-400 hover:text-white transition-colors"
14662
14744
  },
14663
- /* @__PURE__ */ React29.createElement(FiX9, { size: 20 })
14745
+ /* @__PURE__ */ React30.createElement(FiX9, { size: 20 })
14664
14746
  )),
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(
14747
+ /* @__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
14748
  "input",
14667
14749
  {
14668
14750
  type: "text",
@@ -14672,47 +14754,47 @@ function MilestoneManager({
14672
14754
  placeholder: "Adicionar novo milestone...",
14673
14755
  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
14756
  }
14675
- ), /* @__PURE__ */ React29.createElement(
14757
+ ), /* @__PURE__ */ React30.createElement(
14676
14758
  "button",
14677
14759
  {
14678
14760
  onClick: handleAddMilestone,
14679
14761
  disabled: !newMilestoneName.trim(),
14680
14762
  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
14763
  },
14682
- /* @__PURE__ */ React29.createElement(FiPlus11, { size: 18 }),
14764
+ /* @__PURE__ */ React30.createElement(FiPlus11, { size: 18 }),
14683
14765
  "Adicionar"
14684
14766
  ))),
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(
14767
+ /* @__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
14768
  "div",
14687
14769
  {
14688
14770
  key: ms.id,
14689
14771
  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
14772
  },
14691
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React29.createElement(
14773
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React30.createElement(
14692
14774
  "div",
14693
14775
  {
14694
14776
  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
14777
  }
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(
14778
+ ), /* @__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"))),
14779
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React30.createElement(
14698
14780
  "button",
14699
14781
  {
14700
14782
  onClick: () => handleToggleMilestoneStatus(ms.id),
14701
14783
  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
14784
  title: ms.status === "active" ? "Inativar" : "Ativar"
14703
14785
  },
14704
- ms.status === "active" ? /* @__PURE__ */ React29.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React29.createElement(FiPlayCircle, { size: 18 })
14705
- ), /* @__PURE__ */ React29.createElement(
14786
+ ms.status === "active" ? /* @__PURE__ */ React30.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React30.createElement(FiPlayCircle, { size: 18 })
14787
+ ), /* @__PURE__ */ React30.createElement(
14706
14788
  "button",
14707
14789
  {
14708
14790
  onClick: () => handleRemoveMilestone(ms.id),
14709
14791
  className: "p-2 rounded-lg hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-all",
14710
14792
  title: "Remover"
14711
14793
  },
14712
- /* @__PURE__ */ React29.createElement(FiTrash24, { size: 18 })
14794
+ /* @__PURE__ */ React30.createElement(FiTrash24, { size: 18 })
14713
14795
  ))
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))))
14796
+ ))) : /* @__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."))),
14797
+ /* @__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
14798
  )
14717
14799
  );
14718
14800
  }
@@ -19402,10 +19484,10 @@ function XViewScene({
19402
19484
  // <-- handleCancelQuest adicionado aqui
19403
19485
  ]);
19404
19486
  if (isLoading || status === "loading" || permissionStatus === "loading") {
19405
- return /* @__PURE__ */ React30.createElement(LoadingScreen, null);
19487
+ return /* @__PURE__ */ React31.createElement(LoadingScreen, null);
19406
19488
  }
19407
19489
  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(
19490
+ 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
19491
  "svg",
19410
19492
  {
19411
19493
  xmlns: "http://www.w3.org/2000/svg",
@@ -19415,7 +19497,7 @@ function XViewScene({
19415
19497
  stroke: "currentColor",
19416
19498
  className: "w-16 h-16 mx-auto"
19417
19499
  },
19418
- /* @__PURE__ */ React30.createElement(
19500
+ /* @__PURE__ */ React31.createElement(
19419
19501
  "path",
19420
19502
  {
19421
19503
  strokeLinecap: "round",
@@ -19423,13 +19505,13 @@ function XViewScene({
19423
19505
  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
19506
  }
19425
19507
  )
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(
19508
+ )), /* @__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
19509
  "button",
19428
19510
  {
19429
19511
  onClick: handleNavigateBack,
19430
19512
  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
19513
  },
19432
- /* @__PURE__ */ React30.createElement(
19514
+ /* @__PURE__ */ React31.createElement(
19433
19515
  "svg",
19434
19516
  {
19435
19517
  xmlns: "http://www.w3.org/2000/svg",
@@ -19439,7 +19521,7 @@ function XViewScene({
19439
19521
  stroke: "currentColor",
19440
19522
  className: "w-5 h-5"
19441
19523
  },
19442
- /* @__PURE__ */ React30.createElement(
19524
+ /* @__PURE__ */ React31.createElement(
19443
19525
  "path",
19444
19526
  {
19445
19527
  strokeLinecap: "round",
@@ -19451,7 +19533,7 @@ function XViewScene({
19451
19533
  "Voltar para o X.View"
19452
19534
  )));
19453
19535
  }
19454
- return /* @__PURE__ */ React30.createElement(
19536
+ return /* @__PURE__ */ React31.createElement(
19455
19537
  "div",
19456
19538
  {
19457
19539
  ref: mountRef,
@@ -19463,7 +19545,7 @@ function XViewScene({
19463
19545
  cursor: stateRef.current.connection.isActive || stateRef.current.relink.isActive || ancestryMode.isActive ? "crosshair" : creationMode.isActive ? "default" : "grab"
19464
19546
  }
19465
19547
  },
19466
- userPermissionRole !== "link_viewer" && /* @__PURE__ */ React30.createElement(
19548
+ userPermissionRole !== "link_viewer" && /* @__PURE__ */ React31.createElement(
19467
19549
  XViewSidebar,
19468
19550
  {
19469
19551
  dbNodes: searchableDbNodes,
@@ -19488,7 +19570,7 @@ function XViewScene({
19488
19570
  onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true)
19489
19571
  }
19490
19572
  ),
19491
- creationMode.isActive && /* @__PURE__ */ React30.createElement(
19573
+ creationMode.isActive && /* @__PURE__ */ React31.createElement(
19492
19574
  InSceneCreationForm,
19493
19575
  {
19494
19576
  onSave: (data) => userActionHandlers.handleSaveNode(actionHandlerContext, data),
@@ -19521,7 +19603,7 @@ function XViewScene({
19521
19603
  create_google_doc_action
19522
19604
  }
19523
19605
  ),
19524
- versionMode.isActive && /* @__PURE__ */ React30.createElement(
19606
+ versionMode.isActive && /* @__PURE__ */ React31.createElement(
19525
19607
  InSceneVersionForm,
19526
19608
  {
19527
19609
  onSave: (data) => userActionHandlers.handleSaveVersionNode(actionHandlerContext, data),
@@ -19547,7 +19629,7 @@ function XViewScene({
19547
19629
  availableAncestries: allAvailableAncestries
19548
19630
  }
19549
19631
  ),
19550
- questMode.isActive && /* @__PURE__ */ React30.createElement(
19632
+ questMode.isActive && /* @__PURE__ */ React31.createElement(
19551
19633
  InSceneQuestForm,
19552
19634
  {
19553
19635
  onSave: (data) => handleSaveQuestNode(actionHandlerContext, data),
@@ -19576,7 +19658,7 @@ function XViewScene({
19576
19658
  create_google_doc_action
19577
19659
  }
19578
19660
  ),
19579
- readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React30.createElement(
19661
+ readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React31.createElement(
19580
19662
  "div",
19581
19663
  {
19582
19664
  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 +19671,7 @@ function XViewScene({
19589
19671
  maxWidth: "92vw"
19590
19672
  }
19591
19673
  },
19592
- /* @__PURE__ */ React30.createElement(
19674
+ /* @__PURE__ */ React31.createElement(
19593
19675
  "div",
19594
19676
  {
19595
19677
  onPointerDown: (e) => {
@@ -19600,7 +19682,7 @@ function XViewScene({
19600
19682
  title: "Arraste para redimensionar"
19601
19683
  }
19602
19684
  ),
19603
- /* @__PURE__ */ React30.createElement(
19685
+ /* @__PURE__ */ React31.createElement(
19604
19686
  DescriptionReadModePanel,
19605
19687
  {
19606
19688
  key: readingMode.branchStack.length > 0 ? readingMode.branchStack[readingMode.branchStack.length - 1].branchId : readingMode.ancestry.ancestry_id,
@@ -19635,7 +19717,7 @@ function XViewScene({
19635
19717
  }
19636
19718
  )
19637
19719
  ),
19638
- ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React30.createElement(
19720
+ ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React31.createElement(
19639
19721
  CreateAncestryPanel,
19640
19722
  {
19641
19723
  ancestryMode,
@@ -19671,7 +19753,7 @@ function XViewScene({
19671
19753
  onRenderAbstractionTree: (data, targetId) => handleRenderAbstractionTree(data, targetId)
19672
19754
  }
19673
19755
  ),
19674
- editingAncestryRel.visible && /* @__PURE__ */ React30.createElement(
19756
+ editingAncestryRel.visible && /* @__PURE__ */ React31.createElement(
19675
19757
  AncestryRelationshipPanel,
19676
19758
  {
19677
19759
  data: editingAncestryRel.data,
@@ -19685,7 +19767,7 @@ function XViewScene({
19685
19767
  onUploadFile: upload_file_action
19686
19768
  }
19687
19769
  ),
19688
- detailsNode && detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19770
+ detailsNode && detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19689
19771
  QuestDetailsPanel,
19690
19772
  {
19691
19773
  node: detailsNode,
@@ -19712,7 +19794,7 @@ function XViewScene({
19712
19794
  create_google_doc_action
19713
19795
  }
19714
19796
  ),
19715
- detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19797
+ detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19716
19798
  NodeDetailsPanel,
19717
19799
  {
19718
19800
  node: detailsNode,
@@ -19745,7 +19827,7 @@ function XViewScene({
19745
19827
  create_google_doc_action
19746
19828
  }
19747
19829
  ),
19748
- detailsLink && /* @__PURE__ */ React30.createElement(
19830
+ detailsLink && /* @__PURE__ */ React31.createElement(
19749
19831
  RelationshipDetailsPanel,
19750
19832
  {
19751
19833
  link: detailsLink,
@@ -19760,7 +19842,7 @@ function XViewScene({
19760
19842
  onHighlight: handleReadModeHighlight
19761
19843
  }
19762
19844
  ),
19763
- ancestryLinkDetails && /* @__PURE__ */ React30.createElement(
19845
+ ancestryLinkDetails && /* @__PURE__ */ React31.createElement(
19764
19846
  AncestryLinkDetailsPanel,
19765
19847
  {
19766
19848
  data: ancestryLinkDetails,
@@ -19772,7 +19854,7 @@ function XViewScene({
19772
19854
  onHighlight: handleReadModeHighlight
19773
19855
  }
19774
19856
  ),
19775
- /* @__PURE__ */ React30.createElement(
19857
+ /* @__PURE__ */ React31.createElement(
19776
19858
  "div",
19777
19859
  {
19778
19860
  ref: tooltipRef,
@@ -19799,7 +19881,7 @@ function XViewScene({
19799
19881
  }
19800
19882
  }
19801
19883
  ),
19802
- /* @__PURE__ */ React30.createElement(
19884
+ /* @__PURE__ */ React31.createElement(
19803
19885
  ContextMenu,
19804
19886
  {
19805
19887
  data: contextMenu,
@@ -19837,7 +19919,7 @@ function XViewScene({
19837
19919
  onFinishQuest: handleFinishQuestQuick
19838
19920
  }
19839
19921
  ),
19840
- /* @__PURE__ */ React30.createElement(
19922
+ /* @__PURE__ */ React31.createElement(
19841
19923
  MultiNodeContextMenu,
19842
19924
  {
19843
19925
  data: multiContextMenu,
@@ -19857,7 +19939,7 @@ function XViewScene({
19857
19939
  )
19858
19940
  }
19859
19941
  ),
19860
- /* @__PURE__ */ React30.createElement(
19942
+ /* @__PURE__ */ React31.createElement(
19861
19943
  RelationshipContextMenu,
19862
19944
  {
19863
19945
  data: relationshipMenu,
@@ -19875,14 +19957,14 @@ function XViewScene({
19875
19957
  onDelete: (data) => userActionHandlers.handleDeleteLink(actionHandlerContext, data)
19876
19958
  }
19877
19959
  ),
19878
- /* @__PURE__ */ React30.createElement(
19960
+ /* @__PURE__ */ React31.createElement(
19879
19961
  ImageViewer,
19880
19962
  {
19881
19963
  data: imageViewer,
19882
19964
  onClose: () => setImageViewer({ ...imageViewer, visible: false })
19883
19965
  }
19884
19966
  ),
19885
- /* @__PURE__ */ React30.createElement(
19967
+ /* @__PURE__ */ React31.createElement(
19886
19968
  Boards,
19887
19969
  {
19888
19970
  isOpen: isBoardsOpen,
@@ -19895,7 +19977,7 @@ function XViewScene({
19895
19977
  userRole: userPermissionRole
19896
19978
  }
19897
19979
  ),
19898
- /* @__PURE__ */ React30.createElement(
19980
+ /* @__PURE__ */ React31.createElement(
19899
19981
  MilestoneManager,
19900
19982
  {
19901
19983
  isOpen: isMilestoneManagerOpen,
@@ -19904,7 +19986,7 @@ function XViewScene({
19904
19986
  onUpdateMilestones: handleUpdateMilestones
19905
19987
  }
19906
19988
  ),
19907
- /* @__PURE__ */ React30.createElement(
19989
+ /* @__PURE__ */ React31.createElement(
19908
19990
  ImportParentFileModal,
19909
19991
  {
19910
19992
  isOpen: isImportModalOpen,
@@ -19917,7 +19999,7 @@ function XViewScene({
19917
19999
  currentAncestries: ancestryDataRef.current || []
19918
20000
  }
19919
20001
  ),
19920
- invalidTargetError && /* @__PURE__ */ React30.createElement(
20002
+ invalidTargetError && /* @__PURE__ */ React31.createElement(
19921
20003
  "div",
19922
20004
  {
19923
20005
  className: "ui-overlay",
@@ -19942,13 +20024,13 @@ function XViewScene({
19942
20024
  animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
19943
20025
  }
19944
20026
  },
19945
- /* @__PURE__ */ React30.createElement("style", null, `
20027
+ /* @__PURE__ */ React31.createElement("style", null, `
19946
20028
  @keyframes fadeInDown {
19947
20029
  from { opacity: 0; transform: translate(-50%, -20px); }
19948
20030
  to { opacity: 1; transform: translate(-50%, 0); }
19949
20031
  }
19950
20032
  `),
19951
- /* @__PURE__ */ React30.createElement(
20033
+ /* @__PURE__ */ React31.createElement(
19952
20034
  "svg",
19953
20035
  {
19954
20036
  width: "20",
@@ -19960,12 +20042,12 @@ function XViewScene({
19960
20042
  strokeLinecap: "round",
19961
20043
  strokeLinejoin: "round"
19962
20044
  },
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" })
20045
+ /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }),
20046
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
20047
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
19966
20048
  ),
19967
- /* @__PURE__ */ React30.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
19968
- /* @__PURE__ */ React30.createElement(
20049
+ /* @__PURE__ */ React31.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
20050
+ /* @__PURE__ */ React31.createElement(
19969
20051
  "button",
19970
20052
  {
19971
20053
  onClick: () => setInvalidTargetError(null),